Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sjFle-00Gm3m-Mg for pgsql-hackers@arkaria.postgresql.org; Wed, 28 Aug 2024 10:19:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sjFlc-0032Ij-Ij for pgsql-hackers@arkaria.postgresql.org; Wed, 28 Aug 2024 10:19:09 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sjFlb-0032I0-IL for pgsql-hackers@lists.postgresql.org; Wed, 28 Aug 2024 10:19:08 +0000 Received: from mail-vs1-xe2b.google.com ([2607:f8b0:4864:20::e2b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sjFlS-001u43-To for pgsql-hackers@postgresql.org; Wed, 28 Aug 2024 10:19:07 +0000 Received: by mail-vs1-xe2b.google.com with SMTP id ada2fe7eead31-498de7a11b9so2169914137.2 for ; Wed, 28 Aug 2024 03:19:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724840338; x=1725445138; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=/igMt5wxHRMpCzk0FhiwOL9wVUjnimHdWfwEqJYHGWE=; b=fjP+MEeg9PC38AyGPee2RnYALvRXvsSBzvpggFP+Vqnj2kGop7zdh5KTJP3q1Avu9W KCjRaK5VhJLuVLE+3XvzBjXInqw1J8kgvX1QWaOE8UIMCXaCzh02T1GqB3d/SQxkSzVB nAl5KzCO/IZbzdFUYfaGvXBUxHi1IIcyWQvbCKyBvAB0I2kIOfNcsxM9zuJ54atIBOiO vxRqEDrUFvfF+qHvd8pePOON1dUErAHNebyLV5X3DlWeG+/nIFw6ldLfwPXZQG2S4haJ +bxpYJ0lVfad/xY0qqd6QIrSW4p/w1MeolhSqkYvxVSZa9lS6+dltlepKckPZY5jYHE3 fNiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724840338; x=1725445138; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=/igMt5wxHRMpCzk0FhiwOL9wVUjnimHdWfwEqJYHGWE=; b=ZqXOshtKOy7cW9msYXhrm1+LxPost55IppCUjgBM3Wit4qX2iVBI9cYrghJXG4gher 3lleGZr0kiFjnsUuCgGTI9BCznsRuusk5AgFB4AhqjlD6jnhpr5pEdu2PQ/I3u1jcwGm 3KsaIa/P8hMxu78MLrs0Ev4ZMI0jEjg4oJ2bUVRtHmc6i5T/i3aQx4Mh29N3L1QW7KPj 7cB3zuh6e1FRus+QjC5iY7ZE6cYOZW0L3uzzT99tOTsF6ZZPyHn+BEZLQ9C38Jk/ZBU3 bXxRl8Nx84j0gewkO9IXUuLAWbScNFRYVpa3tGv3IfemGqYAKJaipeh+BhdRlgDLwa6z YLxQ== X-Forwarded-Encrypted: i=1; AJvYcCVCmP8DnoZTtRRzqRAjH5gkqFysB02EMyZ/BmcfnF+DIUvS9cHrgvGK8rhSoxiEH9B5vkqknzS9aydansqa@postgresql.org X-Gm-Message-State: AOJu0YzF5YjL67zqUDyn4JwycTcE8jm+uhlP3i3dpf/3KVKeU/P6Dxni U0NJ6NtGv0BTRMq771/2VPcpsxZXiAEne3Oprx0+PRYf30Ggyz4kZCo/ORNNq8oQm/QIodA+DxR QFNg6jmcNTKJOR8Mkla6/4FZoMVS9HRsG X-Google-Smtp-Source: AGHT+IEVnPAiPE4VBzXR6NwfQhU12qyQrXJQf8aqTIV4LEYLd3jtcOZJhDp3owC8t9sUJWPW6Uj15IKMtkG0B6e6DQg= X-Received: by 2002:a05:6102:5112:b0:493:c3b2:b5ba with SMTP id ada2fe7eead31-498f4ae13dfmr20843626137.6.1724840338044; Wed, 28 Aug 2024 03:18:58 -0700 (PDT) MIME-Version: 1.0 References: <20240216192301.q2tf4bqjydymg3g2@awork3.anarazel.de> <9c5edd61-c415-475b-a088-7bd7461b21a4@eisentraut.org> <5fa7f8a7-ce94-4a2a-ab93-4d43f97a1a41@enterprisedb.com> <04c0abe2-e9c5-4ffc-97b2-bedc1e3cd178@eisentraut.org> In-Reply-To: From: Ashutosh Bapat Date: Wed, 28 Aug 2024 15:48:46 +0530 Message-ID: Subject: Re: SQL Property Graph Queries (SQL/PGQ) To: Ajay Pal Cc: Imran Zaheer , Peter Eisentraut , pgsql-hackers Content-Type: multipart/mixed; boundary="000000000000a4f0a30620bbafb2" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a4f0a30620bbafb2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Aug 13, 2024 at 3:22=E2=80=AFPM Ajay Pal wro= te: > > With the attached patch found below error when try to use "Any > directed edge" syntax. > > postgres=3D# SELECT * FROM GRAPH_TABLE (students_graph > postgres(# MATCH > postgres(# (a IS person ) - [] - (b IS person) > postgres(# COLUMNS (a.name AS person_a, b.name AS person_b) > postgres(# ); > ERROR: unsupported element pattern kind: undirected edge > Earlier patches treated syntax "-[]- " as undirected edge and didn't support it. Per standard it is specifies an edge in either direction which is equivalent of -[]-> OR <-[]-. Implemented in the attached patches. Also added a test case in graph_table.sql. On Tue, Aug 13, 2024 at 4:08=E2=80=AFPM Ajay Pal wro= te: > postgres=3D# create or replace function func() returns int as > postgres-# $$ > postgres$# declare person_av varchar; > postgres$# begin > postgres$# > postgres$# SELECT person_a into person_av FROM GRAPH_TABLE > (students_graph > postgres$# MATCH > postgres$# (a IS person) -[e IS friends]-> (b IS person > WHERE b.name =3D 'Bob') > postgres$# WHERE a.name=3D'John' > postgres$# COLUMNS (a.name AS person_a, b.name AS person_b) > postgres$# ); > postgres$# > postgres$# return person_av; > postgres$# end > postgres$# $$ language plpgsql; > CREATE FUNCTION > postgres=3D# select func(); > server closed the connection unexpectedly > This probably means the server terminated abnormally > before or while processing the request. > The connection to the server was lost. Attempting reset: Failed. > The connection to the server was lost. Attempting reset: Failed. > !?> > Nice catch. The crash happens because earlier patches implemented parser hooks to resolve graph property references. Those implementations conflicted with the same hooks implemented in plpgsql code. The attached patches fix this by adding a member to ParseState instead of using hooks. Once this was fixed, there was another problem. Property graph referenced in GRAPH_TABLE was not being locked. That problem is fixed in the attached patches as well. On Tue, Aug 20, 2024 at 5:20=E2=80=AFPM Ajay Pal wro= te: > > Hi All, > > When we use a graph table and any local table, the server crashes. > Please note, It is happening when using the where clause for the local > table only. > > postgres=3D# SELECT * FROM customers a, GRAPH_TABLE (myshop2 MATCH (c IS > customers WHERE c.address =3D 'US')-[IS customer_orders]->(o IS orders) > COLUMNS (c.name_redacted AS customer_name_redacted)); > customer_id | name | address | customer_name_redacted > -------------+-----------+---------+------------------------ > 1 | customer1 | US | redacted1 > 2 | customer2 | CA | redacted1 > 3 | customer3 | GL | redacted1 > (3 rows) > > postgres=3D# SELECT * FROM customers a, GRAPH_TABLE (myshop2 MATCH (c IS > customers WHERE c.address =3D 'US')-[IS customer_orders]->(o IS orders) > COLUMNS (c.name_redacted AS customer_name_redacted)) where > a.customer_id=3D1; > server closed the connection unexpectedly > This probably means the server terminated abnormally > before or while processing the request. > The connection to the server was lost. Attempting reset: Failed. > The connection to the server was lost. Attempting reset: Failed. > !?> \q > This problem is not reproducible after fixing other problem. Please let me know if it's reproduces for you. If it reproduces please provide a patch adding the reproduction to graph_table.sql. Along with this I have rebased the patches on the latest HEAD, fixed some comments, code styles etc. Patches 0001 - 0006 are same as the previous set. 0007 - fixes all the problems you reported till now and also the one I found. The commit message describes the fixes in detail. --=20 Best Wishes, Ashutosh Bapat --000000000000a4f0a30620bbafb2 Content-Type: text/x-patch; charset="US-ASCII"; name="0004-Fix-spurious-column-not-found-error-20240828.patch" Content-Disposition: attachment; filename="0004-Fix-spurious-column-not-found-error-20240828.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m0dpc2ux3 RnJvbSBjMGJkNTY0ZTlkOGQ0YTI0ZjI5NWRjMTAzOTEyMWI0NmIyMzAwZWI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXRAZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogRnJpLCAxOSBKdWwgMjAyNCAyMTozMjozMCArMDUzMApTdWJqZWN0 OiBbUEFUQ0ggNS84XSBGaXggc3B1cmlvdXMgY29sdW1uIG5vdCBmb3VuZCBlcnJvcgoKQXR0cmli dXRlIG5hbWUgZnJvbSBhIGhlYXAgdHVwbGUgbmVlZHMgdG8gYmUgY29waWVkIGJlZm9yZSByZWxl YXNpbmcgdGhlCnJlc291cmNlcyBoZWxkIGJ5IHRoZSB0dXBsZSBhbmQgdGhlIHRhYmxlIHNjYW4u CgpBc2h1dG9zaCBCYXBhdAotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3Byb3BncmFwaGNtZHMu YyB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Byb3BncmFwaGNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3Byb3BncmFwaGNtZHMuYwppbmRleCBmMjA0ZmMzMTI1Li42YjE1NzQ5 YzVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcm9wZ3JhcGhjbWRzLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJvcGdyYXBoY21kcy5jCkBAIC03MjYsNyArNzI2LDcg QEAgaW5zZXJ0X3Byb3BlcnR5X3JlY29yZHMoT2lkIGdyYXBoaWQsIE9pZCBlbGxhYmVsb2lkLCBP aWQgcGdlcmVsaWQsIGNvbnN0IFByb3BHcmEKIAkJCWNyID0gbWFrZU5vZGUoQ29sdW1uUmVmKTsK IAkJCXJ0ID0gbWFrZU5vZGUoUmVzVGFyZ2V0KTsKIAotCQkJY3ItPmZpZWxkcyA9IGxpc3RfbWFr ZTEobWFrZVN0cmluZyhOYW1lU3RyKGF0dC0+YXR0bmFtZSkpKTsKKwkJCWNyLT5maWVsZHMgPSBs aXN0X21ha2UxKG1ha2VTdHJpbmcocHN0cmR1cChOYW1lU3RyKGF0dC0+YXR0bmFtZSkpKSk7CiAJ CQljci0+bG9jYXRpb24gPSAtMTsKIAogCQkJcnQtPm5hbWUgPSBwc3RyZHVwKE5hbWVTdHIoYXR0 LT5hdHRuYW1lKSk7Ci0tIAoyLjM0LjEKCg== --000000000000a4f0a30620bbafb2 Content-Type: text/x-patch; charset="US-ASCII"; name="0003-Fix-compilation-error-20240828.patch" Content-Disposition: attachment; filename="0003-Fix-compilation-error-20240828.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m0dpc2us2 RnJvbSBkNGQ1M2RkNjhhMWVmNjE4OTA5NjliYzQwMmZmYWY1NzliYTllNGY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXRAZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogTW9uLCA4IEp1bCAyMDI0IDE4OjQ1OjUwICswNTMwClN1YmplY3Q6 IFtQQVRDSCA0LzhdIEZpeCBjb21waWxhdGlvbiBlcnJvcgoKQWZ0ZXIgNmUxYzRhMDNhOTc4ZWQz NTc0MTI0ZDhmMmJlMjJiYTJlNWE0YjFlOQpiaW5hcnlfdXBncmFkZV9zZXRfcGdfY2xhc3Nfb2lk KCkgZG9lc24ndCBuZWVkIHRoZSBsYXN0IGFyZ3VtZW50LiBGaXggdGhlIGNhbGwuCi0tLQogc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDUyOGM2MWU1YjQuLmUwOGU4MGI3 ZGYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuYwpAQCAtMTU4MzEsNyArMTU4MzEsNyBAQCBkdW1wVGFibGVTY2hlbWEo QXJjaGl2ZSAqZm91dCwgY29uc3QgVGFibGVJbmZvICp0YmluZm8pCiAKIAkJaWYgKGRvcHQtPmJp bmFyeV91cGdyYWRlKQogCQkJYmluYXJ5X3VwZ3JhZGVfc2V0X3BnX2NsYXNzX29pZHMoZm91dCwg cSwKLQkJCQkJCQkJCQkJIHRiaW5mby0+ZG9iai5jYXRJZC5vaWQsIGZhbHNlKTsKKwkJCQkJCQkJ CQkJIHRiaW5mby0+ZG9iai5jYXRJZC5vaWQpOwogCiAJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5 LAogCQkJCQkJICAiU0VMRUNUIHBnX2NhdGFsb2cucGdfZ2V0X3Byb3BncmFwaGRlZignJXUnOjpw Z19jYXRhbG9nLm9pZCkgQVMgcGdkZWYiLAotLSAKMi4zNC4xCgo= --000000000000a4f0a30620bbafb2 Content-Type: text/x-patch; charset="US-ASCII"; name="0005-support-WHERE-clause-in-graph-pattern-20240828.patch" Content-Disposition: attachment; filename="0005-support-WHERE-clause-in-graph-pattern-20240828.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m0dpc2v04 RnJvbSA2ZTZjODM1MGMyMzI0OGQ3MTY5ZTZkYWY5ZTlhY2I3MThlMmI0ZTMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXRAZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogTW9uLCA4IEp1bCAyMDI0IDExOjUzOjI1ICswNTMwClN1YmplY3Q6 IFtQQVRDSCA2LzhdIHN1cHBvcnQgV0hFUkUgY2xhdXNlIGluIGdyYXBoIHBhdHRlcm4KCi0tLQog c3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlR3JhcGhUYWJsZS5jICAgfCAgOSArKysrKysrCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dyYXBoX3RhYmxlLm91dCB8IDMzICsrKysrKysrKysr KysrKysrKystLS0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ncmFwaF90YWJsZS5zcWwgICAgICB8 IDE0ICsrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNTEgaW5zZXJ0aW9ucygrKSwgNSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVHcmFwaFRh YmxlLmMgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVHcmFwaFRhYmxlLmMKaW5kZXggZWUx MTU5NGQyYy4uNGI3ODdhMmU4OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdy aXRlR3JhcGhUYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUdyYXBoVGFi bGUuYwpAQCAtMzEwLDYgKzMxMCwxNSBAQCBnZW5lcmF0ZV9xdWVyeV9mb3JfZ3JhcGhfcGF0aChS YW5nZVRibEVudHJ5ICpydGUsIExpc3QgKmdyYXBoX3BhdGgpCiAJCXF1YWxfZXhwcnMgPSBsaXN0 X2NvbmNhdChxdWFsX2V4cHJzLCBncGUtPnF1YWxfZXhwcnMpOwogCX0KIAorCWlmIChydGUtPmdy YXBoX3BhdHRlcm4tPndoZXJlQ2xhdXNlKQorCXsKKwkJTm9kZQkgICAqcGF0aF9xdWFscyA9IHJl cGxhY2VfcHJvcGVydHlfcmVmcyhydGUtPnJlbGlkLAorCQkJCQkJCQkJCQkJCSAgIChOb2RlICop IHJ0ZS0+Z3JhcGhfcGF0dGVybi0+d2hlcmVDbGF1c2UsCisJCQkJCQkJCQkJCQkJICAgZ3JhcGhf cGF0aCk7CisKKwkJcXVhbF9leHBycyA9IGxhcHBlbmQocXVhbF9leHBycywgcGF0aF9xdWFscyk7 CisJfQorCiAJcGF0aF9xdWVyeS0+am9pbnRyZWUgPSBtYWtlRnJvbUV4cHIoZnJvbWxpc3QsCiAJ CQkJCQkJCQkJKE5vZGUgKikgbWFrZUJvb2xFeHByKEFORF9FWFBSLCBxdWFsX2V4cHJzLCAtMSkp OwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dyYXBoX3RhYmxlLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3JhcGhfdGFibGUub3V0CmluZGV4IDgxM2Zj OWFhMjUuLmRlMGQxNjNlODMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Z3JhcGhfdGFibGUub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3JhcGhfdGFi bGUub3V0CkBAIC0yMzcsNiArMjM3LDEyIEBAIGNyZWF0ZSB0YWJsZSBlMV8yIChpZF8xIGludCwK IAkJCQkJaWRfMl8yIGludCwKIAkJCQkJZW5hbWUgdmFyY2hhcigxMCksCiAJCQkJCWVwcm9wMSBp bnQpOworLS0gZWRnZSBjb25uZWN0aW5nIHYyIGFuZCB2MQorY3JlYXRlIHRhYmxlIGUyXzEgKGlk XzJfMSBpbnQsCisJCQkJCWlkXzJfMiBpbnQsCisgICAgICAgICAgICAgICAgICAgIGlkXzEgaW50 LAorCQkJCQllbmFtZSB2YXJjaGFyKDEwKSwKKwkJCQkJZXByb3AxIGludCk7CiAtLSBlZGdlIGNv bm5lY3RpbmcgdjEgYW5kIHYzCiBjcmVhdGUgdGFibGUgZTFfMyAoaWRfMSBpbnQsCiAJCQkJCWlk XzMgaW50LApAQCAtMjY4LDYgKzI3NCwxMSBAQCBlZGdlIHRhYmxlcyAoCiAJCWRlc3RpbmF0aW9u IGtleSAoaWRfMl8xLCBpZF8yXzIpIHJlZmVyZW5jZXMgdjIgKGlkMSwgaWQyKQogCQlsYWJlbCBl bDEgcHJvcGVydGllcyAoZXByb3AxLCBlbmFtZSkKICAgICAgICAgbGFiZWwgbDEgcHJvcGVydGll cyAoZW5hbWUgYXMgZWxuYW1lKSwKKwllMl8xIGtleSAoaWRfMl8xLCBpZF8yXzIsIGlkXzEpCisJ CXNvdXJjZSBrZXkgKGlkXzJfMSwgaWRfMl8yKSByZWZlcmVuY2VzIHYyIChpZDEsIGlkMikKKwkJ ZGVzdGluYXRpb24ga2V5IChpZF8xKSByZWZlcmVuY2VzIHYxIChpZCkKKwkJbGFiZWwgZWwxIHBy b3BlcnRpZXMgKGVwcm9wMSwgZW5hbWUpCisgICAgICAgIGxhYmVsIGwxIHByb3BlcnRpZXMgKGVu YW1lIGFzIGVsbmFtZSksCiAJZTFfMwogCQlzb3VyY2Uga2V5IChpZF8xKSByZWZlcmVuY2VzIHYx IChpZCkKIAkJZGVzdGluYXRpb24ga2V5IChpZF8zKSByZWZlcmVuY2VzIHYzIChpZCkKQEAgLTI5 NiwxNyArMzA3LDE4IEBAIGluc2VydCBpbnRvIGUxXzIgdmFsdWVzICgxLCAxMDAwLCAyLCAnZTEy MScsIDEwMDAxKSwKIGluc2VydCBpbnRvIGUxXzMgdmFsdWVzICgxLCAyMDAzLCAnZTEzMScsIDEw MDAzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICgxLCAyMDAxLCAnZTEzMicsIDEwMDA0KTsK IGluc2VydCBpbnRvIGUyXzMgdmFsdWVzICgxMDAwLCAyLCAyMDAyLCAnZTIzMScsIDEwMDA1KTsK K2luc2VydCBpbnRvIGUyXzEgdmFsdWVzICgxMDAwLCAxLCAyLCAnZTIxMScsIDEwMDA2KTsKIC0t IGVtcHR5IGVsZW1lbnQgcGF0aCBwYXR0ZXJuLCBjb3VudHMgbnVtYmVyIG9mIGVkZ2VzIGluIHRo ZSBncmFwaAogU0VMRUNUIGNvdW50KCopIEZST00gR1JBUEhfVEFCTEUgKGcxIE1BVENIICgpLVtd LT4oKSBDT0xVTU5TICgxIGFzIG9uZSkpOwogIGNvdW50IAogLS0tLS0tLQotICAgICA1CisgICAg IDYKICgxIHJvdykKIAogU0VMRUNUIGNvdW50KCopIEZST00gR1JBUEhfVEFCTEUgKGcxIE1BVENI ICgpLT4oKSBDT0xVTU5TICgxIGFzIG9uZSkpOwogIGNvdW50IAogLS0tLS0tLQotICAgICA1Cisg ICAgIDYKICgxIHJvdykKIAogLS0gVmVydGV4IGVsZW1lbnQgdjIgaGFzIGxhYmVsIHZsMyB3aGlj aCBleHBvc2VzIHByb3BlcnR5IHZwcm9wMS4gQnV0IHZsMyBpcwpAQCAtMzM3LDYgKzM0OSwxNCBA QCBzZWxlY3Qgc3JjLCBjb25uLCBkZXN0LCBscHJvcDEsIHZwcm9wMiwgdnByb3AxIGZyb20gZ3Jh cGhfdGFibGUgKGcxIG1hdGNoIChhIGlzCiAgdjExIHwgZTEzMiB8IHYzMSAgfCB2bDNfcHJvcCB8 ICAgICAgICB8ICAgMjAxMAogKDQgcm93cykKIAorLS0gV0hFUkUgY2xhdXNlIGluIGdyYXBoIHBh dHRlcm4KK1NFTEVDVCBzZWxmLCB0aHJvdWdoIEZST00gR1JBUEhfVEFCTEUgKGcxIE1BVENIIChh KS0+KGIpLT4oYykgV0hFUkUgYS52bmFtZSA9IGMudm5hbWUgYW5kIGEudm5hbWUgPD4gYi52bmFt ZSBDT0xVTU5TIChhLnZuYW1lIGFzIHNlbGYsIGIudm5hbWUgYXMgdGhyb3VnaCkpOworIHNlbGYg fCB0aHJvdWdoIAorLS0tLS0tKy0tLS0tLS0tLQorIHYxMiAgfCB2MjEKKyB2MjEgIHwgdjEyCiso MiByb3dzKQorCiAtLSBFcnJvcnMKIC0tIHZsMSBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIHByb3Bl cnR5IHZwcm9wMgogc2VsZWN0IHNyYywgc3JjX3Zwcm9wMiwgY29ubiwgZGVzdCBmcm9tIGdyYXBo X3RhYmxlIChnMSBtYXRjaCAoYSBpcyB2bDEpLVtiIGlzIGVsMV0tPihjIGlzIHZsMiB8IHZsMykg Y29sdW1ucyAoYS52bmFtZSBhcyBzcmMsIGEudnByb3AyIGFzIHNyY192cHJvcDIsIGIuZW5hbWUg YXMgY29ubiwgYy52bmFtZSBhcyBkZXN0KSk7CkBAIC0zNjIsOCArMzgyLDkgQEAgc2VsZWN0ICog ZnJvbSBncmFwaF90YWJsZSAoZzEgbWF0Y2ggKHNyYyktW2Nvbm5dLT4oZGVzdCkgY29sdW1ucyAo c3JjLnZuYW1lIGFzIHMKICB2MTEgICAgfCBlMTIxICAgfCB2MjIgICAgfCAgIDEwIHwgICAgICB8 ICAgICAgICAgIHwgMTAyMCB8IDEyMDAgfCB2bDJfcHJvcCB8IDEwMDAxIHwgICAgICAgCiAgdjEx ICAgIHwgZTEzMSAgIHwgdjMzICAgIHwgICAxMCB8ICAgICAgfCAgICAgICAgICB8IDIwMzAgfCAg ICAgIHwgdmwzX3Byb3AgfCAxMDAwMyB8ICAgICAgIAogIHYxMSAgICB8IGUxMzIgICB8IHYzMSAg ICB8ICAgMTAgfCAgICAgIHwgICAgICAgICAgfCAyMDEwIHwgICAgICB8IHZsM19wcm9wIHwgMTAw MDQgfCAgICAgICAKKyB2MjEgICAgfCBlMjExICAgfCB2MTIgICAgfCAxMDEwIHwgMTEwMCB8IHZs Ml9wcm9wIHwgICAyMCB8ICAgICAgfCAgICAgICAgICB8IDEwMDA2IHwgICAgICAgCiAgdjIyICAg IHwgZTIzMSAgIHwgdjMyICAgIHwgMTAyMCB8IDEyMDAgfCB2bDJfcHJvcCB8IDIwMjAgfCAgICAg IHwgdmwzX3Byb3AgfCAgICAgICB8IDEwMDA1MAotKDUgcm93cykKKyg2IHJvd3MpCiAKIC0tIHRo cmVlIGxhYmVsIGRpc2p1bmN0aW9uCiBzZWxlY3QgKiBmcm9tIGdyYXBoX3RhYmxlIChnMSBtYXRj aCAoc3JjIElTIHZsMSB8IHZsMiB8IHZsMyktW2Nvbm5dLT4oZGVzdCkgY29sdW1ucyAoc3JjLnZu YW1lIGFzIHN2bmFtZSwgY29ubi5lbmFtZSBhcyBjZW5hbWUsIGRlc3Qudm5hbWUgYXMgZHZuYW1l KSk7CkBAIC0zNzMsOCArMzk0LDkgQEAgc2VsZWN0ICogZnJvbSBncmFwaF90YWJsZSAoZzEgbWF0 Y2ggKHNyYyBJUyB2bDEgfCB2bDIgfCB2bDMpLVtjb25uXS0+KGRlc3QpIGNvbHUKICB2MTEgICAg fCBlMTIxICAgfCB2MjIKICB2MTEgICAgfCBlMTMxICAgfCB2MzMKICB2MTEgICAgfCBlMTMyICAg fCB2MzEKKyB2MjEgICAgfCBlMjExICAgfCB2MTIKICB2MjIgICAgfCBlMjMxICAgfCB2MzIKLSg1 IHJvd3MpCisoNiByb3dzKQogCiAtLSBncmFwaCdpY2FsIHF1ZXJ5OiBmaW5kIGEgdmVydGV4IHdo aWNoIGlzIG5vdCBjb25uZWN0ZWQgdG8gYW55IG90aGVyIHZlcnRleCBhcyBhIHNvdXJjZSBvciBh IGRlc3RpbmF0aW9uLgogd2l0aCBhbGxfY29ubmVjdGVkX3ZlcnRpY2VzIGFzIChzZWxlY3Qgc3Zu LCBkdm4gZnJvbSBncmFwaF90YWJsZSAoZzEgbWF0Y2ggKHNyYyktW2Nvbm5dLT4oZGVzdCkgY29s dW1ucyAoc3JjLnZuYW1lIGFzIHN2biwgZGVzdC52bmFtZSBhcyBkdm4pKSksCkBAIC0zOTQsOCAr NDE2LDkgQEAgc2VsZWN0IHNuLCBjbiwgZG4gZnJvbSBncmFwaF90YWJsZSAoZzEgbWF0Y2ggKHNy YyA6IGwxKS1bY29ubiA6IGwxXS0+KGRlc3QgOiBsMSkKICB2MTEgfCBlMTIxIHwgdjIyCiAgdjEx IHwgZTEzMSB8IHYzMwogIHYxMSB8IGUxMzIgfCB2MzEKKyB2MjEgfCBlMjExIHwgdjEyCiAgdjIy IHwgZTIzMSB8IHYzMgotKDUgcm93cykKKyg2IHJvd3MpCiAKIC0tIHByb3BlcnR5IGdyYXBoIHdp dGggc29tZSBvZiB0aGUgZWxlbWVudHMsIGxhYmVscyBhbmQgcHJvcGVydGllcyBzYW1lIGFzIHRo ZQogLS0gcHJldmlvdXMgb25lLiBUZXN0IHdoZXRoZXIgY29tcG9uZW50cyBmcm9tIHRoZSBzcGVj aWZpZWQgcHJvcGVydHkgZ3JhcGggYXJlCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9ncmFwaF90YWJsZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ncmFwaF90YWJsZS5zcWwK aW5kZXggMmI0M2IxMzZlYS4uNDg2NTk0YTk5MyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvZ3JhcGhfdGFibGUuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dyYXBoX3Rh YmxlLnNxbApAQCAtMTY5LDYgKzE2OSwxMiBAQCBjcmVhdGUgdGFibGUgZTFfMiAoaWRfMSBpbnQs CiAJCQkJCWlkXzJfMiBpbnQsCiAJCQkJCWVuYW1lIHZhcmNoYXIoMTApLAogCQkJCQllcHJvcDEg aW50KTsKKy0tIGVkZ2UgY29ubmVjdGluZyB2MiBhbmQgdjEKK2NyZWF0ZSB0YWJsZSBlMl8xIChp ZF8yXzEgaW50LAorCQkJCQlpZF8yXzIgaW50LAorICAgICAgICAgICAgICAgICAgICBpZF8xIGlu dCwKKwkJCQkJZW5hbWUgdmFyY2hhcigxMCksCisJCQkJCWVwcm9wMSBpbnQpOwogCiAtLSBlZGdl IGNvbm5lY3RpbmcgdjEgYW5kIHYzCiBjcmVhdGUgdGFibGUgZTFfMyAoaWRfMSBpbnQsCkBAIC0y MDMsNiArMjA5LDExIEBAIGVkZ2UgdGFibGVzICgKIAkJZGVzdGluYXRpb24ga2V5IChpZF8yXzEs IGlkXzJfMikgcmVmZXJlbmNlcyB2MiAoaWQxLCBpZDIpCiAJCWxhYmVsIGVsMSBwcm9wZXJ0aWVz IChlcHJvcDEsIGVuYW1lKQogICAgICAgICBsYWJlbCBsMSBwcm9wZXJ0aWVzIChlbmFtZSBhcyBl bG5hbWUpLAorCWUyXzEga2V5IChpZF8yXzEsIGlkXzJfMiwgaWRfMSkKKwkJc291cmNlIGtleSAo aWRfMl8xLCBpZF8yXzIpIHJlZmVyZW5jZXMgdjIgKGlkMSwgaWQyKQorCQlkZXN0aW5hdGlvbiBr ZXkgKGlkXzEpIHJlZmVyZW5jZXMgdjEgKGlkKQorCQlsYWJlbCBlbDEgcHJvcGVydGllcyAoZXBy b3AxLCBlbmFtZSkKKyAgICAgICAgbGFiZWwgbDEgcHJvcGVydGllcyAoZW5hbWUgYXMgZWxuYW1l KSwKIAllMV8zCiAJCXNvdXJjZSBrZXkgKGlkXzEpIHJlZmVyZW5jZXMgdjEgKGlkKQogCQlkZXN0 aW5hdGlvbiBrZXkgKGlkXzMpIHJlZmVyZW5jZXMgdjMgKGlkKQpAQCAtMjM2LDYgKzI0Nyw3IEBA IGluc2VydCBpbnRvIGUxXzIgdmFsdWVzICgxLCAxMDAwLCAyLCAnZTEyMScsIDEwMDAxKSwKIGlu c2VydCBpbnRvIGUxXzMgdmFsdWVzICgxLCAyMDAzLCAnZTEzMScsIDEwMDAzKSwKICAgICAgICAg ICAgICAgICAgICAgICAgICgxLCAyMDAxLCAnZTEzMicsIDEwMDA0KTsKIGluc2VydCBpbnRvIGUy XzMgdmFsdWVzICgxMDAwLCAyLCAyMDAyLCAnZTIzMScsIDEwMDA1KTsKK2luc2VydCBpbnRvIGUy XzEgdmFsdWVzICgxMDAwLCAxLCAyLCAnZTIxMScsIDEwMDA2KTsKIAogLS0gZW1wdHkgZWxlbWVu dCBwYXRoIHBhdHRlcm4sIGNvdW50cyBudW1iZXIgb2YgZWRnZXMgaW4gdGhlIGdyYXBoCiBTRUxF Q1QgY291bnQoKikgRlJPTSBHUkFQSF9UQUJMRSAoZzEgTUFUQ0ggKCktW10tPigpIENPTFVNTlMg KDEgYXMgb25lKSk7CkBAIC0yNTAsNiArMjYyLDggQEAgU0VMRUNUICogRlJPTSBHUkFQSF9UQUJM RSAoZzEgTUFUQ0ggKGEgSVMgdmwxIHwgdmwyKSBDT0xVTU5TIChhLnZuYW1lLAogYS52cHJvcDEp KTsKIC0tIHZwcm9wMiBpcyBhc3NvY2lhdGVkIHdpdGggdmwyIGJ1dCBub3QgdmwzCiBzZWxlY3Qg c3JjLCBjb25uLCBkZXN0LCBscHJvcDEsIHZwcm9wMiwgdnByb3AxIGZyb20gZ3JhcGhfdGFibGUg KGcxIG1hdGNoIChhIGlzIHZsMSktW2IgaXMgZWwxXS0+KGMgaXMgdmwyIHwgdmwzKSBjb2x1bW5z IChhLnZuYW1lIGFzIHNyYywgYi5lbmFtZSBhcyBjb25uLCBjLnZuYW1lIGFzIGRlc3QsIGMubHBy b3AxLCBjLnZwcm9wMiwgYy52cHJvcDEpKTsKKy0tIFdIRVJFIGNsYXVzZSBpbiBncmFwaCBwYXR0 ZXJuCitTRUxFQ1Qgc2VsZiwgdGhyb3VnaCBGUk9NIEdSQVBIX1RBQkxFIChnMSBNQVRDSCAoYSkt PihiKS0+KGMpIFdIRVJFIGEudm5hbWUgPSBjLnZuYW1lIGFuZCBhLnZuYW1lIDw+IGIudm5hbWUg Q09MVU1OUyAoYS52bmFtZSBhcyBzZWxmLCBiLnZuYW1lIGFzIHRocm91Z2gpKTsKIAogLS0gRXJy b3JzCiAtLSB2bDEgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBwcm9wZXJ0eSB2cHJvcDIKLS0gCjIu MzQuMQoK --000000000000a4f0a30620bbafb2 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-WIP-SQL-Property-Graph-Queries-SQL-PGQ-20240828.patch" Content-Disposition: attachment; filename="0001-WIP-SQL-Property-Graph-Queries-SQL-PGQ-20240828.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m0dpc2uk0 RnJvbSAzZjg4OWMyNWUzNTc0YjU1NTc1N2Q1MzYzNWMyYWE0MjAyODU0NGU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRyYXV0Lm9y Zz4KRGF0ZTogVGh1LCAyNyBKdW4gMjAyNCAxNDoxMDo0NCArMDIwMApTdWJqZWN0OiBbUEFUQ0gg Mi84XSBXSVA6IFNRTCBQcm9wZXJ0eSBHcmFwaCBRdWVyaWVzIChTUUwvUEdRKQoKSW1wbGVtZW50 YXRpb24gb2YgU1FMIHByb3BlcnR5IGdyYXBoIHF1ZXJpZXMsIGFjY29yZGluZyB0byBTUUwvUEdR CnN0YW5kYXJkIChJU08gOTA3NS0xNjoyMDIzKS4KCkF1dGhvcjogUGV0ZXIgRWlzZW50cmF1dCA8 cGV0ZXJAZWlzZW50cmF1dC5vcmc+CkF1dGhvcjogQXNodXRvc2ggQmFwYXQgPGFzaHV0b3NoLmJh cGF0Lm9zc0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3Jn L21lc3NhZ2UtaWQvZmxhdC9hODU1Nzk1ZC1lNjk3LTRmYTUtODY5OC1kMjAxMjIxMjY1NjdAZWlz ZW50cmF1dC5vcmcKLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAg ICAgICAgfCAgNDcxICsrKystCiBkb2Mvc3JjL3NnbWwvZGRsLnNnbWwgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMjI1ICsrLQogZG9jL3NyYy9zZ21sL2ZlYXR1cmVzLnNnbWwgICAgICAgICAg ICAgICAgICAgIHwgICAgNCArLQogZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAxNSArCiBkb2Mvc3JjL3NnbWwvaW5mb3JtYXRpb25fc2NoZW1hLnNnbWwg ICAgICAgICAgfCAxMDkyICsrKysrKysrKysrCiAuLi4vc2dtbC9rZXl3b3Jkcy9zcWwyMDIzLTE2 LW5vbnJlc2VydmVkLnR4dCAgfCAgIDI3ICsKIGRvYy9zcmMvc2dtbC9rZXl3b3Jkcy9zcWwyMDIz LTE2LXJlc2VydmVkLnR4dCB8ICAgMTIgKwogZG9jL3NyYy9zZ21sL3F1ZXJpZXMuc2dtbCAgICAg ICAgICAgICAgICAgICAgIHwgIDE2OCArKwogZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21s ICAgICAgICAgICAgICAgIHwgICAgMyArCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX2V4dGVuc2lv bi5zZ21sICAgICAgICAgfCAgICAzICstCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3Byb3BlcnR5 X2dyYXBoLnNnbWwgICAgfCAgMjk5ICsrKwogZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwg ICAgICAgICAgICAgICAgIHwgICAgMSArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wcm9wZXJ0 eV9ncmFwaC5zZ21sICAgfCAgMzEwICsrKwogZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3Byb3BlcnR5 X2dyYXBoLnNnbWwgICAgIHwgIDExMSArKwogZG9jL3NyYy9zZ21sL3JlZi9ncmFudC5zZ21sICAg ICAgICAgICAgICAgICAgIHwgICAgNyArLQogZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21s ICAgICAgICAgICAgICAgIHwgICAxMyArLQogZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uuc2dtbCAg ICAgICAgICAgICAgICAgIHwgICAgNyArCiBkb2Mvc3JjL3NnbWwvcmVmL3NlY3VyaXR5X2xhYmVs LnNnbWwgICAgICAgICAgfCAgICAxICsKIGRvYy9zcmMvc2dtbC9yZWYvc2VsZWN0LnNnbWwgICAg ICAgICAgICAgICAgICB8ICAgNDMgKwogZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sICAgICAg ICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jICAgICAg ICAgICAgICAgICAgfCAgIDI0ICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jICAg ICAgICAgICAgICB8ICAgMTEgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hl bWEuc3FsICAgIHwgIDM2NCArKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3Mu YyAgICAgICAgICAgfCAgMzA2ICsrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jbGFzcy5jICAg ICAgICAgICAgICAgIHwgICAgMiArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50 eHQgICAgICAgICAgfCAgMTAwICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlICAgICAg ICAgICAgICAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYyAgICAgICAg ICAgICAgICAgIHwgICAyOCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZHJvcGNtZHMuYyAgICAg ICAgICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMg ICAgICAgICAgfCAgICAyICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkICAgICAg ICAgICAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJvcGdyYXBoY21kcy5jICAg ICAgICAgIHwgMTcwNiArKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvc2Vj bGFiZWwuYyAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYyAgICAgICAgICAgICAgfCAgIDE2ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMgICAgICAgICAgICAgICB8ICAgMTUgKy0KIHNyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5j cy5jICAgICAgICAgICAgICAgICB8ICAgNzIgKwogc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3Mu YyAgICAgICAgICAgICAgICAgIHwgICAgNSArCiBzcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3Mu YyAgICAgICAgICAgICAgICAgfCAgICA1ICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Fs bHBhdGhzLmMgICAgICAgICB8ICAgIDQgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJl cGpvaW50cmVlLmMgICAgIHwgICAgOCArCiBzcmMvYmFja2VuZC9wYXJzZXIvTWFrZWZpbGUgICAg ICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgICAg ICAgICAgICAgICAgICB8ICAyOTggKy0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAg ICAgICAgICAgICAgICAgfCAgNzA0ICsrKysrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9tZXNvbi5i dWlsZCAgICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Fn Zy5jICAgICAgICAgICAgICAgIHwgICAxMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xh dXNlLmMgICAgICAgICAgICAgfCAgIDg5ICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xs YXRlLmMgICAgICAgICAgICB8ICAgIDcgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIu YyAgICAgICAgICAgICAgIHwgICAgNiArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5j ICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ncmFwaHRh YmxlLmMgICAgICAgICB8ICAyMDkgKysKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlv bi5jICAgICAgICAgICB8ICAgOTQgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5j ICAgICAgICAgICAgIHwgICAgNSArCiBzcmMvYmFja2VuZC9wYXJzZXIvc2Nhbi5sICAgICAgICAg ICAgICAgICAgICAgfCAgIDEzICstCiBzcmMvYmFja2VuZC9yZXdyaXRlL01ha2VmaWxlICAgICAg ICAgICAgICAgICAgfCAgICAxICsKIHNyYy9iYWNrZW5kL3Jld3JpdGUvbWVzb24uYnVpbGQgICAg ICAgICAgICAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlR3JhcGhUYWJs ZS5jICAgICAgIHwgMTA5OCArKysrKysrKysrKwogc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRl SGFuZGxlci5jICAgICAgICAgIHwgICAxMSArCiBzcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyAg ICAgICAgICAgICAgICAgICAgfCAgIDM0ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRp bHMuYyAgICAgICAgICAgICB8ICA1MzcgKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9s c3lzY2FjaGUuYyAgICAgICAgICAgfCAgIDM4ICsKIHNyYy9iaW4vcGdfZHVtcC9jb21tb24uYyAg ICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBf YXJjaGl2ZXIuYyAgICAgICAgICB8ICAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAg ICAgICAgICAgICAgICAgICAgIHwgICA2NyArLQogc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1 bXAucGwgICAgICAgICAgICAgIHwgICAxMSArCiBzcmMvYmluL3BzcWwvY29tbWFuZC5jICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAzICstCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDQzICstCiBzcmMvYmluL3BzcWwvaGVscC5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyAg ICAgICAgICAgICAgICAgICB8ICAgNjcgKy0KIHNyYy9mZV91dGlscy9wc3Fsc2Nhbi5sICAgICAg ICAgICAgICAgICAgICAgICB8ICAgIDggKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvTWFrZWZpbGUg ICAgICAgICAgICAgICAgICB8ICAgIDcgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVp bGQgICAgICAgICAgICAgICB8ICAgIDUgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jbGFzcy5o ICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 ICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvcGdyYXBo X2VsZW1lbnQuaCAgICB8ICAxMDMgKwogLi4uL2NhdGFsb2cvcGdfcHJvcGdyYXBoX2VsZW1lbnRf bGFiZWwuaCAgICAgIHwgICA1MSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb3BncmFwaF9s YWJlbC5oICAgICAgfCAgIDUxICsKIC4uLi9jYXRhbG9nL3BnX3Byb3BncmFwaF9sYWJlbF9wcm9w ZXJ0eS5oICAgICB8ICAgNTkgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9wZ3JhcGhfcHJv cGVydHkuaCAgIHwgICA1NCArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9wZ3JhcGhjbWRzLmgg ICAgICAgICAgfCAgIDIzICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAg ICAgICAgICB8ICAxMzkgKysKIHNyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oICAgICAgICAg ICAgICAgICB8ICAgMjIgKwogc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaCAgICAgICAgICAg ICAgICAgIHwgICAgMyArCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAgICAgICAgICAg ICAgICAgfCAgICA5ICsKIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ncmFwaHRhYmxlLmggICAg ICAgICB8ICAgMzEgKwogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCAgICAgICAgICAg ICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfcmVsYXRpb24uaCAgICAgICAg ICAgfCAgICA4ICsKIHNyYy9pbmNsdWRlL3Jld3JpdGUvcmV3cml0ZUdyYXBoVGFibGUuaCAgICAg ICB8ICAgMjEgKwogc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmggICAgICAgICAgICAgICAg IHwgICAgMyArCiBzcmMvaW5jbHVkZS91dGlscy9hY2wuaCAgICAgICAgICAgICAgICAgICAgICAg fCAgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oICAgICAgICAgICAgICAgICB8 ICAgIDMgKwogc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3BhcnNlLnBsICAgICAgICAgIHwg ICAgOSArLQogc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3BnYy5sICAgICAgICAgICAgIHwg ICAxMiArLQogc3JjL3BsL3BscGdzcWwvc3JjL3BsX2dyYW0ueSAgICAgICAgICAgICAgICAgIHwg ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FsdGVyX2dlbmVyaWMub3V0ICAgfCAg IDUxICstCiAuLi4vZXhwZWN0ZWQvY3JlYXRlX3Byb3BlcnR5X2dyYXBoLm91dCAgICAgICAgfCAg NDk2ICsrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dyYXBoX3RhYmxlLm91dCAgICAg fCAgNDg0ICsrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29iamVjdF9hZGRyZXNzLm91 dCAgfCAgIDE0ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dCAgICAg ICAgfCAgIDExICsKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAg ICB8ICAgIDQgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2FsdGVyX2dlbmVyaWMuc3FsICAgICAg ICB8ICAgMzQgKwogLi4uL3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9wcm9wZXJ0eV9ncmFwaC5zcWwgICAg IHwgIDE5MCArKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ3JhcGhfdGFibGUuc3FsICAgICAgICAg IHwgIDMzNiArKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9vYmplY3RfYWRkcmVzcy5zcWwgICAg ICAgfCAgICA0ICstCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAg ICAgfCAgIDIxICsKIDEwNCBmaWxlcyBjaGFuZ2VkLCAxMDkxNSBpbnNlcnRpb25zKCspLCAyMDIg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jL3NyYy9zZ21sL2tleXdvcmRzL3Nx bDIwMjMtMTYtbm9ucmVzZXJ2ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jL3NyYy9zZ21s L2tleXdvcmRzL3NxbDIwMjMtMTYtcmVzZXJ2ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9j L3NyYy9zZ21sL3JlZi9hbHRlcl9wcm9wZXJ0eV9ncmFwaC5zZ21sCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHJvcGVydHlfZ3JhcGguc2dtbAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRvYy9zcmMvc2dtbC9yZWYvZHJvcF9wcm9wZXJ0eV9ncmFwaC5zZ21sCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJvcGdyYXBoY21kcy5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2dyYXBodGFibGUuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUdyYXBoVGFibGUuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvcGdyYXBoX2VsZW1l bnQuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvcGdyYXBo X2VsZW1lbnRfbGFiZWwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvcGdyYXBoX2xhYmVsLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb3BncmFwaF9sYWJlbF9wcm9wZXJ0eS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9wZ3JhcGhfcHJvcGVydHkuaAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb3BncmFwaGNtZHMuaAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ncmFwaHRhYmxlLmgKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvaW5jbHVkZS9yZXdyaXRlL3Jld3JpdGVHcmFwaFRhYmxlLmgKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9wcm9wZXJ0eV9ncmFwaC5v dXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dyYXBoX3Rh YmxlLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9w cm9wZXJ0eV9ncmFwaC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9ncmFwaF90YWJsZS5zcWwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IGI2NTRmYWUxYjIuLjc3ODgwN2My ZjEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9jYXRhbG9ncy5zZ21sCkBAIC0yNDAsNiArMjQwLDMxIEBACiAgICAgICA8ZW50cnk+ZnVu Y3Rpb25zIGFuZCBwcm9jZWR1cmVzPC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXByb3BncmFwaC1lbGVtZW50 Ij48c3RydWN0bmFtZT5wZ19wcm9wZ3JhcGhfZWxlbWVudDwvc3RydWN0bmFtZT48L2xpbms+PC9l bnRyeT4KKyAgICAgIDxlbnRyeT5wcm9wZXJ0eSBncmFwaCBlbGVtZW50cyAodmVydGljZXMgYW5k IGVkZ2VzKTwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+ PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1wcm9wZ3JhcGgtZWxlbWVudC1sYWJlbCI+PHN0cnVj dG5hbWU+cGdfcHJvcGdyYXBoX2VsZW1lbnRfbGFiZWw8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50 cnk+CisgICAgICA8ZW50cnk+cHJvcGVydHkgZ3JhcGggbGlua3MgYmV0d2VlbiBlbGVtZW50cyBh bmQgbGFiZWxzPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eT48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXByb3BncmFwaC1sYWJlbCI+PHN0cnVjdG5hbWU+ cGdfcHJvcGdyYXBoX2xhYmVsPC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5PgorICAgICAgPGVu dHJ5PnByb3BlcnR5IGdyYXBoIGxhYmVsczwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxy b3c+CisgICAgICA8ZW50cnk+PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1wcm9wZ3JhcGgtbGFi ZWwtcHJvcGVydHkiPjxzdHJ1Y3RuYW1lPnBnX3Byb3BncmFwaF9sYWJlbF9wcm9wZXJ0eTwvc3Ry dWN0bmFtZT48L2xpbms+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5wcm9wZXJ0eSBncmFwaCBsYWJl bC1zcGVjaWZpYyBwcm9wZXJ0eSBkZWZpbml0aW9uczwvZW50cnk+CisgICAgIDwvcm93PgorCisg ICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1wcm9wZ3Jh cGgtcHJvcGVydHkiPjxzdHJ1Y3RuYW1lPnBnX3Byb3BncmFwaF9wcm9wZXJ0eTwvc3RydWN0bmFt ZT48L2xpbms+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5wcm9wZXJ0eSBncmFwaCBwcm9wZXJ0aWVz PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeT48bGluayBs aW5rZW5kPSJjYXRhbG9nLXBnLXB1YmxpY2F0aW9uIj48c3RydWN0bmFtZT5wZ19wdWJsaWNhdGlv bjwvc3RydWN0bmFtZT48L2xpbms+PC9lbnRyeT4KICAgICAgIDxlbnRyeT5wdWJsaWNhdGlvbnMg Zm9yIGxvZ2ljYWwgcmVwbGljYXRpb248L2VudHJ5PgpAQCAtMjEyMiw3ICsyMTQ3LDggQEAgU0NS QU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2Vh YmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgICA8bGl0ZXJhbD5jPC9saXRlcmFsPiA9IGNvbXBv c2l0ZSB0eXBlLAogICAgICAgIDxsaXRlcmFsPmY8L2xpdGVyYWw+ID0gZm9yZWlnbiB0YWJsZSwK ICAgICAgICA8bGl0ZXJhbD5wPC9saXRlcmFsPiA9IHBhcnRpdGlvbmVkIHRhYmxlLAotICAgICAg IDxsaXRlcmFsPkk8L2xpdGVyYWw+ID0gcGFydGl0aW9uZWQgaW5kZXgKKyAgICAgICA8bGl0ZXJh bD5JPC9saXRlcmFsPiA9IHBhcnRpdGlvbmVkIGluZGV4LAorICAgICAgIDxsaXRlcmFsPmc8L2xp dGVyYWw+ID0gcHJvcGVydHkgZ3JhcGgKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jv dz4KIApAQCAtNjI3Miw2ICs2Mjk4LDQ0OSBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4m bHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogCiAg PC9zZWN0MT4KIAorIDxzZWN0MSBpZD0iY2F0YWxvZy1wZy1wcm9wZ3JhcGgtZWxlbWVudCI+Cisg IDx0aXRsZT48c3RydWN0bmFtZT5wZ19wcm9wZ3JhcGhfZWxlbWVudDwvc3RydWN0bmFtZT48L3Rp dGxlPgorCisgIDxpbmRleHRlcm0gem9uZT0iY2F0YWxvZy1wZy1wcm9wZ3JhcGgtZWxlbWVudCI+ CisgICA8cHJpbWFyeT5wZ19wcm9wZ3JhcGhfZWxlbWVudDwvcHJpbWFyeT4KKyAgPC9pbmRleHRl cm0+CisKKyAgPHBhcmE+CisgICBUaGUgY2F0YWxvZyA8c3RydWN0bmFtZT5wZ19wcm9wZ3JhcGhf ZWxlbWVudDwvc3RydWN0bmFtZT4gc3RvcmVzCisgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdmVy dGljZXMgYW5kIGVkZ2VzIG9mIGEgcHJvcGVydHkgZ3JhcGgsIGNvbGxlY3RpdmVseQorICAgY2Fs bGVkIHRoZSBlbGVtZW50cyBvZiB0aGUgcHJvcGVydHkgZ3JhcGguCisgIDwvcGFyYT4KKworICA8 dGFibGU+CisgICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfcHJvcGdyYXBoX2VsZW1lbnQ8L3N0cnVj dG5hbWU+IENvbHVtbnM8L3RpdGxlPgorICAgPHRncm91cCBjb2xzPSIxIj4KKyAgICA8dGhlYWQ+ CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIENvbHVtbiBUeXBlCisgICAgICA8 L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBEZXNjcmlwdGlvbgorICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGhlYWQ+CisKKyAgICA8dGJvZHk+CisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxk PiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBS b3cgaWRlbnRpZmllcgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAg IDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZ2VwZ2lkPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxpbmtl bmQ9ImNhdGFsb2ctcGctY2xhc3MiPjxzdHJ1Y3RuYW1lPnBnX2NsYXNzPC9zdHJ1Y3RuYW1lPjwv bGluaz4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgUmVmZXJlbmNlIHRvIHRoZSBwcm9wZXJ0eSBncmFwaCB0aGF0IHRo aXMgZWxlbWVudCBiZWxvbmdzIHRvCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+ CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48 cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBnZXJl bGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxs aW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctY2xhc3MiPjxzdHJ1Y3RuYW1lPnBnX2NsYXNzPC9zdHJ1 Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9w YXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUmVmZXJlbmNlIHRvIHRoZSB0YWJsZSB0byBjb250 YWlucyB0aGUgZGF0YSBmb3IgdGhpcyBwcm9wZXJ0eSBncmFwaCBlbGVtZW50CisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Cisg ICAgICAgPHN0cnVjdGZpZWxkPnBnZWFsaWFzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+bmFtZTwvdHlw ZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBhbGlhcyBvZiB0aGUg ZWxlbWVudC4gIFRoaXMgaXMgYSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGVsZW1lbnQKKyAg ICAgICB3aXRoaW4gdGhlIGdyYXBoLiAgSXQgaXMgc2V0IHdoZW4gdGhlIHByb3BlcnR5IGdyYXBo IGlzIGRlZmluZWQgYW5kCisgICAgICAgZGVmYXVsdHMgdG8gdGhlIG5hbWUgb2YgdGhlIHVuZGVy bHlpbmcgZWxlbWVudCB0YWJsZS4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4K KworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxw YXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGdla2lu ZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmNoYXI8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8 cGFyYT4KKyAgICAgICA8bGl0ZXJhbD52PC9saXRlcmFsPiBmb3IgYSB2ZXJ0ZXgsIDxsaXRlcmFs PmU8L2xpdGVyYWw+IGZvciBhbiBlZGdlCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9y b3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5 Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBn ZXNyY3ZlcnRleGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZl cmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctcHJvcGdyYXBoLWVsZW1lbnQiPjxzdHJ1 Y3RuYW1lPnBnX3Byb3BncmFwaF9lbGVtZW50PC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZp ZWxkPm9pZDwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAg ICAgRm9yIGFuIGVkZ2UsIGEgbGluayB0byB0aGUgc291cmNlIHZlcnRleC4gIChaZXJvIGZvciBh IHZlcnRleC4pCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJv dz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBnZWRlc3R2ZXJ0ZXhpZDwv c3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgICAocmVmZXJlbmNlcyA8bGluayBs aW5rZW5kPSJjYXRhbG9nLXBnLXByb3BncmFwaC1lbGVtZW50Ij48c3RydWN0bmFtZT5wZ19wcm9w Z3JhcGhfZWxlbWVudDwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVj dGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIEZvciBhbiBlZGdl LCBhIGxpbmsgdG8gdGhlIGRlc3RpbmF0aW9uIHZlcnRleC4gIChaZXJvIGZvciBhIHZlcnRleC4p CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBnZWtleTwvc3RydWN0ZmllbGQ+IDx0eXBl PmludDJbXTwvdHlwZT4KKyAgICAgICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9n LXBnLWF0dHJpYnV0ZSI+PHN0cnVjdG5hbWU+cGdfYXR0cmlidXRlPC9zdHJ1Y3RuYW1lPjwvbGlu az4uPHN0cnVjdGZpZWxkPmF0dG51bTwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgQW4gYXJyYXkgb2YgY29sdW1uIG51bWJlcnMgaW4gdGhlIHRhYmxl IHJlZmVyZW5jZWQgYnkKKyAgICAgICA8c3RydWN0bmFtZT5wZ2VyZWxpZDwvc3RydWN0bmFtZT4g dGhhdCBkZWZpbmVzIHRoZSBrZXkgdG8gdXNlIGZvciB0aGlzCisgICAgICAgZWxlbWVudCB0YWJs ZS4gIChUaGlzIGRlZmF1bHRzIHRvIHRoZSBwcmltYXJ5IGtleSB3aGVuIHRoZSBwcm9wZXJ0eQor ICAgICAgIGdyYXBoIGlzIGNyZWF0ZWQuKQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwv cm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRy eSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5w Z2VzcmNrZXk8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQyW108L3R5cGU+CisgICAgICAgKHJlZmVy ZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1hdHRyaWJ1dGUiPjxzdHJ1Y3RuYW1lPnBn X2F0dHJpYnV0ZTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5hdHRudW08L3N0cnVj dGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIEZvciBhbiBlZGdl LCBhbiBhcnJheSBvZiBjb2x1bW4gbnVtYmVycyBpbiB0aGUgdGFibGUgcmVmZXJlbmNlZCBieQor ICAgICAgIDxzdHJ1Y3RuYW1lPnBnZXJlbGlkPC9zdHJ1Y3RuYW1lPiB0aGF0IGRlZmluZXMgdGhl IHNvdXJjZSBrZXkgdG8gdXNlCisgICAgICAgZm9yIHRoaXMgZWxlbWVudCB0YWJsZS4gIChOdWxs IGZvciBhIHZlcnRleC4pICBUaGUgY29tYmluYXRpb24gb2YKKyAgICAgICA8c3RydWN0ZmllbGQ+ cGdlc3Jja2V5PC9zdHJ1Y3RmaWVsZD4gYW5kCisgICAgICAgPHN0cnVjdGZpZWxkPnBnZXNyY3Jl Zjwvc3RydWN0ZmllbGQ+IGNyZWF0ZXMgdGhlIGxpbmsgYmV0d2VlbiB0aGUgZWRnZQorICAgICAg IGFuZCB0aGUgc291cmNlIHZlcnRleC4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jv dz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGdl c3JjcmVmPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50MltdPC90eXBlPgorICAgICAgIChyZWZlcmVu Y2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctYXR0cmlidXRlIj48c3RydWN0bmFtZT5wZ19h dHRyaWJ1dGU8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+YXR0bnVtPC9zdHJ1Y3Rm aWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBGb3IgYW4gZWRnZSwg YW4gYXJyYXkgb2YgY29sdW1uIG51bWJlcnMgaW4gdGhlIHRhYmxlIHJlYWNoZWQgdmlhCisgICAg ICAgPHN0cnVjdG5hbWU+cGdlc3JjdmVydGV4aWQ8L3N0cnVjdG5hbWU+LiAgKE51bGwgZm9yIGEg dmVydGV4LikgIFRoZQorICAgICAgIGNvbWJpbmF0aW9uIG9mIDxzdHJ1Y3RmaWVsZD5wZ2VzcmNr ZXk8L3N0cnVjdGZpZWxkPiBhbmQKKyAgICAgICA8c3RydWN0ZmllbGQ+cGdlc3JjcmVmPC9zdHJ1 Y3RmaWVsZD4gY3JlYXRlcyB0aGUgbGluayBiZXR3ZWVuIHRoZSBlZGdlCisgICAgICAgYW5kIHRo ZSBzb3VyY2UgdmVydGV4LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisg ICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZ2VkZXN0a2V5 PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50MltdPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxs aW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctYXR0cmlidXRlIj48c3RydWN0bmFtZT5wZ19hdHRyaWJ1 dGU8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+YXR0bnVtPC9zdHJ1Y3RmaWVsZD4p CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBGb3IgYW4gZWRnZSwgYW4gYXJy YXkgb2YgY29sdW1uIG51bWJlcnMgaW4gdGhlIHRhYmxlIHJlZmVyZW5jZWQgYnkKKyAgICAgICA8 c3RydWN0bmFtZT5wZ2VyZWxpZDwvc3RydWN0bmFtZT4gdGhhdCBkZWZpbmVzIHRoZSBkZXN0aW5h dGlvbiBrZXkgdG8gdXNlCisgICAgICAgZm9yIHRoaXMgZWxlbWVudCB0YWJsZS4gIChOdWxsIGZv ciBhIHZlcnRleC4pICBUaGUgY29tYmluYXRpb24gb2YKKyAgICAgICA8c3RydWN0ZmllbGQ+cGdl ZGVzdGtleTwvc3RydWN0ZmllbGQ+IGFuZAorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZ2VkZXN0cmVm PC9zdHJ1Y3RmaWVsZD4gY3JlYXRlcyB0aGUgbGluayBiZXR3ZWVuIHRoZSBlZGdlCisgICAgICAg YW5kIHRoZSBkZXN0aW5hdGlvbiB2ZXJ0ZXguCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2Vu dHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxk PnBnZWRlc3RyZWY8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQyW108L3R5cGU+CisgICAgICAgKHJl ZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1hdHRyaWJ1dGUiPjxzdHJ1Y3RuYW1l PnBnX2F0dHJpYnV0ZTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5hdHRudW08L3N0 cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIEZvciBhbiBl ZGdlLCBhbiBhcnJheSBvZiBjb2x1bW4gbnVtYmVycyBpbiB0aGUgdGFibGUgcmVhY2hlZCB2aWEK KyAgICAgICA8c3RydWN0bmFtZT5wZ2VkZXN0dmVydGV4aWQ8L3N0cnVjdG5hbWU+LiAgKE51bGwg Zm9yIGEgdmVydGV4LikgIFRoZQorICAgICAgIGNvbWJpbmF0aW9uIG9mIDxzdHJ1Y3RmaWVsZD5w Z2VkZXN0a2V5PC9zdHJ1Y3RmaWVsZD4gYW5kCisgICAgICAgPHN0cnVjdGZpZWxkPnBnZWRlc3Ry ZWY8L3N0cnVjdGZpZWxkPiBjcmVhdGVzIHRoZSBsaW5rIGJldHdlZW4gdGhlIGVkZ2UKKyAgICAg ICBhbmQgdGhlIGRlc3RpbmF0aW9uIHZlcnRleC4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAg ICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0 MT4KKworIDxzZWN0MSBpZD0iY2F0YWxvZy1wZy1wcm9wZ3JhcGgtZWxlbWVudC1sYWJlbCI+Cisg IDx0aXRsZT48c3RydWN0bmFtZT5wZ19wcm9wZ3JhcGhfZWxlbWVudF9sYWJlbDwvc3RydWN0bmFt ZT48L3RpdGxlPgorCisgIDxpbmRleHRlcm0gem9uZT0iY2F0YWxvZy1wZy1wcm9wZ3JhcGgtZWxl bWVudC1sYWJlbCI+CisgICA8cHJpbWFyeT5wZ19wcm9wZ3JhcGhfZWxlbWVudF9sYWJlbDwvcHJp bWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPHBhcmE+CisgICBUaGUgY2F0YWxvZyA8c3RydWN0 bmFtZT5wZ19wcm9wZ3JhcGhfZWxlbWVudF9sYWJlbDwvc3RydWN0bmFtZT4gc3RvcmVzCisgICBp bmZvcm1hdGlvbiBhYm91dCB3aGljaCBsYWJlbHMgYXBwbHkgdG8gd2hpY2ggZWxlbWVudHMuCisg IDwvcGFyYT4KKworICA8dGFibGU+CisgICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfcHJvcGdyYXBo X2VsZW1lbnRfbGFiZWw8L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxlPgorICAgPHRncm91cCBj b2xzPSIxIj4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0 YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAg IENvbHVtbiBUeXBlCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBEZXNjcmlw dGlvbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGhlYWQ+CisK KyAgICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3Rm aWVsZD5vaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICA8L3BhcmE+Cisg ICAgICA8cGFyYT4KKyAgICAgICBSb3cgaWRlbnRpZmllcgorICAgICAgPC9wYXJhPjwvZW50cnk+ CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD5wZ2VsbGFiZWxpZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAg ICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXByb3BncmFwaC1sYWJlbCI+ PHN0cnVjdG5hbWU+cGdfcHJvcGdyYXBoX2xhYmVsPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVj dGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+Cisg ICAgICAgUmVmZXJlbmNlIHRvIHRoZSBsYWJlbAorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg IDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVs ZD5wZ2VsZWxpZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgICAocmVmZXJl bmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXByb3BncmFwaC1lbGVtZW50Ij48c3RydWN0 bmFtZT5wZ19wcm9wZ3JhcGhfZWxlbWVudDwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVs ZD5vaWQ8L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAg IFJlZmVyZW5jZSB0byB0aGUgZWxlbWVudAorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwv cm93PgorICAgIDwvdGJvZHk+CisgICA8L3Rncm91cD4KKyAgPC90YWJsZT4KKyA8L3NlY3QxPgor CisgPHNlY3QxIGlkPSJjYXRhbG9nLXBnLXByb3BncmFwaC1sYWJlbCI+CisgIDx0aXRsZT48c3Ry dWN0bmFtZT5wZ19wcm9wZ3JhcGhfbGFiZWw8L3N0cnVjdG5hbWU+PC90aXRsZT4KKworICA8aW5k ZXh0ZXJtIHpvbmU9ImNhdGFsb2ctcGctcHJvcGdyYXBoLWxhYmVsIj4KKyAgIDxwcmltYXJ5PnBn X3Byb3BncmFwaF9sYWJlbDwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPHBhcmE+Cisg ICBUaGUgY2F0YWxvZyA8c3RydWN0bmFtZT5wZ19wcm9wZ3JhcGhfbGFiZWw8L3N0cnVjdG5hbWU+ IHN0b3JlcworICAgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxhYmVscyBpbiBhIHByb3BlcnR5IGdy YXBoLgorICA8L3BhcmE+CisKKyAgPHRhYmxlPgorICAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX3By b3BncmFwaF9sYWJlbDwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+CisgICA8dGdyb3VwIGNv bHM9IjEiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRh bG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAg Q29sdW1uIFR5cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERlc2NyaXB0 aW9uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKwor ICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZp ZWxkPm9pZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAg ICAgIDxwYXJhPgorICAgICAgIFJvdyBpZGVudGlmaWVyCisgICAgICA8L3BhcmE+PC9lbnRyeT4K KyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPnBnbHBnaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgKHJl ZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1jbGFzcyI+PHN0cnVjdG5hbWU+cGdf Y2xhc3M8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4p CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBSZWZlcmVuY2UgdG8gdGhlIHBy b3BlcnR5IGdyYXBoIHRoYXQgdGhpcyBsYWJlbCBiZWxvbmdzIHRvCisgICAgICA8L3BhcmE+PC9l bnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRh bG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAg PHN0cnVjdGZpZWxkPnBnbGxhYmVsPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+bmFtZTwvdHlwZT4KKyAg ICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBuYW1lIG9mIHRoZSBsYWJlbC4g IFRoaXMgaXMgdW5pcXVlIGFtb25nIHRoZSBsYWJlbHMgaW4gYSBncmFwaC4KKyAgICAgIDwvcGFy YT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwv dGFibGU+CisgPC9zZWN0MT4KKworIDxzZWN0MSBpZD0iY2F0YWxvZy1wZy1wcm9wZ3JhcGgtbGFi ZWwtcHJvcGVydHkiPgorICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfcHJvcGdyYXBoX2xhYmVsX3By b3BlcnR5PC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6b25lPSJjYXRhbG9n LXBnLXByb3BncmFwaC1sYWJlbC1wcm9wZXJ0eSI+CisgICA8cHJpbWFyeT5wZ19wcm9wZ3JhcGhf bGFiZWxfcHJvcGVydHk8L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAg VGhlIGNhdGFsb2cgPHN0cnVjdG5hbWU+cGdfcHJvcGdyYXBoX2xhYmVsX3Byb3BlcnR5PC9zdHJ1 Y3RuYW1lPiBzdG9yZXMKKyAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9wZXJ0aWVzIGluIGEg cHJvcGVydHkgZ3JhcGggdGhhdCBhcmUgc3BlY2lmaWMgdG8gYQorICAgbGFiZWwuICBJbiBwYXJ0 aWN1bGFyLCB0aGlzIHN0b3JlcyB0aGUgZXhwcmVzc2lvbiB0aGF0IGRlZmluZXMgdGhlCisgICBw cm9wZXJ0eS4KKyAgPC9wYXJhPgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5w Z19wcm9wZ3JhcGhfbGFiZWxfcHJvcGVydHk8L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxlPgor ICAgPHRncm91cCBjb2xzPSIxIj4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8ZW50 cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRp b24iPgorICAgICAgIENvbHVtbiBUeXBlCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAg ICAgICBEZXNjcmlwdGlvbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAg IDwvdGhlYWQ+CisKKyAgICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0i Y2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAg ICAgIDxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAg ICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBSb3cgaWRlbnRpZmllcgorICAgICAgPC9w YXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD5wbHBwcm9waWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5 cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1wcm9wZ3Jh cGgtcHJvcGVydHkiPjxzdHJ1Y3RuYW1lPnBnX3Byb3BncmFwaF9wcm9wZXJ0eTwvc3RydWN0bmFt ZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4K KyAgICAgIDxwYXJhPgorICAgICAgIFJlZmVyZW5jZSB0byB0aGUgcHJvcGVydHkKKyAgICAgIDwv cGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJv bGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4K KyAgICAgICA8c3RydWN0ZmllbGQ+cGxwZWxsYWJlbGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lk PC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctcHJv cGdyYXBoLWVsZW1lbnQtbGFiZWwiPjxzdHJ1Y3RuYW1lPnBnX3Byb3BncmFwaF9lbGVtZW50X2xh YmVsPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+KQor ICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUmVmZXJlbmNlIHRvIHRoZSBsYWJl bCAoaW5kaXJlY3RseSB2aWEKKyAgICAgICA8c3RydWN0bmFtZT5wZ19wcm9wZ3JhcGhfZWxlbWVu dF9sYWJlbDwvc3RydWN0bmFtZT4sIHdoaWNoIHRoZW4gbGlua3MKKyAgICAgICB0byA8c3RydWN0 bmFtZT5wZ19wcm9wZ3JhcGhfbGFiZWw8L3N0cnVjdG5hbWU+KQorICAgICAgPC9wYXJhPjwvZW50 cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxz dHJ1Y3RmaWVsZD5wbHBleHByPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+cGdfbm9kZV90cmVlPC90eXBl PgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgRXhwcmVzc2lvbiB0cmVlIChp biA8ZnVuY3Rpb24+bm9kZVRvU3RyaW5nKCk8L2Z1bmN0aW9uPiByZXByZXNlbnRhdGlvbikKKyAg ICAgICBmb3IgdGhlIHByb3BlcnR5J3MgZGVmaW5pdGlvbi4gIFRoZSBleHByZXNzaW9uIHJlZmVy ZW5jZXMgdGhlIHRhYmxlCisgICAgICAgcmVhY2hlZCB2aWEgPHN0cnVjdG5hbWU+cGdfcHJvcGdy YXBoX2VsZW1lbnRfbGFiZWw8L3N0cnVjdG5hbWU+IGFuZAorICAgICAgIDxzdHJ1Y3RuYW1lPnBn X3Byb3BncmFwaF9lbGVtZW50PC9zdHJ1Y3RuYW1lPi4KKyAgICAgIDwvcGFyYT48L2VudHJ5Pgor ICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisgPC9z ZWN0MT4KKworIDxzZWN0MSBpZD0iY2F0YWxvZy1wZy1wcm9wZ3JhcGgtcHJvcGVydHkiPgorICA8 dGl0bGU+PHN0cnVjdG5hbWU+cGdfcHJvcGdyYXBoX3Byb3BlcnR5PC9zdHJ1Y3RuYW1lPjwvdGl0 bGU+CisKKyAgPGluZGV4dGVybSB6b25lPSJjYXRhbG9nLXBnLXByb3BncmFwaC1wcm9wZXJ0eSI+ CisgICA8cHJpbWFyeT5wZ19wcm9wZ3JhcGhfcHJvcGVydHk8L3ByaW1hcnk+CisgIDwvaW5kZXh0 ZXJtPgorCisgIDxwYXJhPgorICAgVGhlIGNhdGFsb2cgPHN0cnVjdG5hbWU+cGdfcHJvcGdyYXBo X3Byb3BlcnR5PC9zdHJ1Y3RuYW1lPiBzdG9yZXMKKyAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBw cm9wZXJ0aWVzIGluIGEgcHJvcGVydHkgZ3JhcGguICBUaGlzIG9ubHkgc3RvcmVzCisgICBpbmZv cm1hdGlvbiB0aGF0IGFwcGxpZXMgdG8gYSBwcm9wZXJ0eSB0aHJvdWdob3V0IHRoZSBncmFwaCwg aW5kZXBlbmRlbnQgb2YKKyAgIHdoYXQgbGFiZWwgb3IgZWxlbWVudCBpdCBpcyBvbi4gIEFkZGl0 aW9uYWwgaW5mb3JtYXRpb24sIGluY2x1ZGluZyB0aGUKKyAgIGFjdHVhbCBleHByZXNzaW9ucyB0 aGF0IGRlZmluZSB0aGUgcHJvcGVydGllcyBhcmUgaW4gdGhlIGNhdGFsb2cgPGxpbmsKKyAgIGxp bmtlbmQ9ImNhdGFsb2ctcGctcHJvcGdyYXBoLWxhYmVsLXByb3BlcnR5Ij48c3RydWN0bmFtZT5w Z19wcm9wZ3JhcGhfbGFiZWxfcHJvcGVydHk8L3N0cnVjdG5hbWU+PC9saW5rPi4KKyAgPC9wYXJh PgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wcm9wZ3JhcGhfcHJvcGVy dHk8L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxlPgorICAgPHRncm91cCBjb2xzPSIxIj4KKyAg ICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIENvbHVtbiBUeXBl CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBEZXNjcmlwdGlvbgorICAgICAg PC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGhlYWQ+CisKKyAgICA8dGJvZHk+ CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5vaWQ8L3N0 cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4K KyAgICAgICBSb3cgaWRlbnRpZmllcgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93 PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZ3Bw Z2lkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxs aW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctY2xhc3MiPjxzdHJ1Y3RuYW1lPnBnX2NsYXNzPC9zdHJ1 Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9w YXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUmVmZXJlbmNlIHRvIHRoZSBwcm9wZXJ0eSBncmFw aCB0aGF0IHRoaXMgcHJvcGVydHkgYmVsb25ncyB0bworICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3Rm aWVsZD5wZ3BuYW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+bmFtZTwvdHlwZT4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eS4gIFRoaXMg aXMgdW5pcXVlIGFtb25nIHRoZSBwcm9wZXJ0aWVzIGluIGEKKyAgICAgICBncmFwaC4KKyAgICAg IDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5 IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGdwdHlwaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8 L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy10eXBl Ij48c3RydWN0bmFtZT5wZ190eXBlPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPm9p ZDwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhl IGRhdGEgdHlwZSBvZiB0aGlzIHByb3BlcnR5LiAgKFRoaXMgaXMgcmVxdWlyZWQgdG8gYmUgZml4 ZWQgZm9yIGEKKyAgICAgICBnaXZlbiBwcm9wZXJ0eSBpbiBhIHByb3BlcnR5IGdyYXBoLCBldmVu IGlmIHRoZSBwcm9wZXJ0eSBpcyBkZWZpbmVkCisgICAgICAgbXVsdGlwbGUgdGltZXMgaW4gZGlm ZmVyZW50IGVsZW1lbnRzIGFuZCBsYWJlbHMuKQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg IDwvcm93PgorICAgIDwvdGJvZHk+CisgICA8L3Rncm91cD4KKyAgPC90YWJsZT4KKyA8L3NlY3Qx PgorCiAgPHNlY3QxIGlkPSJjYXRhbG9nLXBnLXB1YmxpY2F0aW9uIj4KICAgPHRpdGxlPjxzdHJ1 Y3RuYW1lPnBnX3B1YmxpY2F0aW9uPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CiAKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBiL2RvYy9zcmMvc2dtbC9kZGwuc2dtbAppbmRleCBiNjcx ODU4NjI3Li44NjdiYmMyZjhkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBAIC0xOTI0LDcgKzE5MjQsNyBAQCBSRVZPS0UgQUxM IE9OIGFjY291bnRzIEZST00gUFVCTElDOwogICAgICAgPHBhcmE+CiAgICAgICAgQWxsb3dzIDxj b21tYW5kPlNFTEVDVDwvY29tbWFuZD4gZnJvbQogICAgICAgIGFueSBjb2x1bW4sIG9yIHNwZWNp ZmljIGNvbHVtbihzKSwgb2YgYSB0YWJsZSwgdmlldywgbWF0ZXJpYWxpemVkCi0gICAgICAgdmll dywgb3Igb3RoZXIgdGFibGUtbGlrZSBvYmplY3QuCisgICAgICAgdmlldywgcHJvcGVydHkgZ3Jh cGgsIG9yIG90aGVyIHRhYmxlLWxpa2Ugb2JqZWN0LgogICAgICAgIEFsc28gYWxsb3dzIHVzZSBv ZiA8Y29tbWFuZD5DT1BZIFRPPC9jb21tYW5kPi4KICAgICAgICBUaGlzIHByaXZpbGVnZSBpcyBh bHNvIG5lZWRlZCB0byByZWZlcmVuY2UgZXhpc3RpbmcgY29sdW1uIHZhbHVlcyBpbgogICAgICAg IDxjb21tYW5kPlVQREFURTwvY29tbWFuZD4sIDxjb21tYW5kPkRFTEVURTwvY29tbWFuZD4sCkBA IC01MjYwLDYgKzUyNjAsMjI5IEBAIEVYUExBSU4gU0VMRUNUIGNvdW50KCopIEZST00gbWVhc3Vy ZW1lbnQgV0hFUkUgbG9nZGF0ZSAmZ3Q7PSBEQVRFICcyMDA4LTAxLTAxJzsKICAgIDwvcGFyYT4K ICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJkZGwtcHJvcGVydHktZ3JhcGhzIj4KKyAgPHRpdGxl PlByb3BlcnR5IEdyYXBoczwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6b25lPSJkZGwtcHJvcGVy dHktZ3JhcGhzIj4KKyAgIDxwcmltYXJ5PnByb3BlcnR5IGdyYXBoPC9wcmltYXJ5PgorICA8L2lu ZGV4dGVybT4KKworICA8cGFyYT4KKyAgIEEgcHJvcGVydHkgZ3JhcGggaXMgYSB3YXkgdG8gcmVw cmVzZW50IGRhdGFiYXNlIGNvbnRlbnRzLCBpbnN0ZWFkIG9mIHVzaW5nCisgICByZWxhdGlvbmFs IHN0cnVjdHVyZXMgc3VjaCBhcyB0YWJsZXMuICBBIHByb3BlcnR5IGdyYXBoIGNhbiB0aGVuIGJl IHF1ZXJpZWQKKyAgIHVzaW5nIGdyYXBoIHBhdHRlcm4gbWF0Y2hpbmcgc3ludGF4LCBpbnN0ZWFk IG9mIGpvaW4gcXVlcmllcyB0eXBpY2FsIG9mCisgICByZWxhdGlvbmFsIGRhdGFiYXNlcy4gIFBv c3RncmVTUUwgaW1wbGVtZW50cyBTUUwvUEdRPGZvb3Rub3RlPjxwYXJhPkhlcmUsCisgICBQR1Eg c3RhbmRzIGZvciA8cXVvdGU+cHJvcGVydHkgZ3JhcGggcXVlcnk8L3F1b3RlPi4gIEluIHRoZSBq YXJnb24gb2YgZ3JhcGgKKyAgIGRhdGFiYXNlcywgPHF1b3RlPnByb3BlcnR5IGdyYXBoPC9xdW90 ZT4gaXMgbm9ybWFsbHkgYWJicmV2aWF0ZWQgYXMgUEcsCisgICB3aGljaCBpcyBjbGVhcmx5IGNv bmZ1c2luZyBmb3IgcHJhY3Rpb25lcnMgb2YgUG9zdGdyZVNRTCwgYWxzbyB1c3VhbGx5CisgICBh YmJyZXZpYXRlZCBhcyBQRy48L3BhcmE+PC9mb290bm90ZT4sIHdoaWNoIGlzIHBhcnQgb2YgdGhl IFNRTCBzdGFuZGFyZCwKKyAgIHdoZXJlIGEgcHJvcGVydHkgZ3JhcGggaXMgZGVmaW5lZCBhcyBh IGtpbmQgb2YgcmVhZC1vbmx5IHZpZXcgb3ZlcgorICAgcmVsYXRpb25hbCB0YWJsZXMuICBTbyB0 aGUgYWN0dWFsIGRhdGEgaXMgc3RpbGwgaW4gdGFibGVzIG9yIHRhYmxlLWxpa2UKKyAgIG9iamVj dHMsIGJ1dCBpcyBleHBvc2VkIGFzIGEgZ3JhcGggZm9yIGdyYXBoIHF1ZXJ5aW5nIG9wZXJhdGlv bnMuICAoVGhpcyBpcworICAgaW4gY29udHJhc3QgdG8gbmF0aXZlIGdyYXBoIGRhdGFiYXNlcywg d2hlcmUgdGhlIGRhdGEgaXMgc3RvcmVkIGRpcmVjdGx5IGluCisgICBhIGdyYXBoIHN0cnVjdHVy ZS4pICBVbmRlcm5lYXRoLCBib3RoIHJlbGF0aW9uYWwgcXVlcmllcyBhbmQgZ3JhcGggcXVlcmll cworICAgdXNlIHRoZSBzYW1lIHF1ZXJ5IHBsYW5uaW5nIGFuZCBleGVjdXRpb24gaW5mcmFzdHVj dHVyZSwgYW5kIGluIGZhY3QKKyAgIHJlbGF0aW9uYWwgYW5kIGdyYXBoIHF1ZXJpZXMgY2FuIGJl IGNvbWJpbmVkIGFuZCBtaXhlZCBpbiBzaW5nbGUgcXVlcmllcy4KKyAgPC9wYXJhPgorCisgIDxw YXJhPgorICAgQSBncmFwaCBpcyBhIHNldCBvZiB2ZXJ0aWNlcyBhbmQgZWRnZXMuICBFYWNoIGVk Z2UgaGFzIHR3byBkaXN0aW5ndWlzaGFibGUKKyAgIGFzc29jaWF0ZWQgdmVydGljZXMgY2FsbGVk IHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHZlcnRpY2VzLiAgKFNvIGluCisgICB0aGlzIG1v ZGVsLCBhbGwgZWRnZXMgYXJlIGRpcmVjdGVkLikgIFZlcnRpY2VzIGFuZCBlZGdlcyB0b2dldGhl ciBhcmUKKyAgIGNhbGxlZCB0aGUgZWxlbWVudHMgb2YgdGhlIGdyYXBoLiAgQSBwcm9wZXJ0eSBn cmFwaCBleHRlbmRzIHRoaXMgd2VsbC1rbm93bgorICAgbWF0aGVtYXRpY2FsIHN0cnVjdHVyZSB3 aXRoIGEgd2F5IHRvIHJlcHJlc2VudCB1c2VyIGRhdGEuICBJbiBhIHByb3BlcnR5CisgICBncmFw aCwgZWFjaCB2ZXJ0ZXggb3IgZWRnZSBoYXMgb25lIG9yIG1vcmUgYXNzb2NpYXRlZCBsYWJlbHMs IGFuZCBlYWNoCisgICBsYWJlbCBoYXMgemVybyBvciBtb3JlIHByb3BlcnRpZXMuICBUaGUgbGFi ZWxzIGFyZSBzaW1pbGFyIHRvIHRhYmxlIHJvdworICAgdHlwZXMgaW4gdGhhdCB0aGV5IGRlZmlu ZSB0aGUga2luZCBvZiB0aGUgY29udGFpbmVkIGRhdGEgYW5kIGl0cyBzdHJ1Y3R1cmUuCisgICBU aGUgcHJvcGVydGllcyBhcmUgc2ltaWxhciB0byBjb2x1bW5zIGluIHRoYXQgdGhleSBjb250YWlu IHRoZSBhY3R1YWwgZGF0YS4KKyAgIEluIGZhY3QsIGJ5IGRlZmF1bHQsIGEgcHJvcGVydHkgZ3Jh cGggZGVmaW5pdGlvbiBleHBvc2VzIHRoZSB1bmRlcmx5aW5nCisgICB0YWJsZXMgYW5kIGNvbHVt bnMgYXMgbGFiZWxzIGFuZCBwcm9wZXJ0aWVzLCBidXQgbW9yZSBjb21wbGljYXRlZAorICAgZGVm aW5pdGlvbnMgYXJlIHBvc3NpYmxlLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBDb25zaWRl ciB0aGUgZm9sbG93aW5nIHRhYmxlIGRlZmluaXRpb25zOgorPHByb2dyYW1saXN0aW5nPgorQ1JF QVRFIFRBQkxFIHByb2R1Y3RzICgKKyAgICBwcm9kdWN0X25vIGludGVnZXIgUFJJTUFSWSBLRVks CisgICAgbmFtZSB2YXJjaGFyLAorICAgIHByaWNlIG51bWVyaWMKKyk7CisKK0NSRUFURSBUQUJM RSBjdXN0b21lcnMgKAorICAgIGN1c3RvbWVyX2lkIGludGVnZXIgUFJJTUFSWSBLRVksCisgICAg bmFtZSB2YXJjaGFyLAorICAgIGFkZHJlc3MgdmFyY2hhcgorKTsKKworQ1JFQVRFIFRBQkxFIG9y ZGVycyAoCisgICAgb3JkZXJfaWQgaW50ZWdlciBQUklNQVJZIEtFWSwKKyAgICBvcmRlcmVkX3do ZW4gZGF0ZQorKTsKKworQ1JFQVRFIFRBQkxFIG9yZGVyX2l0ZW1zICgKKyAgICBvcmRlcl9pdGVt c19pZCBpbnRlZ2VyIFBSSU1BUlkgS0VZLAorICAgIG9yZGVyX2lkIGludGVnZXIgUkVGRVJFTkNF UyBvcmRlcnMgKG9yZGVyX2lkKSwKKyAgICBwcm9kdWN0X25vIGludGVnZXIgUkVGRVJFTkNFUyBw cm9kdWN0cyAocHJvZHVjdF9ubyksCisgICAgcXVhbnRpdHkgaW50ZWdlcgorKTsKKworQ1JFQVRF IFRBQkxFIGN1c3RvbWVyX29yZGVycyAoCisgICAgY3VzdG9tZXJfb3JkZXJzX2lkIGludGVnZXIg UFJJTUFSWSBLRVksCisgICAgY3VzdG9tZXJfaWQgaW50ZWdlciBSRUZFUkVOQ0VTIGN1c3RvbWVy cyAoY3VzdG9tZXJfaWQpLAorICAgIG9yZGVyX2lkIGludGVnZXIgUkVGRVJFTkNFUyBvcmRlcnMg KG9yZGVyX2lkKQorKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICBXaGVuIG1hcHBpbmcgdGhpcyB0 byBhIGdyYXBoLCB0aGUgZmlyc3QgdGhyZWUgdGFibGVzIHdvdWxkIGJlIHRoZSB2ZXJ0aWNlcwor ICAgYW5kIHRoZSBsYXN0IHR3byB0YWJsZXMgd291bGQgYmUgdGhlIGVkZ2VzLiAgVGhlIGZvcmVp Z24ta2V5IGRlZmluaXRpb25zCisgICBjb3JyZXNwb25kIHRvIHRoZSBmYWN0IHRoYXQgZWRnZXMg bGluayB0d28gdmVydGljZXMuICAoR3JhcGggZGVmaW5pdGlvbnMKKyAgIHdvcmsgbW9yZSBuYXR1 cmFsbHkgd2l0aCBtYW55LXRvLW1hbnkgcmVsYXRpb25zaGlwcywgc28gdGhpcyBleGFtcGxlIGlz CisgICBvcmdhbml6ZWQgbGlrZSB0aGF0LCBldmVuIHRob3VnaCBvbmUtdG8tbWFueSByZWxhdGlv bnNoaXBzIG1pZ2h0IGJlIHVzZWQKKyAgIGhlcmUgaW4gYSBwdXJlIHJlbGF0aW9uYWwgYXBwcm9h Y2guKQorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBIZXJlIGlzIGFuIGV4YW1wbGUgaG93IGEg cHJvcGVydHkgZ3JhcGggY291bGQgYmUgZGVmaW5lZCBvbiB0b3Agb2YgdGhlc2UKKyAgIHRhYmxl czoKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBQUk9QRVJUWSBHUkFQSCBteXNob3AKKyAgICBW RVJURVggVEFCTEVTICgKKyAgICAgICAgcHJvZHVjdHMsCisgICAgICAgIGN1c3RvbWVycywKKyAg ICAgICAgb3JkZXJzCisgICAgKQorICAgIEVER0UgVEFCTEVTICgKKyAgICAgICAgb3JkZXJfaXRl bXMgU09VUkNFIG9yZGVycyBERVNUSU5BVElPTiBwcm9kdWN0cywKKyAgICAgICAgY3VzdG9tZXJf b3JkZXJzIFNPVVJDRSBjdXN0b21lcnMgREVTVElOQVRJT04gb3JkZXJzCisgICAgKTsKKzwvcHJv Z3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoaXMgZ3JhcGggY291bGQg dGhlbiBiZSBxdWVyaWVkIGxpa2UgdGhpczoKKzxwcm9ncmFtbGlzdGluZz4KKy0tIGdldCBsaXN0 IG9mIGN1c3RvbWVycyBhY3RpdmUgdG9kYXkKK1NFTEVDVCBjdXN0b21lcl9uYW1lIEZST00gR1JB UEhfVEFCTEUgKG15c2hvcCBNQVRDSCAoYyBJUyBjdXN0b21lcnMpLVtJUyBjdXN0b21lcl9vcmRl cnNdLT4obyBJUyBvcmRlcnMgV0hFUkUgb3JkZXJlZF93aGVuID0gY3VycmVudF9kYXRlKSBDT0xV TU5TIChjLm5hbWUgQVMgY3VzdG9tZXJfbmFtZSkpOworPC9wcm9ncmFtbGlzdGluZz4KKyAgIGNv cnJlc3BvbmRpbmcgYXBwcm94aW1hdGVseSB0byB0aGlzIHJlbGF0aW9uYWwgcXVlcnk6Cis8cHJv Z3JhbWxpc3Rpbmc+CistLSBnZXQgbGlzdCBvZiBjdXN0b21lcnMgYWN0aXZlIHRvZGF5CitTRUxF Q1QgY3VzdG9tZXJzLm5hbWUgRlJPTSBjdXN0b21lcnMgSk9JTiBjdXN0b21lcl9vcmRlcnMgVVNJ TkcgKGN1c3RvbWVyX2lkKSBKT0lOIG9yZGVycyBVU0lORyAob3JkZXJfaWQpIFdIRVJFIG9yZGVy cy5vcmRlcmVkX3doZW4gPSBjdXJyZW50X2RhdGU7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3Bh cmE+CisKKyAgPHBhcmE+CisgICBUaGUgYWJvdmUgZGVmaW5pdGlvbiByZXF1aXJlcyB0aGF0IGFs bCB0YWJsZXMgaGF2ZSBwcmltYXJ5IGtleXMgYW5kIHRoYXQKKyAgIGZvciBlYWNoIGVkZ2UgdGhl cmUgaXMgYW4gYXBwcm9wcmlhdGUgZm9yZWlnbiBrZXkuICBPdGhlcndpc2UsIGFkZGl0aW9uYWwK KyAgIGNsYXVzZXMgaGF2ZSB0byBiZSBzcGVjaWZpZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBjb2x1 bW5zLiAgRm9yIGV4YW1wbGUsCisgICB0aGlzIHdvdWxkIGJlIHRoZSBmdWxseSB2ZXJib3NlIGRl ZmluaXRpb24gdGhhdCBkb2VzIG5vdCByZWx5IG9uIHByaW1hcnkKKyAgIGFuZCBmb3JlaWduIGtl eXM6Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgUFJPUEVSVFkgR1JBUEggbXlzaG9wCisgICAg VkVSVEVYIFRBQkxFUyAoCisgICAgICAgIHByb2R1Y3RzIEtFWSAocHJvZHVjdF9ubyksCisgICAg ICAgIGN1c3RvbWVycyBLRVkgKGN1c3RvbWVyX2lkKSwKKyAgICAgICAgb3JkZXJzIEtFWSAob3Jk ZXJfaWQpCisgICAgKQorICAgIEVER0UgVEFCTEVTICgKKyAgICAgICAgb3JkZXJfaXRlbXMgS0VZ IChvcmRlcl9pdGVtc19pZCkKKyAgICAgICAgICAgIFNPVVJDRSBLRVkgKG9yZGVyX2lkKSBSRUZF UkVOQ0VTIG9yZGVycyAob3JkZXJfaWQpCisgICAgICAgICAgICBERVNUSU5BVElPTiBLRVkgKHBy b2R1Y3Rfbm8pIFJFRkVSRU5DRVMgcHJvZHVjdHMgKHByb2R1Y3Rfbm8pLAorICAgICAgICBjdXN0 b21lcl9vcmRlcnMgS0VZIChjdXN0b21lcl9vcmRlcnNfaWQpCisgICAgICAgICAgICBTT1VSQ0Ug S0VZIChjdXN0b21lcl9pZCkgUkVGRVJFTkNFUyBjdXN0b21lcnMgKGN1c3RvbWVyX2lkKQorICAg ICAgICAgICAgREVTVElOQVRJT04gS0VZIChvcmRlcl9pZCkgUkVGRVJFTkNFUyBvcmRlcnMgKG9y ZGVyX2lkKQorICAgICk7Cis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+ CisgICBBcyBtZW50aW9uZWQgYWJvdmUsIGJ5IGRlZmF1bHQsIHRoZSBuYW1lcyBvZiB0aGUgdGFi bGVzIGFuZCBjb2x1bW5zIGFyZQorICAgZXhwb3NlZCBhcyBsYWJlbHMgYW5kIHByb3BlcnRpZXMs IHJlc3BlY3RpdmVseS4gIFRoZSBjbGF1c2VzIDxsaXRlcmFsPklTCisgICBjdXN0b21lcjwvbGl0 ZXJhbD4sIDxsaXRlcmFsPklTIG9yZGVyPC9saXRlcmFsPiwgZXRjLiBpbiB0aGUKKyAgIDxsaXRl cmFsPk1BVENIPC9saXRlcmFsPiBjbGF1c2UgaW4gZmFjdCByZWZlciB0byBsYWJlbHMsIG5vdCB0 YWJsZSBuYW1lcy4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgT25lIHVzZSBvZiBsYWJlbHMg aXMgdG8gZXhwb3NlIGEgdGFibGUgdGhyb3VnaCBhIGRpZmZlcmVudCBuYW1lIGluIHRoZQorICAg Z3JhcGguICBGb3IgZXhhbXBsZSwgaW4gZ3JhcGhzLCB2ZXJ0aWNlcyB0eXBpY2FsbHkgaGF2ZSBz aW5ndWxhciBub3VucyBhcworICAgbGFiZWxzIGFuZCBlZGdlcyB0eXBpY2FsbHkgaGF2ZSB2ZXJi cyBhcyBsYWJlbHMsIHN1Y2ggYXMgPHF1b3RlPmlzPC9xdW90ZT4sCisgICA8cXVvdGU+aGFzPC9x dW90ZT4sIDxxdW90ZT5jb250YWluczwvcXVvdGU+LCBvciBzb21ldGhpbmcgc3BlY2lmaWMgbGlr ZQorICAgPHF1b3RlPmFwcHJvdmVzPC9xdW90ZT4uICBXZSBjYW4gaW50cm9kdWNlIHN1Y2ggbGFi ZWxzIGludG8gb3VyIGV4YW1wbGUKKyAgIGxpa2UgdGhpczoKKzxwcm9ncmFtbGlzdGluZz4KK0NS RUFURSBQUk9QRVJUWSBHUkFQSCBteXNob3AKKyAgICBWRVJURVggVEFCTEVTICgKKyAgICAgICAg cHJvZHVjdHMgTEFCRUwgcHJvZHVjdCwKKyAgICAgICAgY3VzdG9tZXJzIExBQkVMIGN1c3RvbWVy LAorICAgICAgICBvcmRlcnMgTEFCRUwgb3JkZXIKKyAgICApCisgICAgRURHRSBUQUJMRVMgKAor ICAgICAgICBvcmRlcl9pdGVtcyBTT1VSQ0Ugb3JkZXJzIERFU1RJTkFUSU9OIHByb2R1Y3RzIExB QkVMIGNvbnRhaW5zLAorICAgICAgICBjdXN0b21lcl9vcmRlcnMgU09VUkNFIGN1c3RvbWVycyBE RVNUSU5BVElPTiBvcmRlcnMgTEFCRUwgaGFzCisgICAgKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+Cisg IDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFdpdGggdGhpcyBkZWZpbml0aW9uLCB3ZSBjYW4gd3Jp dGUgYSBxdWVyeSBsaWtlIHRoaXM6Cis8cHJvZ3JhbWxpc3Rpbmc+CitTRUxFQ1QgY3VzdG9tZXJf bmFtZSBGUk9NIEdSQVBIX1RBQkxFIChteXNob3AgTUFUQ0ggKGM6Y3VzdG9tZXIpLVs6aGFzXS0+ KG86b3JkZXIgV0hFUkUgb3JkZXJlZF93aGVuID0gY3VycmVudF9kYXRlKSBDT0xVTU5TIChjLm5h bWUgQVMgY3VzdG9tZXJfbmFtZSkpOworPC9wcm9ncmFtbGlzdGluZz4KKyAgIFdpdGggdGhlIG5l dyBsYWJlbHMgYW5kIHVzaW5nIHRoZSBjb2xvbiBpbnN0ZWFkIG9mIDxsaXRlcmFsPklTPC9saXRl cmFsPiwKKyAgIHdoaWNoIGFyZSBlcXVpdmFsZW50LCB0aGUgPGxpdGVyYWw+TUFUQ0g8L2xpdGVy YWw+IGNsYXVzZSBpcyBub3cgbW9yZQorICAgY29tcGFjdCBhbmQgaW50dWl0aXZlLgorICA8L3Bh cmE+CisKKyAgPHBhcmE+CisgICBBbm90aGVyIHVzZSBpcyB0byBhcHBseSB0aGUgc2FtZSBsYWJl bCB0byBtdWx0aXBsZSBlbGVtZW50IHRhYmxlcy4gIEZvcgorICAgZXhhbXBsZSwgY29uc2lkZXIg dGhpcyBhZGRpdGlvbmFsIHRhYmxlOgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFRBQkxFIGVt cGxveWVlcyAoCisgICAgZW1wbG95ZWVfaWQgaW50ZWdlciBQUklNQVJZIEtFWSwKKyAgICBlbXBs b3llZV9uYW1lIHZhcmNoYXIsCisgICAgLi4uCispOworPC9wcm9ncmFtbGlzdGluZz4KK2FuZCB0 aGUgZm9sbG93aW5nIGdyYXBoIGRlZmluaXRpb246Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUg UFJPUEVSVFkgR1JBUEggbXlzaG9wCisgICAgVkVSVEVYIFRBQkxFUyAoCisgICAgICAgIHByb2R1 Y3RzIExBQkVMIHByb2R1Y3QsCisgICAgICAgIGN1c3RvbWVycyBMQUJFTCBjdXN0b21lciBMQUJF TCBwZXJzb24gUFJPUEVSVElFUyAobmFtZSksCisgICAgICAgIG9yZGVycyBMQUJFTCBvcmRlciwK KyAgICAgICAgZW1wbG95ZWVzIExBQkVMIGVtcGxveWVlIExBQkVMIHBlcnNvbiBQUk9QRVJUSUVT IChlbXBsb3llZV9uYW1lIEFTIG5hbWUpCisgICAgKQorICAgIEVER0UgVEFCTEVTICgKKyAgICAg ICAgb3JkZXJfaXRlbXMgU09VUkNFIG9yZGVycyBERVNUSU5BVElPTiBwcm9kdWN0cyBMQUJFTCBj b250YWlucywKKyAgICAgICAgY3VzdG9tZXJfb3JkZXJzIFNPVVJDRSBjdXN0b21lcnMgREVTVElO QVRJT04gb3JkZXJzIExBQkVMIGhhcworICAgICk7Cis8L3Byb2dyYW1saXN0aW5nPgorICAgKElu IHByYWN0aWNlLCB0aGVyZSBvdWdodCB0byBiZSBhbiBlZGdlIGxpbmtpbmcgdGhlCisgICA8bGl0 ZXJhbD5lbXBsb3llZXM8L2xpdGVyYWw+IHRhYmxlIHRvIHNvbWV0aGluZywgYnV0IGl0IGlzIGFs bG93ZWQgbGlrZQorICAgdGhpcy4pICBUaGVuIHdlIGNhbiBydW4gYSBxdWVyeSBsaWtlIHRoaXMg KGluY29tcGxldGUpOgorPHByb2dyYW1saXN0aW5nPgorU0VMRUNUIC4uLiBGUk9NIEdSQVBIX1RB QkxFIChteXNob3AgTUFUQ0ggKDpwZXJzb24gV0hFUkUgbmFtZSA9ICcuLi4nKS1bXS0+Li4uIENP TFVNTlMgKC4uLikpOworPC9wcm9ncmFtbGlzdGluZz4KKyAgIFRoaXMgd291bGQgYXV0b21hdGlj YWxseSBjb25zaWRlciBib3RoIHRoZSA8bGl0ZXJhbD5jdXN0b21lcnM8L2xpdGVyYWw+IGFuZAor ICAgdGhlIDxsaXRlcmFsPmVtcGxveWVlczwvbGl0ZXJhbD4gdGFibGVzIHdoZW4gbG9va2luZyBm b3IgYW4gZWRnZSB3aXRoIHRoZQorICAgPGxpdGVyYWw+cGVyc29uPC9saXRlcmFsPiBsYWJlbC4K KyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgV2hlbiBtb3JlIHRoYW4gb25lIGVsZW1lbnQgdGFi bGUgaGFzIHRoZSBzYW1lIGxhYmVsLCBpdCBpcyByZXF1aXJlZCB0aGF0CisgICB0aGUgcHJvcGVy dGllcyBtYXRjaCBpbiBudW1iZXIsIG5hbWUsIGFuZCB0eXBlLiAgSW4gdGhlIGV4YW1wbGUsIHdl IHNwZWNpZnkKKyAgIGFuIGV4cGxpY2l0IHByb3BlcnR5IGxpc3QgYW5kIGluIG9uZSBjYXNlIG92 ZXJyaWRlIHRoZSBuYW1lIG9mIHRoZSBjb2x1bW4KKyAgIHRvIGFjaGlldmUgdGhpcy4KKyAgPC9w YXJhPgorCisgIDxwYXJhPgorICAgRm9yIG1vcmUgZGV0YWlscyBvbiB0aGUgc3ludGF4IGZvciBj cmVhdGluZyBwcm9wZXJ0eSBncmFwaHMsIHNlZSA8bGluaworICAgbGlua2VuZD0ic3FsLWNyZWF0 ZS1wcm9wZXJ0eS1ncmFwaCI+PGNvbW1hbmQ+Q1JFQVRFIFBST1BFUlRZCisgICBHUkFQSDwvY29t bWFuZD48L2xpbms+LiAgTW9yZSBkZXRhaWxzIGFib3V0IHRoZSBncmFwaCBxdWVyeSBzeW50YXgg aXMgaW4KKyAgIDx4cmVmIGxpbmtlbmQ9InF1ZXJpZXMtZ3JhcGgiLz4uCisgIDwvcGFyYT4KKyA8 L3NlY3QxPgorCiAgPHNlY3QxIGlkPSJkZGwtb3RoZXJzIj4KICAgPHRpdGxlPk90aGVyIERhdGFi YXNlIE9iamVjdHM8L3RpdGxlPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZmVhdHVyZXMu c2dtbCBiL2RvYy9zcmMvc2dtbC9mZWF0dXJlcy5zZ21sCmluZGV4IDk2NmZkMzk4ODIuLjFhYmU2 Y2NkM2QgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9mZWF0dXJlcy5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9mZWF0dXJlcy5zZ21sCkBAIC03MCwxMCArNzAsMTAgQEAKIAogIDxwYXJhPgogICBU aGUgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBjb3JlIGNvdmVycyBwYXJ0 cyAxLCAyLCA5LAotICAxMSwgYW5kIDE0LiAgUGFydCAzIGlzIGNvdmVyZWQgYnkgdGhlIE9EQkMg ZHJpdmVyLCBhbmQgcGFydCAxMyBpcworICAxMSwgMTQsIGFuZCAxNi4gIFBhcnQgMyBpcyBjb3Zl cmVkIGJ5IHRoZSBPREJDIGRyaXZlciwgYW5kIHBhcnQgMTMgaXMKICAgY292ZXJlZCBieSB0aGUg UEwvSmF2YSBwbHVnLWluLCBidXQgZXhhY3QgY29uZm9ybWFuY2UgaXMgY3VycmVudGx5CiAgIG5v dCBiZWluZyB2ZXJpZmllZCBmb3IgdGhlc2UgY29tcG9uZW50cy4gIFRoZXJlIGFyZSBjdXJyZW50 bHkgbm8KLSAgaW1wbGVtZW50YXRpb25zIG9mIHBhcnRzIDQsIDEwLCAxNSwgYW5kIDE2CisgIGlt cGxlbWVudGF0aW9ucyBvZiBwYXJ0cyA0LCAxMCwgYW5kIDE1CiAgIGZvciA8cHJvZHVjdG5hbWU+ UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+LgogIDwvcGFyYT4KIApkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL2Z1bmMuc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKaW5kZXggNDYxZmMzZjQz Ny4uMmUxODg3MTEzMiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvZnVuYy5zZ21sCkBAIC0yNTk5Niw2ICsyNTk5NiwyMSBAQCBTRUxFQ1QgcGdf dHlwZV9pc192aXNpYmxlKCdteXNjaGVtYS53aWRnZXQnOjpyZWd0eXBlKTsKICAgICAgICA8L3Bh cmE+PC9lbnRyeT4KICAgICAgIDwvcm93PgogCisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSBy b2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CisgICAg ICAgIDxpbmRleHRlcm0+CisgICAgICAgICA8cHJpbWFyeT5wZ19nZXRfcHJvcGdyYXBoZGVmPC9w cmltYXJ5PgorICAgICAgICA8L2luZGV4dGVybT4KKyAgICAgICAgPGZ1bmN0aW9uPnBnX2dldF9w cm9wZ3JhcGhkZWY8L2Z1bmN0aW9uPiAoIDxwYXJhbWV0ZXI+cHJvcGdyYXBoPC9wYXJhbWV0ZXI+ IDx0eXBlPm9pZDwvdHlwZT4gKQorICAgICAgICA8cmV0dXJudmFsdWU+dGV4dDwvcmV0dXJudmFs dWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBSZWNvbnN0cnVjdHMg dGhlIGNyZWF0aW5nIGNvbW1hbmQgZm9yIGEgcHJvcGVydHkgZ3JhcGguCisgICAgICAgIChUaGlz IGlzIGEgZGVjb21waWxlZCByZWNvbnN0cnVjdGlvbiwgbm90IHRoZSBvcmlnaW5hbCB0ZXh0Cisg ICAgICAgIG9mIHRoZSBjb21tYW5kLikKKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgIDwv cm93PgorCiAgICAgICA8cm93PgogICAgICAgIDxlbnRyeSByb2xlPSJmdW5jX3RhYmxlX2VudHJ5 Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CiAgICAgICAgIDxpbmRleHRlcm0+CmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvaW5mb3JtYXRpb25fc2NoZW1hLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvaW5mb3JtYXRpb25fc2NoZW1hLnNnbWwKaW5kZXggOTQ0MmIwNzE4Yy4uYzkyYjY1YjAzYSAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbApAQCAtNDE3MSw2ICs0MTcxLDEwOTgg QEAgT1JERVIgQlkgYy5vcmRpbmFsX3Bvc2l0aW9uOwogICA8L3RhYmxlPgogIDwvc2VjdDE+CiAK KyA8c2VjdDEgaWQ9ImluZm9zY2hlbWEtcGctZWRnZS10YWJsZS1jb21wb25lbnRzIj4KKyAgPHRp dGxlPjxsaXRlcmFsPnBnX2VkZ2VfdGFibGVfY29tcG9uZW50czwvbGl0ZXJhbD48L3RpdGxlPgor CisgIDxwYXJhPgorICAgVGhlIHZpZXcgPGxpdGVyYWw+cGdfZWRnZV90YWJsZV9jb21wb25lbnRz PC9saXRlcmFsPiBpZGVudGlmaWVzIHdoaWNoCisgICBjb2x1bW5zIGFyZSBwYXJ0IG9mIHRoZSBz b3VyY2Ugb3IgZGVzdGluYXRpb24gdmVydGV4IGtleXMsIGFzIHdlbGwgYXMgdGhlaXIKKyAgIGNv cnJlc3BvbmRpbmcgY29sdW1ucyBpbiB0aGUgdmVydGV4IHRhYmxlcyBiZWluZyBsaW5rZWQgdG8s IGluIHRoZSBlZGdlCisgICB0YWJsZXMgb2YgcHJvcGVydHkgZ3JhcGhzIGRlZmluZWQgaW4gdGhl IGN1cnJlbnQgZGF0YWJhc2UuICBPbmx5IHRob3NlCisgICBwcm9wZXJ0eSBncmFwaHMgYXJlIHNo b3duIHRoYXQgdGhlIGN1cnJlbnQgdXNlciBoYXMgYWNjZXNzIHRvIChieSB3YXkgb2YKKyAgIGJl aW5nIHRoZSBvd25lciBvciBoYXZpbmcgc29tZSBwcml2aWxlZ2UpLgorICA8L3BhcmE+CisKKyAg PHBhcmE+CisgICBUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiB2ZXJ0ZXggbGlua3Mgb2YgZWRn ZSB0YWJsZXMgYXJlIHNwZWNpZmllZCBpbgorICAgPGNvbW1hbmQ+Q1JFQVRFIFBST1BFUlRZIEdS QVBIPC9jb21tYW5kPiBhbmQgZGVmYXVsdCB0byBmb3JlaWduIGtleXMgaW4KKyAgIGNlcnRhaW4g Y2FzZXMuCisgIDwvcGFyYT4KKworICA8dGFibGU+CisgICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdf ZWRnZV90YWJsZV9jb21wb25lbnRzPC9zdHJ1Y3RuYW1lPiBDb2x1bW5zPC90aXRsZT4KKyAgIDx0 Z3JvdXAgY29scz0iMSI+CisgICAgPHRoZWFkPgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJv bGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4K KyAgICAgICBDb2x1bW4gVHlwZQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAg RGVzY3JpcHRpb24KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3Ro ZWFkPgorCisgICAgPHRib2R5PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFs b2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8 c3RydWN0ZmllbGQ+cHJvcGVydHlfZ3JhcGhfY2F0YWxvZzwvc3RydWN0ZmllbGQ+IDx0eXBlPnNx bF9pZGVudGlmaWVyPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAg TmFtZSBvZiB0aGUgZGF0YWJhc2UgdGhhdCBjb250YWlucyB0aGUgcHJvcGVydHkgZ3JhcGggKGFs d2F5cyB0aGUgY3VycmVudCBkYXRhYmFzZSkKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8 L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ cHJvcGVydHlfZ3JhcGhfc2NoZW1hPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+c3FsX2lkZW50aWZpZXI8 L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOYW1lIG9mIHRoZSBz Y2hlbWEgdGhhdCBjb250YWlucyB0aGUgcHJvcGVydHkgZ3JhcGgKKyAgICAgIDwvcGFyYT48L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFs b2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8 c3RydWN0ZmllbGQ+cHJvcGVydHlfZ3JhcGhfbmFtZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnNxbF9p ZGVudGlmaWVyPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTmFt ZSBvZiB0aGUgcHJvcGVydHlfZ3JhcGgKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jv dz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ZWRn ZV90YWJsZV9hbGlhczwvc3RydWN0ZmllbGQ+IDx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPgor ICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIGVsZW1lbnQgdGFibGUgYWxp YXMgb2YgdGhlIGVkZ2UgdGFibGUgYmVpbmcgZGVzY3JpYmVkCisgICAgICA8L3BhcmE+PC9lbnRy eT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9n X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0 cnVjdGZpZWxkPnZlcnRleF90YWJsZV9hbGlhczwvc3RydWN0ZmllbGQ+IDx0eXBlPnNxbF9pZGVu dGlmaWVyPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIGVs ZW1lbnQgdGFibGUgYWxpYXMgb2YgdGhlIHNvdXJjZSBvciBkZXN0aW5hdGlvbiB2ZXJ0ZXggdGFi bGUgYmVpbmcgbGlua2VkIHRvCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisK KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmVkZ2VfZW5k PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2hhcmFjdGVyX2RhdGE8L3R5cGU+CisgICAgICA8L3BhcmE+ CisgICAgICA8cGFyYT4KKyAgICAgICBFaXRoZXIgPGxpdGVyYWw+U09VUkNFPC9saXRlcmFsPiBv ciA8bGl0ZXJhbD5ERVNUSU5BVElPTjwvbGl0ZXJhbD47CisgICAgICAgc3BlY2lmaWVzIHdoaWNo IGVkZ2UgbGluayBpcyBiZWluZyBkZXNjcmliZWQuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZp ZWxkPmVkZ2VfdGFibGVfY29sdW1uX25hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5zcWxfaWRlbnRp ZmllcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUgb2Yg dGhlIGNvbHVtbiB0aGF0IGlzIHBhcnQgb2YgdGhlIHNvdXJjZSBvciBkZXN0aW5hdGlvbiB2ZXJ0 ZXgga2V5IGluIHRoaXMgZWRnZSB0YWJsZQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwv cm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRy eSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD52 ZXJ0ZXhfdGFibGVfY29sdW1uX25hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5zcWxfaWRlbnRpZmll cjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUgb2YgdGhl IGNvbHVtbiB0aGF0IGlzIHBhcnQgb2YgdGhlIGtleSBpbiB0aGUgc291cmNlIG9yIGRlc3RpbmF0 aW9uCisgICAgICAgdmVydGV4IHRhYmxlIGJlaW5nIGxpbmtlZCB0bworICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0 YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAg IDxzdHJ1Y3RmaWVsZD5vcmRpbmFsX3Bvc2l0aW9uPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2FyZGlu YWxfbnVtYmVyPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgT3Jk aW5hbCBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucyB3aXRoaW4gdGhlIGtleSAoY291bnQgc3RhcnRz IGF0IDEpCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90Ym9keT4K KyAgIDwvdGdyb3VwPgorICA8L3RhYmxlPgorIDwvc2VjdDE+CisKKyA8c2VjdDEgaWQ9ImluZm9z Y2hlbWEtcGctZWxlbWVudC10YWJsZS1rZXktY29sdW1ucyI+CisgIDx0aXRsZT48bGl0ZXJhbD5w Z19lbGVtZW50X3RhYmxlX2tleV9jb2x1bW5zPC9saXRlcmFsPjwvdGl0bGU+CisKKyAgPHBhcmE+ CisgICBUaGUgdmlldyA8bGl0ZXJhbD5wZ19lbGVtZW50X2tleV9jb2x1bW5zPC9saXRlcmFsPiBp ZGVudGlmaWVzIHdoaWNoIGNvbHVtbnMKKyAgIGFyZSBwYXJ0IG9mIHRoZSBrZXlzIG9mIHRoZSBl bGVtZW50IHRhYmxlcyBvZiBwcm9wZXJ0eSBncmFwaHMgZGVmaW5lZCBpbgorICAgdGhlIGN1cnJl bnQgZGF0YWJhc2UuICBPbmx5IHRob3NlIHByb3BlcnR5IGdyYXBocyBhcmUgc2hvd24gdGhhdCB0 aGUKKyAgIGN1cnJlbnQgdXNlciBoYXMgYWNjZXNzIHRvIChieSB3YXkgb2YgYmVpbmcgdGhlIG93 bmVyIG9yIGhhdmluZyBzb21lCisgICBwcml2aWxlZ2UpLgorICA8L3BhcmE+CisKKyAgPHBhcmE+ CisgICBUaGUga2V5IG9mIGFuIGVsZW1lbnQgdGFibGUgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGUg cm93cyBpbiBpdC4gIEl0IGlzCisgICBlaXRoZXIgc3BlY2lmaWVkIHVzaW5nIHRoZSA8bGl0ZXJh bD5LRVk8L2xpdGVyYWw+IGNsYXVzZSBpbiA8Y29tbWFuZD5DUkVBVEUKKyAgIFBST1BFUlRZIEdS QVBIPC9jb21tYW5kPiBvciBkZWZhdWx0cyB0byB0aGUgcHJpbWFyeSBrZXkuCisgIDwvcGFyYT4K KworICA8dGFibGU+CisgICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfZWxlbWVudF90YWJsZV9rZXlf Y29sdW1uczwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+CisgICA8dGdyb3VwIGNvbHM9IjEi PgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1u IFR5cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERlc2NyaXB0aW9uCisg ICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKworICAgIDx0 Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5 Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBy b3BlcnR5X2dyYXBoX2NhdGFsb2c8L3N0cnVjdGZpZWxkPiA8dHlwZT5zcWxfaWRlbnRpZmllcjwv dHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUgb2YgdGhlIGRh dGFiYXNlIHRoYXQgY29udGFpbnMgdGhlIHByb3BlcnR5IGdyYXBoIChhbHdheXMgdGhlIGN1cnJl bnQgZGF0YWJhc2UpCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAg PHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xl PSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnByb3BlcnR5X2dyYXBo X3NjaGVtYTwvc3RydWN0ZmllbGQ+IDx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPgorICAgICAg PC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTmFtZSBvZiB0aGUgc2NoZW1hIHRoYXQgY29u dGFpbnMgdGhlIHByb3BlcnR5IGdyYXBoCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9y b3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5 Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBy b3BlcnR5X2dyYXBoX25hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlw ZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUgb2YgdGhlIHByb3Bl cnR5X2dyYXBoCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJv dz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmVsZW1lbnRfdGFibGVfYWxp YXM8L3N0cnVjdGZpZWxkPiA8dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgIEVsZW1lbnQgdGFibGUgYWxpYXMgKHVuaXF1ZSBpZGVu dGlmaWVyIG9mIGFuIGVsZW1lbnQgdGFibGUgd2l0aGluIGEKKyAgICAgICBwcm9wZXJ0eSBncmFw aCkKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+Y29sdW1uX25hbWU8L3N0cnVjdGZpZWxk PiA8dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJh PgorICAgICAgIE5hbWUgb2YgdGhlIGNvbHVtbiB0aGF0IGlzIHBhcnQgb2YgdGhlIGtleQorICAg ICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRp b24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5vcmRpbmFsX3Bvc2l0aW9uPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+Y2FyZGluYWxfbnVtYmVyPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgT3JkaW5hbCBwb3NpdGlvbiBvZiB0aGUgY29sdW1uIHdpdGhpbiB0aGUga2V5IChj b3VudCBzdGFydHMgYXQgMSkKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAg ICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4KKworIDxzZWN0 MSBpZD0iaW5mb3NjaGVtYS1wZy1lbGVtZW50LXRhYmxlLWxhYmVscyI+CisgIDx0aXRsZT48bGl0 ZXJhbD5wZ19lbGVtZW50X3RhYmxlX2xhYmVsczwvbGl0ZXJhbD48L3RpdGxlPgorCisgIDxwYXJh PgorICAgVGhlIHZpZXcgPGxpdGVyYWw+cGdfZWxlbWVudF90YWJsZV9sYWJlbHM8L2xpdGVyYWw+ IHNob3dzIHdoaWNoIGxhYmVscyBhcmUKKyAgIGRlZmluZWQgb24gdGhlIGVsZW1lbnQgdGFibGVz IG9mIHByb3BlcnR5IGdyYXBocyBkZWZpbmVkIGluIHRoZSBjdXJyZW50CisgICBkYXRhYmFzZS4g IE9ubHkgdGhvc2UgcHJvcGVydHkgZ3JhcGhzIGFyZSBzaG93biB0aGF0IHRoZSBjdXJyZW50IHVz ZXIgaGFzCisgICBhY2Nlc3MgdG8gKGJ5IHdheSBvZiBiZWluZyB0aGUgb3duZXIgb3IgaGF2aW5n IHNvbWUgcHJpdmlsZWdlKS4KKyAgPC9wYXJhPgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3Ry dWN0bmFtZT5wZ19lbGVtZW50X3RhYmxlX2xhYmVsczwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0 bGU+CisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJh PgorICAgICAgIERlc2NyaXB0aW9uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+ CisgICAgPC90aGVhZD4KKworICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CisgICAgICAgPHN0cnVjdGZpZWxkPnByb3BlcnR5X2dyYXBoX2NhdGFsb2c8L3N0cnVjdGZpZWxk PiA8dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJh PgorICAgICAgIE5hbWUgb2YgdGhlIGRhdGFiYXNlIHRoYXQgY29udGFpbnMgdGhlIHByb3BlcnR5 IGdyYXBoIChhbHdheXMgdGhlIGN1cnJlbnQgZGF0YWJhc2UpCisgICAgICA8L3BhcmE+PC9lbnRy eT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9n X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0 cnVjdGZpZWxkPnByb3BlcnR5X2dyYXBoX3NjaGVtYTwvc3RydWN0ZmllbGQ+IDx0eXBlPnNxbF9p ZGVudGlmaWVyPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTmFt ZSBvZiB0aGUgc2NoZW1hIHRoYXQgY29udGFpbnMgdGhlIHByb3BlcnR5IGdyYXBoCisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CisgICAgICAgPHN0cnVjdGZpZWxkPnByb3BlcnR5X2dyYXBoX25hbWU8L3N0cnVjdGZpZWxkPiA8 dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgor ICAgICAgIE5hbWUgb2YgdGhlIHByb3BlcnR5X2dyYXBoCisgICAgICA8L3BhcmE+PC9lbnRyeT4K KyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPmVsZW1lbnRfdGFibGVfYWxpYXM8L3N0cnVjdGZpZWxkPiA8dHlwZT5zcWxfaWRlbnRp ZmllcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIEVsZW1lbnQg dGFibGUgYWxpYXMgKHVuaXF1ZSBpZGVudGlmaWVyIG9mIGFuIGVsZW1lbnQgdGFibGUgd2l0aGlu IGEKKyAgICAgICBwcm9wZXJ0eSBncmFwaCkKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8 L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ bGFiZWxfbmFtZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPgorICAg ICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTmFtZSBvZiB0aGUgbGFiZWwKKyAgICAg IDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+ CisgIDwvdGFibGU+CisgPC9zZWN0MT4KKworIDxzZWN0MSBpZD0iaW5mb3NjaGVtYS1wZy1lbGVt ZW50LXRhYmxlLXByb3BlcnRpZXMiPgorICA8dGl0bGU+PGxpdGVyYWw+cGdfZWxlbWVudF90YWJs ZV9wcm9wZXJ0aWVzPC9saXRlcmFsPjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUaGUgdmlldyA8 bGl0ZXJhbD5wZ19lbGVtZW50X3RhYmxlX2xhYmVsczwvbGl0ZXJhbD4gc2hvd3MgdGhlIGRlZmlu aXRpb25zCisgICBvZiB0aGUgcHJvcGVydGllcyBmb3IgdGhlIGVsZW1lbnQgdGFibGVzIG9mIHBy b3BlcnR5IGdyYXBocyBkZWZpbmVkIGluIHRoZQorICAgY3VycmVudCBkYXRhYmFzZS4gIE9ubHkg dGhvc2UgcHJvcGVydHkgZ3JhcGhzIGFyZSBzaG93biB0aGF0IHRoZSBjdXJyZW50CisgICB1c2Vy IGhhcyBhY2Nlc3MgdG8gKGJ5IHdheSBvZiBiZWluZyB0aGUgb3duZXIgb3IgaGF2aW5nIHNvbWUg cHJpdmlsZWdlKS4KKyAgPC9wYXJhPgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFt ZT5wZ19lbGVtZW50X3RhYmxlX3Byb3BlcnRpZXM8L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxl PgorICAgPHRncm91cCBjb2xzPSIxIj4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8 ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmlu aXRpb24iPgorICAgICAgIENvbHVtbiBUeXBlCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4K KyAgICAgICBEZXNjcmlwdGlvbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor ICAgIDwvdGhlYWQ+CisKKyAgICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD5wcm9wZXJ0eV9ncmFwaF9jYXRhbG9nPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4K KyAgICAgICBOYW1lIG9mIHRoZSBkYXRhYmFzZSB0aGF0IGNvbnRhaW5zIHRoZSBwcm9wZXJ0eSBn cmFwaCAoYWx3YXlzIHRoZSBjdXJyZW50IGRhdGFiYXNlKQorICAgICAgPC9wYXJhPjwvZW50cnk+ CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD5wcm9wZXJ0eV9ncmFwaF9zY2hlbWE8L3N0cnVjdGZpZWxkPiA8dHlwZT5zcWxfaWRl bnRpZmllcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUg b2YgdGhlIHNjaGVtYSB0aGF0IGNvbnRhaW5zIHRoZSBwcm9wZXJ0eSBncmFwaAorICAgICAgPC9w YXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD5wcm9wZXJ0eV9ncmFwaF9uYW1lPC9zdHJ1Y3RmaWVsZD4gPHR5 cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAg ICAgICBOYW1lIG9mIHRoZSBwcm9wZXJ0eV9ncmFwaAorICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3Rm aWVsZD5lbGVtZW50X3RhYmxlX2FsaWFzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+c3FsX2lkZW50aWZp ZXI8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBFbGVtZW50IHRh YmxlIGFsaWFzICh1bmlxdWUgaWRlbnRpZmllciBvZiBhbiBlbGVtZW50IHRhYmxlIHdpdGhpbiBh CisgICAgICAgcHJvcGVydHkgZ3JhcGgpCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9y b3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5 Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBy b3BlcnR5X25hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT4KKyAg ICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUgb2YgdGhlIHByb3BlcnR5Cisg ICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5p dGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnByb3BlcnR5X2V4cHJlc3Npb248L3N0cnVjdGZp ZWxkPiA8dHlwZT5jaGFyYWN0ZXJfZGF0YTwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgIEV4cHJlc3Npb24gb2YgdGhlIHByb3BlcnR5IGRlZmluaXRpb24gZm9yIHRo aXMgZWxlbWVudCB0YWJsZQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAg IDwvdGJvZHk+CisgICA8L3Rncm91cD4KKyAgPC90YWJsZT4KKyA8L3NlY3QxPgorCisgPHNlY3Qx IGlkPSJpbmZvc2NoZW1hLXBnLWVsZW1lbnQtdGFibGVzIj4KKyAgPHRpdGxlPjxsaXRlcmFsPnBn X2VsZW1lbnRfdGFibGVzPC9saXRlcmFsPjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUaGUgdmll dyA8bGl0ZXJhbD5wZ19lbGVtZW50X3RhYmxlczwvbGl0ZXJhbD4gY29udGFpbnMgaW5mb3JtYXRp b24gYWJvdXQKKyAgIHRoZSBlbGVtZW50IHRhYmxlcyBvZiBwcm9wZXJ0eSBncmFwaHMgZGVmaW5l ZCBpbiB0aGUgY3VycmVudCBkYXRhYmFzZS4KKyAgIE9ubHkgdGhvc2UgcHJvcGVydHkgZ3JhcGhz IGFyZSBzaG93biB0aGF0IHRoZSBjdXJyZW50IHVzZXIgaGFzIGFjY2VzcyB0bworICAgKGJ5IHdh eSBvZiBiZWluZyB0aGUgb3duZXIgb3IgaGF2aW5nIHNvbWUgcHJpdmlsZWdlKS4KKyAgPC9wYXJh PgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19lbGVtZW50X3RhYmxlczwv c3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+CisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0 aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5 Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5cGUKKyAg ICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERlc2NyaXB0aW9uCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKworICAgIDx0Ym9keT4KKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnByb3BlcnR5X2dy YXBoX2NhdGFsb2c8L3N0cnVjdGZpZWxkPiA8dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT4KKyAg ICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUgb2YgdGhlIGRhdGFiYXNlIHRo YXQgY29udGFpbnMgdGhlIHByb3BlcnR5IGdyYXBoIChhbHdheXMgdGhlIGN1cnJlbnQgZGF0YWJh c2UpCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5f ZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnByb3BlcnR5X2dyYXBoX3NjaGVtYTwv c3RydWN0ZmllbGQ+IDx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPgorICAgICAgPC9wYXJhPgor ICAgICAgPHBhcmE+CisgICAgICAgTmFtZSBvZiB0aGUgc2NoZW1hIHRoYXQgY29udGFpbnMgdGhl IHByb3BlcnR5IGdyYXBoCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnByb3BlcnR5X2dy YXBoX25hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT4KKyAgICAg IDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUgb2YgdGhlIHByb3BlcnR5X2dyYXBo CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmVsZW1lbnRfdGFibGVfYWxpYXM8L3N0cnVj dGZpZWxkPiA8dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgIEVsZW1lbnQgdGFibGUgYWxpYXMgKHVuaXF1ZSBpZGVudGlmaWVyIG9m IGFuIGVsZW1lbnQgdGFibGUgd2l0aGluIGEKKyAgICAgICBwcm9wZXJ0eSBncmFwaCkKKyAgICAg IDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5 IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KKyAgICAgICA8c3RydWN0ZmllbGQ+ZWxlbWVudF90YWJsZV9raW5kPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+Y2hhcmFjdGVyX2RhdGE8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4K KyAgICAgICBUaGUga2luZCBvZiB0aGUgZWxlbWVudCB0YWJsZTogPGxpdGVyYWw+RURHRTwvbGl0 ZXJhbD4gb3IgPGxpdGVyYWw+VkVSVEVYPC9saXRlcmFsPgorICAgICAgPC9wYXJhPjwvZW50cnk+ CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD50YWJsZV9jYXRhbG9nPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+c3FsX2lkZW50aWZpZXI8 L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOYW1lIG9mIHRoZSBk YXRhYmFzZSB0aGF0IGNvbnRhaW5zIHRoZSByZWZlcmVuY2VkIHRhYmxlIChhbHdheXMgdGhlIGN1 cnJlbnQgZGF0YWJhc2UpCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnRhYmxlX3NjaGVt YTwvc3RydWN0ZmllbGQ+IDx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPgorICAgICAgPC9wYXJh PgorICAgICAgPHBhcmE+CisgICAgICAgTmFtZSBvZiB0aGUgc2NoZW1hIHRoYXQgY29udGFpbnMg dGhlIHJlZmVyZW5jZWQgdGFibGUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4K KworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxw YXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dGFibGVf bmFtZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPgorICAgICAgPC9w YXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTmFtZSBvZiB0aGUgdGFibGUgYmVpbmcgcmVmZXJl bmNlZCBieSB0aGUgZWxlbWVudCB0YWJsZSBkZWZpbml0aW9uCisgICAgICA8L3BhcmE+PC9lbnRy eT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9n X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0 cnVjdGZpZWxkPmVsZW1lbnRfdGFibGVfZGVmaW5pdGlvbjwvc3RydWN0ZmllbGQ+IDx0eXBlPmNo YXJhY3Rlcl9kYXRhPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAg QXBwbGllcyB0byBhIGZlYXR1cmUgbm90IGF2YWlsYWJsZSBpbiA8cHJvZHVjdG5hbWU+UG9zdGdy ZVNRTDwvcHJvZHVjdG5hbWU+CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+Cisg ICAgPC90Ym9keT4KKyAgIDwvdGdyb3VwPgorICA8L3RhYmxlPgorIDwvc2VjdDE+CisKKyA8c2Vj dDEgaWQ9ImluZm9zY2hlbWEtcGctbGFiZWwtcHJvcGVydGllcyI+CisgIDx0aXRsZT48bGl0ZXJh bD5wZ19sYWJlbF9wcm9wZXJ0aWVzPC9saXRlcmFsPjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBU aGUgdmlldyA8bGl0ZXJhbD5wZ19sYWJlbF9wcm9wZXJ0aWVzPC9saXRlcmFsPiBzaG93cyB3aGlj aCBwcm9wZXJ0aWVzIGFyZQorICAgZGVmaW5lZCBvbiBsYWJlbHMgZGVmaW5lZCBpbiBwcm9wZXJ0 eSBncmFwaHMgZGVmaW5lZCBpbiB0aGUgY3VycmVudAorICAgZGF0YWJhc2UuICBPbmx5IHRob3Nl IHByb3BlcnR5IGdyYXBocyBhcmUgc2hvd24gdGhhdCB0aGUgY3VycmVudCB1c2VyIGhhcworICAg YWNjZXNzIHRvIChieSB3YXkgb2YgYmVpbmcgdGhlIG93bmVyIG9yIGhhdmluZyBzb21lIHByaXZp bGVnZSkuCisgIDwvcGFyYT4KKworICA8dGFibGU+CisgICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdf bGFiZWxfcHJvcGVydGllczwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0bGU+CisgICA8dGdyb3Vw IGNvbHM9IjEiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAg ICAgQ29sdW1uIFR5cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERlc2Ny aXB0aW9uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4K KworICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPnByb3BlcnR5X2dyYXBoX2NhdGFsb2c8L3N0cnVjdGZpZWxkPiA8dHlwZT5zcWxfaWRl bnRpZmllcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUg b2YgdGhlIGRhdGFiYXNlIHRoYXQgY29udGFpbnMgdGhlIHByb3BlcnR5IGdyYXBoIChhbHdheXMg dGhlIGN1cnJlbnQgZGF0YWJhc2UpCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+ CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48 cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnByb3Bl cnR5X2dyYXBoX3NjaGVtYTwvc3RydWN0ZmllbGQ+IDx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBl PgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTmFtZSBvZiB0aGUgc2NoZW1h IHRoYXQgY29udGFpbnMgdGhlIHByb3BlcnR5IGdyYXBoCisgICAgICA8L3BhcmE+PC9lbnRyeT4K KyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPnByb3BlcnR5X2dyYXBoX25hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5zcWxfaWRlbnRp ZmllcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUgb2Yg dGhlIHByb3BlcnR5X2dyYXBoCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisK KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmxhYmVsX25h bWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUgb2YgdGhlIGxhYmVsCisgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAg ICAgPHN0cnVjdGZpZWxkPnByb3BlcnR5X25hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5zcWxfaWRl bnRpZmllcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUg b2YgdGhlIHByb3BlcnR5CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAg PC90Ym9keT4KKyAgIDwvdGdyb3VwPgorICA8L3RhYmxlPgorIDwvc2VjdDE+CisKKyA8c2VjdDEg aWQ9ImluZm9zY2hlbWEtcGctbGFiZWxzIj4KKyAgPHRpdGxlPjxsaXRlcmFsPnBnX2xhYmVsczwv bGl0ZXJhbD48L3RpdGxlPgorCisgIDxwYXJhPgorICAgVGhlIHZpZXcgPGxpdGVyYWw+cGdfbGFi ZWxzPC9saXRlcmFsPiBjb250YWlucyBhbGwgdGhlIGxhYmVscyBkZWZpbmVkIGluCisgICBwcm9w ZXJ0eSBncmFwaHMgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBkYXRhYmFzZS4gIE9ubHkgdGhvc2Ug cHJvcGVydHkKKyAgIGdyYXBocyBhcmUgc2hvd24gdGhhdCB0aGUgY3VycmVudCB1c2VyIGhhcyBh Y2Nlc3MgdG8gKGJ5IHdheSBvZiBiZWluZyB0aGUKKyAgIG93bmVyIG9yIGhhdmluZyBzb21lIHBy aXZpbGVnZSkuCisgIDwvcGFyYT4KKworICA8dGFibGU+CisgICA8dGl0bGU+PHN0cnVjdG5hbWU+ cGdfbGFiZWxzPC9zdHJ1Y3RuYW1lPiBDb2x1bW5zPC90aXRsZT4KKyAgIDx0Z3JvdXAgY29scz0i MSI+CisgICAgPHRoZWFkPgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2df dGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICBDb2x1 bW4gVHlwZQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgRGVzY3JpcHRpb24K KyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3RoZWFkPgorCisgICAg PHRib2R5PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ cHJvcGVydHlfZ3JhcGhfY2F0YWxvZzwvc3RydWN0ZmllbGQ+IDx0eXBlPnNxbF9pZGVudGlmaWVy PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTmFtZSBvZiB0aGUg ZGF0YWJhc2UgdGhhdCBjb250YWlucyB0aGUgcHJvcGVydHkgZ3JhcGggKGFsd2F5cyB0aGUgY3Vy cmVudCBkYXRhYmFzZSkKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAg ICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cHJvcGVydHlfZ3Jh cGhfc2NoZW1hPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+CisgICAg ICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOYW1lIG9mIHRoZSBzY2hlbWEgdGhhdCBj b250YWlucyB0aGUgcHJvcGVydHkgZ3JhcGgKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8 L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ cHJvcGVydHlfZ3JhcGhfbmFtZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnNxbF9pZGVudGlmaWVyPC90 eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTmFtZSBvZiB0aGUgcHJv cGVydHlfZ3JhcGgKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+bGFiZWxfbmFtZTwvc3Ry dWN0ZmllbGQ+IDx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPgorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgTmFtZSBvZiB0aGUgbGFiZWwKKyAgICAgIDwvcGFyYT48L2VudHJ5 PgorICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+Cisg PC9zZWN0MT4KKworIDxzZWN0MSBpZD0iaW5mb3NjaGVtYS1wZy1wcm9wZXJ0eS1kYXRhLXR5cGVz Ij4KKyAgPHRpdGxlPjxsaXRlcmFsPnBnX3Byb3BlcnR5X2RhdGFfdHlwZXM8L2xpdGVyYWw+PC90 aXRsZT4KKworICA8cGFyYT4KKyAgIFRoZSB2aWV3IDxsaXRlcmFsPnBnX3Byb3BlcnR5X2RhdGFf dHlwZXM8L2xpdGVyYWw+IHNob3dzIHRoZSBkYXRhIHR5cGVzIG9mCisgICB0aGUgcHJvcGVydGll cyBpbiBwcm9wZXJ0eSBncmFwaHMgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBkYXRhYmFzZS4gIE9u bHkKKyAgIHRob3NlIHByb3BlcnR5IGdyYXBocyBhcmUgc2hvd24gdGhhdCB0aGUgY3VycmVudCB1 c2VyIGhhcyBhY2Nlc3MgdG8gKGJ5IHdheQorICAgb2YgYmVpbmcgdGhlIG93bmVyIG9yIGhhdmlu ZyBzb21lIHByaXZpbGVnZSkuCisgIDwvcGFyYT4KKworICA8dGFibGU+CisgICA8dGl0bGU+PHN0 cnVjdG5hbWU+cGdfcHJvcGVydHlfZGF0YV90eXBlczwvc3RydWN0bmFtZT4gQ29sdW1uczwvdGl0 bGU+CisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJh PgorICAgICAgIERlc2NyaXB0aW9uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+ CisgICAgPC90aGVhZD4KKworICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CisgICAgICAgPHN0cnVjdGZpZWxkPnByb3BlcnR5X2dyYXBoX2NhdGFsb2c8L3N0cnVjdGZpZWxk PiA8dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJh PgorICAgICAgIE5hbWUgb2YgdGhlIGRhdGFiYXNlIHRoYXQgY29udGFpbnMgdGhlIHByb3BlcnR5 IGdyYXBoIChhbHdheXMgdGhlIGN1cnJlbnQgZGF0YWJhc2UpCisgICAgICA8L3BhcmE+PC9lbnRy eT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9n X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0 cnVjdGZpZWxkPnByb3BlcnR5X2dyYXBoX3NjaGVtYTwvc3RydWN0ZmllbGQ+IDx0eXBlPnNxbF9p ZGVudGlmaWVyPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTmFt ZSBvZiB0aGUgc2NoZW1hIHRoYXQgY29udGFpbnMgdGhlIHByb3BlcnR5IGdyYXBoCisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CisgICAgICAgPHN0cnVjdGZpZWxkPnByb3BlcnR5X2dyYXBoX25hbWU8L3N0cnVjdGZpZWxkPiA8 dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgor ICAgICAgIE5hbWUgb2YgdGhlIHByb3BlcnR5X2dyYXBoCisgICAgICA8L3BhcmE+PC9lbnRyeT4K KyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3Rh YmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPnByb3BlcnR5X25hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5zcWxfaWRlbnRpZmllcjwv dHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUgb2YgdGhlIHBy b3BlcnR5CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1 bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmRhdGFfdHlwZTwvc3RydWN0Zmll bGQ+IDx0eXBlPmNoYXJhY3Rlcl9kYXRhPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBh cmE+CisgICAgICAgRGF0YSB0eXBlIG9mIHRoZSBwcm9wZXJ0eSwgaWYgaXQgaXMgYSBidWlsdC1p biB0eXBlLCBvcgorICAgICAgIDxsaXRlcmFsPkFSUkFZPC9saXRlcmFsPiBpZiBpdCBpcyBzb21l IGFycmF5IChpbiB0aGF0IGNhc2UsIHNlZSB0aGUKKyAgICAgICB2aWV3IDxsaXRlcmFsPmVsZW1l bnRfdHlwZXM8L2xpdGVyYWw+KSwgZWxzZQorICAgICAgIDxsaXRlcmFsPlVTRVItREVGSU5FRDwv bGl0ZXJhbD4gKGluIHRoYXQgY2FzZSwgdGhlIHR5cGUgaXMgaWRlbnRpZmllZAorICAgICAgIGlu IDxsaXRlcmFsPmF0dHJpYnV0ZV91ZHRfbmFtZTwvbGl0ZXJhbD4gYW5kIGFzc29jaWF0ZWQgY29s dW1ucykuCisgICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5jaGFyYWN0ZXJfbWF4aW11bV9s ZW5ndGg8L3N0cnVjdGZpZWxkPiA8dHlwZT5jYXJkaW5hbF9udW1iZXI8L3R5cGU+CisgICAgICA8 L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBJZiA8bGl0ZXJhbD5kYXRhX3R5cGU8L2xpdGVy YWw+IGlkZW50aWZpZXMgYSBjaGFyYWN0ZXIgb3IgYml0CisgICAgICAgc3RyaW5nIHR5cGUsIHRo ZSBkZWNsYXJlZCBtYXhpbXVtIGxlbmd0aDsgbnVsbCBmb3IgYWxsIG90aGVyCisgICAgICAgZGF0 YSB0eXBlcyBvciBpZiBubyBtYXhpbXVtIGxlbmd0aCB3YXMgZGVjbGFyZWQuCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Cisg ICAgICAgPHN0cnVjdGZpZWxkPmNoYXJhY3Rlcl9vY3RldF9sZW5ndGg8L3N0cnVjdGZpZWxkPiA8 dHlwZT5jYXJkaW5hbF9udW1iZXI8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4K KyAgICAgICBJZiA8bGl0ZXJhbD5kYXRhX3R5cGU8L2xpdGVyYWw+IGlkZW50aWZpZXMgYSBjaGFy YWN0ZXIgdHlwZSwKKyAgICAgICB0aGUgbWF4aW11bSBwb3NzaWJsZSBsZW5ndGggaW4gb2N0ZXRz IChieXRlcykgb2YgYSBkYXR1bTsgbnVsbAorICAgICAgIGZvciBhbGwgb3RoZXIgZGF0YSB0eXBl cy4gIFRoZSBtYXhpbXVtIG9jdGV0IGxlbmd0aCBkZXBlbmRzIG9uCisgICAgICAgdGhlIGRlY2xh cmVkIGNoYXJhY3RlciBtYXhpbXVtIGxlbmd0aCAoc2VlIGFib3ZlKSBhbmQgdGhlCisgICAgICAg c2VydmVyIGVuY29kaW5nLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisg ICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5jaGFyYWN0ZXJf c2V0X2NhdGFsb2c8L3N0cnVjdGZpZWxkPiA8dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT4KKyAg ICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIEFwcGxpZXMgdG8gYSBmZWF0dXJlIG5v dCBhdmFpbGFibGUgaW4gPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPgorICAg ICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRp b24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5jaGFyYWN0ZXJfc2V0X3NjaGVtYTwvc3RydWN0Zmll bGQ+IDx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBh cmE+CisgICAgICAgQXBwbGllcyB0byBhIGZlYXR1cmUgbm90IGF2YWlsYWJsZSBpbiA8cHJvZHVj dG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZp ZWxkPmNoYXJhY3Rlcl9zZXRfbmFtZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnNxbF9pZGVudGlmaWVy PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgQXBwbGllcyB0byBh IGZlYXR1cmUgbm90IGF2YWlsYWJsZSBpbiA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVj dG5hbWU+CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1 bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNvbGxhdGlvbl9jYXRhbG9nPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+CisgICAgICA8L3BhcmE+Cisg ICAgICA8cGFyYT4KKyAgICAgICBOYW1lIG9mIHRoZSBkYXRhYmFzZSBjb250YWluaW5nIHRoZSBj b2xsYXRpb24gb2YgdGhlIHByb3BlcnR5IChhbHdheXMKKyAgICAgICB0aGUgY3VycmVudCBkYXRh YmFzZSksIG51bGwgaWYgZGVmYXVsdCBvciB0aGUgZGF0YSB0eXBlIG9mIHRoZQorICAgICAgIHBy b3BlcnR5IGlzIG5vdCBjb2xsYXRhYmxlCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9y b3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5 Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNv bGxhdGlvbl9zY2hlbWE8L3N0cnVjdGZpZWxkPiA8dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT4K KyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUgb2YgdGhlIHNjaGVtYSBj b250YWluaW5nIHRoZSBjb2xsYXRpb24gb2YgdGhlIHByb3BlcnR5LCBudWxsIGlmCisgICAgICAg ZGVmYXVsdCBvciB0aGUgZGF0YSB0eXBlIG9mIHRoZSBwcm9wZXJ0eSBpcyBub3QgY29sbGF0YWJs ZQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2Rl ZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5jb2xsYXRpb25fbmFtZTwvc3RydWN0Zmll bGQ+IDx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBh cmE+CisgICAgICAgTmFtZSBvZiB0aGUgY29sbGF0aW9uIG9mIHRoZSBwcm9wZXJ0eSwgbnVsbCBp ZiBkZWZhdWx0IG9yIHRoZSBkYXRhIHR5cGUKKyAgICAgICBvZiB0aGUgcHJvcGVydHkgaXMgbm90 IGNvbGxhdGFibGUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+bnVtZXJpY19wcmVjaXNp b248L3N0cnVjdGZpZWxkPiA8dHlwZT5jYXJkaW5hbF9udW1iZXI8L3R5cGU+CisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBJZiA8bGl0ZXJhbD5kYXRhX3R5cGU8L2xpdGVyYWw+ IGlkZW50aWZpZXMgYSBudW1lcmljIHR5cGUsIHRoaXMKKyAgICAgICBjb2x1bW4gY29udGFpbnMg dGhlIChkZWNsYXJlZCBvciBpbXBsaWNpdCkgcHJlY2lzaW9uIG9mIHRoZQorICAgICAgIHR5cGUg Zm9yIHRoaXMgYXR0cmlidXRlLiAgVGhlIHByZWNpc2lvbiBpbmRpY2F0ZXMgdGhlIG51bWJlciBv ZgorICAgICAgIHNpZ25pZmljYW50IGRpZ2l0cy4gIEl0IGNhbiBiZSBleHByZXNzZWQgaW4gZGVj aW1hbCAoYmFzZSAxMCkKKyAgICAgICBvciBiaW5hcnkgKGJhc2UgMikgdGVybXMsIGFzIHNwZWNp ZmllZCBpbiB0aGUgY29sdW1uCisgICAgICAgPGxpdGVyYWw+bnVtZXJpY19wcmVjaXNpb25fcmFk aXg8L2xpdGVyYWw+LiAgRm9yIGFsbCBvdGhlciBkYXRhCisgICAgICAgdHlwZXMsIHRoaXMgY29s dW1uIGlzIG51bGwuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAg PHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xl PSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPm51bWVyaWNfcHJlY2lz aW9uX3JhZGl4PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2FyZGluYWxfbnVtYmVyPC90eXBlPgorICAg ICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgSWYgPGxpdGVyYWw+ZGF0YV90eXBlPC9s aXRlcmFsPiBpZGVudGlmaWVzIGEgbnVtZXJpYyB0eXBlLCB0aGlzCisgICAgICAgY29sdW1uIGlu ZGljYXRlcyBpbiB3aGljaCBiYXNlIHRoZSB2YWx1ZXMgaW4gdGhlIGNvbHVtbnMKKyAgICAgICA8 bGl0ZXJhbD5udW1lcmljX3ByZWNpc2lvbjwvbGl0ZXJhbD4gYW5kCisgICAgICAgPGxpdGVyYWw+ bnVtZXJpY19zY2FsZTwvbGl0ZXJhbD4gYXJlIGV4cHJlc3NlZC4gIFRoZSB2YWx1ZSBpcworICAg ICAgIGVpdGhlciAyIG9yIDEwLiAgRm9yIGFsbCBvdGhlciBkYXRhIHR5cGVzLCB0aGlzIGNvbHVt biBpcyBudWxsLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5udW1lcmljX3NjYWxlPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+Y2FyZGluYWxfbnVtYmVyPC90eXBlPgorICAgICAgPC9wYXJhPgor ICAgICAgPHBhcmE+CisgICAgICAgSWYgPGxpdGVyYWw+ZGF0YV90eXBlPC9saXRlcmFsPiBpZGVu dGlmaWVzIGFuIGV4YWN0IG51bWVyaWMKKyAgICAgICB0eXBlLCB0aGlzIGNvbHVtbiBjb250YWlu cyB0aGUgKGRlY2xhcmVkIG9yIGltcGxpY2l0KSBzY2FsZSBvZgorICAgICAgIHRoZSB0eXBlIGZv ciB0aGlzIGF0dHJpYnV0ZS4gIFRoZSBzY2FsZSBpbmRpY2F0ZXMgdGhlIG51bWJlciBvZgorICAg ICAgIHNpZ25pZmljYW50IGRpZ2l0cyB0byB0aGUgcmlnaHQgb2YgdGhlIGRlY2ltYWwgcG9pbnQu ICBJdCBjYW4KKyAgICAgICBiZSBleHByZXNzZWQgaW4gZGVjaW1hbCAoYmFzZSAxMCkgb3IgYmlu YXJ5IChiYXNlIDIpIHRlcm1zLCBhcworICAgICAgIHNwZWNpZmllZCBpbiB0aGUgY29sdW1uCisg ICAgICAgPGxpdGVyYWw+bnVtZXJpY19wcmVjaXNpb25fcmFkaXg8L2xpdGVyYWw+LiAgRm9yIGFs bCBvdGhlciBkYXRhCisgICAgICAgdHlwZXMsIHRoaXMgY29sdW1uIGlzIG51bGwuCisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CisgICAgICAgPHN0cnVjdGZpZWxkPmRhdGV0aW1lX3ByZWNpc2lvbjwvc3RydWN0ZmllbGQ+IDx0 eXBlPmNhcmRpbmFsX251bWJlcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgor ICAgICAgIElmIDxsaXRlcmFsPmRhdGFfdHlwZTwvbGl0ZXJhbD4gaWRlbnRpZmllcyBhIGRhdGUs IHRpbWUsCisgICAgICAgdGltZXN0YW1wLCBvciBpbnRlcnZhbCB0eXBlLCB0aGlzIGNvbHVtbiBj b250YWlucyB0aGUgKGRlY2xhcmVkCisgICAgICAgb3IgaW1wbGljaXQpIGZyYWN0aW9uYWwgc2Vj b25kcyBwcmVjaXNpb24gb2YgdGhlIHR5cGUgZm9yIHRoaXMKKyAgICAgICBhdHRyaWJ1dGUsIHRo YXQgaXMsIHRoZSBudW1iZXIgb2YgZGVjaW1hbCBkaWdpdHMgbWFpbnRhaW5lZAorICAgICAgIGZv bGxvd2luZyB0aGUgZGVjaW1hbCBwb2ludCBpbiB0aGUgc2Vjb25kcyB2YWx1ZS4gIEZvciBhbGwK KyAgICAgICBvdGhlciBkYXRhIHR5cGVzLCB0aGlzIGNvbHVtbiBpcyBudWxsLgorICAgICAgPC9w YXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD5pbnRlcnZhbF90eXBlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2hh cmFjdGVyX2RhdGE8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBJ ZiA8bGl0ZXJhbD5kYXRhX3R5cGU8L2xpdGVyYWw+IGlkZW50aWZpZXMgYW4gaW50ZXJ2YWwgdHlw ZSwKKyAgICAgICB0aGlzIGNvbHVtbiBjb250YWlucyB0aGUgc3BlY2lmaWNhdGlvbiB3aGljaCBm aWVsZHMgdGhlCisgICAgICAgaW50ZXJ2YWxzIGluY2x1ZGUgZm9yIHRoaXMgYXR0cmlidXRlLCBl LmcuLCA8bGl0ZXJhbD5ZRUFSIFRPCisgICAgICAgTU9OVEg8L2xpdGVyYWw+LCA8bGl0ZXJhbD5E QVkgVE8gU0VDT05EPC9saXRlcmFsPiwgZXRjLiAgSWYgbm8KKyAgICAgICBmaWVsZCByZXN0cmlj dGlvbnMgd2VyZSBzcGVjaWZpZWQgKHRoYXQgaXMsIHRoZSBpbnRlcnZhbAorICAgICAgIGFjY2Vw dHMgYWxsIGZpZWxkcyksIGFuZCBmb3IgYWxsIG90aGVyIGRhdGEgdHlwZXMsIHRoaXMgZmllbGQK KyAgICAgICBpcyBudWxsLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisg ICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5pbnRlcnZhbF9w cmVjaXNpb248L3N0cnVjdGZpZWxkPiA8dHlwZT5jYXJkaW5hbF9udW1iZXI8L3R5cGU+CisgICAg ICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBBcHBsaWVzIHRvIGEgZmVhdHVyZSBub3Qg YXZhaWxhYmxlCisgICAgICAgaW4gPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1l PgorICAgICAgIChzZWUgPGxpdGVyYWw+ZGF0ZXRpbWVfcHJlY2lzaW9uPC9saXRlcmFsPiBmb3Ig dGhlIGZyYWN0aW9uYWwKKyAgICAgICBzZWNvbmRzIHByZWNpc2lvbiBvZiBpbnRlcnZhbCB0eXBl IHByb3BlcnRpZXMpCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAg PHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xl PSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnVzZXJfZGVmaW5lZF90 eXBlX2NhdGFsb2c8L3N0cnVjdGZpZWxkPiA8dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT4KKyAg ICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUgb2YgdGhlIGRhdGFiYXNlIHRo YXQgdGhlIHByb3BlcnR5IGRhdGEgdHlwZSBpcyBkZWZpbmVkIGluCisgICAgICAgKGFsd2F5cyB0 aGUgY3VycmVudCBkYXRhYmFzZSkKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4K KworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxw YXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dXNlcl9k ZWZpbmVkX3R5cGVfc2NoZW1hPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5 cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOYW1lIG9mIHRoZSBzY2hl bWEgdGhhdCB0aGUgcHJvcGVydHkgZGF0YSB0eXBlIGlzIGRlZmluZWQgaW4KKyAgICAgIDwvcGFy YT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9 ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAg ICAgICA8c3RydWN0ZmllbGQ+dXNlcl9kZWZpbmVkX3R5cGVfbmFtZTwvc3RydWN0ZmllbGQ+IDx0 eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+Cisg ICAgICAgTmFtZSBvZiB0aGUgcHJvcGVydHkgZGF0YSB0eXBlCisgICAgICA8L3BhcmE+PC9lbnRy eT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9n X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0 cnVjdGZpZWxkPnNjb3BlX2NhdGFsb2c8L3N0cnVjdGZpZWxkPiA8dHlwZT5zcWxfaWRlbnRpZmll cjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIEFwcGxpZXMgdG8g YSBmZWF0dXJlIG5vdCBhdmFpbGFibGUgaW4gPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1 Y3RuYW1lPgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5zY29wZV9zY2hlbWE8L3N0cnVj dGZpZWxkPiA8dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgIEFwcGxpZXMgdG8gYSBmZWF0dXJlIG5vdCBhdmFpbGFibGUgaW4gPHBy b2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPgorICAgICAgPC9wYXJhPjwvZW50cnk+ CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD5zY29wZV9uYW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5 cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBBcHBsaWVzIHRvIGEgZmVh dHVyZSBub3QgYXZhaWxhYmxlIGluIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFt ZT4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+bWF4aW11bV9jYXJkaW5hbGl0eTwvc3Ry dWN0ZmllbGQ+IDx0eXBlPmNhcmRpbmFsX251bWJlcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAg ICAgIDxwYXJhPgorICAgICAgIEFsd2F5cyBudWxsLCBiZWNhdXNlIGFycmF5cyBhbHdheXMgaGF2 ZSB1bmxpbWl0ZWQgbWF4aW11bSBjYXJkaW5hbGl0eSBpbiA8cHJvZHVjdG5hbWU+UG9zdGdyZVNR TDwvcHJvZHVjdG5hbWU+CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmR0ZF9pZGVudGlm aWVyPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+CisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBBbiBpZGVudGlmaWVyIG9mIHRoZSBkYXRhIHR5cGUg ZGVzY3JpcHRvciBvZiB0aGUgcHJvcGVydHksIHVuaXF1ZQorICAgICAgIGFtb25nIHRoZSBkYXRh IHR5cGUgZGVzY3JpcHRvcnMgcGVydGFpbmluZyB0byB0aGUgcHJvcGVydHkgZ3JhcGguICBUaGlz CisgICAgICAgaXMgbWFpbmx5IHVzZWZ1bCBmb3Igam9pbmluZyB3aXRoIG90aGVyIGluc3RhbmNl cyBvZiBzdWNoCisgICAgICAgaWRlbnRpZmllcnMuICAoVGhlIHNwZWNpZmljIGZvcm1hdCBvZiB0 aGUgaWRlbnRpZmllciBpcyBub3QKKyAgICAgICBkZWZpbmVkIGFuZCBub3QgZ3VhcmFudGVlZCB0 byByZW1haW4gdGhlIHNhbWUgaW4gZnV0dXJlCisgICAgICAgdmVyc2lvbnMuKQorICAgICAgPC9w YXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGJvZHk+CisgICA8L3Rncm91cD4KKyAg PC90YWJsZT4KKyA8L3NlY3QxPgorCisgPHNlY3QxIGlkPSJpbmZvc2NoZW1hLXBnLXByb3BlcnR5 LWdyYXBoLXByaXZpbGVnZXMiPgorICA8dGl0bGU+PGxpdGVyYWw+cGdfcHJvcGVydHlfZ3JhcGhf cHJpdmlsZWdlczwvbGl0ZXJhbD48L3RpdGxlPgorCisgIDxwYXJhPgorICAgVGhlIHZpZXcgPGxp dGVyYWw+cHJvcGVydHlfZ3JhcGhfcHJpdmlsZWdlczwvbGl0ZXJhbD4gaWRlbnRpZmllcyBhbGwK KyAgIHByaXZpbGVnZXMgZ3JhbnRlZCBvbiBwcm9wZXJ0eSBncmFwaHMgdG8gYSBjdXJyZW50bHkg ZW5hYmxlZCByb2xlIG9yIGJ5IGEKKyAgIGN1cnJlbnRseSBlbmFibGVkIHJvbGUuICBUaGVyZSBp cyBvbmUgcm93IGZvciBlYWNoIGNvbWJpbmF0aW9uIG9mIHByb3BlcnR5CisgICBncmFwaCwgZ3Jh bnRvciwgYW5kIGdyYW50ZWUuCisgIDwvcGFyYT4KKworICA8dGFibGU+CisgICA8dGl0bGU+PHN0 cnVjdG5hbWU+cHJvcGVydHlfZ3JhcGhfcHJpdmlsZWdlczwvc3RydWN0bmFtZT4gQ29sdW1uczwv dGl0bGU+CisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5f ZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgIERlc2NyaXB0aW9uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9y b3c+CisgICAgPC90aGVhZD4KKworICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgPHN0cnVjdGZpZWxkPmdyYW50b3I8L3N0cnVjdGZpZWxkPiA8dHlwZT5zcWxf aWRlbnRpZmllcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5h bWUgb2YgdGhlIHJvbGUgdGhhdCBncmFudGVkIHRoZSBwcml2aWxlZ2UKKyAgICAgIDwvcGFyYT48 L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNh dGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAg ICA8c3RydWN0ZmllbGQ+Z3JhbnRlZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnNxbF9pZGVudGlmaWVy PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTmFtZSBvZiB0aGUg cm9sZSB0aGF0IHRoZSBwcml2aWxlZ2Ugd2FzIGdyYW50ZWQgdG8KKyAgICAgIDwvcGFyYT48L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFs b2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8 c3RydWN0ZmllbGQ+cHJvcGVydHlfZ3JhcGhfY2F0YWxvZzwvc3RydWN0ZmllbGQ+IDx0eXBlPnNx bF9pZGVudGlmaWVyPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAg TmFtZSBvZiB0aGUgZGF0YWJhc2UgdGhhdCBjb250YWlucyB0aGUgcHJvcGVydHkgZ3JhcGggKGFs d2F5cyB0aGUgY3VycmVudCBkYXRhYmFzZSkKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8 L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ cHJvcGVydHlfZ3JhcGhfc2NoZW1hPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+c3FsX2lkZW50aWZpZXI8 L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOYW1lIG9mIHRoZSBz Y2hlbWEgdGhhdCBjb250YWlucyB0aGUgcHJvcGVydHkgZ3JhcGgKKyAgICAgIDwvcGFyYT48L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFs b2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8 c3RydWN0ZmllbGQ+cHJvcGVydHlfZ3JhcGhfbmFtZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnNxbF9p ZGVudGlmaWVyPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTmFt ZSBvZiB0aGUgcHJvcGVydHkgZ3JhcGgKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jv dz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cHJp dmlsZWdlX3R5cGU8L3N0cnVjdGZpZWxkPiA8dHlwZT5jaGFyYWN0ZXJfZGF0YTwvdHlwZT4KKyAg ICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFR5cGUgb2YgdGhlIHByaXZpbGVnZTog PGxpdGVyYWw+U0VMRUNUPC9saXRlcmFsPiBpcyB0aGUgb25seSBwcml2aWxlZ2UKKyAgICAgICB0 eXBlIGFwcGxpY2FibGUgdG8gcHJvcGVydHkgZ3JhcGhzLgorICAgICAgPC9wYXJhPjwvZW50cnk+ CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD5pc19ncmFudGFibGU8L3N0cnVjdGZpZWxkPiA8dHlwZT55ZXNfb3Jfbm88L3R5cGU+ CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICA8bGl0ZXJhbD5ZRVM8L2xpdGVy YWw+IGlmIHRoZSBwcml2aWxlZ2UgaXMgZ3JhbnRhYmxlLCA8bGl0ZXJhbD5OTzwvbGl0ZXJhbD4g aWYgbm90CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90Ym9keT4K KyAgIDwvdGdyb3VwPgorICA8L3RhYmxlPgorIDwvc2VjdDE+CisKKyA8c2VjdDEgaWQ9ImluZm9z Y2hlbWEtcHJvcGVydHktZ3JhcGhzIj4KKyAgPHRpdGxlPjxsaXRlcmFsPnByb3BlcnR5X2dyYXBo czwvbGl0ZXJhbD48L3RpdGxlPgorCisgIDxwYXJhPgorICAgVGhlIHZpZXcgPGxpdGVyYWw+cHJv cGVydHlfZ3JhcGhzPC9saXRlcmFsPiBjb250YWlucyBhbGwgcHJvcGVydHkgZ3JhcGhzCisgICBk ZWZpbmVkIGluIHRoZSBjdXJyZW50IGRhdGFiYXNlLiAgT25seSB0aG9zZSBwcm9wZXJ0eSBncmFw aHMgYXJlIHNob3duIHRoYXQKKyAgIHRoZSBjdXJyZW50IHVzZXIgaGFzIGFjY2VzcyB0byAoYnkg d2F5IG9mIGJlaW5nIHRoZSBvd25lciBvciBoYXZpbmcgc29tZQorICAgcHJpdmlsZWdlKS4KKyAg PC9wYXJhPgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wcm9wZXJ0eV9ncmFw aHM8L3N0cnVjdG5hbWU+IENvbHVtbnM8L3RpdGxlPgorICAgPHRncm91cCBjb2xzPSIxIj4KKyAg ICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIENvbHVtbiBUeXBl CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBEZXNjcmlwdGlvbgorICAgICAg PC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGhlYWQ+CisKKyAgICA8dGJvZHk+ CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wcm9wZXJ0 eV9ncmFwaF9jYXRhbG9nPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+ CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOYW1lIG9mIHRoZSBkYXRhYmFz ZSB0aGF0IGNvbnRhaW5zIHRoZSBwcm9wZXJ0eSBncmFwaCAoYWx3YXlzIHRoZSBjdXJyZW50IGRh dGFiYXNlKQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wcm9wZXJ0eV9ncmFwaF9zY2hl bWE8L3N0cnVjdGZpZWxkPiA8dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUgb2YgdGhlIHNjaGVtYSB0aGF0IGNvbnRhaW5z IHRoZSBwcm9wZXJ0eSBncmFwaAorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wcm9wZXJ0 eV9ncmFwaF9uYW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+Cisg ICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOYW1lIG9mIHRoZSBwcm9wZXJ0eV9n cmFwaAorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGJvZHk+Cisg ICA8L3Rncm91cD4KKyAgPC90YWJsZT4KKyA8L3NlY3QxPgorCiAgPHNlY3QxIGlkPSJpbmZvc2No ZW1hLXJlZmVyZW50aWFsLWNvbnN0cmFpbnRzIj4KICAgPHRpdGxlPjxsaXRlcmFsPnJlZmVyZW50 aWFsX2NvbnN0cmFpbnRzPC9saXRlcmFsPjwvdGl0bGU+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9rZXl3b3Jkcy9zcWwyMDIzLTE2LW5vbnJlc2VydmVkLnR4dCBiL2RvYy9zcmMvc2dtbC9r ZXl3b3Jkcy9zcWwyMDIzLTE2LW5vbnJlc2VydmVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi4zOTc1NmM2MDY3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jL3NyYy9z Z21sL2tleXdvcmRzL3NxbDIwMjMtMTYtbm9ucmVzZXJ2ZWQudHh0CkBAIC0wLDAgKzEsMjcgQEAK K0FDWUNMSUMKK0JJTkRJTkdTCitCT1VORAorREVTVElOQVRJT04KK0RJRkZFUkVOVAorRElSRUNU RUQKK0VER0UKK0VER0VTCitFTEVNRU5UUworTEFCRUwKK0xBQkVMRUQKK05PREUKK1BBVEhTCitQ Uk9QRVJUSUVTCitQUk9QRVJUWQorUFJPUEVSVFlfR1JBUEhfQ0FUQUxPRworUFJPUEVSVFlfR1JB UEhfTkFNRQorUFJPUEVSVFlfR1JBUEhfU0NIRU1BCitSRUxBVElPTlNISVAKK1JFTEFUSU9OU0hJ UFMKK1NIT1JURVNUCitTSU5HTEVUT05TCitTVEVQCitUQUJMRVMKK1RSQUlMCitWRVJURVgKK1dB TEsKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9rZXl3b3Jkcy9zcWwyMDIzLTE2LXJlc2VydmVk LnR4dCBiL2RvYy9zcmMvc2dtbC9rZXl3b3Jkcy9zcWwyMDIzLTE2LXJlc2VydmVkLnR4dApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zYmRkN2UyYjI3Ci0tLSAvZGV2L251 bGwKKysrIGIvZG9jL3NyYy9zZ21sL2tleXdvcmRzL3NxbDIwMjMtMTYtcmVzZXJ2ZWQudHh0CkBA IC0wLDAgKzEsMTIgQEAKK0FMTF9ESUZGRVJFTlQKK0JJTkRJTkdfQ09VTlQKK0VMRU1FTlRfSUQK K0VMRU1FTlRfTlVNQkVSCitFWFBPUlQKK0dSQVBICitHUkFQSF9UQUJMRQorTUFUQ0hOVU0KK1BB VEhfTEVOR1RICitQQVRIX05BTUUKK1BST1BFUlRZX0VYSVNUUworU0FNRQpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3F1ZXJpZXMuc2dtbCBiL2RvYy9zcmMvc2dtbC9xdWVyaWVzLnNnbWwKaW5k ZXggMzcyY2NlMWE0OC4uNDFhNmY0MjNjNiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3F1ZXJp ZXMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcXVlcmllcy5zZ21sCkBAIC04NjMsNiArODYzLDEx IEBAIE9SREVSIEJZIHA7CiAgICAgIHRvIGNvbHVtbnMgcHJvdmlkZWQgYnkgcHJlY2VkaW5nIDxs aXRlcmFsPkZST008L2xpdGVyYWw+IGl0ZW1zIGluIGFueSBjYXNlLgogICAgIDwvcGFyYT4KIAor ICAgIDxwYXJhPgorICAgICBBIDxsaXRlcmFsPkdSQVBIX1RBQkxFPC9saXRlcmFsPiA8bGl0ZXJh bD5GUk9NPC9saXRlcmFsPiBpdGVtIGNhbiBhbHNvCisgICAgIGFsd2F5cyBjb250YWluIGxhdGVy YWwgcmVmZXJlbmNlcy4KKyAgICA8L3BhcmE+CisKICAgICA8cGFyYT4KICAgICAgQSA8bGl0ZXJh bD5MQVRFUkFMPC9saXRlcmFsPiBpdGVtIGNhbiBhcHBlYXIgYXQgdGhlIHRvcCBsZXZlbCBpbiB0 aGUKICAgICAgPGxpdGVyYWw+RlJPTTwvbGl0ZXJhbD4gbGlzdCwgb3Igd2l0aGluIGEgPGxpdGVy YWw+Sk9JTjwvbGl0ZXJhbD4gdHJlZS4gIEluIHRoZSBsYXR0ZXIKQEAgLTI3NDUsNCArMjc1MCwx NjcgQEAgU0VMRUNUICogRlJPTSB0OwogCiAgPC9zZWN0MT4KIAorIDxzZWN0MSBpZD0icXVlcmll cy1ncmFwaCI+CisgIDx0aXRsZT5HcmFwaCBRdWVyaWVzPC90aXRsZT4KKworICA8cGFyYT4KKyAg IFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhlIHN1Ymxhbmd1YWdlIGZvciBxdWVyeWluZyBwcm9w ZXJ0eSBncmFwaHMsCisgICBkZWZpbmVkIGFzIGRlc2NyaWJlZCBpbiA8eHJlZiBsaW5rZW5kPSJk ZGwtcHJvcGVydHktZ3JhcGhzIi8+LgorICA8L3BhcmE+CisKKyAgPHNlY3QyIGlkPSJxdWVyaWVz LWdyYXBoLW92ZXJ2aWV3Ij4KKyAgIDx0aXRsZT5PdmVydmlldzwvdGl0bGU+CisKKyAgIDxwYXJh PgorICAgIENvbnNpZGVyIHRoaXMgZXhhbXBsZSBmcm9tIDx4cmVmIGxpbmtlbmQ9ImRkbC1wcm9w ZXJ0eS1ncmFwaHMiLz46Cis8cHJvZ3JhbWxpc3Rpbmc+CistLSBnZXQgbGlzdCBvZiBjdXN0b21l cnMgYWN0aXZlIHRvZGF5CitTRUxFQ1QgY3VzdG9tZXJfbmFtZSBGUk9NIEdSQVBIX1RBQkxFICht eXNob3AgTUFUQ0ggKGMgSVMgY3VzdG9tZXJzKS1bSVMgY3VzdG9tZXJfb3JkZXJzXS0+KG8gSVMg b3JkZXJzIFdIRVJFIG8ub3JkZXJlZF93aGVuID0gY3VycmVudF9kYXRlKSBDT0xVTU5TIChjLm5h bWUgQVMgY3VzdG9tZXJfbmFtZSkpOworPC9wcm9ncmFtbGlzdGluZz4KKyAgICBUaGUgZ3JhcGgg cXVlcnkgcGFydCBoYXBwZW5zIGluc2lkZSB0aGUgPGxpdGVyYWw+R1JBUEhfVEFCTEU8L2xpdGVy YWw+CisgICAgY29uc3RydWN0LiAgQXMgZmFyIGFzIHRoZSByZXN0IG9mIHRoZSBxdWVyeSBpcyBj b25jZXJuZWQsIHRoaXMgYWN0cyBsaWtlIGEKKyAgICB0YWJsZSBmdW5jdGlvbiBpbiB0aGF0IGl0 IHByb2R1Y2VzIGEgY29tcHV0ZWQgdGFibGUgYXMgb3V0cHV0LiAgTGlrZSBvdGhlcgorICAgIDxs aXRlcmFsPkZST008L2xpdGVyYWw+IGNsYXVzZSBlbGVtZW50cywgdGFibGUgYWxpYXMgYW5kIGNv bHVtbiBhbGlhcworICAgIG5hbWVzIGNhbiBiZSBhc3NpZ25lZCB0byB0aGUgcmVzdWx0LCBhbmQg dGhlIHJlc3VsdCBjYW4gYmUgam9pbmVkIHdpdGgKKyAgICBvdGhlciB0YWJsZXMsIHN1YnNlcXVl bnRseSBmaWx0ZXJlZCwgYW5kIHNvIG9uLCBmb3IgZXhhbXBsZToKKzxwcm9ncmFtbGlzdGluZz4K K1NFTEVDVCAuLi4gRlJPTSBHUkFQSF9UQUJMRSAobXlncmFwaCBNQVRDSCAuLi4gQ09MVU1OUyAo Li4uKSkgQVMgbXlyZXN1bHQgKGEsIGIsIGMpIEpPSU4gb3RoZXJ0YWJsZSBVU0lORyAoYSkgV0hF UkUgYiA+IDAgT1JERVIgQlkgYzsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICA8L3BhcmE+CisKKyAg IDxwYXJhPgorICAgIFRoZSA8bGl0ZXJhbD5HUkFQSF9UQUJMRTwvbGl0ZXJhbD4gY2xhdXNlIGNv bnNpc3RzIG9mIHRoZSBncmFwaCBuYW1lLAorICAgIGZvbGxvd2VkIGJ5IHRoZSBrZXl3b3JkIDxs aXRlcmFsPk1BVENIPC9saXRlcmFsPiwgZm9sbG93ZWQgYnkgYSBncmFwaAorICAgIHBhdHRlcm4g ZXhwcmVzc2lvbiAoc2VlIGJlbG93KSwgZm9sbG93ZWQgYnkgdGhlIGtleXdvcmQKKyAgICA8bGl0 ZXJhbD5DT0xVTU5TPC9saXRlcmFsPiBhbmQgYSBjb2x1bW4gbGlzdC4KKyAgIDwvcGFyYT4KKyAg PC9zZWN0Mj4KKworICA8c2VjdDIgaWQ9InF1ZXJpZXMtZ3JhcGgtcGF0dGVybnMiPgorICAgPHRp dGxlPkdyYXBoIFBhdHRlcm5zPC90aXRsZT4KKworICAgPHBhcmE+CisgICAgVGhlIGNvcmUgb2Yg dGhlIGdyYXBoIHF1ZXJ5aW5nIGZ1bmN0aW9uYWxpdHkgaXMgdGhlIGdyYXBoIHBhdHRlcm4sIHdo aWNoCisgICAgYXBwZWFycyBhZnRlciB0aGUga2V5d29yZCA8bGl0ZXJhbD5NQVRDSDwvbGl0ZXJh bD4uICBGb3JtYWxseSwgYSBncmFwaAorICAgIHBhdHRlcm4gY29uc2lzdHMgb2Ygb25lIG9yIG1v cmUgcGF0aCBwYXR0ZXJucy4gIEEgcGF0aCBpcyBhIHNlcXVlbmNlIG9mCisgICAgZ3JhcGggZWxl bWVudHMsIHN0YXJ0aW5nIGFuZCBlbmRpbmcgd2l0aCBhIHZlcnRleCBhbmQgYWx0ZXJuYXRpbmcg YmV0d2VlbgorICAgIHZlcnRpY2VzIGFuZCBlZGdlcy4gIEEgcGF0aCBwYXR0ZXJuIGlzIGEgc3lu dGFjdGljIGV4cHJlc3Npb25zIHRoYXQKKyAgICBtYXRjaGVzIHBhdGhzLgorICAgPC9wYXJhPgor CisgICA8cGFyYT4KKyAgICBBIHBhdGggcGF0dGVybiB0aHVzIG1hdGNoZXMgYSBzZXF1ZW5jZSBv ZiB2ZXJ0aWNlcyBhbmQgZWRnZXMuICBUaGUKKyAgICBzaW1wbGVzdCBwb3NzaWJsZSBwYXRoIHBh dHRlcm4gaXMKKzxwcm9ncmFtbGlzdGluZz4KKygpCis8L3Byb2dyYW1saXN0aW5nPgorICAgIHdo aWNoIG1hdGNoZXMgYSBzaW5nbGUgdmVydGV4LiAgVGhlIG5leHQgc2ltcGxlc3QgcGF0dGVybiB3 b3VsZCBiZQorPHByb2dyYW1saXN0aW5nPgorKCktW10tPigpCis8L3Byb2dyYW1saXN0aW5nPgor ICAgIHdoaWNoIG1hdGNoZXMgYSB2ZXJ0ZXggZm9sbG93ZWQgYnkgYW4gZWRnZSBmb2xsb3dlZCBi eSBhIHZlcnRleC4gIFRoZQorICAgIGNoYXJhY3RlcnMgPGxpdGVyYWw+KCk8L2xpdGVyYWw+IGFy ZSBhIHZlcnRleCBwYXR0ZXJuIGFuZCB0aGUgY2hhcmFjdGVycworICAgIDxsaXRlcmFsPi1bXS0+ PC9saXRlcmFsPiBhcmUgYW4gZWRnZSBwYXR0ZXJuLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4K KyAgICBUaGVzZSBjaGFyYWN0ZXJzIGNhbiBhbHNvIGJlIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNl LCBmb3IgZXhhbXBsZToKKzxwcm9ncmFtbGlzdGluZz4KKyggKSAtIFsgXSAtID4gKCApCis8L3By b2dyYW1saXN0aW5nPgorICAgPC9wYXJhPgorCisgICA8dGlwPgorICAgIDxwYXJhPgorICAgICBB IHdheSB0byByZW1lbWJlciB0aGVzZSBzeW1ib2xzIGlzIHRoYXQgaW4gdmlzdWFsIHJlcHJlc2Vu dGF0aW9ucyBvZgorICAgICBwcm9wZXJ0eSBncmFwaHMsIHZlcnRpY2VzIGFyZSB1c3VhbGx5IGNp cmNsZXMgKGxpa2UKKyAgICAgPGxpdGVyYWw+KCk8L2xpdGVyYWw+KSBhbmQgZWRnZXMgaGF2ZSBy ZWN0YW5ndWxhciBsYWJlbHMgKGxpa2UKKyAgICAgPGxpdGVyYWw+W108L2xpdGVyYWw+KS4KKyAg ICA8L3BhcmE+CisgICA8L3RpcD4KKworICAgPHBhcmE+CisgICAgVGhlIGFib3ZlIHBhdHRlcm5z IHdvdWxkIG1hdGNoIGFueSB2ZXJ0ZXgsIG9yIGFueSB0d28gdmVydGljZXMgY29ubmVjdGVkCisg ICAgYnkgYW55IGVkZ2UsIHdoaWNoIGlzbid0IHZlcnkgaW50ZXJlc3RpbmcuICBOb3JtYWxseSwg d2Ugd2FudCB0byBzZWFyY2gKKyAgICBmb3IgZWxlbWVudHMgKHZlcnRpY2VzIGFuZCBlZGdlcykg dGhhdCBoYXZlIGNlcnRhaW4gY2hhcmFjdGVyaXN0aWNzLgorICAgIFRoZXNlIGNoYXJhY3Rlcmlz dGljcyBhcmUgd3JpdHRlbiBpbiBiZXR3ZWVuIHRoZSBwYXJlbnRoZXNlcyBvciBicmFja2V0cy4K KyAgICAoVGhpcyBpcyBhbHNvIGNhbGxlZCBhbiBlbGVtZW50IHBhdHRlcm4gZmlsbGVyLikgIFR5 cGljYWxseSwgd2Ugd291bGQKKyAgICBzZWFyY2ggZm9yIGVsZW1lbnRzIHdpdGggYSBjZXJ0YWlu IGxhYmVsLiAgVGhpcyBpcyB3cml0dGVuIGVpdGhlciBieQorICAgIDxsaXRlcmFsPklTIDxyZXBs YWNlYWJsZT5sYWJlbG5hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD4gb3IgZXF1aXZhbGVudGx5 CisgICAgPGxpdGVyYWw+OjxyZXBsYWNlYWJsZT5sYWJlbG5hbWU8L3JlcGxhY2VhYmxlPjwvbGl0 ZXJhbD4uICBGb3IgZXhhbXBsZSwKKyAgICB0aGlzIHdvdWxkIG1hdGNoIGFsbCB2ZXJ0aWNlcyB3 aXRoIHRoZSBsYWJlbCA8bGl0ZXJhbD5wZXJzb248L2xpdGVyYWw+OgorPHByb2dyYW1saXN0aW5n PgorKElTIHBlcnNvbikKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgb3IKKzxwcm9ncmFtbGlzdGlu Zz4KKyg6cGVyc29uKQorPC9wcm9ncmFtbGlzdGluZz4KKyAgICAoRnJvbSBub3cgb24sIHdlIHdp bGwganVzdCB1c2UgdGhlIGNvbG9uIHN5bnRheCwgZm9yIHNpbXBsaWNpdHkuICBCdXQgaXQKKyAg ICBoZWxwcyB0byByZWFkIGl0IGFzIDxxdW90ZT5pczwvcXVvdGU+IGZvciB1bmRlcnN0YW5kaW5n LikgIFRoZSBuZXh0CisgICAgZXhhbXBsZSB3b3VsZCBtYXRjaCBhIHZlcnRleCB3aXRoIHRoZSBs YWJlbCA8bGl0ZXJhbD5wZXJzb248L2xpdGVyYWw+CisgICAgY29ubmVjdGVkIHRvIGEgdmVydGV4 IHdpdGggdGhlIGxhYmVsIDxsaXRlcmFsPmFjY291bnQ8L2xpdGVyYWw+IGNvbm5lY3RlZAorICAg IGJ5IGFuIGVkZ2Ugd2l0aCB0aGUgbGFiZWwgPGxpdGVyYWw+aGFzPC9saXRlcmFsPi4KKzxwcm9n cmFtbGlzdGluZz4KKyg6cGVyc29uKS1bOmhhc10tPig6YWNjb3VudCkKKzwvcHJvZ3JhbWxpc3Rp bmc+CisgICAgTXVsdGlwbGUgbGFiZWxzIGNhbiBhbHNvIGJlIG1hdGNoZWQsIHVzaW5nIDxxdW90 ZT5vcjwvcXVvdGU+IHNlbWFudGljczoKKzxwcm9ncmFtbGlzdGluZz4KKyg6cGVyc29uKS1bOmhh c10tPig6YWNjb3VudHxjcmVkaXRjYXJkKQorPC9wcm9ncmFtbGlzdGluZz4KKyAgIDwvcGFyYT4K KworICAgPHBhcmE+CisgICAgUmVjYWxsIHRoYXQgZWRnZXMgYXJlIGRpcmVjdGVkLiAgVGhlIG90 aGVyIGRpcmVjdGlvbiBpcyBhbHNvIHBvc3NpYmxlIGluIGEKKyAgICBwYXRoIHBhdHRlcm4sIGZv ciBleGFtcGxlOgorPHByb2dyYW1saXN0aW5nPgorKDphY2NvdW50KSZsdDstWzpoYXNdLSg6cGVy c29uKQorPC9wcm9ncmFtbGlzdGluZz4KKyAgICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIG1hdGNo IGJvdGggZGlyZWN0aW9uczoKKzxwcm9ncmFtbGlzdGluZz4KKyg6cGVyc29uKS1bOmlzX2ZyaWVu ZF9vZl0tKDpwZXJzb24pCis8L3Byb2dyYW1saXN0aW5nPgorICAgIFRoaXMgaGFzIGEgbWVhbmlu ZyBvZiA8cXVvdGU+b3I8L3F1b3RlPjogQW4gZWRnZSBpbiBlaXRoZXIgZGlyZWN0aW9uIHdvdWxk CisgICAgbWF0Y2guCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIEluIG1hbnkgY2FzZXMs IHRoZSBlZGdlIHBhdHRlcm5zIGRvbid0IG5lZWQgYSBmaWxsZXIuICAoQWxsIHRoZSBmaWx0ZXJp bmcKKyAgICB0aGVuIGhhcHBlbnMgb24gdGhlIHZlcnRpY2VzLikgIEZvciB0aGVzZSBjYXNlcywg YW4gYWJicmV2aWF0ZWQgZWRnZQorICAgIHBhdHRlcm4gc3ludGF4IGlzIGF2YWlsYWJsZSB0aGF0 IG9taXRzIHRoZSBicmFja2V0cywgZm9yIGV4YW1wbGU6Cis8cHJvZ3JhbWxpc3Rpbmc+CisoOnBl cnNvbiktPig6YWNjb3VudCkKKyg6YWNvdW50KSZsdDstKDpwZXJzb24pCisoOnBlcnNvbiktKDpw ZXJzb24pCis8L3Byb2dyYW1saXN0aW5nPgorICAgIEFzIGlzIG9mdGVuIHRoZSBjYXNlLCBhYmJy ZXZpYXRlZCBzeW50YXggY2FuIG1ha2UgZXhwcmVzc2lvbnMgbW9yZSBjb21wYWN0CisgICAgYnV0 IGFsc28gc29tZXRpbWVzIGhhcmRlciB0byB1bmRlcnN0YW5kLgorICAgPC9wYXJhPgorCisgICA8 cGFyYT4KKyAgICBGdXJ0aGVybW9yZSwgaXQgaXMgcG9zc2libGUgdG8gZGVmaW5lIGdyYXBoIHBh dHRlcm4gdmFyaWFibGVzIGluIHRoZSBwYXRoCisgICAgcGF0dGVybiBleHByZXNzaW9ucy4gIFRo ZXNlIGFyZSBib3VuZCB0byB0aGUgbWF0Y2hlZCBlbGVtZW50cyBhbmQgY2FuIGJlCisgICAgdXNl ZCB0byByZWZlciB0byB0aGUgcHJvcGVydHkgdmFsdWVzIGZyb20gdGhvc2UgZWxlbWVudHMuICBU aGUgbW9zdAorICAgIGltcG9ydGFudCB1c2UgaXMgdG8gdXNlIHRoZW0gaW4gdGhlIDxsaXRlcmFs PkNPTFVNTlM8L2xpdGVyYWw+IGNsYXVzZSB0bworICAgIGRlZmluZSB0aGUgdGFidWxhciByZXN1 bHQgb2YgdGhlIDxsaXRlcmFsPkdSQVBIX1RBQkxFPC9saXRlcmFsPiBjbGF1c2UuCisgICAgRm9y IGV4YW1wbGUgKGFzc3VtaW5nIGFwcHJvcHJpYXRlIGRlZmluaXRpb25zIG9mIHRoZSBwcm9wZXJ0 eSBncmFwaCBhcworICAgIHdlbGwgYXMgdGhlIHVuZGVybHlpbmcgdGFibGVzKToKKzxwcm9ncmFt bGlzdGluZz4KK0dSQVBIX1RBQkxFIChteWdyYXBoIE1BVENIIChwOnBlcnNvbiktW2g6aGFzXS0+ KGE6YWNjb3VudCkKKyAgICAgICAgICAgICBDT0xVTU5TIChwLm5hbWUgQVMgcGVyc29uX25hbWUs IGguc2luY2UgQVMgaGFzX2FjY291bnRfc2luY2UsIGEubnVtIEFTIGFjY291bnRfbnVtYmVyKQor PC9wcm9ncmFtbGlzdGluZz4KKyAgICA8bGl0ZXJhbD5XSEVSRTwvbGl0ZXJhbD4gY2xhdXNlcyBj YW4gYmUgdXNlZCBpbnNpZGUgZWxlbWVudCBwYXR0ZXJucyB0bworICAgIGZpbHRlciBtYXRjaGVz OgorPHByb2dyYW1saXN0aW5nPgorKDpwZXJzb24pLVs6aGFzXS0+KGE6YWNjb3VudCBXSEVSRSBh LnR5cGUgPSAnc2F2aW5ncycpCis8L3Byb2dyYW1saXN0aW5nPgorICAgPC9wYXJhPgorCisgICA8 IS0tIFRPRE86IG11bHRpcGxlIHBhdGggcGF0dGVybnMgaW4gYSBncmFwaCBwYXR0ZXJuIChjb21t YS1zZXBhcmF0ZWQpIC0tPgorCisgICA8IS0tIFRPRE86IHF1YW50aWZpZXJzIC0tPgorCisgIDwv c2VjdDI+CisgPC9zZWN0MT4KKwogPC9jaGFwdGVyPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZi9hbGxmaWxlcy5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbGxmaWxlcy5zZ21sCmluZGV4 IGY1YmU2Mzg4NjcuLmVmYmJmMjgzYzQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWxs ZmlsZXMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVzLnNnbWwKQEAgLTI3LDYg KzI3LDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2FibGUgc2dtbCBzb3VyY2UgZmlsZXMgaW4gdGhp cyBkaXJlY3RvcnkuCiA8IUVOVElUWSBhbHRlck9wZXJhdG9yRmFtaWx5IFNZU1RFTSAiYWx0ZXJf b3BmYW1pbHkuc2dtbCI+CiA8IUVOVElUWSBhbHRlclBvbGljeSAgICAgICAgU1lTVEVNICJhbHRl cl9wb2xpY3kuc2dtbCI+CiA8IUVOVElUWSBhbHRlclByb2NlZHVyZSAgICAgU1lTVEVNICJhbHRl cl9wcm9jZWR1cmUuc2dtbCI+Cis8IUVOVElUWSBhbHRlclByb3BlcnR5R3JhcGggU1lTVEVNICJh bHRlcl9wcm9wZXJ0eV9ncmFwaC5zZ21sIj4KIDwhRU5USVRZIGFsdGVyUHVibGljYXRpb24gICBT WVNURU0gImFsdGVyX3B1YmxpY2F0aW9uLnNnbWwiPgogPCFFTlRJVFkgYWx0ZXJSb2xlICAgICAg ICAgIFNZU1RFTSAiYWx0ZXJfcm9sZS5zZ21sIj4KIDwhRU5USVRZIGFsdGVyUm91dGluZSAgICAg ICBTWVNURU0gImFsdGVyX3JvdXRpbmUuc2dtbCI+CkBAIC03OSw2ICs4MCw3IEBAIENvbXBsZXRl IGxpc3Qgb2YgdXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LgogPCFF TlRJVFkgY3JlYXRlT3BlcmF0b3JGYW1pbHkgU1lTVEVNICJjcmVhdGVfb3BmYW1pbHkuc2dtbCI+ CiA8IUVOVElUWSBjcmVhdGVQb2xpY3kgICAgICAgU1lTVEVNICJjcmVhdGVfcG9saWN5LnNnbWwi PgogPCFFTlRJVFkgY3JlYXRlUHJvY2VkdXJlICAgIFNZU1RFTSAiY3JlYXRlX3Byb2NlZHVyZS5z Z21sIj4KKzwhRU5USVRZIGNyZWF0ZVByb3BlcnR5R3JhcGggU1lTVEVNICJjcmVhdGVfcHJvcGVy dHlfZ3JhcGguc2dtbCI+CiA8IUVOVElUWSBjcmVhdGVQdWJsaWNhdGlvbiAgU1lTVEVNICJjcmVh dGVfcHVibGljYXRpb24uc2dtbCI+CiA8IUVOVElUWSBjcmVhdGVSb2xlICAgICAgICAgU1lTVEVN ICJjcmVhdGVfcm9sZS5zZ21sIj4KIDwhRU5USVRZIGNyZWF0ZVJ1bGUgICAgICAgICBTWVNURU0g ImNyZWF0ZV9ydWxlLnNnbWwiPgpAQCAtMTI3LDYgKzEyOSw3IEBAIENvbXBsZXRlIGxpc3Qgb2Yg dXNhYmxlIHNnbWwgc291cmNlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgZHJv cE93bmVkICAgICAgICAgIFNZU1RFTSAiZHJvcF9vd25lZC5zZ21sIj4KIDwhRU5USVRZIGRyb3BQ b2xpY3kgICAgICAgICBTWVNURU0gImRyb3BfcG9saWN5LnNnbWwiPgogPCFFTlRJVFkgZHJvcFBy b2NlZHVyZSAgICAgIFNZU1RFTSAiZHJvcF9wcm9jZWR1cmUuc2dtbCI+Cis8IUVOVElUWSBkcm9w UHJvcGVydHlHcmFwaCAgU1lTVEVNICJkcm9wX3Byb3BlcnR5X2dyYXBoLnNnbWwiPgogPCFFTlRJ VFkgZHJvcFB1YmxpY2F0aW9uICAgIFNZU1RFTSAiZHJvcF9wdWJsaWNhdGlvbi5zZ21sIj4KIDwh RU5USVRZIGRyb3BSb2xlICAgICAgICAgICBTWVNURU0gImRyb3Bfcm9sZS5zZ21sIj4KIDwhRU5U SVRZIGRyb3BSb3V0aW5lICAgICAgICBTWVNURU0gImRyb3Bfcm91dGluZS5zZ21sIj4KZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfZXh0ZW5zaW9uLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL2FsdGVyX2V4dGVuc2lvbi5zZ21sCmluZGV4IGM4MTljN2JiNGUuLjYwMjE4ZmNkMDEg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfZXh0ZW5zaW9uLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9leHRlbnNpb24uc2dtbApAQCAtNDYsNiArNDYsNyBAQCBB TFRFUiBFWFRFTlNJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxh Y2VhYmxlPiBEUk9QIDxyZXBsYWNlYQogICBPUEVSQVRPUiBGQU1JTFkgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm9iamVjdF9uYW1lPC9yZXBsYWNlYWJsZT4gVVNJTkcgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X21ldGhvZDwvcmVwbGFjZWFibGU+IHwKICAgWyBQ Uk9DRURVUkFMIF0gTEFOR1VBR0UgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9iamVj dF9uYW1lPC9yZXBsYWNlYWJsZT4gfAogICBQUk9DRURVUkUgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnByb2NlZHVyZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIFsgWyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+YXJnbW9kZTwvcmVwbGFjZWFibGU+IF0gWyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+YXJnbmFtZTwvcmVwbGFjZWFibGU+IF0gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmFyZ3R5cGU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0gKSBdIHwK KyAgUFJPUEVSVFkgR1JBUEggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9iamVjdF9u YW1lPC9yZXBsYWNlYWJsZT4gfAogICBST1VUSU5FIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yb3V0aW5lX25hbWU8L3JlcGxhY2VhYmxlPiBbICggWyBbIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5hcmdtb2RlPC9yZXBsYWNlYWJsZT4gXSBbIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5hcmduYW1lPC9yZXBsYWNlYWJsZT4gXSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+YXJndHlwZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXSApIF0gfAogICBTQ0hF TUEgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9iamVjdF9uYW1lPC9yZXBsYWNlYWJs ZT4gfAogICBTRVFVRU5DRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b2JqZWN0X25h bWU8L3JlcGxhY2VhYmxlPiB8CkBAIC0xNzksNyArMTgwLDcgQEAgQUxURVIgRVhURU5TSU9OIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gRFJPUCA8cmVw bGFjZWEKICAgICAgICBUaGUgbmFtZSBvZiBhbiBvYmplY3QgdG8gYmUgYWRkZWQgdG8gb3IgcmVt b3ZlZCBmcm9tIHRoZSBleHRlbnNpb24uCiAgICAgICAgTmFtZXMgb2YgdGFibGVzLAogICAgICAg IGFnZ3JlZ2F0ZXMsIGRvbWFpbnMsIGZvcmVpZ24gdGFibGVzLCBmdW5jdGlvbnMsIG9wZXJhdG9y cywKLSAgICAgICBvcGVyYXRvciBjbGFzc2VzLCBvcGVyYXRvciBmYW1pbGllcywgcHJvY2VkdXJl cywgcm91dGluZXMsIHNlcXVlbmNlcywgdGV4dCBzZWFyY2ggb2JqZWN0cywKKyAgICAgICBvcGVy YXRvciBjbGFzc2VzLCBvcGVyYXRvciBmYW1pbGllcywgcHJvY2VkdXJlcywgcHJvcGVydHkgZ3Jh cGhzLCByb3V0aW5lcywgc2VxdWVuY2VzLCB0ZXh0IHNlYXJjaCBvYmplY3RzLAogICAgICAgIHR5 cGVzLCBhbmQgdmlld3MgY2FuIGJlIHNjaGVtYS1xdWFsaWZpZWQuCiAgICAgICA8L3BhcmE+CiAg ICAgIDwvbGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3Byb3Bl cnR5X2dyYXBoLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3Byb3BlcnR5X2dyYXBoLnNn bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNjA0YzUxODAxMQotLS0g L2Rldi9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHJvcGVydHlfZ3JhcGguc2dt bApAQCAtMCwwICsxLDI5OSBAQAorPCEtLQorZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wcm9wZXJ0 eV9ncmFwaC5zZ21sCitQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KKy0tPgorCis8cmVmZW50cnkg aWQ9InNxbC1hbHRlci1wcm9wZXJ0eS1ncmFwaCI+CisgPGluZGV4dGVybSB6b25lPSJzcWwtYWx0 ZXItcHJvcGVydHktZ3JhcGgiPgorICA8cHJpbWFyeT5BTFRFUiBQUk9QRVJUWSBHUkFQSDwvcHJp bWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgorICA8cmVmZW50cnl0aXRsZT5BTFRF UiBQUk9QRVJUWSBHUkFQSDwvcmVmZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51bT43PC9tYW52b2xu dW0+CisgIDxyZWZtaXNjaW5mbz5TUUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRzPC9yZWZtaXNjaW5m bz4KKyA8L3JlZm1ldGE+CisKKyA8cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+QUxURVIgUFJPUEVS VFkgR1JBUEg8L3JlZm5hbWU+CisgIDxyZWZwdXJwb3NlPmNoYW5nZSB0aGUgZGVmaW5pdGlvbiBv ZiBhbiBTUUwtcHJvcGVydHkgZ3JhcGg8L3JlZnB1cnBvc2U+CisgPC9yZWZuYW1lZGl2PgorCisg PHJlZnN5bm9wc2lzZGl2PgorPHN5bm9wc2lzPgorQUxURVIgUFJPUEVSVFkgR1JBUEggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBBREQKKyAgICBbIHtW RVJURVh8Tk9ERX0gVEFCTEVTICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZlcnRl eF90YWJsZV9kZWZpbml0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0KKyAgICBbIHtFREdF fFJFTEFUSU9OU0hJUH0gVEFCTEVTICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVk Z2VfdGFibGVfZGVmaW5pdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdCisKK0FMVEVSIFBS T1BFUlRZIEdSQVBIIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNl YWJsZT4gRFJPUAorICAgIHtWRVJURVh8Tk9ERX0gVEFCTEVTICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnZlcnRleF90YWJsZV9hbGlhczwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBb IENBU0NBREUgfCBSRVNUUklDVCBdCisKK0FMVEVSIFBST1BFUlRZIEdSQVBIIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gRFJPUAorICAgIHtFREdFfFJF TEFUSU9OU0hJUH0gVEFCTEVTICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVkZ2Vf dGFibGVfYWxpYXM8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgWyBDQVNDQURFIHwgUkVTVFJJQ1Qg XQorCitBTFRFUiBQUk9QRVJUWSBHUkFQSCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bmFtZTwvcmVwbGFjZWFibGU+IEFMVEVSCisgICAge1ZFUlRFWHxOT0RFfEVER0V8UkVMQVRJT05T SElQfSBUQUJMRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZWxlbWVudF90YWJsZV9h bGlhczwvcmVwbGFjZWFibGU+CisgICAgeyBBREQgTEFCRUwgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmxhYmVsX25hbWU8L3JlcGxhY2VhYmxlPiBbIE5PIFBST1BFUlRJRVMgfCBQUk9Q RVJUSUVTIEFMTCBDT0xVTU5TIHwgUFJPUEVSVElFUyAoIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBbIEFTIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5wcm9wZXJ0eV9uYW1lPC9yZXBsYWNlYWJsZT4gXSB9IFssIC4uLl0gKSBd IH0gWyAuLi4gXQorCitBTFRFUiBQUk9QRVJUWSBHUkFQSCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IEFMVEVSCisgICAge1ZFUlRFWHxOT0RFfEVER0V8 UkVMQVRJT05TSElQfSBUQUJMRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZWxlbWVu dF90YWJsZV9hbGlhczwvcmVwbGFjZWFibGU+CisgICAgRFJPUCBMQUJFTCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bGFiZWxfbmFtZTwvcmVwbGFjZWFibGU+IFsgQ0FTQ0FERSB8IFJF U1RSSUNUIF0KKworQUxURVIgUFJPUEVSVFkgR1JBUEggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBBTFRFUgorICAgIHtWRVJURVh8Tk9ERXxFREdFfFJF TEFUSU9OU0hJUH0gVEFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVsZW1lbnRf dGFibGVfYWxpYXM8L3JlcGxhY2VhYmxlPgorICAgIEFMVEVSIExBQkVMIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5sYWJlbF9uYW1lPC9yZXBsYWNlYWJsZT4gQUREIFBST1BFUlRJRVMg KCB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJs ZT4gWyBBUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHJvcGVydHlfbmFtZTwvcmVw bGFjZWFibGU+IF0gfSBbLCAuLi5dICkKKworQUxURVIgUFJPUEVSVFkgR1JBUEggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBBTFRFUgorICAgIHtWRVJU RVh8Tk9ERXxFREdFfFJFTEFUSU9OU0hJUH0gVEFCTEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmVsZW1lbnRfdGFibGVfYWxpYXM8L3JlcGxhY2VhYmxlPgorICAgIEFMVEVSIExBQkVM IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5sYWJlbF9uYW1lPC9yZXBsYWNlYWJsZT4g RFJPUCBQUk9QRVJUSUVTICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnByb3BlcnR5 X25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgWyBDQVNDQURFIHwgUkVTVFJJQ1QgXQorCitB TFRFUiBQUk9QRVJUWSBHUkFQSCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwv cmVwbGFjZWFibGU+IE9XTkVSIFRPIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5l d19vd25lcjwvcmVwbGFjZWFibGU+IHwgQ1VSUkVOVF9VU0VSIHwgU0VTU0lPTl9VU0VSIH0KK0FM VEVSIFBST1BFUlRZIEdSQVBIIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9y ZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdf bmFtZTwvcmVwbGFjZWFibGU+CitBTFRFUiBQUk9QRVJUWSBHUkFQSCBbIElGIEVYSVNUUyBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gU0VUIFNDSEVN QSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X3NjaGVtYTwvcmVwbGFjZWFibGU+ Cis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRs ZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5BTFRFUiBQUk9Q RVJUWSBHUkFQSDwvY29tbWFuZD4gY2hhbmdlcyB0aGUgZGVmaW5pdGlvbiBvZiBhbgorICAgZXhp c3RpbmcgcHJvcGVydHkgZ3JhcGguICBUaGVyZSBhcmUgc2V2ZXJhbCBzdWJmb3JtczoKKworICAg PHZhcmlhYmxlbGlzdD4KKyAgICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT48bGl0ZXJhbD5B REQge1ZFUlRFWHxOT0RFfEVER0V8UkVMQVRJT05TSElQfSBUQUJMRVM8L2xpdGVyYWw+PC90ZXJt PgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGlzIGZvcm0gYWRkcyBu ZXcgdmVydGV4IG9yIGVkZ2UgdGFibGVzLCB1c2luZyB0aGUgc2FtZSBzeW50YXggYXMKKyAgICAg ICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlLXByb3BlcnR5LWdyYXBoIj48Y29tbWFuZD5DUkVB VEUgUFJPUEVSVFkKKyAgICAgICBHUkFQSDwvY29tbWFuZD48L2xpbms+LgorICAgICAgPC9wYXJh PgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgPHZhcmxpc3Rl bnRyeT4KKyAgICAgPHRlcm0+PGxpdGVyYWw+RFJPUCB7VkVSVEVYfE5PREV8RURHRXxSRUxBVElP TlNISVB9IFRBQkxFUzwvbGl0ZXJhbD48L3Rlcm0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxw YXJhPgorICAgICAgIFRoaXMgZm9ybSByZW1vdmVzIGEgdmVydGV4IG9yIGVkZ2UgdGFibGUgZnJv bSB0aGUgcHJvcGVydHkgZ3JhcGguCisgICAgICAgKE9ubHkgdGhlIGFzc29jaWF0aW9uIG9mIHRo ZSB0YWJsZSB3aXRoIHRoZSBncmFwaCByZW1vdmVkLiAgVGhlIHRhYmxlCisgICAgICAgaXRzZWxm IGlzIG5vdCBkcm9wcGVkLikKKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8 L3Zhcmxpc3RlbnRyeT4KKworICAgIDx2YXJsaXN0ZW50cnk+CisgICAgIDx0ZXJtPjxsaXRlcmFs PkFMVEVSIHtWRVJURVh8Tk9ERXxFREdFfFJFTEFUSU9OU0hJUH0gVEFCTEUgLi4uIEFERCBMQUJF TDwvbGl0ZXJhbD48L3Rlcm0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAg IFRoaXMgZm9ybSBhZGRzIGEgbmV3IGxhYmVsIHRvIGFuIGV4aXN0aW5nIHZlcnRleCBvciBlZGdl IHRhYmxlLCB1c2luZworICAgICAgIHRoZSBzYW1lIHN5bnRheCBhcyA8bGluaworICAgICAgIGxp bmtlbmQ9InNxbC1jcmVhdGUtcHJvcGVydHktZ3JhcGgiPjxjb21tYW5kPkNSRUFURSBQUk9QRVJU WQorICAgICAgIEdSQVBIPC9jb21tYW5kPjwvbGluaz4uCisgICAgICA8L3BhcmE+CisgICAgIDwv bGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICA8dmFybGlzdGVudHJ5PgorICAg ICA8dGVybT48bGl0ZXJhbD5BTFRFUiB7VkVSVEVYfE5PREV8RURHRXxSRUxBVElPTlNISVB9IFRB QkxFIC4uLiBEUk9QIExBQkVMPC9saXRlcmFsPjwvdGVybT4KKyAgICAgPGxpc3RpdGVtPgorICAg ICAgPHBhcmE+CisgICAgICAgVGhpcyBmb3JtIHJlbW92ZXMgYSBuZXcgbGFiZWwgZnJvbSBhbiBl eGlzdGluZyB2ZXJ0ZXggb3IgZWRnZSB0YWJsZS4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0 aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgIDx2YXJsaXN0ZW50cnk+CisgICAgIDx0 ZXJtPjxsaXRlcmFsPkFMVEVSIHtWRVJURVh8Tk9ERXxFREdFfFJFTEFUSU9OU0hJUH0gVEFCTEUg Li4uIEFMVEVSIExBQkVMIC4uLiBBREQgUFJPUEVSVElFUzwvbGl0ZXJhbD48L3Rlcm0+CisgICAg IDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoaXMgZm9ybSBhZGRzIG5ldyBwcm9w ZXJ0aWVzIHRvIGFuIGV4aXN0aW5nIGxhYmVsIG9uIGFuIGV4aXN0aW5nCisgICAgICAgdmVydGV4 IG9yIGVkZ2UgdGFibGUuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92 YXJsaXN0ZW50cnk+CisKKyAgICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT48bGl0ZXJhbD5B TFRFUiB7VkVSVEVYfE5PREV8RURHRXxSRUxBVElPTlNISVB9IFRBQkxFIC4uLiBBTFRFUiBMQUJF TCAuLi4gRFJPUCBQUk9QRVJUSUVTPC9saXRlcmFsPjwvdGVybT4KKyAgICAgPGxpc3RpdGVtPgor ICAgICAgPHBhcmE+CisgICAgICAgVGhpcyBmb3JtIHJlbW92ZXMgcHJvcGVydGllcyBmcm9tIGFu IGV4aXN0aW5nIGxhYmVsIG9uIGFuIGV4aXN0aW5nCisgICAgICAgdmVydGV4IG9yIGVkZ2UgdGFi bGUuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+ CisKKyAgICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT48bGl0ZXJhbD5PV05FUjwvbGl0ZXJh bD48L3Rlcm0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoaXMgZm9y bSBjaGFuZ2VzIHRoZSBvd25lciBvZiB0aGUgcHJvcGVydHkgZ3JhcGggdG8gdGhlIHNwZWNpZmll ZCB1c2VyLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVu dHJ5PgorCisgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgPHRlcm0+PGxpdGVyYWw+UkVOQU1FPC9s aXRlcmFsPjwvdGVybT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgVGhp cyBmb3JtIGNoYW5nZXMgdGhlIG5hbWUgb2YgYSBwcm9wZXJ0eSBncmFwaC4KKyAgICAgIDwvcGFy YT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgIDx2YXJsaXN0 ZW50cnk+CisgICAgIDx0ZXJtPjxsaXRlcmFsPlNFVCBTQ0hFTUE8L2xpdGVyYWw+PC90ZXJtPgor ICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGlzIGZvcm0gbW92ZXMgdGhl IHByb3BlcnR5IGdyYXBoIGludG8gYW5vdGhlciBzY2hlbWEuCisgICAgICA8L3BhcmE+CisgICAg IDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisgICA8L3ZhcmlhYmxlbGlzdD4KKyAg PC9wYXJhPgorCisgIDxwYXJhPgorICAgWW91IG11c3Qgb3duIHRoZSBwcm9wZXJ0eSBncmFwaCB0 byB1c2UgPGNvbW1hbmQ+QUxURVIgUFJPUEVSVFkKKyAgIEdSQVBIPC9jb21tYW5kPi4gIFRvIGNo YW5nZSBhIHByb3BlcnR5IGdyYXBoJ3Mgc2NoZW1hLCB5b3UgbXVzdCBhbHNvIGhhdmUKKyAgIDxs aXRlcmFsPkNSRUFURTwvbGl0ZXJhbD4gcHJpdmlsZWdlIG9uIHRoZSBuZXcgc2NoZW1hLiAgVG8g YWx0ZXIgdGhlIG93bmVyLAorICAgeW91IG11c3QgYmUgYWJsZSB0byA8bGl0ZXJhbD5TRVQgUk9M RTwvbGl0ZXJhbD4gdG8gdGhlIG5ldyBvd25pbmcgcm9sZSwgYW5kCisgICB0aGF0IHJvbGUgbXVz dCBoYXZlIDxsaXRlcmFsPkNSRUFURTwvbGl0ZXJhbD4gcHJpdmlsZWdlIG9uIHRoZSBwcm9wZXJ0 eQorICAgZ3JhcGgncyBzY2hlbWEuICAoVGhlc2UgcmVzdHJpY3Rpb25zIGVuZm9yY2UgdGhhdCBh bHRlcmluZyB0aGUgb3duZXIKKyAgIGRvZXNuJ3QgZG8gYW55dGhpbmcgeW91IGNvdWxkbid0IGRv IGJ5IGRyb3BwaW5nIGFuZCByZWNyZWF0aW5nIHRoZSBwcm9wZXJ0eQorICAgZ3JhcGguICBIb3dl dmVyLCBhIHN1cGVydXNlciBjYW4gYWx0ZXIgb3duZXJzaGlwIG9mIGFueSBwcm9wZXJ0eSBncmFw aAorICAgYW55d2F5LikKKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+Cisg IDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4KKworICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxp c3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwv cmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBU aGUgbmFtZSAob3B0aW9uYWxseSBzY2hlbWEtcXVhbGlmaWVkKSBvZiBhIHByb3BlcnR5IGdyYXBo IHRvIGJlIGFsdGVyZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJs aXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+SUYgRVhJ U1RTPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAg RG8gbm90IHRocm93IGFuIGVycm9yIGlmIHRoZSBwcm9wZXJ0eSBncmFwaCBkb2VzIG5vdCBleGlz dC4gIEEgbm90aWNlIGlzCisgICAgICBpc3N1ZWQgaW4gdGhpcyBjYXNlLgorICAgICA8L3BhcmE+ CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5 PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52ZXJ0ZXhfdGFibGVf ZGVmaW5pdGlvbjwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5lZGdlX3RhYmxlX2RlZmluaXRpb248L3JlcGxhY2VhYmxlPjwvdGVy bT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgU2VlIDxsaW5rIGxpbmtlbmQ9 InNxbC1jcmVhdGUtcHJvcGVydHktZ3JhcGgiPjxjb21tYW5kPkNSRUFURSBQUk9QRVJUWQorICAg ICAgR1JBUEg8L2NvbW1hbmQ+PC9saW5rPi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+ CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmVydGV4X3RhYmxlX2FsaWFzPC9yZXBsYWNlYWJs ZT48L3Rlcm0+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVkZ2Vf dGFibGVfYWxpYXM8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxw YXJhPgorICAgICAgVGhlIGFsaWFzIG9mIGFuIGV4aXN0aW5nIHZlcnRleCBvciBlZGdlIHRhYmxl IHRvIG9wZXJhdGUgb24uICAoTm90ZSB0aGF0CisgICAgICB0aGUgYWxpYXMgaXMgcG90ZW50aWFs bHkgZGlmZmVyZW50IGZyb20gdGhlIG5hbWUgb2YgdGhlIHVuZGVybHlpbmcKKyAgICAgIHRhYmxl LCBpZiB0aGUgdmVydGV4IG9yIGVkZ2UgdGFibGUgd2FzIGNyZWF0ZWQgd2l0aCA8bGl0ZXJhbD5B UworICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFsaWFzPC9yZXBsYWNlYWJs ZT48L2xpdGVyYWw+LikKKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bGFiZWxfbmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDx0ZXJt PjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wcm9wZXJ0eV9uYW1lPC9yZXBsYWNlYWJs ZT48L3Rlcm0+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJl c3Npb248L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgor ICAgICAgU2VlIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGUtcHJvcGVydHktZ3JhcGgiPjxjb21t YW5kPkNSRUFURSBQUk9QRVJUWQorICAgICAgR1JBUEg8L2NvbW1hbmQ+PC9saW5rPi4KKyAgICAg PC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxp c3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X293 bmVyPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAg ICAgIFRoZSB1c2VyIG5hbWUgb2YgdGhlIG5ldyBvd25lciBvZiB0aGUgcHJvcGVydHkgZ3JhcGgu CisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAg IDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm5ld19uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFy YT4KKyAgICAgIFRoZSBuZXcgbmFtZSBmb3IgdGhlIHByb3BlcnR5IGdyYXBoLgorICAgICA8L3Bh cmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVu dHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdfc2NoZW1h PC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAg IFRoZSBuZXcgc2NoZW1hIGZvciB0aGUgcHJvcGVydHkgZ3JhcGguCisgICAgIDwvcGFyYT4KKyAg ICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisgIDwvdmFyaWFibGVsaXN0PgorIDwv cmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Ob3RlczwvdGl0bGU+CisKKyAgPHBh cmE+CisgICBUaGUgY29uc2lzdGVuY3kgY2hlY2tzIG9uIGEgcHJvcGVydHkgZ3JhcGggZGVzY3Jp YmVkIGF0IDx4cmVmCisgICBsaW5rZW5kPSJzcWwtY3JlYXRlLXByb3BlcnR5LWdyYXBoLW5vdGVz Ii8+IG11c3QgYmUgbWFpbnRhaW5lZCBieQorICAgPGNvbW1hbmQ+QUxURVIgUFJPUEVSVFkgR1JB UEg8L2NvbW1hbmQ+IG9wZXJhdGlvbnMuICBJbiBzb21lIGNhc2VzLCBpdAorICAgbWlnaHQgYmUg bmVjZXNzYXJ5IHRvIG1ha2UgbXVsdGlwbGUgYWx0ZXJhdGlvbnMgaW4gYSBzaW5nbGUgY29tbWFu ZCB0bworICAgc2F0aXNmeSB0aGUgY2hlY2tzLgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKwor IDxyZWZzZWN0MT4KKyAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKworICA8cGFyYT4KKzxwcm9n cmFtbGlzdGluZz4KK0FMVEVSIFBST1BFUlRZIEdSQVBIIGcxIEFERCBWRVJURVggVEFCTEVTICh2 Mik7CisKK0FMVEVSIFBST1BFUlRZIEdSQVBIIGcxIEFMVEVSIFZFUlRFWCBUQUJMRSB2MSBEUk9Q IExBQkVMIGZvbzsKKworQUxURVIgUFJPUEVSVFkgR1JBUEggZzEgUkVOQU1FIFRPIGcyOworPC9w cm9ncmFtbGlzdGluZz48L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRp dGxlPkNvbXBhdGliaWxpdHk8L3RpdGxlPgorCisgIDxwYXJhPgorICAgPGNvbW1hbmQ+Q1JFQVRF IFBST1BFUlRZIEdSQVBIPC9jb21tYW5kPiBjb25mb3JtcyB0byBJU08vSUVDIDkwNzUtMTYKKyAg IChTUUwvUEdRKS4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0 aXRsZT5TZWUgQWxzbzwvdGl0bGU+CisKKyAgPHNpbXBsZWxpc3QgdHlwZT0iaW5saW5lIj4KKyAg IDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZS1wcm9wZXJ0eS1ncmFwaCIvPjwvbWVt YmVyPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtZHJvcC1wcm9wZXJ0eS1ncmFwaCIv PjwvbWVtYmVyPgorICA8L3NpbXBsZWxpc3Q+CisgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NvbW1lbnQuc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvY29tbWVudC5zZ21sCmluZGV4IDViNDNjNTZiMTMuLjdiMjUxNDc2ZTIgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY29t bWVudC5zZ21sCkBAIC00Nyw2ICs0Nyw3IEBAIENPTU1FTlQgT04KICAgUE9MSUNZIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wb2xpY3lfbmFtZTwvcmVwbGFjZWFibGU+IE9OIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gfAogICBb IFBST0NFRFVSQUwgXSBMQU5HVUFHRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b2Jq ZWN0X25hbWU8L3JlcGxhY2VhYmxlPiB8CiAgIFBST0NFRFVSRSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cHJvY2VkdXJlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggWyBbIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hcmdtb2RlPC9yZXBsYWNlYWJsZT4gXSBbIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hcmduYW1lPC9yZXBsYWNlYWJsZT4gXSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+YXJndHlwZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXSApIF0g fAorICBQUk9QRVJUWSBHUkFQSCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b2JqZWN0 X25hbWU8L3JlcGxhY2VhYmxlPgogICBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+b2JqZWN0X25hbWU8L3JlcGxhY2VhYmxlPiB8CiAgIFJPTEUgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm9iamVjdF9uYW1lPC9yZXBsYWNlYWJsZT4gfAogICBST1VUSU5F IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb3V0aW5lX25hbWU8L3JlcGxhY2VhYmxl PiBbICggWyBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hcmdtb2RlPC9yZXBsYWNl YWJsZT4gXSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hcmduYW1lPC9yZXBsYWNl YWJsZT4gXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YXJndHlwZTwvcmVwbGFjZWFi bGU+IFssIC4uLl0gXSApIF0gfApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf cHJvcGVydHlfZ3JhcGguc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3Byb3BlcnR5X2dy YXBoLnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZjg4ZDExOTRj YgotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3Byb3BlcnR5X2dy YXBoLnNnbWwKQEAgLTAsMCArMSwzMTAgQEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3Byb3BlcnR5X2dyYXBoLnNnbWwKK1Bvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgorLS0+CisKKzxy ZWZlbnRyeSBpZD0ic3FsLWNyZWF0ZS1wcm9wZXJ0eS1ncmFwaCI+CisgPGluZGV4dGVybSB6b25l PSJzcWwtY3JlYXRlLXByb3BlcnR5LWdyYXBoIj4KKyAgPHByaW1hcnk+Q1JFQVRFIFBST1BFUlRZ IEdSQVBIPC9wcmltYXJ5PgorIDwvaW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRy eXRpdGxlPkNSRUFURSBQUk9QRVJUWSBHUkFQSDwvcmVmZW50cnl0aXRsZT4KKyAgPG1hbnZvbG51 bT43PC9tYW52b2xudW0+CisgIDxyZWZtaXNjaW5mbz5TUUwgLSBMYW5ndWFnZSBTdGF0ZW1lbnRz PC9yZWZtaXNjaW5mbz4KKyA8L3JlZm1ldGE+CisKKyA8cmVmbmFtZWRpdj4KKyAgPHJlZm5hbWU+ Q1JFQVRFIFBST1BFUlRZIEdSQVBIPC9yZWZuYW1lPgorICA8cmVmcHVycG9zZT5kZWZpbmUgYW4g U1FMLXByb3BlcnR5IGdyYXBoPC9yZWZwdXJwb3NlPgorIDwvcmVmbmFtZWRpdj4KKworIDxyZWZz eW5vcHNpc2Rpdj4KKzxzeW5vcHNpcz4KK0NSRUFURSBbIFRFTVAgfCBURU1QT1JBUlkgXSBQUk9Q RVJUWSBHUkFQSCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFi bGU+CisgICAgWyB7VkVSVEVYfE5PREV9IFRBQkxFUyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj52ZXJ0ZXhfdGFibGVfZGVmaW5pdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBd CisgICAgWyB7RURHRXxSRUxBVElPTlNISVB9IFRBQkxFUyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5lZGdlX3RhYmxlX2RlZmluaXRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkg XQorCis8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52ZXJ0ZXhf dGFibGVfZGVmaW5pdGlvbjwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorCisgICAgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZlcnRleF90YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4g WyBBUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YWxpYXM8L3JlcGxhY2VhYmxlPiBd IFsgS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBs YWNlYWJsZT4gWywgLi4uXSApIF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZWxl bWVudF90YWJsZV9sYWJlbF9hbmRfcHJvcGVydGllczwvcmVwbGFjZWFibGU+IF0KKworPHBocmFz ZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVkZ2VfdGFibGVfZGVmaW5pdGlv bjwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorCisgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmVkZ2VfdGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgQVMgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmFsaWFzPC9yZXBsYWNlYWJsZT4gXSBbIEtFWSAoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0g KSBdCisgICAgICAgIFNPVVJDRSBbIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBSRUZFUkVOQ0VTIF0gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNvdXJjZV90YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBb LCAuLi5dICkgXQorICAgICAgICBERVNUSU5BVElPTiBbIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBSRUZFUkVO Q0VTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRlc3RfdGFibGU8L3JlcGxhY2Vh YmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBs YWNlYWJsZT4gWywgLi4uXSApIF0KKyAgICAgICAgWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+ZWxlbWVudF90YWJsZV9sYWJlbF9hbmRfcHJvcGVydGllczwvcmVwbGFjZWFibGU+IF0K KworPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVsZW1lbnRfdGFi bGVfbGFiZWxfYW5kX3Byb3BlcnRpZXM8L3JlcGxhY2VhYmxlPiBpcyBlaXRoZXI6PC9waHJhc2U+ CisKKyAgICBOTyBQUk9QRVJUSUVTIHwgUFJPUEVSVElFUyBBTEwgQ09MVU1OUyB8IFBST1BFUlRJ RVMgKCB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNl YWJsZT4gWyBBUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHJvcGVydHlfbmFtZTwv cmVwbGFjZWFibGU+IF0gfSBbLCAuLi5dICkKKworPHBocmFzZT5vcjo8L3BocmFzZT4KKworICAg eyB7IExBQkVMIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5sYWJlbF9uYW1lPC9yZXBs YWNlYWJsZT4gfCBERUZBVUxUIExBQkVMIH0gWyBOTyBQUk9QRVJUSUVTIHwgUFJPUEVSVElFUyBB TEwgQ09MVU1OUyB8IFBST1BFUlRJRVMgKCB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gWyBBUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cHJvcGVydHlfbmFtZTwvcmVwbGFjZWFibGU+IF0gfSBbLCAuLi5dICkgXSB9IFsuLi5d Cis8L3N5bm9wc2lzPgorPC9yZWZzeW5vcHNpc2Rpdj4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxl PkRlc2NyaXB0aW9uPC90aXRsZT4KKworICA8cGFyYT4KKyAgIDxjb21tYW5kPkNSRUFURSBQUk9Q RVJUWSBHUkFQSDwvY29tbWFuZD4gZGVmaW5lcyBhIHByb3BlcnR5IGdyYXBoLiAgQQorICAgcHJv cGVydHkgZ3JhcGggY29uc2lzdHMgb2YgdmVydGljZXMgYW5kIGVkZ2VzLCB0b2dldGhlciBjYWxs ZWQgZWxlbWVudHMsCisgICBlYWNoIHdpdGggYXNzb2NpYXRlZCBsYWJlbHMgYW5kIHByb3BlcnRp ZXMsIGFuZCBjYW4gYmUgcXVlcmllZCB1c2luZyB0aGUKKyAgIDxsaXRlcmFsPkdSQVBIX1RBQkxF PC9saXRlcmFsPiBjbGF1c2Ugb2YgPHhyZWYgbGlua2VuZD0ic3FsLXNlbGVjdCIvPiB3aXRoCisg ICBhIHNwZWNpYWwgcGF0aCBtYXRjaGluZyBzeW50YXguICBUaGUgZGF0YSBpbiB0aGUgZ3JhcGgg aXMgc3RvcmVkIGluIHJlZ3VsYXIKKyAgIHRhYmxlcyAob3Igdmlld3MsIGZvcmVpZ24gdGFibGVz LCBldGMuKS4gIEVhY2ggdmVydGV4IG9yIGVkZ2UgY29ycmVzcG9uZHMKKyAgIHRvIGEgdGFibGUu ICBUaGUgcHJvcGVydHkgZ3JhcGggZGVmaW5pdGlvbiBsaW5rcyB0aGVzZSB0YWJsZXMgdG9nZXRo ZXIgaW50bworICAgYSBncmFwaCBzdHJ1Y3R1cmUgdGhhdCBjYW4gYmUgcXVlcmllZCB1c2luZyBn cmFwaCBxdWVyeSB0ZWNobmlxdWVzLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICA8Y29tbWFu ZD5DUkVBVEUgUFJPUEVSVFkgR1JBUEg8L2NvbW1hbmQ+IGRvZXMgbm90IHBoeXNpY2FsbHkgbWF0 ZXJpYWxpemUgYQorICAgZ3JhcGguICBJdCBpcyB0aHVzIHNpbWlsYXIgdG8gPGNvbW1hbmQ+Q1JF QVRFIFZJRVc8L2NvbW1hbmQ+IGluIHRoYXQgaXQKKyAgIHJlY29yZHMgYSBzdHJ1Y3R1cmUgdGhh dCBpcyB1c2VkIG9ubHkgd2hlbiB0aGUgZGVmaW5lZCBvYmplY3QgaXMgcXVlcmllZC4KKyAgPC9w YXJhPgorCisgIDxwYXJhPgorICAgSWYgYSBzY2hlbWEgbmFtZSBpcyBnaXZlbiAoZm9yIGV4YW1w bGUsIDxsaXRlcmFsPkNSRUFURSBQUk9QRVJUWSBHUkFQSAorICAgbXlzY2hlbWEubXlncmFwaCAu Li48L2xpdGVyYWw+KSB0aGVuIHRoZSBwcm9wZXJ0eSBncmFwaCBpcyBjcmVhdGVkIGluIHRoZQor ICAgc3BlY2lmaWVkIHNjaGVtYS4gIE90aGVyd2lzZSBpdCBpcyBjcmVhdGVkIGluIHRoZSBjdXJy ZW50IHNjaGVtYS4KKyAgIFRlbXBvcmFyeSBwcm9wZXJ0eSBncmFwaHMgZXhpc3QgaW4gYSBzcGVj aWFsIHNjaGVtYSwgc28gYSBzY2hlbWEgbmFtZQorICAgY2Fubm90IGJlIGdpdmVuIHdoZW4gY3Jl YXRpbmcgYSB0ZW1wb3JhcnkgcHJvcGVydHkgZ3JhcGguICBQcm9wZXJ0eSBncmFwaHMKKyAgIHNo YXJlIGEgbmFtZXNwYWNlIHdpdGggdGFibGVzIGFuZCBvdGhlciByZWxhdGlvbiB0eXBlcywgc28g dGhlIG5hbWUgb2YgdGhlCisgICBwcm9wZXJ0eSBncmFwaCBtdXN0IGJlIGRpc3RpbmN0IGZyb20g dGhlIG5hbWUgb2YgYW55IG90aGVyIHJlbGF0aW9uICh0YWJsZSwKKyAgIHNlcXVlbmNlLCBpbmRl eCwgdmlldywgbWF0ZXJpYWxpemVkIHZpZXcsIG9yIGZvcmVpZ24gdGFibGUpIGluIHRoZSBzYW1l CisgICBzY2hlbWEuCisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgorICA8 dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0 ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3Jl cGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhl IG5hbWUgKG9wdGlvbmFsbHkgc2NoZW1hLXF1YWxpZmllZCkgb2YgdGhlIG5ldyBwcm9wZXJ0eSBn cmFwaC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4K KworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5WRVJURVg8L2xpdGVyYWw+ LzxsaXRlcmFsPk5PREU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDx0ZXJtPjxsaXRlcmFsPkVER0U8 L2xpdGVyYWw+LzxsaXRlcmFsPlJFTEFUSU9OU0hJUDwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZXNlIGtleXdvcmRzIGFyZSBzeW5vbnltcywg cmVzcGVjdGl2ZWx5LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlz dGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj52ZXJ0ZXhfdGFibGVfbmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAg IDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbmFtZSBvZiBhIHRhYmxlIHRoYXQg d2lsbCBjb250YWluIHZlcnRpY2VzIGluIHRoZSBuZXcgcHJvcGVydHkKKyAgICAgIGdyYXBoLgor ICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8 dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5l ZGdlX3RhYmxlX25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAg IDxwYXJhPgorICAgICAgVGhlIG5hbWUgb2YgYSB0YWJsZSB0aGF0IHdpbGwgY29udGFpbiBlZGdl cyBpbiB0aGUgbmV3IHByb3BlcnR5IGdyYXBoLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRl bT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hbGlhczwvcmVwbGFjZWFibGU+PC90ZXJtPgor ICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBBIHVuaXF1ZSBpZGVudGlmaWVyIGZv ciB0aGUgdmVydGV4IG9yIGVkZ2UgdGFibGUuICBUaGlzIGRlZmF1bHRzIHRvIHRoZQorICAgICAg bmFtZSBvZiB0aGUgdGFibGUuICBBbGlhc2VzIG11c3QgYmUgdW5pcXVlIGluIGEgcHJvcGVydHkg Z3JhcGgKKyAgICAgIGRlZmluaXRpb24gKGFjcm9zcyBhbGwgdmVydGV4IHRhYmxlIGFuZCBlZGdl IHRhYmxlIGRlZmluaXRpb25zKS4KKyAgICAgIChUaGVyZWZvcmUsIGlmIGEgdGFibGUgaXMgdXNl ZCBtb3JlIHRoYW4gb25jZSBhcyBhIHZlcnRleCBvciBlZGdlIHRhYmxlLAorICAgICAgdGhlbiBh biBleHBsaWNpdCBhbGlhcyBtdXN0IGJlIHNwZWNpZmllZCBmb3IgYXQgbGVhc3Qgb25lIG9mIHRo ZW0gdG8KKyAgICAgIGRpc3Rpbmd1aXNoIHRoZW0uKQorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJt PjxsaXRlcmFsPktFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFt ZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVt PgorICAgICA8cGFyYT4KKyAgICAgIEEgc2V0IG9mIGNvbHVtbnMgdGhhdCB1bmlxdWVseSBpZGVu dGlmaWVzIGEgcm93IGluIHRoZSB2ZXJ0ZXggb3IgZWRnZQorICAgICAgdGFibGUuICBEZWZhdWx0 cyB0byB0aGUgcHJpbWFyeSBrZXkuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAg PC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNvdXJjZV90YWJsZTwvcmVwbGFjZWFibGU+PC90ZXJtPgor ICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kZXN0X3RhYmxlPC9yZXBs YWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSB2 ZXJ0ZXggdGFibGVzIHRoYXQgdGhlIGVkZ2UgdGFibGUgaXMgbGlua2VkIHRvLiAgVGhlc2UgcmVm ZXIgdG8gdGhlCisgICAgICBhbGlhc2VzIG9mIGEgdGhlIHZlcnRleCB0YWJsZS4KKyAgICAgPC9w YXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3Rl bnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5LRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgUkVGRVJFTkNFUyAuLi4g KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxl PiBbLCAuLi5dICk8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+ CisgICAgICBUd28gc2V0cyBvZiBjb2x1bW5zIHRoYXQgY29ubmVjdCB0aGUgZWRnZSB0YWJsZSBh bmQgdGhlIHNvdXJjZSBvcgorICAgICAgZGVzdGluYXRpb24gdmVydGV4IHRhYmxlLCBsaWtlIGlu IGEgZm9yZWlnbi1rZXkgcmVsYXRpb25zaGlwLiAgSWYgYQorICAgICAgZm9yZWlnbi1rZXkgY29u c3RyYWludCBiZXR3ZWVuIHRoZSB0d28gdGFibGVzIGV4aXN0cywgaXQgaXMgdXNlZCBieQorICAg ICAgZGVmYXVsdC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3Rl bnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+ZWxlbWVudF90YWJsZV9sYWJlbF9hbmRfcHJvcGVydGllczwvcmVwbGFjZWFi bGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBEZWZpbmVzIHRo ZSBsYWJlbHMgYW5kIHByb3BlcnRpZXMgZm9yIHRoZSBlbGVtZW50ICh2ZXJ0ZXggb3IgZWRnZSkK KyAgICAgIHRhYmxlLiAgRWFjaCBlbGVtZW50IGhhcyBhdCBsZWFzdCBvbmUgbGFiZWwuICBCeSBk ZWZhdWx0LCB0aGUgbGFiZWwgaXMKKyAgICAgIHRoZSBzYW1lIGFzIHRoZSBlbGVtZW50IHRhYmxl IGFsaWFzLiAgVGhpcyBjYW4gYmUgc3BlY2lmaWVkIGV4cGxpY2l0bHkKKyAgICAgIGFzIDxsaXRl cmFsPkRFRkFVTFQgTEFCRUw8L2xpdGVyYWw+LiAgQWx0ZXJuYXRpdmVseSwgb25lIG9yIG1vcmUg ZnJlZWx5CisgICAgICBjaG9zZW4gbGFiZWwgbmFtZXMgY2FuIGJlIHNwZWNpZmllZC4gIChMYWJl bCBuYW1lcyBkbyBub3QgaGF2ZSB0byBiZQorICAgICAgdW5pcXVlIGFjcm9zcyBhIHByb3BlcnR5 IGdyYXBoLiAgSXQgaXMgY2FuIGJlIHVzZWZ1bCB0byBhc3NpZ24gdGhlIHNhbWUKKyAgICAgIGxh YmVsIHRvIGRpZmZlcmVudCBlbGVtZW50cy4pICBFYWNoIGxhYmVsIGhhcyBhIGxpc3QgKHBvc3Np Ymx5IGVtcHR5KSBvZgorICAgICAgcHJvcGVydGllcy4gIEJ5IGRlZmF1bHQsIGFsbCBjb2x1bW5z IG9mIGEgdGFibGUgYXJlIGF1dG9tYXRpY2FsbHkKKyAgICAgIGV4cG9zZWQgYXMgcHJvcGVydGll cy4gIFRoaXMgY2FuIGJlIHNwZWNpZmllZCBleHBsaWNpdGx5IGFzCisgICAgICA8bGl0ZXJhbD5Q Uk9QRVJUSUVTIEFMTCBDT0xVTU5TPC9saXRlcmFsPi4gIEFsdGVybmF0aXZlbHksIGEgbGlzdCBv ZgorICAgICAgZXhwcmVzc2lvbnMsIHdoaWNoIGNhbiByZWZlciB0byB0aGUgY29sdW1ucyBvZiB0 aGUgdW5kZXJseWluZyB0YWJsZSwgY2FuCisgICAgICBiZSBzcGVjaWZpZWQgYXMgcHJvcGVydGll cy4gIElmIHRoZSBleHByZXNzaW9ucyBhcmUgbm90IGEgcGxhaW4gY29sdW1uCisgICAgICByZWZl cmVuY2UsIHRoZW4gYW4gZXhwbGljaXQgcHJvcGVydHkgbmFtZSBtdXN0IGFsc28gYmUgc3BlY2lm aWVkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor ICA8L3ZhcmlhYmxlbGlzdD4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxIGlkPSJzcWwtY3Jl YXRlLXByb3BlcnR5LWdyYXBoLW5vdGVzIj4KKyAgPHRpdGxlPk5vdGVzPC90aXRsZT4KKworICA8 cGFyYT4KKyAgIFRoZSBmb2xsb3dpbmcgY29uc2lzdGVuY3kgY2hlY2tzIG11c3QgYmUgc2F0aXNm aWVkIGJ5IGEgcHJvcGVydHkgZ3JhcGggZGVmaW5pdGlvbjoKKworICAgPGl0ZW1pemVkbGlzdD4K KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgSW4gYSBwcm9wZXJ0eSBncmFwaCwg bGFiZWxzIHdpdGggdGhlIHNhbWUgbmFtZSBhcHBsaWVkIHRvIGRpZmZlcmVudAorICAgICAgcHJv cGVydHkgZ3JhcGggZWxlbWVudHMgbXVzdCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBwcm9wZXJ0 aWVzIGFuZAorICAgICAgdGhvc2UgcHJvcGVydGllcyBtdXN0IGhhdmUgdGhlIHNhbWUgbmFtZXMu ICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZworICAgICAgd291bGQgYmUgYWxsb3dlZDoKKzxw cm9ncmFtbGlzdGluZz4KK0NSRUFURSBQUk9QRVJUWSBHUkFQSCBnMQorICAgIFZFUlRFWCBUQUJM RVMgKAorICAgICAgICB2MSBMQUJFTCBmb28gUFJPUEVSVElFUyAoeCwgeSksCisgICAgICAgIHYy IExBQkVMIGZvbyBQUk9QRVJUSUVTICh4LCB5KQorICAgICkgLi4uCis8L3Byb2dyYW1saXN0aW5n PgorICAgICAgYnV0IHRoaXMgd291bGQgbm90OgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFBS T1BFUlRZIEdSQVBIIGcxCisgICAgVkVSVEVYIFRBQkxFUyAoCisgICAgICAgIHYxIExBQkVMIGZv byBQUk9QRVJUSUVTICh4LCB5KSwKKyAgICAgICAgdjIgTEFCRUwgZm9vIFBST1BFUlRJRVMgKHop CisgICAgKSAuLi4KKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisK KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgSW4gYSBwcm9wZXJ0eSBncmFwaCwg YWxsIHByb3BlcnRpZXMgd2l0aCB0aGUgc2FtZSBuYW1lIG11c3QgaGF2ZSB0aGUKKyAgICAgIHNh bWUgZGF0YSB0eXBlLCBpbmRlcGVuZGVudCBvZiB3aGljaCBsYWJlbCB0aGV5IGFyZSBvbi4gIEZv ciBleGFtcGxlLAorICAgICAgdGhpcyB3b3VsZCBiZSBhbGxvd2VkOgorPHByb2dyYW1saXN0aW5n PgorQ1JFQVRFIFRBQkxFIHYxIChhIGludCwgYiBpbnQpOworQ1JFQVRFIFRBQkxFIHYyIChhIGlu dCwgYiBpbnQpOworCitDUkVBVEUgUFJPUEVSVFkgR1JBUEggZzEKKyAgICBWRVJURVggVEFCTEVT ICgKKyAgICAgICAgdjEgTEFCRUwgZm9vIFBST1BFUlRJRVMgKGEsIGIpLAorICAgICAgICB2MiBM QUJFTCBiYXIgUFJPUEVSVElFUyAoYSwgYikKKyAgICApIC4uLgorPC9wcm9ncmFtbGlzdGluZz4K KyAgICAgIGJ1dCB0aGlzIHdvdWxkIG5vdDoKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBUQUJM RSB2MSAoYSBpbnQsIGIgaW50KTsKK0NSRUFURSBUQUJMRSB2MiAoYSBpbnQsIGIgdmFyY2hhcik7 CisKK0NSRUFURSBQUk9QRVJUWSBHUkFQSCBnMQorICAgIFZFUlRFWCBUQUJMRVMgKAorICAgICAg ICB2MSBMQUJFTCBmb28gUFJPUEVSVElFUyAoYSwgYiksCisgICAgICAgIHYyIExBQkVMIGJhciBQ Uk9QRVJUSUVTIChhLCBiKQorICAgICkgLi4uCis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKyAg ICA8L2xpc3RpdGVtPgorCisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIEZvciBl YWNoIHByb3BlcnR5IGdyYXBoIGVsZW1lbnQsIGFsbCBwcm9wZXJ0aWVzIHdpdGggdGhlIHNhbWUg bmFtZSBtdXN0CisgICAgICBoYXZlIHRoZSBzYW1lIGV4cHJlc3Npb24gZm9yIGVhY2ggbGFiZWwu ICBGb3IgZXhhbXBsZSwgdGhpcyB3b3VsZCBiZQorICAgICAgYWxsb3dlZDoKKzxwcm9ncmFtbGlz dGluZz4KK0NSRUFURSBQUk9QRVJUWSBHUkFQSCBnMQorICAgIFZFUlRFWCBUQUJMRVMgKAorICAg ICAgICB2MSBMQUJFTCBmb28gUFJPUEVSVElFUyAoeCBBUyBhICogMikgTEFCRUwgYmFyIFBST1BF UlRJRVMgKHggQVMgYSAqIDIpCisgICAgKSAuLi4KKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICBi dXQgdGhpcyB3b3VsZCBub3Q6Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgUFJPUEVSVFkgR1JB UEggZzEKKyAgICBWRVJURVggVEFCTEVTICgKKyAgICAgICAgdjEgTEFCRUwgZm9vIFBST1BFUlRJ RVMgKHggQVMgYSAqIDIpIExBQkVMIGJhciBQUk9QRVJUSUVTICh4IEFTIGEgKiAxMCkKKyAgICAp IC4uLgorPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKworICAgPC9p dGVtaXplZGxpc3Q+CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFByb3BlcnR5IGdyYXBocyBh cmUgcXVlcmllZCB1c2luZyB0aGUgPGxpdGVyYWw+R1JBUEhfVEFCTEU8L2xpdGVyYWw+IGNsYXVz ZQorICAgb2YgPHhyZWYgbGlua2VuZD0ic3FsLXNlbGVjdCIvPi4KKyAgPC9wYXJhPgorIDwvcmVm c2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKyAgPHBh cmE+Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgUFJPUEVSVFkgR1JBUEggZzEKKyAgICBWRVJU RVggVEFCTEVTICh2MSwgdjIsIHYzKQorICAgIEVER0UgVEFCTEVTIChlMSBTT1VSQ0UgdjEgREVT VElOQVRJT04gdjIsCisgICAgICAgICAgICAgICAgIGUyIFNPVVJDRSB2MSBERVNUSU5BVElPTiB2 Myk7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3Qx PgorICA8dGl0bGU+Q29tcGF0aWJpbGl0eTwvdGl0bGU+CisKKyAgPHBhcmE+CisgICA8Y29tbWFu ZD5DUkVBVEUgUFJPUEVSVFkgR1JBUEg8L2NvbW1hbmQ+IGNvbmZvcm1zIHRvIElTTy9JRUMgOTA3 NS0xNgorICAgKFNRTC9QR1EpLgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0 MT4KKyAgPHRpdGxlPlNlZSBBbHNvPC90aXRsZT4KKworICA8c2ltcGxlbGlzdCB0eXBlPSJpbmxp bmUiPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtYWx0ZXItcHJvcGVydHktZ3JhcGgi Lz48L21lbWJlcj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWRyb3AtcHJvcGVydHkt Z3JhcGgiLz48L21lbWJlcj4KKyAgPC9zaW1wbGVsaXN0PgorIDwvcmVmc2VjdDE+Cis8L3JlZmVu dHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3Byb3BlcnR5X2dyYXBoLnNn bWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2Ryb3BfcHJvcGVydHlfZ3JhcGguc2dtbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zMWNiNzdhMmFmCi0tLSAvZGV2L251bGwKKysr IGIvZG9jL3NyYy9zZ21sL3JlZi9kcm9wX3Byb3BlcnR5X2dyYXBoLnNnbWwKQEAgLTAsMCArMSwx MTEgQEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9yZWYvZHJvcF9wcm9wZXJ0eV9ncmFwaC5zZ21sCitQ b3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KKy0tPgorCis8cmVmZW50cnkgaWQ9InNxbC1kcm9wLXBy b3BlcnR5LWdyYXBoIj4KKyA8aW5kZXh0ZXJtIHpvbmU9InNxbC1kcm9wLXByb3BlcnR5LWdyYXBo Ij4KKyAgPHByaW1hcnk+RFJPUCBQUk9QRVJUWSBHUkFQSDwvcHJpbWFyeT4KKyA8L2luZGV4dGVy bT4KKworIDxyZWZtZXRhPgorICA8cmVmZW50cnl0aXRsZT5EUk9QIFBST1BFUlRZIEdSQVBIPC9y ZWZlbnRyeXRpdGxlPgorICA8bWFudm9sbnVtPjc8L21hbnZvbG51bT4KKyAgPHJlZm1pc2NpbmZv PlNRTCAtIExhbmd1YWdlIFN0YXRlbWVudHM8L3JlZm1pc2NpbmZvPgorIDwvcmVmbWV0YT4KKwor IDxyZWZuYW1lZGl2PgorICA8cmVmbmFtZT5EUk9QIFBST1BFUlRZIEdSQVBIPC9yZWZuYW1lPgor ICA8cmVmcHVycG9zZT5yZW1vdmUgYW4gU1FMLXByb3BlcnR5IGdyYXBoPC9yZWZwdXJwb3NlPgor IDwvcmVmbmFtZWRpdj4KKworIDxyZWZzeW5vcHNpc2Rpdj4KKzxzeW5vcHNpcz4KK0RST1AgUFJP UEVSVFkgR1JBUEggWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gWyBDQVNDQURFIHwgUkVTVFJJQ1QgXQorPC9zeW5v cHNpcz4KKyA8L3JlZnN5bm9wc2lzZGl2PgorCisgPHJlZnNlY3QxPgorICA8dGl0bGU+RGVzY3Jp cHRpb248L3RpdGxlPgorCisgIDxwYXJhPgorICAgPGNvbW1hbmQ+RFJPUCBQUk9QRVJUWSBHUkFQ SDwvY29tbWFuZD4gZHJvcHMgYW4gZXhpc3RpbmcgcHJvcGVydHkgZ3JhcGguCisgICBUbyBleGVj dXRlIHRoaXMgY29tbWFuZCB5b3UgbXVzdCBiZSB0aGUgb3duZXIgb2YgdGhlIHByb3BlcnR5IGdy YXBoLgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPlBh cmFtZXRlcnM8L3RpdGxlPgorCisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5Pgor ICAgIDx0ZXJtPjxsaXRlcmFsPklGIEVYSVNUUzwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgIERvIG5vdCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgcHJv cGVydHkgZ3JhcGggZG9lcyBub3QgZXhpc3QuICBBIG5vdGljZSBpcworICAgICAgaXNzdWVkIGlu IHRoaXMgY2FzZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3Rl bnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAg ICAgPHBhcmE+CisgICAgICBUaGUgbmFtZSAob3B0aW9uYWxseSBzY2hlbWEtcXVhbGlmaWVkKSBv ZiB0aGUgcHJvcGVydHkgZ3JhcGggdG8gcmVtb3ZlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJt PjxsaXRlcmFsPkNBU0NBREU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAg PHBhcmE+CisgICAgICBBdXRvbWF0aWNhbGx5IGRyb3Agb2JqZWN0cyB0aGF0IGRlcGVuZCBvbiB0 aGUgcHJvcGVydHkgZ3JhcGgsIGFuZCBpbgorICAgICAgdHVybiBhbGwgb2JqZWN0cyB0aGF0IGRl cGVuZCBvbiB0aG9zZSBvYmplY3RzIChzZWUgPHhyZWYKKyAgICAgIGxpbmtlbmQ9ImRkbC1kZXBl bmQiLz4pLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5 PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPlJFU1RSSUNUPC9saXRl cmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgUmVmdXNlIHRv IGRyb3AgdGhlIHByb3BlcnR5IGdyYXBoIGlmIGFueSBvYmplY3RzIGRlcGVuZCBvbiBpdC4gIFRo aXMgaXMKKyAgICAgIHRoZSBkZWZhdWx0LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4K KyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKyA8L3JlZnNlY3QxPgorCisg PHJlZnNlY3QxPgorICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorCisgIDxwYXJhPgorPHByb2dy YW1saXN0aW5nPgorRFJPUCBQUk9QRVJUWSBHUkFQSCBnMTsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9w YXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5Db21wYXRpYmlsaXR5 PC90aXRsZT4KKworICA8cGFyYT4KKyAgIDxjb21tYW5kPkRST1AgUFJPUEVSVFkgR1JBUEg8L2Nv bW1hbmQ+IGNvbmZvcm1zIHRvIElTTy9JRUMgOTA3NS0xNgorICAgKFNRTC9QR1EpLCBleGNlcHQg dGhhdCB0aGUgc3RhbmRhcmQgb25seSBhbGxvd3Mgb25lIHByb3BlcnR5IGdyYXBoIHRvIGJlCisg ICBkcm9wcGVkIHBlciBjb21tYW5kLCBhbmQgYXBhcnQgZnJvbSB0aGUgPGxpdGVyYWw+SUYgRVhJ U1RTPC9saXRlcmFsPgorICAgb3B0aW9uLCB3aGljaCBpcyBhIDxwcm9kdWN0bmFtZT5Qb3N0Z3Jl U1FMPC9wcm9kdWN0bmFtZT4gZXh0ZW5zaW9uLi4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisK KyA8cmVmc2VjdDE+CisgIDx0aXRsZT5TZWUgQWxzbzwvdGl0bGU+CisKKyAgPHNpbXBsZWxpc3Qg dHlwZT0iaW5saW5lIj4KKyAgIDxtZW1iZXI+PHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZS1wcm9w ZXJ0eS1ncmFwaCIvPjwvbWVtYmVyPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtYWx0 ZXItcHJvcGVydHktZ3JhcGgiLz48L21lbWJlcj4KKyAgPC9zaW1wbGVsaXN0PgorIDwvcmVmc2Vj dDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9ncmFudC5zZ21s IGIvZG9jL3NyYy9zZ21sL3JlZi9ncmFudC5zZ21sCmluZGV4IDk5OWY2NTdkNWMuLjExMzJjMTYw OGMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvZ3JhbnQuc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvcmVmL2dyYW50LnNnbWwKQEAgLTgyLDYgKzgyLDExIEBAIEdSQU5UIHsgeyBTRVQgfCBB TFRFUiBTWVNURU0gfSBbLCAuLi4gXSB8IEFMTCBbIFBSSVZJTEVHRVMgXSB9CiAgICAgVE8gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFi bGU+IFssIC4uLl0gWyBXSVRIIEdSQU5UIE9QVElPTiBdCiAgICAgWyBHUkFOVEVEIEJZIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxl PiBdCiAKK0dSQU5UIHsgU0VMRUNUIHwgQUxMIFsgUFJJVklMRUdFUyBdIH0KKyAgICBPTiBQUk9Q RVJUWSBHUkFQSCA8cmVwbGFjZWFibGU+Z3JhcGhfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0K KyAgICBUTyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm9sZV9zcGVjaWZpY2F0aW9u PC9yZXBsYWNlYWJsZT4gWywgLi4uXSBbIFdJVEggR1JBTlQgT1BUSU9OIF0KKyAgICBbIEdSQU5U RUQgQlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfc3BlY2lmaWNhdGlvbjwv cmVwbGFjZWFibGU+IF0KKwogR1JBTlQgeyB7IENSRUFURSB8IFVTQUdFIH0gWywgLi4uXSB8IEFM TCBbIFBSSVZJTEVHRVMgXSB9CiAgICAgT04gU0NIRU1BIDxyZXBsYWNlYWJsZT5zY2hlbWFfbmFt ZTwvcmVwbGFjZWFibGU+IFssIC4uLl0KICAgICBUTyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cm9sZV9zcGVjaWZpY2F0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBbIFdJVEggR1JB TlQgT1BUSU9OIF0KQEAgLTExOSw3ICsxMjQsNyBAQCBHUkFOVCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cm9sZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBUTyA8cmVwbGFjZQog ICAgdGhhdCBncmFudHMgcHJpdmlsZWdlcyBvbiBhIGRhdGFiYXNlIG9iamVjdCAodGFibGUsIGNv bHVtbiwgdmlldywKICAgIGZvcmVpZ24gdGFibGUsIHNlcXVlbmNlLCBkYXRhYmFzZSwgZm9yZWln bi1kYXRhIHdyYXBwZXIsIGZvcmVpZ24gc2VydmVyLAogICAgZnVuY3Rpb24sIHByb2NlZHVyZSwg cHJvY2VkdXJhbCBsYW5ndWFnZSwgbGFyZ2Ugb2JqZWN0LCBjb25maWd1cmF0aW9uCi0gICBwYXJh bWV0ZXIsIHNjaGVtYSwgdGFibGVzcGFjZSwgb3IgdHlwZSksIGFuZCBvbmUgdGhhdCBncmFudHMK KyAgIHBhcmFtZXRlciwgcHJvcGVydHkgZ3JhcGgsIHNjaGVtYSwgdGFibGVzcGFjZSwgb3IgdHlw ZSksIGFuZCBvbmUgdGhhdCBncmFudHMKICAgIG1lbWJlcnNoaXAgaW4gYSByb2xlLiAgVGhlc2Ug dmFyaWFudHMgYXJlIHNpbWlsYXIgaW4gbWFueSB3YXlzLCBidXQKICAgIHRoZXkgYXJlIGRpZmZl cmVudCBlbm91Z2ggdG8gYmUgZGVzY3JpYmVkIHNlcGFyYXRlbHkuCiAgIDwvcGFyYT4KZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv cHNxbC1yZWYuc2dtbAppbmRleCAzZmQ5OTU5ZWQxLi5mNmI3Y2NkNjQzIDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3Fs LXJlZi5zZ21sCkBAIC0xMjc4LDcgKzEyNzgsNyBAQCBTRUxFQ1QgJDEgXHBhcnNlIHN0bXQxCiAK ICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICA8cGFyYT4KLSAgICAgICAgRm9yIGVhY2ggcmVs YXRpb24gKHRhYmxlLCB2aWV3LCBtYXRlcmlhbGl6ZWQgdmlldywgaW5kZXgsIHNlcXVlbmNlLAor ICAgICAgICBGb3IgZWFjaCByZWxhdGlvbiAodGFibGUsIHZpZXcsIG1hdGVyaWFsaXplZCB2aWV3 LCBpbmRleCwgcHJvcGVydHkgZ3JhcGgsIHNlcXVlbmNlLAogICAgICAgICBvciBmb3JlaWduIHRh YmxlKQogICAgICAgICBvciBjb21wb3NpdGUgdHlwZSBtYXRjaGluZyB0aGUKICAgICAgICAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhdHRlcm48L3JlcGxhY2VhYmxlPiwgc2hvdyBh bGwKQEAgLTEzMTgsOSArMTMxOCw5IEBAIFNFTEVDVCAkMSBccGFyc2Ugc3RtdDEKICAgICAgICAg PHBhcmE+CiAgICAgICAgIElmIDxjb21tYW5kPlxkPC9jb21tYW5kPiBpcyB1c2VkIHdpdGhvdXQg YQogICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGF0dGVybjwvcmVwbGFj ZWFibGU+IGFyZ3VtZW50LCBpdCBpcwotICAgICAgICBlcXVpdmFsZW50IHRvIDxjb21tYW5kPlxk dHZtc0U8L2NvbW1hbmQ+IHdoaWNoIHdpbGwgc2hvdyBhIGxpc3Qgb2YKLSAgICAgICAgYWxsIHZp c2libGUgdGFibGVzLCB2aWV3cywgbWF0ZXJpYWxpemVkIHZpZXdzLCBzZXF1ZW5jZXMgYW5kCi0g ICAgICAgIGZvcmVpZ24gdGFibGVzLgorICAgICAgICBlcXVpdmFsZW50IHRvIDxjb21tYW5kPlxk dHZtc0VHPC9jb21tYW5kPiB3aGljaCB3aWxsIHNob3cgYSBsaXN0IG9mCisgICAgICAgIGFsbCB2 aXNpYmxlIHRhYmxlcywgdmlld3MsIG1hdGVyaWFsaXplZCB2aWV3cywgc2VxdWVuY2VzLAorICAg ICAgICBmb3JlaWduIHRhYmxlcywgYW5kIHByb3BlcnR5IGdyYXBocy4KICAgICAgICAgVGhpcyBp cyBwdXJlbHkgYSBjb252ZW5pZW5jZSBtZWFzdXJlLgogICAgICAgICA8L3BhcmE+CiAgICAgICAg IDwvbm90ZT4KQEAgLTE1ODgsNiArMTU4OCw3IEBAIFNFTEVDVCAkMSBccGFyc2Ugc3RtdDEKIAog ICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iYXBwLXBzcWwtbWV0YS1jb21tYW5kLWRlIj4KICAgICAg ICAgPHRlcm0+PGxpdGVyYWw+XGRFW1MrXSBbIDxsaW5rIGxpbmtlbmQ9ImFwcC1wc3FsLXBhdHRl cm5zIj48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGF0dGVybjwvcmVwbGFjZWFibGU+ PC9saW5rPiBdPC9saXRlcmFsPjwvdGVybT4KKyAgICAgICAgPHRlcm0+PGxpdGVyYWw+XGRHW1Mr XSBbIDxsaW5rIGxpbmtlbmQ9ImFwcC1wc3FsLXBhdHRlcm5zIj48cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cGF0dGVybjwvcmVwbGFjZWFibGU+PC9saW5rPiBdPC9saXRlcmFsPjwvdGVy bT4KICAgICAgICAgPHRlcm0+PGxpdGVyYWw+XGRpW1MrXSBbIDxsaW5rIGxpbmtlbmQ9ImFwcC1w c3FsLXBhdHRlcm5zIj48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGF0dGVybjwvcmVw bGFjZWFibGU+PC9saW5rPiBdPC9saXRlcmFsPjwvdGVybT4KICAgICAgICAgPHRlcm0+PGxpdGVy YWw+XGRtW1MrXSBbIDxsaW5rIGxpbmtlbmQ9ImFwcC1wc3FsLXBhdHRlcm5zIj48cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGF0dGVybjwvcmVwbGFjZWFibGU+PC9saW5rPiBdPC9saXRl cmFsPjwvdGVybT4KICAgICAgICAgPHRlcm0+PGxpdGVyYWw+XGRzW1MrXSBbIDxsaW5rIGxpbmtl bmQ9ImFwcC1wc3FsLXBhdHRlcm5zIj48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGF0 dGVybjwvcmVwbGFjZWFibGU+PC9saW5rPiBdPC9saXRlcmFsPjwvdGVybT4KQEAgLTE1OTYsMTAg KzE1OTcsMTAgQEAgU0VMRUNUICQxIFxwYXJzZSBzdG10MQogCiAgICAgICAgIDxsaXN0aXRlbT4K ICAgICAgICAgPHBhcmE+Ci0gICAgICAgIEluIHRoaXMgZ3JvdXAgb2YgY29tbWFuZHMsIHRoZSBs ZXR0ZXJzIDxsaXRlcmFsPkU8L2xpdGVyYWw+LAorICAgICAgICBJbiB0aGlzIGdyb3VwIG9mIGNv bW1hbmRzLCB0aGUgbGV0dGVycyA8bGl0ZXJhbD5FPC9saXRlcmFsPiwgPGxpdGVyYWw+RzwvbGl0 ZXJhbD4sCiAgICAgICAgIDxsaXRlcmFsPmk8L2xpdGVyYWw+LCA8bGl0ZXJhbD5tPC9saXRlcmFs PiwgPGxpdGVyYWw+czwvbGl0ZXJhbD4sCiAgICAgICAgIDxsaXRlcmFsPnQ8L2xpdGVyYWw+LCBh bmQgPGxpdGVyYWw+djwvbGl0ZXJhbD4KLSAgICAgICAgc3RhbmQgZm9yIGZvcmVpZ24gdGFibGUs IGluZGV4LCBtYXRlcmlhbGl6ZWQgdmlldywKKyAgICAgICAgc3RhbmQgZm9yIGZvcmVpZ24gdGFi bGUsIGluZGV4LCBwcm9wZXJ0eSBncmFwaCwgbWF0ZXJpYWxpemVkIHZpZXcsCiAgICAgICAgIHNl cXVlbmNlLCB0YWJsZSwgYW5kIHZpZXcsCiAgICAgICAgIHJlc3BlY3RpdmVseS4KICAgICAgICAg WW91IGNhbiBzcGVjaWZ5IGFueSBvciBhbGwgb2YKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9y ZWYvcmV2b2tlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3Jldm9rZS5zZ21sCmluZGV4IDhkZjQ5 MjI4MWEuLjk0OGFjNTM0NDQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcmV2b2tlLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZXZva2Uuc2dtbApAQCAtMTA0LDYgKzEwNCwxMyBA QCBSRVZPS0UgWyBHUkFOVCBPUFRJT04gRk9SIF0KICAgICBbIEdSQU5URUQgQlkgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvbGVfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IF0K ICAgICBbIENBU0NBREUgfCBSRVNUUklDVCBdCiAKK1JFVk9LRSBbIEdSQU5UIE9QVElPTiBGT1Ig XQorICAgIHsgU0VMRUNUIHwgQUxMIFsgUFJJVklMRUdFUyBdIH0KKyAgICBPTiBQUk9QRVJUWSBH UkFQSCA8cmVwbGFjZWFibGU+Z3JhcGhfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0KKyAgICBG Uk9NIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3Jl cGxhY2VhYmxlPiBbLCAuLi5dCisgICAgWyBHUkFOVEVEIEJZIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5yb2xlX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiBdCisgICAgWyBDQVND QURFIHwgUkVTVFJJQ1QgXQorCiBSRVZPS0UgWyBHUkFOVCBPUFRJT04gRk9SIF0KICAgICB7IHsg Q1JFQVRFIHwgVVNBR0UgfSBbLCAuLi5dIHwgQUxMIFsgUFJJVklMRUdFUyBdIH0KICAgICBPTiBT Q0hFTUEgPHJlcGxhY2VhYmxlPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXQpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9zZWN1cml0eV9sYWJlbC5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi9zZWN1cml0eV9sYWJlbC5zZ21sCmluZGV4IGU1ZTVmYjQ4M2UuLjliOTcwODVhM2Yg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvc2VjdXJpdHlfbGFiZWwuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL3NlY3VyaXR5X2xhYmVsLnNnbWwKQEAgLTM1LDYgKzM1LDcgQEAgU0VD VVJJVFkgTEFCRUwgWyBGT1IgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnByb3ZpZGVy PC9yZXBsYWNlYWJsZT4gXSBPTgogICBNQVRFUklBTElaRUQgVklFVyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+b2JqZWN0X25hbWU8L3JlcGxhY2VhYmxlPiB8CiAgIFsgUFJPQ0VEVVJB TCBdIExBTkdVQUdFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vYmplY3RfbmFtZTwv cmVwbGFjZWFibGU+IHwKICAgUFJPQ0VEVVJFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wcm9jZWR1cmVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCBbIFsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmFyZ21vZGU8L3JlcGxhY2VhYmxlPiBdIFsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmFyZ25hbWU8L3JlcGxhY2VhYmxlPiBdIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5hcmd0eXBlPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdICkgXSB8CisgIFBST1BF UlRZIEdSQVBIIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vYmplY3RfbmFtZTwvcmVw bGFjZWFibGU+CiAgIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5v YmplY3RfbmFtZTwvcmVwbGFjZWFibGU+IHwKICAgUk9MRSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+b2JqZWN0X25hbWU8L3JlcGxhY2VhYmxlPiB8CiAgIFJPVVRJTkUgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvdXRpbmVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCBbIFsg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFyZ21vZGU8L3JlcGxhY2VhYmxlPiBdIFsg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFyZ25hbWU8L3JlcGxhY2VhYmxlPiBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hcmd0eXBlPC9yZXBsYWNlYWJsZT4gWywgLi4u XSBdICkgXSB8CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3NlbGVjdC5zZ21sIGIvZG9j L3NyYy9zZ21sL3JlZi9zZWxlY3Quc2dtbAppbmRleCBkNzA4OWVhYzBiLi4xYzZlZTk5ODQxIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3NlbGVjdC5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9yZWYvc2VsZWN0LnNnbWwKQEAgLTU5LDYgKzU5LDcgQEAgU0VMRUNUIFsgQUxMIHwgRElTVElO Q1QgWyBPTiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBs YWMKICAgICBbIExBVEVSQUwgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZnVuY3Rp b25fbmFtZTwvcmVwbGFjZWFibGU+ICggWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ YXJndW1lbnQ8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0gKSBBUyAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5jb2x1bW5fZGVmaW5pdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKQog ICAgIFsgTEFURVJBTCBdIFJPV1MgRlJPTSggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmZ1bmN0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiAoIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmFyZ3VtZW50PC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdICkgWyBBUyAoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fZGVmaW5pdGlvbjwvcmVwbGFjZWFibGU+IFss IC4uLl0gKSBdIFssIC4uLl0gKQogICAgICAgICAgICAgICAgIFsgV0lUSCBPUkRJTkFMSVRZIF0g WyBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFsaWFzPC9yZXBsYWNlYWJs ZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fYWxpYXM8L3JlcGxh Y2VhYmxlPiBbLCAuLi5dICkgXSBdCisgICAgR1JBUEhfVEFCTEUgKCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+Z3JhcGhfbmFtZTwvcmVwbGFjZWFibGU+IE1BVENIIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5ncmFwaF9wYXR0ZXJuPC9yZXBsYWNlYWJsZT4gQ09MVU1OUyAo IHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxl PiBbIEFTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4g XSB9IFssIC4uLl0gKSApIFsgWyBBUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5h bGlhczwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29s dW1uX2FsaWFzPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0gXQogICAgIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5mcm9tX2l0ZW08L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+am9pbl90eXBlPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmZyb21faXRlbTwvcmVwbGFjZWFibGU+IHsgT04gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmpvaW5fY29uZGl0aW9uPC9yZXBsYWNlYWJsZT4gfCBVU0lORyAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qb2luX2NvbHVtbjwvcmVwbGFjZWFibGU+IFss IC4uLl0gKSBbIEFTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qb2luX3VzaW5nX2Fs aWFzPC9yZXBsYWNlYWJsZT4gXSB9CiAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmZyb21faXRlbTwvcmVwbGFjZWFibGU+IE5BVFVSQUwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmpvaW5fdHlwZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5mcm9tX2l0ZW08L3JlcGxhY2VhYmxlPgogICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5mcm9tX2l0ZW08L3JlcGxhY2VhYmxlPiBDUk9TUyBKT0lOIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5mcm9tX2l0ZW08L3JlcGxhY2VhYmxlPgpAQCAtNTg3LDYgKzU4OCw0 OCBAQCBUQUJMRSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVf bmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxp c3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PGxpdGVyYWw+R1JB UEhfVEFCTEUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Z3JhcGhfbmFtZTwvcmVw bGFjZWFibGU+IE1BVENIIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ncmFwaF9wYXR0 ZXJuPC9yZXBsYWNlYWJsZT4gQ09MVU1OUyAoIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBbIEFTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gXSB9IFssIC4uLl0gKSApPC9saXRlcmFsPjwvdGVy bT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBjbGF1c2Ug cHJvZHVjZXMgb3V0cHV0IGZyb20gbWF0Y2hpbmcgdGhlIHNwZWNpZnlpbmcgZ3JhcGggcGF0dGVy bgorICAgICAgICBhZ2FpbnN0IGEgcHJvcGVydHkgZ3JhcGguICBTZWUgPHhyZWYgbGlua2VuZD0i ZGRsLXByb3BlcnR5LWdyYXBocyIvPgorICAgICAgICBhbmQgPHhyZWYgbGlua2VuZD0icXVlcmll cy1ncmFwaCIvPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICA8L3BhcmE+CisKKyAgICAg ICA8cGFyYT4KKyAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmdyYXBoX25h bWU8L3JlcGxhY2VhYmxlPiBpcyB0aGUgbmFtZQorICAgICAgICAob3B0aW9uYWxseSBzY2hlbWEt cXVhbGlmaWVkKSBvZiBhbiBleGlzdGluZyBwcm9wZXJ0eSBncmFwaCAoZGVmaW5lZAorICAgICAg ICB3aXRoIDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGUtcHJvcGVydHktZ3JhcGgiLz4pLgorICAg ICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Z3JhcGhfcGF0dGVybjwvcmVwbGFjZWFibGU+IGlzIGEgZ3JhcGgKKyAgICAg ICAgcGF0dGVybiBpbiBhIHNwZWNpYWwgZ3JhcGggcGF0dGVybiBzdWJsYW5ndWFnZS4gIFNlZSA8 eHJlZgorICAgICAgICBsaW5rZW5kPSJxdWVyaWVzLWdyYXBoLXBhdHRlcm5zIi8+LgorICAgICAg IDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgPGxpdGVyYWw+Q09MVU1OUzwv bGl0ZXJhbD4gY2xhdXNlIGRlZmluZXMgdGhlIG91dHB1dCBjb2x1bW5zIG9mCisgICAgICAgIHRo ZSA8bGl0ZXJhbD5HUkFQSF9UQUJMRTwvbGl0ZXJhbD4gY2xhdXNlLiAgPHJlcGxhY2VhYmxlCisg ICAgICAgIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBpcyBhIHNj YWxhciBleHByZXNzaW9uCisgICAgICAgIHVzaW5nIHRoZSBncmFwaCBwYXR0ZXJuIHZhcmlhYmxl cyBkZWZpbmVkIGluIHRoZSA8cmVwbGFjZWFibGUKKyAgICAgICAgY2xhc3M9InBhcmFtZXRlciI+ Z3JhcGhfcGF0dGVybjwvcmVwbGFjZWFibGU+LiAgVGhlIG5hbWUgb2YgdGhlIG91dHB1dAorICAg ICAgICBjb2x1bW5zIGFyZSBzcGVjaWZpZWQgdXNpbmcgdGhlIDxsaXRlcmFsPkFTPC9saXRlcmFs PiBjbGF1c2VzLiAgSWYgdGhlCisgICAgICAgIGV4cHJlc3Npb25zIGFyZSBzaW1wbGUgcHJvcGVy dHkgcmVmZXJlbmNlcywgdGhlIHByb3BlcnR5IG5hbWVzIGFyZQorICAgICAgICB1c2VkIGFzIHRo ZSBvdXRwdXQgbmFtZXMsIG90aGVyd2lzZSBhbiBleHBsaWNpdCBuYW1lIG11c3QgYmUKKyAgICAg ICAgc3BlY2lmaWVkLgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBM aWtlIGZvciBvdGhlciA8bGl0ZXJhbD5GUk9NPC9saXRlcmFsPiBjbGF1c2UgaXRlbXMsIGEgdGFi bGUgYWxpYXMKKyAgICAgICAgbmFtZSBhbmQgY29sdW1uIGFsaWFzIG5hbWVzIG1heSBmb2xsb3cg dGhlIDxsaXRlcmFsPkdSQVBIX1RBQkxFCisgICAgICAgICguLi4pPC9saXRlcmFsPiBjbGF1c2Uu ICAoQSBjb2x1bW4gYWxpYXMgbGlzdCB3b3VsZCBiZSByZWR1bmRhbnQgd2l0aAorICAgICAgICB0 aGUgPGxpdGVyYWw+Q09MVU1OUzwvbGl0ZXJhbD4gY2xhdXNlLikKKyAgICAgICA8L3BhcmE+Cisg ICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8dmFybGlzdGVu dHJ5PgogICAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmpvaW5fdHlw ZTwvcmVwbGFjZWFibGU+PC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZmVyZW5jZS5zZ21sCmlu ZGV4IGZmODVhY2U4M2YuLjZkZTNhZmE3YjEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWZl cmVuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKQEAgLTU1LDYgKzU1 LDcgQEAKICAgICZhbHRlck9wZXJhdG9yRmFtaWx5OwogICAgJmFsdGVyUG9saWN5OwogICAgJmFs dGVyUHJvY2VkdXJlOworICAgJmFsdGVyUHJvcGVydHlHcmFwaDsKICAgICZhbHRlclB1YmxpY2F0 aW9uOwogICAgJmFsdGVyUm9sZTsKICAgICZhbHRlclJvdXRpbmU7CkBAIC0xMDcsNiArMTA4LDcg QEAKICAgICZjcmVhdGVPcGVyYXRvckZhbWlseTsKICAgICZjcmVhdGVQb2xpY3k7CiAgICAmY3Jl YXRlUHJvY2VkdXJlOworICAgJmNyZWF0ZVByb3BlcnR5R3JhcGg7CiAgICAmY3JlYXRlUHVibGlj YXRpb247CiAgICAmY3JlYXRlUm9sZTsKICAgICZjcmVhdGVSdWxlOwpAQCAtMTU1LDYgKzE1Nyw3 IEBACiAgICAmZHJvcE93bmVkOwogICAgJmRyb3BQb2xpY3k7CiAgICAmZHJvcFByb2NlZHVyZTsK KyAgICZkcm9wUHJvcGVydHlHcmFwaDsKICAgICZkcm9wUHVibGljYXRpb247CiAgICAmZHJvcFJv bGU7CiAgICAmZHJvcFJvdXRpbmU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2Fj bGNoay5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYwppbmRleCBhNDRjY2VlM2I2Li41 YzNmMDBiNzI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMKQEAgLTI5MCw2ICsyOTAsOSBAQCByZXN0cmlj dF9hbmRfY2hlY2tfZ3JhbnQoYm9vbCBpc19ncmFudCwgQWNsTW9kZSBhdmFpbF9nb3B0aW9ucywg Ym9vbCBhbGxfcHJpdnMsCiAJCWNhc2UgT0JKRUNUX1BBUkFNRVRFUl9BQ0w6CiAJCQl3aG9sZV9t YXNrID0gQUNMX0FMTF9SSUdIVFNfUEFSQU1FVEVSX0FDTDsKIAkJCWJyZWFrOworCQljYXNlIE9C SkVDVF9QUk9QR1JBUEg6CisJCQl3aG9sZV9tYXNrID0gQUNMX0FMTF9SSUdIVFNfUFJPUEdSQVBI OworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9i amVjdCB0eXBlOiAlZCIsIG9ianR5cGUpOwogCQkJLyogbm90IHJlYWNoZWQsIGJ1dCBrZWVwIGNv bXBpbGVyIHF1aWV0ICovCkBAIC01MzQsNiArNTM3LDEwIEBAIEV4ZWN1dGVHcmFudFN0bXQoR3Jh bnRTdG10ICpzdG10KQogCQkJYWxsX3ByaXZpbGVnZXMgPSBBQ0xfQUxMX1JJR0hUU19QQVJBTUVU RVJfQUNMOwogCQkJZXJyb3Jtc2cgPSBnZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdlIHR5 cGUgJXMgZm9yIHBhcmFtZXRlciIpOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1BST1BHUkFQ SDoKKwkJCWFsbF9wcml2aWxlZ2VzID0gQUNMX0FMTF9SSUdIVFNfUFJPUEdSQVBIOworCQkJZXJy b3Jtc2cgPSBnZXR0ZXh0X25vb3AoImludmFsaWQgcHJpdmlsZWdlIHR5cGUgJXMgZm9yIHByb3Bl cnR5IGdyYXBoIik7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJl Y29nbml6ZWQgR3JhbnRTdG10Lm9ianR5cGU6ICVkIiwKIAkJCQkgKGludCkgc3RtdC0+b2JqdHlw ZSk7CkBAIC02MDQsNiArNjExLDcgQEAgRXhlY0dyYW50U3RtdF9vaWRzKEludGVybmFsR3JhbnQg KmlzdG10KQogCXsKIAkJY2FzZSBPQkpFQ1RfVEFCTEU6CiAJCWNhc2UgT0JKRUNUX1NFUVVFTkNF OgorCQljYXNlIE9CSkVDVF9QUk9QR1JBUEg6CiAJCQlFeGVjR3JhbnRfUmVsYXRpb24oaXN0bXQp OwogCQkJYnJlYWs7CiAJCWNhc2UgT0JKRUNUX0RBVEFCQVNFOgpAQCAtNjc2LDYgKzY4NCw3IEBA IG9iamVjdE5hbWVzVG9PaWRzKE9iamVjdFR5cGUgb2JqdHlwZSwgTGlzdCAqb2JqbmFtZXMsIGJv b2wgaXNfZ3JhbnQpCiAJewogCQljYXNlIE9CSkVDVF9UQUJMRToKIAkJY2FzZSBPQkpFQ1RfU0VR VUVOQ0U6CisJCWNhc2UgT0JKRUNUX1BST1BHUkFQSDoKIAkJCWZvcmVhY2goY2VsbCwgb2JqbmFt ZXMpCiAJCQl7CiAJCQkJUmFuZ2VWYXIgICAqcmVsdmFyID0gKFJhbmdlVmFyICopIGxmaXJzdChj ZWxsKTsKQEAgLTg3Niw2ICs4ODUsMTAgQEAgb2JqZWN0c0luU2NoZW1hVG9PaWRzKE9iamVjdFR5 cGUgb2JqdHlwZSwgTGlzdCAqbnNwbmFtZXMpCiAJCQkJb2JqcyA9IGdldFJlbGF0aW9uc0luTmFt ZXNwYWNlKG5hbWVzcGFjZUlkLCBSRUxLSU5EX1NFUVVFTkNFKTsKIAkJCQlvYmplY3RzID0gbGlz dF9jb25jYXQob2JqZWN0cywgb2Jqcyk7CiAJCQkJYnJlYWs7CisJCQljYXNlIE9CSkVDVF9QUk9Q R1JBUEg6CisJCQkJb2JqcyA9IGdldFJlbGF0aW9uc0luTmFtZXNwYWNlKG5hbWVzcGFjZUlkLCBS RUxLSU5EX1BST1BHUkFQSCk7CisJCQkJb2JqZWN0cyA9IGxpc3RfY29uY2F0KG9iamVjdHMsIG9i anMpOworCQkJCWJyZWFrOwogCQkJY2FzZSBPQkpFQ1RfRlVOQ1RJT046CiAJCQljYXNlIE9CSkVD VF9QUk9DRURVUkU6CiAJCQljYXNlIE9CSkVDVF9ST1VUSU5FOgpAQCAtMTA3Nyw2ICsxMDkwLDEw IEBAIEV4ZWNBbHRlckRlZmF1bHRQcml2aWxlZ2VzU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIEFs dGVyRGVmYXVsdFByaXZpbGVnZXNTdG10ICpzCiAJCQlhbGxfcHJpdmlsZWdlcyA9IEFDTF9BTExf UklHSFRTX1NDSEVNQTsKIAkJCWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZp bGVnZSB0eXBlICVzIGZvciBzY2hlbWEiKTsKIAkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9QUk9Q R1JBUEg6CisJCQlhbGxfcHJpdmlsZWdlcyA9IEFDTF9BTExfUklHSFRTX1BST1BHUkFQSDsKKwkJ CWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJpbnZhbGlkIHByaXZpbGVnZSB0eXBlICVzIGZvciBw cm9wZXJ0eSBncmFwaCIpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAi dW5yZWNvZ25pemVkIEdyYW50U3RtdC5vYmp0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGFjdGlvbi0+ b2JqdHlwZSk7CkBAIC0yNzc3LDYgKzI3OTQsOSBAQCBhY2xjaGVja19lcnJvcihBY2xSZXN1bHQg YWNsZXJyLCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNhc2UgT0JKRUNUX1BST0NFRFVSRToK IAkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgicGVybWlzc2lvbiBkZW5pZWQgZm9yIHByb2NlZHVy ZSAlcyIpOwogCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgT0JKRUNUX1BST1BHUkFQSDoKKwkJCQkJ CW1zZyA9IGdldHRleHRfbm9vcCgicGVybWlzc2lvbiBkZW5pZWQgZm9yIHByb3BlcnR5IGdyYXBo ICVzIik7CisJCQkJCQlicmVhazsKIAkJCQkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT046CiAJCQkJ CQltc2cgPSBnZXR0ZXh0X25vb3AoInBlcm1pc3Npb24gZGVuaWVkIGZvciBwdWJsaWNhdGlvbiAl cyIpOwogCQkJCQkJYnJlYWs7CkBAIC0yOTAzLDYgKzI5MjMsOSBAQCBhY2xjaGVja19lcnJvcihB Y2xSZXN1bHQgYWNsZXJyLCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNhc2UgT0JKRUNUX1BS T0NFRFVSRToKIAkJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgibXVzdCBiZSBvd25lciBvZiBwcm9j ZWR1cmUgJXMiKTsKIAkJCQkJCWJyZWFrOworCQkJCQljYXNlIE9CSkVDVF9QUk9QR1JBUEg6CisJ CQkJCQltc2cgPSBnZXR0ZXh0X25vb3AoIm11c3QgYmUgb3duZXIgb2YgcHJvcGVydHkgZ3JhcGgg JXMiKTsKKwkJCQkJCWJyZWFrOwogCQkJCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTjoKIAkJCQkJ CW1zZyA9IGdldHRleHRfbm9vcCgibXVzdCBiZSBvd25lciBvZiBwdWJsaWNhdGlvbiAlcyIpOwog CQkJCQkJYnJlYWs7CkBAIC0zMDM5LDYgKzMwNjIsNyBAQCBwZ19hY2xtYXNrKE9iamVjdFR5cGUg b2JqdHlwZSwgT2lkIG9iamVjdF9vaWQsIEF0dHJOdW1iZXIgYXR0bnVtLCBPaWQgcm9sZWlkLAog CQkJCXBnX2F0dHJpYnV0ZV9hY2xtYXNrKG9iamVjdF9vaWQsIGF0dG51bSwgcm9sZWlkLCBtYXNr LCBob3cpOwogCQljYXNlIE9CSkVDVF9UQUJMRToKIAkJY2FzZSBPQkpFQ1RfU0VRVUVOQ0U6CisJ CWNhc2UgT0JKRUNUX1BST1BHUkFQSDoKIAkJCXJldHVybiBwZ19jbGFzc19hY2xtYXNrKG9iamVj dF9vaWQsIHJvbGVpZCwgbWFzaywgaG93KTsKIAkJY2FzZSBPQkpFQ1RfREFUQUJBU0U6CiAJCQly ZXR1cm4gb2JqZWN0X2FjbG1hc2soRGF0YWJhc2VSZWxhdGlvbklkLCBvYmplY3Rfb2lkLCByb2xl aWQsIG1hc2ssIGhvdyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVu Y3kuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCmluZGV4IDA0ODljYmFiY2Iu LmQ3MDcwZDYyYzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5j CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCkBAIC01MCw2ICs1MCwxMSBA QAogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFyYW1ldGVyX2FjbC5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfcG9saWN5LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9wZ19wcm9wZ3JhcGhfZWxlbWVudC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJv cGdyYXBoX2VsZW1lbnRfbGFiZWwuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb3BncmFwaF9s YWJlbC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvcGdyYXBoX2xhYmVsX3Byb3BlcnR5Lmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9wZ3JhcGhfcHJvcGVydHkuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlv bl9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oIgpA QCAtMTQ1Myw2ICsxNDU4LDExIEBAIGRvRGVsZXRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2Jq ZWN0LCBpbnQgZmxhZ3MpCiAJCWNhc2UgQWNjZXNzTWV0aG9kUmVsYXRpb25JZDoKIAkJY2FzZSBB Y2Nlc3NNZXRob2RPcGVyYXRvclJlbGF0aW9uSWQ6CiAJCWNhc2UgQWNjZXNzTWV0aG9kUHJvY2Vk dXJlUmVsYXRpb25JZDoKKwkJY2FzZSBQcm9wZ3JhcGhFbGVtZW50UmVsYXRpb25JZDoKKwkJY2Fz ZSBQcm9wZ3JhcGhFbGVtZW50TGFiZWxSZWxhdGlvbklkOgorCQljYXNlIFByb3BncmFwaExhYmVs UmVsYXRpb25JZDoKKwkJY2FzZSBQcm9wZ3JhcGhMYWJlbFByb3BlcnR5UmVsYXRpb25JZDoKKwkJ Y2FzZSBQcm9wZ3JhcGhQcm9wZXJ0eVJlbGF0aW9uSWQ6CiAJCWNhc2UgTmFtZXNwYWNlUmVsYXRp b25JZDoKIAkJY2FzZSBUU1BhcnNlclJlbGF0aW9uSWQ6CiAJCWNhc2UgVFNEaWN0aW9uYXJ5UmVs YXRpb25JZDoKQEAgLTIxNjMsNiArMjE3Myw3IEBAIGZpbmRfZXhwcl9yZWZlcmVuY2VzX3dhbGtl cihOb2RlICpub2RlLAogCQkJc3dpdGNoIChydGUtPnJ0ZWtpbmQpCiAJCQl7CiAJCQkJY2FzZSBS VEVfUkVMQVRJT046CisJCQkJY2FzZSBSVEVfR1JBUEhfVEFCTEU6CiAJCQkJCWFkZF9vYmplY3Rf YWRkcmVzcyhSZWxhdGlvblJlbGF0aW9uSWQsIHJ0ZS0+cmVsaWQsIDAsCiAJCQkJCQkJCQkgICBj b250ZXh0LT5hZGRycyk7CiAJCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEuc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1h dGlvbl9zY2hlbWEuc3FsCmluZGV4IGM0MTQ1MTMxY2UuLjNkYzhmMDUzOWYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbAorKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwKQEAgLTMwNDQsMyArMzA0NCwzNjcg QEAgQ1JFQVRFIFZJRVcgdXNlcl9tYXBwaW5ncyBBUwogICAgIEZST00gX3BnX3VzZXJfbWFwcGlu Z3M7CiAKIEdSQU5UIFNFTEVDVCBPTiB1c2VyX21hcHBpbmdzIFRPIFBVQkxJQzsKKworCistLSBT UUwvUEdRIHZpZXdzOyB0aGVzZSB1c2Ugc2VjdGlvbiBudW1iZXJzIGZyb20gcGFydCAxNiBvZiB0 aGUgc3RhbmRhcmQuCisKKy8qCisgKiAxNS4yCisgKiBQR19ERUZJTkVEX0xBQkVMX1NFVFMgdmll dworICovCisKKy0tIFRPRE8KKworCisvKgorICogMTUuMworICogUEdfREVGSU5FRF9MQUJFTF9T RVRfTEFCRUxTIHZpZXcKKyAqLworCistLSBUT0RPCisKKworLyoKKyAqIDE1LjQKKyAqIFBHX0VE R0VfREVGSU5FRF9MQUJFTF9TRVRTIHZpZXcKKyAqLworCistLSBUT0RPCisKKworLyoKKyAqIDE1 LjUKKyAqIFBHX0VER0VfVEFCTEVfQ09NUE9ORU5UUyB2aWV3CisgKi8KKworQ1JFQVRFIFZJRVcg cGdfZWRnZV90YWJsZV9jb21wb25lbnRzIEFTCisgICAgU0VMRUNUIENBU1QoY3VycmVudF9kYXRh YmFzZSgpIEFTIHNxbF9pZGVudGlmaWVyKSBBUyBwcm9wZXJ0eV9ncmFwaF9jYXRhbG9nLAorICAg ICAgICAgICBDQVNUKG5wZy5uc3BuYW1lIEFTIHNxbF9pZGVudGlmaWVyKSBBUyBwcm9wZXJ0eV9n cmFwaF9zY2hlbWEsCisgICAgICAgICAgIENBU1QocGcucmVsbmFtZSBBUyBzcWxfaWRlbnRpZmll cikgQVMgcHJvcGVydHlfZ3JhcGhfbmFtZSwKKyAgICAgICAgICAgQ0FTVChlZy5wZ2VhbGlhcyBB UyBzcWxfaWRlbnRpZmllcikgQVMgZWRnZV90YWJsZV9hbGlhcywKKyAgICAgICAgICAgQ0FTVCh2 LnBnZWFsaWFzIEFTIHNxbF9pZGVudGlmaWVyKSBBUyB2ZXJ0ZXhfdGFibGVfYWxpYXMsCisgICAg ICAgICAgIENBU1QoQ0FTRSBlZy5lbmQgV0hFTiAnc3JjJyBUSEVOICdTT1VSQ0UnIFdIRU4gJ2Rl c3QnIFRIRU4gJ0RFU1RJTkFUSU9OJyBFTkQgQVMgY2hhcmFjdGVyX2RhdGEpIEFTIGVkZ2VfZW5k LAorICAgICAgICAgICBDQVNUKGFlLmF0dG5hbWUgQVMgc3FsX2lkZW50aWZpZXIpIEFTIGVkZ2Vf dGFibGVfY29sdW1uX25hbWUsCisgICAgICAgICAgIENBU1QoYXYuYXR0bmFtZSBBUyBzcWxfaWRl bnRpZmllcikgQVMgdmVydGV4X3RhYmxlX2NvbHVtbl9uYW1lLAorICAgICAgICAgICBDQVNUKChl Zy5lZ2tleSkubiBBUyBjYXJkaW5hbF9udW1iZXIpIEFTIG9yZGluYWxfcG9zaXRpb24KKyAgICBG Uk9NIHBnX25hbWVzcGFjZSBucGcKKyAgICAgICAgIEpPSU4KKyAgICAgICAgIChTRUxFQ1QgKiBG Uk9NIHBnX2NsYXNzIFdIRVJFIHJlbGtpbmQgPSAnZycpIEFTIHBnCisgICAgICAgICAgIE9OIG5w Zy5vaWQgPSBwZy5yZWxuYW1lc3BhY2UKKyAgICAgICAgIEpPSU4KKyAgICAgICAgIChTRUxFQ1Qg cGdlcGdpZCwgcGdlYWxpYXMsIHBnZXJlbGlkLCAnc3JjJyBBUyBlbmQsIHBnZXNyY3ZlcnRleGlk IEFTIHZlcnRleGlkLCBfcGdfZXhwYW5kYXJyYXkocGdlc3Jja2V5KSBBUyBlZ2tleSwgX3BnX2V4 cGFuZGFycmF5KHBnZXNyY3JlZikgQVMgZWdyZWYgRlJPTSBwZ19wcm9wZ3JhcGhfZWxlbWVudCBX SEVSRSBwZ2VraW5kID0gJ2UnCisgICAgICAgICAgVU5JT04gQUxMCisgICAgICAgICAgU0VMRUNU IHBnZXBnaWQsIHBnZWFsaWFzLCBwZ2VyZWxpZCwgJ2Rlc3QnIEFTIGVuZCwgcGdlZGVzdHZlcnRl eGlkIEFTIHZlcnRleGlkLCBfcGdfZXhwYW5kYXJyYXkocGdlZGVzdGtleSkgQVMgZWdrZXksIF9w Z19leHBhbmRhcnJheShwZ2VkZXN0cmVmKSBBUyBlZ3JlZiBGUk9NIHBnX3Byb3BncmFwaF9lbGVt ZW50IFdIRVJFIHBnZWtpbmQgPSAnZScKKyAgICAgICAgICkgQVMgZWcKKyAgICAgICAgICAgT04g cGcub2lkID0gZWcucGdlcGdpZAorICAgICAgICAgSk9JTgorICAgICAgICAgKFNFTEVDVCAqIEZS T00gcGdfcHJvcGdyYXBoX2VsZW1lbnQgV0hFUkUgcGdla2luZCA9ICd2JykgQVMgdgorICAgICAg ICAgICBPTiBlZy52ZXJ0ZXhpZCA9IHYub2lkCisgICAgICAgICBKT0lOCisgICAgICAgICAoU0VM RUNUICogRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgTk9UIGF0dGlzZHJvcHBlZCkgQVMgYWUKKyAg ICAgICAgICAgT04gZWcucGdlcmVsaWQgPSBhZS5hdHRyZWxpZCBBTkQgKGVnLmVna2V5KS54ID0g YWUuYXR0bnVtCisgICAgICAgICBKT0lOCisgICAgICAgICAoU0VMRUNUICogRlJPTSBwZ19hdHRy aWJ1dGUgV0hFUkUgTk9UIGF0dGlzZHJvcHBlZCkgQVMgYXYKKyAgICAgICAgICAgT04gdi5wZ2Vy ZWxpZCA9IGF2LmF0dHJlbGlkIEFORCAoZWcuZWdyZWYpLnggPSBhdi5hdHRudW0KKyAgICBXSEVS RSBOT1QgcGdfaXNfb3RoZXJfdGVtcF9zY2hlbWEobnBnLm9pZCkKKyAgICAgICAgICBBTkQgKHBn X2hhc19yb2xlKHBnLnJlbG93bmVyLCAnVVNBR0UnKQorICAgICAgICAgICAgICAgT1IgaGFzX3Rh YmxlX3ByaXZpbGVnZShwZy5vaWQsICdTRUxFQ1QnKSk7CisKK0dSQU5UIFNFTEVDVCBPTiBwZ19l ZGdlX3RhYmxlX2NvbXBvbmVudHMgVE8gUFVCTElDOworCisKKy8qCisgKiAxNS42CisgKiBQR19F REdFX1RSSVBMRVRTIHZpZXcKKyAqLworCistLSBUT0RPCisKKworLyoKKyAqIDE1LjcKKyAqIFBH X0VMRU1FTlRfVEFCTEVfS0VZX0NPTFVNTlMgdmlldworICovCisKK0NSRUFURSBWSUVXIHBnX2Vs ZW1lbnRfdGFibGVfa2V5X2NvbHVtbnMgQVMKKyAgICBTRUxFQ1QgQ0FTVChjdXJyZW50X2RhdGFi YXNlKCkgQVMgc3FsX2lkZW50aWZpZXIpIEFTIHByb3BlcnR5X2dyYXBoX2NhdGFsb2csCisgICAg ICAgICAgIENBU1QobnBnLm5zcG5hbWUgQVMgc3FsX2lkZW50aWZpZXIpIEFTIHByb3BlcnR5X2dy YXBoX3NjaGVtYSwKKyAgICAgICAgICAgQ0FTVChwZy5yZWxuYW1lIEFTIHNxbF9pZGVudGlmaWVy KSBBUyBwcm9wZXJ0eV9ncmFwaF9uYW1lLAorICAgICAgICAgICBDQVNUKHBnZWFsaWFzIEFTIHNx bF9pZGVudGlmaWVyKSBBUyBlbGVtZW50X3RhYmxlX2FsaWFzLAorICAgICAgICAgICBDQVNUKGEu YXR0bmFtZSBBUyBzcWxfaWRlbnRpZmllcikgQVMgY29sdW1uX25hbWUsCisgICAgICAgICAgIENB U1QoKGVsLmVrZXkpLm4gQVMgY2FyZGluYWxfbnVtYmVyKSBBUyBvcmRpbmFsX3Bvc2l0aW9uCisg ICAgRlJPTSBwZ19uYW1lc3BhY2UgbnBnCisgICAgICAgICBKT0lOCisgICAgICAgICAoU0VMRUNU ICogRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxraW5kID0gJ2cnKSBBUyBwZworICAgICAgICAgICBP TiBucGcub2lkID0gcGcucmVsbmFtZXNwYWNlCisgICAgICAgICBKT0lOCisgICAgICAgICAoU0VM RUNUIHBnZXBnaWQsIHBnZWFsaWFzLCBwZ2VyZWxpZCwgX3BnX2V4cGFuZGFycmF5KHBnZWtleSkg QVMgZWtleSBGUk9NIHBnX3Byb3BncmFwaF9lbGVtZW50KSBBUyBlbAorICAgICAgICAgICBPTiBw Zy5vaWQgPSBlbC5wZ2VwZ2lkCisgICAgICAgICBKT0lOCisgICAgICAgICAoU0VMRUNUICogRlJP TSBwZ19hdHRyaWJ1dGUgV0hFUkUgTk9UIGF0dGlzZHJvcHBlZCkgQVMgYQorICAgICAgICAgICBP TiBlbC5wZ2VyZWxpZCA9IGEuYXR0cmVsaWQgQU5EIChlbC5la2V5KS54ID0gYS5hdHRudW0KKyAg ICBXSEVSRSBOT1QgcGdfaXNfb3RoZXJfdGVtcF9zY2hlbWEobnBnLm9pZCkKKyAgICAgICAgICBB TkQgKHBnX2hhc19yb2xlKHBnLnJlbG93bmVyLCAnVVNBR0UnKQorICAgICAgICAgICAgICAgT1Ig aGFzX3RhYmxlX3ByaXZpbGVnZShwZy5vaWQsICdTRUxFQ1QnKSk7CisKK0dSQU5UIFNFTEVDVCBP TiBwZ19lbGVtZW50X3RhYmxlX2tleV9jb2x1bW5zIFRPIFBVQkxJQzsKKworCisvKgorICogMTUu OAorICogUEdfRUxFTUVOVF9UQUJMRV9MQUJFTFMgdmlldworICovCisKK0NSRUFURSBWSUVXIHBn X2VsZW1lbnRfdGFibGVfbGFiZWxzIEFTCisgICAgU0VMRUNUIENBU1QoY3VycmVudF9kYXRhYmFz ZSgpIEFTIHNxbF9pZGVudGlmaWVyKSBBUyBwcm9wZXJ0eV9ncmFwaF9jYXRhbG9nLAorICAgICAg ICAgICBDQVNUKG5wZy5uc3BuYW1lIEFTIHNxbF9pZGVudGlmaWVyKSBBUyBwcm9wZXJ0eV9ncmFw aF9zY2hlbWEsCisgICAgICAgICAgIENBU1QocGcucmVsbmFtZSBBUyBzcWxfaWRlbnRpZmllcikg QVMgcHJvcGVydHlfZ3JhcGhfbmFtZSwKKyAgICAgICAgICAgQ0FTVChlLnBnZWFsaWFzIEFTIHNx bF9pZGVudGlmaWVyKSBBUyBlbGVtZW50X3RhYmxlX2FsaWFzLAorICAgICAgICAgICBDQVNUKGwu cGdsbGFiZWwgQVMgc3FsX2lkZW50aWZpZXIpIEFTIGxhYmVsX25hbWUKKyAgICBGUk9NIHBnX25h bWVzcGFjZSBucGcsIHBnX2NsYXNzIHBnLCBwZ19wcm9wZ3JhcGhfZWxlbWVudCBlLCBwZ19wcm9w Z3JhcGhfZWxlbWVudF9sYWJlbCBlbCwgcGdfcHJvcGdyYXBoX2xhYmVsIGwKKyAgICBXSEVSRSBw Zy5yZWxuYW1lc3BhY2UgPSBucGcub2lkCisgICAgICAgICAgQU5EIGUucGdlcGdpZCA9IHBnLm9p ZAorICAgICAgICAgIEFORCBlbC5wZ2VsZWxpZCA9IGUub2lkCisgICAgICAgICAgQU5EIGVsLnBn ZWxsYWJlbGlkID0gbC5vaWQKKyAgICAgICAgICBBTkQgcGcucmVsa2luZCA9ICdnJworICAgICAg ICAgIEFORCAoTk9UIHBnX2lzX290aGVyX3RlbXBfc2NoZW1hKG5wZy5vaWQpKQorICAgICAgICAg IEFORCAocGdfaGFzX3JvbGUocGcucmVsb3duZXIsICdVU0FHRScpCisgICAgICAgICAgICAgICBP UiBoYXNfdGFibGVfcHJpdmlsZWdlKHBnLm9pZCwgJ1NFTEVDVCcpKTsKKworR1JBTlQgU0VMRUNU IE9OIHBnX2VsZW1lbnRfdGFibGVfbGFiZWxzIFRPIFBVQkxJQzsKKworCisvKgorICogMTUuOQor ICogUEdfRUxFTUVOVF9UQUJMRV9QUk9QRVJUSUVTIHZpZXcKKyAqLworCitDUkVBVEUgVklFVyBw Z19lbGVtZW50X3RhYmxlX3Byb3BlcnRpZXMgQVMKKyAgICBTRUxFQ1QgRElTVElOQ1QKKyAgICAg ICAgICAgQ0FTVChjdXJyZW50X2RhdGFiYXNlKCkgQVMgc3FsX2lkZW50aWZpZXIpIEFTIHByb3Bl cnR5X2dyYXBoX2NhdGFsb2csCisgICAgICAgICAgIENBU1QobnBnLm5zcG5hbWUgQVMgc3FsX2lk ZW50aWZpZXIpIEFTIHByb3BlcnR5X2dyYXBoX3NjaGVtYSwKKyAgICAgICAgICAgQ0FTVChwZy5y ZWxuYW1lIEFTIHNxbF9pZGVudGlmaWVyKSBBUyBwcm9wZXJ0eV9ncmFwaF9uYW1lLAorICAgICAg ICAgICBDQVNUKGUucGdlYWxpYXMgQVMgc3FsX2lkZW50aWZpZXIpIEFTIGVsZW1lbnRfdGFibGVf YWxpYXMsCisgICAgICAgICAgIENBU1QocHIucGdwbmFtZSBBUyBzcWxfaWRlbnRpZmllcikgQVMg cHJvcGVydHlfbmFtZSwKKyAgICAgICAgICAgQ0FTVChwZ19nZXRfZXhwcihwbHAucGxwZXhwciwg ZS5wZ2VyZWxpZCkgQVMgY2hhcmFjdGVyX2RhdGEpIEFTIHByb3BlcnR5X2V4cHJlc3Npb24KKyAg ICBGUk9NIHBnX25hbWVzcGFjZSBucGcsIHBnX2NsYXNzIHBnLCBwZ19wcm9wZ3JhcGhfZWxlbWVu dCBlLCBwZ19wcm9wZ3JhcGhfZWxlbWVudF9sYWJlbCBlbCwgcGdfcHJvcGdyYXBoX2xhYmVsX3By b3BlcnR5IHBscCwgcGdfcHJvcGdyYXBoX3Byb3BlcnR5IHByCisgICAgV0hFUkUgcGcucmVsbmFt ZXNwYWNlID0gbnBnLm9pZAorICAgICAgICAgIEFORCBlLnBnZXBnaWQgPSBwZy5vaWQKKyAgICAg ICAgICBBTkQgZWwucGdlbGVsaWQgPSBlLm9pZAorICAgICAgICAgIEFORCBwbHAucGxwZWxsYWJl bGlkID0gZWwub2lkCisgICAgICAgICAgQU5EIHByLm9pZCA9IHBscC5wbHBwcm9waWQKKyAgICAg ICAgICBBTkQgcGcucmVsa2luZCA9ICdnJworICAgICAgICAgIEFORCAoTk9UIHBnX2lzX290aGVy X3RlbXBfc2NoZW1hKG5wZy5vaWQpKQorICAgICAgICAgIEFORCAocGdfaGFzX3JvbGUocGcucmVs b3duZXIsICdVU0FHRScpCisgICAgICAgICAgICAgICBPUiBoYXNfdGFibGVfcHJpdmlsZWdlKHBn Lm9pZCwgJ1NFTEVDVCcpKTsKKworR1JBTlQgU0VMRUNUIE9OIHBnX2VsZW1lbnRfdGFibGVfcHJv cGVydGllcyBUTyBQVUJMSUM7CisKKworLyoKKyAqIDE1LjEwCisgKiBQR19FTEVNRU5UX1RBQkxF UyB2aWV3CisgKi8KKworQ1JFQVRFIFZJRVcgcGdfZWxlbWVudF90YWJsZXMgQVMKKyAgICBTRUxF Q1QgQ0FTVChjdXJyZW50X2RhdGFiYXNlKCkgQVMgc3FsX2lkZW50aWZpZXIpIEFTIHByb3BlcnR5 X2dyYXBoX2NhdGFsb2csCisgICAgICAgICAgIENBU1QobnBnLm5zcG5hbWUgQVMgc3FsX2lkZW50 aWZpZXIpIEFTIHByb3BlcnR5X2dyYXBoX3NjaGVtYSwKKyAgICAgICAgICAgQ0FTVChwZy5yZWxu YW1lIEFTIHNxbF9pZGVudGlmaWVyKSBBUyBwcm9wZXJ0eV9ncmFwaF9uYW1lLAorICAgICAgICAg ICBDQVNUKGUucGdlYWxpYXMgQVMgc3FsX2lkZW50aWZpZXIpIEFTIGVsZW1lbnRfdGFibGVfYWxp YXMsCisgICAgICAgICAgIENBU1QoQ0FTRSBlLnBnZWtpbmQgV0hFTiAnZScgVEhFTiAnRURHRScg V0hFTiAndicgVEhFTiAnVkVSVEVYJyBFTkQgQVMgY2hhcmFjdGVyX2RhdGEpIEFTIGVsZW1lbnRf dGFibGVfa2luZCwKKyAgICAgICAgICAgQ0FTVChjdXJyZW50X2RhdGFiYXNlKCkgQVMgc3FsX2lk ZW50aWZpZXIpIEFTIHRhYmxlX2NhdGFsb2csCisgICAgICAgICAgIENBU1QobnQubnNwbmFtZSBB UyBzcWxfaWRlbnRpZmllcikgQVMgdGFibGVfc2NoZW1hLAorICAgICAgICAgICBDQVNUKHQucmVs bmFtZSBBUyBzcWxfaWRlbnRpZmllcikgQVMgdGFibGVfbmFtZSwKKyAgICAgICAgICAgQ0FTVChO VUxMIEFTIGNoYXJhY3Rlcl9kYXRhKSBBUyBlbGVtZW50X3RhYmxlX2RlZmluaXRpb24KKyAgICBG Uk9NIHBnX25hbWVzcGFjZSBucGcsIHBnX2NsYXNzIHBnLCBwZ19wcm9wZ3JhcGhfZWxlbWVudCBl LCBwZ19jbGFzcyB0LCBwZ19uYW1lc3BhY2UgbnQKKyAgICBXSEVSRSBwZy5yZWxuYW1lc3BhY2Ug PSBucGcub2lkCisgICAgICAgICAgQU5EIGUucGdlcGdpZCA9IHBnLm9pZAorICAgICAgICAgIEFO RCBlLnBnZXJlbGlkID0gdC5vaWQKKyAgICAgICAgICBBTkQgdC5yZWxuYW1lc3BhY2UgPSBudC5v aWQKKyAgICAgICAgICBBTkQgcGcucmVsa2luZCA9ICdnJworICAgICAgICAgIEFORCAoTk9UIHBn X2lzX290aGVyX3RlbXBfc2NoZW1hKG5wZy5vaWQpKQorICAgICAgICAgIEFORCAocGdfaGFzX3Jv bGUocGcucmVsb3duZXIsICdVU0FHRScpCisgICAgICAgICAgICAgICBPUiBoYXNfdGFibGVfcHJp dmlsZWdlKHBnLm9pZCwgJ1NFTEVDVCcpKTsKKworR1JBTlQgU0VMRUNUIE9OIHBnX2VsZW1lbnRf dGFibGVzIFRPIFBVQkxJQzsKKworCisvKgorICogMTUuMTEKKyAqIFBHX0xBQkVMX1BST1BFUlRJ RVMgdmlldworICovCisKK0NSRUFURSBWSUVXIHBnX2xhYmVsX3Byb3BlcnRpZXMgQVMKKyAgICBT RUxFQ1QgRElTVElOQ1QKKyAgICAgICAgICAgQ0FTVChjdXJyZW50X2RhdGFiYXNlKCkgQVMgc3Fs X2lkZW50aWZpZXIpIEFTIHByb3BlcnR5X2dyYXBoX2NhdGFsb2csCisgICAgICAgICAgIENBU1Qo bnBnLm5zcG5hbWUgQVMgc3FsX2lkZW50aWZpZXIpIEFTIHByb3BlcnR5X2dyYXBoX3NjaGVtYSwK KyAgICAgICAgICAgQ0FTVChwZy5yZWxuYW1lIEFTIHNxbF9pZGVudGlmaWVyKSBBUyBwcm9wZXJ0 eV9ncmFwaF9uYW1lLAorICAgICAgICAgICBDQVNUKGwucGdsbGFiZWwgQVMgc3FsX2lkZW50aWZp ZXIpIEFTIGxhYmVsX25hbWUsCisgICAgICAgICAgIENBU1QocHIucGdwbmFtZSBBUyBzcWxfaWRl bnRpZmllcikgQVMgcHJvcGVydHlfbmFtZQorICAgIEZST00gcGdfbmFtZXNwYWNlIG5wZywgcGdf Y2xhc3MgcGcsIHBnX3Byb3BncmFwaF9lbGVtZW50IGUsIHBnX3Byb3BncmFwaF9sYWJlbCBsLCBw Z19wcm9wZ3JhcGhfZWxlbWVudF9sYWJlbCBlbCwgcGdfcHJvcGdyYXBoX2xhYmVsX3Byb3BlcnR5 IHBscCwgcGdfcHJvcGdyYXBoX3Byb3BlcnR5IHByCisgICAgV0hFUkUgcGcucmVsbmFtZXNwYWNl ID0gbnBnLm9pZAorICAgICAgICAgIEFORCBlLnBnZXBnaWQgPSBwZy5vaWQKKyAgICAgICAgICBB TkQgZWwucGdlbGVsaWQgPSBlLm9pZAorICAgICAgICAgIEFORCBwbHAucGxwZWxsYWJlbGlkID0g ZWwub2lkCisgICAgICAgICAgQU5EIHByLm9pZCA9IHBscC5wbHBwcm9waWQKKyAgICAgICAgICBB TkQgZWwucGdlbGxhYmVsaWQgPSBsLm9pZAorICAgICAgICAgIEFORCBwZy5yZWxraW5kID0gJ2cn CisgICAgICAgICAgQU5EIChOT1QgcGdfaXNfb3RoZXJfdGVtcF9zY2hlbWEobnBnLm9pZCkpCisg ICAgICAgICAgQU5EIChwZ19oYXNfcm9sZShwZy5yZWxvd25lciwgJ1VTQUdFJykKKyAgICAgICAg ICAgICAgIE9SIGhhc190YWJsZV9wcml2aWxlZ2UocGcub2lkLCAnU0VMRUNUJykpOworCitHUkFO VCBTRUxFQ1QgT04gcGdfbGFiZWxfcHJvcGVydGllcyBUTyBQVUJMSUM7CisKKworLyoKKyAqIDE1 LjEyCisgKiBQR19MQUJFTFMgdmlldworICovCisKK0NSRUFURSBWSUVXIHBnX2xhYmVscyBBUwor ICAgIFNFTEVDVCBDQVNUKGN1cnJlbnRfZGF0YWJhc2UoKSBBUyBzcWxfaWRlbnRpZmllcikgQVMg cHJvcGVydHlfZ3JhcGhfY2F0YWxvZywKKyAgICAgICAgICAgQ0FTVChucGcubnNwbmFtZSBBUyBz cWxfaWRlbnRpZmllcikgQVMgcHJvcGVydHlfZ3JhcGhfc2NoZW1hLAorICAgICAgICAgICBDQVNU KHBnLnJlbG5hbWUgQVMgc3FsX2lkZW50aWZpZXIpIEFTIHByb3BlcnR5X2dyYXBoX25hbWUsCisg ICAgICAgICAgIENBU1QobC5wZ2xsYWJlbCBBUyBzcWxfaWRlbnRpZmllcikgQVMgbGFiZWxfbmFt ZQorICAgIEZST00gcGdfbmFtZXNwYWNlIG5wZywgcGdfY2xhc3MgcGcsIHBnX3Byb3BncmFwaF9s YWJlbCBsCisgICAgV0hFUkUgcGcucmVsbmFtZXNwYWNlID0gbnBnLm9pZAorICAgICAgICAgIEFO RCBsLnBnbHBnaWQgPSBwZy5vaWQKKyAgICAgICAgICBBTkQgcGcucmVsa2luZCA9ICdnJworICAg ICAgICAgIEFORCAoTk9UIHBnX2lzX290aGVyX3RlbXBfc2NoZW1hKG5wZy5vaWQpKQorICAgICAg ICAgIEFORCAocGdfaGFzX3JvbGUocGcucmVsb3duZXIsICdVU0FHRScpCisgICAgICAgICAgICAg ICBPUiBoYXNfdGFibGVfcHJpdmlsZWdlKHBnLm9pZCwgJ1NFTEVDVCcpKTsKKworR1JBTlQgU0VM RUNUIE9OIHBnX2xhYmVscyBUTyBQVUJMSUM7CisKKworLyoKKyAqIDE1LjEzCisgKiBQR19QUk9Q RVJUWV9EQVRBX1RZUEVTIHZpZXcKKyAqLworCitDUkVBVEUgVklFVyBwZ19wcm9wZXJ0eV9kYXRh X3R5cGVzIEFTCisgICAgU0VMRUNUIENBU1QoY3VycmVudF9kYXRhYmFzZSgpIEFTIHNxbF9pZGVu dGlmaWVyKSBBUyBwcm9wZXJ0eV9ncmFwaF9jYXRhbG9nLAorICAgICAgICAgICBDQVNUKG5wZy5u c3BuYW1lIEFTIHNxbF9pZGVudGlmaWVyKSBBUyBwcm9wZXJ0eV9ncmFwaF9zY2hlbWEsCisgICAg ICAgICAgIENBU1QocGcucmVsbmFtZSBBUyBzcWxfaWRlbnRpZmllcikgQVMgcHJvcGVydHlfZ3Jh cGhfbmFtZSwKKyAgICAgICAgICAgQ0FTVChwZ3AucGdwbmFtZSBBUyBzcWxfaWRlbnRpZmllcikg QVMgcHJvcGVydHlfbmFtZSwKKworICAgICAgICAgICBDQVNUKAorICAgICAgICAgICAgIENBU0Ug V0hFTiB0LnR5cHR5cGUgPSAnZCcgVEhFTgorICAgICAgICAgICAgICAgQ0FTRSBXSEVOIGJ0LnR5 cGVsZW0gPD4gMCBBTkQgYnQudHlwbGVuID0gLTEgVEhFTiAnQVJSQVknCisgICAgICAgICAgICAg ICAgICAgIFdIRU4gbmJ0Lm5zcG5hbWUgPSAncGdfY2F0YWxvZycgVEhFTiBmb3JtYXRfdHlwZSh0 LnR5cGJhc2V0eXBlLCBudWxsKQorICAgICAgICAgICAgICAgICAgICBFTFNFICdVU0VSLURFRklO RUQnIEVORAorICAgICAgICAgICAgIEVMU0UKKyAgICAgICAgICAgICAgIENBU0UgV0hFTiB0LnR5 cGVsZW0gPD4gMCBBTkQgdC50eXBsZW4gPSAtMSBUSEVOICdBUlJBWScKKyAgICAgICAgICAgICAg ICAgICAgV0hFTiBudC5uc3BuYW1lID0gJ3BnX2NhdGFsb2cnIFRIRU4gZm9ybWF0X3R5cGUocGdw LnBncHR5cGlkLCBudWxsKQorICAgICAgICAgICAgICAgICAgICBFTFNFICdVU0VSLURFRklORUQn IEVORAorICAgICAgICAgICAgIEVORAorICAgICAgICAgICAgIEFTIGNoYXJhY3Rlcl9kYXRhKQor ICAgICAgICAgICAgIEFTIGRhdGFfdHlwZSwKKworICAgICAgICAgICBDQVNUKG51bGwgQVMgY2Fy ZGluYWxfbnVtYmVyKSBBUyBjaGFyYWN0ZXJfbWF4aW11bV9sZW5ndGgsCisgICAgICAgICAgIENB U1QobnVsbCBBUyBjYXJkaW5hbF9udW1iZXIpIEFTIGNoYXJhY3Rlcl9vY3RldF9sZW5ndGgsCisg ICAgICAgICAgIENBU1QobnVsbCBBUyBzcWxfaWRlbnRpZmllcikgQVMgY2hhcmFjdGVyX3NldF9j YXRhbG9nLAorICAgICAgICAgICBDQVNUKG51bGwgQVMgc3FsX2lkZW50aWZpZXIpIEFTIGNoYXJh Y3Rlcl9zZXRfc2NoZW1hLAorICAgICAgICAgICBDQVNUKG51bGwgQVMgc3FsX2lkZW50aWZpZXIp IEFTIGNoYXJhY3Rlcl9zZXRfbmFtZSwKKyAgICAgICAgICAgQ0FTVChudWxsIEFTIHNxbF9pZGVu dGlmaWVyKSBBUyBjb2xsYXRpb25fY2F0YWxvZywgLS0gRklYTUUKKyAgICAgICAgICAgQ0FTVChu dWxsIEFTIHNxbF9pZGVudGlmaWVyKSBBUyBjb2xsYXRpb25fc2NoZW1hLCAtLSBGSVhNRQorICAg ICAgICAgICBDQVNUKG51bGwgQVMgc3FsX2lkZW50aWZpZXIpIEFTIGNvbGxhdGlvbl9uYW1lLCAt LSBGSVhNRQorICAgICAgICAgICBDQVNUKG51bGwgQVMgY2FyZGluYWxfbnVtYmVyKSBBUyBudW1l cmljX3ByZWNpc2lvbiwKKyAgICAgICAgICAgQ0FTVChudWxsIEFTIGNhcmRpbmFsX251bWJlcikg QVMgbnVtZXJpY19wcmVjaXNpb25fcmFkaXgsCisgICAgICAgICAgIENBU1QobnVsbCBBUyBjYXJk aW5hbF9udW1iZXIpIEFTIG51bWVyaWNfc2NhbGUsCisgICAgICAgICAgIENBU1QobnVsbCBBUyBj YXJkaW5hbF9udW1iZXIpIEFTIGRhdGV0aW1lX3ByZWNpc2lvbiwKKyAgICAgICAgICAgQ0FTVChu dWxsIEFTIGNoYXJhY3Rlcl9kYXRhKSBBUyBpbnRlcnZhbF90eXBlLAorICAgICAgICAgICBDQVNU KG51bGwgQVMgY2FyZGluYWxfbnVtYmVyKSBBUyBpbnRlcnZhbF9wcmVjaXNpb24sCisKKyAgICAg ICAgICAgQ0FTVChjdXJyZW50X2RhdGFiYXNlKCkgQVMgc3FsX2lkZW50aWZpZXIpIEFTIHVzZXJf ZGVmaW5lZF90eXBlX2NhdGFsb2csCisgICAgICAgICAgIENBU1QoY29hbGVzY2UobmJ0Lm5zcG5h bWUsIG50Lm5zcG5hbWUpIEFTIHNxbF9pZGVudGlmaWVyKSBBUyB1c2VyX2RlZmluZWRfdHlwZV9z Y2hlbWEsCisgICAgICAgICAgIENBU1QoY29hbGVzY2UoYnQudHlwbmFtZSwgdC50eXBuYW1lKSBB UyBzcWxfaWRlbnRpZmllcikgQVMgdXNlcl9kZWZpbmVkX3R5cGVfbmFtZSwKKworICAgICAgICAg ICBDQVNUKG51bGwgQVMgc3FsX2lkZW50aWZpZXIpIEFTIHNjb3BlX2NhdGFsb2csCisgICAgICAg ICAgIENBU1QobnVsbCBBUyBzcWxfaWRlbnRpZmllcikgQVMgc2NvcGVfc2NoZW1hLAorICAgICAg ICAgICBDQVNUKG51bGwgQVMgc3FsX2lkZW50aWZpZXIpIEFTIHNjb3BlX25hbWUsCisKKyAgICAg ICAgICAgQ0FTVChudWxsIEFTIGNhcmRpbmFsX251bWJlcikgQVMgbWF4aW11bV9jYXJkaW5hbGl0 eSwKKyAgICAgICAgICAgQ0FTVChwZ3AucGdwbmFtZSBBUyBzcWxfaWRlbnRpZmllcikgQVMgZHRk X2lkZW50aWZpZXIKKworICAgIEZST00gcGdfcHJvcGdyYXBoX3Byb3BlcnR5IHBncAorICAgICAg ICAgSk9JTiAocGdfY2xhc3MgcGcgSk9JTiBwZ19uYW1lc3BhY2UgbnBnIE9OIChwZy5yZWxuYW1l c3BhY2UgPSBucGcub2lkKSkgT04gcGdwLnBncHBnaWQgPSBwZy5vaWQKKyAgICAgICAgIEpPSU4g KHBnX3R5cGUgdCBKT0lOIHBnX25hbWVzcGFjZSBudCBPTiAodC50eXBuYW1lc3BhY2UgPSBudC5v aWQpKSBPTiBwZ3AucGdwdHlwaWQgPSB0Lm9pZAorICAgICAgICAgTEVGVCBKT0lOIChwZ190eXBl IGJ0IEpPSU4gcGdfbmFtZXNwYWNlIG5idCBPTiAoYnQudHlwbmFtZXNwYWNlID0gbmJ0Lm9pZCkp CisgICAgICAgICAgIE9OICh0LnR5cHR5cGUgPSAnZCcgQU5EIHQudHlwYmFzZXR5cGUgPSBidC5v aWQpCisKKyAgICBXSEVSRSBwZy5yZWxraW5kID0gJ2cnCisgICAgICAgICAgQU5EIChOT1QgcGdf aXNfb3RoZXJfdGVtcF9zY2hlbWEobnBnLm9pZCkpCisgICAgICAgICAgQU5EIChwZ19oYXNfcm9s ZShwZy5yZWxvd25lciwgJ1VTQUdFJykKKyAgICAgICAgICAgICAgIE9SIGhhc190YWJsZV9wcml2 aWxlZ2UocGcub2lkLCAnU0VMRUNUJykpOworCitHUkFOVCBTRUxFQ1QgT04gcGdfcHJvcGVydHlf ZGF0YV90eXBlcyBUTyBQVUJMSUM7CisKKworLyoKKyAqIDE1LjE0CisgKiBQR19QUk9QRVJUWV9H UkFQSF9QUklWSUxFR0VTIHZpZXcKKyAqLworCitDUkVBVEUgVklFVyBwZ19wcm9wZXJ0eV9ncmFw aF9wcml2aWxlZ2VzIEFTCisgICAgU0VMRUNUIENBU1QodV9ncmFudG9yLnJvbG5hbWUgQVMgc3Fs X2lkZW50aWZpZXIpIEFTIGdyYW50b3IsCisgICAgICAgICAgIENBU1QoZ3JhbnRlZS5yb2xuYW1l IEFTIHNxbF9pZGVudGlmaWVyKSBBUyBncmFudGVlLAorICAgICAgICAgICBDQVNUKGN1cnJlbnRf ZGF0YWJhc2UoKSBBUyBzcWxfaWRlbnRpZmllcikgQVMgcHJvcGVydHlfZ3JhcGhfY2F0YWxvZywK KyAgICAgICAgICAgQ0FTVChuYy5uc3BuYW1lIEFTIHNxbF9pZGVudGlmaWVyKSBBUyBwcm9wZXJ0 eV9ncmFwaF9zY2hlbWEsCisgICAgICAgICAgIENBU1QoYy5yZWxuYW1lIEFTIHNxbF9pZGVudGlm aWVyKSBBUyBwcm9wZXJ0eV9ncmFwaF9uYW1lLAorICAgICAgICAgICBDQVNUKGMucHJ0eXBlIEFT IGNoYXJhY3Rlcl9kYXRhKSBBUyBwcml2aWxlZ2VfdHlwZSwKKyAgICAgICAgICAgQ0FTVCgKKyAg ICAgICAgICAgICBDQVNFIFdIRU4KKyAgICAgICAgICAgICAgICAgIC0tIG9iamVjdCBvd25lciBh bHdheXMgaGFzIGdyYW50IG9wdGlvbnMKKyAgICAgICAgICAgICAgICAgIHBnX2hhc19yb2xlKGdy YW50ZWUub2lkLCBjLnJlbG93bmVyLCAnVVNBR0UnKQorICAgICAgICAgICAgICAgICAgT1IgYy5n cmFudGFibGUKKyAgICAgICAgICAgICAgICAgIFRIRU4gJ1lFUycgRUxTRSAnTk8nIEVORCBBUyB5 ZXNfb3Jfbm8pIEFTIGlzX2dyYW50YWJsZQorCisgICAgRlJPTSAoCisgICAgICAgICAgICBTRUxF Q1Qgb2lkLCByZWxuYW1lLCByZWxuYW1lc3BhY2UsIHJlbGtpbmQsIHJlbG93bmVyLCAoYWNsZXhw bG9kZShjb2FsZXNjZShyZWxhY2wsIGFjbGRlZmF1bHQoJ3InLCByZWxvd25lcikpKSkuKiBGUk9N IHBnX2NsYXNzCisgICAgICAgICApIEFTIGMgKG9pZCwgcmVsbmFtZSwgcmVsbmFtZXNwYWNlLCBy ZWxraW5kLCByZWxvd25lciwgZ3JhbnRvciwgZ3JhbnRlZSwgcHJ0eXBlLCBncmFudGFibGUpLAor ICAgICAgICAgcGdfbmFtZXNwYWNlIG5jLAorICAgICAgICAgcGdfYXV0aGlkIHVfZ3JhbnRvciwK KyAgICAgICAgICgKKyAgICAgICAgICAgU0VMRUNUIG9pZCwgcm9sbmFtZSBGUk9NIHBnX2F1dGhp ZAorICAgICAgICAgICBVTklPTiBBTEwKKyAgICAgICAgICAgU0VMRUNUIDA6Om9pZCwgJ1BVQkxJ QycKKyAgICAgICAgICkgQVMgZ3JhbnRlZSAob2lkLCByb2xuYW1lKQorCisgICAgV0hFUkUgYy5y ZWxuYW1lc3BhY2UgPSBuYy5vaWQKKyAgICAgICAgICBBTkQgYy5yZWxraW5kIElOICgnZycpCisg ICAgICAgICAgQU5EIGMuZ3JhbnRlZSA9IGdyYW50ZWUub2lkCisgICAgICAgICAgQU5EIGMuZ3Jh bnRvciA9IHVfZ3JhbnRvci5vaWQKKyAgICAgICAgICBBTkQgYy5wcnR5cGUgSU4gKCdTRUxFQ1Qn KQorICAgICAgICAgIEFORCAocGdfaGFzX3JvbGUodV9ncmFudG9yLm9pZCwgJ1VTQUdFJykKKyAg ICAgICAgICAgICAgIE9SIHBnX2hhc19yb2xlKGdyYW50ZWUub2lkLCAnVVNBR0UnKQorICAgICAg ICAgICAgICAgT1IgZ3JhbnRlZS5yb2xuYW1lID0gJ1BVQkxJQycpOworCitHUkFOVCBTRUxFQ1Qg T04gcGdfcHJvcGVydHlfZ3JhcGhfcHJpdmlsZWdlcyBUTyBQVUJMSUM7CisKKworLyoKKyAqIDE1 LjE1CisgKiBQR19WRVJURVhfREVGSU5FRF9MQUJFTF9TRVRTIHZpZXcKKyAqLworCistLSBUT0RP CisKKworLyoKKyAqIDE1LjE2CisgKiBQUk9QRVJUWV9HUkFQSFMgdmlldworICovCisKK0NSRUFU RSBWSUVXIHByb3BlcnR5X2dyYXBocyBBUworICAgIFNFTEVDVCBDQVNUKGN1cnJlbnRfZGF0YWJh c2UoKSBBUyBzcWxfaWRlbnRpZmllcikgQVMgcHJvcGVydHlfZ3JhcGhfY2F0YWxvZywKKyAgICAg ICAgICAgQ0FTVChuYy5uc3BuYW1lIEFTIHNxbF9pZGVudGlmaWVyKSBBUyBwcm9wZXJ0eV9ncmFw aF9zY2hlbWEsCisgICAgICAgICAgIENBU1QoYy5yZWxuYW1lIEFTIHNxbF9pZGVudGlmaWVyKSBB UyBwcm9wZXJ0eV9ncmFwaF9uYW1lCisgICAgRlJPTSBwZ19uYW1lc3BhY2UgbmMsIHBnX2NsYXNz IGMKKyAgICBXSEVSRSBjLnJlbG5hbWVzcGFjZSA9IG5jLm9pZAorICAgICAgICAgIEFORCBjLnJl bGtpbmQgPSAnZycKKyAgICAgICAgICBBTkQgKE5PVCBwZ19pc19vdGhlcl90ZW1wX3NjaGVtYShu Yy5vaWQpKQorICAgICAgICAgIEFORCAocGdfaGFzX3JvbGUoYy5yZWxvd25lciwgJ1VTQUdFJykK KyAgICAgICAgICAgICAgIE9SIGhhc190YWJsZV9wcml2aWxlZ2UoYy5vaWQsICdTRUxFQ1QnKSk7 CisKK0dSQU5UIFNFTEVDVCBPTiBwcm9wZXJ0eV9ncmFwaHMgVE8gUFVCTElDOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL29iamVjdGFkZHJlc3MuYwppbmRleCA4NWE3YjdlNjQxLi4yMGZmY2Y1YzI4IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwpAQCAtNDcsNiArNDcsMTEgQEAKICNpbmNsdWRlICJj YXRhbG9nL3BnX3BhcmFtZXRlcl9hY2wuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3BvbGljeS5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJv cGdyYXBoX2VsZW1lbnQuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb3BncmFwaF9lbGVtZW50 X2xhYmVsLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9wZ3JhcGhfbGFiZWwuaCIKKyNpbmNs dWRlICJjYXRhbG9nL3BnX3Byb3BncmFwaF9sYWJlbF9wcm9wZXJ0eS5oIgorI2luY2x1ZGUgImNh dGFsb2cvcGdfcHJvcGdyYXBoX3Byb3BlcnR5LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb25fbmFtZXNwYWNlLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaCIKQEAgLTM3MCw2ICszNzUs NzYgQEAgc3RhdGljIGNvbnN0IE9iamVjdFByb3BlcnR5VHlwZSBPYmplY3RQcm9wZXJ0eVtdID0K IAkJT0JKRUNUX09QRkFNSUxZLAogCQl0cnVlCiAJfSwKKwl7CisJCSJwcm9wZXJ0eSBncmFwaCBl bGVtZW50IiwKKwkJUHJvcGdyYXBoRWxlbWVudFJlbGF0aW9uSWQsCisJCVByb3BncmFwaEVsZW1l bnRPYmplY3RJbmRleElkLAorCQlQUk9QR1JBUEhFTE9JRCwKKwkJUFJPUEdSQVBIRUxBTElBUywK KwkJQW51bV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9vaWQsCisJCUFudW1fcGdfcHJvcGdyYXBoX2Vs ZW1lbnRfcGdlYWxpYXMsCisJCUludmFsaWRBdHRyTnVtYmVyLAorCQlJbnZhbGlkQXR0ck51bWJl ciwKKwkJSW52YWxpZEF0dHJOdW1iZXIsCisJCS0xLAorCQlmYWxzZQorCX0sCisJeworCQkicHJv cGVydHkgZ3JhcGggZWxlbWVudCBsYWJlbCIsCisJCVByb3BncmFwaEVsZW1lbnRMYWJlbFJlbGF0 aW9uSWQsCisJCVByb3BncmFwaEVsZW1lbnRMYWJlbE9iamVjdEluZGV4SWQsCisJCS0xLAorCQkt MSwKKwkJQW51bV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9sYWJlbF9vaWQsCisJCUludmFsaWRBdHRy TnVtYmVyLAorCQlJbnZhbGlkQXR0ck51bWJlciwKKwkJSW52YWxpZEF0dHJOdW1iZXIsCisJCUlu dmFsaWRBdHRyTnVtYmVyLAorCQktMSwKKwkJZmFsc2UKKwl9LAorCXsKKwkJInByb3BlcnR5IGdy YXBoIGxhYmVsIiwKKwkJUHJvcGdyYXBoTGFiZWxSZWxhdGlvbklkLAorCQlQcm9wZ3JhcGhMYWJl bE9iamVjdEluZGV4SWQsCisJCVBST1BHUkFQSExBQkVMT0lELAorCQlQUk9QR1JBUEhMQUJFTE5B TUUsCisJCUFudW1fcGdfcHJvcGdyYXBoX2xhYmVsX29pZCwKKwkJQW51bV9wZ19wcm9wZ3JhcGhf bGFiZWxfcGdsbGFiZWwsCisJCUludmFsaWRBdHRyTnVtYmVyLAorCQlJbnZhbGlkQXR0ck51bWJl ciwKKwkJSW52YWxpZEF0dHJOdW1iZXIsCisJCS0xLAorCQlmYWxzZQorCX0sCisJeworCQkicHJv cGVydHkgZ3JhcGggbGFiZWwgcHJvcGVydHkiLAorCQlQcm9wZ3JhcGhMYWJlbFByb3BlcnR5UmVs YXRpb25JZCwKKwkJUHJvcGdyYXBoTGFiZWxQcm9wZXJ0eU9iamVjdEluZGV4SWQsCisJCS0xLAor CQktMSwKKwkJQW51bV9wZ19wcm9wZ3JhcGhfbGFiZWxfcHJvcGVydHlfb2lkLAorCQlJbnZhbGlk QXR0ck51bWJlciwKKwkJSW52YWxpZEF0dHJOdW1iZXIsCisJCUludmFsaWRBdHRyTnVtYmVyLAor CQlJbnZhbGlkQXR0ck51bWJlciwKKwkJLTEsCisJCWZhbHNlCisJfSwKKwl7CisJCSJwcm9wZXJ0 eSBncmFwaCBwcm9wZXJ0eSIsCisJCVByb3BncmFwaFByb3BlcnR5UmVsYXRpb25JZCwKKwkJUHJv cGdyYXBoUHJvcGVydHlPYmplY3RJbmRleElkLAorCQktMSwKKwkJUFJPUEdSQVBIUFJPUE5BTUUs CisJCUFudW1fcGdfcHJvcGdyYXBoX3Byb3BlcnR5X29pZCwKKwkJQW51bV9wZ19wcm9wZ3JhcGhf cHJvcGVydHlfcGdwbmFtZSwKKwkJSW52YWxpZEF0dHJOdW1iZXIsCisJCUludmFsaWRBdHRyTnVt YmVyLAorCQlJbnZhbGlkQXR0ck51bWJlciwKKwkJLTEsCisJCWZhbHNlCisJfSwKIAl7CiAJCSJy b2xlIiwKIAkJQXV0aElkUmVsYXRpb25JZCwKQEAgLTY3OSw2ICs3NTQsOSBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IG9iamVjdF90eXBlX21hcAogCXsKIAkJImZvcmVpZ24gdGFibGUiLCBPQkpFQ1Rf Rk9SRUlHTl9UQUJMRQogCX0sCisJeworCQkicHJvcGVydHkgZ3JhcGgiLCBPQkpFQ1RfUFJPUEdS QVBICisJfSwKIAl7CiAJCSJ0YWJsZSBjb2x1bW4iLCBPQkpFQ1RfQ09MVU1OCiAJfSwKQEAgLTgx NCw2ICs4OTIsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvYmplY3RfdHlwZV9tYXAKIAl7CiAJ CSJwb2xpY3kiLCBPQkpFQ1RfUE9MSUNZCiAJfSwKKwl7CisJCSJwcm9wZXJ0eSBncmFwaCBlbGVt ZW50IiwgLTEKKwl9LAorCXsKKwkJInByb3BlcnR5IGdyYXBoIGxhYmVsIiwgLTEKKwl9LAorCXsK KwkJInByb3BlcnR5IGdyYXBoIHByb3BlcnR5IiwgLTEKKwl9LAogCXsKIAkJInB1YmxpY2F0aW9u IiwgT0JKRUNUX1BVQkxJQ0FUSU9OCiAJfSwKQEAgLTk0OCw2ICsxMDM1LDcgQEAgZ2V0X29iamVj dF9hZGRyZXNzKE9iamVjdFR5cGUgb2JqdHlwZSwgTm9kZSAqb2JqZWN0LAogCQkJY2FzZSBPQkpF Q1RfVklFVzoKIAkJCWNhc2UgT0JKRUNUX01BVFZJRVc6CiAJCQljYXNlIE9CSkVDVF9GT1JFSUdO X1RBQkxFOgorCQkJY2FzZSBPQkpFQ1RfUFJPUEdSQVBIOgogCQkJCWFkZHJlc3MgPQogCQkJCQln ZXRfcmVsYXRpb25fYnlfcXVhbGlmaWVkX25hbWUob2JqdHlwZSwgY2FzdE5vZGUoTGlzdCwgb2Jq ZWN0KSwKIAkJCQkJCQkJCQkJCSAgICZyZWxhdGlvbiwgbG9ja21vZGUsCkBAIC0xMzU2LDYgKzE0 NDQsMTMgQEAgZ2V0X3JlbGF0aW9uX2J5X3F1YWxpZmllZF9uYW1lKE9iamVjdFR5cGUgb2JqdHlw ZSwgTGlzdCAqb2JqZWN0LAogCQkJCQkJIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhbiBpbmRleCIs CiAJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSkpKTsKIAkJCWJyZWFr OworCQljYXNlIE9CSkVDVF9QUk9QR1JBUEg6CisJCQlpZiAocmVsYXRpb24tPnJkX3JlbC0+cmVs a2luZCAhPSBSRUxLSU5EX1BST1BHUkFQSCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJCQkgZXJybXNnKCJcIiVzXCIg aXMgbm90IGEgcHJvcGVydHkgZ3JhcGgiLAorCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShyZWxhdGlvbikpKSk7CisJCQlicmVhazsKIAkJY2FzZSBPQkpFQ1RfU0VRVUVOQ0U6CiAJCQlp ZiAocmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1NFUVVFTkNFKQogCQkJCWVy ZXBvcnQoRVJST1IsCkBAIC0yMjcxLDYgKzIzNjYsNyBAQCBwZ19nZXRfb2JqZWN0X2FkZHJlc3Mo UEdfRlVOQ1RJT05fQVJHUykKIAkJY2FzZSBPQkpFQ1RfTUFUVklFVzoKIAkJY2FzZSBPQkpFQ1Rf SU5ERVg6CiAJCWNhc2UgT0JKRUNUX0ZPUkVJR05fVEFCTEU6CisJCWNhc2UgT0JKRUNUX1BST1BH UkFQSDoKIAkJY2FzZSBPQkpFQ1RfQ09MVU1OOgogCQljYXNlIE9CSkVDVF9BVFRSSUJVVEU6CiAJ CWNhc2UgT0JKRUNUX0NPTExBVElPTjoKQEAgLTIzOTAsNiArMjQ4Niw3IEBAIGNoZWNrX29iamVj dF9vd25lcnNoaXAoT2lkIHJvbGVpZCwgT2JqZWN0VHlwZSBvYmp0eXBlLCBPYmplY3RBZGRyZXNz IGFkZHJlc3MsCiAJCWNhc2UgT0JKRUNUX1ZJRVc6CiAJCWNhc2UgT0JKRUNUX01BVFZJRVc6CiAJ CWNhc2UgT0JKRUNUX0ZPUkVJR05fVEFCTEU6CisJCWNhc2UgT0JKRUNUX1BST1BHUkFQSDoKIAkJ Y2FzZSBPQkpFQ1RfQ09MVU1OOgogCQljYXNlIE9CSkVDVF9SVUxFOgogCQljYXNlIE9CSkVDVF9U UklHR0VSOgpAQCAtMzkyMCw2ICs0MDE3LDE4MiBAQCBnZXRPYmplY3REZXNjcmlwdGlvbihjb25z dCBPYmplY3RBZGRyZXNzICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykKIAkJCQlicmVhazsKIAkJ CX0KIAorCQljYXNlIFByb3BncmFwaEVsZW1lbnRSZWxhdGlvbklkOgorCQkJeworCQkJCUhlYXBU dXBsZQl0dXA7CisJCQkJRm9ybV9wZ19wcm9wZ3JhcGhfZWxlbWVudCBwZ2Vmb3JtOworCisJCQkJ dHVwID0gU2VhcmNoU3lzQ2FjaGUxKFBST1BHUkFQSEVMT0lELCBPYmplY3RJZEdldERhdHVtKG9i amVjdC0+b2JqZWN0SWQpKTsKKwkJCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkKKwkJCQkJ ZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHByb3BlcnR5IGdyYXBoIGVsZW1l bnQgJXUiLAorCQkJCQkJIG9iamVjdC0+b2JqZWN0SWQpOworCisJCQkJcGdlZm9ybSA9IChGb3Jt X3BnX3Byb3BncmFwaF9lbGVtZW50KSBHRVRTVFJVQ1QodHVwKTsKKworCQkJCWlmIChwZ2Vmb3Jt LT5wZ2VraW5kID09IFBHRUtJTkRfVkVSVEVYKQorCQkJCQkvKiB0cmFuc2xhdG9yOiBmb2xsb3dl ZCBieSwgZS5nLiwgInByb3BlcnR5IGdyYXBoICVzIiAqLworCQkJCQlhcHBlbmRTdHJpbmdJbmZv KCZidWZmZXIsIF8oInZlcnRleCAlcyBvZiAiKSwgTmFtZVN0cihwZ2Vmb3JtLT5wZ2VhbGlhcykp OworCQkJCWVsc2UgaWYgKHBnZWZvcm0tPnBnZWtpbmQgPT0gUEdFS0lORF9FREdFKQorCQkJCQkv KiB0cmFuc2xhdG9yOiBmb2xsb3dlZCBieSwgZS5nLiwgInByb3BlcnR5IGdyYXBoICVzIiAqLwor CQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oImVkZ2UgJXMgb2YgIiksIE5hbWVTdHIo cGdlZm9ybS0+cGdlYWxpYXMpKTsKKwkJCQllbHNlCisJCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1 ZmZlciwgIj8/PyBlbGVtZW50ICVzIG9mICIsIE5hbWVTdHIocGdlZm9ybS0+cGdlYWxpYXMpKTsK KwkJCQlnZXRSZWxhdGlvbkRlc2NyaXB0aW9uKCZidWZmZXIsIHBnZWZvcm0tPnBnZXBnaWQsIGZh bHNlKTsKKworCQkJCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCQkJCWJyZWFrOworCQkJfQorCisJ CWNhc2UgUHJvcGdyYXBoRWxlbWVudExhYmVsUmVsYXRpb25JZDoKKwkJCXsKKwkJCQlSZWxhdGlv bglyZWw7CisJCQkJU3lzU2NhbkRlc2Mgc2NhbjsKKwkJCQlTY2FuS2V5RGF0YSBrZXlbMV07CisJ CQkJSGVhcFR1cGxlCXR1cGxlOworCQkJCUZvcm1fcGdfcHJvcGdyYXBoX2VsZW1lbnRfbGFiZWwg cGdlbGZvcm07CisJCQkJT2JqZWN0QWRkcmVzcyBvYTsKKworCQkJCXJlbCA9IHRhYmxlX29wZW4o UHJvcGdyYXBoRWxlbWVudExhYmVsUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQlT Y2FuS2V5SW5pdCgma2V5WzBdLAorCQkJCQkJCUFudW1fcGdfcHJvcGdyYXBoX2VsZW1lbnRfbGFi ZWxfb2lkLAorCQkJCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQkJCQlP YmplY3RJZEdldERhdHVtKG9iamVjdC0+b2JqZWN0SWQpKTsKKworCQkJCXNjYW4gPSBzeXN0YWJs ZV9iZWdpbnNjYW4ocmVsLCBQcm9wZ3JhcGhFbGVtZW50TGFiZWxPYmplY3RJbmRleElkLCB0cnVl LCBOVUxMLCAxLCBrZXkpOworCQkJCXR1cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKTsKKwkJ CQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQorCQkJCXsKKwkJCQkJaWYgKCFtaXNzaW5n X29rKQorCQkJCQkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBmaW5kIHR1cGxlIGZvciBlbGVtZW50 IGxhYmVsICV1Iiwgb2JqZWN0LT5vYmplY3RJZCk7CisKKwkJCQkJc3lzdGFibGVfZW5kc2Nhbihz Y2FuKTsKKwkJCQkJdGFibGVfY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCQlicmVh azsKKwkJCQl9CisKKwkJCQlwZ2VsZm9ybSA9IChGb3JtX3BnX3Byb3BncmFwaF9lbGVtZW50X2xh YmVsKSBHRVRTVFJVQ1QodHVwbGUpOworCisJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVyLCBf KCJsYWJlbCAlcyBvZiAiKSwgZ2V0X3Byb3BncmFwaF9sYWJlbF9uYW1lKHBnZWxmb3JtLT5wZ2Vs bGFiZWxpZCkpOworCQkJCU9iamVjdEFkZHJlc3NTZXQob2EsIFByb3BncmFwaEVsZW1lbnRSZWxh dGlvbklkLCBwZ2VsZm9ybS0+cGdlbGVsaWQpOworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco JmJ1ZmZlciwgZ2V0T2JqZWN0RGVzY3JpcHRpb24oJm9hLCBmYWxzZSkpOworCisJCQkJc3lzdGFi bGVfZW5kc2NhbihzY2FuKTsKKwkJCQl0YWJsZV9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7 CisJCQkJYnJlYWs7CisJCQl9CisKKwkJY2FzZSBQcm9wZ3JhcGhMYWJlbFJlbGF0aW9uSWQ6CisJ CQl7CisJCQkJUmVsYXRpb24JcmVsOworCQkJCVN5c1NjYW5EZXNjIHNjYW47CisJCQkJU2Nhbktl eURhdGEga2V5WzFdOworCQkJCUhlYXBUdXBsZQl0dXBsZTsKKwkJCQlGb3JtX3BnX3Byb3BncmFw aF9sYWJlbCBwZ2xmb3JtOworCisJCQkJcmVsID0gdGFibGVfb3BlbihQcm9wZ3JhcGhMYWJlbFJl bGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQkJU2NhbktleUluaXQoJmtleVswXSwKKwkJ CQkJCQlBbnVtX3BnX3Byb3BncmFwaF9sYWJlbF9vaWQsCisJCQkJCQkJQlRFcXVhbFN0cmF0ZWd5 TnVtYmVyLCBGX09JREVRLAorCQkJCQkJCU9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJ ZCkpOworCisJCQkJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihyZWwsIFByb3BncmFwaExhYmVs T2JqZWN0SW5kZXhJZCwgdHJ1ZSwgTlVMTCwgMSwga2V5KTsKKwkJCQl0dXBsZSA9IHN5c3RhYmxl X2dldG5leHQoc2Nhbik7CisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJCQl7 CisJCQkJCWlmICghbWlzc2luZ19vaykKKwkJCQkJCWVsb2coRVJST1IsICJjb3VsZCBub3QgZmlu ZCB0dXBsZSBmb3IgbGFiZWwgJXUiLCBvYmplY3QtPm9iamVjdElkKTsKKworCQkJCQlzeXN0YWJs ZV9lbmRzY2FuKHNjYW4pOworCQkJCQl0YWJsZV9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7 CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJCXBnbGZvcm0gPSAoRm9ybV9wZ19wcm9wZ3JhcGhf bGFiZWwpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkJCQkvKiB0cmFuc2xhdG9yOiBmb2xsb3dlZCBi eSwgZS5nLiwgInByb3BlcnR5IGdyYXBoICVzIiAqLworCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1 ZmZlciwgXygibGFiZWwgJXMgb2YgIiksIE5hbWVTdHIocGdsZm9ybS0+cGdsbGFiZWwpKTsKKwkJ CQlnZXRSZWxhdGlvbkRlc2NyaXB0aW9uKCZidWZmZXIsIHBnbGZvcm0tPnBnbHBnaWQsIGZhbHNl KTsKKworCQkJCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJCQkJdGFibGVfY2xvc2UocmVsLCBB Y2Nlc3NTaGFyZUxvY2spOworCQkJCWJyZWFrOworCQkJfQorCisJCWNhc2UgUHJvcGdyYXBoTGFi ZWxQcm9wZXJ0eVJlbGF0aW9uSWQ6CisJCQl7CisJCQkJUmVsYXRpb24JcmVsOworCQkJCVN5c1Nj YW5EZXNjIHNjYW47CisJCQkJU2NhbktleURhdGEga2V5WzFdOworCQkJCUhlYXBUdXBsZQl0dXBs ZTsKKwkJCQlGb3JtX3BnX3Byb3BncmFwaF9sYWJlbF9wcm9wZXJ0eSBwbHBmb3JtOworCQkJCU9i amVjdEFkZHJlc3Mgb2E7CisKKwkJCQlyZWwgPSB0YWJsZV9vcGVuKFByb3BncmFwaExhYmVsUHJv cGVydHlSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCVNjYW5LZXlJbml0KCZrZXlb MF0sCisJCQkJCQkJQW51bV9wZ19wcm9wZ3JhcGhfbGFiZWxfcHJvcGVydHlfb2lkLAorCQkJCQkJ CUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQkJCQlPYmplY3RJZEdldERhdHVt KG9iamVjdC0+b2JqZWN0SWQpKTsKKworCQkJCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocmVs LCBQcm9wZ3JhcGhMYWJlbFByb3BlcnR5T2JqZWN0SW5kZXhJZCwgdHJ1ZSwgTlVMTCwgMSwga2V5 KTsKKwkJCQl0dXBsZSA9IHN5c3RhYmxlX2dldG5leHQoc2Nhbik7CisJCQkJaWYgKCFIZWFwVHVw bGVJc1ZhbGlkKHR1cGxlKSkKKwkJCQl7CisJCQkJCWlmICghbWlzc2luZ19vaykKKwkJCQkJCWVs b2coRVJST1IsICJjb3VsZCBub3QgZmluZCB0dXBsZSBmb3IgbGFiZWwgcHJvcGVydHkgJXUiLCBv YmplY3QtPm9iamVjdElkKTsKKworCQkJCQlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCQkJCQl0 YWJsZV9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQkJCWJyZWFrOworCQkJCX0KKwor CQkJCXBscGZvcm0gPSAoRm9ybV9wZ19wcm9wZ3JhcGhfbGFiZWxfcHJvcGVydHkpIEdFVFNUUlVD VCh0dXBsZSk7CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oInByb3BlcnR5ICVz IG9mICIpLCBnZXRfcHJvcGdyYXBoX3Byb3BlcnR5X25hbWUocGxwZm9ybS0+cGxwcHJvcGlkKSk7 CisJCQkJT2JqZWN0QWRkcmVzc1NldChvYSwgUHJvcGdyYXBoRWxlbWVudExhYmVsUmVsYXRpb25J ZCwgcGxwZm9ybS0+cGxwZWxsYWJlbGlkKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZi dWZmZXIsIGdldE9iamVjdERlc2NyaXB0aW9uKCZvYSwgZmFsc2UpKTsKKworCQkJCXN5c3RhYmxl X2VuZHNjYW4oc2Nhbik7CisJCQkJdGFibGVfY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOwor CQkJCWJyZWFrOworCQkJfQorCisJCWNhc2UgUHJvcGdyYXBoUHJvcGVydHlSZWxhdGlvbklkOgor CQkJeworCQkJCVJlbGF0aW9uCXJlbDsKKwkJCQlTeXNTY2FuRGVzYyBzY2FuOworCQkJCVNjYW5L ZXlEYXRhIGtleVsxXTsKKwkJCQlIZWFwVHVwbGUJdHVwbGU7CisJCQkJRm9ybV9wZ19wcm9wZ3Jh cGhfcHJvcGVydHkgcGdwZm9ybTsKKworCQkJCXJlbCA9IHRhYmxlX29wZW4oUHJvcGdyYXBoUHJv cGVydHlSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCVNjYW5LZXlJbml0KCZrZXlb MF0sCisJCQkJCQkJQW51bV9wZ19wcm9wZ3JhcGhfcHJvcGVydHlfb2lkLAorCQkJCQkJCUJURXF1 YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQkJCQlPYmplY3RJZEdldERhdHVtKG9iamVj dC0+b2JqZWN0SWQpKTsKKworCQkJCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocmVsLCBQcm9w Z3JhcGhQcm9wZXJ0eU9iamVjdEluZGV4SWQsIHRydWUsIE5VTEwsIDEsIGtleSk7CisJCQkJdHVw bGUgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pOworCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0 dXBsZSkpCisJCQkJeworCQkJCQlpZiAoIW1pc3Npbmdfb2spCisJCQkJCQllbG9nKEVSUk9SLCAi Y291bGQgbm90IGZpbmQgdHVwbGUgZm9yIHByb3BlcnR5ICV1Iiwgb2JqZWN0LT5vYmplY3RJZCk7 CisKKwkJCQkJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKwkJCQkJdGFibGVfY2xvc2UocmVsLCBB Y2Nlc3NTaGFyZUxvY2spOworCQkJCQlicmVhazsKKwkJCQl9CisKKwkJCQlwZ3Bmb3JtID0gKEZv cm1fcGdfcHJvcGdyYXBoX3Byb3BlcnR5KSBHRVRTVFJVQ1QodHVwbGUpOworCisJCQkJLyogdHJh bnNsYXRvcjogZm9sbG93ZWQgYnksIGUuZy4sICJwcm9wZXJ0eSBncmFwaCAlcyIgKi8KKwkJCQlh cHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oInByb3BlcnR5ICVzIG9mICIpLCBOYW1lU3RyKHBn cGZvcm0tPnBncG5hbWUpKTsKKwkJCQlnZXRSZWxhdGlvbkRlc2NyaXB0aW9uKCZidWZmZXIsIHBn cGZvcm0tPnBncHBnaWQsIGZhbHNlKTsKKworCQkJCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJ CQkJdGFibGVfY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCWJyZWFrOworCQkJfQor CiAJCWNhc2UgUHVibGljYXRpb25SZWxhdGlvbklkOgogCQkJewogCQkJCWNoYXIJICAgKnB1Ym5h bWUgPSBnZXRfcHVibGljYXRpb25fbmFtZShvYmplY3QtPm9iamVjdElkLApAQCAtNDEwNSw2ICs0 Mzc4LDEwIEBAIGdldFJlbGF0aW9uRGVzY3JpcHRpb24oU3RyaW5nSW5mbyBidWZmZXIsIE9pZCBy ZWxpZCwgYm9vbCBtaXNzaW5nX29rKQogCQkJYXBwZW5kU3RyaW5nSW5mbyhidWZmZXIsIF8oImZv cmVpZ24gdGFibGUgJXMiKSwKIAkJCQkJCQkgcmVsbmFtZSk7CiAJCQlicmVhazsKKwkJY2FzZSBS RUxLSU5EX1BST1BHUkFQSDoKKwkJCWFwcGVuZFN0cmluZ0luZm8oYnVmZmVyLCBfKCJwcm9wZXJ0 eSBncmFwaCAlcyIpLAorCQkJCQkJCSByZWxuYW1lKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0Ogog CQkJLyogc2hvdWxkbid0IGdldCBoZXJlICovCiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZmZlciwg XygicmVsYXRpb24gJXMiKSwKQEAgLTQ1OTQsNiArNDg3MSwxOCBAQCBnZXRPYmplY3RUeXBlRGVz Y3JpcHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LCBib29sIG1pc3Npbmdfb2spCiAJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsICJwb2xpY3kiKTsKIAkJCWJyZWFrOwog CisJCWNhc2UgUHJvcGdyYXBoRWxlbWVudFJlbGF0aW9uSWQ6CisJCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKCZidWZmZXIsICJwcm9wZXJ0eSBncmFwaCBlbGVtZW50Iik7CisJCQlicmVhazsKKwor CQljYXNlIFByb3BncmFwaExhYmVsUmVsYXRpb25JZDoKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoJmJ1ZmZlciwgInByb3BlcnR5IGdyYXBoIGxhYmVsIik7CisJCQlicmVhazsKKworCQljYXNl IFByb3BncmFwaFByb3BlcnR5UmVsYXRpb25JZDoKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco JmJ1ZmZlciwgInByb3BlcnR5IGdyYXBoIHByb3BlcnR5Iik7CisJCQlicmVhazsKKwogCQljYXNl IFB1YmxpY2F0aW9uUmVsYXRpb25JZDoKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZl ciwgInB1YmxpY2F0aW9uIik7CiAJCQlicmVhazsKQEAgLTQ2NzUsNiArNDk2NCw5IEBAIGdldFJl bGF0aW9uVHlwZURlc2NyaXB0aW9uKFN0cmluZ0luZm8gYnVmZmVyLCBPaWQgcmVsaWQsIGludDMy IG9iamVjdFN1YklkLAogCQljYXNlIFJFTEtJTkRfRk9SRUlHTl9UQUJMRToKIAkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoYnVmZmVyLCAiZm9yZWlnbiB0YWJsZSIpOwogCQkJYnJlYWs7CisJCWNh c2UgUkVMS0lORF9QUk9QR1JBUEg6CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZmZlciwg InByb3BlcnR5IGdyYXBoIik7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCS8qIHNob3VsZG4n dCBnZXQgaGVyZSAqLwogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWZmZXIsICJyZWxhdGlv biIpOwpAQCAtNTgzNSw2ICs2MTI3LDE4IEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3Qg T2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgUHJvcGdy YXBoRWxlbWVudFJlbGF0aW9uSWQ6CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsICIldSBU T0RPIiwgb2JqZWN0LT5vYmplY3RJZCk7CisJCQlicmVhazsKKworCQljYXNlIFByb3BncmFwaExh YmVsUmVsYXRpb25JZDoKKwkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwgIiV1IFRPRE8iLCBv YmplY3QtPm9iamVjdElkKTsKKwkJCWJyZWFrOworCisJCWNhc2UgUHJvcGdyYXBoUHJvcGVydHlS ZWxhdGlvbklkOgorCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVyLCAiJXUgVE9ETyIsIG9iamVj dC0+b2JqZWN0SWQpOworCQkJYnJlYWs7CisKIAkJY2FzZSBQdWJsaWNhdGlvblJlbGF0aW9uSWQ6 CiAJCQl7CiAJCQkJY2hhcgkgICAqcHVibmFtZTsKQEAgLTYxNDEsNiArNjQ0NSw4IEBAIGdldF9y ZWxraW5kX29ianR5cGUoY2hhciByZWxraW5kKQogCQkJcmV0dXJuIE9CSkVDVF9NQVRWSUVXOwog CQljYXNlIFJFTEtJTkRfRk9SRUlHTl9UQUJMRToKIAkJCXJldHVybiBPQkpFQ1RfRk9SRUlHTl9U QUJMRTsKKwkJY2FzZSBSRUxLSU5EX1BST1BHUkFQSDoKKwkJCXJldHVybiBPQkpFQ1RfUFJPUEdS QVBIOwogCQljYXNlIFJFTEtJTkRfVE9BU1RWQUxVRToKIAkJCXJldHVybiBPQkpFQ1RfVEFCTEU7 CiAJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NsYXNzLmMg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NsYXNzLmMKaW5kZXggZTA1YjBiYmIyZS4uNzQ4ZjA2 YjNmZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jbGFzcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfY2xhc3MuYwpAQCAtNDUsNiArNDUsOCBAQCBlcnJkZXRhaWxf cmVsa2luZF9ub3Rfc3VwcG9ydGVkKGNoYXIgcmVsa2luZCkKIAkJCXJldHVybiBlcnJkZXRhaWwo IlRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcy4i KTsKIAkJY2FzZSBSRUxLSU5EX1BBUlRJVElPTkVEX0lOREVYOgogCQkJcmV0dXJuIGVycmRldGFp bCgiVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgcGFydGl0aW9uZWQgaW5kZXhl cy4iKTsKKwkJY2FzZSBSRUxLSU5EX1BST1BHUkFQSDoKKwkJCXJldHVybiBlcnJkZXRhaWwoIlRo aXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHByb3BlcnR5IGdyYXBocy4iKTsKIAkJ ZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgcmVsa2luZDogJyVjJyIsIHJl bGtpbmQpOwogCQkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3Nx bF9mZWF0dXJlcy50eHQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKaW5k ZXggYzAwMmYzNzIwMi4uYjQ5YWFkNTQxYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zcWxfZmVhdHVyZXMudHh0CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVz LnR4dApAQCAtMzQ4LDYgKzM0OCwxMDYgQEAgRjg2NglGRVRDSCBGSVJTVCBjbGF1c2U6IFBFUkNF TlQgb3B0aW9uCQkJTk8KIEY4NjcJRkVUQ0ggRklSU1QgY2xhdXNlOiBXSVRIIFRJRVMgb3B0aW9u CQkJWUVTCQogRjg2OAlPUkRFUiBCWSBpbiBncm91cGVkIHRhYmxlCQkJWUVTCQogRjg2OQlTUUwg aW1wbGVtZW50YXRpb24gaW5mbyBwb3B1bGF0aW9uCQkJWUVTCQorRzAwMAlHcmFwaCBwYXR0ZXJu CQkJWUVTCVNRTC9QR1EgcmVxdWlyZWQKK0cwMDEJUmVwZWF0YWJsZS1lbGVtZW50cyBtYXRjaCBt b2RlCQkJWUVTCVNRTC9QR1EgcmVxdWlyZWQKK0cwMDIJRGlmZmVyZW50LWVkZ2VzIG1hdGNoIG1v ZGUJCQlOTwkKK0cwMDMJRXhwbGljaXQgUkVQRUFUQUJMRSBFTEVNRU5UUyBrZXl3b3JkCQkJTk8J CitHMDA0CVBhdGggdmFyaWFibGVzCQkJTk8JCitHMDA1CVBhdGggc2VhcmNoIHByZWZpeCBpbiBh IHBhdGggcGF0dGVybgkJCU5PCQorRzAwNglHcmFwaCBwYXR0ZXJuIEtFRVAgY2xhdXNlOiBwYXRo IG1vZGUgcHJlZml4CQkJTk8JCitHMDA3CUdyYXBoIHBhdHRlcm4gS0VFUCBjbGF1c2U6IHBhdGgg c2VhcmNoIHByZWZpeAkJCU5PCQorRzAwOAlHcmFwaCBwYXR0ZXJuIFdIRVJFIGNsYXVzZQkJCVlF UwlTUUwvUEdRIHJlcXVpcmVkCitHMDEwCUV4cGxpY2l0IFdBTEsga2V5d29yZAkJCU5PCQorRzAx MQlBZHZhbmNlZCBwYXRoIG1vZGVzOiBUUkFJTAkJCU5PCQorRzAxMglBZHZhbmNlZCBwYXRoIG1v ZGVzOiBTSU1QTEUJCQlOTwkKK0cwMTMJQWR2YW5jZWQgcGF0aCBtb2RlczogQUNZQ0xJQwkJCU5P CQorRzAxNAlFeHBsaWNpdCBQQVRIL1BBVEhTIGtleXdvcmRzCQkJTk8JCitHMDE1CUFsbCBwYXRo IHNlYXJjaDogZXhwbGljaXQgQUxMIGtleXdvcmQJCQlOTwkKK0cwMTYJQW55IHBhdGggc2VhcmNo CQkJTk8JCitHMDE3CUFsbCBzaG9ydGVzdCBwYXRoIHNlYXJjaAkJCU5PCQorRzAxOAlBbnkgc2hv cnRlc3QgcGF0aCBzZWFyY2gJCQlOTwkKK0cwMTkJQ291bnRlZCBzaG9ydGVzdCBwYXRoIHNlYXJj aAkJCU5PCQorRzAyMAlDb3VudGVkIHNob3J0ZXN0IGdyb3VwIHNlYXJjaAkJCU5PCQorRzAzMAlQ YXRoIG11bHRpc2V0IGFsdGVybmF0aW9uCQkJTk8JCitHMDMxCVBhdGggbXVsdGlzZXQgYWx0ZXJu YXRpb246IHZhcmlhYmxlIGxlbmd0aCBwYXRoIG9wZXJhbmRzCQkJTk8JCitHMDMyCVBhdGggcGF0 dGVybiB1bmlvbgkJCU5PCQorRzAzMwlQYXRoIHBhdHRlcm4gdW5pb246IHZhcmlhYmxlIGxlbmd0 aCBwYXRoIG9wZXJhbmRzCQkJTk8JCitHMDM0CVBhdGggY29uY2F0ZW5hdGlvbgkJCVlFUwlTUUwv UEdRIHJlcXVpcmVkCitHMDM1CVF1YW50aWZpZWQgcGF0aHMJCQlOTwkKK0cwMzYJUXVhbnRpZmll ZCBlZGdlcwkJCU5PCQorRzAzNwlRdWVzdGlvbmVkIHBhdGhzCQkJTk8JCitHMDM4CVBhcmVudGhl c2l6ZWQgcGF0aCBwYXR0ZXJuIGV4cHJlc3Npb24JCQlOTwkKK0cwMzkJU2ltcGxpZmllZCBwYXRo IHBhdHRlcm4gZXhwcmVzc2lvbjogZnVsbCBkZWZhdWx0aW5nCQkJTk8JCitHMDQwCVZlcnRleCBw YXR0ZXJuCQkJWUVTCVNRTC9QR1EgcmVxdWlyZWQKK0cwNDEJTm9uLWxvY2FsIGVsZW1lbnQgcGF0 dGVybiBwcmVkaWNhdGVzCQkJTk8JCitHMDQyCUJhc2ljIGZ1bGwgZWRnZSBwYXR0ZXJucwkJCVlF UwlTUUwvUEdRIHJlcXVpcmVkCitHMDQzCUNvbXBsZXRlIGZ1bGwgZWRnZSBwYXR0ZXJucwkJCU5P CQorRzA0NAlCYXNpYyBhYmJyZXZpYXRlZCBlZGdlIHBhdHRlcm5zCQkJWUVTCQorRzA0NQlDb21w bGV0ZSBhYmJyZXZpYXRlZCBlZGdlIHBhdHRlcm5zCQkJTk8JCitHMDQ2CVJlbGF4ZWQgdG9wb2xv Z2ljYWwgY29uc2lzdGVuY3k6IGFkamFjZW50IHZlcnRleCBwYXR0ZXJucwkJCU5PCQorRzA0NwlS ZWxheGVkIHRvcG9sb2dpY2FsIGNvbnNpc3RlbmN5OiBjb25jaXNlIGVkZ2UgcGF0dGVybnMJCQlO TwkKK0cwNDgJUGFyZW50aGVzaXplZCBwYXRoIHBhdHRlcm46IHN1YnBhdGggdmFyaWFibGUgZGVj bGFyYXRpb24JCQlOTwkKK0cwNDkJUGFyZW50aGVzaXplZCBwYXRoIHBhdHRlcm46IHBhdGggbW9k ZSBwcmVmaXgJCQlOTwkKK0cwNTAJUGFyZW50aGVzaXplZCBwYXRoIHBhdHRlcm46IFdIRVJFIGNs YXVzZQkJCU5PCQorRzA1MQlQYXJlbnRoZXNpemVkIHBhdGggcGF0dGVybjogbm9uLWxvY2FsIHBy ZWRpY2F0ZXMJCQlOTwkKK0cwNjAJQm91bmRlZCBncmFwaCBwYXR0ZXJuIHF1YW50aWZpZXJzCQkJ Tk8JCitHMDYxCVVuYm91bmRlZCBncmFwaCBwYXR0ZXJuIHF1YW50aWZpZXJzCQkJTk8JCitHMDcw CUxhYmVsIGV4cHJlc3Npb246IGxhYmVsIGRpc2p1bmN0aW9uCQkJTk8JU1FML1BHUSByZXF1aXJl ZAorRzA3MQlMYWJlbCBleHByZXNzaW9uOiBsYWJlbCBjb25qdW5jdGlvbgkJCU5PCQorRzA3MglM YWJlbCBleHByZXNzaW9uOiBsYWJlbCBuZWdhdGlvbgkJCU5PCQorRzA3MwlMYWJlbCBleHByZXNz aW9uOiBpbmRpdmlkdWFsIGxhYmVsIG5hbWUJCQlZRVMJU1FML1BHUSByZXF1aXJlZAorRzA3NAlM YWJlbCBleHByZXNzaW9uOiB3aWxkY2FyZCBsYWJlbAkJCU5PCQorRzA3NQlQYXJlbnRoZXNpemVk IGxhYmVsIGV4cHJlc3Npb24JCQlOTwkKK0cwODAJU2ltcGxpZmllZCBwYXRoIHBhdHRlcm4gZXhw cmVzc2lvbjogYmFzaWMgZGVmYXVsdGluZwkJCU5PCQorRzA4MQlTaW1wbGlmaWVkIHBhdGggcGF0 dGVybiBleHByZXNzaW9uOiBmdWxsIG92ZXJyaWRlcwkJCU5PCQorRzA4MglTaW1wbGlmaWVkIHBh dGggcGF0dGVybiBleHByZXNzaW9uOiBiYXNpYyBvdmVycmlkZXMJCQlOTwkKK0cwOTAJUHJvcGVy dHkgcmVmZXJlbmNlCQkJWUVTCVNRTC9QR1EgcmVxdWlyZWQKK0cxMDAJRUxFTUVOVF9JRCBmdW5j dGlvbgkJCU5PCQorRzExMAlJUyBESVJFQ1RFRCBwcmVkaWNhdGUJCQlOTwkKK0cxMTEJSVMgTEFC RUxFRCBwcmVkaWNhdGUJCQlOTwkKK0cxMTIJSVMgU09VUkNFIGFuZCBJUyBERVNUSU5BVElPTiBw cmVkaWNhdGUJCQlOTwkKK0cxMTMJQUxMX0RJRkZFUkVOVCBwcmVkaWNhdGUJCQlOTwkKK0cxMTQJ U0FNRSBwcmVkaWNhdGUJCQlOTwkKK0cxMTUJUFJPUEVSVFlfRVhJU1RTIHByZWRpY2F0ZQkJCU5P CQorRzEyMAlXaXRoaW4tbWF0Y2ggYWdncmVnYXRlcwkJCU5PCQorRzgwMAlQQVRIX05BTUUgZnVu Y3Rpb24JCQlOTwkKK0c4MDEJRUxFTUVOVF9OVU1CRVIgZnVuY3Rpb24JCQlOTwkKK0c4MDIJUEFU SF9MRU5HVEggZnVuY3Rpb24JCQlOTwkKK0c4MDMJTUFUQ0hOVU0gZnVuY3Rpb24JCQlOTwkKK0c4 MTAJSVMgQk9VTkQgcHJlZGljYXRlCQkJTk8JCitHODExCUlTIEJPVU5EIHByZWRpY2F0ZTogQVMg b3B0aW9uCQkJTk8JCitHODIwCUJJTkRJTkdfQ09VTlQJCQlOTwkKK0c4MzAJQ29sb24gaW4gJ2lz IGxhYmVsJyBleHByZXNzaW9uCQkJWUVTCQorRzg0MAlQYXRoLW9yZGVyZWQgYWdncmVnYXRlcwkJ CU5PCQorRzg1MAlTUUwvUEdRIEluZm9ybWF0aW9uIFNjaGVtYSB2aWV3cwkJCVlFUwkKK0c4NjAJ R0VUIERJQUdOT1NUSUNTIGVuaGFuY2VtZW50cyBmb3IgU1FMLXByb3BlcnR5IGdyYXBocwkJCU5P CQorRzkwMAlHUkFQSF9UQUJMRQkJCVlFUwlTUUwvUEdRIHJlcXVpcmVkCitHOTAxCUdSQVBIX1RB QkxFOiBPTkUgUk9XIFBFUiBWRVJURVgJCQlOTwkKK0c5MDIJR1JBUEhfVEFCTEU6IE9ORSBST1cg UEVSIFNURVAJCQlOTwkKK0c5MDMJR1JBUEhfVEFCTEU6IGV4cGxpY2l0IE9ORSBST1cgUEVSIE1B VENIIGtleXdvcmRzCQkJTk8JCitHOTA0CUFsbCBwcm9wZXJ0aWVzIHJlZmVyZW5jZQkJCU5PCQor RzkwNQlHUkFQSF9UQUJMRTogb3B0aW9uYWwgQ09MVU1OUyBjbGF1c2UJCQlOTwkKK0c5MDYJR1JB UEhfVEFCTEU6IGV4cGxpY2l0IEVYUE9SVCBBTEwJCQlOTwkKK0c5MDcJR1JBUEhfVEFCTEU6IEVY UE9SVCBBTEwgRVhDRVBUCQkJTk8JCitHOTA4CUdSQVBIX1RBQkxFOiBFWFBPUlQgU0lOR0xFVE9O UyBsaXN0CQkJTk8JCitHOTA5CUdSQVBIX1RBQkxFOiBleHBsaWNpdCBFWFBPUlQgTk8gU0lOR0xF VE9OUwkJCU5PCQorRzkxMAlHUkFQSF9UQUJMRTogJ2luIHBhdGhzIGNsYXVzZScJCQlOTwkKK0c5 MjAJRERMLWJhc2VkIFNRTC1wcm9wZXJ0eSBncmFwaHMJCQlZRVMJU1FML1BHUSByZXF1aXJlZAor RzkyMQlFbXB0eSBTUUwtcHJvcGVydHkgZ3JhcGgJCQlZRVMJCitHOTIyCVZpZXdzIGFzIGVsZW1l bnQgdGFibGVzCQkJWUVTCQorRzkyMwlJbi1saW5lIHZpZXdzIGFzIGVsZW1lbnQgdGFibGVzCQkJ Tk8JCitHOTI0CUV4cGxpY2l0IGtleSBjbGF1c2UgZm9yIGVsZW1lbnQgdGFibGVzCQkJWUVTCVNR TC9QR1EgcmVxdWlyZWQKK0c5MjUJRXhwbGljaXQgbGFiZWwgYW5kIHByb3BlcnRpZXMgY2xhdXNl IGZvciBlbGVtZW50IHRhYmxlcwkJCVlFUwlTUUwvUEdRIHJlcXVpcmVkCitHOTI2CU1vcmUgdGhh biBvbmUgbGFiZWwgZm9yIHZlcnRleCB0YWJsZXMJCQlZRVMJCitHOTI3CU1vcmUgdGhhbiBvbmUg bGFiZWwgZm9yIGVkZ2UgdGFibGVzCQkJWUVTCQorRzkyOAlWYWx1ZSBleHByZXNzaW9ucyBhcyBw cm9wZXJ0aWVzIGFuZCByZW5hbWluZyBvZiBwcm9wZXJ0aWVzCQkJWUVTCQorRzkyOQlMYWJlbHMg YW5kIHByb3BlcnRpZXM6IEVYQ0VQVCBsaXN0CQkJTk8JCitHOTQwCU11bHRpLXNvdXJjZWQvZGVz dGluZWQgZWRnZXMJCQlZRVMJCitHOTQxCUltcGxpY2l0IHJlbW92YWwgb2YgaW5jb21wbGV0ZSBl ZGdlcwkJCVlFUwkKK0c5NTAJQWx0ZXIgcHJvcGVydHkgZ3JhcGggc3RhdGVtZW50OiBBREQvRFJP UCBlbGVtZW50IHRhYmxlCQkJWUVTCQorRzk2MAlBbHRlciBlbGVtZW50IHRhYmxlIGRlZmluaXRp b246IEFERC9EUk9QIExBQkVMCQkJWUVTCQorRzk3MAlBbHRlciBlbGVtZW50IHRhYmxlIGRlZmlu aXRpb246IEFMVEVSIExBQkVMCQkJWUVTCQorRzk4MAlEUk9QIFBST1BFUlRZIEdSQVBIOiBDQVND QURFIGRyb3AgYmVoYXZpb3IJCQlZRVMJCiBSMDEwCVJvdyBwYXR0ZXJuIHJlY29nbml0aW9uOiBG Uk9NIGNsYXVzZQkJCU5PCQogUjAyMAlSb3cgcGF0dGVybiByZWNvZ25pdGlvbjogV0lORE9XIGNs YXVzZQkJCU5PCQogUjAzMAlSb3cgcGF0dGVybiByZWNvZ25pdGlvbjogZnVsbCBhZ2dyZWdhdGUg c3VwcG9ydAkJCU5PCQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQppbmRleCBjZWRlOTBjM2I5Li43MjcxNGI3 ZDhjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQorKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQpAQCAtNDYsNiArNDYsNyBAQCBPQkpTID0gXAogCXBv cnRhbGNtZHMubyBcCiAJcHJlcGFyZS5vIFwKIAlwcm9jbGFuZy5vIFwKKwlwcm9wZ3JhcGhjbWRz Lm8gXAogCXB1YmxpY2F0aW9uY21kcy5vIFwKIAlzY2hlbWFjbWRzLm8gXAogCXNlY2xhYmVsLm8g XApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2FsdGVyLmMKaW5kZXggNGY5OWViYjQ0Ny4uMTRkZWNhNWY1NCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9hbHRlci5jCkBAIC0zNzksNiArMzc5LDcgQEAgRXhlY1JlbmFtZVN0bXQoUmVuYW1lU3RtdCAq c3RtdCkKIAkJY2FzZSBPQkpFQ1RfTUFUVklFVzoKIAkJY2FzZSBPQkpFQ1RfSU5ERVg6CiAJCWNh c2UgT0JKRUNUX0ZPUkVJR05fVEFCTEU6CisJCWNhc2UgT0JKRUNUX1BST1BHUkFQSDoKIAkJCXJl dHVybiBSZW5hbWVSZWxhdGlvbihzdG10KTsKIAogCQljYXNlIE9CSkVDVF9DT0xVTU46CkBAIC01 MzUsNiArNTM2LDcgQEAgRXhlY0FsdGVyT2JqZWN0U2NoZW1hU3RtdChBbHRlck9iamVjdFNjaGVt YVN0bXQgKnN0bXQsCiAJCWNhc2UgT0JKRUNUX1RBQkxFOgogCQljYXNlIE9CSkVDVF9WSUVXOgog CQljYXNlIE9CSkVDVF9NQVRWSUVXOgorCQljYXNlIE9CSkVDVF9QUk9QR1JBUEg6CiAJCQlhZGRy ZXNzID0gQWx0ZXJUYWJsZU5hbWVzcGFjZShzdG10LAogCQkJCQkJCQkJCSAgb2xkU2NoZW1hQWRk ciA/ICZvbGROc3BPaWQgOiBOVUxMKTsKIAkJCWJyZWFrOwpAQCAtODcwLDYgKzg3Miw3IEBAIEV4 ZWNBbHRlck93bmVyU3RtdChBbHRlck93bmVyU3RtdCAqc3RtdCkKIAkJY2FzZSBPQkpFQ1RfT1BD TEFTUzoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CiAJCWNhc2UgT0JKRUNUX1BST0NFRFVSRToK KwkJY2FzZSBPQkpFQ1RfUFJPUEdSQVBIOgogCQljYXNlIE9CSkVDVF9ST1VUSU5FOgogCQljYXNl IE9CSkVDVF9TVEFUSVNUSUNfRVhUOgogCQljYXNlIE9CSkVDVF9UQUJMRVNQQUNFOgpAQCAtODc5 LDE2ICs4ODIsMjkgQEAgRXhlY0FsdGVyT3duZXJTdG10KEFsdGVyT3duZXJTdG10ICpzdG10KQog CQkJCVJlbGF0aW9uCXJlbGF0aW9uOwogCQkJCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKIAotCQkJ CWFkZHJlc3MgPSBnZXRfb2JqZWN0X2FkZHJlc3Moc3RtdC0+b2JqZWN0VHlwZSwKLQkJCQkJCQkJ CQkJIHN0bXQtPm9iamVjdCwKLQkJCQkJCQkJCQkJICZyZWxhdGlvbiwKLQkJCQkJCQkJCQkJIEFj Y2Vzc0V4Y2x1c2l2ZUxvY2ssCi0JCQkJCQkJCQkJCSBmYWxzZSk7Ci0JCQkJQXNzZXJ0KHJlbGF0 aW9uID09IE5VTEwpOworCQkJCWlmIChzdG10LT5yZWxhdGlvbikKKwkJCQkJYWRkcmVzcyA9IGdl dF9vYmplY3RfYWRkcmVzc19ydihzdG10LT5vYmplY3RUeXBlLAorCQkJCQkJCQkJCQkJCXN0bXQt PnJlbGF0aW9uLAorCQkJCQkJCQkJCQkJCU5JTCwKKwkJCQkJCQkJCQkJCQkmcmVsYXRpb24sCisJ CQkJCQkJCQkJCQkJQWNjZXNzRXhjbHVzaXZlTG9jaywKKwkJCQkJCQkJCQkJCQlmYWxzZSk7CisJ CQkJZWxzZQorCQkJCXsKKwkJCQkJYWRkcmVzcyA9IGdldF9vYmplY3RfYWRkcmVzcyhzdG10LT5v YmplY3RUeXBlLAorCQkJCQkJCQkJCQkJIHN0bXQtPm9iamVjdCwKKwkJCQkJCQkJCQkJCSAmcmVs YXRpb24sCisJCQkJCQkJCQkJCQkgQWNjZXNzRXhjbHVzaXZlTG9jaywKKwkJCQkJCQkJCQkJCSBm YWxzZSk7CisJCQkJCUFzc2VydChyZWxhdGlvbiA9PSBOVUxMKTsKKwkJCQl9CiAKIAkJCQlBbHRl ck9iamVjdE93bmVyX2ludGVybmFsKGFkZHJlc3MuY2xhc3NJZCwgYWRkcmVzcy5vYmplY3RJZCwK IAkJCQkJCQkJCQkgIG5ld293bmVyKTsKIAorCQkJCWlmIChyZWxhdGlvbikKKwkJCQkJcmVsYXRp b25fY2xvc2UocmVsYXRpb24sIE5vTG9jayk7CisKIAkJCQlyZXR1cm4gYWRkcmVzczsKIAkJCX0K IAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZHJvcGNtZHMuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3BjbWRzLmMKaW5kZXggODVlZWM3ZTM5NC4uOGQ2ZmFm MWVkZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZHJvcGNtZHMuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9kcm9wY21kcy5jCkBAIC00ODIsNiArNDgyLDcgQEAgZG9lc19u b3RfZXhpc3Rfc2tpcHBpbmcoT2JqZWN0VHlwZSBvYmp0eXBlLCBOb2RlICpvYmplY3QpCiAJCWNh c2UgT0JKRUNUX0ZPUkVJR05fVEFCTEU6CiAJCWNhc2UgT0JKRUNUX0lOREVYOgogCQljYXNlIE9C SkVDVF9NQVRWSUVXOgorCQljYXNlIE9CSkVDVF9QUk9QR1JBUEg6CiAJCWNhc2UgT0JKRUNUX1JP TEU6CiAJCWNhc2UgT0JKRUNUX1NFUVVFTkNFOgogCQljYXNlIE9CSkVDVF9TVUJTQ1JJUFRJT046 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5kZXggN2E1ZWQ2Yjk4NS4uMTZmZGE3 ODM4MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpAQCAtMjE3Nyw2ICsyMTc3 LDcgQEAgc3RyaW5naWZ5X2dyYW50X29ianR5cGUoT2JqZWN0VHlwZSBvYmp0eXBlKQogCQljYXNl IE9CSkVDVF9PUEVSQVRPUjoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CiAJCWNhc2UgT0JKRUNU X1BPTElDWToKKwkJY2FzZSBPQkpFQ1RfUFJPUEdSQVBIOgogCQljYXNlIE9CSkVDVF9QVUJMSUNB VElPTjoKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fTkFNRVNQQUNFOgogCQljYXNlIE9CSkVD VF9QVUJMSUNBVElPTl9SRUw6CkBAIC0yMjYxLDYgKzIyNjIsNyBAQCBzdHJpbmdpZnlfYWRlZnBy aXZzX29ianR5cGUoT2JqZWN0VHlwZSBvYmp0eXBlKQogCQljYXNlIE9CSkVDVF9PUEZBTUlMWToK IAkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKIAkJY2FzZSBPQkpFQ1RfUE9MSUNZOgorCQlj YXNlIE9CSkVDVF9QUk9QR1JBUEg6CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OOgogCQljYXNl IE9CSkVDVF9QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9O X1JFTDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKaW5kZXggNzU0OWJlNWRjMy4uYWQzNjNkNjFl NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKQEAgLTM0LDYgKzM0LDcgQEAgYmFja2VuZF9z b3VyY2VzICs9IGZpbGVzKAogICAncG9ydGFsY21kcy5jJywKICAgJ3ByZXBhcmUuYycsCiAgICdw cm9jbGFuZy5jJywKKyAgJ3Byb3BncmFwaGNtZHMuYycsCiAgICdwdWJsaWNhdGlvbmNtZHMuYycs CiAgICdzY2hlbWFjbWRzLmMnLAogICAnc2VjbGFiZWwuYycsCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9wcm9wZ3JhcGhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcm9w Z3JhcGhjbWRzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZjIwNGZj MzEyNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Byb3BncmFwaGNt ZHMuYwpAQCAtMCwwICsxLDE3MDYgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHByb3Bn cmFwaGNtZHMuYworICoJICBwcm9wZXJ0eSBncmFwaCBtYW5pcHVsYXRpb24KKyAqCisgKiBQb3J0 aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUg VW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJv cGdyYXBoY21kcy5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0 Z3Jlcy5oIgorCisjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0 dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgorI2luY2x1ZGUgImFjY2Vz cy94YWN0LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9pbmRleGluZy5oIgorI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9wZ19jbGFzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvcGdyYXBoX2VsZW1l bnQuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb3BncmFwaF9lbGVtZW50X2xhYmVsLmgiCisj aW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9wZ3JhcGhfbGFiZWwuaCIKKyNpbmNsdWRlICJjYXRhbG9n L3BnX3Byb3BncmFwaF9sYWJlbF9wcm9wZXJ0eS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJv cGdyYXBoX3Byb3BlcnR5LmgiCisjaW5jbHVkZSAiY29tbWFuZHMvcHJvcGdyYXBoY21kcy5oIgor I2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlY21kcy5oIgorI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5j cy5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxhdGlvbi5oIgorI2luY2x1ZGUgInBhcnNl ci9wYXJzZV90YXJnZXQuaCIKKyNpbmNsdWRlICJ1dGlscy9hcnJheS5oIgorI2luY2x1ZGUgInV0 aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKKyNpbmNsdWRlICJ1 dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRlICJ1dGls cy9ydWxldXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorCisKK3N0cnVjdCBl bGVtZW50X2luZm8KK3sKKwlPaWQJCQllbGVtZW50aWQ7CisJY2hhcgkJa2luZDsKKwlPaWQJCQly ZWxpZDsKKwljaGFyCSAgICphbGlhc25hbWU7CisJQXJyYXlUeXBlICAqa2V5OworCisJY2hhcgkg ICAqc3JjdmVydGV4OworCU9pZAkJCXNyY3ZlcnRleGlkOworCU9pZAkJCXNyY3JlbGlkOworCUFy cmF5VHlwZSAgKnNyY2tleTsKKwlBcnJheVR5cGUgICpzcmNyZWY7CisKKwljaGFyCSAgICpkZXN0 dmVydGV4OworCU9pZAkJCWRlc3R2ZXJ0ZXhpZDsKKwlPaWQJCQlkZXN0cmVsaWQ7CisJQXJyYXlU eXBlICAqZGVzdGtleTsKKwlBcnJheVR5cGUgICpkZXN0cmVmOworCisJTGlzdAkgICAqbGFiZWxz OworfTsKKworCitzdGF0aWMgQXJyYXlUeXBlICpwcm9wZ3JhcGhfZWxlbWVudF9nZXRfa2V5KFBh cnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgTGlzdCAqa2V5Y29scywgUmVsYXRpb24gZWxlbWVudF9y ZWwsCisJCQkJCQkJCQkJCWNvbnN0IGNoYXIgKmFsaWFzbmFtZSwgaW50IGxvY2F0aW9uKTsKK3N0 YXRpYyB2b2lkIHByb3BncmFwaF9lZGdlX2dldF9yZWZfa2V5cyhQYXJzZVN0YXRlICpwc3RhdGUs IGNvbnN0IExpc3QgKmtleWNvbHMsIGNvbnN0IExpc3QgKnJlZmNvbHMsCisJCQkJCQkJCQkJUmVs YXRpb24gZWRnZV9yZWwsIFJlbGF0aW9uIHJlZl9yZWwsCisJCQkJCQkJCQkJY29uc3QgY2hhciAq YWxpYXNuYW1lLCBpbnQgbG9jYXRpb24sIGNvbnN0IGNoYXIgKnR5cGUsCisJCQkJCQkJCQkJQXJy YXlUeXBlICoqb3V0a2V5LCBBcnJheVR5cGUgKipvdXRyZWYpOworc3RhdGljIEFycmF5VHlwZSAq YXJyYXlfZnJvbV9jb2x1bW5fbGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IExpc3QgKmNv bG5hbWVzLCBpbnQgbG9jYXRpb24sIFJlbGF0aW9uIGVsZW1lbnRfcmVsKTsKK3N0YXRpYyBBcnJh eVR5cGUgKmFycmF5X2Zyb21fYXR0bnVtcyhpbnQgbnVtYXR0cnMsIGNvbnN0IEF0dHJOdW1iZXIg KmF0dG51bXMpOworc3RhdGljIE9pZAlpbnNlcnRfZWxlbWVudF9yZWNvcmQoT2JqZWN0QWRkcmVz cyBwZ2FkZHJlc3MsIHN0cnVjdCBlbGVtZW50X2luZm8gKmVpbmZvKTsKK3N0YXRpYyBPaWQJaW5z ZXJ0X2xhYmVsX3JlY29yZChPaWQgZ3JhcGhpZCwgT2lkIHBlb2lkLCBjb25zdCBjaGFyICpsYWJl bCk7CitzdGF0aWMgdm9pZCBpbnNlcnRfcHJvcGVydHlfcmVjb3JkcyhPaWQgZ3JhcGhpZCwgT2lk IGVsbGFiZWxvaWQsIE9pZCBwZ2VyZWxpZCwgY29uc3QgUHJvcEdyYXBoUHJvcGVydGllcyAqcHJv cGVydGllcyk7CitzdGF0aWMgdm9pZCBpbnNlcnRfcHJvcGVydHlfcmVjb3JkKE9pZCBncmFwaGlk LCBPaWQgZWxsYWJlbG9pZCwgT2lkIHBnZXJlbGlkLCBjb25zdCBjaGFyICpwcm9wbmFtZSwgY29u c3QgRXhwciAqZXhwcik7CitzdGF0aWMgdm9pZCBjaGVja19lbGVtZW50X3Byb3BlcnRpZXMoT2lk IHBlb2lkKTsKK3N0YXRpYyB2b2lkIGNoZWNrX2VsZW1lbnRfbGFiZWxfcHJvcGVydGllcyhPaWQg ZWxsYWJlbG9pZCk7CitzdGF0aWMgdm9pZCBjaGVja19hbGxfbGFiZWxzX3Byb3BlcnRpZXMoT2lk IHBncmVsaWQpOworc3RhdGljIE9pZAlnZXRfdmVydGV4X29pZChQYXJzZVN0YXRlICpwc3RhdGUs IE9pZCBwZ3JlbGlkLCBjb25zdCBjaGFyICphbGlhcywgaW50IGxvY2F0aW9uKTsKK3N0YXRpYyBP aWQJZ2V0X2VkZ2Vfb2lkKFBhcnNlU3RhdGUgKnBzdGF0ZSwgT2lkIHBncmVsaWQsIGNvbnN0IGNo YXIgKmFsaWFzLCBpbnQgbG9jYXRpb24pOworc3RhdGljIE9pZAlnZXRfZWxlbWVudF9yZWxpZChP aWQgcGVpZCk7CitzdGF0aWMgTGlzdCAqZ2V0X2dyYXBoX2xhYmVsX2lkcyhPaWQgZ3JhcGhpZCk7 CitzdGF0aWMgTGlzdCAqZ2V0X2xhYmVsX2VsZW1lbnRfbGFiZWxfaWRzKE9pZCBsYWJlbGlkKTsK K3N0YXRpYyBMaXN0ICpnZXRfZWxlbWVudF9sYWJlbF9wcm9wZXJ0eV9uYW1lcyhPaWQgZWxsYWJl bG9pZCk7CitzdGF0aWMgTGlzdCAqZ2V0X2dyYXBoX3Byb3BlcnR5X2lkcyhPaWQgZ3JhcGhpZCk7 CisKKworLyoKKyAqIENSRUFURSBQUk9QRVJUWSBHUkFQSAorICovCitPYmplY3RBZGRyZXNzCitD cmVhdGVQcm9wR3JhcGgoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBDcmVhdGVQcm9wR3JhcGhT dG10ICpzdG10KQoreworCUNyZWF0ZVN0bXQgKmNzdG10ID0gbWFrZU5vZGUoQ3JlYXRlU3RtdCk7 CisJY2hhcgkJY29tcG9uZW50c19wZXJzaXN0ZW5jZTsKKwlMaXN0Q2VsbCAgICpsYzsKKwlPYmpl Y3RBZGRyZXNzIHBnYWRkcmVzczsKKwlMaXN0CSAgICp2ZXJ0ZXhfaW5mb3MgPSBOSUw7CisJTGlz dAkgICAqZWRnZV9pbmZvcyA9IE5JTDsKKwlMaXN0CSAgICplbGVtZW50X2FsaWFzZXMgPSBOSUw7 CisJTGlzdAkgICAqZWxlbWVudF9vaWRzID0gTklMOworCisJaWYgKHN0bXQtPnBnbmFtZS0+cmVs cGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVU5MT0dHRUQpCisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCSBlcnJtc2coInByb3Bl cnR5IGdyYXBocyBjYW5ub3QgYmUgdW5sb2dnZWQgYmVjYXVzZSB0aGV5IGRvIG5vdCBoYXZlIHN0 b3JhZ2UiKSkpOworCisJY29tcG9uZW50c19wZXJzaXN0ZW5jZSA9IFJFTFBFUlNJU1RFTkNFX1BF Uk1BTkVOVDsKKworCWZvcmVhY2gobGMsIHN0bXQtPnZlcnRleF90YWJsZXMpCisJeworCQlQcm9w R3JhcGhWZXJ0ZXggKnZlcnRleCA9IGxmaXJzdF9ub2RlKFByb3BHcmFwaFZlcnRleCwgbGMpOwor CQlzdHJ1Y3QgZWxlbWVudF9pbmZvICp2aW5mbzsKKwkJUmVsYXRpb24JcmVsOworCisJCXZpbmZv ID0gcGFsbG9jMF9vYmplY3Qoc3RydWN0IGVsZW1lbnRfaW5mbyk7CisJCXZpbmZvLT5raW5kID0g UEdFS0lORF9WRVJURVg7CisKKwkJdmluZm8tPnJlbGlkID0gUmFuZ2VWYXJHZXRSZWxpZEV4dGVu ZGVkKHZlcnRleC0+dnRhYmxlLCBBY2Nlc3NTaGFyZUxvY2ssIDAsIFJhbmdlVmFyQ2FsbGJhY2tP d25zUmVsYXRpb24sIE5VTEwpOworCisJCXJlbCA9IHRhYmxlX29wZW4odmluZm8tPnJlbGlkLCBO b0xvY2spOworCisJCWlmIChyZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lT VEVOQ0VfVEVNUCkKKwkJCWNvbXBvbmVudHNfcGVyc2lzdGVuY2UgPSBSRUxQRVJTSVNURU5DRV9U RU1QOworCisJCWlmICh2ZXJ0ZXgtPnZ0YWJsZS0+YWxpYXMpCisJCQl2aW5mby0+YWxpYXNuYW1l ID0gdmVydGV4LT52dGFibGUtPmFsaWFzLT5hbGlhc25hbWU7CisJCWVsc2UKKwkJCXZpbmZvLT5h bGlhc25hbWUgPSB2ZXJ0ZXgtPnZ0YWJsZS0+cmVsbmFtZTsKKworCQlpZiAobGlzdF9tZW1iZXIo ZWxlbWVudF9hbGlhc2VzLCBtYWtlU3RyaW5nKHZpbmZvLT5hbGlhc25hbWUpKSkKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJ IGVycm1zZygiYWxpYXMgXCIlc1wiIHVzZWQgbW9yZSB0aGFuIG9uY2UgYXMgZWxlbWVudCB0YWJs ZSIsIHZpbmZvLT5hbGlhc25hbWUpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwg dmVydGV4LT5sb2NhdGlvbikpKTsKKworCQl2aW5mby0+a2V5ID0gcHJvcGdyYXBoX2VsZW1lbnRf Z2V0X2tleShwc3RhdGUsIHZlcnRleC0+dmtleSwgcmVsLCB2aW5mby0+YWxpYXNuYW1lLCB2ZXJ0 ZXgtPmxvY2F0aW9uKTsKKworCQl2aW5mby0+bGFiZWxzID0gdmVydGV4LT5sYWJlbHM7CisKKwkJ dGFibGVfY2xvc2UocmVsLCBOb0xvY2spOworCisJCXZlcnRleF9pbmZvcyA9IGxhcHBlbmQodmVy dGV4X2luZm9zLCB2aW5mbyk7CisKKwkJZWxlbWVudF9hbGlhc2VzID0gbGFwcGVuZChlbGVtZW50 X2FsaWFzZXMsIG1ha2VTdHJpbmcodmluZm8tPmFsaWFzbmFtZSkpOworCX0KKworCWZvcmVhY2go bGMsIHN0bXQtPmVkZ2VfdGFibGVzKQorCXsKKwkJUHJvcEdyYXBoRWRnZSAqZWRnZSA9IGxmaXJz dF9ub2RlKFByb3BHcmFwaEVkZ2UsIGxjKTsKKwkJc3RydWN0IGVsZW1lbnRfaW5mbyAqZWluZm87 CisJCVJlbGF0aW9uCXJlbDsKKwkJTGlzdENlbGwgICAqbGMyOworCQlPaWQJCQlzcmNyZWxpZDsK KwkJT2lkCQkJZGVzdHJlbGlkOworCQlSZWxhdGlvbglzcmNyZWw7CisJCVJlbGF0aW9uCWRlc3Ry ZWw7CisKKwkJZWluZm8gPSBwYWxsb2MwX29iamVjdChzdHJ1Y3QgZWxlbWVudF9pbmZvKTsKKwkJ ZWluZm8tPmtpbmQgPSBQR0VLSU5EX0VER0U7CisKKwkJZWluZm8tPnJlbGlkID0gUmFuZ2VWYXJH ZXRSZWxpZEV4dGVuZGVkKGVkZ2UtPmV0YWJsZSwgQWNjZXNzU2hhcmVMb2NrLCAwLCBSYW5nZVZh ckNhbGxiYWNrT3duc1JlbGF0aW9uLCBOVUxMKTsKKworCQlyZWwgPSB0YWJsZV9vcGVuKGVpbmZv LT5yZWxpZCwgTm9Mb2NrKTsKKworCQlpZiAocmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09 IFJFTFBFUlNJU1RFTkNFX1RFTVApCisJCQljb21wb25lbnRzX3BlcnNpc3RlbmNlID0gUkVMUEVS U0lTVEVOQ0VfVEVNUDsKKworCQlpZiAoZWRnZS0+ZXRhYmxlLT5hbGlhcykKKwkJCWVpbmZvLT5h bGlhc25hbWUgPSBlZGdlLT5ldGFibGUtPmFsaWFzLT5hbGlhc25hbWU7CisJCWVsc2UKKwkJCWVp bmZvLT5hbGlhc25hbWUgPSBlZGdlLT5ldGFibGUtPnJlbG5hbWU7CisKKwkJaWYgKGxpc3RfbWVt YmVyKGVsZW1lbnRfYWxpYXNlcywgbWFrZVN0cmluZyhlaW5mby0+YWxpYXNuYW1lKSkpCisJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9UQUJMRSksCisJ CQkJCSBlcnJtc2coImFsaWFzIFwiJXNcIiB1c2VkIG1vcmUgdGhhbiBvbmNlIGFzIGVsZW1lbnQg dGFibGUiLCBlaW5mby0+YWxpYXNuYW1lKSwKKwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIGVkZ2UtPmxvY2F0aW9uKSkpOworCisJCWVpbmZvLT5rZXkgPSBwcm9wZ3JhcGhfZWxlbWVu dF9nZXRfa2V5KHBzdGF0ZSwgZWRnZS0+ZWtleSwgcmVsLCBlaW5mby0+YWxpYXNuYW1lLCBlZGdl LT5sb2NhdGlvbik7CisKKwkJZWluZm8tPnNyY3ZlcnRleCA9IGVkZ2UtPmVzcmN2ZXJ0ZXg7CisJ CWVpbmZvLT5kZXN0dmVydGV4ID0gZWRnZS0+ZWRlc3R2ZXJ0ZXg7CisKKwkJc3JjcmVsaWQgPSAw OworCQlkZXN0cmVsaWQgPSAwOworCQlmb3JlYWNoKGxjMiwgdmVydGV4X2luZm9zKQorCQl7CisJ CQlzdHJ1Y3QgZWxlbWVudF9pbmZvICp2aW5mbyA9IGxmaXJzdChsYzIpOworCisJCQlpZiAoc3Ry Y21wKHZpbmZvLT5hbGlhc25hbWUsIGVkZ2UtPmVzcmN2ZXJ0ZXgpID09IDApCisJCQkJc3JjcmVs aWQgPSB2aW5mby0+cmVsaWQ7CisKKwkJCWlmIChzdHJjbXAodmluZm8tPmFsaWFzbmFtZSwgZWRn ZS0+ZWRlc3R2ZXJ0ZXgpID09IDApCisJCQkJZGVzdHJlbGlkID0gdmluZm8tPnJlbGlkOworCisJ CQlpZiAoc3JjcmVsaWQgJiYgZGVzdHJlbGlkKQorCQkJCWJyZWFrOworCQl9CisJCWlmICghc3Jj cmVsaWQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf T0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkgZXJybXNnKCJzb3VyY2UgdmVydGV4IFwiJXNcIiBv ZiBlZGdlIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkJZWRnZS0+ZXNyY3ZlcnRleCwg ZWluZm8tPmFsaWFzbmFtZSksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBlZGdl LT5sb2NhdGlvbikpKTsKKwkJaWYgKCFkZXN0cmVsaWQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkgZXJy bXNnKCJkZXN0aW5hdGlvbiB2ZXJ0ZXggXCIlc1wiIG9mIGVkZ2UgXCIlc1wiIGRvZXMgbm90IGV4 aXN0IiwKKwkJCQkJCQllZGdlLT5lZGVzdHZlcnRleCwgZWluZm8tPmFsaWFzbmFtZSksCisJCQkJ CSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBlZGdlLT5sb2NhdGlvbikpKTsKKworCQlzcmNy ZWwgPSB0YWJsZV9vcGVuKHNyY3JlbGlkLCBOb0xvY2spOworCQlkZXN0cmVsID0gdGFibGVfb3Bl bihkZXN0cmVsaWQsIE5vTG9jayk7CisKKwkJcHJvcGdyYXBoX2VkZ2VfZ2V0X3JlZl9rZXlzKHBz dGF0ZSwgZWRnZS0+ZXNyY2tleSwgZWRnZS0+ZXNyY3ZlcnRleGNvbHMsIHJlbCwgc3JjcmVsLAor CQkJCQkJCQkJZWluZm8tPmFsaWFzbmFtZSwgZWRnZS0+bG9jYXRpb24sICJTT1VSQ0UiLAorCQkJ CQkJCQkJJmVpbmZvLT5zcmNrZXksICZlaW5mby0+c3JjcmVmKTsKKwkJcHJvcGdyYXBoX2VkZ2Vf Z2V0X3JlZl9rZXlzKHBzdGF0ZSwgZWRnZS0+ZWRlc3RrZXksIGVkZ2UtPmVkZXN0dmVydGV4Y29s cywgcmVsLCBkZXN0cmVsLAorCQkJCQkJCQkJZWluZm8tPmFsaWFzbmFtZSwgZWRnZS0+bG9jYXRp b24sICJERVNUSU5BVElPTiIsCisJCQkJCQkJCQkmZWluZm8tPmRlc3RrZXksICZlaW5mby0+ZGVz dHJlZik7CisKKwkJZWluZm8tPmxhYmVscyA9IGVkZ2UtPmxhYmVsczsKKworCQl0YWJsZV9jbG9z ZShkZXN0cmVsLCBOb0xvY2spOworCQl0YWJsZV9jbG9zZShzcmNyZWwsIE5vTG9jayk7CisKKwkJ dGFibGVfY2xvc2UocmVsLCBOb0xvY2spOworCisJCWVkZ2VfaW5mb3MgPSBsYXBwZW5kKGVkZ2Vf aW5mb3MsIGVpbmZvKTsKKworCQllbGVtZW50X2FsaWFzZXMgPSBsYXBwZW5kKGVsZW1lbnRfYWxp YXNlcywgbWFrZVN0cmluZyhlaW5mby0+YWxpYXNuYW1lKSk7CisJfQorCisJY3N0bXQtPnJlbGF0 aW9uID0gc3RtdC0+cGduYW1lOworCWNzdG10LT5vbmNvbW1pdCA9IE9OQ09NTUlUX05PT1A7CisK KwkvKgorCSAqIEF1dG9tYXRpY2FsbHkgbWFrZSBpdCB0ZW1wb3JhcnkgaWYgYW55IGNvbXBvbmVu dCB0YWJsZXMgYXJlIHRlbXBvcmFyeQorCSAqIChzZWUgYWxzbyBEZWZpbmVWaWV3KCkpLgorCSAq LworCWlmIChzdG10LT5wZ25hbWUtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1BF Uk1BTkVOVAorCQkmJiBjb21wb25lbnRzX3BlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RF TVApCisJeworCQljc3RtdC0+cmVsYXRpb24gPSBjb3B5T2JqZWN0KGNzdG10LT5yZWxhdGlvbik7 CisJCWNzdG10LT5yZWxhdGlvbi0+cmVscGVyc2lzdGVuY2UgPSBSRUxQRVJTSVNURU5DRV9URU1Q OworCQllcmVwb3J0KE5PVElDRSwKKwkJCQkoZXJybXNnKCJwcm9wZXJ0eSBncmFwaCBcIiVzXCIg d2lsbCBiZSB0ZW1wb3JhcnkiLAorCQkJCQkJc3RtdC0+cGduYW1lLT5yZWxuYW1lKSkpOworCX0K KworCXBnYWRkcmVzcyA9IERlZmluZVJlbGF0aW9uKGNzdG10LCBSRUxLSU5EX1BST1BHUkFQSCwg SW52YWxpZE9pZCwgTlVMTCwgTlVMTCk7CisKKwlmb3JlYWNoKGxjLCB2ZXJ0ZXhfaW5mb3MpCisJ eworCQlzdHJ1Y3QgZWxlbWVudF9pbmZvICp2aW5mbyA9IGxmaXJzdChsYyk7CisJCU9pZAkJCXBl b2lkOworCisJCXBlb2lkID0gaW5zZXJ0X2VsZW1lbnRfcmVjb3JkKHBnYWRkcmVzcywgdmluZm8p OworCQllbGVtZW50X29pZHMgPSBsYXBwZW5kX29pZChlbGVtZW50X29pZHMsIHBlb2lkKTsKKwl9 CisKKwlmb3JlYWNoKGxjLCBlZGdlX2luZm9zKQorCXsKKwkJc3RydWN0IGVsZW1lbnRfaW5mbyAq ZWluZm8gPSBsZmlyc3QobGMpOworCQlPaWQJCQlwZW9pZDsKKwkJTGlzdENlbGwgICAqbGMyOwor CisJCS8qCisJCSAqIExvb2sgdXAgdGhlIHZlcnRpY2VzIGFnYWluLiAgTm93IHRoZSB2ZXJ0aWNl cyBoYXZlIE9JRHMgYXNzaWduZWQsCisJCSAqIHdoaWNoIHdlIG5lZWQuCisJCSAqLworCQlmb3Jl YWNoKGxjMiwgdmVydGV4X2luZm9zKQorCQl7CisJCQlzdHJ1Y3QgZWxlbWVudF9pbmZvICp2aW5m byA9IGxmaXJzdChsYzIpOworCisJCQlpZiAoc3RyY21wKHZpbmZvLT5hbGlhc25hbWUsIGVpbmZv LT5zcmN2ZXJ0ZXgpID09IDApCisJCQl7CisJCQkJZWluZm8tPnNyY3ZlcnRleGlkID0gdmluZm8t PmVsZW1lbnRpZDsKKwkJCQllaW5mby0+c3JjcmVsaWQgPSB2aW5mby0+cmVsaWQ7CisJCQl9CisJ CQlpZiAoc3RyY21wKHZpbmZvLT5hbGlhc25hbWUsIGVpbmZvLT5kZXN0dmVydGV4KSA9PSAwKQor CQkJeworCQkJCWVpbmZvLT5kZXN0dmVydGV4aWQgPSB2aW5mby0+ZWxlbWVudGlkOworCQkJCWVp bmZvLT5kZXN0cmVsaWQgPSB2aW5mby0+cmVsaWQ7CisJCQl9CisJCQlpZiAoZWluZm8tPnNyY3Zl cnRleGlkICYmIGVpbmZvLT5kZXN0dmVydGV4aWQpCisJCQkJYnJlYWs7CisJCX0KKwkJQXNzZXJ0 KGVpbmZvLT5zcmN2ZXJ0ZXhpZCk7CisJCUFzc2VydChlaW5mby0+ZGVzdHZlcnRleGlkKTsKKwkJ QXNzZXJ0KGVpbmZvLT5zcmNyZWxpZCk7CisJCUFzc2VydChlaW5mby0+ZGVzdHJlbGlkKTsKKwkJ cGVvaWQgPSBpbnNlcnRfZWxlbWVudF9yZWNvcmQocGdhZGRyZXNzLCBlaW5mbyk7CisJCWVsZW1l bnRfb2lkcyA9IGxhcHBlbmRfb2lkKGVsZW1lbnRfb2lkcywgcGVvaWQpOworCX0KKworCUNvbW1h bmRDb3VudGVySW5jcmVtZW50KCk7CisKKwlmb3JlYWNoX29pZChwZW9pZCwgZWxlbWVudF9vaWRz KQorCQljaGVja19lbGVtZW50X3Byb3BlcnRpZXMocGVvaWQpOworCWNoZWNrX2FsbF9sYWJlbHNf cHJvcGVydGllcyhwZ2FkZHJlc3Mub2JqZWN0SWQpOworCisJcmV0dXJuIHBnYWRkcmVzczsKK30K KworLyoKKyAqIFByb2Nlc3MgdGhlIGtleSBjbGF1c2Ugc3BlY2lmaWVkIGZvciBhbiBlbGVtZW50 LiAgSWYga2V5X2NsYXVzZSBpcyBub24tTklMLAorICogdGhlbiBpdCBpcyBhIGxpc3Qgb2YgY29s dW1uIG5hbWVzLiAgT3RoZXJ3aXNlLCB0aGUgcHJpbWFyeSBrZXkgb2YgdGhlCisgKiByZWxhdGlv biBpcyB1c2VkLiAgVGhlIHJldHVybiB2YWx1ZSBpcyBhbiBhcnJheSBvZiBjb2x1bW4gbnVtYmVy cy4KKyAqLworc3RhdGljIEFycmF5VHlwZSAqCitwcm9wZ3JhcGhfZWxlbWVudF9nZXRfa2V5KFBh cnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgTGlzdCAqa2V5X2NsYXVzZSwgUmVsYXRpb24gZWxlbWVu dF9yZWwsIGNvbnN0IGNoYXIgKmFsaWFzbmFtZSwgaW50IGxvY2F0aW9uKQoreworCUFycmF5VHlw ZSAgKmE7CisKKwlpZiAoa2V5X2NsYXVzZSA9PSBOSUwpCisJeworCQlPaWQJCQlwa2lkeCA9IFJl bGF0aW9uR2V0UHJpbWFyeUtleUluZGV4KGVsZW1lbnRfcmVsKTsKKworCQlpZiAoIXBraWR4KQor CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RF RklOSVRJT04pLAorCQkJCQllcnJtc2coIm5vIGtleSBzcGVjaWZpZWQgYW5kIG5vIHN1aXRhYmxl IHByaW1hcnkga2V5IGV4aXN0cyBmb3IgZGVmaW5pdGlvbiBvZiBlbGVtZW50IFwiJXNcIiIsIGFs aWFzbmFtZSksCisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSk7CisJ CWVsc2UKKwkJeworCQkJUmVsYXRpb24JaW5kZXhEZXNjOworCisJCQlpbmRleERlc2MgPSBpbmRl eF9vcGVuKHBraWR4LCBBY2Nlc3NTaGFyZUxvY2spOworCQkJYSA9IGFycmF5X2Zyb21fYXR0bnVt cyhpbmRleERlc2MtPnJkX2luZGV4LT5pbmRrZXkuZGltMSwgaW5kZXhEZXNjLT5yZF9pbmRleC0+ aW5ka2V5LnZhbHVlcyk7CisJCQlpbmRleF9jbG9zZShpbmRleERlc2MsIE5vTG9jayk7CisJCX0K Kwl9CisJZWxzZQorCXsKKwkJYSA9IGFycmF5X2Zyb21fY29sdW1uX2xpc3QocHN0YXRlLCBrZXlf Y2xhdXNlLCBsb2NhdGlvbiwgZWxlbWVudF9yZWwpOworCX0KKworCXJldHVybiBhOworfQorCisv KgorICogUHJvY2VzcyB0aGUgc291cmNlIG9yIGRlc3RpbmF0aW9uIGxpbmsgb2YgYW4gZWRnZS4K KyAqCisgKiBrZXljb2xzIGFuZCByZWZjb2xzIGFyZSBjb2x1bW4gbmFtZXMgcmVwcmVzZW50aW5n IHRoZSBsb2NhbCBhbmQgcmVmZXJlbmNlZAorICogKHZlcnRleCkgY29sdW1ucy4gIElmIHRoZXkg YXJlIGJvdGggTklMLCBhIG1hdGNoaW5nIGZvcmVpZ24ga2V5IGlzIGxvb2tlZAorICogdXAuCisg KgorICogZWRnZV9yZWwgYW5kIHJlZl9yZWwgYXJlIHRoZSBsb2NhbCBhbmQgcmVmZXJlbmNlZCBl bGVtZW50IHRhYmxlcy4KKyAqCisgKiBhbGlhc25hbWUsIGxvY2F0aW9uLCBhbmQgdHlwZSBhcmUg Zm9yIGVycm9yIG1lc3NhZ2VzLiAgdHlwZSBpcyBlaXRoZXIKKyAqICJTT1VSQ0UiIG9yICJERVNU SU5BVElPTiIuCisgKgorICogVGhlIG91dHB1dHMgYXJlIGFycmF5cyBvZiBjb2x1bW4gbnVtYmVy cyBpbiBvdXRrZXkgYW5kIG91dHJlZi4KKyAqLworc3RhdGljIHZvaWQKK3Byb3BncmFwaF9lZGdl X2dldF9yZWZfa2V5cyhQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IExpc3QgKmtleWNvbHMsIGNv bnN0IExpc3QgKnJlZmNvbHMsCisJCQkJCQkJUmVsYXRpb24gZWRnZV9yZWwsIFJlbGF0aW9uIHJl Zl9yZWwsCisJCQkJCQkJY29uc3QgY2hhciAqYWxpYXNuYW1lLCBpbnQgbG9jYXRpb24sIGNvbnN0 IGNoYXIgKnR5cGUsCisJCQkJCQkJQXJyYXlUeXBlICoqb3V0a2V5LCBBcnJheVR5cGUgKipvdXRy ZWYpCit7CisJQXNzZXJ0KChrZXljb2xzICYmIHJlZmNvbHMpIHx8ICgha2V5Y29scyAmJiAhcmVm Y29scykpOworCisJaWYgKGtleWNvbHMpCisJeworCQlpZiAobGlzdF9sZW5ndGgoa2V5Y29scykg IT0gbGlzdF9sZW5ndGgocmVmY29scykpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCWVycm1zZygibWlzbWF0 Y2hpbmcgbnVtYmVyIG9mIGNvbHVtbnMgaW4gJXMgdmVydGV4IGRlZmluaXRpb24gb2YgZWRnZSBc IiVzXCIiLCB0eXBlLCBhbGlhc25hbWUpLAorCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBsb2NhdGlvbikpOworCisJCSpvdXRrZXkgPSBhcnJheV9mcm9tX2NvbHVtbl9saXN0KHBzdGF0 ZSwga2V5Y29scywgbG9jYXRpb24sIGVkZ2VfcmVsKTsKKwkJKm91dHJlZiA9IGFycmF5X2Zyb21f Y29sdW1uX2xpc3QocHN0YXRlLCByZWZjb2xzLCBsb2NhdGlvbiwgcmVmX3JlbCk7CisJfQorCWVs c2UKKwl7CisJCUxpc3QJICAgKmZrZXlzOworCQlMaXN0Q2VsbCAgICpsYzsKKwkJaW50CQkJY291 bnQgPSAwOworCQlGb3JlaWduS2V5Q2FjaGVJbmZvICpmayA9IE5VTEw7CisKKwkJZmtleXMgPSBS ZWxhdGlvbkdldEZLZXlMaXN0KGVkZ2VfcmVsKTsKKwkJZm9yZWFjaChsYywgZmtleXMpCisJCXsK KwkJCWZrID0gbGZpcnN0X25vZGUoRm9yZWlnbktleUNhY2hlSW5mbywgbGMpOworCisJCQlpZiAo ZmstPmNvbmZyZWxpZCA9PSBSZWxhdGlvbkdldFJlbGlkKHJlZl9yZWwpKQorCQkJCWNvdW50Kys7 CisJCX0KKworCQlpZiAoY291bnQgPT0gMCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNv ZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQllcnJtc2coIm5vICVzIGtleSBzcGVjaWZp ZWQgYW5kIG5vIHN1aXRhYmxlIGZvcmVpZ24ga2V5IGV4aXN0cyBmb3IgZGVmaW5pdGlvbiBvZiBl ZGdlIFwiJXNcIiIsIHR5cGUsIGFsaWFzbmFtZSksCisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihw c3RhdGUsIGxvY2F0aW9uKSk7CisJCWVsc2UgaWYgKGNvdW50ID4gMSkKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQllcnJtc2coIm1v cmUgdGhhbiBvbmUgc3VpdGFibGUgZm9yZWlnbiBrZXkgZXhpc3RzIGZvciAlcyBrZXkgb2YgZWRn ZSBcIiVzXCIiLCB0eXBlLCBhbGlhc25hbWUpLAorCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBsb2NhdGlvbikpOworCisJCUFzc2VydChmayk7CisKKwkJKm91dGtleSA9IGFycmF5X2Zy b21fYXR0bnVtcyhmay0+bmtleXMsIGZrLT5jb25rZXkpOworCQkqb3V0cmVmID0gYXJyYXlfZnJv bV9hdHRudW1zKGZrLT5ua2V5cywgZmstPmNvbmZrZXkpOworCX0KK30KKworLyoKKyAqIENvbnZl cnQgbGlzdCBvZiBjb2x1bW4gbmFtZXMgaW4gdGhlIHNwZWNpZmllZCByZWxhdGlvbiBpbnRvIGFu IGFycmF5IG9mCisgKiBjb2x1bW4gbnVtYmVycy4KKyAqLworc3RhdGljIEFycmF5VHlwZSAqCith cnJheV9mcm9tX2NvbHVtbl9saXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgTGlzdCAqY29s bmFtZXMsIGludCBsb2NhdGlvbiwgUmVsYXRpb24gZWxlbWVudF9yZWwpCit7CisJaW50CQkJbnVt YXR0cnM7CisJRGF0dW0JICAgKmF0dG51bXNkOworCWludAkJCWk7CisJTGlzdENlbGwgICAqbGM7 CisKKwludW1hdHRycyA9IGxpc3RfbGVuZ3RoKGNvbG5hbWVzKTsKKwlhdHRudW1zZCA9IHBhbGxv Y19hcnJheShEYXR1bSwgbnVtYXR0cnMpOworCisJaSA9IDA7CisJZm9yZWFjaChsYywgY29sbmFt ZXMpCisJeworCQljaGFyCSAgICpjb2xuYW1lID0gc3RyVmFsKGxmaXJzdChsYykpOworCQlPaWQJ CQlyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQoZWxlbWVudF9yZWwpOworCQlBdHRyTnVtYmVyCWF0 dG51bTsKKworCQlhdHRudW0gPSBnZXRfYXR0bnVtKHJlbGlkLCBjb2xuYW1lKTsKKwkJaWYgKCFh dHRudW0pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5F RF9DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNc IiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkJY29sbmFtZSwgZ2V0X3JlbF9uYW1lKHJlbGlkKSks CisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKKwkJYXR0bnVt c2RbaSsrXSA9IEludDE2R2V0RGF0dW0oYXR0bnVtKTsKKwl9CisKKwlmb3IgKGludCBqID0gMDsg aiA8IG51bWF0dHJzOyBqKyspCisJeworCQlmb3IgKGludCBrID0gaiArIDE7IGsgPCBudW1hdHRy czsgaysrKQorCQl7CisJCQlpZiAoRGF0dW1HZXRJbnQxNihhdHRudW1zZFtqXSkgPT0gRGF0dW1H ZXRJbnQxNihhdHRudW1zZFtrXSkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkgZXJybXNnKCJncmFw aCBrZXkgY29sdW1ucyBsaXN0IG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlcyIpLAorCQkJCQkJ IHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSkpOworCQl9CisJfQorCisJcmV0 dXJuIGNvbnN0cnVjdF9hcnJheV9idWlsdGluKGF0dG51bXNkLCBudW1hdHRycywgSU5UMk9JRCk7 Cit9CisKK3N0YXRpYyBBcnJheVR5cGUgKgorYXJyYXlfZnJvbV9hdHRudW1zKGludCBudW1hdHRy cywgY29uc3QgQXR0ck51bWJlciAqYXR0bnVtcykKK3sKKwlEYXR1bQkgICAqYXR0bnVtc2Q7CisK KwlhdHRudW1zZCA9IHBhbGxvY19hcnJheShEYXR1bSwgbnVtYXR0cnMpOworCisJZm9yIChpbnQg aSA9IDA7IGkgPCBudW1hdHRyczsgaSsrKQorCQlhdHRudW1zZFtpXSA9IEludDE2R2V0RGF0dW0o YXR0bnVtc1tpXSk7CisKKwlyZXR1cm4gY29uc3RydWN0X2FycmF5X2J1aWx0aW4oYXR0bnVtc2Qs IG51bWF0dHJzLCBJTlQyT0lEKTsKK30KKworc3RhdGljIHZvaWQKK2FycmF5X29mX2F0dG51bXNf dG9fb2JqZWN0YWRkcnMoT2lkIHJlbGlkLCBBcnJheVR5cGUgKmFyciwgT2JqZWN0QWRkcmVzc2Vz ICphZGRycykKK3sKKwlEYXR1bQkgICAqYXR0bnVtc2Q7CisJaW50CQkJbnVtYXR0cnM7CisKKwlk ZWNvbnN0cnVjdF9hcnJheV9idWlsdGluKGFyciwgSU5UMk9JRCwgJmF0dG51bXNkLCBOVUxMLCAm bnVtYXR0cnMpOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1hdHRyczsgaSsrKQorCXsKKwkJ T2JqZWN0QWRkcmVzcyByZWZlcmVuY2VkOworCisJCU9iamVjdEFkZHJlc3NTdWJTZXQocmVmZXJl bmNlZCwgUmVsYXRpb25SZWxhdGlvbklkLCByZWxpZCwgRGF0dW1HZXRJbnQxNihhdHRudW1zZFtp XSkpOworCQlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJnJlZmVyZW5jZWQsIGFkZHJzKTsKKwl9 Cit9CisKKy8qCisgKiBJbnNlcnQgYSByZWNvcmQgZm9yIGFuIGVsZW1lbnQgaW50byB0aGUgcGdf cHJvcGdyYXBoX2VsZW1lbnQgY2F0YWxvZy4gIEFsc28KKyAqIGluc2VydHMgbGFiZWxzIGFuZCBw cm9wZXJ0aWVzIGludG8gdGhlaXIgcmVzcGVjdGl2ZSBjYXRhbG9ncy4KKyAqLworc3RhdGljIE9p ZAoraW5zZXJ0X2VsZW1lbnRfcmVjb3JkKE9iamVjdEFkZHJlc3MgcGdhZGRyZXNzLCBzdHJ1Y3Qg ZWxlbWVudF9pbmZvICplaW5mbykKK3sKKwlPaWQJCQlncmFwaGlkID0gcGdhZGRyZXNzLm9iamVj dElkOworCVJlbGF0aW9uCXJlbDsKKwlOYW1lRGF0YQlhbGlhc25hbWU7CisJT2lkCQkJcGVvaWQ7 CisJRGF0dW0JCXZhbHVlc1tOYXR0c19wZ19wcm9wZ3JhcGhfZWxlbWVudF0gPSB7MH07CisJYm9v bAkJbnVsbHNbTmF0dHNfcGdfcHJvcGdyYXBoX2VsZW1lbnRdID0gezB9OworCUhlYXBUdXBsZQl0 dXA7CisJT2JqZWN0QWRkcmVzcyBteXNlbGY7CisJT2JqZWN0QWRkcmVzcyByZWZlcmVuY2VkOwor CU9iamVjdEFkZHJlc3NlcyAqYWRkcnM7CisKKwlyZWwgPSB0YWJsZV9vcGVuKFByb3BncmFwaEVs ZW1lbnRSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXBlb2lkID0gR2V0TmV3T2lk V2l0aEluZGV4KHJlbCwgUHJvcGdyYXBoRWxlbWVudE9iamVjdEluZGV4SWQsIEFudW1fcGdfcHJv cGdyYXBoX2VsZW1lbnRfb2lkKTsKKwllaW5mby0+ZWxlbWVudGlkID0gcGVvaWQ7CisJdmFsdWVz W0FudW1fcGdfcHJvcGdyYXBoX2VsZW1lbnRfb2lkIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHBl b2lkKTsKKwl2YWx1ZXNbQW51bV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9wZ2VwZ2lkIC0gMV0gPSBP YmplY3RJZEdldERhdHVtKGdyYXBoaWQpOworCXZhbHVlc1tBbnVtX3BnX3Byb3BncmFwaF9lbGVt ZW50X3BnZXJlbGlkIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKGVpbmZvLT5yZWxpZCk7CisJbmFt ZXN0cmNweSgmYWxpYXNuYW1lLCBlaW5mby0+YWxpYXNuYW1lKTsKKwl2YWx1ZXNbQW51bV9wZ19w cm9wZ3JhcGhfZWxlbWVudF9wZ2VhbGlhcyAtIDFdID0gTmFtZUdldERhdHVtKCZhbGlhc25hbWUp OworCXZhbHVlc1tBbnVtX3BnX3Byb3BncmFwaF9lbGVtZW50X3BnZWtpbmQgLSAxXSA9IENoYXJH ZXREYXR1bShlaW5mby0+a2luZCk7CisJdmFsdWVzW0FudW1fcGdfcHJvcGdyYXBoX2VsZW1lbnRf cGdlc3JjdmVydGV4aWQgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0oZWluZm8tPnNyY3ZlcnRleGlk KTsKKwl2YWx1ZXNbQW51bV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9wZ2VkZXN0dmVydGV4aWQgLSAx XSA9IE9iamVjdElkR2V0RGF0dW0oZWluZm8tPmRlc3R2ZXJ0ZXhpZCk7CisJdmFsdWVzW0FudW1f cGdfcHJvcGdyYXBoX2VsZW1lbnRfcGdla2V5IC0gMV0gPSBQb2ludGVyR2V0RGF0dW0oZWluZm8t PmtleSk7CisKKwlpZiAoZWluZm8tPnNyY2tleSkKKwkJdmFsdWVzW0FudW1fcGdfcHJvcGdyYXBo X2VsZW1lbnRfcGdlc3Jja2V5IC0gMV0gPSBQb2ludGVyR2V0RGF0dW0oZWluZm8tPnNyY2tleSk7 CisJZWxzZQorCQludWxsc1tBbnVtX3BnX3Byb3BncmFwaF9lbGVtZW50X3BnZXNyY2tleSAtIDFd ID0gdHJ1ZTsKKwlpZiAoZWluZm8tPnNyY3JlZikKKwkJdmFsdWVzW0FudW1fcGdfcHJvcGdyYXBo X2VsZW1lbnRfcGdlc3JjcmVmIC0gMV0gPSBQb2ludGVyR2V0RGF0dW0oZWluZm8tPnNyY3JlZik7 CisJZWxzZQorCQludWxsc1tBbnVtX3BnX3Byb3BncmFwaF9lbGVtZW50X3BnZXNyY3JlZiAtIDFd ID0gdHJ1ZTsKKwlpZiAoZWluZm8tPmRlc3RrZXkpCisJCXZhbHVlc1tBbnVtX3BnX3Byb3BncmFw aF9lbGVtZW50X3BnZWRlc3RrZXkgLSAxXSA9IFBvaW50ZXJHZXREYXR1bShlaW5mby0+ZGVzdGtl eSk7CisJZWxzZQorCQludWxsc1tBbnVtX3BnX3Byb3BncmFwaF9lbGVtZW50X3BnZWRlc3RrZXkg LSAxXSA9IHRydWU7CisJaWYgKGVpbmZvLT5kZXN0cmVmKQorCQl2YWx1ZXNbQW51bV9wZ19wcm9w Z3JhcGhfZWxlbWVudF9wZ2VkZXN0cmVmIC0gMV0gPSBQb2ludGVyR2V0RGF0dW0oZWluZm8tPmRl c3RyZWYpOworCWVsc2UKKwkJbnVsbHNbQW51bV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9wZ2VkZXN0 cmVmIC0gMV0gPSB0cnVlOworCisJdHVwID0gaGVhcF9mb3JtX3R1cGxlKFJlbGF0aW9uR2V0RGVz Y3IocmVsKSwgdmFsdWVzLCBudWxscyk7CisJQ2F0YWxvZ1R1cGxlSW5zZXJ0KHJlbCwgdHVwKTsK KwloZWFwX2ZyZWV0dXBsZSh0dXApOworCisJT2JqZWN0QWRkcmVzc1NldChteXNlbGYsIFByb3Bn cmFwaEVsZW1lbnRSZWxhdGlvbklkLCBwZW9pZCk7CisKKwkvKiBBZGQgZGVwZW5kZW5jeSBvbiB0 aGUgcHJvcGVydHkgZ3JhcGggKi8KKwlyZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnBnYWRk cmVzcywgREVQRU5ERU5DWV9BVVRPKTsKKworCWFkZHJzID0gbmV3X29iamVjdF9hZGRyZXNzZXMo KTsKKworCS8qIEFkZCBkZXBlbmRlbmN5IG9uIHRoZSByZWxhdGlvbiAqLworCU9iamVjdEFkZHJl c3NTZXQocmVmZXJlbmNlZCwgUmVsYXRpb25SZWxhdGlvbklkLCBlaW5mby0+cmVsaWQpOworCWFk ZF9leGFjdF9vYmplY3RfYWRkcmVzcygmcmVmZXJlbmNlZCwgYWRkcnMpOworCWFycmF5X29mX2F0 dG51bXNfdG9fb2JqZWN0YWRkcnMoZWluZm8tPnJlbGlkLCBlaW5mby0+a2V5LCBhZGRycyk7CisK KwkvKiBBZGQgZGVwZW5kZW5jaWVzIG9uIHZlcnRpY2VzICovCisJaWYgKGVpbmZvLT5zcmN2ZXJ0 ZXhpZCkKKwl7CisJCU9iamVjdEFkZHJlc3NTZXQocmVmZXJlbmNlZCwgUHJvcGdyYXBoRWxlbWVu dFJlbGF0aW9uSWQsIGVpbmZvLT5zcmN2ZXJ0ZXhpZCk7CisJCWFkZF9leGFjdF9vYmplY3RfYWRk cmVzcygmcmVmZXJlbmNlZCwgYWRkcnMpOworCQlhcnJheV9vZl9hdHRudW1zX3RvX29iamVjdGFk ZHJzKGVpbmZvLT5yZWxpZCwgZWluZm8tPnNyY2tleSwgYWRkcnMpOworCQlhcnJheV9vZl9hdHRu dW1zX3RvX29iamVjdGFkZHJzKGVpbmZvLT5zcmNyZWxpZCwgZWluZm8tPnNyY3JlZiwgYWRkcnMp OworCX0KKwlpZiAoZWluZm8tPmRlc3R2ZXJ0ZXhpZCkKKwl7CisJCU9iamVjdEFkZHJlc3NTZXQo cmVmZXJlbmNlZCwgUHJvcGdyYXBoRWxlbWVudFJlbGF0aW9uSWQsIGVpbmZvLT5kZXN0dmVydGV4 aWQpOworCQlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJnJlZmVyZW5jZWQsIGFkZHJzKTsKKwkJ YXJyYXlfb2ZfYXR0bnVtc190b19vYmplY3RhZGRycyhlaW5mby0+cmVsaWQsIGVpbmZvLT5kZXN0 a2V5LCBhZGRycyk7CisJCWFycmF5X29mX2F0dG51bXNfdG9fb2JqZWN0YWRkcnMoZWluZm8tPmRl c3RyZWxpZCwgZWluZm8tPmRlc3RyZWYsIGFkZHJzKTsKKwl9CisKKwkvKiBUT0RPOiBkZXBlbmRl bmNpZXMgb24gZXF1YWxpdHkgb3BlcmF0b3JzLCBsaWtlIGZvciBmb3JlaWduIGtleXMgKi8KKwor CXJlY29yZF9vYmplY3RfYWRkcmVzc19kZXBlbmRlbmNpZXMoJm15c2VsZiwgYWRkcnMsIERFUEVO REVOQ1lfTk9STUFMKTsKKworCXRhYmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKKworCWlmIChlaW5m by0+bGFiZWxzKQorCXsKKwkJTGlzdENlbGwgICAqbGM7CisKKwkJZm9yZWFjaChsYywgZWluZm8t PmxhYmVscykKKwkJeworCQkJUHJvcEdyYXBoTGFiZWxBbmRQcm9wZXJ0aWVzICpscCA9IGxmaXJz dF9ub2RlKFByb3BHcmFwaExhYmVsQW5kUHJvcGVydGllcywgbGMpOworCQkJT2lkCQkJZWxsYWJl bG9pZDsKKworCQkJaWYgKGxwLT5sYWJlbCkKKwkJCQllbGxhYmVsb2lkID0gaW5zZXJ0X2xhYmVs X3JlY29yZChncmFwaGlkLCBwZW9pZCwgbHAtPmxhYmVsKTsKKwkJCWVsc2UKKwkJCQllbGxhYmVs b2lkID0gaW5zZXJ0X2xhYmVsX3JlY29yZChncmFwaGlkLCBwZW9pZCwgZWluZm8tPmFsaWFzbmFt ZSk7CisJCQlpbnNlcnRfcHJvcGVydHlfcmVjb3JkcyhncmFwaGlkLCBlbGxhYmVsb2lkLCBlaW5m by0+cmVsaWQsIGxwLT5wcm9wZXJ0aWVzKTsKKworCQkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQo KTsKKwkJfQorCX0KKwllbHNlCisJeworCQlPaWQJCQllbGxhYmVsb2lkOworCQlQcm9wR3JhcGhQ cm9wZXJ0aWVzICpwciA9IG1ha2VOb2RlKFByb3BHcmFwaFByb3BlcnRpZXMpOworCisJCXByLT5h bGwgPSB0cnVlOworCQlwci0+bG9jYXRpb24gPSAtMTsKKworCQllbGxhYmVsb2lkID0gaW5zZXJ0 X2xhYmVsX3JlY29yZChncmFwaGlkLCBwZW9pZCwgZWluZm8tPmFsaWFzbmFtZSk7CisJCWluc2Vy dF9wcm9wZXJ0eV9yZWNvcmRzKGdyYXBoaWQsIGVsbGFiZWxvaWQsIGVpbmZvLT5yZWxpZCwgcHIp OworCX0KKworCXJldHVybiBwZW9pZDsKK30KKworLyoKKyAqIEluc2VydCByZWNvcmRzIGZvciBh IGxhYmVsIGludG8gdGhlIHBnX3Byb3BncmFwaF9sYWJlbCBhbmQKKyAqIHBnX3Byb3BncmFwaF9l bGVtZW50X2xhYmVsIGNhdGFsb2dzLCBhbmQgcmVnaXN0ZXIgZGVwZW5kZW5jaWVzLgorICoKKyAq IFJldHVybnMgdGhlIE9JRCBvZiB0aGUgbmV3IHBnX3Byb3BncmFwaF9lbGVtZW50X2xhYmVsIHJl Y29yZC4KKyAqLworc3RhdGljIE9pZAoraW5zZXJ0X2xhYmVsX3JlY29yZChPaWQgZ3JhcGhpZCwg T2lkIHBlb2lkLCBjb25zdCBjaGFyICpsYWJlbCkKK3sKKwlPaWQJCQlsYWJlbG9pZDsKKwlPaWQJ CQllbGxhYmVsb2lkOworCisJLyoKKwkgKiBJbnNlcnQgaW50byBwZ19wcm9wZ3JhcGhfbGFiZWwg aWYgbm90IGFscmVhZHkgZXhpc3RpbmcuCisJICovCisJbGFiZWxvaWQgPSBHZXRTeXNDYWNoZU9p ZDIoUFJPUEdSQVBITEFCRUxOQU1FLCBBbnVtX3BnX3Byb3BncmFwaF9sYWJlbF9vaWQsIE9iamVj dElkR2V0RGF0dW0oZ3JhcGhpZCksIENTdHJpbmdHZXREYXR1bShsYWJlbCkpOworCWlmICghbGFi ZWxvaWQpCisJeworCQlSZWxhdGlvbglyZWw7CisJCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcHJv cGdyYXBoX2xhYmVsXSA9IHswfTsKKwkJYm9vbAkJbnVsbHNbTmF0dHNfcGdfcHJvcGdyYXBoX2xh YmVsXSA9IHswfTsKKwkJTmFtZURhdGEJbGFiZWxuYW1lOworCQlIZWFwVHVwbGUJdHVwOworCQlP YmplY3RBZGRyZXNzIG15c2VsZjsKKwkJT2JqZWN0QWRkcmVzcyByZWZlcmVuY2VkOworCisJCXJl bCA9IHRhYmxlX29wZW4oUHJvcGdyYXBoTGFiZWxSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2Nr KTsKKworCQlsYWJlbG9pZCA9IEdldE5ld09pZFdpdGhJbmRleChyZWwsIFByb3BncmFwaExhYmVs T2JqZWN0SW5kZXhJZCwgQW51bV9wZ19wcm9wZ3JhcGhfbGFiZWxfb2lkKTsKKwkJdmFsdWVzW0Fu dW1fcGdfcHJvcGdyYXBoX2xhYmVsX29pZCAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShsYWJlbG9p ZCk7CisJCXZhbHVlc1tBbnVtX3BnX3Byb3BncmFwaF9sYWJlbF9wZ2xwZ2lkIC0gMV0gPSBPYmpl Y3RJZEdldERhdHVtKGdyYXBoaWQpOworCQluYW1lc3RyY3B5KCZsYWJlbG5hbWUsIGxhYmVsKTsK KwkJdmFsdWVzW0FudW1fcGdfcHJvcGdyYXBoX2xhYmVsX3BnbGxhYmVsIC0gMV0gPSBOYW1lR2V0 RGF0dW0oJmxhYmVsbmFtZSk7CisKKwkJdHVwID0gaGVhcF9mb3JtX3R1cGxlKFJlbGF0aW9uR2V0 RGVzY3IocmVsKSwgdmFsdWVzLCBudWxscyk7CisJCUNhdGFsb2dUdXBsZUluc2VydChyZWwsIHR1 cCk7CisJCWhlYXBfZnJlZXR1cGxlKHR1cCk7CisKKwkJT2JqZWN0QWRkcmVzc1NldChteXNlbGYs IFByb3BncmFwaExhYmVsUmVsYXRpb25JZCwgbGFiZWxvaWQpOworCisJCU9iamVjdEFkZHJlc3NT ZXQocmVmZXJlbmNlZCwgUmVsYXRpb25SZWxhdGlvbklkLCBncmFwaGlkKTsKKwkJcmVjb3JkRGVw ZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX0FVVE8pOworCisJCXRh YmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKKwl9CisKKwkvKgorCSAqIEluc2VydCBpbnRvIHBnX3By b3BncmFwaF9lbGVtZW50X2xhYmVsCisJICovCisJeworCQlSZWxhdGlvbglyZWw7CisJCURhdHVt CQl2YWx1ZXNbTmF0dHNfcGdfcHJvcGdyYXBoX2VsZW1lbnRfbGFiZWxdID0gezB9OworCQlib29s CQludWxsc1tOYXR0c19wZ19wcm9wZ3JhcGhfZWxlbWVudF9sYWJlbF0gPSB7MH07CisJCUhlYXBU dXBsZQl0dXA7CisJCU9iamVjdEFkZHJlc3MgbXlzZWxmOworCQlPYmplY3RBZGRyZXNzIHJlZmVy ZW5jZWQ7CisKKwkJcmVsID0gdGFibGVfb3BlbihQcm9wZ3JhcGhFbGVtZW50TGFiZWxSZWxhdGlv bklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCQllbGxhYmVsb2lkID0gR2V0TmV3T2lkV2l0aElu ZGV4KHJlbCwgUHJvcGdyYXBoRWxlbWVudExhYmVsT2JqZWN0SW5kZXhJZCwgQW51bV9wZ19wcm9w Z3JhcGhfZWxlbWVudF9sYWJlbF9vaWQpOworCQl2YWx1ZXNbQW51bV9wZ19wcm9wZ3JhcGhfZWxl bWVudF9sYWJlbF9vaWQgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0oZWxsYWJlbG9pZCk7CisJCXZh bHVlc1tBbnVtX3BnX3Byb3BncmFwaF9lbGVtZW50X2xhYmVsX3BnZWxsYWJlbGlkIC0gMV0gPSBP YmplY3RJZEdldERhdHVtKGxhYmVsb2lkKTsKKwkJdmFsdWVzW0FudW1fcGdfcHJvcGdyYXBoX2Vs ZW1lbnRfbGFiZWxfcGdlbGVsaWQgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0ocGVvaWQpOworCisJ CXR1cCA9IGhlYXBfZm9ybV90dXBsZShSZWxhdGlvbkdldERlc2NyKHJlbCksIHZhbHVlcywgbnVs bHMpOworCQlDYXRhbG9nVHVwbGVJbnNlcnQocmVsLCB0dXApOworCQloZWFwX2ZyZWV0dXBsZSh0 dXApOworCisJCU9iamVjdEFkZHJlc3NTZXQobXlzZWxmLCBQcm9wZ3JhcGhFbGVtZW50TGFiZWxS ZWxhdGlvbklkLCBlbGxhYmVsb2lkKTsKKworCQlPYmplY3RBZGRyZXNzU2V0KHJlZmVyZW5jZWQs IFByb3BncmFwaExhYmVsUmVsYXRpb25JZCwgbGFiZWxvaWQpOworCQlyZWNvcmREZXBlbmRlbmN5 T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfQVVUTyk7CisJCU9iamVjdEFkZHJl c3NTZXQocmVmZXJlbmNlZCwgUHJvcGdyYXBoRWxlbWVudFJlbGF0aW9uSWQsIHBlb2lkKTsKKwkJ cmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX0FVVE8p OworCisJCXRhYmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKKwl9CisKKwlyZXR1cm4gZWxsYWJlbG9p ZDsKK30KKworLyoKKyAqIEluc2VydCByZWNvcmRzIGZvciBwcm9wZXJ0aWVzIGludG8gdGhlIHBn X3Byb3BncmFwaF9wcm9wZXJ0eSBjYXRhbG9nLgorICovCitzdGF0aWMgdm9pZAoraW5zZXJ0X3By b3BlcnR5X3JlY29yZHMoT2lkIGdyYXBoaWQsIE9pZCBlbGxhYmVsb2lkLCBPaWQgcGdlcmVsaWQs IGNvbnN0IFByb3BHcmFwaFByb3BlcnRpZXMgKnByb3BlcnRpZXMpCit7CisJTGlzdAkgICAqcHJv cGxpc3QgPSBOSUw7CisJUGFyc2VTdGF0ZSAqcHN0YXRlOworCVBhcnNlTmFtZXNwYWNlSXRlbSAq bnNpdGVtOworCUxpc3QJICAgKnRwOworCVJlbGF0aW9uCXJlbDsKKwlMaXN0Q2VsbCAgICpsYzsK KworCWlmIChwcm9wZXJ0aWVzLT5hbGwpCisJeworCQlSZWxhdGlvbglhdHRSZWxhdGlvbjsKKwkJ U3lzU2NhbkRlc2Mgc2NhbjsKKwkJU2NhbktleURhdGEga2V5WzFdOworCQlIZWFwVHVwbGUJYXR0 cmlidXRlVHVwbGU7CisKKwkJYXR0UmVsYXRpb24gPSB0YWJsZV9vcGVuKEF0dHJpYnV0ZVJlbGF0 aW9uSWQsIFJvd1NoYXJlTG9jayk7CisJCVNjYW5LZXlJbml0KCZrZXlbMF0sCisJCQkJCUFudW1f cGdfYXR0cmlidXRlX2F0dHJlbGlkLAorCQkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lE RVEsCisJCQkJCU9iamVjdElkR2V0RGF0dW0ocGdlcmVsaWQpKTsKKwkJc2NhbiA9IHN5c3RhYmxl X2JlZ2luc2NhbihhdHRSZWxhdGlvbiwgQXR0cmlidXRlUmVsaWROdW1JbmRleElkLAorCQkJCQkJ CQkgIHRydWUsIE5VTEwsIDEsIGtleSk7CisJCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKGF0dHJp YnV0ZVR1cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJCXsKKwkJCUZvcm1fcGdfYXR0 cmlidXRlIGF0dCA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKGF0dHJpYnV0ZVR1cGxl KTsKKwkJCUNvbHVtblJlZiAgKmNyOworCQkJUmVzVGFyZ2V0ICAqcnQ7CisKKwkJCWlmIChhdHQt PmF0dG51bSA8PSAwIHx8IGF0dC0+YXR0aXNkcm9wcGVkKQorCQkJCWNvbnRpbnVlOworCisJCQlj ciA9IG1ha2VOb2RlKENvbHVtblJlZik7CisJCQlydCA9IG1ha2VOb2RlKFJlc1RhcmdldCk7CisK KwkJCWNyLT5maWVsZHMgPSBsaXN0X21ha2UxKG1ha2VTdHJpbmcoTmFtZVN0cihhdHQtPmF0dG5h bWUpKSk7CisJCQljci0+bG9jYXRpb24gPSAtMTsKKworCQkJcnQtPm5hbWUgPSBwc3RyZHVwKE5h bWVTdHIoYXR0LT5hdHRuYW1lKSk7CisJCQlydC0+dmFsID0gKE5vZGUgKikgY3I7CisJCQlydC0+ bG9jYXRpb24gPSAtMTsKKworCQkJcHJvcGxpc3QgPSBsYXBwZW5kKHByb3BsaXN0LCBydCk7CisJ CX0KKwkJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKwkJdGFibGVfY2xvc2UoYXR0UmVsYXRpb24s IFJvd1NoYXJlTG9jayk7CisJfQorCWVsc2UKKwl7CisJCXByb3BsaXN0ID0gcHJvcGVydGllcy0+ cHJvcGVydGllczsKKworCQlmb3JlYWNoKGxjLCBwcm9wbGlzdCkKKwkJeworCQkJUmVzVGFyZ2V0 ICAqcnQgPSBsZmlyc3Rfbm9kZShSZXNUYXJnZXQsIGxjKTsKKworCQkJaWYgKCFydC0+bmFtZSAm JiAhSXNBKHJ0LT52YWwsIENvbHVtblJlZikpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVy cmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJZXJybXNnKCJwcm9wZXJ0eSBuYW1l IHJlcXVpcmVkIiksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oTlVMTCwgcnQtPmxvY2F0aW9u KSk7CisJCX0KKwl9CisKKwlyZWwgPSB0YWJsZV9vcGVuKHBnZXJlbGlkLCBBY2Nlc3NTaGFyZUxv Y2spOworCisJcHN0YXRlID0gbWFrZV9wYXJzZXN0YXRlKE5VTEwpOworCW5zaXRlbSA9IGFkZFJh bmdlVGFibGVFbnRyeUZvclJlbGF0aW9uKHBzdGF0ZSwKKwkJCQkJCQkJCQkgICByZWwsCisJCQkJ CQkJCQkJICAgQWNjZXNzU2hhcmVMb2NrLAorCQkJCQkJCQkJCSAgIE5VTEwsCisJCQkJCQkJCQkJ ICAgZmFsc2UsCisJCQkJCQkJCQkJICAgdHJ1ZSk7CisJYWRkTlNJdGVtVG9RdWVyeShwc3RhdGUs IG5zaXRlbSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisKKwl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7 CisKKwl0cCA9IHRyYW5zZm9ybVRhcmdldExpc3QocHN0YXRlLCBwcm9wbGlzdCwgRVhQUl9LSU5E X1BST1BHUkFQSF9QUk9QRVJUWSk7CisKKwlmb3JlYWNoKGxjLCB0cCkKKwl7CisJCVRhcmdldEVu dHJ5ICp0ZSA9IGxmaXJzdF9ub2RlKFRhcmdldEVudHJ5LCBsYyk7CisKKwkJaW5zZXJ0X3Byb3Bl cnR5X3JlY29yZChncmFwaGlkLCBlbGxhYmVsb2lkLCBwZ2VyZWxpZCwgdGUtPnJlc25hbWUsIHRl LT5leHByKTsKKwl9Cit9CisKKy8qCisgKiBJbnNlcnQgcmVjb3JkcyBmb3IgYSBwcm9wZXJ0eSBp bnRvIHRoZSBwZ19wcm9wZ3JhcGhfcHJvcGVydHkgYW5kCisgKiBwZ19wcm9wZ3JhcGhfbGFiZWxf cHJvcGVydHkgY2F0YWxvZ3MsIGFuZCByZWdpc3RlciBkZXBlbmRlbmNpZXMuCisgKi8KK3N0YXRp YyB2b2lkCitpbnNlcnRfcHJvcGVydHlfcmVjb3JkKE9pZCBncmFwaGlkLCBPaWQgZWxsYWJlbG9p ZCwgT2lkIHBnZXJlbGlkLCBjb25zdCBjaGFyICpwcm9wbmFtZSwgY29uc3QgRXhwciAqZXhwcikK K3sKKwlPaWQJCQlwcm9wb2lkOworCU9pZAkJCWV4cHJ0eXBpZDsKKwlPaWQJCQlwcm9wdHlwaWQ7 CisKKwlleHBydHlwaWQgPSBleHByVHlwZSgoY29uc3QgTm9kZSAqKSBleHByKTsKKworCS8qCisJ ICogSW5zZXJ0IGludG8gcGdfcHJvcGdyYXBoX3Byb3BlcnR5IGlmIG5vdCBhbHJlYWR5IGV4aXN0 aW5nLgorCSAqLworCXByb3BvaWQgPSBHZXRTeXNDYWNoZU9pZDIoUFJPUEdSQVBIUFJPUE5BTUUs IEFudW1fcGdfcHJvcGdyYXBoX3Byb3BlcnR5X29pZCwgT2JqZWN0SWRHZXREYXR1bShncmFwaGlk KSwgQ1N0cmluZ0dldERhdHVtKHByb3BuYW1lKSk7CisJaWYgKCFwcm9wb2lkKQorCXsKKwkJUmVs YXRpb24JcmVsOworCQlOYW1lRGF0YQlwcm9wbmFtZWRhdGE7CisJCURhdHVtCQl2YWx1ZXNbTmF0 dHNfcGdfcHJvcGdyYXBoX3Byb3BlcnR5XSA9IHswfTsKKwkJYm9vbAkJbnVsbHNbTmF0dHNfcGdf cHJvcGdyYXBoX3Byb3BlcnR5XSA9IHswfTsKKwkJSGVhcFR1cGxlCXR1cDsKKwkJT2JqZWN0QWRk cmVzcyBteXNlbGY7CisJCU9iamVjdEFkZHJlc3MgcmVmZXJlbmNlZDsKKworCQlwcm9wdHlwaWQg PSBleHBydHlwaWQ7CisKKwkJcmVsID0gdGFibGVfb3BlbihQcm9wZ3JhcGhQcm9wZXJ0eVJlbGF0 aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJCXByb3BvaWQgPSBHZXROZXdPaWRXaXRoSW5k ZXgocmVsLCBQcm9wZ3JhcGhQcm9wZXJ0eU9iamVjdEluZGV4SWQsIEFudW1fcGdfcHJvcGdyYXBo X3Byb3BlcnR5X29pZCk7CisJCXZhbHVlc1tBbnVtX3BnX3Byb3BncmFwaF9wcm9wZXJ0eV9vaWQg LSAxXSA9IE9iamVjdElkR2V0RGF0dW0ocHJvcG9pZCk7CisJCXZhbHVlc1tBbnVtX3BnX3Byb3Bn cmFwaF9wcm9wZXJ0eV9wZ3BwZ2lkIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKGdyYXBoaWQpOwor CQluYW1lc3RyY3B5KCZwcm9wbmFtZWRhdGEsIHByb3BuYW1lKTsKKwkJdmFsdWVzW0FudW1fcGdf cHJvcGdyYXBoX3Byb3BlcnR5X3BncG5hbWUgLSAxXSA9IE5hbWVHZXREYXR1bSgmcHJvcG5hbWVk YXRhKTsKKwkJdmFsdWVzW0FudW1fcGdfcHJvcGdyYXBoX3Byb3BlcnR5X3BncHR5cGlkIC0gMV0g PSBPYmplY3RJZEdldERhdHVtKHByb3B0eXBpZCk7CisKKwkJdHVwID0gaGVhcF9mb3JtX3R1cGxl KFJlbGF0aW9uR2V0RGVzY3IocmVsKSwgdmFsdWVzLCBudWxscyk7CisJCUNhdGFsb2dUdXBsZUlu c2VydChyZWwsIHR1cCk7CisJCWhlYXBfZnJlZXR1cGxlKHR1cCk7CisKKwkJT2JqZWN0QWRkcmVz c1NldChteXNlbGYsIFByb3BncmFwaFByb3BlcnR5UmVsYXRpb25JZCwgcHJvcG9pZCk7CisKKwkJ T2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQsIGdyYXBoaWQp OworCQlyZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lf QVVUTyk7CisJCU9iamVjdEFkZHJlc3NTZXQocmVmZXJlbmNlZCwgVHlwZVJlbGF0aW9uSWQsIHBy b3B0eXBpZCk7CisJCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQ RU5ERU5DWV9OT1JNQUwpOworCisJCXRhYmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKKwl9CisJZWxz ZQorCXsKKwkJcHJvcHR5cGlkID0gR2V0U3lzQ2FjaGVPaWQxKFBST1BHUkFQSFBST1BPSUQsIEFu dW1fcGdfcHJvcGdyYXBoX3Byb3BlcnR5X3BncHR5cGlkLCBPYmplY3RJZEdldERhdHVtKHByb3Bv aWQpKTsKKwl9CisKKwkvKgorCSAqIENoZWNrIHRoYXQgaW4gdGhlIGdyYXBoLCBhbGwgcHJvcGVy dGllcyB3aXRoIHRoZSBzYW1lIG5hbWUgaGF2ZSB0aGUKKwkgKiBzYW1lIHR5cGUgKGluZGVwZW5k ZW50IG9mIHdoaWNoIGxhYmVsIHRoZXkgYXJlIG9uKS4gIChTZWUgU1FML1BHUQorCSAqIHN1YmNs YXVzZSAiQ29uc2lzdGVuY3kgY2hlY2sgb2YgYSB0YWJ1bGFyIHByb3BlcnR5IGdyYXBoIGRlc2Ny aXB0b3IiLikKKwkgKi8KKwlpZiAocHJvcHR5cGlkICE9IGV4cHJ0eXBpZCkKKwl7CisJCWVyZXBv cnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJZXJybXNn KCJwcm9wZXJ0eSBcIiVzXCIgZGF0YSB0eXBlIG1pc21hdGNoOiAlcyB2cy4gJXMiLAorCQkJCQkg ICBwcm9wbmFtZSwgZm9ybWF0X3R5cGVfYmUocHJvcHR5cGlkKSwgZm9ybWF0X3R5cGVfYmUoZXhw cnR5cGlkKSksCisJCQkJZXJyZGV0YWlsKCJJbiBhIHByb3BlcnR5IGdyYXBoLCBhIHByb3BlcnR5 IG9mIHRoZSBzYW1lIG5hbWUgaGFzIHRvIGhhdmUgdGhlIHNhbWUgZGF0YSB0eXBlIGluIGVhY2gg bGFiZWwuIikpOworCX0KKworCS8qCisJICogSW5zZXJ0IGludG8gcGdfcHJvcGdyYXBoX2xhYmVs X3Byb3BlcnR5CisJICovCisJeworCQlSZWxhdGlvbglyZWw7CisJCURhdHVtCQl2YWx1ZXNbTmF0 dHNfcGdfcHJvcGdyYXBoX2xhYmVsX3Byb3BlcnR5XSA9IHswfTsKKwkJYm9vbAkJbnVsbHNbTmF0 dHNfcGdfcHJvcGdyYXBoX2xhYmVsX3Byb3BlcnR5XSA9IHswfTsKKwkJT2lkCQkJcGxwb2lkOwor CQlIZWFwVHVwbGUJdHVwOworCQlPYmplY3RBZGRyZXNzIG15c2VsZjsKKwkJT2JqZWN0QWRkcmVz cyByZWZlcmVuY2VkOworCisJCXJlbCA9IHRhYmxlX29wZW4oUHJvcGdyYXBoTGFiZWxQcm9wZXJ0 eVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJCXBscG9pZCA9IEdldE5ld09pZFdp dGhJbmRleChyZWwsIFByb3BncmFwaExhYmVsUHJvcGVydHlPYmplY3RJbmRleElkLCBBbnVtX3Bn X3Byb3BncmFwaF9sYWJlbF9wcm9wZXJ0eV9vaWQpOworCQl2YWx1ZXNbQW51bV9wZ19wcm9wZ3Jh cGhfbGFiZWxfcHJvcGVydHlfb2lkIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHBscG9pZCk7CisJ CXZhbHVlc1tBbnVtX3BnX3Byb3BncmFwaF9sYWJlbF9wcm9wZXJ0eV9wbHBwcm9waWQgLSAxXSA9 IE9iamVjdElkR2V0RGF0dW0ocHJvcG9pZCk7CisJCXZhbHVlc1tBbnVtX3BnX3Byb3BncmFwaF9s YWJlbF9wcm9wZXJ0eV9wbHBlbGxhYmVsaWQgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0oZWxsYWJl bG9pZCk7CisJCXZhbHVlc1tBbnVtX3BnX3Byb3BncmFwaF9sYWJlbF9wcm9wZXJ0eV9wbHBleHBy IC0gMV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKG5vZGVUb1N0cmluZyhleHByKSk7CisKKwkJdHVw ID0gaGVhcF9mb3JtX3R1cGxlKFJlbGF0aW9uR2V0RGVzY3IocmVsKSwgdmFsdWVzLCBudWxscyk7 CisJCUNhdGFsb2dUdXBsZUluc2VydChyZWwsIHR1cCk7CisJCWhlYXBfZnJlZXR1cGxlKHR1cCk7 CisKKwkJT2JqZWN0QWRkcmVzc1NldChteXNlbGYsIFByb3BncmFwaExhYmVsUHJvcGVydHlSZWxh dGlvbklkLCBwbHBvaWQpOworCisJCU9iamVjdEFkZHJlc3NTZXQocmVmZXJlbmNlZCwgUHJvcGdy YXBoUHJvcGVydHlSZWxhdGlvbklkLCBwcm9wb2lkKTsKKwkJcmVjb3JkRGVwZW5kZW5jeU9uKCZt eXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX0FVVE8pOworCisJCU9iamVjdEFkZHJlc3NT ZXQocmVmZXJlbmNlZCwgUHJvcGdyYXBoRWxlbWVudExhYmVsUmVsYXRpb25JZCwgZWxsYWJlbG9p ZCk7CisJCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5ERU5D WV9BVVRPKTsKKworCQlyZWNvcmREZXBlbmRlbmN5T25TaW5nbGVSZWxFeHByKCZteXNlbGYsIChO b2RlICopIGNvcHlPYmplY3QoZXhwciksIHBnZXJlbGlkLCBERVBFTkRFTkNZX05PUk1BTCwgREVQ RU5ERU5DWV9OT1JNQUwsIGZhbHNlKTsKKworCQl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CisJ fQorfQorCisvKgorICogQ2hlY2sgdGhhdCBmb3IgdGhlIGdpdmVuIGdyYXBoIGVsZW1lbnQsIGFs bCBwcm9wZXJ0aWVzIHdpdGggdGhlIHNhbWUgbmFtZQorICogaGF2ZSB0aGUgc2FtZSBleHByZXNz aW9uIGZvciBlYWNoIGxhYmVsLiAgKFNlZSBTUUwvUEdRIHN1YmNsYXVzZSAiQ3JlYXRpb24KKyAq IG9mIGFuIGVsZW1lbnQgdGFibGUgZGVzY3JpcHRvciIuKQorICoKKyAqIFdlIGNoZWNrIHRoaXMg YWZ0ZXIgYWxsIHRoZSBjYXRhbG9nIHJlY29yZHMgYXJlIGFscmVhZHkgaW5zZXJ0ZWQuICBUaGlz CisgKiBtYWtlcyBpdCBlYXNpZXIgdG8gc2hhcmUgdGhpcyBjb2RlIGJldHdlZW4gQ1JFQVRFIFBS T1BFUlRZIEdSQVBIIGFuZCBBTFRFUgorICogUFJPUEVSVFkgR1JBUEguICBXZSBwYXNzIGluIHRo ZSBlbGVtZW50IE9JRCBzbyB0aGF0IEFMVEVSIFBST1BFUlRZIEdSQVBICisgKiBvbmx5IGhhcyB0 byBjaGVjayB0aGUgZWxlbWVudCBpdCBoYXMganVzdCBvcGVyYXRlZCBvbi4gIENSRUFURSBQUk9Q RVJUWQorICogR1JPVVAgY2hlY2tzIGFsbCBlbGVtZW50cyBpdCBoYXMgY3JlYXRlZC4KKyAqLwor c3RhdGljIHZvaWQKK2NoZWNrX2VsZW1lbnRfcHJvcGVydGllcyhPaWQgcGVvaWQpCit7CisJUmVs YXRpb24JcmVsMTsKKwlTY2FuS2V5RGF0YSBrZXkxWzFdOworCVN5c1NjYW5EZXNjIHNjYW4xOwor CUhlYXBUdXBsZQl0dXBsZTE7CisJTGlzdAkgICAqcHJvcG9pZHMgPSBOSUw7CisJTGlzdAkgICAq cHJvcGV4cHJzID0gTklMOworCisJcmVsMSA9IHRhYmxlX29wZW4oUHJvcGdyYXBoRWxlbWVudExh YmVsUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlTY2FuS2V5SW5pdCgma2V5MVswXSwK KwkJCQlBbnVtX3BnX3Byb3BncmFwaF9lbGVtZW50X2xhYmVsX3BnZWxlbGlkLAorCQkJCUJURXF1 YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKHBlb2lkKSk7 CisKKwlzY2FuMSA9IHN5c3RhYmxlX2JlZ2luc2NhbihyZWwxLCBQcm9wZ3JhcGhFbGVtZW50TGFi ZWxFbGVtZW50TGFiZWxJbmRleElkLCB0cnVlLCBOVUxMLCAxLCBrZXkxKTsKKwl3aGlsZSAoSGVh cFR1cGxlSXNWYWxpZCh0dXBsZTEgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4xKSkpCisJeworCQlG b3JtX3BnX3Byb3BncmFwaF9lbGVtZW50X2xhYmVsIGVsbGFiZWwgPSAoRm9ybV9wZ19wcm9wZ3Jh cGhfZWxlbWVudF9sYWJlbCkgR0VUU1RSVUNUKHR1cGxlMSk7CisJCVJlbGF0aW9uCXJlbDI7CisJ CVNjYW5LZXlEYXRhIGtleTJbMV07CisJCVN5c1NjYW5EZXNjIHNjYW4yOworCQlIZWFwVHVwbGUJ dHVwbGUyOworCisJCXJlbDIgPSB0YWJsZV9vcGVuKFByb3BncmFwaExhYmVsUHJvcGVydHlSZWxh dGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCQlTY2FuS2V5SW5pdCgma2V5MlswXSwKKwkJCQkJ QW51bV9wZ19wcm9wZ3JhcGhfbGFiZWxfcHJvcGVydHlfcGxwZWxsYWJlbGlkLAorCQkJCQlCVEVx dWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJCU9iamVjdElkR2V0RGF0dW0oZWxsYWJl bC0+b2lkKSk7CisKKwkJc2NhbjIgPSBzeXN0YWJsZV9iZWdpbnNjYW4ocmVsMiwgUHJvcGdyYXBo TGFiZWxQcm9wZXJ0eUxhYmVsUHJvcEluZGV4SWQsIHRydWUsIE5VTEwsIDEsIGtleTIpOworCQl3 aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZTIgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4yKSkp CisJCXsKKwkJCUZvcm1fcGdfcHJvcGdyYXBoX2xhYmVsX3Byb3BlcnR5IGxwcm9wID0gKEZvcm1f cGdfcHJvcGdyYXBoX2xhYmVsX3Byb3BlcnR5KSBHRVRTVFJVQ1QodHVwbGUyKTsKKwkJCU9pZAkJ CXByb3BvaWQ7CisJCQlEYXR1bQkJZGF0dW07CisJCQlib29sCQlpc251bGw7CisJCQljaGFyCSAg ICpwcm9wZXhwcjsKKwkJCUxpc3RDZWxsICAgKmxjMSwKKwkJCQkJICAgKmxjMjsKKwkJCWJvb2wJ CWZvdW5kOworCisJCQlwcm9wb2lkID0gbHByb3AtPnBscHByb3BpZDsKKwkJCWRhdHVtID0gaGVh cF9nZXRhdHRyKHR1cGxlMiwgQW51bV9wZ19wcm9wZ3JhcGhfbGFiZWxfcHJvcGVydHlfcGxwZXhw ciwgUmVsYXRpb25HZXREZXNjcihyZWwyKSwgJmlzbnVsbCk7CisJCQlBc3NlcnQoIWlzbnVsbCk7 CisJCQlwcm9wZXhwciA9IFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pOworCisJCQlmb3VuZCA9 IGZhbHNlOworCQkJZm9yYm90aChsYzEsIHByb3BvaWRzLCBsYzIsIHByb3BleHBycykKKwkJCXsK KwkJCQlpZiAocHJvcG9pZCA9PSBsZmlyc3Rfb2lkKGxjMSkpCisJCQkJeworCQkJCQlOb2RlCSAg ICpuYSwKKwkJCQkJCQkgICAqbmI7CisKKwkJCQkJbmEgPSBzdHJpbmdUb05vZGUocHJvcGV4cHIp OworCQkJCQluYiA9IHN0cmluZ1RvTm9kZShsZmlyc3QobGMyKSk7CisKKwkJCQkJZm91bmQgPSB0 cnVlOworCisJCQkJCWlmICghZXF1YWwobmEsIG5iKSkKKwkJCQkJeworCQkJCQkJSGVhcFR1cGxl CXR1cGxlMzsKKwkJCQkJCUZvcm1fcGdfcHJvcGdyYXBoX2VsZW1lbnQgZWxmb3JtOworCQkJCQkJ TGlzdAkgICAqZHBjb250ZXh0OworCQkJCQkJY2hhcgkgICAqZHBhLAorCQkJCQkJCQkgICAqZHBi OworCisJCQkJCQl0dXBsZTMgPSBTZWFyY2hTeXNDYWNoZTEoUFJPUEdSQVBIRUxPSUQsIE9iamVj dElkR2V0RGF0dW0ocGVvaWQpKTsKKwkJCQkJCWlmICghdHVwbGUzKQorCQkJCQkJCWVsb2coRVJS T1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBwcm9wZXJ0eSBncmFwaCBlbGVtZW50ICV1Iiwg cGVvaWQpOworCQkJCQkJZWxmb3JtID0gKEZvcm1fcGdfcHJvcGdyYXBoX2VsZW1lbnQpIEdFVFNU UlVDVCh0dXBsZTMpOworCQkJCQkJZHBjb250ZXh0ID0gZGVwYXJzZV9jb250ZXh0X2ZvcihnZXRf cmVsX25hbWUoZWxmb3JtLT5wZ2VyZWxpZCksIGVsZm9ybS0+cGdlcmVsaWQpOworCisJCQkJCQlk cGEgPSBkZXBhcnNlX2V4cHJlc3Npb24obmEsIGRwY29udGV4dCwgZmFsc2UsIGZhbHNlKTsKKwkJ CQkJCWRwYiA9IGRlcGFyc2VfZXhwcmVzc2lvbihuYiwgZHBjb250ZXh0LCBmYWxzZSwgZmFsc2Up OworCisJCQkJCQkvKgorCQkJCQkJICogc2hvdyBpbiBzb3J0ZWQgb3JkZXIgdG8ga2VlcCBvdXRw dXQgaW5kZXBlbmRlbnQgb2YKKwkJCQkJCSAqIGluZGV4IG9yZGVyCisJCQkJCQkgKi8KKwkJCQkJ CWlmIChzdHJjbXAoZHBhLCBkcGIpID4gMCkKKwkJCQkJCXsKKwkJCQkJCQljaGFyCSAgICp0bXA7 CisKKwkJCQkJCQl0bXAgPSBkcGE7CisJCQkJCQkJZHBhID0gZHBiOworCQkJCQkJCWRwYiA9IHRt cDsKKwkJCQkJCX0KKworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJD T0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCWVycm1zZygiZWxlbWVudCBcIiVzXCIgcHJvcGVy dHkgXCIlc1wiIGV4cHJlc3Npb24gbWlzbWF0Y2g6ICVzIHZzLiAlcyIsCisJCQkJCQkJCQkgICBO YW1lU3RyKGVsZm9ybS0+cGdlYWxpYXMpLCBnZXRfcHJvcGdyYXBoX3Byb3BlcnR5X25hbWUocHJv cG9pZCksIGRwYSwgZHBiKSwKKwkJCQkJCQkJZXJyZGV0YWlsKCJJbiBhIHByb3BlcnR5IGdyYXBo IGVsZW1lbnQsIGEgcHJvcGVydHkgb2YgdGhlIHNhbWUgbmFtZSBoYXMgdG8gaGF2ZSB0aGUgc2Ft ZSBleHByZXNzaW9uIGluIGVhY2ggbGFiZWwuIikpOworCisJCQkJCQlSZWxlYXNlU3lzQ2FjaGUo dHVwbGUzKTsKKwkJCQkJfQorCisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKworCQkJaWYgKCFm b3VuZCkKKwkJCXsKKwkJCQlwcm9wb2lkcyA9IGxhcHBlbmRfb2lkKHByb3BvaWRzLCBwcm9wb2lk KTsKKwkJCQlwcm9wZXhwcnMgPSBsYXBwZW5kKHByb3BleHBycywgcHJvcGV4cHIpOworCQkJfQor CQl9CisJCXN5c3RhYmxlX2VuZHNjYW4oc2NhbjIpOworCQl0YWJsZV9jbG9zZShyZWwyLCBBY2Nl c3NTaGFyZUxvY2spOworCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2NhbjEpOworCXRhYmxlX2Ns b3NlKHJlbDEsIEFjY2Vzc1NoYXJlTG9jayk7Cit9CisKKy8qCisgKiBDaGVjayB0aGF0IGZvciB0 aGUgZ2l2ZW4gZWxlbWVudCBsYWJlbCwgYWxsIGxhYmVscyBvZiB0aGUgc2FtZSBuYW1lIGluIHRo ZQorICogZ3JhcGggaGF2ZSB0aGUgc2FtZSBudW1iZXIgYW5kIG5hbWVzIG9mIHByb3BlcnRpZXMg KGluZGVwZW5kZW50IG9mIHdoaWNoCisgKiBlbGVtZW50IHRoZXkgYXJlIG9uKS4gIChTZWUgU1FM L1BHUSBzdWJjbGF1c2UgIkNvbnNpc3RlbmN5IGNoZWNrIG9mIGEKKyAqIHRhYnVsYXIgcHJvcGVy dHkgZ3JhcGggZGVzY3JpcHRvciIuKQorICoKKyAqIFdlIGNoZWNrIHRoaXMgYWZ0ZXIgYWxsIHRo ZSBjYXRhbG9nIHJlY29yZHMgYXJlIGFscmVhZHkgaW5zZXJ0ZWQuICBUaGlzCisgKiBtYWtlcyBp dCBlYXNpZXIgdG8gc2hhcmUgdGhpcyBjb2RlIGJldHdlZW4gQ1JFQVRFIFBST1BFUlRZIEdSQVBI IGFuZCBBTFRFUgorICogUFJPUEVSVFkgR1JBUEguICBXZSBwYXNzIGluIHRoZSBlbGVtZW50IGxh YmVsIE9JRCBzbyB0aGF0IHNvbWUgdmFyaWFudHMgb2YKKyAqIEFMVEVSIFBST1BFUlRZIEdSQVBI IG9ubHkgaGF2ZSB0byBjaGVjayB0aGUgZWxlbWVudCBsYWJlbCBpdCBoYXMganVzdAorICogb3Bl cmF0ZWQgb24uICBDUkVBVEUgUFJPUEVSVFkgR1JPVVAgYW5kIG90aGVyIEFMVEVSIFBST1BFUlRZ IEdSQVBIIHZhcmlhbnRzCisgKiBjaGVjayBhbGwgbGFiZWxzLgorICovCitzdGF0aWMgdm9pZAor Y2hlY2tfZWxlbWVudF9sYWJlbF9wcm9wZXJ0aWVzKE9pZCBlbGxhYmVsb2lkKQoreworCVJlbGF0 aW9uCXJlbDsKKwlTeXNTY2FuRGVzYyBzY2FuOworCVNjYW5LZXlEYXRhIGtleVsxXTsKKwlIZWFw VHVwbGUJdHVwbGU7CisJT2lkCQkJbGFiZWxpZCA9IEludmFsaWRPaWQ7CisJT2lkCQkJcmVmX2Vs bGFiZWxvaWQgPSBJbnZhbGlkT2lkOworCUxpc3QJICAgKm15cHJvcHMsCisJCQkgICAqcmVmcHJv cHM7CisJTGlzdAkgICAqZGlmZjEsCisJCQkgICAqZGlmZjI7CisKKwlyZWwgPSB0YWJsZV9vcGVu KFByb3BncmFwaEVsZW1lbnRMYWJlbFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkv KgorCSAqIEdldCBlbGVtZW50IGxhYmVsIGluZm8KKwkgKi8KKwlTY2FuS2V5SW5pdCgma2V5WzBd LAorCQkJCUFudW1fcGdfcHJvcGdyYXBoX2VsZW1lbnRfbGFiZWxfb2lkLAorCQkJCUJURXF1YWxT dHJhdGVneU51bWJlciwKKwkJCQlGX09JREVRLCBPYmplY3RJZEdldERhdHVtKGVsbGFiZWxvaWQp KTsKKwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHJlbCwgUHJvcGdyYXBoRWxlbWVudExhYmVs T2JqZWN0SW5kZXhJZCwgdHJ1ZSwgTlVMTCwgMSwga2V5KTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxp ZCh0dXBsZSA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJRm9ybV9wZ19wcm9wZ3Jh cGhfZWxlbWVudF9sYWJlbCBlbGxhYmVsID0gKEZvcm1fcGdfcHJvcGdyYXBoX2VsZW1lbnRfbGFi ZWwpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkJbGFiZWxpZCA9IGVsbGFiZWwtPnBnZWxsYWJlbGlk OworCX0KKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCWlmICghbGFiZWxpZCkKKwkJZWxvZyhF UlJPUiwgImVsZW1lbnQgbGFiZWwgJXUgbm90IGZvdW5kIiwgZWxsYWJlbG9pZCk7CisKKwkvKgor CSAqIEZpbmQgYSByZWZlcmVuY2UgZWxlbWVudCBsYWJlbCB0byBmZXRjaCBsYWJlbCBwcm9wZXJ0 aWVzLiAgVGhlCisJICogcmVmZXJlbmNlIGVsZW1lbnQgbGFiZWwgaGFzIHRvIGhhdmUgdGhlIGxh YmVsIE9JRCBhcyB0aGUgb25lIGJlaW5nCisJICogY2hlY2tlZCBidXQgYmUgZGlzdGluY3QgZnJv bSB0aGUgb25lIGJlaW5nIGNoZWNrZWQuCisJICovCisJU2NhbktleUluaXQoJmtleVswXSwKKwkJ CQlBbnVtX3BnX3Byb3BncmFwaF9lbGVtZW50X2xhYmVsX3BnZWxsYWJlbGlkLAorCQkJCUJURXF1 YWxTdHJhdGVneU51bWJlciwKKwkJCQlGX09JREVRLCBPYmplY3RJZEdldERhdHVtKGxhYmVsaWQp KTsKKwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHJlbCwgUHJvcGdyYXBoRWxlbWVudExhYmVs TGFiZWxJbmRleElkLCB0cnVlLCBOVUxMLCAxLCBrZXkpOworCXdoaWxlIChIZWFwVHVwbGVJc1Zh bGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJeworCQlGb3JtX3BnX3Byb3Bn cmFwaF9lbGVtZW50X2xhYmVsIG90aGVyZWxsYWJlbCA9IChGb3JtX3BnX3Byb3BncmFwaF9lbGVt ZW50X2xhYmVsKSBHRVRTVFJVQ1QodHVwbGUpOworCisJCWlmIChvdGhlcmVsbGFiZWwtPm9pZCAh PSBlbGxhYmVsb2lkKQorCQl7CisJCQlyZWZfZWxsYWJlbG9pZCA9IG90aGVyZWxsYWJlbC0+b2lk OworCQkJYnJlYWs7CisJCX0KKwl9CisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKworCXRhYmxl X2Nsb3NlKHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCS8qCisJICogSWYgdGhlcmUgaXMgbm90 IHByZXZpb3VzIGRlZmluaXRpb24gb2YgdGhpcyBsYWJlbCwgdGhlbiB3ZSBhcmUgZG9uZS4KKwkg Ki8KKwlpZiAoIXJlZl9lbGxhYmVsb2lkKQorCQlyZXR1cm47CisKKwkvKgorCSAqIE5vdyBjaGVj ayBudW1iZXIgYW5kIG5hbWVzLgorCSAqCisJICogWFhYIFdlIGNvdWxkIHByb3ZpZGUgbW9yZSBk ZXRhaWwgaW4gdGhlIGVycm9yIG1lc3NhZ2VzLCBidXQgdGhhdCB3b3VsZAorCSAqIHByb2JhYmx5 IG9ubHkgYmUgdXNlZnVsIGZvciBzb21lIEFMVEVSIGNvbW1hbmRzLCBiZWNhdXNlIG90aGVyd2lz ZSBpdCdzCisJICogbm90IHJlYWxseSBjbGVhciB3aGljaCBsYWJlbCBkZWZpbml0aW9uIGlzIHRo ZSB3cm9uZyBvbmUsIGFuZCBzbyB5b3UnZAorCSAqIGhhdmUgdG8gY29uc3RydWN0IGEgcmF0aGVy IHZlcmJvc2UgcmVwb3J0IHRvIGJlIG9mIGFueSB1c2UuICBMZXQncyBrZWVwCisJICogaXQgc2lt cGxlIGZvciBub3cuCisJICovCisKKwlteXByb3BzID0gZ2V0X2VsZW1lbnRfbGFiZWxfcHJvcGVy dHlfbmFtZXMoZWxsYWJlbG9pZCk7CisJcmVmcHJvcHMgPSBnZXRfZWxlbWVudF9sYWJlbF9wcm9w ZXJ0eV9uYW1lcyhyZWZfZWxsYWJlbG9pZCk7CisKKwlpZiAobGlzdF9sZW5ndGgocmVmcHJvcHMp ICE9IGxpc3RfbGVuZ3RoKG15cHJvcHMpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUo RVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQllcnJtc2coIm1pc21hdGNo aW5nIG51bWJlciBvZiBwcm9wZXJ0aWVzIGluIGRlZmluaXRpb24gb2YgbGFiZWwgXCIlc1wiIiwg Z2V0X3Byb3BncmFwaF9sYWJlbF9uYW1lKGxhYmVsaWQpKSk7CisKKwlkaWZmMSA9IGxpc3RfZGlm ZmVyZW5jZShteXByb3BzLCByZWZwcm9wcyk7CisJZGlmZjIgPSBsaXN0X2RpZmZlcmVuY2UocmVm cHJvcHMsIG15cHJvcHMpOworCisJaWYgKGRpZmYxIHx8IGRpZmYyKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQll cnJtc2coIm1pc21hdGNoaW5nIHByb3BlcnRpZXMgbmFtZXMgaW4gZGVmaW5pdGlvbiBvZiBsYWJl bCBcIiVzXCIiLCBnZXRfcHJvcGdyYXBoX2xhYmVsX25hbWUobGFiZWxpZCkpKTsKK30KKworLyoK KyAqIEFzIGFib3ZlLCBidXQgY2hlY2sgYWxsIGxhYmVscyBvZiBhIGdyYXBoLgorICovCitzdGF0 aWMgdm9pZAorY2hlY2tfYWxsX2xhYmVsc19wcm9wZXJ0aWVzKE9pZCBwZ3JlbGlkKQoreworCWZv cmVhY2hfb2lkKGxhYmVsb2lkLCBnZXRfZ3JhcGhfbGFiZWxfaWRzKHBncmVsaWQpKQorCXsKKwkJ Zm9yZWFjaF9vaWQoZWxsYWJlbG9pZCwgZ2V0X2xhYmVsX2VsZW1lbnRfbGFiZWxfaWRzKGxhYmVs b2lkKSkKKwkJeworCQkJY2hlY2tfZWxlbWVudF9sYWJlbF9wcm9wZXJ0aWVzKGVsbGFiZWxvaWQp OworCQl9CisJfQorfQorCisvKgorICogQUxURVIgUFJPUEVSVFkgR1JBUEgKKyAqLworT2JqZWN0 QWRkcmVzcworQWx0ZXJQcm9wR3JhcGgoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25zdCBBbHRlclBy b3BHcmFwaFN0bXQgKnN0bXQpCit7CisJT2lkCQkJcGdyZWxpZDsKKwlMaXN0Q2VsbCAgICpsYzsK KwlPYmplY3RBZGRyZXNzIHBnYWRkcmVzczsKKworCXBncmVsaWQgPSBSYW5nZVZhckdldFJlbGlk RXh0ZW5kZWQoc3RtdC0+cGduYW1lLAorCQkJCQkJCQkJICAgU2hhcmVSb3dFeGNsdXNpdmVMb2Nr LAorCQkJCQkJCQkJICAgc3RtdC0+bWlzc2luZ19vayA/IFJWUl9NSVNTSU5HX09LIDogMCwKKwkJ CQkJCQkJCSAgIFJhbmdlVmFyQ2FsbGJhY2tPd25zUmVsYXRpb24sCisJCQkJCQkJCQkgICBOVUxM KTsKKwlpZiAocGdyZWxpZCA9PSBJbnZhbGlkT2lkKQorCXsKKwkJZXJlcG9ydChOT1RJQ0UsCisJ CQkJKGVycm1zZygicmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0LCBza2lwcGluZyIsCisJ CQkJCQlzdG10LT5wZ25hbWUtPnJlbG5hbWUpKSk7CisJCXJldHVybiBJbnZhbGlkT2JqZWN0QWRk cmVzczsKKwl9CisKKwlPYmplY3RBZGRyZXNzU2V0KHBnYWRkcmVzcywgUmVsYXRpb25SZWxhdGlv bklkLCBwZ3JlbGlkKTsKKworCWZvcmVhY2gobGMsIHN0bXQtPmFkZF92ZXJ0ZXhfdGFibGVzKQor CXsKKwkJUHJvcEdyYXBoVmVydGV4ICp2ZXJ0ZXggPSBsZmlyc3Rfbm9kZShQcm9wR3JhcGhWZXJ0 ZXgsIGxjKTsKKwkJc3RydWN0IGVsZW1lbnRfaW5mbyAqdmluZm87CisJCVJlbGF0aW9uCXJlbDsK KwkJT2lkCQkJcGVvaWQ7CisKKwkJdmluZm8gPSBwYWxsb2MwX29iamVjdChzdHJ1Y3QgZWxlbWVu dF9pbmZvKTsKKwkJdmluZm8tPmtpbmQgPSBQR0VLSU5EX1ZFUlRFWDsKKworCQl2aW5mby0+cmVs aWQgPSBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWQodmVydGV4LT52dGFibGUsIEFjY2Vzc1NoYXJl TG9jaywgMCwgUmFuZ2VWYXJDYWxsYmFja093bnNSZWxhdGlvbiwgTlVMTCk7CisKKwkJcmVsID0g dGFibGVfb3Blbih2aW5mby0+cmVsaWQsIE5vTG9jayk7CisKKwkJaWYgKHJlbC0+cmRfcmVsLT5y ZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QICYmIGdldF9yZWxfcGVyc2lzdGVu Y2UocGdyZWxpZCkgIT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCSBl cnJtc2coImNhbm5vdCBhZGQgdGVtcG9yYXJ5IGVsZW1lbnQgdGFibGUgdG8gbm9uLXRlbXBvcmFy eSBwcm9wZXJ0eSBncmFwaCIpLAorCQkJCQkgZXJyZGV0YWlsKCJUYWJsZSBcIiVzXCIgaXMgYSB0 ZW1wb3JhcnkgdGFibGUuIiwgZ2V0X3JlbF9uYW1lKHZpbmZvLT5yZWxpZCkpLAorCQkJCQkgcGFy c2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgdmVydGV4LT52dGFibGUtPmxvY2F0aW9uKSkpOworCisJ CWlmICh2ZXJ0ZXgtPnZ0YWJsZS0+YWxpYXMpCisJCQl2aW5mby0+YWxpYXNuYW1lID0gdmVydGV4 LT52dGFibGUtPmFsaWFzLT5hbGlhc25hbWU7CisJCWVsc2UKKwkJCXZpbmZvLT5hbGlhc25hbWUg PSB2ZXJ0ZXgtPnZ0YWJsZS0+cmVsbmFtZTsKKworCQl2aW5mby0+a2V5ID0gcHJvcGdyYXBoX2Vs ZW1lbnRfZ2V0X2tleShwc3RhdGUsIHZlcnRleC0+dmtleSwgcmVsLCB2aW5mby0+YWxpYXNuYW1l LCB2ZXJ0ZXgtPmxvY2F0aW9uKTsKKworCQl2aW5mby0+bGFiZWxzID0gdmVydGV4LT5sYWJlbHM7 CisKKwkJdGFibGVfY2xvc2UocmVsLCBOb0xvY2spOworCisJCXBlb2lkID0gaW5zZXJ0X2VsZW1l bnRfcmVjb3JkKHBnYWRkcmVzcywgdmluZm8pOworCisJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50 KCk7CisJCWNoZWNrX2VsZW1lbnRfcHJvcGVydGllcyhwZW9pZCk7CisJCWNoZWNrX2FsbF9sYWJl bHNfcHJvcGVydGllcyhwZ3JlbGlkKTsKKwl9CisKKwlmb3JlYWNoKGxjLCBzdG10LT5hZGRfZWRn ZV90YWJsZXMpCisJeworCQlQcm9wR3JhcGhFZGdlICplZGdlID0gbGZpcnN0X25vZGUoUHJvcEdy YXBoRWRnZSwgbGMpOworCQlzdHJ1Y3QgZWxlbWVudF9pbmZvICplaW5mbzsKKwkJUmVsYXRpb24J cmVsOworCQlSZWxhdGlvbglzcmNyZWw7CisJCVJlbGF0aW9uCWRlc3RyZWw7CisJCU9pZAkJCXBl b2lkOworCisJCWVpbmZvID0gcGFsbG9jMF9vYmplY3Qoc3RydWN0IGVsZW1lbnRfaW5mbyk7CisJ CWVpbmZvLT5raW5kID0gUEdFS0lORF9FREdFOworCisJCWVpbmZvLT5yZWxpZCA9IFJhbmdlVmFy R2V0UmVsaWRFeHRlbmRlZChlZGdlLT5ldGFibGUsIEFjY2Vzc1NoYXJlTG9jaywgMCwgUmFuZ2VW YXJDYWxsYmFja093bnNSZWxhdGlvbiwgTlVMTCk7CisKKwkJcmVsID0gdGFibGVfb3BlbihlaW5m by0+cmVsaWQsIE5vTG9jayk7CisKKwkJaWYgKHJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSA9 PSBSRUxQRVJTSVNURU5DRV9URU1QICYmIGdldF9yZWxfcGVyc2lzdGVuY2UocGdyZWxpZCkgIT0g UkVMUEVSU0lTVEVOQ0VfVEVNUCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCSBlcnJtc2coImNhbm5vdCBh ZGQgdGVtcG9yYXJ5IGVsZW1lbnQgdGFibGUgdG8gbm9uLXRlbXBvcmFyeSBwcm9wZXJ0eSBncmFw aCIpLAorCQkJCQkgZXJyZGV0YWlsKCJUYWJsZSBcIiVzXCIgaXMgYSB0ZW1wb3JhcnkgdGFibGUu IiwgZ2V0X3JlbF9uYW1lKGVpbmZvLT5yZWxpZCkpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgZWRnZS0+ZXRhYmxlLT5sb2NhdGlvbikpKTsKKworCQlpZiAoZWRnZS0+ZXRhYmxl LT5hbGlhcykKKwkJCWVpbmZvLT5hbGlhc25hbWUgPSBlZGdlLT5ldGFibGUtPmFsaWFzLT5hbGlh c25hbWU7CisJCWVsc2UKKwkJCWVpbmZvLT5hbGlhc25hbWUgPSBlZGdlLT5ldGFibGUtPnJlbG5h bWU7CisKKwkJZWluZm8tPmtleSA9IHByb3BncmFwaF9lbGVtZW50X2dldF9rZXkocHN0YXRlLCBl ZGdlLT5la2V5LCByZWwsIGVpbmZvLT5hbGlhc25hbWUsIGVkZ2UtPmxvY2F0aW9uKTsKKworCQll aW5mby0+c3JjdmVydGV4aWQgPSBnZXRfdmVydGV4X29pZChwc3RhdGUsIHBncmVsaWQsIGVkZ2Ut PmVzcmN2ZXJ0ZXgsIGVkZ2UtPmxvY2F0aW9uKTsKKwkJZWluZm8tPmRlc3R2ZXJ0ZXhpZCA9IGdl dF92ZXJ0ZXhfb2lkKHBzdGF0ZSwgcGdyZWxpZCwgZWRnZS0+ZWRlc3R2ZXJ0ZXgsIGVkZ2UtPmxv Y2F0aW9uKTsKKworCQllaW5mby0+c3JjcmVsaWQgPSBnZXRfZWxlbWVudF9yZWxpZChlaW5mby0+ c3JjdmVydGV4aWQpOworCQllaW5mby0+ZGVzdHJlbGlkID0gZ2V0X2VsZW1lbnRfcmVsaWQoZWlu Zm8tPmRlc3R2ZXJ0ZXhpZCk7CisKKwkJc3JjcmVsID0gdGFibGVfb3BlbihlaW5mby0+c3JjcmVs aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCWRlc3RyZWwgPSB0YWJsZV9vcGVuKGVpbmZvLT5kZXN0 cmVsaWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJcHJvcGdyYXBoX2VkZ2VfZ2V0X3JlZl9rZXlz KHBzdGF0ZSwgZWRnZS0+ZXNyY2tleSwgZWRnZS0+ZXNyY3ZlcnRleGNvbHMsIHJlbCwgc3JjcmVs LAorCQkJCQkJCQkJZWluZm8tPmFsaWFzbmFtZSwgZWRnZS0+bG9jYXRpb24sICJTT1VSQ0UiLAor CQkJCQkJCQkJJmVpbmZvLT5zcmNrZXksICZlaW5mby0+c3JjcmVmKTsKKwkJcHJvcGdyYXBoX2Vk Z2VfZ2V0X3JlZl9rZXlzKHBzdGF0ZSwgZWRnZS0+ZWRlc3RrZXksIGVkZ2UtPmVkZXN0dmVydGV4 Y29scywgcmVsLCBkZXN0cmVsLAorCQkJCQkJCQkJZWluZm8tPmFsaWFzbmFtZSwgZWRnZS0+bG9j YXRpb24sICJERVNUSU5BVElPTiIsCisJCQkJCQkJCQkmZWluZm8tPmRlc3RrZXksICZlaW5mby0+ ZGVzdHJlZik7CisKKwkJZWluZm8tPmxhYmVscyA9IGVkZ2UtPmxhYmVsczsKKworCQl0YWJsZV9j bG9zZShkZXN0cmVsLCBOb0xvY2spOworCQl0YWJsZV9jbG9zZShzcmNyZWwsIE5vTG9jayk7CisK KwkJdGFibGVfY2xvc2UocmVsLCBOb0xvY2spOworCisJCXBlb2lkID0gaW5zZXJ0X2VsZW1lbnRf cmVjb3JkKHBnYWRkcmVzcywgZWluZm8pOworCisJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7 CisJCWNoZWNrX2VsZW1lbnRfcHJvcGVydGllcyhwZW9pZCk7CisJCWNoZWNrX2FsbF9sYWJlbHNf cHJvcGVydGllcyhwZ3JlbGlkKTsKKwl9CisKKwlmb3JlYWNoKGxjLCBzdG10LT5kcm9wX3ZlcnRl eF90YWJsZXMpCisJeworCQljaGFyCSAgICphbGlhcyA9IHN0clZhbChsZmlyc3QobGMpKTsKKwkJ T2lkCQkJcGVvaWQ7CisJCU9iamVjdEFkZHJlc3Mgb2JqOworCisJCXBlb2lkID0gZ2V0X3ZlcnRl eF9vaWQocHN0YXRlLCBwZ3JlbGlkLCBhbGlhcywgLTEpOworCQlPYmplY3RBZGRyZXNzU2V0KG9i aiwgUHJvcGdyYXBoRWxlbWVudFJlbGF0aW9uSWQsIHBlb2lkKTsKKwkJcGVyZm9ybURlbGV0aW9u KCZvYmosIHN0bXQtPmRyb3BfYmVoYXZpb3IsIDApOworCX0KKworCWZvcmVhY2gobGMsIHN0bXQt PmRyb3BfZWRnZV90YWJsZXMpCisJeworCQljaGFyCSAgICphbGlhcyA9IHN0clZhbChsZmlyc3Qo bGMpKTsKKwkJT2lkCQkJcGVvaWQ7CisJCU9iamVjdEFkZHJlc3Mgb2JqOworCisJCXBlb2lkID0g Z2V0X2VkZ2Vfb2lkKHBzdGF0ZSwgcGdyZWxpZCwgYWxpYXMsIC0xKTsKKwkJT2JqZWN0QWRkcmVz c1NldChvYmosIFByb3BncmFwaEVsZW1lbnRSZWxhdGlvbklkLCBwZW9pZCk7CisJCXBlcmZvcm1E ZWxldGlvbigmb2JqLCBzdG10LT5kcm9wX2JlaGF2aW9yLCAwKTsKKwl9CisKKwkvKiBSZW1vdmUg YW55IG9ycGhhbmVkIHBnX3Byb3BncmFwaF9sYWJlbCBlbnRyaWVzICovCisJaWYgKHN0bXQtPmRy b3BfdmVydGV4X3RhYmxlcyB8fCBzdG10LT5kcm9wX2VkZ2VfdGFibGVzKQorCXsKKwkJZm9yZWFj aF9vaWQobGFiZWxvaWQsIGdldF9ncmFwaF9sYWJlbF9pZHMocGdyZWxpZCkpCisJCXsKKwkJCWlm ICghZ2V0X2xhYmVsX2VsZW1lbnRfbGFiZWxfaWRzKGxhYmVsb2lkKSkKKwkJCXsKKwkJCQlPYmpl Y3RBZGRyZXNzIG9iajsKKworCQkJCU9iamVjdEFkZHJlc3NTZXQob2JqLCBQcm9wZ3JhcGhMYWJl bFJlbGF0aW9uSWQsIGxhYmVsb2lkKTsKKwkJCQlwZXJmb3JtRGVsZXRpb24oJm9iaiwgc3RtdC0+ ZHJvcF9iZWhhdmlvciwgMCk7CisJCQl9CisJCX0KKwl9CisKKwlmb3JlYWNoKGxjLCBzdG10LT5h ZGRfbGFiZWxzKQorCXsKKwkJUHJvcEdyYXBoTGFiZWxBbmRQcm9wZXJ0aWVzICpscCA9IGxmaXJz dF9ub2RlKFByb3BHcmFwaExhYmVsQW5kUHJvcGVydGllcywgbGMpOworCQlPaWQJCQlwZW9pZDsK KwkJT2lkCQkJcGdlcmVsaWQ7CisJCU9pZAkJCWVsbGFiZWxvaWQ7CisKKwkJQXNzZXJ0KGxwLT5s YWJlbCk7CisKKwkJaWYgKHN0bXQtPmVsZW1lbnRfa2luZCA9PSBQUk9QR1JBUEhfRUxFTUVOVF9L SU5EX1ZFUlRFWCkKKwkJCXBlb2lkID0gZ2V0X3ZlcnRleF9vaWQocHN0YXRlLCBwZ3JlbGlkLCBz dG10LT5lbGVtZW50X2FsaWFzLCAtMSk7CisJCWVsc2UKKwkJCXBlb2lkID0gZ2V0X2VkZ2Vfb2lk KHBzdGF0ZSwgcGdyZWxpZCwgc3RtdC0+ZWxlbWVudF9hbGlhcywgLTEpOworCisJCXBnZXJlbGlk ID0gZ2V0X2VsZW1lbnRfcmVsaWQocGVvaWQpOworCisJCWVsbGFiZWxvaWQgPSBpbnNlcnRfbGFi ZWxfcmVjb3JkKHBncmVsaWQsIHBlb2lkLCBscC0+bGFiZWwpOworCQlpbnNlcnRfcHJvcGVydHlf cmVjb3JkcyhwZ3JlbGlkLCBlbGxhYmVsb2lkLCBwZ2VyZWxpZCwgbHAtPnByb3BlcnRpZXMpOwor CisJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisJCWNoZWNrX2VsZW1lbnRfcHJvcGVydGll cyhwZW9pZCk7CisJCWNoZWNrX2VsZW1lbnRfbGFiZWxfcHJvcGVydGllcyhlbGxhYmVsb2lkKTsK Kwl9CisKKwlpZiAoc3RtdC0+ZHJvcF9sYWJlbCkKKwl7CisJCU9pZAkJCXBlb2lkOworCQlPaWQJ CQlsYWJlbG9pZDsKKwkJT2lkCQkJZWxsYWJlbG9pZDsKKwkJT2JqZWN0QWRkcmVzcyBvYmo7CisK KwkJaWYgKHN0bXQtPmVsZW1lbnRfa2luZCA9PSBQUk9QR1JBUEhfRUxFTUVOVF9LSU5EX1ZFUlRF WCkKKwkJCXBlb2lkID0gZ2V0X3ZlcnRleF9vaWQocHN0YXRlLCBwZ3JlbGlkLCBzdG10LT5lbGVt ZW50X2FsaWFzLCAtMSk7CisJCWVsc2UKKwkJCXBlb2lkID0gZ2V0X2VkZ2Vfb2lkKHBzdGF0ZSwg cGdyZWxpZCwgc3RtdC0+ZWxlbWVudF9hbGlhcywgLTEpOworCisJCWxhYmVsb2lkID0gR2V0U3lz Q2FjaGVPaWQyKFBST1BHUkFQSExBQkVMTkFNRSwKKwkJCQkJCQkJICAgQW51bV9wZ19wcm9wZ3Jh cGhfbGFiZWxfb2lkLAorCQkJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHBncmVsaWQpLAorCQkJ CQkJCQkgICBDU3RyaW5nR2V0RGF0dW0oc3RtdC0+ZHJvcF9sYWJlbCkpOworCQlpZiAoIWxhYmVs b2lkKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9P QkpFQ1QpLAorCQkJCQllcnJtc2coInByb3BlcnR5IGdyYXBoIFwiJXNcIiBlbGVtZW50IFwiJXNc IiBoYXMgbm8gbGFiZWwgXCIlc1wiIiwKKwkJCQkJCSAgIGdldF9yZWxfbmFtZShwZ3JlbGlkKSwg c3RtdC0+ZWxlbWVudF9hbGlhcywgc3RtdC0+ZHJvcF9sYWJlbCksCisJCQkJCXBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIC0xKSk7CisKKwkJZWxsYWJlbG9pZCA9IEdldFN5c0NhY2hlT2lkMihQ Uk9QR1JBUEhFTEVNRU5UTEFCRUxFTEVNRU5UTEFCRUwsCisJCQkJCQkJCQkgQW51bV9wZ19wcm9w Z3JhcGhfZWxlbWVudF9sYWJlbF9vaWQsCisJCQkJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShwZW9p ZCksCisJCQkJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShsYWJlbG9pZCkpOworCisJCWlmICghZWxs YWJlbG9pZCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9VTkRFRklO RURfT0JKRUNUKSwKKwkJCQkJZXJybXNnKCJwcm9wZXJ0eSBncmFwaCBcIiVzXCIgZWxlbWVudCBc IiVzXCIgaGFzIG5vIGxhYmVsIFwiJXNcIiIsCisJCQkJCQkgICBnZXRfcmVsX25hbWUocGdyZWxp ZCksIHN0bXQtPmVsZW1lbnRfYWxpYXMsIHN0bXQtPmRyb3BfbGFiZWwpLAorCQkJCQlwYXJzZXJf ZXJycG9zaXRpb24ocHN0YXRlLCAtMSkpOworCisJCU9iamVjdEFkZHJlc3NTZXQob2JqLCBQcm9w Z3JhcGhFbGVtZW50TGFiZWxSZWxhdGlvbklkLCBlbGxhYmVsb2lkKTsKKwkJcGVyZm9ybURlbGV0 aW9uKCZvYmosIHN0bXQtPmRyb3BfYmVoYXZpb3IsIDApOworCisJCS8qIFJlbW92ZSBhbnkgb3Jw aGFuZWQgcGdfcHJvcGdyYXBoX2xhYmVsIGVudHJpZXMgKi8KKwkJaWYgKCFnZXRfbGFiZWxfZWxl bWVudF9sYWJlbF9pZHMobGFiZWxvaWQpKQorCQl7CisJCQlPYmplY3RBZGRyZXNzU2V0KG9iaiwg UHJvcGdyYXBoTGFiZWxSZWxhdGlvbklkLCBsYWJlbG9pZCk7CisJCQlwZXJmb3JtRGVsZXRpb24o Jm9iaiwgc3RtdC0+ZHJvcF9iZWhhdmlvciwgMCk7CisJCX0KKwl9CisKKwlpZiAoc3RtdC0+YWRk X3Byb3BlcnRpZXMpCisJeworCQlPaWQJCQlwZW9pZDsKKwkJT2lkCQkJcGdlcmVsaWQ7CisJCU9p ZAkJCWxhYmVsb2lkOworCQlPaWQJCQllbGxhYmVsb2lkOworCisJCWlmIChzdG10LT5lbGVtZW50 X2tpbmQgPT0gUFJPUEdSQVBIX0VMRU1FTlRfS0lORF9WRVJURVgpCisJCQlwZW9pZCA9IGdldF92 ZXJ0ZXhfb2lkKHBzdGF0ZSwgcGdyZWxpZCwgc3RtdC0+ZWxlbWVudF9hbGlhcywgLTEpOworCQll bHNlCisJCQlwZW9pZCA9IGdldF9lZGdlX29pZChwc3RhdGUsIHBncmVsaWQsIHN0bXQtPmVsZW1l bnRfYWxpYXMsIC0xKTsKKworCQlsYWJlbG9pZCA9IEdldFN5c0NhY2hlT2lkMihQUk9QR1JBUEhM QUJFTE5BTUUsCisJCQkJCQkJCSAgIEFudW1fcGdfcHJvcGdyYXBoX2xhYmVsX29pZCwKKwkJCQkJ CQkJICAgT2JqZWN0SWRHZXREYXR1bShwZ3JlbGlkKSwKKwkJCQkJCQkJICAgQ1N0cmluZ0dldERh dHVtKHN0bXQtPmFsdGVyX2xhYmVsKSk7CisJCWlmICghbGFiZWxvaWQpCisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCWVycm1z ZygicHJvcGVydHkgZ3JhcGggXCIlc1wiIGVsZW1lbnQgXCIlc1wiIGhhcyBubyBsYWJlbCBcIiVz XCIiLAorCQkJCQkJICAgZ2V0X3JlbF9uYW1lKHBncmVsaWQpLCBzdG10LT5lbGVtZW50X2FsaWFz LCBzdG10LT5hbHRlcl9sYWJlbCksCisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIC0x KSk7CisKKwkJZWxsYWJlbG9pZCA9IEdldFN5c0NhY2hlT2lkMihQUk9QR1JBUEhFTEVNRU5UTEFC RUxFTEVNRU5UTEFCRUwsCisJCQkJCQkJCQkgQW51bV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9sYWJl bF9vaWQsCisJCQkJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShwZW9pZCksCisJCQkJCQkJCQkgT2Jq ZWN0SWRHZXREYXR1bShsYWJlbG9pZCkpOworCQlpZiAoIWVsbGFiZWxvaWQpCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCWVy cm1zZygicHJvcGVydHkgZ3JhcGggXCIlc1wiIGVsZW1lbnQgXCIlc1wiIGhhcyBubyBsYWJlbCBc IiVzXCIiLAorCQkJCQkJICAgZ2V0X3JlbF9uYW1lKHBncmVsaWQpLCBzdG10LT5lbGVtZW50X2Fs aWFzLCBzdG10LT5hbHRlcl9sYWJlbCksCisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUs IC0xKSk7CisKKwkJcGdlcmVsaWQgPSBnZXRfZWxlbWVudF9yZWxpZChwZW9pZCk7CisKKwkJaW5z ZXJ0X3Byb3BlcnR5X3JlY29yZHMocGdyZWxpZCwgZWxsYWJlbG9pZCwgcGdlcmVsaWQsIHN0bXQt PmFkZF9wcm9wZXJ0aWVzKTsKKworCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCQljaGVj a19lbGVtZW50X3Byb3BlcnRpZXMocGVvaWQpOworCQljaGVja19lbGVtZW50X2xhYmVsX3Byb3Bl cnRpZXMoZWxsYWJlbG9pZCk7CisJfQorCisJaWYgKHN0bXQtPmRyb3BfcHJvcGVydGllcykKKwl7 CisJCU9pZAkJCXBlb2lkOworCQlPaWQJCQlsYWJlbG9pZDsKKwkJT2lkCQkJZWxsYWJlbG9pZDsK KwkJT2JqZWN0QWRkcmVzcyBvYmo7CisKKwkJaWYgKHN0bXQtPmVsZW1lbnRfa2luZCA9PSBQUk9Q R1JBUEhfRUxFTUVOVF9LSU5EX1ZFUlRFWCkKKwkJCXBlb2lkID0gZ2V0X3ZlcnRleF9vaWQocHN0 YXRlLCBwZ3JlbGlkLCBzdG10LT5lbGVtZW50X2FsaWFzLCAtMSk7CisJCWVsc2UKKwkJCXBlb2lk ID0gZ2V0X2VkZ2Vfb2lkKHBzdGF0ZSwgcGdyZWxpZCwgc3RtdC0+ZWxlbWVudF9hbGlhcywgLTEp OworCisJCWxhYmVsb2lkID0gR2V0U3lzQ2FjaGVPaWQyKFBST1BHUkFQSExBQkVMTkFNRSwKKwkJ CQkJCQkJICAgQW51bV9wZ19wcm9wZ3JhcGhfbGFiZWxfb2lkLAorCQkJCQkJCQkgICBPYmplY3RJ ZEdldERhdHVtKHBncmVsaWQpLAorCQkJCQkJCQkgICBDU3RyaW5nR2V0RGF0dW0oc3RtdC0+YWx0 ZXJfbGFiZWwpKTsKKwkJaWYgKCFsYWJlbG9pZCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVy cmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkJZXJybXNnKCJwcm9wZXJ0eSBn cmFwaCBcIiVzXCIgZWxlbWVudCBcIiVzXCIgaGFzIG5vIGxhYmVsIFwiJXNcIiIsCisJCQkJCQkg ICBnZXRfcmVsX25hbWUocGdyZWxpZCksIHN0bXQtPmVsZW1lbnRfYWxpYXMsIHN0bXQtPmFsdGVy X2xhYmVsKSwKKwkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgLTEpKTsKKworCQllbGxh YmVsb2lkID0gR2V0U3lzQ2FjaGVPaWQyKFBST1BHUkFQSEVMRU1FTlRMQUJFTEVMRU1FTlRMQUJF TCwKKwkJCQkJCQkJCSBBbnVtX3BnX3Byb3BncmFwaF9lbGVtZW50X2xhYmVsX29pZCwKKwkJCQkJ CQkJCSBPYmplY3RJZEdldERhdHVtKHBlb2lkKSwKKwkJCQkJCQkJCSBPYmplY3RJZEdldERhdHVt KGxhYmVsb2lkKSk7CisKKwkJaWYgKCFlbGxhYmVsb2lkKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQllcnJtc2coInByb3Bl cnR5IGdyYXBoIFwiJXNcIiBlbGVtZW50IFwiJXNcIiBoYXMgbm8gbGFiZWwgXCIlc1wiIiwKKwkJ CQkJCSAgIGdldF9yZWxfbmFtZShwZ3JlbGlkKSwgc3RtdC0+ZWxlbWVudF9hbGlhcywgc3RtdC0+ YWx0ZXJfbGFiZWwpLAorCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCAtMSkpOworCisJ CWZvcmVhY2gobGMsIHN0bXQtPmRyb3BfcHJvcGVydGllcykKKwkJeworCQkJY2hhcgkgICAqcHJv cG5hbWUgPSBzdHJWYWwobGZpcnN0KGxjKSk7CisJCQlPaWQJCQlwcm9wb2lkOworCQkJT2lkCQkJ cGxwb2lkOworCisJCQlwcm9wb2lkID0gR2V0U3lzQ2FjaGVPaWQyKFBST1BHUkFQSFBST1BOQU1F LAorCQkJCQkJCQkJICBBbnVtX3BnX3Byb3BncmFwaF9wcm9wZXJ0eV9vaWQsCisJCQkJCQkJCQkg IE9iamVjdElkR2V0RGF0dW0ocGdyZWxpZCksCisJCQkJCQkJCQkgIENTdHJpbmdHZXREYXR1bShw cm9wbmFtZSkpOworCQkJaWYgKCFwcm9wb2lkKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQll cnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCQllcnJtc2coInByb3BlcnR5 IGdyYXBoIFwiJXNcIiBlbGVtZW50IFwiJXNcIiBsYWJlbCBcIiVzXCIgaGFzIG5vIHByb3BlcnR5 IFwiJXNcIiIsCisJCQkJCQkJICAgZ2V0X3JlbF9uYW1lKHBncmVsaWQpLCBzdG10LT5lbGVtZW50 X2FsaWFzLCBzdG10LT5hbHRlcl9sYWJlbCwgcHJvcG5hbWUpLAorCQkJCQkJcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgLTEpKTsKKworCQkJcGxwb2lkID0gR2V0U3lzQ2FjaGVPaWQyKFBST1BH UkFQSExBQkVMUFJPUCwgQW51bV9wZ19wcm9wZ3JhcGhfbGFiZWxfcHJvcGVydHlfb2lkLCBPYmpl Y3RJZEdldERhdHVtKGVsbGFiZWxvaWQpLCBPYmplY3RJZEdldERhdHVtKHByb3BvaWQpKTsKKwor CQkJT2JqZWN0QWRkcmVzc1NldChvYmosIFByb3BncmFwaExhYmVsUHJvcGVydHlSZWxhdGlvbklk LCBwbHBvaWQpOworCQkJcGVyZm9ybURlbGV0aW9uKCZvYmosIHN0bXQtPmRyb3BfYmVoYXZpb3Is IDApOworCQl9CisKKwkJY2hlY2tfZWxlbWVudF9sYWJlbF9wcm9wZXJ0aWVzKGVsbGFiZWxvaWQp OworCX0KKworCS8qIFJlbW92ZSBhbnkgb3JwaGFuZWQgcGdfcHJvcGdyYXBoX3Byb3BlcnR5IGVu dHJpZXMgKi8KKwlpZiAoc3RtdC0+ZHJvcF9wcm9wZXJ0aWVzIHx8IHN0bXQtPmRyb3BfdmVydGV4 X3RhYmxlcyB8fCBzdG10LT5kcm9wX2VkZ2VfdGFibGVzKQorCXsKKwkJZm9yZWFjaF9vaWQocHJv cG9pZCwgZ2V0X2dyYXBoX3Byb3BlcnR5X2lkcyhwZ3JlbGlkKSkKKwkJeworCQkJUmVsYXRpb24J cmVsOworCQkJU3lzU2NhbkRlc2Mgc2NhbjsKKwkJCVNjYW5LZXlEYXRhIGtleVsxXTsKKworCQkJ cmVsID0gdGFibGVfb3BlbihQcm9wZ3JhcGhMYWJlbFByb3BlcnR5UmVsYXRpb25JZCwgUm93U2hh cmVMb2NrKTsKKwkJCVNjYW5LZXlJbml0KCZrZXlbMF0sCisJCQkJCQlBbnVtX3BnX3Byb3BncmFw aF9sYWJlbF9wcm9wZXJ0eV9wbHBwcm9waWQsCisJCQkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIs IEZfT0lERVEsCisJCQkJCQlPYmplY3RJZEdldERhdHVtKHByb3BvaWQpKTsKKwkJCXNjYW4gPSBz eXN0YWJsZV9iZWdpbnNjYW4ocmVsLCBJbnZhbGlkT2lkIC8qIEZJWE1FICovICwKKwkJCQkJCQkJ CSAgdHJ1ZSwgTlVMTCwgMSwga2V5KTsKKwkJCWlmICghc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkK KwkJCXsKKwkJCQlPYmplY3RBZGRyZXNzIG9iajsKKworCQkJCU9iamVjdEFkZHJlc3NTZXQob2Jq LCBQcm9wZ3JhcGhQcm9wZXJ0eVJlbGF0aW9uSWQsIHByb3BvaWQpOworCQkJCXBlcmZvcm1EZWxl dGlvbigmb2JqLCBzdG10LT5kcm9wX2JlaGF2aW9yLCAwKTsKKwkJCX0KKworCQkJc3lzdGFibGVf ZW5kc2NhbihzY2FuKTsKKwkJCXRhYmxlX2Nsb3NlKHJlbCwgUm93U2hhcmVMb2NrKTsKKwkJfQor CX0KKworCXJldHVybiBwZ2FkZHJlc3M7Cit9CisKKy8qCisgKiBHZXQgT0lEIG9mIHZlcnRleCBm cm9tIGdyYXBoIE9JRCBhbmQgZWxlbWVudCBhbGlhcy4gIEVsZW1lbnQgbXVzdCBiZSBhCisgKiB2 ZXJ0ZXgsIG90aGVyd2lzZSBlcnJvci4KKyAqLworc3RhdGljIE9pZAorZ2V0X3ZlcnRleF9vaWQo UGFyc2VTdGF0ZSAqcHN0YXRlLCBPaWQgcGdyZWxpZCwgY29uc3QgY2hhciAqYWxpYXMsIGludCBs b2NhdGlvbikKK3sKKwlIZWFwVHVwbGUJdHVwbGU7CisJT2lkCQkJcGVvaWQ7CisKKwl0dXBsZSA9 IFNlYXJjaFN5c0NhY2hlMihQUk9QR1JBUEhFTEFMSUFTLCBPYmplY3RJZEdldERhdHVtKHBncmVs aWQpLCBDU3RyaW5nR2V0RGF0dW0oYWxpYXMpKTsKKwlpZiAoIXR1cGxlKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQllcnJtc2co InByb3BlcnR5IGdyYXBoIFwiJXNcIiBoYXMgbm8gZWxlbWVudCB3aXRoIGFsaWFzIFwiJXNcIiIs CisJCQkJCSAgIGdldF9yZWxfbmFtZShwZ3JlbGlkKSwgYWxpYXMpLAorCQkJCXBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSk7CisKKwlpZiAoKChGb3JtX3BnX3Byb3BncmFwaF9l bGVtZW50KSBHRVRTVFJVQ1QodHVwbGUpKS0+cGdla2luZCAhPSBQR0VLSU5EX1ZFUlRFWCkKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQll cnJtc2coImVsZW1lbnQgXCIlc1wiIG9mIHByb3BlcnR5IGdyYXBoIFwiJXNcIiBpcyBub3QgYSB2 ZXJ0ZXgiLAorCQkJCQkgICBhbGlhcywgZ2V0X3JlbF9uYW1lKHBncmVsaWQpKSwKKwkJCQlwYXJz ZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpOworCisJcGVvaWQgPSAoKEZvcm1fcGdf cHJvcGdyYXBoX2VsZW1lbnQpIEdFVFNUUlVDVCh0dXBsZSkpLT5vaWQ7CisKKwlSZWxlYXNlU3lz Q2FjaGUodHVwbGUpOworCisJcmV0dXJuIHBlb2lkOworfQorCisvKgorICogR2V0IE9JRCBvZiBl ZGdlIGZyb20gZ3JhcGggT0lEIGFuZCBlbGVtZW50IGFsaWFzLiAgRWxlbWVudCBtdXN0IGJlIGFu IGVkZ2UsCisgKiBvdGhlcndpc2UgZXJyb3IuCisgKi8KK3N0YXRpYyBPaWQKK2dldF9lZGdlX29p ZChQYXJzZVN0YXRlICpwc3RhdGUsIE9pZCBwZ3JlbGlkLCBjb25zdCBjaGFyICphbGlhcywgaW50 IGxvY2F0aW9uKQoreworCUhlYXBUdXBsZQl0dXBsZTsKKwlPaWQJCQlwZW9pZDsKKworCXR1cGxl ID0gU2VhcmNoU3lzQ2FjaGUyKFBST1BHUkFQSEVMQUxJQVMsIE9iamVjdElkR2V0RGF0dW0ocGdy ZWxpZCksIENTdHJpbmdHZXREYXR1bShhbGlhcykpOworCWlmICghdHVwbGUpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCWVycm1z ZygicHJvcGVydHkgZ3JhcGggXCIlc1wiIGhhcyBubyBlbGVtZW50IHdpdGggYWxpYXMgXCIlc1wi IiwKKwkJCQkJICAgZ2V0X3JlbF9uYW1lKHBncmVsaWQpLCBhbGlhcyksCisJCQkJcGFyc2VyX2Vy cnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKTsKKworCWlmICgoKEZvcm1fcGdfcHJvcGdyYXBo X2VsZW1lbnQpIEdFVFNUUlVDVCh0dXBsZSkpLT5wZ2VraW5kICE9IFBHRUtJTkRfRURHRSkKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQll cnJtc2coImVsZW1lbnQgXCIlc1wiIG9mIHByb3BlcnR5IGdyYXBoIFwiJXNcIiBpcyBub3QgYW4g ZWRnZSIsCisJCQkJCSAgIGFsaWFzLCBnZXRfcmVsX25hbWUocGdyZWxpZCkpLAorCQkJCXBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSk7CisKKwlwZW9pZCA9ICgoRm9ybV9wZ19w cm9wZ3JhcGhfZWxlbWVudCkgR0VUU1RSVUNUKHR1cGxlKSktPm9pZDsKKworCVJlbGVhc2VTeXND YWNoZSh0dXBsZSk7CisKKwlyZXR1cm4gcGVvaWQ7Cit9CisKKy8qCisgKiBHZXQgdGhlIGVsZW1l bnQgdGFibGUgcmVsYXRpb24gT0lEIGZyb20gdGhlIE9JRCBvZiB0aGUgZWxlbWVudC4KKyAqLwor c3RhdGljIE9pZAorZ2V0X2VsZW1lbnRfcmVsaWQoT2lkIHBlaWQpCit7CisJSGVhcFR1cGxlCXR1 cGxlOworCU9pZAkJCXBnZXJlbGlkOworCisJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoUFJPUEdS QVBIRUxPSUQsIE9iamVjdElkR2V0RGF0dW0ocGVpZCkpOworCWlmICghdHVwbGUpCisJCWVsb2co RVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBwcm9wZXJ0eSBncmFwaCBlbGVtZW50ICV1 IiwgcGVpZCk7CisKKwlwZ2VyZWxpZCA9ICgoRm9ybV9wZ19wcm9wZ3JhcGhfZWxlbWVudCkgR0VU U1RSVUNUKHR1cGxlKSktPnBnZXJlbGlkOworCisJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKKwor CXJldHVybiBwZ2VyZWxpZDsKK30KKworLyoKKyAqIEdldCBhIGxpc3Qgb2YgYWxsIGxhYmVsIE9J RHMgb2YgYSBncmFwaC4KKyAqLworc3RhdGljIExpc3QgKgorZ2V0X2dyYXBoX2xhYmVsX2lkcyhP aWQgZ3JhcGhpZCkKK3sKKwlSZWxhdGlvbglyZWw7CisJU3lzU2NhbkRlc2Mgc2NhbjsKKwlTY2Fu S2V5RGF0YSBrZXlbMV07CisJSGVhcFR1cGxlCXR1cGxlOworCUxpc3QJICAgKnJlc3VsdCA9IE5J TDsKKworCXJlbCA9IHRhYmxlX29wZW4oUHJvcGdyYXBoTGFiZWxSZWxhdGlvbklkLCBBY2Nlc3NT aGFyZUxvY2spOworCVNjYW5LZXlJbml0KCZrZXlbMF0sCisJCQkJQW51bV9wZ19wcm9wZ3JhcGhf bGFiZWxfcGdscGdpZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsCisJCQkJRl9PSURFUSwg T2JqZWN0SWRHZXREYXR1bShncmFwaGlkKSk7CisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2Nhbihy ZWwsIFByb3BncmFwaExhYmVsR3JhcGhOYW1lSW5kZXhJZCwgdHJ1ZSwgTlVMTCwgMSwga2V5KTsK Kwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9IHN5c3RhYmxlX2dldG5leHQoc2Nhbikp KQorCXsKKwkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCAoKEZvcm1fcGdfcHJvcGdyYXBo X2xhYmVsKSBHRVRTVFJVQ1QodHVwbGUpKS0+b2lkKTsKKwl9CisJc3lzdGFibGVfZW5kc2Nhbihz Y2FuKTsKKwl0YWJsZV9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlyZXR1cm4gcmVz dWx0OworfQorCisvKgorICogR2V0IGEgbGlzdCBvZiBhbGwgZWxlbWVudCBsYWJlbCBPSURzIGZv ciBhIGxhYmVsLgorICovCitzdGF0aWMgTGlzdCAqCitnZXRfbGFiZWxfZWxlbWVudF9sYWJlbF9p ZHMoT2lkIGxhYmVsaWQpCit7CisJUmVsYXRpb24JcmVsOworCVN5c1NjYW5EZXNjIHNjYW47CisJ U2NhbktleURhdGEga2V5WzFdOworCUhlYXBUdXBsZQl0dXBsZTsKKwlMaXN0CSAgICpyZXN1bHQg PSBOSUw7CisKKwlyZWwgPSB0YWJsZV9vcGVuKFByb3BncmFwaEVsZW1lbnRMYWJlbFJlbGF0aW9u SWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJU2NhbktleUluaXQoJmtleVswXSwKKwkJCQlBbnVtX3Bn X3Byb3BncmFwaF9lbGVtZW50X2xhYmVsX3BnZWxsYWJlbGlkLAorCQkJCUJURXF1YWxTdHJhdGVn eU51bWJlciwKKwkJCQlGX09JREVRLCBPYmplY3RJZEdldERhdHVtKGxhYmVsaWQpKTsKKwlzY2Fu ID0gc3lzdGFibGVfYmVnaW5zY2FuKHJlbCwgUHJvcGdyYXBoRWxlbWVudExhYmVsTGFiZWxJbmRl eElkLCB0cnVlLCBOVUxMLCAxLCBrZXkpOworCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxl ID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJeworCQlyZXN1bHQgPSBsYXBwZW5kX29pZChy ZXN1bHQsICgoRm9ybV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9sYWJlbCkgR0VUU1RSVUNUKHR1cGxl KSktPm9pZCk7CisJfQorCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJdGFibGVfY2xvc2UocmVs LCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIEdldCB0 aGUgbmFtZXMgb2YgcHJvcGVydGllcyBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGVsZW1lbnQg bGFiZWwgT0lELgorICoKKyAqIFRoZSByZXN1bHQgaXMgYSBsaXN0IG9mIFN0cmluZyBub2RlcyAo c28gd2UgY2FuIHVzZSBsaXN0IGZ1bmN0aW9ucyB0bworICogZGV0ZWN0IGRpZmZlcmVuY2VzKS4K KyAqLworc3RhdGljIExpc3QgKgorZ2V0X2VsZW1lbnRfbGFiZWxfcHJvcGVydHlfbmFtZXMoT2lk IGVsbGFiZWxvaWQpCit7CisJUmVsYXRpb24JcmVsOworCVN5c1NjYW5EZXNjIHNjYW47CisJU2Nh bktleURhdGEga2V5WzFdOworCUhlYXBUdXBsZQl0dXBsZTsKKwlMaXN0CSAgICpyZXN1bHQgPSBO SUw7CisKKwlyZWwgPSB0YWJsZV9vcGVuKFByb3BncmFwaExhYmVsUHJvcGVydHlSZWxhdGlvbklk LCBBY2Nlc3NTaGFyZUxvY2spOworCisJU2NhbktleUluaXQoJmtleVswXSwKKwkJCQlBbnVtX3Bn X3Byb3BncmFwaF9sYWJlbF9wcm9wZXJ0eV9wbHBlbGxhYmVsaWQsCisJCQkJQlRFcXVhbFN0cmF0 ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0oZWxsYWJlbG9pZCkpOwor CisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihyZWwsIFByb3BncmFwaExhYmVsUHJvcGVydHlM YWJlbFByb3BJbmRleElkLCB0cnVlLCBOVUxMLCAxLCBrZXkpOworCisJd2hpbGUgKCh0dXBsZSA9 IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJRm9ybV9wZ19wcm9wZ3JhcGhfbGFiZWxf cHJvcGVydHkgcGxwZm9ybSA9IChGb3JtX3BnX3Byb3BncmFwaF9sYWJlbF9wcm9wZXJ0eSkgR0VU U1RSVUNUKHR1cGxlKTsKKworCQlyZXN1bHQgPSBsYXBwZW5kKHJlc3VsdCwgbWFrZVN0cmluZyhn ZXRfcHJvcGdyYXBoX3Byb3BlcnR5X25hbWUocGxwZm9ybS0+cGxwcHJvcGlkKSkpOworCX0KKwor CXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJdGFibGVfY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxv Y2spOworCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIEdldCBhIGxpc3Qgb2YgYWxsIHBy b3BlcnR5IE9JRHMgb2YgYSBncmFwaC4KKyAqLworc3RhdGljIExpc3QgKgorZ2V0X2dyYXBoX3By b3BlcnR5X2lkcyhPaWQgZ3JhcGhpZCkKK3sKKwlSZWxhdGlvbglyZWw7CisJU3lzU2NhbkRlc2Mg c2NhbjsKKwlTY2FuS2V5RGF0YSBrZXlbMV07CisJSGVhcFR1cGxlCXR1cGxlOworCUxpc3QJICAg KnJlc3VsdCA9IE5JTDsKKworCXJlbCA9IHRhYmxlX29wZW4oUHJvcGdyYXBoUHJvcGVydHlSZWxh dGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCVNjYW5LZXlJbml0KCZrZXlbMF0sCisJCQkJQW51 bV9wZ19wcm9wZ3JhcGhfcHJvcGVydHlfcGdwcGdpZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1i ZXIsCisJCQkJRl9PSURFUSwgT2JqZWN0SWRHZXREYXR1bShncmFwaGlkKSk7CisJc2NhbiA9IHN5 c3RhYmxlX2JlZ2luc2NhbihyZWwsIFByb3BncmFwaFByb3BlcnR5TmFtZUluZGV4SWQsIHRydWUs IE5VTEwsIDEsIGtleSk7CisJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwbGUgPSBzeXN0YWJs ZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgKChG b3JtX3BnX3Byb3BncmFwaF9wcm9wZXJ0eSkgR0VUU1RSVUNUKHR1cGxlKSktPm9pZCk7CisJfQor CXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJdGFibGVfY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxv Y2spOworCisJcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3NlY2xhYmVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zZWNsYWJlbC5jCmluZGV4IDU2 MDcyNzNiZjkuLjE5MzNiZDFjYTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Nl Y2xhYmVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VjbGFiZWwuYwpAQCAtODAsNiAr ODAsNyBAQCBTZWNMYWJlbFN1cHBvcnRzT2JqZWN0VHlwZShPYmplY3RUeXBlIG9ianR5cGUpCiAJ CWNhc2UgT0JKRUNUX09QRkFNSUxZOgogCQljYXNlIE9CSkVDVF9QQVJBTUVURVJfQUNMOgogCQlj YXNlIE9CSkVDVF9QT0xJQ1k6CisJCWNhc2UgT0JKRUNUX1BST1BHUkFQSDoKIAkJY2FzZSBPQkpF Q1RfUFVCTElDQVRJT05fTkFNRVNQQUNFOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9SRUw6 CiAJCWNhc2UgT0JKRUNUX1JVTEU6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGRhYzM5 ZGY4M2EuLjE3OTE4ZWZiMGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0zMDQsNiAr MzA0LDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJvcG1zZ3N0cmluZ3MgZHJvcG1zZ3N0cmlu Z2FycmF5W10gPSB7CiAJCWdldHRleHRfbm9vcCgiaW5kZXggXCIlc1wiIGRvZXMgbm90IGV4aXN0 LCBza2lwcGluZyIpLAogCQlnZXR0ZXh0X25vb3AoIlwiJXNcIiBpcyBub3QgYW4gaW5kZXgiKSwK IAlnZXR0ZXh0X25vb3AoIlVzZSBEUk9QIElOREVYIHRvIHJlbW92ZSBhbiBpbmRleC4iKX0sCisJ e1JFTEtJTkRfUFJPUEdSQVBILAorCQlFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QsCisJCWdldHRl eHRfbm9vcCgicHJvcGVydHkgZ3JhcGggXCIlc1wiIGRvZXMgbm90IGV4aXN0IiksCisJCWdldHRl eHRfbm9vcCgicHJvcGVydHkgZ3JhcGggXCIlc1wiIGRvZXMgbm90IGV4aXN0LCBza2lwcGluZyIp LAorCQlnZXR0ZXh0X25vb3AoIlwiJXNcIiBpcyBub3QgYSBwcm9wZXJ0eSBncmFwaCIpLAorCWdl dHRleHRfbm9vcCgiVXNlIERST1AgUFJPUEVSVFkgR1JBUEggdG8gcmVtb3ZlIGEgcHJvcGVydHkg Z3JhcGguIil9LAogCXsnXDAnLCAwLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMfQogfTsKIApAQCAt MTQ5MCw2ICsxNDk2LDEwIEBAIFJlbW92ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkKIAkJCXJl bGtpbmQgPSBSRUxLSU5EX0ZPUkVJR05fVEFCTEU7CiAJCQlicmVhazsKIAorCQljYXNlIE9CSkVD VF9QUk9QR1JBUEg6CisJCQlyZWxraW5kID0gUkVMS0lORF9QUk9QR1JBUEg7CisJCQlicmVhazsK KwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBkcm9wIG9iamVjdCB0 eXBlOiAlZCIsCiAJCQkJIChpbnQpIGRyb3AtPnJlbW92ZVR5cGUpOwpAQCAtMTQzMTcsNiArMTQz MjcsNyBAQCBBVEV4ZWNDaGFuZ2VPd25lcihPaWQgcmVsYXRpb25PaWQsIE9pZCBuZXdPd25lcklk LCBib29sIHJlY3Vyc2luZywgTE9DS01PREUgbG9jawogCQljYXNlIFJFTEtJTkRfTUFUVklFVzoK IAkJY2FzZSBSRUxLSU5EX0ZPUkVJR05fVEFCTEU6CiAJCWNhc2UgUkVMS0lORF9QQVJUSVRJT05F RF9UQUJMRToKKwkJY2FzZSBSRUxLSU5EX1BST1BHUkFQSDoKIAkJCS8qIG9rIHRvIGNoYW5nZSBv d25lciAqLwogCQkJYnJlYWs7CiAJCWNhc2UgUkVMS0lORF9JTkRFWDoKQEAgLTE3NzM2LDYgKzE3 NzQ3LDExIEBAIFJhbmdlVmFyQ2FsbGJhY2tGb3JBbHRlclJlbGF0aW9uKGNvbnN0IFJhbmdlVmFy ICpydiwgT2lkIHJlbGlkLCBPaWQgb2xkcmVsaWQsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9O R19PQkpFQ1RfVFlQRSksCiAJCQkJIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhIGNvbXBvc2l0ZSB0 eXBlIiwgcnYtPnJlbG5hbWUpKSk7CiAKKwlpZiAocmVsdHlwZSA9PSBPQkpFQ1RfUFJPUEdSQVBI ICYmIHJlbGtpbmQgIT0gUkVMS0lORF9QUk9QR1JBUEgpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJIGVycm1zZygiXCIlc1wi IGlzIG5vdCBhIHByb3BlcnR5IGdyYXBoIiwgcnYtPnJlbG5hbWUpKSk7CisKIAlpZiAocmVsdHlw ZSA9PSBPQkpFQ1RfSU5ERVggJiYgcmVsa2luZCAhPSBSRUxLSU5EX0lOREVYICYmCiAJCXJlbGtp bmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9JTkRFWAogCQkmJiAhSXNBKHN0bXQsIFJlbmFtZVN0 bXQpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggMjllMTg2ZmE3My4uMWNiY2ExNTZhMiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC01OTUsNyArNTk1LDcgQEAgRXhlY0NoZWNrUGVy bWlzc2lvbnMoTGlzdCAqcmFuZ2VUYWJsZSwgTGlzdCAqcnRlcGVybWluZm9zLAogCQkJICovCiAJ CQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTiB8fAogCQkJCSAgIChydGUtPnJ0 ZWtpbmQgPT0gUlRFX1NVQlFVRVJZICYmCi0JCQkJCXJ0ZS0+cmVsa2luZCA9PSBSRUxLSU5EX1ZJ RVcpKTsKKwkJCQkJKHJ0ZS0+cmVsa2luZCA9PSBSRUxLSU5EX1ZJRVcgfHwgcnRlLT5yZWxraW5k ID09IFJFTEtJTkRfUFJPUEdSQVBIKSkpOwogCiAJCQkodm9pZCkgZ2V0UlRFUGVybWlzc2lvbklu Zm8ocnRlcGVybWluZm9zLCBydGUpOwogCQkJLyogTWFueS10by1vbmUgbWFwcGluZyBub3QgYWxs b3dlZCAqLwpAQCAtMTExMCw2ICsxMTEwLDEyIEBAIENoZWNrVmFsaWRSZXN1bHRSZWwoUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywgQ21kVHlwZSBvcGVyYXRpb24sCiAJCQkJCWJyZWFrOwog CQkJfQogCQkJYnJlYWs7CisJCWNhc2UgUkVMS0lORF9QUk9QR1JBUEg6CisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkJIGVy cm1zZygiY2Fubm90IGNoYW5nZSBwcm9wZXJ0eSBncmFwaCBcIiVzXCIiLAorCQkJCQkJCVJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHJlc3VsdFJlbCkpKSk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoK IAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZ UEUpLApAQCAtMTE3NCw2ICsxMTgwLDEzIEBAIENoZWNrVmFsaWRSb3dNYXJrUmVsKFJlbGF0aW9u IHJlbCwgUm93TWFya1R5cGUgbWFya1R5cGUpCiAJCQkJCQkgZXJybXNnKCJjYW5ub3QgbG9jayBy b3dzIGluIGZvcmVpZ24gdGFibGUgXCIlc1wiIiwKIAkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUocmVsKSkpKTsKIAkJCWJyZWFrOworCQljYXNlIFJFTEtJTkRfUFJPUEdSQVBIOgorCQkJ LyogU2hvdWxkIG5vdCBnZXQgaGVyZTsgcmV3cml0ZXIgc2hvdWxkIGhhdmUgZXhwYW5kZWQgdGhl IGdyYXBoICovCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05H X09CSkVDVF9UWVBFKSwKKwkJCQkJIGVycm1zZygiY2Fubm90IGxvY2sgcm93cyBpbiBwcm9wZXJ0 eSBncmFwaCBcIiVzXCIiLAorCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7 CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2Rl KEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9k ZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwppbmRleCBkMmUy YWY0ZjgxLi4xYjRhZDMyZTY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVu Y3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAtMjgxLDYgKzI4MSw5 IEBAIGV4cHJUeXBlKGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2UgVF9QbGFjZUhvbGRlclZhcjoK IAkJCXR5cGUgPSBleHByVHlwZSgoTm9kZSAqKSAoKGNvbnN0IFBsYWNlSG9sZGVyVmFyICopIGV4 cHIpLT5waGV4cHIpOwogCQkJYnJlYWs7CisJCWNhc2UgVF9HcmFwaFByb3BlcnR5UmVmOgorCQkJ dHlwZSA9ICgoY29uc3QgR3JhcGhQcm9wZXJ0eVJlZiAqKSBleHByKS0+dHlwZUlkOworCQkJYnJl YWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZTog JWQiLCAoaW50KSBub2RlVGFnKGV4cHIpKTsKIAkJCXR5cGUgPSBJbnZhbGlkT2lkOwkvKiBrZWVw IGNvbXBpbGVyIHF1aWV0ICovCkBAIC01MzEsNiArNTM0LDkgQEAgZXhwclR5cG1vZChjb25zdCBO b2RlICpleHByKQogCQkJcmV0dXJuICgoY29uc3QgU2V0VG9EZWZhdWx0ICopIGV4cHIpLT50eXBl TW9kOwogCQljYXNlIFRfUGxhY2VIb2xkZXJWYXI6CiAJCQlyZXR1cm4gZXhwclR5cG1vZCgoTm9k ZSAqKSAoKGNvbnN0IFBsYWNlSG9sZGVyVmFyICopIGV4cHIpLT5waGV4cHIpOworCQljYXNlIFRf R3JhcGhQcm9wZXJ0eVJlZjoKKwkJCS8qIFRPRE8gKi8KKwkJCXJldHVybiAtMTsKIAkJZGVmYXVs dDoKIAkJCWJyZWFrOwogCX0KQEAgLTEwNTAsNiArMTA1Niw5IEBAIGV4cHJDb2xsYXRpb24oY29u c3QgTm9kZSAqZXhwcikKIAkJY2FzZSBUX1BsYWNlSG9sZGVyVmFyOgogCQkJY29sbCA9IGV4cHJD b2xsYXRpb24oKE5vZGUgKikgKChjb25zdCBQbGFjZUhvbGRlclZhciAqKSBleHByKS0+cGhleHBy KTsKIAkJCWJyZWFrOworCQljYXNlIFRfR3JhcGhQcm9wZXJ0eVJlZjoKKwkJCWNvbGwgPSBERUZB VUxUX0NPTExBVElPTl9PSUQ7CS8qIEZJWE1FICovCisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJ CWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgbm9kZSB0eXBlOiAlZCIsIChpbnQpIG5vZGVUYWco ZXhwcikpOwogCQkJY29sbCA9IEludmFsaWRPaWQ7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8K QEAgLTIxMTgsNiArMjEyNyw3IEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbChOb2RlICpu b2RlLAogCQljYXNlIFRfUmFuZ2VUYmxSZWY6CiAJCWNhc2UgVF9Tb3J0R3JvdXBDbGF1c2U6CiAJ CWNhc2UgVF9DVEVTZWFyY2hDbGF1c2U6CisJCWNhc2UgVF9HcmFwaFByb3BlcnR5UmVmOgogCQlj YXNlIFRfTWVyZ2VTdXBwb3J0RnVuYzoKIAkJCS8qIHByaW1pdGl2ZSBub2RlIHR5cGVzIHdpdGgg bm8gZXhwcmVzc2lvbiBzdWJub2RlcyAqLwogCQkJYnJlYWs7CkBAIC0yNjU2LDYgKzI2NjYsMjYg QEAgZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJCXJldHVybiB0 cnVlOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9HcmFwaEVsZW1lbnRQYXR0ZXJuOgorCQkJ eworCQkJCUdyYXBoRWxlbWVudFBhdHRlcm4gKmdlcCA9IChHcmFwaEVsZW1lbnRQYXR0ZXJuICop IG5vZGU7CisKKwkJCQlpZiAoV0FMSyhnZXAtPnN1YmV4cHIpKQorCQkJCQlyZXR1cm4gdHJ1ZTsK KwkJCQlpZiAoV0FMSyhnZXAtPndoZXJlQ2xhdXNlKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9 CisJCQlicmVhazsKKwkJY2FzZSBUX0dyYXBoUGF0dGVybjoKKwkJCXsKKwkJCQlHcmFwaFBhdHRl cm4gKmdwID0gKEdyYXBoUGF0dGVybiAqKSBub2RlOworCisJCQkJaWYgKExJU1RfV0FMSyhncC0+ cGF0aF9wYXR0ZXJuX2xpc3QpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhncC0+ d2hlcmVDbGF1c2UpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOwogCQlkZWZh dWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBub2RlIHR5cGU6ICVkIiwKIAkJCQkg KGludCkgbm9kZVRhZyhub2RlKSk7CkBAIC0yODQ5LDYgKzI4NzksMTIgQEAgcmFuZ2VfdGFibGVf ZW50cnlfd2Fsa2VyX2ltcGwoUmFuZ2VUYmxFbnRyeSAqcnRlLAogCQkJaWYgKFdBTEsocnRlLT52 YWx1ZXNfbGlzdHMpKQogCQkJCXJldHVybiB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgUlRFX0dS QVBIX1RBQkxFOgorCQkJaWYgKFdBTEsocnRlLT5ncmFwaF9wYXR0ZXJuKSkKKwkJCQlyZXR1cm4g dHJ1ZTsKKwkJCWlmIChXQUxLKHJ0ZS0+Z3JhcGhfdGFibGVfY29sdW1ucykpCisJCQkJcmV0dXJu IHRydWU7CisJCQlicmVhazsKIAkJY2FzZSBSVEVfQ1RFOgogCQljYXNlIFJURV9OQU1FRFRVUExF U1RPUkU6CiAJCWNhc2UgUlRFX1JFU1VMVDoKQEAgLTM4ODYsNiArMzkyMiwxMCBAQCByYW5nZV90 YWJsZV9tdXRhdG9yX2ltcGwoTGlzdCAqcnRhYmxlLAogCQkJY2FzZSBSVEVfVkFMVUVTOgogCQkJ CU1VVEFURShuZXdydGUtPnZhbHVlc19saXN0cywgcnRlLT52YWx1ZXNfbGlzdHMsIExpc3QgKik7 CiAJCQkJYnJlYWs7CisJCQljYXNlIFJURV9HUkFQSF9UQUJMRToKKwkJCQlNVVRBVEUobmV3cnRl LT5ncmFwaF9wYXR0ZXJuLCBydGUtPmdyYXBoX3BhdHRlcm4sIEdyYXBoUGF0dGVybiAqKTsKKwkJ CQlNVVRBVEUobmV3cnRlLT5ncmFwaF90YWJsZV9jb2x1bW5zLCBydGUtPmdyYXBoX3RhYmxlX2Nv bHVtbnMsIExpc3QgKik7CisJCQkJYnJlYWs7CiAJCQljYXNlIFJURV9DVEU6CiAJCQljYXNlIFJU RV9OQU1FRFRVUExFU1RPUkU6CiAJCQljYXNlIFJURV9SRVNVTFQ6CkBAIC00NTAwLDYgKzQ1NDAs MTggQEAgcmF3X2V4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbChOb2RlICpub2RlLAogCQkJCQly ZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRfUmFuZ2VHcmFwaFRhYmxlOgor CQkJeworCQkJCVJhbmdlR3JhcGhUYWJsZSAqcmd0ID0gKFJhbmdlR3JhcGhUYWJsZSAqKSBub2Rl OworCisJCQkJaWYgKFdBTEsocmd0LT5ncmFwaF9wYXR0ZXJuKSkKKwkJCQkJcmV0dXJuIHRydWU7 CisJCQkJaWYgKFdBTEsocmd0LT5jb2x1bW5zKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYg KFdBTEsocmd0LT5hbGlhcykpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7CiAJ CWNhc2UgVF9UeXBlTmFtZToKIAkJCXsKIAkJCQlUeXBlTmFtZSAgICp0biA9IChUeXBlTmFtZSAq KSBub2RlOwpAQCAtNDY1OCw2ICs0NzEwLDI2IEBAIHJhd19leHByZXNzaW9uX3RyZWVfd2Fsa2Vy X2ltcGwoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJCQlicmVhazsKKwkJ Y2FzZSBUX0dyYXBoRWxlbWVudFBhdHRlcm46CisJCQl7CisJCQkJR3JhcGhFbGVtZW50UGF0dGVy biAqZ2VwID0gKEdyYXBoRWxlbWVudFBhdHRlcm4gKikgbm9kZTsKKworCQkJCWlmIChXQUxLKGdl cC0+c3ViZXhwcikpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKGdlcC0+d2hlcmVD bGF1c2UpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFRfR3Jh cGhQYXR0ZXJuOgorCQkJeworCQkJCUdyYXBoUGF0dGVybiAqZ3AgPSAoR3JhcGhQYXR0ZXJuICop IG5vZGU7CisKKwkJCQlpZiAoV0FMSyhncC0+cGF0aF9wYXR0ZXJuX2xpc3QpKQorCQkJCQlyZXR1 cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhncC0+d2hlcmVDbGF1c2UpKQorCQkJCQlyZXR1cm4gdHJ1 ZTsKKwkJCX0KKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2du aXplZCBub2RlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgbm9kZVRhZyhub2RlKSk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0 ZnVuY3MuYwppbmRleCAzMzM3Yjc3YWU2Li5iZmNlNDUyZGVkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMK QEAgLTU1OSw2ICs1NTksMTEgQEAgX291dFJhbmdlVGJsRW50cnkoU3RyaW5nSW5mbyBzdHIsIGNv bnN0IFJhbmdlVGJsRW50cnkgKm5vZGUpCiAJCQkvKiB3ZSByZS11c2UgdGhlc2UgUkVMQVRJT04g ZmllbGRzLCB0b286ICovCiAJCQlXUklURV9PSURfRklFTEQocmVsaWQpOwogCQkJYnJlYWs7CisJ CWNhc2UgUlRFX0dSQVBIX1RBQkxFOgorCQkJV1JJVEVfT0lEX0ZJRUxEKHJlbGlkKTsKKwkJCVdS SVRFX05PREVfRklFTEQoZ3JhcGhfcGF0dGVybik7CisJCQlXUklURV9OT0RFX0ZJRUxEKGdyYXBo X3RhYmxlX2NvbHVtbnMpOworCQkJYnJlYWs7CiAJCWNhc2UgUlRFX1JFU1VMVDoKIAkJCS8qIG5v IGV4dHJhIGZpZWxkcyAqLwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rl cy9yZWFkZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCmluZGV4IGI0Nzk1 MDc2NGEuLjQyZmU0ZjRmNGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5j cy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCkBAIC00MTksNiArNDE5LDEx IEBAIF9yZWFkUmFuZ2VUYmxFbnRyeSh2b2lkKQogCQkJLyogd2UgcmUtdXNlIHRoZXNlIFJFTEFU SU9OIGZpZWxkcywgdG9vOiAqLwogCQkJUkVBRF9PSURfRklFTEQocmVsaWQpOwogCQkJYnJlYWs7 CisJCWNhc2UgUlRFX0dSQVBIX1RBQkxFOgorCQkJUkVBRF9PSURfRklFTEQocmVsaWQpOworCQkJ UkVBRF9OT0RFX0ZJRUxEKGdyYXBoX3BhdHRlcm4pOworCQkJUkVBRF9OT0RFX0ZJRUxEKGdyYXBo X3RhYmxlX2NvbHVtbnMpOworCQkJYnJlYWs7CiAJCWNhc2UgUlRFX1JFU1VMVDoKIAkJCS8qIG5v IGV4dHJhIGZpZWxkcyAqLwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGF0aC9hbGxwYXRocy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0 aHMuYwppbmRleCAwNTdiNGI3OWViLi5kMzYzODc3Yzk3IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w YXRoL2FsbHBhdGhzLmMKQEAgLTcyOCw2ICs3MjgsMTAgQEAgc2V0X3JlbF9jb25zaWRlcl9wYXJh bGxlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJICovCiAJCQlyZXR1 cm47CiAKKwkJY2FzZSBSVEVfR1JBUEhfVEFCTEU6CisJCQkvKiBzaG91bGRuJ3QgaGFwcGVuIGhl cmUgKi8KKwkJCWJyZWFrOworCiAJCWNhc2UgUlRFX1JFU1VMVDoKIAkJCS8qIFJFU1VMVCBSVEVz LCBpbiB0aGVtc2VsdmVzLCBhcmUgbm8gcHJvYmxlbS4gKi8KIAkJCWJyZWFrOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGpvaW50cmVlLmMgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRyZWUuYwppbmRleCA5NjllMjU3ZjcwLi5iODE2NjBi NTMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRyZWUu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRyZWUuYwpAQCAtMTIz Nyw2ICsxMjM3LDEwIEBAIHB1bGxfdXBfc2ltcGxlX3N1YnF1ZXJ5KFBsYW5uZXJJbmZvICpyb290 LCBOb2RlICpqdG5vZGUsIFJhbmdlVGJsRW50cnkgKnJ0ZSwKIAkJCQljYXNlIFJURV9SRVNVTFQ6 CiAJCQkJCS8qIHRoZXNlIGNhbid0IGNvbnRhaW4gYW55IGxhdGVyYWwgcmVmZXJlbmNlcyAqLwog CQkJCQlicmVhazsKKwkJCQljYXNlIFJURV9HUkFQSF9UQUJMRToKKwkJCQkJLyogc2hvdWxkbid0 IGhhcHBlbiBoZXJlICovCisJCQkJCUFzc2VydChmYWxzZSk7CisJCQkJCWJyZWFrOwogCQkJfQog CQl9CiAJfQpAQCAtMjI5Niw2ICsyMzAwLDEwIEBAIHJlcGxhY2VfdmFyc19pbl9qb2ludHJlZShO b2RlICpqdG5vZGUsCiAJCQkJCQkvKiB0aGVzZSBzaG91bGRuJ3QgYmUgbWFya2VkIExBVEVSQUwg Ki8KIAkJCQkJCUFzc2VydChmYWxzZSk7CiAJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBSVEVfR1JB UEhfVEFCTEU6CisJCQkJCQkvKiBzaG91bGRuJ3QgaGFwcGVuIGhlcmUgKi8KKwkJCQkJCUFzc2Vy dChmYWxzZSk7CisJCQkJCQlicmVhazsKIAkJCQl9CiAJCQl9CiAJCX0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3BhcnNlci9NYWtlZmlsZQpp bmRleCAzMTYyYTAxZjMwLi4wZmEyMzdhNGE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJz ZXIvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL01ha2VmaWxlCkBAIC0yMyw2ICsy Myw3IEBAIE9CSlMgPSBcCiAJcGFyc2VfZW5yLm8gXAogCXBhcnNlX2V4cHIubyBcCiAJcGFyc2Vf ZnVuYy5vIFwKKwlwYXJzZV9ncmFwaHRhYmxlLm8gXAogCXBhcnNlX2pzb250YWJsZS5vIFwKIAlw YXJzZV9tZXJnZS5vIFwKIAlwYXJzZV9ub2RlLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cGFyc2VyL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKaW5kZXggZTkw MTIwMzQyNC4uMGYyMjI5NTA0YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5 emUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCkBAIC0yMDY0LDcgKzIwNjQs NiBAQCB0cmFuc2Zvcm1TZXRPcGVyYXRpb25UcmVlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2VsZWN0 U3RtdCAqc3RtdCwKIAkJY2hhcgkJc2VsZWN0TmFtZVszMl07CiAJCVBhcnNlTmFtZXNwYWNlSXRl bSAqbnNpdGVtOwogCQlSYW5nZVRibFJlZiAqcnRyOwotCQlMaXN0Q2VsbCAgICp0bDsKIAogCQkv KgogCQkgKiBUcmFuc2Zvcm0gU2VsZWN0U3RtdCBpbnRvIGEgUXVlcnkuCkBAIC0yMTA0LDYgKzIx MDMsOCBAQCB0cmFuc2Zvcm1TZXRPcGVyYXRpb25UcmVlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2Vs ZWN0U3RtdCAqc3RtdCwKIAkJICovCiAJCWlmICh0YXJnZXRsaXN0KQogCQl7CisJCQlMaXN0Q2Vs bCAgICp0bDsKKwogCQkJKnRhcmdldGxpc3QgPSBOSUw7CiAJCQlmb3JlYWNoKHRsLCBzZWxlY3RR dWVyeS0+dGFyZ2V0TGlzdCkKIAkJCXsKQEAgLTIxMzgsOCArMjEzOSw2IEBAIHRyYW5zZm9ybVNl dE9wZXJhdGlvblRyZWUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpzdG10LAogCQlT ZXRPcGVyYXRpb25TdG10ICpvcCA9IG1ha2VOb2RlKFNldE9wZXJhdGlvblN0bXQpOwogCQlMaXN0 CSAgICpsdGFyZ2V0bGlzdDsKIAkJTGlzdAkgICAqcnRhcmdldGxpc3Q7Ci0JCUxpc3RDZWxsICAg Kmx0bDsKLQkJTGlzdENlbGwgICAqcnRsOwogCQljb25zdCBjaGFyICpjb250ZXh0OwogCQlib29s CQlyZWN1cnNpdmUgPSAocHN0YXRlLT5wX3BhcmVudF9jdGUgJiYKIAkJCQkJCQkJIHBzdGF0ZS0+ cF9wYXJlbnRfY3RlLT5jdGVyZWN1cnNpdmUpOwpAQCAtMjE3NCwxNjEgKzIxNzMsMTcwIEBAIHRy YW5zZm9ybVNldE9wZXJhdGlvblRyZWUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpz dG10LAogCQkJCQkJCQkJCQkgZmFsc2UsCiAJCQkJCQkJCQkJCSAmcnRhcmdldGxpc3QpOwogCi0J CS8qCi0JCSAqIFZlcmlmeSB0aGF0IHRoZSB0d28gY2hpbGRyZW4gaGF2ZSB0aGUgc2FtZSBudW1i ZXIgb2Ygbm9uLWp1bmsKLQkJICogY29sdW1ucywgYW5kIGRldGVybWluZSB0aGUgdHlwZXMgb2Yg dGhlIG1lcmdlZCBvdXRwdXQgY29sdW1ucy4KLQkJICovCi0JCWlmIChsaXN0X2xlbmd0aChsdGFy Z2V0bGlzdCkgIT0gbGlzdF9sZW5ndGgocnRhcmdldGxpc3QpKQotCQkJZXJlcG9ydChFUlJPUiwK LQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJCQkgZXJybXNnKCJlYWNo ICVzIHF1ZXJ5IG11c3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgY29sdW1ucyIsCi0JCQkJCQkJ Y29udGV4dCksCi0JCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLAotCQkJCQkJCQkJCWV4 cHJMb2NhdGlvbigoTm9kZSAqKSBydGFyZ2V0bGlzdCkpKSk7CisJCWNvbnN0cnVjdFNldE9wVGFy Z2V0bGlzdChvcCwgbHRhcmdldGxpc3QsIHJ0YXJnZXRsaXN0LCB0YXJnZXRsaXN0LAorCQkJCQkJ CQkgY29udGV4dCwgcHN0YXRlLCByZWN1cnNpdmUpOwogCi0JCWlmICh0YXJnZXRsaXN0KQotCQkJ KnRhcmdldGxpc3QgPSBOSUw7Ci0JCW9wLT5jb2xUeXBlcyA9IE5JTDsKLQkJb3AtPmNvbFR5cG1v ZHMgPSBOSUw7Ci0JCW9wLT5jb2xDb2xsYXRpb25zID0gTklMOwotCQlvcC0+Z3JvdXBDbGF1c2Vz ID0gTklMOwotCQlmb3Jib3RoKGx0bCwgbHRhcmdldGxpc3QsIHJ0bCwgcnRhcmdldGxpc3QpCi0J CXsKLQkJCVRhcmdldEVudHJ5ICpsdGxlID0gKFRhcmdldEVudHJ5ICopIGxmaXJzdChsdGwpOwot CQkJVGFyZ2V0RW50cnkgKnJ0bGUgPSAoVGFyZ2V0RW50cnkgKikgbGZpcnN0KHJ0bCk7Ci0JCQlO b2RlCSAgICpsY29sbm9kZSA9IChOb2RlICopIGx0bGUtPmV4cHI7Ci0JCQlOb2RlCSAgICpyY29s bm9kZSA9IChOb2RlICopIHJ0bGUtPmV4cHI7Ci0JCQlPaWQJCQlsY29sdHlwZSA9IGV4cHJUeXBl KGxjb2xub2RlKTsKLQkJCU9pZAkJCXJjb2x0eXBlID0gZXhwclR5cGUocmNvbG5vZGUpOwotCQkJ Tm9kZQkgICAqYmVzdGV4cHI7Ci0JCQlpbnQJCQliZXN0bG9jYXRpb247Ci0JCQlPaWQJCQlyZXNj b2x0eXBlOwotCQkJaW50MzIJCXJlc2NvbHR5cG1vZDsKLQkJCU9pZAkJCXJlc2NvbGNvbGw7Ci0K LQkJCS8qIHNlbGVjdCBjb21tb24gdHlwZSwgc2FtZSBhcyBDQVNFIGV0IGFsICovCi0JCQlyZXNj b2x0eXBlID0gc2VsZWN0X2NvbW1vbl90eXBlKHBzdGF0ZSwKLQkJCQkJCQkJCQkJbGlzdF9tYWtl MihsY29sbm9kZSwgcmNvbG5vZGUpLAotCQkJCQkJCQkJCQljb250ZXh0LAotCQkJCQkJCQkJCQkm YmVzdGV4cHIpOwotCQkJYmVzdGxvY2F0aW9uID0gZXhwckxvY2F0aW9uKGJlc3RleHByKTsKKwkJ cmV0dXJuIChOb2RlICopIG9wOworCX0KK30KIAotCQkJLyoKLQkJCSAqIFZlcmlmeSB0aGUgY29l cmNpb25zIGFyZSBhY3R1YWxseSBwb3NzaWJsZS4gIElmIG5vdCwgd2UnZCBmYWlsCi0JCQkgKiBs YXRlciBhbnl3YXksIGJ1dCB3ZSB3YW50IHRvIGZhaWwgbm93IHdoaWxlIHdlIGhhdmUgc3VmZmlj aWVudAotCQkJICogY29udGV4dCB0byBwcm9kdWNlIGFuIGVycm9yIGN1cnNvciBwb3NpdGlvbi4K LQkJCSAqCi0JCQkgKiBGb3IgYWxsIG5vbi1VTktOT1dOLXR5cGUgY2FzZXMsIHdlIHZlcmlmeSBj b2VyY2liaWxpdHkgYnV0IHdlCi0JCQkgKiBkb24ndCBtb2RpZnkgdGhlIGNoaWxkJ3MgZXhwcmVz c2lvbiwgZm9yIGZlYXIgb2YgY2hhbmdpbmcgdGhlCi0JCQkgKiBjaGlsZCBxdWVyeSdzIHNlbWFu dGljcy4KLQkJCSAqCi0JCQkgKiBJZiBhIGNoaWxkIGV4cHJlc3Npb24gaXMgYW4gVU5LTk9XTi10 eXBlIENvbnN0IG9yIFBhcmFtLCB3ZQotCQkJICogd2FudCB0byByZXBsYWNlIGl0IHdpdGggdGhl IGNvZXJjZWQgZXhwcmVzc2lvbi4gIFRoaXMgY2FuIG9ubHkKLQkJCSAqIGhhcHBlbiB3aGVuIHRo ZSBjaGlsZCBpcyBhIGxlYWYgc2V0LW9wIG5vZGUuICBJdCdzIHNhZmUgdG8KLQkJCSAqIHJlcGxh Y2UgdGhlIGV4cHJlc3Npb24gYmVjYXVzZSBpZiB0aGUgY2hpbGQgcXVlcnkncyBzZW1hbnRpY3MK LQkJCSAqIGRlcGVuZGVkIG9uIHRoZSB0eXBlIG9mIHRoaXMgb3V0cHV0IGNvbHVtbiwgaXQnZCBo YXZlIGFscmVhZHkKLQkJCSAqIGNvZXJjZWQgdGhlIFVOS05PV04gdG8gc29tZXRoaW5nIGVsc2Uu ICBXZSB3YW50IHRvIGRvIHRoaXMKLQkJCSAqIGJlY2F1c2UgKGEpIHdlIHdhbnQgdG8gdmVyaWZ5 IHRoYXQgYSBDb25zdCBpcyB2YWxpZCBmb3IgdGhlCi0JCQkgKiB0YXJnZXQgdHlwZSwgb3IgcmVz b2x2ZSB0aGUgYWN0dWFsIHR5cGUgb2YgYW4gVU5LTk9XTiBQYXJhbSwKLQkJCSAqIGFuZCAoYikg d2Ugd2FudCB0byBhdm9pZCB1bm5lY2Vzc2FyeSBkaXNjcmVwYW5jaWVzIGJldHdlZW4gdGhlCi0J CQkgKiBvdXRwdXQgdHlwZSBvZiB0aGUgY2hpbGQgcXVlcnkgYW5kIHRoZSByZXNvbHZlZCB0YXJn ZXQgdHlwZS4KLQkJCSAqIFN1Y2ggYSBkaXNjcmVwYW5jeSB3b3VsZCBkaXNhYmxlIG9wdGltaXph dGlvbiBpbiB0aGUgcGxhbm5lci4KLQkJCSAqCi0JCQkgKiBJZiBpdCdzIHNvbWUgb3RoZXIgVU5L Tk9XTi10eXBlIG5vZGUsIGVnIGEgVmFyLCB3ZSBkbyBub3RoaW5nCi0JCQkgKiAoa25vd2luZyB0 aGF0IGNvZXJjZV90b19jb21tb25fdHlwZSB3b3VsZCBmYWlsKS4gIFRoZSBwbGFubmVyCi0JCQkg KiBpcyBzb21ldGltZXMgYWJsZSB0byBmb2xkIGFuIFVOS05PV04gVmFyIHRvIGEgY29uc3RhbnQg YmVmb3JlCi0JCQkgKiBpdCBoYXMgdG8gY29lcmNlIHRoZSB0eXBlLCBzbyBmYWlsaW5nIG5vdyB3 b3VsZCBqdXN0IGJyZWFrCi0JCQkgKiBjYXNlcyB0aGF0IG1pZ2h0IHdvcmsuCi0JCQkgKi8KLQkJ CWlmIChsY29sdHlwZSAhPSBVTktOT1dOT0lEKQotCQkJCWxjb2xub2RlID0gY29lcmNlX3RvX2Nv bW1vbl90eXBlKHBzdGF0ZSwgbGNvbG5vZGUsCi0JCQkJCQkJCQkJCQkgcmVzY29sdHlwZSwgY29u dGV4dCk7Ci0JCQllbHNlIGlmIChJc0EobGNvbG5vZGUsIENvbnN0KSB8fAotCQkJCQkgSXNBKGxj b2xub2RlLCBQYXJhbSkpCi0JCQl7Ci0JCQkJbGNvbG5vZGUgPSBjb2VyY2VfdG9fY29tbW9uX3R5 cGUocHN0YXRlLCBsY29sbm9kZSwKLQkJCQkJCQkJCQkJCSByZXNjb2x0eXBlLCBjb250ZXh0KTsK LQkJCQlsdGxlLT5leHByID0gKEV4cHIgKikgbGNvbG5vZGU7Ci0JCQl9Cit2b2lkCitjb25zdHJ1 Y3RTZXRPcFRhcmdldGxpc3QoU2V0T3BlcmF0aW9uU3RtdCAqb3AsIExpc3QgKmx0YXJnZXRsaXN0 LCBMaXN0ICpydGFyZ2V0bGlzdCwKKwkJCQkJCSBMaXN0ICoqdGFyZ2V0bGlzdCwgY29uc3QgY2hh ciAqY29udGV4dCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJCQkJIGJvb2wgcmVjdXJzaXZlKQor eworCUxpc3RDZWxsICAgKmx0bDsKKwlMaXN0Q2VsbCAgICpydGw7CiAKLQkJCWlmIChyY29sdHlw ZSAhPSBVTktOT1dOT0lEKQotCQkJCXJjb2xub2RlID0gY29lcmNlX3RvX2NvbW1vbl90eXBlKHBz dGF0ZSwgcmNvbG5vZGUsCi0JCQkJCQkJCQkJCQkgcmVzY29sdHlwZSwgY29udGV4dCk7Ci0JCQll bHNlIGlmIChJc0EocmNvbG5vZGUsIENvbnN0KSB8fAotCQkJCQkgSXNBKHJjb2xub2RlLCBQYXJh bSkpCi0JCQl7Ci0JCQkJcmNvbG5vZGUgPSBjb2VyY2VfdG9fY29tbW9uX3R5cGUocHN0YXRlLCBy Y29sbm9kZSwKLQkJCQkJCQkJCQkJCSByZXNjb2x0eXBlLCBjb250ZXh0KTsKLQkJCQlydGxlLT5l eHByID0gKEV4cHIgKikgcmNvbG5vZGU7Ci0JCQl9CisJLyoKKwkgKiBWZXJpZnkgdGhhdCB0aGUg dHdvIGNoaWxkcmVuIGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIG5vbi1qdW5rIGNvbHVtbnMsCisJ ICogYW5kIGRldGVybWluZSB0aGUgdHlwZXMgb2YgdGhlIG1lcmdlZCBvdXRwdXQgY29sdW1ucy4K KwkgKi8KKwlpZiAobGlzdF9sZW5ndGgobHRhcmdldGxpc3QpICE9IGxpc3RfbGVuZ3RoKHJ0YXJn ZXRsaXN0KSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9F UlJPUiksCisJCQkJIGVycm1zZygiZWFjaCAlcyBxdWVyeSBtdXN0IGhhdmUgdGhlIHNhbWUgbnVt YmVyIG9mIGNvbHVtbnMiLAorCQkJCQkJY29udGV4dCksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlv bihwc3RhdGUsCisJCQkJCQkJCQlleHByTG9jYXRpb24oKE5vZGUgKikgcnRhcmdldGxpc3QpKSkp OwogCi0JCQlyZXNjb2x0eXBtb2QgPSBzZWxlY3RfY29tbW9uX3R5cG1vZChwc3RhdGUsCi0JCQkJ CQkJCQkJCQlsaXN0X21ha2UyKGxjb2xub2RlLCByY29sbm9kZSksCi0JCQkJCQkJCQkJCQlyZXNj b2x0eXBlKTsKKwlpZiAodGFyZ2V0bGlzdCkKKwkJKnRhcmdldGxpc3QgPSBOSUw7CisJb3AtPmNv bFR5cGVzID0gTklMOworCW9wLT5jb2xUeXBtb2RzID0gTklMOworCW9wLT5jb2xDb2xsYXRpb25z ID0gTklMOworCW9wLT5ncm91cENsYXVzZXMgPSBOSUw7CiAKLQkJCS8qCi0JCQkgKiBTZWxlY3Qg Y29tbW9uIGNvbGxhdGlvbi4gIEEgY29tbW9uIGNvbGxhdGlvbiBpcyByZXF1aXJlZCBmb3IKLQkJ CSAqIGFsbCBzZXQgb3BlcmF0b3JzIGV4Y2VwdCBVTklPTiBBTEw7IHNlZSBTUUw6MjAwOCA3LjEz IDxxdWVyeQotCQkJICogZXhwcmVzc2lvbj4gU3ludGF4IFJ1bGUgMTVjLiAgKElmIHdlIGZhaWwg dG8gaWRlbnRpZnkgYSBjb21tb24KLQkJCSAqIGNvbGxhdGlvbiBmb3IgYSBVTklPTiBBTEwgY29s dW1uLCB0aGUgY29sQ29sbGF0aW9ucyBlbGVtZW50Ci0JCQkgKiB3aWxsIGJlIHNldCB0byBJbnZh bGlkT2lkLCB3aGljaCBtYXkgcmVzdWx0IGluIGEgcnVudGltZSBlcnJvcgotCQkJICogaWYgc29t ZXRoaW5nIGF0IGEgaGlnaGVyIHF1ZXJ5IGxldmVsIHdhbnRzIHRvIHVzZSB0aGUgY29sdW1uJ3MK LQkJCSAqIGNvbGxhdGlvbi4pCi0JCQkgKi8KLQkJCXJlc2NvbGNvbGwgPSBzZWxlY3RfY29tbW9u X2NvbGxhdGlvbihwc3RhdGUsCi0JCQkJCQkJCQkJCQkgbGlzdF9tYWtlMihsY29sbm9kZSwgcmNv bG5vZGUpLAotCQkJCQkJCQkJCQkJIChvcC0+b3AgPT0gU0VUT1BfVU5JT04gJiYgb3AtPmFsbCkp OworCWZvcmJvdGgobHRsLCBsdGFyZ2V0bGlzdCwgcnRsLCBydGFyZ2V0bGlzdCkKKwl7CisJCVRh cmdldEVudHJ5ICpsdGxlID0gKFRhcmdldEVudHJ5ICopIGxmaXJzdChsdGwpOworCQlUYXJnZXRF bnRyeSAqcnRsZSA9IChUYXJnZXRFbnRyeSAqKSBsZmlyc3QocnRsKTsKKwkJTm9kZQkgICAqbGNv bG5vZGUgPSAoTm9kZSAqKSBsdGxlLT5leHByOworCQlOb2RlCSAgICpyY29sbm9kZSA9IChOb2Rl ICopIHJ0bGUtPmV4cHI7CisJCU9pZAkJCWxjb2x0eXBlID0gZXhwclR5cGUobGNvbG5vZGUpOwor CQlPaWQJCQlyY29sdHlwZSA9IGV4cHJUeXBlKHJjb2xub2RlKTsKKwkJTm9kZQkgICAqYmVzdGV4 cHI7CisJCWludAkJCWJlc3Rsb2NhdGlvbjsKKwkJT2lkCQkJcmVzY29sdHlwZTsKKwkJaW50MzIJ CXJlc2NvbHR5cG1vZDsKKwkJT2lkCQkJcmVzY29sY29sbDsKKworCQkvKiBzZWxlY3QgY29tbW9u IHR5cGUsIHNhbWUgYXMgQ0FTRSBldCBhbCAqLworCQlyZXNjb2x0eXBlID0gc2VsZWN0X2NvbW1v bl90eXBlKHBzdGF0ZSwKKwkJCQkJCQkJCQlsaXN0X21ha2UyKGxjb2xub2RlLCByY29sbm9kZSks CisJCQkJCQkJCQkJY29udGV4dCwKKwkJCQkJCQkJCQkmYmVzdGV4cHIpOworCQliZXN0bG9jYXRp b24gPSBleHByTG9jYXRpb24oYmVzdGV4cHIpOwogCi0JCQkvKiBlbWl0IHJlc3VsdHMgKi8KLQkJ CW9wLT5jb2xUeXBlcyA9IGxhcHBlbmRfb2lkKG9wLT5jb2xUeXBlcywgcmVzY29sdHlwZSk7Ci0J CQlvcC0+Y29sVHlwbW9kcyA9IGxhcHBlbmRfaW50KG9wLT5jb2xUeXBtb2RzLCByZXNjb2x0eXBt b2QpOwotCQkJb3AtPmNvbENvbGxhdGlvbnMgPSBsYXBwZW5kX29pZChvcC0+Y29sQ29sbGF0aW9u cywgcmVzY29sY29sbCk7CisJCS8qCisJCSAqIFZlcmlmeSB0aGUgY29lcmNpb25zIGFyZSBhY3R1 YWxseSBwb3NzaWJsZS4gIElmIG5vdCwgd2UnZCBmYWlsCisJCSAqIGxhdGVyIGFueXdheSwgYnV0 IHdlIHdhbnQgdG8gZmFpbCBub3cgd2hpbGUgd2UgaGF2ZSBzdWZmaWNpZW50CisJCSAqIGNvbnRl eHQgdG8gcHJvZHVjZSBhbiBlcnJvciBjdXJzb3IgcG9zaXRpb24uCisJCSAqCisJCSAqIEZvciBh bGwgbm9uLVVOS05PV04tdHlwZSBjYXNlcywgd2UgdmVyaWZ5IGNvZXJjaWJpbGl0eSBidXQgd2Ug ZG9uJ3QKKwkJICogbW9kaWZ5IHRoZSBjaGlsZCdzIGV4cHJlc3Npb24sIGZvciBmZWFyIG9mIGNo YW5naW5nIHRoZSBjaGlsZAorCQkgKiBxdWVyeSdzIHNlbWFudGljcy4KKwkJICoKKwkJICogSWYg YSBjaGlsZCBleHByZXNzaW9uIGlzIGFuIFVOS05PV04tdHlwZSBDb25zdCBvciBQYXJhbSwgd2Ug d2FudCB0bworCQkgKiByZXBsYWNlIGl0IHdpdGggdGhlIGNvZXJjZWQgZXhwcmVzc2lvbi4gIFRo aXMgY2FuIG9ubHkgaGFwcGVuIHdoZW4KKwkJICogdGhlIGNoaWxkIGlzIGEgbGVhZiBzZXQtb3Ag bm9kZS4gIEl0J3Mgc2FmZSB0byByZXBsYWNlIHRoZQorCQkgKiBleHByZXNzaW9uIGJlY2F1c2Ug aWYgdGhlIGNoaWxkIHF1ZXJ5J3Mgc2VtYW50aWNzIGRlcGVuZGVkIG9uIHRoZQorCQkgKiB0eXBl IG9mIHRoaXMgb3V0cHV0IGNvbHVtbiwgaXQnZCBoYXZlIGFscmVhZHkgY29lcmNlZCB0aGUgVU5L Tk9XTgorCQkgKiB0byBzb21ldGhpbmcgZWxzZS4gIFdlIHdhbnQgdG8gZG8gdGhpcyBiZWNhdXNl IChhKSB3ZSB3YW50IHRvCisJCSAqIHZlcmlmeSB0aGF0IGEgQ29uc3QgaXMgdmFsaWQgZm9yIHRo ZSB0YXJnZXQgdHlwZSwgb3IgcmVzb2x2ZSB0aGUKKwkJICogYWN0dWFsIHR5cGUgb2YgYW4gVU5L Tk9XTiBQYXJhbSwgYW5kIChiKSB3ZSB3YW50IHRvIGF2b2lkCisJCSAqIHVubmVjZXNzYXJ5IGRp c2NyZXBhbmNpZXMgYmV0d2VlbiB0aGUgb3V0cHV0IHR5cGUgb2YgdGhlIGNoaWxkCisJCSAqIHF1 ZXJ5IGFuZCB0aGUgcmVzb2x2ZWQgdGFyZ2V0IHR5cGUuIFN1Y2ggYSBkaXNjcmVwYW5jeSB3b3Vs ZAorCQkgKiBkaXNhYmxlIG9wdGltaXphdGlvbiBpbiB0aGUgcGxhbm5lci4KKwkJICoKKwkJICog SWYgaXQncyBzb21lIG90aGVyIFVOS05PV04tdHlwZSBub2RlLCBlZyBhIFZhciwgd2UgZG8gbm90 aGluZworCQkgKiAoa25vd2luZyB0aGF0IGNvZXJjZV90b19jb21tb25fdHlwZSB3b3VsZCBmYWls KS4gIFRoZSBwbGFubmVyIGlzCisJCSAqIHNvbWV0aW1lcyBhYmxlIHRvIGZvbGQgYW4gVU5LTk9X TiBWYXIgdG8gYSBjb25zdGFudCBiZWZvcmUgaXQgaGFzCisJCSAqIHRvIGNvZXJjZSB0aGUgdHlw ZSwgc28gZmFpbGluZyBub3cgd291bGQganVzdCBicmVhayBjYXNlcyB0aGF0CisJCSAqIG1pZ2h0 IHdvcmsuCisJCSAqLworCQlpZiAobGNvbHR5cGUgIT0gVU5LTk9XTk9JRCkKKwkJCWxjb2xub2Rl ID0gY29lcmNlX3RvX2NvbW1vbl90eXBlKHBzdGF0ZSwgbGNvbG5vZGUsCisJCQkJCQkJCQkJCSBy ZXNjb2x0eXBlLCBjb250ZXh0KTsKKwkJZWxzZSBpZiAoSXNBKGxjb2xub2RlLCBDb25zdCkgfHwK KwkJCQkgSXNBKGxjb2xub2RlLCBQYXJhbSkpCisJCXsKKwkJCWxjb2xub2RlID0gY29lcmNlX3Rv X2NvbW1vbl90eXBlKHBzdGF0ZSwgbGNvbG5vZGUsCisJCQkJCQkJCQkJCSByZXNjb2x0eXBlLCBj b250ZXh0KTsKKwkJCWx0bGUtPmV4cHIgPSAoRXhwciAqKSBsY29sbm9kZTsKKwkJfQogCi0JCQkv KgotCQkJICogRm9yIGFsbCBjYXNlcyBleGNlcHQgVU5JT04gQUxMLCBpZGVudGlmeSB0aGUgZ3Jv dXBpbmcgb3BlcmF0b3JzCi0JCQkgKiAoYW5kLCBpZiBhdmFpbGFibGUsIHNvcnRpbmcgb3BlcmF0 b3JzKSB0aGF0IHdpbGwgYmUgdXNlZCB0bwotCQkJICogZWxpbWluYXRlIGR1cGxpY2F0ZXMuCi0J CQkgKi8KLQkJCWlmIChvcC0+b3AgIT0gU0VUT1BfVU5JT04gfHwgIW9wLT5hbGwpCi0JCQl7Ci0J CQkJUGFyc2VDYWxsYmFja1N0YXRlIHBjYnN0YXRlOworCQlpZiAocmNvbHR5cGUgIT0gVU5LTk9X Tk9JRCkKKwkJCXJjb2xub2RlID0gY29lcmNlX3RvX2NvbW1vbl90eXBlKHBzdGF0ZSwgcmNvbG5v ZGUsCisJCQkJCQkJCQkJCSByZXNjb2x0eXBlLCBjb250ZXh0KTsKKwkJZWxzZSBpZiAoSXNBKHJj b2xub2RlLCBDb25zdCkgfHwKKwkJCQkgSXNBKHJjb2xub2RlLCBQYXJhbSkpCisJCXsKKwkJCXJj b2xub2RlID0gY29lcmNlX3RvX2NvbW1vbl90eXBlKHBzdGF0ZSwgcmNvbG5vZGUsCisJCQkJCQkJ CQkJCSByZXNjb2x0eXBlLCBjb250ZXh0KTsKKwkJCXJ0bGUtPmV4cHIgPSAoRXhwciAqKSByY29s bm9kZTsKKwkJfQogCi0JCQkJc2V0dXBfcGFyc2VyX2VycnBvc2l0aW9uX2NhbGxiYWNrKCZwY2Jz dGF0ZSwgcHN0YXRlLAotCQkJCQkJCQkJCQkJICBiZXN0bG9jYXRpb24pOworCQlyZXNjb2x0eXBt b2QgPSBzZWxlY3RfY29tbW9uX3R5cG1vZChwc3RhdGUsCisJCQkJCQkJCQkJCWxpc3RfbWFrZTIo bGNvbG5vZGUsIHJjb2xub2RlKSwKKwkJCQkJCQkJCQkJcmVzY29sdHlwZSk7CiAKLQkJCQkvKgot CQkJCSAqIElmIGl0J3MgYSByZWN1cnNpdmUgdW5pb24sIHdlIG5lZWQgdG8gcmVxdWlyZSBoYXNo aW5nCi0JCQkJICogc3VwcG9ydC4KLQkJCQkgKi8KLQkJCQlvcC0+Z3JvdXBDbGF1c2VzID0gbGFw cGVuZChvcC0+Z3JvdXBDbGF1c2VzLAotCQkJCQkJCQkJCSAgIG1ha2VTb3J0R3JvdXBDbGF1c2VG b3JTZXRPcChyZXNjb2x0eXBlLCByZWN1cnNpdmUpKTsKKwkJLyoKKwkJICogU2VsZWN0IGNvbW1v biBjb2xsYXRpb24uICBBIGNvbW1vbiBjb2xsYXRpb24gaXMgcmVxdWlyZWQgZm9yIGFsbAorCQkg KiBzZXQgb3BlcmF0b3JzIGV4Y2VwdCBVTklPTiBBTEw7IHNlZSBTUUw6MjAwOCA3LjEzIDxxdWVy eQorCQkgKiBleHByZXNzaW9uPiBTeW50YXggUnVsZSAxNWMuICAoSWYgd2UgZmFpbCB0byBpZGVu dGlmeSBhIGNvbW1vbgorCQkgKiBjb2xsYXRpb24gZm9yIGEgVU5JT04gQUxMIGNvbHVtbiwgdGhl IGNvbENvbGxhdGlvbnMgZWxlbWVudCB3aWxsIGJlCisJCSAqIHNldCB0byBJbnZhbGlkT2lkLCB3 aGljaCBtYXkgcmVzdWx0IGluIGEgcnVudGltZSBlcnJvciBpZiBzb21ldGhpbmcKKwkJICogYXQg YSBoaWdoZXIgcXVlcnkgbGV2ZWwgd2FudHMgdG8gdXNlIHRoZSBjb2x1bW4ncyBjb2xsYXRpb24u KQorCQkgKi8KKwkJcmVzY29sY29sbCA9IHNlbGVjdF9jb21tb25fY29sbGF0aW9uKHBzdGF0ZSwK KwkJCQkJCQkJCQkJIGxpc3RfbWFrZTIobGNvbG5vZGUsIHJjb2xub2RlKSwKKwkJCQkJCQkJCQkJ IChvcC0+b3AgPT0gU0VUT1BfVU5JT04gJiYgb3AtPmFsbCkpOwogCi0JCQkJY2FuY2VsX3BhcnNl cl9lcnJwb3NpdGlvbl9jYWxsYmFjaygmcGNic3RhdGUpOwotCQkJfQorCQkvKiBlbWl0IHJlc3Vs dHMgKi8KKwkJb3AtPmNvbFR5cGVzID0gbGFwcGVuZF9vaWQob3AtPmNvbFR5cGVzLCByZXNjb2x0 eXBlKTsKKwkJb3AtPmNvbFR5cG1vZHMgPSBsYXBwZW5kX2ludChvcC0+Y29sVHlwbW9kcywgcmVz Y29sdHlwbW9kKTsKKwkJb3AtPmNvbENvbGxhdGlvbnMgPSBsYXBwZW5kX29pZChvcC0+Y29sQ29s bGF0aW9ucywgcmVzY29sY29sbCk7CiAKLQkJCS8qCi0JCQkgKiBDb25zdHJ1Y3QgYSBkdW1teSB0 bGlzdCBlbnRyeSB0byByZXR1cm4uICBXZSB1c2UgYSBTZXRUb0RlZmF1bHQKLQkJCSAqIG5vZGUg Zm9yIHRoZSBleHByZXNzaW9uLCBzaW5jZSBpdCBjYXJyaWVzIGV4YWN0bHkgdGhlIGZpZWxkcwot CQkJICogbmVlZGVkLCBidXQgYW55IG90aGVyIGV4cHJlc3Npb24gbm9kZSB0eXBlIHdvdWxkIGRv IGFzIHdlbGwuCi0JCQkgKi8KLQkJCWlmICh0YXJnZXRsaXN0KQotCQkJewotCQkJCVNldFRvRGVm YXVsdCAqcmVzY29sbm9kZSA9IG1ha2VOb2RlKFNldFRvRGVmYXVsdCk7Ci0JCQkJVGFyZ2V0RW50 cnkgKnJlc3RsZTsKLQotCQkJCXJlc2NvbG5vZGUtPnR5cGVJZCA9IHJlc2NvbHR5cGU7Ci0JCQkJ cmVzY29sbm9kZS0+dHlwZU1vZCA9IHJlc2NvbHR5cG1vZDsKLQkJCQlyZXNjb2xub2RlLT5jb2xs YXRpb24gPSByZXNjb2xjb2xsOwotCQkJCXJlc2NvbG5vZGUtPmxvY2F0aW9uID0gYmVzdGxvY2F0 aW9uOwotCQkJCXJlc3RsZSA9IG1ha2VUYXJnZXRFbnRyeSgoRXhwciAqKSByZXNjb2xub2RlLAot CQkJCQkJCQkJCSAwLCAvKiBubyBuZWVkIHRvIHNldCByZXNubyAqLwotCQkJCQkJCQkJCSBOVUxM LAotCQkJCQkJCQkJCSBmYWxzZSk7Ci0JCQkJKnRhcmdldGxpc3QgPSBsYXBwZW5kKCp0YXJnZXRs aXN0LCByZXN0bGUpOwotCQkJfQorCQkvKgorCQkgKiBGb3IgYWxsIGNhc2VzIGV4Y2VwdCBVTklP TiBBTEwsIGlkZW50aWZ5IHRoZSBncm91cGluZyBvcGVyYXRvcnMKKwkJICogKGFuZCwgaWYgYXZh aWxhYmxlLCBzb3J0aW5nIG9wZXJhdG9ycykgdGhhdCB3aWxsIGJlIHVzZWQgdG8KKwkJICogZWxp bWluYXRlIGR1cGxpY2F0ZXMuCisJCSAqLworCQlpZiAob3AtPm9wICE9IFNFVE9QX1VOSU9OIHx8 ICFvcC0+YWxsKQorCQl7CisJCQlQYXJzZUNhbGxiYWNrU3RhdGUgcGNic3RhdGU7CisKKwkJCXNl dHVwX3BhcnNlcl9lcnJwb3NpdGlvbl9jYWxsYmFjaygmcGNic3RhdGUsIHBzdGF0ZSwKKwkJCQkJ CQkJCQkJICBiZXN0bG9jYXRpb24pOworCisJCQkvKiBJZiBpdCdzIGEgcmVjdXJzaXZlIHVuaW9u LCB3ZSBuZWVkIHRvIHJlcXVpcmUgaGFzaGluZyBzdXBwb3J0LiAqLworCQkJb3AtPmdyb3VwQ2xh dXNlcyA9IGxhcHBlbmQob3AtPmdyb3VwQ2xhdXNlcywKKwkJCQkJCQkJCSAgIG1ha2VTb3J0R3Jv dXBDbGF1c2VGb3JTZXRPcChyZXNjb2x0eXBlLCByZWN1cnNpdmUpKTsKKworCQkJY2FuY2VsX3Bh cnNlcl9lcnJwb3NpdGlvbl9jYWxsYmFjaygmcGNic3RhdGUpOwogCQl9CiAKLQkJcmV0dXJuIChO b2RlICopIG9wOworCQkvKgorCQkgKiBDb25zdHJ1Y3QgYSBkdW1teSB0bGlzdCBlbnRyeSB0byBy ZXR1cm4uICBXZSB1c2UgYSBTZXRUb0RlZmF1bHQKKwkJICogbm9kZSBmb3IgdGhlIGV4cHJlc3Np b24sIHNpbmNlIGl0IGNhcnJpZXMgZXhhY3RseSB0aGUgZmllbGRzCisJCSAqIG5lZWRlZCwgYnV0 IGFueSBvdGhlciBleHByZXNzaW9uIG5vZGUgdHlwZSB3b3VsZCBkbyBhcyB3ZWxsLgorCQkgKi8K KwkJaWYgKHRhcmdldGxpc3QpCisJCXsKKwkJCVNldFRvRGVmYXVsdCAqcmVzY29sbm9kZSA9IG1h a2VOb2RlKFNldFRvRGVmYXVsdCk7CisJCQlUYXJnZXRFbnRyeSAqcmVzdGxlOworCisJCQlyZXNj b2xub2RlLT50eXBlSWQgPSByZXNjb2x0eXBlOworCQkJcmVzY29sbm9kZS0+dHlwZU1vZCA9IHJl c2NvbHR5cG1vZDsKKwkJCXJlc2NvbG5vZGUtPmNvbGxhdGlvbiA9IHJlc2NvbGNvbGw7CisJCQly ZXNjb2xub2RlLT5sb2NhdGlvbiA9IGJlc3Rsb2NhdGlvbjsKKwkJCXJlc3RsZSA9IG1ha2VUYXJn ZXRFbnRyeSgoRXhwciAqKSByZXNjb2xub2RlLAorCQkJCQkJCQkJIDAsIC8qIG5vIG5lZWQgdG8g c2V0IHJlc25vICovCisJCQkJCQkJCQkgTlVMTCwKKwkJCQkJCQkJCSBmYWxzZSk7CisJCQkqdGFy Z2V0bGlzdCA9IGxhcHBlbmQoKnRhcmdldGxpc3QsIHJlc3RsZSk7CisJCX0KIAl9CiB9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55CmluZGV4IDg0Y2VmNTdhNzAuLmFjZTkxNDc4ZDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMjk3 LDYgKzI5Nyw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpy ZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCUNyZWF0ZVNjaGVtYVN0bXQg Q3JlYXRlU2VxU3RtdCBDcmVhdGVTdG10IENyZWF0ZVN0YXRzU3RtdCBDcmVhdGVUYWJsZVNwYWNl U3RtdAogCQlDcmVhdGVGZHdTdG10IENyZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10IENyZWF0ZUZvcmVp Z25UYWJsZVN0bXQKIAkJQ3JlYXRlQXNzZXJ0aW9uU3RtdCBDcmVhdGVUcmFuc2Zvcm1TdG10IENy ZWF0ZVRyaWdTdG10IENyZWF0ZUV2ZW50VHJpZ1N0bXQKKwkJQ3JlYXRlUHJvcEdyYXBoU3RtdCBB bHRlclByb3BHcmFwaFN0bXQKIAkJQ3JlYXRlVXNlclN0bXQgQ3JlYXRlVXNlck1hcHBpbmdTdG10 IENyZWF0ZVJvbGVTdG10IENyZWF0ZVBvbGljeVN0bXQKIAkJQ3JlYXRlZGJTdG10IERlY2xhcmVD dXJzb3JTdG10IERlZmluZVN0bXQgRGVsZXRlU3RtdCBEaXNjYXJkU3RtdCBEb1N0bXQKIAkJRHJv cE9wQ2xhc3NTdG10IERyb3BPcEZhbWlseVN0bXQgRHJvcFN0bXQKQEAgLTY3Niw2ICs2NzcsMzYg QEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExp c3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJCQlqc29uX29iamVjdF9jb25zdHJ1Y3Rvcl9u dWxsX2NsYXVzZV9vcHQKIAkJCQlqc29uX2FycmF5X2NvbnN0cnVjdG9yX251bGxfY2xhdXNlX29w dAogCisldHlwZSA8bGlzdD4JdmVydGV4X3RhYmxlc19jbGF1c2UgZWRnZV90YWJsZXNfY2xhdXNl CisJCQkJb3B0X3ZlcnRleF90YWJsZXNfY2xhdXNlIG9wdF9lZGdlX3RhYmxlc19jbGF1c2UKKwkJ CQl2ZXJ0ZXhfdGFibGVfbGlzdAorCQkJCW9wdF9ncmFwaF90YWJsZV9rZXlfY2xhdXNlCisJCQkJ ZWRnZV90YWJsZV9saXN0CisJCQkJc291cmNlX3ZlcnRleF90YWJsZSBkZXN0aW5hdGlvbl92ZXJ0 ZXhfdGFibGUKKwkJCQlvcHRfZWxlbWVudF90YWJsZV9sYWJlbF9hbmRfcHJvcGVydGllcworCQkJ CWxhYmVsX2FuZF9wcm9wZXJ0aWVzX2xpc3QKKwkJCQlhZGRfbGFiZWxfbGlzdAorJXR5cGUgPG5v ZGU+CXZlcnRleF90YWJsZV9kZWZpbml0aW9uIGVkZ2VfdGFibGVfZGVmaW5pdGlvbgorJXR5cGUg PGFsaWFzPglvcHRfcHJvcGdyYXBoX3RhYmxlX2FsaWFzCisldHlwZSA8c3RyPgkJZWxlbWVudF90 YWJsZV9sYWJlbF9jbGF1c2UKKyV0eXBlIDxub2RlPglsYWJlbF9hbmRfcHJvcGVydGllcyBlbGVt ZW50X3RhYmxlX3Byb3BlcnRpZXMKKwkJCQlhZGRfbGFiZWwKKyV0eXBlIDxpdmFsPgl2ZXJ0ZXhf b3JfZWRnZQorCisldHlwZSA8bGlzdD4Jb3B0X2dyYXBoX3BhdHRlcm5fcXVhbnRpZmllcgorCQkJ CXBhdGhfcGF0dGVybl9saXN0CisJCQkJcGF0aF9wYXR0ZXJuCisJCQkJcGF0aF9wYXR0ZXJuX2V4 cHJlc3Npb24KKwkJCQlwYXRoX3Rlcm0KKyV0eXBlIDxub2RlPglncmFwaF9wYXR0ZXJuCisJCQkJ cGF0aF9mYWN0b3IKKwkJCQlwYXRoX3ByaW1hcnkKKwkJCQlvcHRfaXNfbGFiZWxfZXhwcmVzc2lv bgorCQkJCWxhYmVsX2V4cHJlc3Npb24KKwkJCQlsYWJlbF9kaXNqdW5jdGlvbgorCQkJCWxhYmVs X3Rlcm0KKyV0eXBlIDxzdHI+CQlvcHRfY29saWQKKwogCiAvKgogICogTm9uLWtleXdvcmQgdG9r ZW4gdHlwZXMuICBUaGVzZSBhcmUgaGFyZC13aXJlZCBpbnRvIHRoZSAiZmxleCIgbGV4ZXIuCkBA IC03MTksMTggKzc1MCwxOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3Qo Y2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCUNVUlJFTlRfVElN RSBDVVJSRU5UX1RJTUVTVEFNUCBDVVJSRU5UX1VTRVIgQ1VSU09SIENZQ0xFCiAKIAlEQVRBX1Ag REFUQUJBU0UgREFZX1AgREVBTExPQ0FURSBERUMgREVDSU1BTF9QIERFQ0xBUkUgREVGQVVMVCBE RUZBVUxUUwotCURFRkVSUkFCTEUgREVGRVJSRUQgREVGSU5FUiBERUxFVEVfUCBERUxJTUlURVIg REVMSU1JVEVSUyBERVBFTkRTIERFUFRIIERFU0MKKwlERUZFUlJBQkxFIERFRkVSUkVEIERFRklO RVIgREVMRVRFX1AgREVMSU1JVEVSIERFTElNSVRFUlMgREVQRU5EUyBERVBUSCBERVNDIERFU1RJ TkFUSU9OCiAJREVUQUNIIERJQ1RJT05BUlkgRElTQUJMRV9QIERJU0NBUkQgRElTVElOQ1QgRE8g RE9DVU1FTlRfUCBET01BSU5fUAogCURPVUJMRV9QIERST1AKIAotCUVBQ0ggRUxTRSBFTVBUWV9Q IEVOQUJMRV9QIEVOQ09ESU5HIEVOQ1JZUFRFRCBFTkRfUCBFTlVNX1AgRVJST1JfUCBFU0NBUEUK KwlFQUNIIEVER0UgRUxTRSBFTVBUWV9QIEVOQUJMRV9QIEVOQ09ESU5HIEVOQ1JZUFRFRCBFTkRf UCBFTlVNX1AgRVJST1JfUCBFU0NBUEUKIAlFVkVOVCBFWENFUFQgRVhDTFVERSBFWENMVURJTkcg RVhDTFVTSVZFIEVYRUNVVEUgRVhJU1RTIEVYUExBSU4gRVhQUkVTU0lPTgogCUVYVEVOU0lPTiBF WFRFUk5BTCBFWFRSQUNUCiAKIAlGQUxTRV9QIEZBTUlMWSBGRVRDSCBGSUxURVIgRklOQUxJWkUg RklSU1RfUCBGTE9BVF9QIEZPTExPV0lORyBGT1IKIAlGT1JDRSBGT1JFSUdOIEZPUk1BVCBGT1JX QVJEIEZSRUVaRSBGUk9NIEZVTEwgRlVOQ1RJT04gRlVOQ1RJT05TCiAKLQlHRU5FUkFURUQgR0xP QkFMIEdSQU5UIEdSQU5URUQgR1JFQVRFU1QgR1JPVVBfUCBHUk9VUElORyBHUk9VUFMKKwlHRU5F UkFURUQgR0xPQkFMIEdSQU5UIEdSQU5URUQgR1JBUEggR1JBUEhfVEFCTEUgR1JFQVRFU1QgR1JP VVBfUCBHUk9VUElORyBHUk9VUFMKIAogCUhBTkRMRVIgSEFWSU5HIEhFQURFUl9QIEhPTEQgSE9V Ul9QCiAKQEAgLTc1MSw3ICs3ODIsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdT ZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCU1BUFBJ TkcgTUFUQ0ggTUFUQ0hFRCBNQVRFUklBTElaRUQgTUFYVkFMVUUgTUVSR0UgTUVSR0VfQUNUSU9O IE1FVEhPRAogCU1JTlVURV9QIE1JTlZBTFVFIE1PREUgTU9OVEhfUCBNT1ZFCiAKLQlOQU1FX1Ag TkFNRVMgTkFUSU9OQUwgTkFUVVJBTCBOQ0hBUiBORVNURUQgTkVXIE5FWFQgTkZDIE5GRCBORktD IE5GS0QgTk8KKwlOQU1FX1AgTkFNRVMgTkFUSU9OQUwgTkFUVVJBTCBOQ0hBUiBORVNURUQgTkVX IE5FWFQgTkZDIE5GRCBORktDIE5GS0QgTk8gTk9ERQogCU5PTkUgTk9STUFMSVpFIE5PUk1BTEla RUQKIAlOT1QgTk9USElORyBOT1RJRlkgTk9UTlVMTCBOT1dBSVQgTlVMTF9QIE5VTExJRgogCU5V TExTX1AgTlVNRVJJQwpAQCAtNzYzLDEyICs3OTQsMTIgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1 cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5 KTsKIAlQQVJBTExFTCBQQVJBTUVURVIgUEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBBU1NJTkcg UEFTU1dPUkQgUEFUSAogCVBMQUNJTkcgUExBTiBQTEFOUyBQT0xJQ1kKIAlQT1NJVElPTiBQUkVD RURJTkcgUFJFQ0lTSU9OIFBSRVNFUlZFIFBSRVBBUkUgUFJFUEFSRUQgUFJJTUFSWQotCVBSSU9S IFBSSVZJTEVHRVMgUFJPQ0VEVVJBTCBQUk9DRURVUkUgUFJPQ0VEVVJFUyBQUk9HUkFNIFBVQkxJ Q0FUSU9OCisJUFJJT1IgUFJJVklMRUdFUyBQUk9DRURVUkFMIFBST0NFRFVSRSBQUk9DRURVUkVT IFBST0dSQU0gUFJPUEVSVElFUyBQUk9QRVJUWSBQVUJMSUNBVElPTgogCiAJUVVPVEUgUVVPVEVT CiAKIAlSQU5HRSBSRUFEIFJFQUwgUkVBU1NJR04gUkVDVVJTSVZFIFJFRl9QIFJFRkVSRU5DRVMg UkVGRVJFTkNJTkcKLQlSRUZSRVNIIFJFSU5ERVggUkVMQVRJVkVfUCBSRUxFQVNFIFJFTkFNRSBS RVBFQVRBQkxFIFJFUExBQ0UgUkVQTElDQQorCVJFRlJFU0ggUkVJTkRFWCBSRUxBVElPTlNISVAg UkVMQVRJVkVfUCBSRUxFQVNFIFJFTkFNRSBSRVBFQVRBQkxFIFJFUExBQ0UgUkVQTElDQQogCVJF U0VUIFJFU1RBUlQgUkVTVFJJQ1QgUkVUVVJOIFJFVFVSTklORyBSRVRVUk5TIFJFVk9LRSBSSUdI VCBST0xFIFJPTExCQUNLIFJPTExVUAogCVJPVVRJTkUgUk9VVElORVMgUk9XIFJPV1MgUlVMRQog CkBAIC03ODgsNyArODE5LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0 KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlVTkxJU1RFTiBV TkxPR0dFRCBVTlRJTCBVUERBVEUgVVNFUiBVU0lORwogCiAJVkFDVVVNIFZBTElEIFZBTElEQVRF IFZBTElEQVRPUiBWQUxVRV9QIFZBTFVFUyBWQVJDSEFSIFZBUklBRElDIFZBUllJTkcKLQlWRVJC T1NFIFZFUlNJT05fUCBWSUVXIFZJRVdTIFZPTEFUSUxFCisJVkVSQk9TRSBWRVJTSU9OX1AgVkVS VEVYIFZJRVcgVklFV1MgVk9MQVRJTEUKIAogCVdIRU4gV0hFUkUgV0hJVEVTUEFDRV9QIFdJTkRP VyBXSVRIIFdJVEhJTiBXSVRIT1VUIFdPUksgV1JBUFBFUiBXUklURQogCkBAIC04ODYsNyArOTE3 LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUs IExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICVub25hc3NvYwlVTkJPVU5ERUQgTkVTVEVE IC8qIGlkZWFsbHkgd291bGQgaGF2ZSBzYW1lIHByZWNlZGVuY2UgYXMgSURFTlQgKi8KICVub25h c3NvYwlJREVOVCBQQVJUSVRJT04gUkFOR0UgUk9XUyBHUk9VUFMgUFJFQ0VESU5HIEZPTExPV0lO RyBDVUJFIFJPTExVUAogCQkJU0VUIEtFWVMgT0JKRUNUX1AgU0NBTEFSIFZBTFVFX1AgV0lUSCBX SVRIT1VUIFBBVEgKLSVsZWZ0CQlPcCBPUEVSQVRPUgkJLyogbXVsdGktY2hhcmFjdGVyIG9wcyBh bmQgdXNlci1kZWZpbmVkIG9wZXJhdG9ycyAqLworJWxlZnQJCU9wIE9QRVJBVE9SIFJJR0hUX0FS Uk9XICd8JwkvKiBtdWx0aS1jaGFyYWN0ZXIgb3BzIGFuZCB1c2VyLWRlZmluZWQgb3BlcmF0b3Jz ICovCiAlbGVmdAkJJysnICctJwogJWxlZnQJCScqJyAnLycgJyUnCiAlbGVmdAkJJ14nCkBAIC0x MDE3LDYgKzEwNDgsNyBAQCBzdG10OgogCQkJfCBBbHRlck9wZXJhdG9yU3RtdAogCQkJfCBBbHRl clR5cGVTdG10CiAJCQl8IEFsdGVyUG9saWN5U3RtdAorCQkJfCBBbHRlclByb3BHcmFwaFN0bXQK IAkJCXwgQWx0ZXJTZXFTdG10CiAJCQl8IEFsdGVyU3lzdGVtU3RtdAogCQkJfCBBbHRlclRhYmxl U3RtdApAQCAtMTA1Nyw2ICsxMDg5LDcgQEAgc3RtdDoKIAkJCXwgQWx0ZXJPcEZhbWlseVN0bXQK IAkJCXwgQ3JlYXRlUG9saWN5U3RtdAogCQkJfCBDcmVhdGVQTGFuZ1N0bXQKKwkJCXwgQ3JlYXRl UHJvcEdyYXBoU3RtdAogCQkJfCBDcmVhdGVTY2hlbWFTdG10CiAJCQl8IENyZWF0ZVNlcVN0bXQK IAkJCXwgQ3JlYXRlU3RtdApAQCAtNjkyOSw2ICs2OTYyLDcgQEAgb2JqZWN0X3R5cGVfYW55X25h bWU6CiAJCQl8IE1BVEVSSUFMSVpFRCBWSUVXCQkJCQkJeyAkJCA9IE9CSkVDVF9NQVRWSUVXOyB9 CiAJCQl8IElOREVYCQkJCQkJCQkJeyAkJCA9IE9CSkVDVF9JTkRFWDsgfQogCQkJfCBGT1JFSUdO IFRBQkxFCQkJCQkJCXsgJCQgPSBPQkpFQ1RfRk9SRUlHTl9UQUJMRTsgfQorCQkJfCBQUk9QRVJU WSBHUkFQSAkJCQkJCXsgJCQgPSBPQkpFQ1RfUFJPUEdSQVBIOyB9CiAJCQl8IENPTExBVElPTgkJ CQkJCQkJeyAkJCA9IE9CSkVDVF9DT0xMQVRJT047IH0KIAkJCXwgQ09OVkVSU0lPTl9QCQkJCQkJ CXsgJCQgPSBPQkpFQ1RfQ09OVkVSU0lPTjsgfQogCQkJfCBTVEFUSVNUSUNTCQkJCQkJCXsgJCQg PSBPQkpFQ1RfU1RBVElTVElDX0VYVDsgfQpAQCAtNzc4NSw2ICs3ODE5LDE1IEBAIHByaXZpbGVn ZV90YXJnZXQ6CiAJCQkJCW4tPm9ianMgPSAkMjsKIAkJCQkJJCQgPSBuOwogCQkJCX0KKwkJCXwg UFJPUEVSVFkgR1JBUEggcXVhbGlmaWVkX25hbWVfbGlzdAorCQkJCXsKKwkJCQkJUHJpdlRhcmdl dCAqbiA9IChQcml2VGFyZ2V0ICopIHBhbGxvYyhzaXplb2YoUHJpdlRhcmdldCkpOworCisJCQkJ CW4tPnRhcmd0eXBlID0gQUNMX1RBUkdFVF9PQkpFQ1Q7CisJCQkJCW4tPm9ianR5cGUgPSBPQkpF Q1RfUFJPUEdSQVBIOworCQkJCQluLT5vYmpzID0gJDM7CisJCQkJCSQkID0gbjsKKwkJCQl9CiAJ CQl8IFNDSEVNQSBuYW1lX2xpc3QKIAkJCQl7CiAJCQkJCVByaXZUYXJnZXQgKm4gPSAoUHJpdlRh cmdldCAqKSBwYWxsb2Moc2l6ZW9mKFByaXZUYXJnZXQpKTsKQEAgLTkxMDIsNiArOTE0NSwzNjYg QEAgb3B0X2lmX2V4aXN0czogSUZfUCBFWElTVFMJCQkJCQl7ICQkID0gdHJ1ZTsgfQogCQk7CiAK IAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICoJCUNSRUFURSBQUk9QRVJUWSBHUkFQSAor ICoJCUFMVEVSIFBST1BFUlRZIEdSQVBICisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitD cmVhdGVQcm9wR3JhcGhTdG10OiBDUkVBVEUgT3B0VGVtcCBQUk9QRVJUWSBHUkFQSCBxdWFsaWZp ZWRfbmFtZSBvcHRfdmVydGV4X3RhYmxlc19jbGF1c2Ugb3B0X2VkZ2VfdGFibGVzX2NsYXVzZQor CQkJCXsKKwkJCQkJQ3JlYXRlUHJvcEdyYXBoU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0ZVByb3BH cmFwaFN0bXQpOworCisJCQkJCW4tPnBnbmFtZSA9ICQ1OworCQkJCQluLT5wZ25hbWUtPnJlbHBl cnNpc3RlbmNlID0gJDI7CisJCQkJCW4tPnZlcnRleF90YWJsZXMgPSAkNjsKKwkJCQkJbi0+ZWRn ZV90YWJsZXMgPSAkNzsKKworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJCTsKKworb3B0 X3ZlcnRleF90YWJsZXNfY2xhdXNlOgorCQkJdmVydGV4X3RhYmxlc19jbGF1c2UJCQkJeyAkJCA9 ICQxOyB9CisJCQl8IC8qRU1QVFkqLwkJCQkJCQl7ICQkID0gTklMOyB9CisJCTsKKwordmVydGV4 X3RhYmxlc19jbGF1c2U6CisJCQl2ZXJ0ZXhfc3lub255bSBUQUJMRVMgJygnIHZlcnRleF90YWJs ZV9saXN0ICcpJwl7ICQkID0gJDQ7IH0KKwkJOworCit2ZXJ0ZXhfc3lub255bTogTk9ERSB8IFZF UlRFWAorCQk7CisKK3ZlcnRleF90YWJsZV9saXN0OiB2ZXJ0ZXhfdGFibGVfZGVmaW5pdGlvbgkJ CQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCB2ZXJ0ZXhfdGFibGVfbGlzdCAnLCcg dmVydGV4X3RhYmxlX2RlZmluaXRpb24JCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KKwkJOwor Cit2ZXJ0ZXhfdGFibGVfZGVmaW5pdGlvbjogcXVhbGlmaWVkX25hbWUgb3B0X3Byb3BncmFwaF90 YWJsZV9hbGlhcyBvcHRfZ3JhcGhfdGFibGVfa2V5X2NsYXVzZQorCQkJCW9wdF9lbGVtZW50X3Rh YmxlX2xhYmVsX2FuZF9wcm9wZXJ0aWVzCisJCQkJeworCQkJCQlQcm9wR3JhcGhWZXJ0ZXggKm4g PSBtYWtlTm9kZShQcm9wR3JhcGhWZXJ0ZXgpOworCisJCQkJCSQxLT5hbGlhcyA9ICQyOworCQkJ CQluLT52dGFibGUgPSAkMTsKKwkJCQkJbi0+dmtleSA9ICQzOworCQkJCQluLT5sYWJlbHMgPSAk NDsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJ fQorCQk7CisKK29wdF9wcm9wZ3JhcGhfdGFibGVfYWxpYXM6CisJCQlBUyBuYW1lCisJCQkJewor CQkJCQkkJCA9IG1ha2VOb2RlKEFsaWFzKTsKKwkJCQkJJCQtPmFsaWFzbmFtZSA9ICQyOworCQkJ CX0KKwkJCXwgLypFTVBUWSovCQkJCQkJCXsgJCQgPSBOVUxMOyB9CisJCTsKKworb3B0X2dyYXBo X3RhYmxlX2tleV9jbGF1c2U6CisJCQlLRVkgJygnIGNvbHVtbkxpc3QgJyknCQkJCXsgJCQgPSAk MzsgfQorCQkJfCAvKkVNUFRZKi8JCQkJCQkJeyAkJCA9IE5JTDsgfQorCQk7CisKK29wdF9lZGdl X3RhYmxlc19jbGF1c2U6CisJCQllZGdlX3RhYmxlc19jbGF1c2UJCQkJCXsgJCQgPSAkMTsgfQor CQkJfCAvKkVNUFRZKi8JCQkJCQkJeyAkJCA9IE5JTDsgfQorCQk7CisKK2VkZ2VfdGFibGVzX2Ns YXVzZToKKwkJCWVkZ2Vfc3lub255bSBUQUJMRVMgJygnIGVkZ2VfdGFibGVfbGlzdAknKScJCQl7 ICQkID0gJDQ7IH0KKwkJOworCitlZGdlX3N5bm9ueW06IEVER0UgfCBSRUxBVElPTlNISVAKKwkJ OworCitlZGdlX3RhYmxlX2xpc3Q6IGVkZ2VfdGFibGVfZGVmaW5pdGlvbgkJCQkJCXsgJCQgPSBs aXN0X21ha2UxKCQxKTsgfQorCQkJfCBlZGdlX3RhYmxlX2xpc3QgJywnIGVkZ2VfdGFibGVfZGVm aW5pdGlvbgkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQorCQk7CisKK2VkZ2VfdGFibGVfZGVm aW5pdGlvbjogcXVhbGlmaWVkX25hbWUgb3B0X3Byb3BncmFwaF90YWJsZV9hbGlhcyBvcHRfZ3Jh cGhfdGFibGVfa2V5X2NsYXVzZQorCQkJCXNvdXJjZV92ZXJ0ZXhfdGFibGUgZGVzdGluYXRpb25f dmVydGV4X3RhYmxlIG9wdF9lbGVtZW50X3RhYmxlX2xhYmVsX2FuZF9wcm9wZXJ0aWVzCisJCQkJ eworCQkJCQlQcm9wR3JhcGhFZGdlICpuID0gbWFrZU5vZGUoUHJvcEdyYXBoRWRnZSk7CisKKwkJ CQkJJDEtPmFsaWFzID0gJDI7CisJCQkJCW4tPmV0YWJsZSA9ICQxOworCQkJCQluLT5la2V5ID0g JDM7CisJCQkJCW4tPmVzcmNrZXkgPSBsaW5pdGlhbCgkNCk7CisJCQkJCW4tPmVzcmN2ZXJ0ZXgg PSBsc2Vjb25kKCQ0KTsKKwkJCQkJbi0+ZXNyY3ZlcnRleGNvbHMgPSBsdGhpcmQoJDQpOworCQkJ CQluLT5lZGVzdGtleSA9IGxpbml0aWFsKCQ1KTsKKwkJCQkJbi0+ZWRlc3R2ZXJ0ZXggPSBsc2Vj b25kKCQ1KTsKKwkJCQkJbi0+ZWRlc3R2ZXJ0ZXhjb2xzID0gbHRoaXJkKCQ1KTsKKwkJCQkJbi0+ bGFiZWxzID0gJDY7CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7CisKKwkJCQkJJCQgPSAoTm9kZSAq KSBuOworCQkJCX0KKwkJOworCitzb3VyY2VfdmVydGV4X3RhYmxlOiBTT1VSQ0UgbmFtZQorCQkJ CXsKKwkJCQkJJCQgPSBsaXN0X21ha2UzKE5VTEwsICQyLCBOVUxMKTsKKwkJCQl9CisJCQkJfCBT T1VSQ0UgS0VZICcoJyBjb2x1bW5MaXN0ICcpJyBSRUZFUkVOQ0VTIG5hbWUgJygnIGNvbHVtbkxp c3QgJyknCisJCQkJeworCQkJCQkkJCA9IGxpc3RfbWFrZTMoJDQsICQ3LCAkOSk7CisJCQkJfQor CQk7CisKK2Rlc3RpbmF0aW9uX3ZlcnRleF90YWJsZTogREVTVElOQVRJT04gbmFtZQorCQkJCXsK KwkJCQkJJCQgPSBsaXN0X21ha2UzKE5VTEwsICQyLCBOVUxMKTsKKwkJCQl9CisJCQkJfCBERVNU SU5BVElPTiBLRVkgJygnIGNvbHVtbkxpc3QgJyknIFJFRkVSRU5DRVMgbmFtZSAnKCcgY29sdW1u TGlzdCAnKScKKwkJCQl7CisJCQkJCSQkID0gbGlzdF9tYWtlMygkNCwgJDcsICQ5KTsKKwkJCQl9 CisJCTsKKworb3B0X2VsZW1lbnRfdGFibGVfbGFiZWxfYW5kX3Byb3BlcnRpZXM6CisJCQllbGVt ZW50X3RhYmxlX3Byb3BlcnRpZXMKKwkJCQl7CisJCQkJCVByb3BHcmFwaExhYmVsQW5kUHJvcGVy dGllcyAqbHAgPSBtYWtlTm9kZShQcm9wR3JhcGhMYWJlbEFuZFByb3BlcnRpZXMpOworCisJCQkJ CWxwLT5wcm9wZXJ0aWVzID0gKFByb3BHcmFwaFByb3BlcnRpZXMgKikgJDE7CisJCQkJCWxwLT5s b2NhdGlvbiA9IEAxOworCisJCQkJCSQkID0gbGlzdF9tYWtlMShscCk7CisJCQkJfQorCQkJfCBs YWJlbF9hbmRfcHJvcGVydGllc19saXN0CisJCQkJeworCQkJCQkkJCA9ICQxOworCQkJCX0KKwkJ CXwgLypFTVBUWSovCisJCQkJeworCQkJCQlQcm9wR3JhcGhMYWJlbEFuZFByb3BlcnRpZXMgKmxw ID0gbWFrZU5vZGUoUHJvcEdyYXBoTGFiZWxBbmRQcm9wZXJ0aWVzKTsKKwkJCQkJUHJvcEdyYXBo UHJvcGVydGllcyAqcHIgPSBtYWtlTm9kZShQcm9wR3JhcGhQcm9wZXJ0aWVzKTsKKworCQkJCQlw ci0+YWxsID0gdHJ1ZTsKKwkJCQkJcHItPmxvY2F0aW9uID0gLTE7CisJCQkJCWxwLT5wcm9wZXJ0 aWVzID0gcHI7CisJCQkJCWxwLT5sb2NhdGlvbiA9IC0xOworCisJCQkJCSQkID0gbGlzdF9tYWtl MShscCk7CisJCQkJfQorCQk7CisKK2VsZW1lbnRfdGFibGVfcHJvcGVydGllczoKKwkJCU5PIFBS T1BFUlRJRVMKKwkJCQl7CisJCQkJCVByb3BHcmFwaFByb3BlcnRpZXMgKnByID0gbWFrZU5vZGUo UHJvcEdyYXBoUHJvcGVydGllcyk7CisKKwkJCQkJcHItPnByb3BlcnRpZXMgPSBOSUw7CisJCQkJ CXByLT5sb2NhdGlvbiA9IEAxOworCisJCQkJCSQkID0gKE5vZGUgKikgcHI7CisJCQkJfQorCQkJ fCBQUk9QRVJUSUVTIEFMTCBDT0xVTU5TCisJCQkvKnwgUFJPUEVSVElFUyBBUkUgQUxMIENPTFVN TlMgKi8KKwkJCQl7CisJCQkJCVByb3BHcmFwaFByb3BlcnRpZXMgKnByID0gbWFrZU5vZGUoUHJv cEdyYXBoUHJvcGVydGllcyk7CisKKwkJCQkJcHItPmFsbCA9IHRydWU7CisJCQkJCXByLT5sb2Nh dGlvbiA9IEAxOworCisJCQkJCSQkID0gKE5vZGUgKikgcHI7CisJCQkJfQorCQkJfCBQUk9QRVJU SUVTICcoJyB4bWxfYXR0cmlidXRlX2xpc3QgJyknCisJCQkJeworCQkJCQlQcm9wR3JhcGhQcm9w ZXJ0aWVzICpwciA9IG1ha2VOb2RlKFByb3BHcmFwaFByb3BlcnRpZXMpOworCisJCQkJCXByLT5w cm9wZXJ0aWVzID0gJDM7CisJCQkJCXByLT5sb2NhdGlvbiA9IEAxOworCisJCQkJCSQkID0gKE5v ZGUgKikgcHI7CisJCQkJfQorCQk7CisKK2xhYmVsX2FuZF9wcm9wZXJ0aWVzX2xpc3Q6CisJCQls YWJlbF9hbmRfcHJvcGVydGllcworCQkJCXsKKwkJCQkJJCQgPSBsaXN0X21ha2UxKCQxKTsKKwkJ CQl9CisJCQl8IGxhYmVsX2FuZF9wcm9wZXJ0aWVzX2xpc3QgbGFiZWxfYW5kX3Byb3BlcnRpZXMK KwkJCQl7CisJCQkJCSQkID0gbGFwcGVuZCgkMSwgJDIpOworCQkJCX0KKwkJOworCitsYWJlbF9h bmRfcHJvcGVydGllczoKKwkJCWVsZW1lbnRfdGFibGVfbGFiZWxfY2xhdXNlCisJCQkJeworCQkJ CQlQcm9wR3JhcGhMYWJlbEFuZFByb3BlcnRpZXMgKmxwID0gbWFrZU5vZGUoUHJvcEdyYXBoTGFi ZWxBbmRQcm9wZXJ0aWVzKTsKKwkJCQkJUHJvcEdyYXBoUHJvcGVydGllcyAqcHIgPSBtYWtlTm9k ZShQcm9wR3JhcGhQcm9wZXJ0aWVzKTsKKworCQkJCQlwci0+YWxsID0gdHJ1ZTsKKwkJCQkJcHIt PmxvY2F0aW9uID0gLTE7CisKKwkJCQkJbHAtPmxhYmVsID0gJDE7CisJCQkJCWxwLT5wcm9wZXJ0 aWVzID0gcHI7CisJCQkJCWxwLT5sb2NhdGlvbiA9IEAxOworCisJCQkJCSQkID0gKE5vZGUgKikg bHA7CisJCQkJfQorCQkJfCBlbGVtZW50X3RhYmxlX2xhYmVsX2NsYXVzZSBlbGVtZW50X3RhYmxl X3Byb3BlcnRpZXMKKwkJCQl7CisJCQkJCVByb3BHcmFwaExhYmVsQW5kUHJvcGVydGllcyAqbHAg PSBtYWtlTm9kZShQcm9wR3JhcGhMYWJlbEFuZFByb3BlcnRpZXMpOworCisJCQkJCWxwLT5sYWJl bCA9ICQxOworCQkJCQlscC0+cHJvcGVydGllcyA9IChQcm9wR3JhcGhQcm9wZXJ0aWVzICopICQy OworCQkJCQlscC0+bG9jYXRpb24gPSBAMTsKKworCQkJCQkkJCA9IChOb2RlICopIGxwOworCQkJ CX0KKwkJOworCitlbGVtZW50X3RhYmxlX2xhYmVsX2NsYXVzZToKKwkJCUxBQkVMIG5hbWUKKwkJ CQl7CisJCQkJCSQkID0gJDI7CisJCQkJfQorCQkJfCBERUZBVUxUIExBQkVMCisJCQkJeworCQkJ CQkkJCA9IE5VTEw7CisJCQkJfQorCQk7CisKK0FsdGVyUHJvcEdyYXBoU3RtdDoKKwkJCUFMVEVS IFBST1BFUlRZIEdSQVBIIHF1YWxpZmllZF9uYW1lIEFERF9QIHZlcnRleF90YWJsZXNfY2xhdXNl CisJCQkJeworCQkJCQlBbHRlclByb3BHcmFwaFN0bXQgKm4gPSBtYWtlTm9kZShBbHRlclByb3BH cmFwaFN0bXQpOworCisJCQkJCW4tPnBnbmFtZSA9ICQ0OworCQkJCQluLT5hZGRfdmVydGV4X3Rh YmxlcyA9ICQ2OworCisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCQl8IEFMVEVSIFBS T1BFUlRZIEdSQVBIIHF1YWxpZmllZF9uYW1lIEFERF9QIHZlcnRleF90YWJsZXNfY2xhdXNlIEFE RF9QIGVkZ2VfdGFibGVzX2NsYXVzZQorCQkJCXsKKwkJCQkJQWx0ZXJQcm9wR3JhcGhTdG10ICpu ID0gbWFrZU5vZGUoQWx0ZXJQcm9wR3JhcGhTdG10KTsKKworCQkJCQluLT5wZ25hbWUgPSAkNDsK KwkJCQkJbi0+YWRkX3ZlcnRleF90YWJsZXMgPSAkNjsKKwkJCQkJbi0+YWRkX2VkZ2VfdGFibGVz ID0gJDg7CisKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCXwgQUxURVIgUFJPUEVS VFkgR1JBUEggcXVhbGlmaWVkX25hbWUgQUREX1AgZWRnZV90YWJsZXNfY2xhdXNlCisJCQkJewor CQkJCQlBbHRlclByb3BHcmFwaFN0bXQgKm4gPSBtYWtlTm9kZShBbHRlclByb3BHcmFwaFN0bXQp OworCisJCQkJCW4tPnBnbmFtZSA9ICQ0OworCQkJCQluLT5hZGRfZWRnZV90YWJsZXMgPSAkNjsK KworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQkJfCBBTFRFUiBQUk9QRVJUWSBHUkFQ SCBxdWFsaWZpZWRfbmFtZSBEUk9QIHZlcnRleF9zeW5vbnltIFRBQkxFUyAnKCcgbmFtZV9saXN0 ICcpJyBvcHRfZHJvcF9iZWhhdmlvcgorCQkJCXsKKwkJCQkJQWx0ZXJQcm9wR3JhcGhTdG10ICpu ID0gbWFrZU5vZGUoQWx0ZXJQcm9wR3JhcGhTdG10KTsKKworCQkJCQluLT5wZ25hbWUgPSAkNDsK KwkJCQkJbi0+ZHJvcF92ZXJ0ZXhfdGFibGVzID0gJDk7CisJCQkJCW4tPmRyb3BfYmVoYXZpb3Ig PSAkMTE7CisKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCXwgQUxURVIgUFJPUEVS VFkgR1JBUEggcXVhbGlmaWVkX25hbWUgRFJPUCBlZGdlX3N5bm9ueW0gVEFCTEVTICcoJyBuYW1l X2xpc3QgJyknIG9wdF9kcm9wX2JlaGF2aW9yCisJCQkJeworCQkJCQlBbHRlclByb3BHcmFwaFN0 bXQgKm4gPSBtYWtlTm9kZShBbHRlclByb3BHcmFwaFN0bXQpOworCisJCQkJCW4tPnBnbmFtZSA9 ICQ0OworCQkJCQluLT5kcm9wX2VkZ2VfdGFibGVzID0gJDk7CisJCQkJCW4tPmRyb3BfYmVoYXZp b3IgPSAkMTE7CisKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCXwgQUxURVIgUFJP UEVSVFkgR1JBUEggcXVhbGlmaWVkX25hbWUgQUxURVIgdmVydGV4X29yX2VkZ2UgVEFCTEUgbmFt ZQorCQkJCWFkZF9sYWJlbF9saXN0CisJCQkJeworCQkJCQlBbHRlclByb3BHcmFwaFN0bXQgKm4g PSBtYWtlTm9kZShBbHRlclByb3BHcmFwaFN0bXQpOworCisJCQkJCW4tPnBnbmFtZSA9ICQ0Owor CQkJCQluLT5lbGVtZW50X2tpbmQgPSAkNjsKKwkJCQkJbi0+ZWxlbWVudF9hbGlhcyA9ICQ4Owor CQkJCQluLT5hZGRfbGFiZWxzID0gJDk7CisKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0K KwkJCXwgQUxURVIgUFJPUEVSVFkgR1JBUEggcXVhbGlmaWVkX25hbWUgQUxURVIgdmVydGV4X29y X2VkZ2UgVEFCTEUgbmFtZQorCQkJCURST1AgTEFCRUwgbmFtZSBvcHRfZHJvcF9iZWhhdmlvcgor CQkJCXsKKwkJCQkJQWx0ZXJQcm9wR3JhcGhTdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJQcm9wR3Jh cGhTdG10KTsKKworCQkJCQluLT5wZ25hbWUgPSAkNDsKKwkJCQkJbi0+ZWxlbWVudF9raW5kID0g JDY7CisJCQkJCW4tPmVsZW1lbnRfYWxpYXMgPSAkODsKKwkJCQkJbi0+ZHJvcF9sYWJlbCA9ICQx MTsKKwkJCQkJbi0+ZHJvcF9iZWhhdmlvciA9ICQxMjsKKworCQkJCQkkJCA9IChOb2RlICopIG47 CisJCQkJfQorCQkJfCBBTFRFUiBQUk9QRVJUWSBHUkFQSCBxdWFsaWZpZWRfbmFtZSBBTFRFUiB2 ZXJ0ZXhfb3JfZWRnZSBUQUJMRSBuYW1lCisJCQkJQUxURVIgTEFCRUwgbmFtZSBBRERfUCBQUk9Q RVJUSUVTICcoJyB4bWxfYXR0cmlidXRlX2xpc3QgJyknCisJCQkJeworCQkJCQlBbHRlclByb3BH cmFwaFN0bXQgKm4gPSBtYWtlTm9kZShBbHRlclByb3BHcmFwaFN0bXQpOworCQkJCQlQcm9wR3Jh cGhQcm9wZXJ0aWVzICpwciA9IG1ha2VOb2RlKFByb3BHcmFwaFByb3BlcnRpZXMpOworCisJCQkJ CW4tPnBnbmFtZSA9ICQ0OworCQkJCQluLT5lbGVtZW50X2tpbmQgPSAkNjsKKwkJCQkJbi0+ZWxl bWVudF9hbGlhcyA9ICQ4OworCQkJCQluLT5hbHRlcl9sYWJlbCA9ICQxMTsKKworCQkJCQlwci0+ cHJvcGVydGllcyA9ICQxNTsKKwkJCQkJcHItPmxvY2F0aW9uID0gQDEzOworCQkJCQluLT5hZGRf cHJvcGVydGllcyA9IHByOworCisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCQl8IEFM VEVSIFBST1BFUlRZIEdSQVBIIHF1YWxpZmllZF9uYW1lIEFMVEVSIHZlcnRleF9vcl9lZGdlIFRB QkxFIG5hbWUKKwkJCQlBTFRFUiBMQUJFTCBuYW1lIERST1AgUFJPUEVSVElFUyAnKCcgbmFtZV9s aXN0ICcpJyBvcHRfZHJvcF9iZWhhdmlvcgorCQkJCXsKKwkJCQkJQWx0ZXJQcm9wR3JhcGhTdG10 ICpuID0gbWFrZU5vZGUoQWx0ZXJQcm9wR3JhcGhTdG10KTsKKworCQkJCQluLT5wZ25hbWUgPSAk NDsKKwkJCQkJbi0+ZWxlbWVudF9raW5kID0gJDY7CisJCQkJCW4tPmVsZW1lbnRfYWxpYXMgPSAk ODsKKwkJCQkJbi0+YWx0ZXJfbGFiZWwgPSAkMTE7CisJCQkJCW4tPmRyb3BfcHJvcGVydGllcyA9 ICQxNTsKKwkJCQkJbi0+ZHJvcF9iZWhhdmlvciA9ICQxNzsKKworCQkJCQkkJCA9IChOb2RlICop IG47CisJCQkJfQorCQk7CisKK3ZlcnRleF9vcl9lZGdlOgorCQkJdmVydGV4X3N5bm9ueW0JCQkJ CQl7ICQkID0gUFJPUEdSQVBIX0VMRU1FTlRfS0lORF9WRVJURVg7IH0KKwkJCXwgZWRnZV9zeW5v bnltCQkJCQkJeyAkJCA9IFBST1BHUkFQSF9FTEVNRU5UX0tJTkRfRURHRTsgfQorCQk7CisKK2Fk ZF9sYWJlbF9saXN0OgorCQkJYWRkX2xhYmVsCQkJCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsg fQorCQkJfCBhZGRfbGFiZWxfbGlzdCBhZGRfbGFiZWwJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDIp Owl9CisJCTsKKworYWRkX2xhYmVsOiBBRERfUCBMQUJFTCBuYW1lIGVsZW1lbnRfdGFibGVfcHJv cGVydGllcworCQkJCXsKKwkJCQkJUHJvcEdyYXBoTGFiZWxBbmRQcm9wZXJ0aWVzICpscCA9IG1h a2VOb2RlKFByb3BHcmFwaExhYmVsQW5kUHJvcGVydGllcyk7CisKKwkJCQkJbHAtPmxhYmVsID0g JDM7CisJCQkJCWxwLT5wcm9wZXJ0aWVzID0gKFByb3BHcmFwaFByb3BlcnRpZXMgKikgJDQ7CisJ CQkJCWxwLT5sb2NhdGlvbiA9IEAxOworCisJCQkJCSQkID0gKE5vZGUgKikgbHA7CisJCQkJfQor CQk7CisKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICoJCUNSRUFURSBUUkFOU0ZPUk0g LyBEUk9QIFRSQU5TRk9STQpAQCAtOTQwMiw2ICs5ODA1LDE2IEBAIFJlbmFtZVN0bXQ6IEFMVEVS IEFHR1JFR0FURSBhZ2dyZWdhdGVfd2l0aF9hcmd0eXBlcyBSRU5BTUUgVE8gbmFtZQogCQkJCQlu LT5taXNzaW5nX29rID0gZmFsc2U7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCQl8 IEFMVEVSIFBST1BFUlRZIEdSQVBIIHF1YWxpZmllZF9uYW1lIFJFTkFNRSBUTyBuYW1lCisJCQkJ eworCQkJCQlSZW5hbWVTdG10ICpuID0gbWFrZU5vZGUoUmVuYW1lU3RtdCk7CisKKwkJCQkJbi0+ cmVuYW1lVHlwZSA9IE9CSkVDVF9QUk9QR1JBUEg7CisJCQkJCW4tPnJlbGF0aW9uID0gJDQ7CisJ CQkJCW4tPm5ld25hbWUgPSAkNzsKKwkJCQkJbi0+bWlzc2luZ19vayA9IGZhbHNlOworCQkJCQkk JCA9IChOb2RlICopbjsKKwkJCQl9CiAJCQl8IEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgUkVOQU1F IFRPIG5hbWUKIAkJCQl7CiAJCQkJCVJlbmFtZVN0bXQgKm4gPSBtYWtlTm9kZShSZW5hbWVTdG10 KTsKQEAgLTEwMDI3LDYgKzEwNDQwLDI2IEBAIEFsdGVyT2JqZWN0U2NoZW1hU3RtdDoKIAkJCQkJ bi0+bWlzc2luZ19vayA9IGZhbHNlOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQorCQkJ fCBBTFRFUiBQUk9QRVJUWSBHUkFQSCBxdWFsaWZpZWRfbmFtZSBTRVQgU0NIRU1BIG5hbWUKKwkJ CQl7CisJCQkJCUFsdGVyT2JqZWN0U2NoZW1hU3RtdCAqbiA9IG1ha2VOb2RlKEFsdGVyT2JqZWN0 U2NoZW1hU3RtdCk7CisKKwkJCQkJbi0+b2JqZWN0VHlwZSA9IE9CSkVDVF9QUk9QR1JBUEg7CisJ CQkJCW4tPnJlbGF0aW9uID0gJDQ7CisJCQkJCW4tPm5ld3NjaGVtYSA9ICQ3OworCQkJCQluLT5t aXNzaW5nX29rID0gZmFsc2U7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJCXwgQUxU RVIgUFJPUEVSVFkgR1JBUEggSUZfUCBFWElTVFMgcXVhbGlmaWVkX25hbWUgU0VUIFNDSEVNQSBu YW1lCisJCQkJeworCQkJCQlBbHRlck9iamVjdFNjaGVtYVN0bXQgKm4gPSBtYWtlTm9kZShBbHRl ck9iamVjdFNjaGVtYVN0bXQpOworCisJCQkJCW4tPm9iamVjdFR5cGUgPSBPQkpFQ1RfUFJPUEdS QVBIOworCQkJCQluLT5yZWxhdGlvbiA9ICQ2OworCQkJCQluLT5uZXdzY2hlbWEgPSAkOTsKKwkJ CQkJbi0+bWlzc2luZ19vayA9IHRydWU7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KIAkJ CXwgQUxURVIgUk9VVElORSBmdW5jdGlvbl93aXRoX2FyZ3R5cGVzIFNFVCBTQ0hFTUEgbmFtZQog CQkJCXsKIAkJCQkJQWx0ZXJPYmplY3RTY2hlbWFTdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJPYmpl Y3RTY2hlbWFTdG10KTsKQEAgLTEwMzcwLDYgKzEwODAzLDE1IEBAIEFsdGVyT3duZXJTdG10OiBB TFRFUiBBR0dSRUdBVEUgYWdncmVnYXRlX3dpdGhfYXJndHlwZXMgT1dORVIgVE8gUm9sZVNwZWMK IAkJCQkJbi0+bmV3b3duZXIgPSAkNjsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KKwkJ CXwgQUxURVIgUFJPUEVSVFkgR1JBUEggcXVhbGlmaWVkX25hbWUgT1dORVIgVE8gUm9sZVNwZWMK KwkJCQl7CisJCQkJCUFsdGVyT3duZXJTdG10ICpuID0gbWFrZU5vZGUoQWx0ZXJPd25lclN0bXQp OworCisJCQkJCW4tPm9iamVjdFR5cGUgPSBPQkpFQ1RfUFJPUEdSQVBIOworCQkJCQluLT5yZWxh dGlvbiA9ICQ0OworCQkJCQluLT5uZXdvd25lciA9ICQ3OworCQkJCQkkJCA9IChOb2RlICopIG47 CisJCQkJfQogCQkJfCBBTFRFUiBST1VUSU5FIGZ1bmN0aW9uX3dpdGhfYXJndHlwZXMgT1dORVIg VE8gUm9sZVNwZWMKIAkJCQl7CiAJCQkJCUFsdGVyT3duZXJTdG10ICpuID0gbWFrZU5vZGUoQWx0 ZXJPd25lclN0bXQpOwpAQCAtMTM0NjQsNiArMTM5MDYsMTcgQEAgdGFibGVfcmVmOglyZWxhdGlv bl9leHByIG9wdF9hbGlhc19jbGF1c2UKIAkJCQkJbi0+YWxpYXMgPSAkMzsKIAkJCQkJJCQgPSAo Tm9kZSAqKSBuOwogCQkJCX0KKwkJCXwgR1JBUEhfVEFCTEUgJygnIHF1YWxpZmllZF9uYW1lIE1B VENIIGdyYXBoX3BhdHRlcm4gQ09MVU1OUyAnKCcgeG1sX2F0dHJpYnV0ZV9saXN0ICcpJyAnKScg b3B0X2FsaWFzX2NsYXVzZQorCQkJCXsKKwkJCQkJUmFuZ2VHcmFwaFRhYmxlICpuID0gbWFrZU5v ZGUoUmFuZ2VHcmFwaFRhYmxlKTsKKworCQkJCQluLT5ncmFwaF9uYW1lID0gJDM7CisJCQkJCW4t PmdyYXBoX3BhdHRlcm4gPSBjYXN0Tm9kZShHcmFwaFBhdHRlcm4sICQ1KTsKKwkJCQkJbi0+Y29s dW1ucyA9ICQ4OworCQkJCQluLT5hbGlhcyA9ICQxMTsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsK KwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KIAkJCXwgc2VsZWN0X3dpdGhfcGFyZW5zIG9w dF9hbGlhc19jbGF1c2UKIAkJCQl7CiAJCQkJCVJhbmdlU3Vic2VsZWN0ICpuID0gbWFrZU5vZGUo UmFuZ2VTdWJzZWxlY3QpOwpAQCAtMTQ4MDgsNiArMTUyNjEsMTAgQEAgYV9leHByOgkJY19leHBy CQkJCQkJCQkJeyAkJCA9ICQxOyB9CiAJCQkJeyAkJCA9IChOb2RlICopIG1ha2VTaW1wbGVBX0V4 cHIoQUVYUFJfT1AsICI+PSIsICQxLCAkMywgQDIpOyB9CiAJCQl8IGFfZXhwciBOT1RfRVFVQUxT IGFfZXhwcgogCQkJCXsgJCQgPSAoTm9kZSAqKSBtYWtlU2ltcGxlQV9FeHByKEFFWFBSX09QLCAi PD4iLCAkMSwgJDMsIEAyKTsgfQorCQkJfCBhX2V4cHIgUklHSFRfQVJST1cgYV9leHByCisJCQkJ eyAkJCA9IChOb2RlICopIG1ha2VTaW1wbGVBX0V4cHIoQUVYUFJfT1AsICItPiIsICQxLCAkMywg QDIpOyB9CisJCQl8IGFfZXhwciAnfCcgYV9leHByCisJCQkJeyAkJCA9IChOb2RlICopIG1ha2VT aW1wbGVBX0V4cHIoQUVYUFJfT1AsICJ8IiwgJDEsICQzLCBAMik7IH0KIAogCQkJfCBhX2V4cHIg cXVhbF9PcCBhX2V4cHIJCQkJJXByZWMgT3AKIAkJCQl7ICQkID0gKE5vZGUgKikgbWFrZUFfRXhw cihBRVhQUl9PUCwgJDIsICQxLCAkMywgQDIpOyB9CkBAIC0xNTI4Nyw2ICsxNTc0NCwxMCBAQCBi X2V4cHI6CQljX2V4cHIKIAkJCQl7ICQkID0gKE5vZGUgKikgbWFrZVNpbXBsZUFfRXhwcihBRVhQ Ul9PUCwgIj49IiwgJDEsICQzLCBAMik7IH0KIAkJCXwgYl9leHByIE5PVF9FUVVBTFMgYl9leHBy CiAJCQkJeyAkJCA9IChOb2RlICopIG1ha2VTaW1wbGVBX0V4cHIoQUVYUFJfT1AsICI8PiIsICQx LCAkMywgQDIpOyB9CisJCQl8IGJfZXhwciBSSUdIVF9BUlJPVyBiX2V4cHIKKwkJCQl7ICQkID0g KE5vZGUgKikgbWFrZVNpbXBsZUFfRXhwcihBRVhQUl9PUCwgIi0+IiwgJDEsICQzLCBAMik7IH0K KwkJCXwgYl9leHByICd8JyBiX2V4cHIKKwkJCQl7ICQkID0gKE5vZGUgKikgbWFrZVNpbXBsZUFf RXhwcihBRVhQUl9PUCwgInwiLCAkMSwgJDMsIEAyKTsgfQogCQkJfCBiX2V4cHIgcXVhbF9PcCBi X2V4cHIJCQkJJXByZWMgT3AKIAkJCQl7ICQkID0gKE5vZGUgKikgbWFrZUFfRXhwcihBRVhQUl9P UCwgJDIsICQxLCAkMywgQDIpOyB9CiAJCQl8IHF1YWxfT3AgYl9leHByCQkJCQklcHJlYyBPcApA QCAtMTY0NTUsNiArMTY5MTYsOCBAQCBNYXRoT3A6CQkgJysnCQkJCQkJCQkJeyAkJCA9ICIrIjsg fQogCQkJfCBMRVNTX0VRVUFMUwkJCQkJCQl7ICQkID0gIjw9IjsgfQogCQkJfCBHUkVBVEVSX0VR VUFMUwkJCQkJCXsgJCQgPSAiPj0iOyB9CiAJCQl8IE5PVF9FUVVBTFMJCQkJCQkJeyAkJCA9ICI8 PiI7IH0KKwkJCXwgUklHSFRfQVJST1cJCQkJCQkJeyAkJCA9ICItPiI7IH0KKwkJCXwgJ3wnCQkJ CQkJCQkJeyAkJCA9ICJ8IjsgfQogCQk7CiAKIHF1YWxfT3A6CU9wCkBAIC0xNzA0NSw2ICsxNzUw OCwyMTMgQEAganNvbl9hcnJheV9hZ2dyZWdhdGVfb3JkZXJfYnlfY2xhdXNlX29wdDoKIAkJCXwg LyogRU1QVFkgKi8JCQkJCQkJeyAkJCA9IE5JTDsgfQogCQk7CiAKKworLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisgKgorICoJZ3JhcGggcGF0dGVybnMKKyAqCisgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CisKK2dyYXBoX3BhdHRlcm46CisJCQlwYXRoX3BhdHRlcm5fbGlzdCB3aGVyZV9jbGF1c2UKKwkJ CQl7CisJCQkJCUdyYXBoUGF0dGVybiAqZ3AgPSBtYWtlTm9kZShHcmFwaFBhdHRlcm4pOworCisJ CQkJCWdwLT5wYXRoX3BhdHRlcm5fbGlzdCA9ICQxOworCQkJCQlncC0+d2hlcmVDbGF1c2UgPSAk MjsKKwkJCQkJJCQgPSAoTm9kZSAqKSBncDsKKwkJCQl9CisJCTsKKworcGF0aF9wYXR0ZXJuX2xp c3Q6CisJCQlwYXRoX3BhdHRlcm4JCQkJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8 IHBhdGhfcGF0dGVybl9saXN0ICcsJyBwYXRoX3BhdHRlcm4JeyAkJCA9IGxhcHBlbmQoJDEsICQz KTsgfQorCQk7CisKK3BhdGhfcGF0dGVybjoKKwkJCXBhdGhfcGF0dGVybl9leHByZXNzaW9uCQkJ CQl7ICQkID0gJDE7IH0KKwkJOworCisvKgorICogcGF0aCBwYXR0ZXJuIGV4cHJlc3Npb24KKyAq LworCitwYXRoX3BhdHRlcm5fZXhwcmVzc2lvbjoKKwkJCXBhdGhfdGVybQkJCQkJCQkJeyAkJCA9 ICQxOyB9CisJCQkvKiB8IHBhdGhfbXVsdGlzZXRfYWx0ZXJuYXRpb24gKi8KKwkJCS8qIHwgcGF0 aF9wYXR0ZXJuX3VuaW9uICovCisJCTsKKworcGF0aF90ZXJtOgorCQkJcGF0aF9mYWN0b3IJCQkJ CQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJfCBwYXRoX3Rlcm0gcGF0aF9mYWN0b3IJ CQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMik7IH0KKwkJOworCitwYXRoX2ZhY3RvcjoKKwkJCXBh dGhfcHJpbWFyeSBvcHRfZ3JhcGhfcGF0dGVybl9xdWFudGlmaWVyCisJCQkJeworCQkJCQlHcmFw aEVsZW1lbnRQYXR0ZXJuICpnZXAgPSAoR3JhcGhFbGVtZW50UGF0dGVybiAqKSAkMTsKKworCQkJ CQlnZXAtPnF1YW50aWZpZXIgPSAkMjsKKwkJCQl9CisJCTsKKworcGF0aF9wcmltYXJ5OgorCQkJ JygnIG9wdF9jb2xpZCBvcHRfaXNfbGFiZWxfZXhwcmVzc2lvbiB3aGVyZV9jbGF1c2UgJyknCisJ CQkJeworCQkJCQlHcmFwaEVsZW1lbnRQYXR0ZXJuICpnZXAgPSBtYWtlTm9kZShHcmFwaEVsZW1l bnRQYXR0ZXJuKTsKKworCQkJCQlnZXAtPmtpbmQgPSBWRVJURVhfUEFUVEVSTjsKKwkJCQkJZ2Vw LT52YXJpYWJsZSA9ICQyOworCQkJCQlnZXAtPmxhYmVsZXhwciA9ICQzOworCQkJCQlnZXAtPndo ZXJlQ2xhdXNlID0gJDQ7CisJCQkJCWdlcC0+bG9jYXRpb24gPSBAMTsKKworCQkJCQkkJCA9IChO b2RlICopIGdlcDsKKwkJCQl9CisJCQkvKiBmdWxsIGVkZ2UgcG9pbnRpbmcgbGVmdDogPC1bIHh4 eCBdLSAqLworCQkJfCAnPCcgJy0nICdbJyBvcHRfY29saWQgb3B0X2lzX2xhYmVsX2V4cHJlc3Np b24gd2hlcmVfY2xhdXNlICddJyAnLScKKwkJCQl7CisJCQkJCUdyYXBoRWxlbWVudFBhdHRlcm4g KmdlcCA9IG1ha2VOb2RlKEdyYXBoRWxlbWVudFBhdHRlcm4pOworCisJCQkJCWdlcC0+a2luZCA9 IEVER0VfUEFUVEVSTl9MRUZUOworCQkJCQlnZXAtPnZhcmlhYmxlID0gJDQ7CisJCQkJCWdlcC0+ bGFiZWxleHByID0gJDU7CisJCQkJCWdlcC0+d2hlcmVDbGF1c2UgPSAkNjsKKwkJCQkJZ2VwLT5s b2NhdGlvbiA9IEAxOworCisJCQkJCSQkID0gKE5vZGUgKikgZ2VwOworCQkJCX0KKwkJCS8qIGZ1 bGwgZWRnZSBwb2ludGluZyByaWdodDogLVsgeHh4IF0tPiAqLworCQkJfCAnLScgJ1snIG9wdF9j b2xpZCBvcHRfaXNfbGFiZWxfZXhwcmVzc2lvbiB3aGVyZV9jbGF1c2UgJ10nICctJyAnPicKKwkJ CQl7CisJCQkJCUdyYXBoRWxlbWVudFBhdHRlcm4gKmdlcCA9IG1ha2VOb2RlKEdyYXBoRWxlbWVu dFBhdHRlcm4pOworCisJCQkJCWdlcC0+a2luZCA9IEVER0VfUEFUVEVSTl9SSUdIVDsKKwkJCQkJ Z2VwLT52YXJpYWJsZSA9ICQzOworCQkJCQlnZXAtPmxhYmVsZXhwciA9ICQ0OworCQkJCQlnZXAt PndoZXJlQ2xhdXNlID0gJDU7CisJCQkJCWdlcC0+bG9jYXRpb24gPSBAMTsKKworCQkJCQkkJCA9 IChOb2RlICopIGdlcDsKKwkJCQl9CisJCQl8ICctJyAnWycgb3B0X2NvbGlkIG9wdF9pc19sYWJl bF9leHByZXNzaW9uIHdoZXJlX2NsYXVzZSAnXScgUklHSFRfQVJST1cKKwkJCQl7CisJCQkJCUdy YXBoRWxlbWVudFBhdHRlcm4gKmdlcCA9IG1ha2VOb2RlKEdyYXBoRWxlbWVudFBhdHRlcm4pOwor CisJCQkJCWdlcC0+a2luZCA9IEVER0VfUEFUVEVSTl9SSUdIVDsKKwkJCQkJZ2VwLT52YXJpYWJs ZSA9ICQzOworCQkJCQlnZXAtPmxhYmVsZXhwciA9ICQ0OworCQkJCQlnZXAtPndoZXJlQ2xhdXNl ID0gJDU7CisJCQkJCWdlcC0+bG9jYXRpb24gPSBAMTsKKworCQkJCQkkJCA9IChOb2RlICopIGdl cDsKKwkJCQl9CisJCQkvKiBmdWxsIGVkZ2UgYW55IGRpcmVjdGlvbjogLVsgeHh4IF0tICovCisJ CQl8ICctJyAnWycgb3B0X2NvbGlkIG9wdF9pc19sYWJlbF9leHByZXNzaW9uIHdoZXJlX2NsYXVz ZSAnXScgJy0nCisJCQkJeworCQkJCQlHcmFwaEVsZW1lbnRQYXR0ZXJuICpnZXAgPSBtYWtlTm9k ZShHcmFwaEVsZW1lbnRQYXR0ZXJuKTsKKworCQkJCQlnZXAtPmtpbmQgPSBFREdFX1BBVFRFUk5f QU5ZOworCQkJCQlnZXAtPnZhcmlhYmxlID0gJDM7CisJCQkJCWdlcC0+bGFiZWxleHByID0gJDQ7 CisJCQkJCWdlcC0+d2hlcmVDbGF1c2UgPSAkNTsKKwkJCQkJZ2VwLT5sb2NhdGlvbiA9IEAxOwor CisJCQkJCSQkID0gKE5vZGUgKikgZ2VwOworCQkJCX0KKwkJCS8qIGFiYnJldmlhdGVkIGVkZ2Ug cGF0dGVybnMgKi8KKwkJCXwgJzwnICctJworCQkJCXsKKwkJCQkJR3JhcGhFbGVtZW50UGF0dGVy biAqZ2VwID0gbWFrZU5vZGUoR3JhcGhFbGVtZW50UGF0dGVybik7CisKKwkJCQkJZ2VwLT5raW5k ID0gRURHRV9QQVRURVJOX0xFRlQ7CisJCQkJCWdlcC0+bG9jYXRpb24gPSBAMTsKKworCQkJCQkk JCA9IChOb2RlICopIGdlcDsKKwkJCQl9CisJCQl8ICctJyAnPicKKwkJCQl7CisJCQkJCUdyYXBo RWxlbWVudFBhdHRlcm4gKmdlcCA9IG1ha2VOb2RlKEdyYXBoRWxlbWVudFBhdHRlcm4pOworCisJ CQkJCWdlcC0+a2luZCA9IEVER0VfUEFUVEVSTl9SSUdIVDsKKwkJCQkJZ2VwLT5sb2NhdGlvbiA9 IEAxOworCisJCQkJCSQkID0gKE5vZGUgKikgZ2VwOworCQkJCX0KKwkJCXwgUklHSFRfQVJST1cK KwkJCQl7CisJCQkJCUdyYXBoRWxlbWVudFBhdHRlcm4gKmdlcCA9IG1ha2VOb2RlKEdyYXBoRWxl bWVudFBhdHRlcm4pOworCisJCQkJCWdlcC0+a2luZCA9IEVER0VfUEFUVEVSTl9SSUdIVDsKKwkJ CQkJZ2VwLT5sb2NhdGlvbiA9IEAxOworCisJCQkJCSQkID0gKE5vZGUgKikgZ2VwOworCQkJCX0K KwkJCXwgJy0nCisJCQkJeworCQkJCQlHcmFwaEVsZW1lbnRQYXR0ZXJuICpnZXAgPSBtYWtlTm9k ZShHcmFwaEVsZW1lbnRQYXR0ZXJuKTsKKworCQkJCQlnZXAtPmtpbmQgPSBFREdFX1BBVFRFUk5f QU5ZOworCQkJCQlnZXAtPmxvY2F0aW9uID0gQDE7CisKKwkJCQkJJCQgPSAoTm9kZSAqKSBnZXA7 CisJCQkJfQorCQkJfCAnKCcgcGF0aF9wYXR0ZXJuX2V4cHJlc3Npb24gd2hlcmVfY2xhdXNlICcp JworCQkJCXsKKwkJCQkJR3JhcGhFbGVtZW50UGF0dGVybiAqZ2VwID0gbWFrZU5vZGUoR3JhcGhF bGVtZW50UGF0dGVybik7CisKKwkJCQkJZ2VwLT5raW5kID0gUEFSRU5fRVhQUjsKKwkJCQkJZ2Vw LT5zdWJleHByID0gJDI7CisJCQkJCWdlcC0+d2hlcmVDbGF1c2UgPSAkMzsKKwkJCQkJZ2VwLT5s b2NhdGlvbiA9IEAxOworCisJCQkJCSQkID0gKE5vZGUgKikgZ2VwOworCQkJCX0KKwkJOworCitv cHRfY29saWQ6CisJCQlDb2xJZAkJCXsgJCQgPSAkMTsgfQorCQkJfCAvKkVNUFRZKi8JCXsgJCQg PSBOVUxMOyB9CisJCTsKKworb3B0X2lzX2xhYmVsX2V4cHJlc3Npb246CisJCQlJUyBsYWJlbF9l eHByZXNzaW9uCQl7ICQkID0gJDI7IH0KKwkJCXwgJzonIGxhYmVsX2V4cHJlc3Npb24JeyAkJCA9 ICQyOyB9CisJCQl8IC8qRU1QVFkqLwkJCQl7ICQkID0gTlVMTDsgfQorCQk7CisKKy8qCisgKiBn cmFwaCBwYXR0ZXJuIHF1YW50aWZpZXIKKyAqLworCitvcHRfZ3JhcGhfcGF0dGVybl9xdWFudGlm aWVyOgorCQkJJ3snIEljb25zdCAnfScJCQkJCXsgJCQgPSBsaXN0X21ha2UyX2ludCgkMiwgJDIp OyB9CisJCQl8ICd7JyAnLCcgSWNvbnN0ICd9JwkJCXsgJCQgPSBsaXN0X21ha2UyX2ludCgwLCAk Myk7IH0KKwkJCXwgJ3snIEljb25zdCAnLCcgSWNvbnN0ICd9JwkJeyAkJCA9IGxpc3RfbWFrZTJf aW50KCQyLCAkNCk7IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJeyAkJCA9IE5VTEw7IH0KKwkJOwor CisvKgorICogbGFiZWwgZXhwcmVzc2lvbgorICovCisKK2xhYmVsX2V4cHJlc3Npb246CisJCQls YWJlbF90ZXJtCisJCQl8IGxhYmVsX2Rpc2p1bmN0aW9uCisJCTsKKworbGFiZWxfZGlzanVuY3Rp b246CisJCQlsYWJlbF9leHByZXNzaW9uICd8JyBsYWJlbF90ZXJtCisJCQkJeyAkJCA9IG1ha2VP ckV4cHIoJDEsICQzLCBAMik7IH0KKwkJOworCitsYWJlbF90ZXJtOgorCQkJbmFtZQorCQkJCXsg JCQgPSBtYWtlQ29sdW1uUmVmKCQxLCBOSUwsIEAxLCB5eXNjYW5uZXIpOyB9CisJCTsKKworCiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKICAqCiAgKgl0YXJnZXQgbGlzdCBmb3IgU0VMRUNUCkBAIC0x NzU2NCw2ICsxODIzNCw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgREVMSU1JVEVSUwog CQkJfCBERVBFTkRTCiAJCQl8IERFUFRICisJCQl8IERFU1RJTkFUSU9OCiAJCQl8IERFVEFDSAog CQkJfCBESUNUSU9OQVJZCiAJCQl8IERJU0FCTEVfUApAQCAtMTc1NzMsNiArMTgyNDQsNyBAQCB1 bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IERPVUJMRV9QCiAJCQl8IERST1AKIAkJCXwgRUFDSAor CQkJfCBFREdFCiAJCQl8IEVNUFRZX1AKIAkJCXwgRU5BQkxFX1AKIAkJCXwgRU5DT0RJTkcKQEAg LTE3NjAyLDYgKzE4Mjc0LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBHRU5FUkFURUQK IAkJCXwgR0xPQkFMCiAJCQl8IEdSQU5URUQKKwkJCXwgR1JBUEgKIAkJCXwgR1JPVVBTCiAJCQl8 IEhBTkRMRVIKIAkJCXwgSEVBREVSX1AKQEAgLTE3NjY2LDYgKzE4MzM5LDcgQEAgdW5yZXNlcnZl ZF9rZXl3b3JkOgogCQkJfCBORktDCiAJCQl8IE5GS0QKIAkJCXwgTk8KKwkJCXwgTk9ERQogCQkJ fCBOT1JNQUxJWkVECiAJCQl8IE5PVEhJTkcKIAkJCXwgTk9USUZZCkBAIC0xNzcwNyw2ICsxODM4 MSw4IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgUFJPQ0VEVVJFCiAJCQl8IFBST0NFRFVS RVMKIAkJCXwgUFJPR1JBTQorCQkJfCBQUk9QRVJUSUVTCisJCQl8IFBST1BFUlRZCiAJCQl8IFBV QkxJQ0FUSU9OCiAJCQl8IFFVT1RFCiAJCQl8IFFVT1RFUwpAQCAtMTc3MTgsNiArMTgzOTQsNyBA QCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFJFRkVSRU5DSU5HCiAJCQl8IFJFRlJFU0gKIAkJ CXwgUkVJTkRFWAorCQkJfCBSRUxBVElPTlNISVAKIAkJCXwgUkVMQVRJVkVfUAogCQkJfCBSRUxF QVNFCiAJCQl8IFJFTkFNRQpAQCAtMTc4MDcsNiArMTg0ODQsNyBAQCB1bnJlc2VydmVkX2tleXdv cmQ6CiAJCQl8IFZBTFVFX1AKIAkJCXwgVkFSWUlORwogCQkJfCBWRVJTSU9OX1AKKwkJCXwgVkVS VEVYCiAJCQl8IFZJRVcKIAkJCXwgVklFV1MKIAkJCXwgVk9MQVRJTEUKQEAgLTE3ODQ1LDYgKzE4 NTIzLDcgQEAgY29sX25hbWVfa2V5d29yZDoKIAkJCXwgRVhJU1RTCiAJCQl8IEVYVFJBQ1QKIAkJ CXwgRkxPQVRfUAorCQkJfCBHUkFQSF9UQUJMRQogCQkJfCBHUkVBVEVTVAogCQkJfCBHUk9VUElO RwogCQkJfCBJTk9VVApAQCAtMTgxMzYsNiArMTg4MTUsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6 CiAJCQl8IERFUEVORFMKIAkJCXwgREVQVEgKIAkJCXwgREVTQworCQkJfCBERVNUSU5BVElPTgog CQkJfCBERVRBQ0gKIAkJCXwgRElDVElPTkFSWQogCQkJfCBESVNBQkxFX1AKQEAgLTE4MTQ3LDYg KzE4ODI3LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBET1VCTEVfUAogCQkJfCBEUk9Q CiAJCQl8IEVBQ0gKKwkJCXwgRURHRQogCQkJfCBFTFNFCiAJCQl8IEVNUFRZX1AKIAkJCXwgRU5B QkxFX1AKQEAgLTE4MTg0LDYgKzE4ODY1LDggQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBH RU5FUkFURUQKIAkJCXwgR0xPQkFMCiAJCQl8IEdSQU5URUQKKwkJCXwgR1JBUEgKKwkJCXwgR1JB UEhfVEFCTEUKIAkJCXwgR1JFQVRFU1QKIAkJCXwgR1JPVVBJTkcKIAkJCXwgR1JPVVBTCkBAIC0x ODI3OSw2ICsxODk2Miw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgTkZLQwogCQkJfCBO RktECiAJCQl8IE5PCisJCQl8IE5PREUKIAkJCXwgTk9ORQogCQkJfCBOT1JNQUxJWkUKIAkJCXwg Tk9STUFMSVpFRApAQCAtMTgzMzMsNiArMTkwMTcsOCBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJ CQl8IFBST0NFRFVSRQogCQkJfCBQUk9DRURVUkVTCiAJCQl8IFBST0dSQU0KKwkJCXwgUFJPUEVS VElFUworCQkJfCBQUk9QRVJUWQogCQkJfCBQVUJMSUNBVElPTgogCQkJfCBRVU9URQogCQkJfCBR VU9URVMKQEAgLTE4MzQ2LDYgKzE5MDMyLDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBS RUZFUkVOQ0lORwogCQkJfCBSRUZSRVNICiAJCQl8IFJFSU5ERVgKKwkJCXwgUkVMQVRJT05TSElQ CiAJCQl8IFJFTEFUSVZFX1AKIAkJCXwgUkVMRUFTRQogCQkJfCBSRU5BTUUKQEAgLTE4NDYwLDYg KzE5MTQ3LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBWQVJJQURJQwogCQkJfCBWRVJC T1NFCiAJCQl8IFZFUlNJT05fUAorCQkJfCBWRVJURVgKIAkJCXwgVklFVwogCQkJfCBWSUVXUwog CQkJfCBWT0xBVElMRQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL21lc29uLmJ1aWxk IGIvc3JjL2JhY2tlbmQvcGFyc2VyL21lc29uLmJ1aWxkCmluZGV4IDU3M2Q3MGIzZDEuLmNiY2Zh MDdiNDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9tZXNvbi5idWlsZAorKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvbWVzb24uYnVpbGQKQEAgLTEwLDYgKzEwLDcgQEAgYmFja2VuZF9z b3VyY2VzICs9IGZpbGVzKAogICAncGFyc2VfZW5yLmMnLAogICAncGFyc2VfZXhwci5jJywKICAg J3BhcnNlX2Z1bmMuYycsCisgICdwYXJzZV9ncmFwaHRhYmxlLmMnLAogICAncGFyc2VfanNvbnRh YmxlLmMnLAogICAncGFyc2VfbWVyZ2UuYycsCiAgICdwYXJzZV9ub2RlLmMnLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2FnZy5jCmluZGV4IGJlZTdkODM0NmEuLmJmM2VkNjA0NDkgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf YWdnLmMKQEAgLTU3Nyw2ICs1NzcsMTQgQEAgY2hlY2tfYWdnbGV2ZWxzX2FuZF9jb25zdHJhaW50 cyhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpCiAJCQllcnJraW5kID0gdHJ1ZTsKIAkJ CWJyZWFrOwogCisJCWNhc2UgRVhQUl9LSU5EX1BST1BHUkFQSF9QUk9QRVJUWToKKwkJCWlmIChp c0FnZykKKwkJCQllcnIgPSBfKCJhZ2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBp biBwcm9wZXJ0eSBkZWZpbml0aW9uIGV4cHJlc3Npb25zIik7CisJCQllbHNlCisJCQkJZXJyID0g XygiZ3JvdXBpbmcgb3BlcmF0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gcHJvcGVydHkgZGVmaW5p dGlvbiBleHByZXNzaW9ucyIpOworCisJCQlicmVhazsKKwogCQkJLyoKIAkJCSAqIFRoZXJlIGlz IGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQogCQkJICog Y29tcGlsZXIgd2lsbCB3YXJuIGlmIHdlIGFkZCBhIG5ldyBQYXJzZUV4cHJLaW5kIHdpdGhvdXQK QEAgLTk2Nyw2ICs5NzUsOSBAQCB0cmFuc2Zvcm1XaW5kb3dGdW5jQ2FsbChQYXJzZVN0YXRlICpw c3RhdGUsIFdpbmRvd0Z1bmMgKndmdW5jLAogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgog CQkJZXJya2luZCA9IHRydWU7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfUFJPUEdSQVBI X1BST1BFUlRZOgorCQkJZXJyID0gXygid2luZG93IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQg aW4gcHJvcGVydHkgZGVmaW5pdGlvbiBleHByZXNzaW9ucyIpOworCQkJYnJlYWs7CiAKIAkJCS8q CiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28g dGhhdCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYwppbmRleCA4MTE4MDM2NDk1Li42M2Y1 ZGQ1NTU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jCkBAIC0zNSw2ICszNSw3IEBACiAj aW5jbHVkZSAicGFyc2VyL3BhcnNlX2NvbGxhdGUuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2Vf ZXhwci5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9mdW5jLmgiCisjaW5jbHVkZSAicGFyc2Vy L3BhcnNlX2dyYXBodGFibGUuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2Vfb3Blci5oIgogI2lu Y2x1ZGUgInBhcnNlci9wYXJzZV9yZWxhdGlvbi5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90 YXJnZXQuaCIKQEAgLTY3LDYgKzY4LDggQEAgc3RhdGljIFBhcnNlTmFtZXNwYWNlSXRlbSAqdHJh bnNmb3JtUmFuZ2VGdW5jdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJCQkgIFJh bmdlRnVuY3Rpb24gKnIpOwogc3RhdGljIFBhcnNlTmFtZXNwYWNlSXRlbSAqdHJhbnNmb3JtUmFu Z2VUYWJsZUZ1bmMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJCQkJICAgUmFuZ2VUYWJs ZUZ1bmMgKnJ0Zik7CitzdGF0aWMgUGFyc2VOYW1lc3BhY2VJdGVtICp0cmFuc2Zvcm1SYW5nZUdy YXBoVGFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJCQkJCQkJCQkJCVJhbmdlR3JhcGhUYWJs ZSAqcmd0KTsKIHN0YXRpYyBUYWJsZVNhbXBsZUNsYXVzZSAqdHJhbnNmb3JtUmFuZ2VUYWJsZVNh bXBsZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJCQkJUmFuZ2VUYWJsZVNhbXBsZSAq cnRzKTsKIHN0YXRpYyBQYXJzZU5hbWVzcGFjZUl0ZW0gKmdldE5TSXRlbUZvclNwZWNpYWxSZWxh dGlvblR5cGVzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKQEAgLTkwMCw2ICs5MDMsODAgQEAgdHJhbnNm b3JtUmFuZ2VUYWJsZUZ1bmMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSYW5nZVRhYmxlRnVuYyAqcnRm KQogCQkJCQkJCQkJCSAgdGYsIHJ0Zi0+YWxpYXMsIGlzX2xhdGVyYWwsIHRydWUpOwogfQogCisv KgorICogdHJhbnNmb3JtUmFuZ2VHcmFwaFRhYmxlIC0tIHRyYW5zZm9ybSBhIEdSQVBIX1RBQkxF IGNsYXVzZQorICovCitzdGF0aWMgUGFyc2VOYW1lc3BhY2VJdGVtICoKK3RyYW5zZm9ybVJhbmdl R3JhcGhUYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIFJhbmdlR3JhcGhUYWJsZSAqcmd0KQorewor CVJlbGF0aW9uCXJlbDsKKwlPaWQJCQlncmFwaGlkOworCUdyYXBoVGFibGVQYXJzZVN0YXRlICpn cHN0YXRlID0gcGFsbG9jMF9vYmplY3QoR3JhcGhUYWJsZVBhcnNlU3RhdGUpOworCU5vZGUJICAg KmdwOworCUxpc3QJICAgKmNvbHVtbnMgPSBOSUw7CisJTGlzdAkgICAqY29sbmFtZXMgPSBOSUw7 CisJTGlzdENlbGwgICAqbGM7CisJaW50CQkJcmVzbm8gPSAwOworCisJcmVsID0gcGFyc2VyT3Bl blRhYmxlKHBzdGF0ZSwgcmd0LT5ncmFwaF9uYW1lLCBBY2Nlc3NTaGFyZUxvY2spOworCWlmIChy ZWwtPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1BST1BHUkFQSCkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQllcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCWVycm1zZygi XCIlc1wiIGlzIG5vdCBhIHByb3BlcnR5IGdyYXBoIiwKKwkJCQkJICAgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocmVsKSksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgcmd0LT5ncmFw aF9uYW1lLT5sb2NhdGlvbikpOworCisJZ3JhcGhpZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsK KworCWdwc3RhdGUtPmdyYXBoaWQgPSBncmFwaGlkOworCisJcHN0YXRlLT5wX3Bvc3RfY29sdW1u cmVmX2hvb2sgPSBncmFwaF90YWJsZV9wcm9wZXJ0eV9yZWZlcmVuY2U7CisJcHN0YXRlLT5wX3Jl Zl9ob29rX3N0YXRlID0gZ3BzdGF0ZTsKKwlBc3NlcnQoIXBzdGF0ZS0+cF9sYXRlcmFsX2FjdGl2 ZSk7CisJcHN0YXRlLT5wX2xhdGVyYWxfYWN0aXZlID0gdHJ1ZTsKKworCWdwID0gdHJhbnNmb3Jt R3JhcGhQYXR0ZXJuKHBzdGF0ZSwgZ3BzdGF0ZSwgcmd0LT5ncmFwaF9wYXR0ZXJuKTsKKworCWZv cmVhY2gobGMsIHJndC0+Y29sdW1ucykKKwl7CisJCVJlc1RhcmdldCAgKnJ0ID0gbGZpcnN0X25v ZGUoUmVzVGFyZ2V0LCBsYyk7CisJCU5vZGUJICAgKmNvbGV4cHI7CisJCVRhcmdldEVudHJ5ICp0 ZTsKKwkJY2hhcgkgICAqY29sbmFtZTsKKworCQljb2xleHByID0gdHJhbnNmb3JtRXhwcihwc3Rh dGUsIHJ0LT52YWwsIEVYUFJfS0lORF9TRUxFQ1RfVEFSR0VUKTsKKworCQlpZiAocnQtPm5hbWUp CisJCQljb2xuYW1lID0gcnQtPm5hbWU7CisJCWVsc2UKKwkJeworCQkJaWYgKElzQShjb2xleHBy LCBHcmFwaFByb3BlcnR5UmVmKSkKKwkJCQljb2xuYW1lID0gZ2V0X3Byb3BncmFwaF9wcm9wZXJ0 eV9uYW1lKGNhc3ROb2RlKEdyYXBoUHJvcGVydHlSZWYsIGNvbGV4cHIpLT5wcm9waWQpOworCQkJ ZWxzZQorCQkJeworCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lO VEFYX0VSUk9SKSwKKwkJCQkJCWVycm1zZygiY29tcGxleCBncmFwaCB0YWJsZSBjb2x1bW4gbXVz dCBzcGVjaWZ5IGFuIGV4cGxpY2l0IGNvbHVtbiBuYW1lIiksCisJCQkJCQlwYXJzZXJfZXJycG9z aXRpb24ocHN0YXRlLCBydC0+bG9jYXRpb24pKTsKKwkJCQljb2xuYW1lID0gTlVMTDsKKwkJCX0K KwkJfQorCisJCWNvbG5hbWVzID0gbGFwcGVuZChjb2xuYW1lcywgbWFrZVN0cmluZyhjb2xuYW1l KSk7CisKKwkJdGUgPSBtYWtlVGFyZ2V0RW50cnkoKEV4cHIgKikgY29sZXhwciwgKytyZXNubywg Y29sbmFtZSwgZmFsc2UpOworCQljb2x1bW5zID0gbGFwcGVuZChjb2x1bW5zLCB0ZSk7CisJfQor CisJdGFibGVfY2xvc2UocmVsLCBOb0xvY2spOworCisJcHN0YXRlLT5wX3ByZV9jb2x1bW5yZWZf aG9vayA9IE5VTEw7CisJcHN0YXRlLT5wX3JlZl9ob29rX3N0YXRlID0gTlVMTDsKKwlwc3RhdGUt PnBfbGF0ZXJhbF9hY3RpdmUgPSBmYWxzZTsKKworCXJldHVybiBhZGRSYW5nZVRhYmxlRW50cnlG b3JHcmFwaFRhYmxlKHBzdGF0ZSwgZ3JhcGhpZCwgY2FzdE5vZGUoR3JhcGhQYXR0ZXJuLCBncCks IGNvbHVtbnMsIGNvbG5hbWVzLCByZ3QtPmFsaWFzLCBmYWxzZSwgdHJ1ZSk7Cit9CisKIC8qCiAg KiB0cmFuc2Zvcm1SYW5nZVRhYmxlU2FtcGxlIC0tLSB0cmFuc2Zvcm0gYSBUQUJMRVNBTVBMRSBj bGF1c2UKICAqCkBAIC0xMTIzLDYgKzEyMDAsMTggQEAgdHJhbnNmb3JtRnJvbUNsYXVzZUl0ZW0o UGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpuLAogCQlydHItPnJ0aW5kZXggPSBuc2l0ZW0tPnBf cnRpbmRleDsKIAkJcmV0dXJuIChOb2RlICopIHJ0cjsKIAl9CisJZWxzZSBpZiAoSXNBKG4sIFJh bmdlR3JhcGhUYWJsZSkpCisJeworCQlSYW5nZVRibFJlZiAqcnRyOworCQlQYXJzZU5hbWVzcGFj ZUl0ZW0gKm5zaXRlbTsKKworCQluc2l0ZW0gPSB0cmFuc2Zvcm1SYW5nZUdyYXBoVGFibGUocHN0 YXRlLCAoUmFuZ2VHcmFwaFRhYmxlICopIG4pOworCQkqdG9wX25zaXRlbSA9IG5zaXRlbTsKKwkJ Km5hbWVzcGFjZSA9IGxpc3RfbWFrZTEobnNpdGVtKTsKKwkJcnRyID0gbWFrZU5vZGUoUmFuZ2VU YmxSZWYpOworCQlydHItPnJ0aW5kZXggPSBuc2l0ZW0tPnBfcnRpbmRleDsKKwkJcmV0dXJuIChO b2RlICopIHJ0cjsKKwl9CiAJZWxzZSBpZiAoSXNBKG4sIFJhbmdlVGFibGVTYW1wbGUpKQogCXsK IAkJLyogVEFCTEVTQU1QTEUgY2xhdXNlICh3cmFwcGluZyBzb21lIG90aGVyIHZhbGlkIEZST00g bm9kZSkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMg Yi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY29sbGF0ZS5jCmluZGV4IDQ0NTI5YmI0OWUuLjMz YTFmM2YyNDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYwpAQCAtNTcxLDYgKzU3MSwx MyBAQCBhc3NpZ25fY29sbGF0aW9uc193YWxrZXIoTm9kZSAqbm9kZSwgYXNzaWduX2NvbGxhdGlv bnNfY29udGV4dCAqY29udGV4dCkKIAkJCWxvY2F0aW9uID0gZXhwckxvY2F0aW9uKG5vZGUpOwog CQkJYnJlYWs7CiAKKwkJY2FzZSBUX0dyYXBoUHJvcGVydHlSZWY6CisJCQkvKiBGSVhNRSAqLwor CQkJY29sbGF0aW9uID0gREVGQVVMVF9DT0xMQVRJT05fT0lEOworCQkJc3RyZW5ndGggPSBDT0xM QVRFX0lNUExJQ0lUOworCQkJbG9jYXRpb24gPSAtMTsKKwkJCWJyZWFrOworCiAJCWRlZmF1bHQ6 CiAJCQl7CiAJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHBy LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDU2ZTQxM2RhOWYuLjM4 MjIyZTc0NWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtNTc3LDYgKzU3Nyw3IEBAIHRy YW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikKIAkJ Y2FzZSBFWFBSX0tJTkRfQ09QWV9XSEVSRToKIAkJY2FzZSBFWFBSX0tJTkRfR0VORVJBVEVEX0NP TFVNTjoKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKKwkJY2FzZSBFWFBSX0tJTkRfUFJP UEdSQVBIX1BST1BFUlRZOgogCQkJLyogb2theSAqLwogCQkJYnJlYWs7CiAKQEAgLTE4NjAsNiAr MTg2MSw5IEBAIHRyYW5zZm9ybVN1YkxpbmsoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTdWJMaW5rICpz dWJsaW5rKQogCQljYXNlIEVYUFJfS0lORF9HRU5FUkFURURfQ09MVU1OOgogCQkJZXJyID0gXygi Y2Fubm90IHVzZSBzdWJxdWVyeSBpbiBjb2x1bW4gZ2VuZXJhdGlvbiBleHByZXNzaW9uIik7CiAJ CQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfUFJPUEdSQVBIX1BST1BFUlRZOgorCQkJZXJyID0g XygiY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBwcm9wZXJ0eSBkZWZpbml0aW9uIGV4cHJlc3Npb24i KTsKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBk ZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCkBAIC0zMTk5LDYgKzMyMDMsOCBAQCBQYXJz ZUV4cHJLaW5kTmFtZShQYXJzZUV4cHJLaW5kIGV4cHJLaW5kKQogCQkJcmV0dXJuICJHRU5FUkFU RUQgQVMiOwogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgogCQkJcmV0dXJuICJDWUNMRSI7 CisJCWNhc2UgRVhQUl9LSU5EX1BST1BHUkFQSF9QUk9QRVJUWToKKwkJCXJldHVybiAicHJvcGVy dHkgZGVmaW5pdGlvbiBleHByZXNzaW9uIjsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVu dGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9mdW5jLmMKaW5kZXggOWIyMzM0NGEzYi4uNjQwOWRkZjE4MSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf ZnVuYy5jCkBAIC0yNjU4LDYgKzI2NTgsOSBAQCBjaGVja19zcmZfY2FsbF9wbGFjZW1lbnQoUGFy c2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpsYXN0X3NyZiwgaW50IGxvY2F0aW9uKQogCQljYXNlIEVY UFJfS0lORF9DWUNMRV9NQVJLOgogCQkJZXJya2luZCA9IHRydWU7CiAJCQlicmVhazsKKwkJY2Fz ZSBFWFBSX0tJTkRfUFJPUEdSQVBIX1BST1BFUlRZOgorCQkJZXJyID0gXygic2V0LXJldHVybmlu ZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIHByb3BlcnR5IGRlZmluaXRpb24gZXhwcmVz c2lvbnMiKTsKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxs eSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZ3JhcGh0YWJsZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2dyYXBodGFibGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4xYTk3 MTY4NzAyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2dyYXBo dGFibGUuYwpAQCAtMCwwICsxLDIwOSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGFy c2VfZ3JhcGh0YWJsZS5jCisgKgkgIHBhcnNpbmcgb2YgR1JBUEhfVEFCTEUKKyAqCisgKiBQb3J0 aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUg VW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkg IHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ncmFwaHRhYmxlLmMKKyAqCisgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImFjY2Vzcy9n ZW5hbS5oIgorI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNsdWRlICJhY2Nl c3MvdGFibGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb3BncmFwaF9sYWJlbC5oIgorI2lu Y2x1ZGUgImNhdGFsb2cvcGdfcHJvcGdyYXBoX3Byb3BlcnR5LmgiCisjaW5jbHVkZSAibWlzY2Fk bWluLmgiCisjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCisjaW5jbHVkZSAicGFyc2VyL3Bh cnNlX2NvbGxhdGUuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfZXhwci5oIgorI2luY2x1ZGUg InBhcnNlci9wYXJzZV9ncmFwaHRhYmxlLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX25vZGUu aCIKKyNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNo ZS5oIgorI2luY2x1ZGUgInV0aWxzL3JlbGNhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2Fj aGUuaCIKKworCisvKgorICogUmVzb2x2ZSBhIHByb3BlcnR5IHJlZmVyZW5jZS4KKyAqLworTm9k ZSAqCitncmFwaF90YWJsZV9wcm9wZXJ0eV9yZWZlcmVuY2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBD b2x1bW5SZWYgKmNyZWYsIE5vZGUgKnZhcikKK3sKKwlHcmFwaFRhYmxlUGFyc2VTdGF0ZSAqZ3Bz dGF0ZSA9IHBzdGF0ZS0+cF9yZWZfaG9va19zdGF0ZTsKKworCWlmIChsaXN0X2xlbmd0aChjcmVm LT5maWVsZHMpID09IDIpCisJeworCQlOb2RlCSAgICpmaWVsZDEgPSBsaW5pdGlhbChjcmVmLT5m aWVsZHMpOworCQlOb2RlCSAgICpmaWVsZDIgPSBsc2Vjb25kKGNyZWYtPmZpZWxkcyk7CisJCWNo YXIJICAgKmVsdmFybmFtZTsKKwkJY2hhcgkgICAqcHJvcG5hbWU7CisKKwkJZWx2YXJuYW1lID0g c3RyVmFsKGZpZWxkMSk7CisJCXByb3BuYW1lID0gc3RyVmFsKGZpZWxkMik7CisKKwkJaWYgKGxp c3RfbWVtYmVyKGdwc3RhdGUtPnZhcmlhYmxlcywgZmllbGQxKSkKKwkJeworCQkJR3JhcGhQcm9w ZXJ0eVJlZiAqZ3ByID0gbWFrZU5vZGUoR3JhcGhQcm9wZXJ0eVJlZik7CisJCQlPaWQJCQlwcm9w aWQ7CisKKwkJCXByb3BpZCA9IEdldFN5c0NhY2hlT2lkMihQUk9QR1JBUEhQUk9QTkFNRSwgQW51 bV9wZ19wcm9wZ3JhcGhfcHJvcGVydHlfb2lkLCBPYmplY3RJZEdldERhdHVtKGdwc3RhdGUtPmdy YXBoaWQpLCBDU3RyaW5nR2V0RGF0dW0ocHJvcG5hbWUpKTsKKwkJCWlmICghcHJvcGlkKQorCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJ CQkJCWVycm1zZygicHJvcGVydHkgXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwgcHJvcG5hbWUpKTsK KworCQkJZ3ByLT5sb2NhdGlvbiA9IGNyZWYtPmxvY2F0aW9uOworCQkJZ3ByLT5lbHZhcm5hbWUg PSBlbHZhcm5hbWU7CisJCQlncHItPnByb3BpZCA9IHByb3BpZDsKKwkJCWdwci0+dHlwZUlkID0g R2V0U3lzQ2FjaGVPaWQxKFBST1BHUkFQSFBST1BPSUQsIEFudW1fcGdfcHJvcGdyYXBoX3Byb3Bl cnR5X3BncHR5cGlkLCBPYmplY3RJZEdldERhdHVtKHByb3BpZCkpOworCisJCQlyZXR1cm4gKE5v ZGUgKikgZ3ByOworCQl9CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBUcmFuc2Zv cm0gYSBsYWJlbCBleHByZXNzaW9uLgorICovCitzdGF0aWMgTm9kZSAqCit0cmFuc2Zvcm1MYWJl bEV4cHIoR3JhcGhUYWJsZVBhcnNlU3RhdGUgKmdwc3RhdGUsIE5vZGUgKmxhYmVsZXhwcikKK3sK KwlOb2RlCSAgICpyZXN1bHQ7CisKKwlpZiAobGFiZWxleHByID09IE5VTEwpCisJCXJldHVybiBO VUxMOworCisJY2hlY2tfc3RhY2tfZGVwdGgoKTsKKworCXN3aXRjaCAobm9kZVRhZyhsYWJlbGV4 cHIpKQorCXsKKwkJY2FzZSBUX0NvbHVtblJlZjoKKwkJCXsKKwkJCQlDb2x1bW5SZWYgICpjcmVm ID0gKENvbHVtblJlZiAqKSBsYWJlbGV4cHI7CisJCQkJY29uc3QgY2hhciAqbGFiZWxuYW1lOwor CQkJCU9pZAkJCWxhYmVsaWQ7CisJCQkJR3JhcGhMYWJlbFJlZiAqbHJlZjsKKworCQkJCUFzc2Vy dChsaXN0X2xlbmd0aChjcmVmLT5maWVsZHMpID09IDEpOworCQkJCWxhYmVsbmFtZSA9IHN0clZh bChsaW5pdGlhbChjcmVmLT5maWVsZHMpKTsKKworCQkJCWxhYmVsaWQgPSBHZXRTeXNDYWNoZU9p ZDIoUFJPUEdSQVBITEFCRUxOQU1FLCBBbnVtX3BnX3Byb3BncmFwaF9sYWJlbF9vaWQsIE9iamVj dElkR2V0RGF0dW0oZ3BzdGF0ZS0+Z3JhcGhpZCksIENTdHJpbmdHZXREYXR1bShsYWJlbG5hbWUp KTsKKwkJCQlpZiAoIWxhYmVsaWQpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29k ZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkJCWVycm1zZygibGFiZWwgXCIlc1wi IGRvZXMgbm90IGV4aXN0IGluIHByb3BlcnR5IGdyYXBoIFwiJXNcIiIsIGxhYmVsbmFtZSwgZ2V0 X3JlbF9uYW1lKGdwc3RhdGUtPmdyYXBoaWQpKSk7CisKKwkJCQlscmVmID0gbWFrZU5vZGUoR3Jh cGhMYWJlbFJlZik7CisJCQkJbHJlZi0+bGFiZWxpZCA9IGxhYmVsaWQ7CisJCQkJbHJlZi0+bG9j YXRpb24gPSBjcmVmLT5sb2NhdGlvbjsKKworCQkJCXJlc3VsdCA9IChOb2RlICopIGxyZWY7CisJ CQkJYnJlYWs7CisJCQl9CisKKwkJY2FzZSBUX0Jvb2xFeHByOgorCQkJeworCQkJCUJvb2xFeHBy ICAgKmJlID0gKEJvb2xFeHByICopIGxhYmVsZXhwcjsKKwkJCQlMaXN0Q2VsbCAgICpsYzsKKwkJ CQlMaXN0CSAgICphcmdzID0gTklMOworCisJCQkJZm9yZWFjaChsYywgYmUtPmFyZ3MpCisJCQkJ eworCQkJCQlOb2RlCSAgICphcmcgPSAoTm9kZSAqKSBsZmlyc3QobGMpOworCisJCQkJCWFyZyA9 IHRyYW5zZm9ybUxhYmVsRXhwcihncHN0YXRlLCBhcmcpOworCQkJCQlhcmdzID0gbGFwcGVuZChh cmdzLCBhcmcpOworCQkJCX0KKworCQkJCXJlc3VsdCA9IChOb2RlICopIG1ha2VCb29sRXhwcihi ZS0+Ym9vbG9wLCBhcmdzLCBiZS0+bG9jYXRpb24pOworCQkJCWJyZWFrOworCQkJfQorCisJCWRl ZmF1bHQ6CisJCQkvKiBzaG91bGQgbm90IHJlYWNoIGhlcmUgKi8KKwkJCWVsb2coRVJST1IsICJ1 bnJlY29nbml6ZWQgbm9kZSB0eXBlOiAlZCIsIChpbnQpIG5vZGVUYWcobGFiZWxleHByKSk7CisJ CQlyZXN1bHQgPSBOVUxMOwkJLyoga2VlcCBjb21waWxlciBxdWlldCAqLworCQkJYnJlYWs7CisJ fQorCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIFRyYW5zZm9ybSBhIEdyYXBoRWxlbWVu dFBhdHRlcm4uCisgKi8KK3N0YXRpYyBOb2RlICoKK3RyYW5zZm9ybUdyYXBoRWxlbWVudFBhdHRl cm4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBHcmFwaFRhYmxlUGFyc2VTdGF0ZSAqZ3BzdGF0ZSwgR3Jh cGhFbGVtZW50UGF0dGVybiAqZ2VwKQoreworCWlmIChnZXAtPnZhcmlhYmxlKQorCQlncHN0YXRl LT52YXJpYWJsZXMgPSBsYXBwZW5kKGdwc3RhdGUtPnZhcmlhYmxlcywgbWFrZVN0cmluZyhwc3Ry ZHVwKGdlcC0+dmFyaWFibGUpKSk7CisKKwlnZXAtPmxhYmVsZXhwciA9IHRyYW5zZm9ybUxhYmVs RXhwcihncHN0YXRlLCBnZXAtPmxhYmVsZXhwcik7CisKKwlnZXAtPndoZXJlQ2xhdXNlID0gdHJh bnNmb3JtRXhwcihwc3RhdGUsIGdlcC0+d2hlcmVDbGF1c2UsIEVYUFJfS0lORF9XSEVSRSk7CisJ YXNzaWduX2V4cHJfY29sbGF0aW9ucyhwc3RhdGUsIGdlcC0+d2hlcmVDbGF1c2UpOworCisJcmV0 dXJuIChOb2RlICopIGdlcDsKK30KKworLyoKKyAqIFRyYW5zZm9ybSBhIHBhdGggdGVybSAobGlz dCBvZiBHcmFwaEVsZW1lbnRQYXR0ZXJuJ3MpLgorICovCitzdGF0aWMgTm9kZSAqCit0cmFuc2Zv cm1QYXRoVGVybShQYXJzZVN0YXRlICpwc3RhdGUsIEdyYXBoVGFibGVQYXJzZVN0YXRlICpncHN0 YXRlLCBMaXN0ICpwYXRoX3Rlcm0pCit7CisJTGlzdAkgICAqcmVzdWx0ID0gTklMOworCUxpc3RD ZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgcGF0aF90ZXJtKQorCXsKKwkJTm9kZQkgICAqbiA9 IHRyYW5zZm9ybUdyYXBoRWxlbWVudFBhdHRlcm4ocHN0YXRlLCBncHN0YXRlLCBsZmlyc3Rfbm9k ZShHcmFwaEVsZW1lbnRQYXR0ZXJuLCBsYykpOworCisJCXJlc3VsdCA9IGxhcHBlbmQocmVzdWx0 LCBuKTsKKwl9CisKKwlyZXR1cm4gKE5vZGUgKikgcmVzdWx0OworfQorCisvKgorICogVHJhbnNm b3JtIGEgcGF0aCBwYXR0ZXJuIGxpc3QgKGxpc3Qgb2YgcGF0aCB0ZXJtcykuCisgKi8KK3N0YXRp YyBOb2RlICoKK3RyYW5zZm9ybVBhdGhQYXR0ZXJuTGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIEdy YXBoVGFibGVQYXJzZVN0YXRlICpncHN0YXRlLCBMaXN0ICpwYXRoX3BhdHRlcm4pCit7CisJTGlz dAkgICAqcmVzdWx0ID0gTklMOworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgcGF0 aF9wYXR0ZXJuKQorCXsKKwkJTm9kZQkgICAqbiA9IHRyYW5zZm9ybVBhdGhUZXJtKHBzdGF0ZSwg Z3BzdGF0ZSwgbGZpcnN0KGxjKSk7CisKKwkJcmVzdWx0ID0gbGFwcGVuZChyZXN1bHQsIG4pOwor CX0KKworCXJldHVybiAoTm9kZSAqKSByZXN1bHQ7Cit9CisKKy8qCisgKiBUcmFuc2Zvcm0gYSBH cmFwaFBhdHRlcm4uCisgKi8KK05vZGUgKgordHJhbnNmb3JtR3JhcGhQYXR0ZXJuKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgR3JhcGhUYWJsZVBhcnNlU3RhdGUgKmdwc3RhdGUsIEdyYXBoUGF0dGVybiAq Z3JhcGhfcGF0dGVybikKK3sKKwlncmFwaF9wYXR0ZXJuLT5wYXRoX3BhdHRlcm5fbGlzdCA9IChM aXN0ICopIHRyYW5zZm9ybVBhdGhQYXR0ZXJuTGlzdChwc3RhdGUsIGdwc3RhdGUsIGdyYXBoX3Bh dHRlcm4tPnBhdGhfcGF0dGVybl9saXN0KTsKKwlncmFwaF9wYXR0ZXJuLT53aGVyZUNsYXVzZSA9 IHRyYW5zZm9ybUV4cHIocHN0YXRlLCBncmFwaF9wYXR0ZXJuLT53aGVyZUNsYXVzZSwgRVhQUl9L SU5EX1dIRVJFKTsKKwlhc3NpZ25fZXhwcl9jb2xsYXRpb25zKHBzdGF0ZSwgZ3JhcGhfcGF0dGVy bi0+d2hlcmVDbGF1c2UpOworCisJcmV0dXJuIChOb2RlICopIGdyYXBoX3BhdHRlcm47Cit9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCmluZGV4IDJmNjRlYWYwZTMuLjVlYTlmYTk5M2Ig MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCkBAIC0yMTI0LDYgKzIxMjQsOTggQEAg YWRkUmFuZ2VUYWJsZUVudHJ5Rm9yVGFibGVGdW5jKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJ CQkJcnRlLT5jb2xjb2xsYXRpb25zKTsKIH0KIAorUGFyc2VOYW1lc3BhY2VJdGVtICoKK2FkZFJh bmdlVGFibGVFbnRyeUZvckdyYXBoVGFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJCQkJCQlP aWQgZ3JhcGhpZCwKKwkJCQkJCQkJR3JhcGhQYXR0ZXJuICpncmFwaF9wYXR0ZXJuLAorCQkJCQkJ CQlMaXN0ICpjb2x1bW5zLAorCQkJCQkJCQlMaXN0ICpjb2xuYW1lcywKKwkJCQkJCQkJQWxpYXMg KmFsaWFzLAorCQkJCQkJCQlib29sIGxhdGVyYWwsCisJCQkJCQkJCWJvb2wgaW5Gcm9tQ2wpCit7 CisJUmFuZ2VUYmxFbnRyeSAqcnRlID0gbWFrZU5vZGUoUmFuZ2VUYmxFbnRyeSk7CisJY2hhcgkg ICAqcmVmbmFtZSA9IGFsaWFzID8gYWxpYXMtPmFsaWFzbmFtZSA6IHBzdHJkdXAoImdyYXBoX3Rh YmxlIik7CisJQWxpYXMJICAgKmVyZWY7CisJaW50CQkJbnVtYWxpYXNlczsKKwlpbnQJCQl2YXJh dHRubzsKKwlMaXN0Q2VsbCAgICpsYzsKKwlMaXN0CSAgICpjb2x0eXBlcyA9IE5JTDsKKwlMaXN0 CSAgICpjb2x0eXBtb2RzID0gTklMOworCUxpc3QJICAgKmNvbGNvbGxhdGlvbnMgPSBOSUw7CisJ UlRFUGVybWlzc2lvbkluZm8gKnBlcm1pbmZvOworCVBhcnNlTmFtZXNwYWNlSXRlbSAqbnNpdGVt OworCisJQXNzZXJ0KHBzdGF0ZSAhPSBOVUxMKTsKKworCXJ0ZS0+cnRla2luZCA9IFJURV9HUkFQ SF9UQUJMRTsKKwlydGUtPnJlbGlkID0gZ3JhcGhpZDsKKwlydGUtPnJlbGtpbmQgPSBSRUxLSU5E X1BST1BHUkFQSDsKKwlydGUtPmdyYXBoX3BhdHRlcm4gPSBncmFwaF9wYXR0ZXJuOworCXJ0ZS0+ Z3JhcGhfdGFibGVfY29sdW1ucyA9IGNvbHVtbnM7CisJcnRlLT5hbGlhcyA9IGFsaWFzOworCisJ ZXJlZiA9IGFsaWFzID8gY29weU9iamVjdChhbGlhcykgOiBtYWtlQWxpYXMocmVmbmFtZSwgTklM KTsKKworCWlmICghZXJlZi0+Y29sbmFtZXMpCisJCWVyZWYtPmNvbG5hbWVzID0gY29sbmFtZXM7 CisKKwludW1hbGlhc2VzID0gbGlzdF9sZW5ndGgoZXJlZi0+Y29sbmFtZXMpOworCisJLyogZmls bCBpbiBhbnkgdW5zcGVjaWZpZWQgYWxpYXMgY29sdW1ucyAqLworCXZhcmF0dG5vID0gMDsKKwlm b3JlYWNoKGxjLCBjb2xuYW1lcykKKwl7CisJCXZhcmF0dG5vKys7CisJCWlmICh2YXJhdHRubyA+ IG51bWFsaWFzZXMpCisJCQllcmVmLT5jb2xuYW1lcyA9IGxhcHBlbmQoZXJlZi0+Y29sbmFtZXMs IGxmaXJzdChsYykpOworCX0KKwlpZiAodmFyYXR0bm8gPCBudW1hbGlhc2VzKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9DT0xVTU5fUkVGRVJFTkNFKSwK KwkJCQkgZXJybXNnKCJHUkFQSF9UQUJMRSBcIiVzXCIgaGFzICVkIGNvbHVtbnMgYXZhaWxhYmxl IGJ1dCAlZCBjb2x1bW5zIHNwZWNpZmllZCIsCisJCQkJCQlyZWZuYW1lLCB2YXJhdHRubywgbnVt YWxpYXNlcykpKTsKKworCXJ0ZS0+ZXJlZiA9IGVyZWY7CisKKwlmb3JlYWNoKGxjLCBjb2x1bW5z KQorCXsKKwkJVGFyZ2V0RW50cnkgKnRlID0gbGZpcnN0X25vZGUoVGFyZ2V0RW50cnksIGxjKTsK KwkJTm9kZQkgICAqY29sZXhwciA9IChOb2RlICopIHRlLT5leHByOworCisJCWNvbHR5cGVzID0g bGFwcGVuZF9vaWQoY29sdHlwZXMsIGV4cHJUeXBlKGNvbGV4cHIpKTsKKwkJY29sdHlwbW9kcyA9 IGxhcHBlbmRfaW50KGNvbHR5cG1vZHMsIGV4cHJUeXBtb2QoY29sZXhwcikpOworCQljb2xjb2xs YXRpb25zID0gbGFwcGVuZF9vaWQoY29sY29sbGF0aW9ucywgZXhwckNvbGxhdGlvbihjb2xleHBy KSk7CisJfQorCisJLyoKKwkgKiBTZXQgZmxhZ3MgYW5kIGFjY2VzcyBwZXJtaXNzaW9ucy4KKwkg Ki8KKwlydGUtPmxhdGVyYWwgPSBsYXRlcmFsOworCXJ0ZS0+aW5Gcm9tQ2wgPSBpbkZyb21DbDsK KworCXBlcm1pbmZvID0gYWRkUlRFUGVybWlzc2lvbkluZm8oJnBzdGF0ZS0+cF9ydGVwZXJtaW5m b3MsIHJ0ZSk7CisJcGVybWluZm8tPnJlcXVpcmVkUGVybXMgPSBBQ0xfU0VMRUNUOworCisJLyoK KwkgKiBBZGQgY29tcGxldGVkIFJURSB0byBwc3RhdGUncyByYW5nZSB0YWJsZSBsaXN0LCBzbyB0 aGF0IHdlIGtub3cgaXRzCisJICogaW5kZXguICBCdXQgd2UgZG9uJ3QgYWRkIGl0IHRvIHRoZSBq b2luIGxpc3QgLS0tIGNhbGxlciBtdXN0IGRvIHRoYXQgaWYKKwkgKiBhcHByb3ByaWF0ZS4KKwkg Ki8KKwlwc3RhdGUtPnBfcnRhYmxlID0gbGFwcGVuZChwc3RhdGUtPnBfcnRhYmxlLCBydGUpOwor CisJLyoKKwkgKiBCdWlsZCBhIFBhcnNlTmFtZXNwYWNlSXRlbSwgYnV0IGRvbid0IGFkZCBpdCB0 byB0aGUgcHN0YXRlJ3MgbmFtZXNwYWNlCisJICogbGlzdCAtLS0gY2FsbGVyIG11c3QgZG8gdGhh dCBpZiBhcHByb3ByaWF0ZS4KKwkgKi8KKwluc2l0ZW0gPSBidWlsZE5TSXRlbUZyb21MaXN0cyhy dGUsIGxpc3RfbGVuZ3RoKHBzdGF0ZS0+cF9ydGFibGUpLAorCQkJCQkJCQkgIGNvbHR5cGVzLCBj b2x0eXBtb2RzLCBjb2xjb2xsYXRpb25zKTsKKworCW5zaXRlbS0+cF9wZXJtaW5mbyA9IHBlcm1p bmZvOworCisJcmV0dXJuIG5zaXRlbTsKK30KKwogLyoKICAqIEFkZCBhbiBlbnRyeSBmb3IgYSBW QUxVRVMgbGlzdCB0byB0aGUgcHN0YXRlJ3MgcmFuZ2UgdGFibGUgKHBfcnRhYmxlKS4KICAqIFRo ZW4sIGNvbnN0cnVjdCBhbmQgcmV0dXJuIGEgUGFyc2VOYW1lc3BhY2VJdGVtIGZvciB0aGUgbmV3 IFJURS4KQEAgLTI5NDAsNiArMzAzMiw3IEBAIGV4cGFuZFJURShSYW5nZVRibEVudHJ5ICpydGUs IGludCBydGluZGV4LCBpbnQgc3VibGV2ZWxzX3VwLAogCQljYXNlIFJURV9WQUxVRVM6CiAJCWNh c2UgUlRFX0NURToKIAkJY2FzZSBSVEVfTkFNRURUVVBMRVNUT1JFOgorCQljYXNlIFJURV9HUkFQ SF9UQUJMRToKIAkJCXsKIAkJCQkvKiBUYWJsZWZ1bmMsIFZhbHVlcywgQ1RFLCBvciBFTlIgUlRF ICovCiAJCQkJTGlzdENlbGwgICAqYWxpYXNwX2l0ZW0gPSBsaXN0X2hlYWQocnRlLT5lcmVmLT5j b2xuYW1lcyk7CkBAIC0zMzE3LDYgKzM0MTAsNyBAQCBnZXRfcnRlX2F0dHJpYnV0ZV9pc19kcm9w cGVkKFJhbmdlVGJsRW50cnkgKnJ0ZSwgQXR0ck51bWJlciBhdHRudW0pCiAJCWNhc2UgUlRFX1RB QkxFRlVOQzoKIAkJY2FzZSBSVEVfVkFMVUVTOgogCQljYXNlIFJURV9DVEU6CisJCWNhc2UgUlRF X0dSQVBIX1RBQkxFOgogCiAJCQkvKgogCQkJICogU3Vic2VsZWN0LCBUYWJsZSBGdW5jdGlvbnMs IFZhbHVlcywgQ1RFIFJURXMgbmV2ZXIgaGF2ZSBkcm9wcGVkCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFy Z2V0LmMKaW5kZXggZWU2ZmNkMDUwMy4uYTQ3ZGI1YWRhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90 YXJnZXQuYwpAQCAtMzYwLDYgKzM2MCwxMCBAQCBtYXJrVGFyZ2V0TGlzdE9yaWdpbihQYXJzZVN0 YXRlICpwc3RhdGUsIFRhcmdldEVudHJ5ICp0bGUsCiAJCQl0bGUtPnJlc29yaWd0YmwgPSBydGUt PnJlbGlkOwogCQkJdGxlLT5yZXNvcmlnY29sID0gYXR0bnVtOwogCQkJYnJlYWs7CisJCWNhc2Ug UlRFX0dSQVBIX1RBQkxFOgorCQkJdGxlLT5yZXNvcmlndGJsID0gcnRlLT5yZWxpZDsKKwkJCXRs ZS0+cmVzb3JpZ2NvbCA9IEludmFsaWRBdHRyTnVtYmVyOworCQkJYnJlYWs7CiAJCWNhc2UgUlRF X1NVQlFVRVJZOgogCQkJLyogU3Vic2VsZWN0LWluLUZST006IGNvcHkgdXAgZnJvbSB0aGUgc3Vi c2VsZWN0ICovCiAJCQlpZiAoYXR0bnVtICE9IEludmFsaWRBdHRyTnVtYmVyKQpAQCAtMTU3OCw2 ICsxNTgyLDcgQEAgZXhwYW5kUmVjb3JkVmFyaWFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBWYXIg KnZhciwgaW50IGxldmVsc3VwKQogCQljYXNlIFJURV9SRUxBVElPTjoKIAkJY2FzZSBSVEVfVkFM VUVTOgogCQljYXNlIFJURV9OQU1FRFRVUExFU1RPUkU6CisJCWNhc2UgUlRFX0dSQVBIX1RBQkxF OgogCQljYXNlIFJURV9SRVNVTFQ6CiAKIAkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w YXJzZXIvc2Nhbi5sIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3NjYW4ubAppbmRleCBmNzQwNTllN2Iw Li40Mjc0MzI3Njc3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvc2Nhbi5sCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9zY2FuLmwKQEAgLTM2Niw2ICszNjYsOCBAQCBsZXNzX2VxdWFs cwkJIjw9IgogZ3JlYXRlcl9lcXVhbHMJIj49IgogbGVzc19ncmVhdGVyCSI8PiIKIG5vdF9lcXVh bHMJCSIhPSIKKy8qIE5vdGUgdGhlcmUgaXMgbm8gbmVlZCBmb3IgbGVmdF9hcnJvdywgc2luY2Ug IjwtIiBpcyBub3QgYSBzaW5nbGUgb3BlcmF0b3IuICovCityaWdodF9hcnJvdwkJIi0+IgogCiAv KgogICogInNlbGYiIGlzIHRoZSBzZXQgb2YgY2hhcnMgdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQg YXMgc2luZ2xlLWNoYXJhY3RlcgpAQCAtMzc3LDcgKzM3OSw3IEBAIG5vdF9lcXVhbHMJCSIhPSIK ICAqIElmIHlvdSBjaGFuZ2UgZWl0aGVyIHNldCwgYWRqdXN0IHRoZSBjaGFyYWN0ZXIgbGlzdHMg YXBwZWFyaW5nIGluIHRoZQogICogcnVsZSBmb3IgIm9wZXJhdG9yIiEKICAqLwotc2VsZgkJCVss KClcW1xdLjtcOlwrXC1cKlwvXCVcXlw8XD5cPV0KK3NlbGYJCQlbLCgpXFtcXS47XDpcfFwrXC1c KlwvXCVcXlw8XD5cPV0KIG9wX2NoYXJzCQlbXH5cIVxAXCNcXlwmXHxcYFw/XCtcLVwqXC9cJVw8 XD5cPV0KIG9wZXJhdG9yCQl7b3BfY2hhcnN9KwogCkBAIC04NzgsNiArODgwLDExIEBAIG90aGVy CQkJLgogCQkJCQlyZXR1cm4gTk9UX0VRVUFMUzsKIAkJCQl9CiAKK3tyaWdodF9hcnJvd30Jewor CQkJCQlTRVRfWVlMTE9DKCk7CisJCQkJCXJldHVybiBSSUdIVF9BUlJPVzsKKwkJCQl9CisKIHtz ZWxmfQkJCXsKIAkJCQkJU0VUX1lZTExPQygpOwogCQkJCQlyZXR1cm4geXl0ZXh0WzBdOwpAQCAt OTU1LDcgKzk2Miw3IEBAIG90aGVyCQkJLgogCQkJCQkJICogdGhhdCB0aGUgInNlbGYiIHJ1bGUg d291bGQgaGF2ZS4KIAkJCQkJCSAqLwogCQkJCQkJaWYgKG5jaGFycyA9PSAxICYmCi0JCQkJCQkJ c3RyY2hyKCIsKClbXS47OistKi8lXjw+PSIsIHl5dGV4dFswXSkpCisJCQkJCQkJc3RyY2hyKCIs KClbXS47OnwrLSovJV48Pj0iLCB5eXRleHRbMF0pKQogCQkJCQkJCXJldHVybiB5eXRleHRbMF07 CiAJCQkJCQkvKgogCQkJCQkJICogTGlrZXdpc2UsIGlmIHdoYXQgd2UgaGF2ZSBsZWZ0IGlzIHR3 byBjaGFycywgYW5kCkBAIC05NzUsNiArOTgyLDggQEAgb3RoZXIJCQkuCiAJCQkJCQkJCXJldHVy biBOT1RfRVFVQUxTOwogCQkJCQkJCWlmICh5eXRleHRbMF0gPT0gJyEnICYmIHl5dGV4dFsxXSA9 PSAnPScpCiAJCQkJCQkJCXJldHVybiBOT1RfRVFVQUxTOworCQkJCQkJCWlmICh5eXRleHRbMF0g PT0gJy0nICYmIHl5dGV4dFsxXSA9PSAnPicpCisJCQkJCQkJCXJldHVybiBSSUdIVF9BUlJPVzsK IAkJCQkJCX0KIAkJCQkJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL01ha2Vm aWxlIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9NYWtlZmlsZQppbmRleCA0NjgwNzUyZTZhLi4wOTA3 MDA0N2I3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXdyaXRlL01ha2VmaWxlCisrKyBiL3Ny Yy9iYWNrZW5kL3Jld3JpdGUvTWFrZWZpbGUKQEAgLTE0LDYgKzE0LDcgQEAgaW5jbHVkZSAkKHRv cF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogCiBPQkpTID0gXAogCXJld3JpdGVEZWZp bmUubyBcCisJcmV3cml0ZUdyYXBoVGFibGUubyBcCiAJcmV3cml0ZUhhbmRsZXIubyBcCiAJcmV3 cml0ZU1hbmlwLm8gXAogCXJld3JpdGVSZW1vdmUubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXdyaXRlL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9tZXNvbi5idWlsZApp bmRleCAyMzA0M2NhNmU1Li4yYmVhMjAyMzNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXdy aXRlL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvbWVzb24uYnVpbGQKQEAg LTIsNiArMiw3IEBACiAKIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ3Jld3JpdGVEZWZp bmUuYycsCisgICdyZXdyaXRlR3JhcGhUYWJsZS5jJywKICAgJ3Jld3JpdGVIYW5kbGVyLmMnLAog ICAncmV3cml0ZU1hbmlwLmMnLAogICAncmV3cml0ZVJlbW92ZS5jJywKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUdyYXBoVGFibGUuYyBiL3NyYy9iYWNrZW5kL3Jld3Jp dGUvcmV3cml0ZUdyYXBoVGFibGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi5lZTExNTk0ZDJjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9y ZXdyaXRlR3JhcGhUYWJsZS5jCkBAIC0wLDAgKzEsMTA5OCBAQAorLyotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKgorICogcmV3cml0ZUdyYXBoVGFibGUuYworICoJCVN1cHBvcnQgZm9yIHJld3JpdGluZyBH UkFQSF9UQUJMRSBjbGF1c2VzLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0y MDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29w eXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEK KyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVH cmFwaFRhYmxlLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3Rn cmVzLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X3Byb3BncmFwaF9lbGVtZW50LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9wZ3JhcGhfZWxl bWVudF9sYWJlbC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvcGdyYXBoX2xhYmVsLmgiCisj aW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9wZ3JhcGhfbGFiZWxfcHJvcGVydHkuaCIKKyNpbmNsdWRl ICJjYXRhbG9nL3BnX3Byb3BncmFwaF9wcm9wZXJ0eS5oIgorI2luY2x1ZGUgIm5vZGVzL21ha2Vm dW5jcy5oIgorI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgorI2luY2x1ZGUgInBhcnNlci9h bmFseXplLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX25vZGUuaCIKKyNpbmNsdWRlICJwYXJz ZXIvcGFyc2VfcmVsYXRpb24uaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2V0cmVlLmgiCisjaW5j bHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2dy YXBodGFibGUuaCIKKyNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVHcmFwaFRhYmxlLmgiCisjaW5j bHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgorI2luY2x1ZGUgInJld3JpdGUvcmV3cml0 ZU1hbmlwLmgiCisjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKKyNpbmNsdWRlICJ1dGlscy9idWls dGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5 c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvcnVsZXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMv c3lzY2FjaGUuaCIKKworCisvKgorICogUmVwcmVzZW50cyBvbmUgcHJvcGVydHkgZ3JhcGggZWxl bWVudCAodmVydGV4IG9yIGVkZ2UpIGluIHRoZSBwYXRoLgorICoKKyAqIExhYmVsIGV4cHJlc3Np b24gaW4gYW4gZWxlbWVudCBwYXR0ZXJuIHJlc29sdmVzIGludG8gYSBzZXQgb2YgZWxlbWVudHMu IEZvcgorICogZWFjaCBvZiB0aG9zZSBlbGVtZW50cyB3ZSBjcmVhdGUgb25lIGdyYXBoX3BhdGhf ZWxlbWVudCBvYmplY3QuCisgKi8KK3N0cnVjdCBncmFwaF9wYXRoX2VsZW1lbnQKK3sKKwlPaWQJ CQllbGVtb2lkOworCU9pZAkJCXJlbG9pZDsKKwlpbnQJCQlydGluZGV4OworCUxpc3QJICAgKmxh YmVsb2lkczsKKwlPaWQJCQlzcmN2ZXJ0ZXhpZDsKKwlpbnQJCQlzcmNlbGVtX3BvczsKKwlPaWQJ CQlkZXN0dmVydGV4aWQ7CisJaW50CQkJZGVzdGVsZW1fcG9zOworCUxpc3QJICAgKnF1YWxfZXhw cnM7CisJR3JhcGhFbGVtZW50UGF0dGVybiAqcGFyZW50X2dlcDsKK307CisKK3N0YXRpYyBOb2Rl ICpyZXBsYWNlX3Byb3BlcnR5X3JlZnMoT2lkIHByb3BncmFwaGlkLCBOb2RlICpub2RlLCBjb25z dCBMaXN0ICptYXBwaW5ncyk7CitzdGF0aWMgTGlzdCAqYnVpbGRfZWRnZV92ZXJ0ZXhfbGlua19x dWFscyhIZWFwVHVwbGUgZWRnZXR1cCwgaW50IGVkZ2VydGksIGludCByZWZydGksIEF0dHJOdW1i ZXIgY2F0YWxvZ19rZXlfYXR0bnVtLCBBdHRyTnVtYmVyIGNhdGFsb2dfcmVmX2F0dG51bSk7Citz dGF0aWMgTGlzdCAqZ2VuZXJhdGVfcXVlcmllc19mb3JfcGF0aF9wYXR0ZXJuKFJhbmdlVGJsRW50 cnkgKnJ0ZSwgTGlzdCAqZWxlbWVudF9wYXR0ZXJucyk7CitzdGF0aWMgUXVlcnkgKmdlbmVyYXRl X3F1ZXJ5X2Zvcl9ncmFwaF9wYXRoKFJhbmdlVGJsRW50cnkgKnJ0ZSwgTGlzdCAqcGF0aCk7Citz dGF0aWMgTm9kZSAqZ2VuZXJhdGVfc2V0b3BfZnJvbV9wYXRocXVlcmllcyhMaXN0ICpwYXRocXVl cmllcywgTGlzdCAqKnJ0YWJsZSwgTGlzdCAqKnRhcmdldGxpc3QpOworc3RhdGljIExpc3QgKmdl bmVyYXRlX3F1ZXJpZXNfZm9yX3BhdGhfcGF0dGVybl9yZWN1cnNlKFJhbmdlVGJsRW50cnkgKnJ0 ZSwgTGlzdCAqcGF0aHF1ZXJpZXMsIExpc3QgKmN1cl9wYXRoLCBMaXN0ICpwYXRoX3BhdHRlcm5f bGlzdHMsIGludCBlbGVtcG9zKTsKK3N0YXRpYyBRdWVyeSAqZ2VuZXJhdGVfcXVlcnlfZm9yX2Vt cHR5X3BhdGhfcGF0dGVybihSYW5nZVRibEVudHJ5ICpydGUpOworc3RhdGljIFF1ZXJ5ICpnZW5l cmF0ZV91bmlvbl9mcm9tX3BhdGhxdWVyaWVzKExpc3QgKipwYXRocXVlcmllcyk7CitzdGF0aWMg Y29uc3QgY2hhciAqZ2V0X2dlcF9raW5kX25hbWUoR3JhcGhFbGVtZW50UGF0dGVybktpbmQgZ2Vw a2luZCk7CitzdGF0aWMgTGlzdCAqZ2V0X2VsZW1lbnRzX2Zvcl9nZXAoT2lkIHByb3BncmFwaGlk LCBHcmFwaEVsZW1lbnRQYXR0ZXJuICpnZXAsIGludCBlbGVtcG9zKTsKK3N0YXRpYyBib29sIGlz X3Byb3BlcnR5X2Fzc29jaWF0ZWRfd2l0aF9sYWJlbChPaWQgbGFiZWxvaWQsIE9pZCBwcm9wb2lk KTsKK3N0YXRpYyBjb25zdCBjaGFyICpnZXRfZ3JhcGhfZWxlbV9raW5kX25hbWUoR3JhcGhFbGVt ZW50UGF0dGVybktpbmQgZ2Vwa2luZCk7CitzdGF0aWMgTm9kZSAqZ2V0X2VsZW1lbnRfcHJvcGVy dHlfZXhwcihPaWQgZWxlbW9pZCwgT2lkIHByb3BvaWQsIGludCBydGluZGV4KTsKKworLyoKKyAq IENvbnZlcnQgR1JBUEhfVEFCTEUgY2xhdXNlIGludG8gYSBzdWJxdWVyeSB1c2luZyByZWxhdGlv bmFsCisgKiBvcGVyYXRvcnMuCisgKi8KK1F1ZXJ5ICoKK3Jld3JpdGVHcmFwaFRhYmxlKFF1ZXJ5 ICpwYXJzZXRyZWUsIGludCBydF9pbmRleCkKK3sKKwlSYW5nZVRibEVudHJ5ICpydGU7CisJUXVl cnkJICAgKmdyYXBoX3RhYmxlX3F1ZXJ5OworCUxpc3QJICAgKnBhdGhfcGF0dGVybjsKKwlMaXN0 CSAgICpwYXRocXVlcmllcyA9IE5JTDsKKworCXJ0ZSA9IHJ0X2ZldGNoKHJ0X2luZGV4LCBwYXJz ZXRyZWUtPnJ0YWJsZSk7CisKKwlpZiAobGlzdF9sZW5ndGgocnRlLT5ncmFwaF9wYXR0ZXJuLT5w YXRoX3BhdHRlcm5fbGlzdCkgIT0gMSkKKwkJZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIHBhdGgg cGF0dGVybiBsaXN0IGxlbmd0aCIpOworCisJcGF0aF9wYXR0ZXJuID0gbGluaXRpYWwocnRlLT5n cmFwaF9wYXR0ZXJuLT5wYXRoX3BhdHRlcm5fbGlzdCk7CisJcGF0aHF1ZXJpZXMgPSBnZW5lcmF0 ZV9xdWVyaWVzX2Zvcl9wYXRoX3BhdHRlcm4ocnRlLCBwYXRoX3BhdHRlcm4pOworCWdyYXBoX3Rh YmxlX3F1ZXJ5ID0gZ2VuZXJhdGVfdW5pb25fZnJvbV9wYXRocXVlcmllcygmcGF0aHF1ZXJpZXMp OworCisJQWNxdWlyZVJld3JpdGVMb2NrcyhncmFwaF90YWJsZV9xdWVyeSwgdHJ1ZSwgZmFsc2Up OworCisJcnRlLT5ydGVraW5kID0gUlRFX1NVQlFVRVJZOworCXJ0ZS0+c3VicXVlcnkgPSBncmFw aF90YWJsZV9xdWVyeTsKKwlydGUtPmxhdGVyYWwgPSB0cnVlOworCisJLyoKKwkgKiBSZXNldCBu byBsb25nZXIgYXBwbGljYWJsZSBmaWVsZHMsIHRvIGFwcGVhc2UKKwkgKiBXUklURV9SRUFEX1BB UlNFX1BMQU5fVFJFRVMuCisJICovCisJcnRlLT5ncmFwaF9wYXR0ZXJuID0gTlVMTDsKKwlydGUt PmdyYXBoX3RhYmxlX2NvbHVtbnMgPSBOSUw7CisKKyNpZiAwCisJZWxvZyhJTkZPLCAicmV3cml0 dGVuOlxuJXMiLCBwZ19nZXRfcXVlcnlkZWYoY29weU9iamVjdChwYXJzZXRyZWUpLCBmYWxzZSkp OworI2VuZGlmCisKKwlyZXR1cm4gcGFyc2V0cmVlOworfQorCisvKgorICogR2VuZXJhdGUgcXVl cmllcyByZXByZXNldGluZyB0aGUgZ2l2ZW4gcGF0aCBwYXR0ZXJuIGFwcGxpZWQgdG8gdGhlIGdp dmVuCisgKiBwcm9wZXJ0eSBncmFwaC4KKyAqCisgKiBBIHBhdGggcGF0dGVybiBjb25zaXN0cyBv ZiBvbmUgb3IgbW9yZSBlbGVtZW50IHBhdHRlcm5zLiBFYWNoIG9mIHRoZSBlbGVtZW50CisgKiBw YXR0ZXJucyBtYXkgYmUgc2F0aXNmaWVkIGJ5IG11bHRpcGxlIGVsZW1lbnRzLiBBIHBhdGggc2F0 aXNmeWluZyB0aGUgZ2l2ZW4KKyAqIHBhdGggcGF0dGVybiBjb25zaXN0cyBvZiBvbmUgZWxlbWVu dCBmcm9tIGVhY2ggZWxlbWVudCBwYXR0ZXJuLiBFYWNoIG9mIHRoZXNlCisgKiBwYXRocyBpcyBj b252ZXJ0ZWQgaW50byBhIHF1ZXJ5IGNvbm5lY3RpbmcgYWxsIHRoZSBlbGVtZW50cyBpbiB0aGF0 IHBhdGguCisgKiBUaGVyZSBjYW4gYmUgYXMgbWFueSBwYXRocyBhcyB0aGUgbnVtYmVyIG9mIGNv bWJpbmF0aW9ucyBvZiB0aGUgZWxlbWVudHMuCisgKiBDb21wdXRlIGFsbCB0aGVzZSBwYXRocyBh bmQgY29udmVydCBlYWNoIG9mIHRoZW0gaW50byBhIHF1ZXJ5LiBTZXQgb2YgdGhlc2UKKyAqIHF1 ZXJpZXMgaXMgcmV0dXJuZWQuCisgKgorICogQXNzdW1pbmcgdGhhdCB0aGUgbnVtYmVyaW5nIHN0 YXJ0cyBhdCAwLCBldmVyeSBlbGVtZW50IHBhdHRlcm4gYXQgYW4gZXZlbgorICogbnVtYmVyZWQg cG9zaXRpb24gaW4gdGhlIHBhdGggaXMgYSB2ZXJ0ZXggcGF0dGVybi4gRXZlcnkgZWxlbWVudCBp biBldmVuCisgKiBudW1iZXJlZCBwb3NpdGlvbiBpcyBhbiBlZGdlIHBhdHRlcm4uIFRodXMgZXZl cnkgZXZlbiBudW1iZXJlZCBlbGVtZW50IGlzIGEKKyAqIHZlcnRleCB0YWJsZSBhbmQgb2RkIG51 bWJlcmVkIGVsZW1lbnQgaXMgYW4gZWRnZSB0YWJsZS4gQW4gZWRnZSBjb25uZWN0cyB0d28KKyAq IHZlcnRpY2VzIGlkZW50aWZpZWQgYnkgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24ga2V5cyBy ZXNwZWN0aXZlbHkuIFRoZQorICogY29ubmVjdGlvbnMgYmV0d2VlbiB2ZXJ0ZXggcm93cyBmcm9t IGRpZmZlcmVudCB2ZXJ0ZXggdGFibGVzIGNhbiBiZSBjb21wdXRlZAorICogYnkgYXBwbHlpbmcg cmVsYXRpb25hbCBqb2luIGJldHdlZW4gZWRnZSB0YWJsZSBhbmQgdGhlIGFkamFjZW50IHZlcnRl eCB0YWJsZXMKKyAqIHJlc3BlY3RpdmVseS4gSGVuY2UgYSBxdWVyeSByZXByZXNlbnRpbmcgYSBw YXRoIGNvbnNpc3RzIG9mIEpPSU4gYmV0d2VlbgorICogYWRqYWNlbnQgdmVydGV4IGFuZCBlZGdl IHRhYmxlcy4KKyAqCisgKiBBIHBhdGggcGF0dGVybiBpbiBpdHNlbGYgaXMgYSBLLXBhcnRpdGUg Z3JhcGggd2hlcmUgSyA9IG51bWJlciBvZiBlbGVtZW50CisgKiBwYXR0ZXJucyBpbiB0aGUgcGF0 aCBwYXR0ZXJuLiBUaGUgcG9zc2libGUgcGF0aHMgYXJlIGNvbXB1dGVkIGJ5IHBlcmZvcm1pbmcg YQorICogREZTIGluIHRoaXMgZ3JhcGguIFRoZSBERlMgaXMgaW1wbGVtZW50ZWQgYXMgcmVjdXJz aW9uLiBBIHBhdGggaXMgY29udmVydGVkCisgKiBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIHF1ZXJ5 IGFzIHNvb24gYXMgdGhlIGxhc3QgdmVydGV4IHRhYmxlIGlzIHJlYWNoZWQuCisgKgorICogZ2Vu ZXJhdGVfcXVlcmllc19mb3JfcGF0aF9wYXR0ZXJuKCkgc3RhcnRzIHRoZSByZWN1cnNpb24gYnV0 IGFjdHVhbCB3b3JrIGlzCisgKiBkb25lIGJ5IGdlbmVyYXRlX3F1ZXJpZXNfZm9yX3BhdGhfcGF0 dGVybl9yZWN1cnNlKCkuCisgKiBnZW5lcmF0ZV9xdWVyeV9mb3JfZ3JhcGhfcGF0aCgpIGNvbnN0 cnVjdHMgYSBxdWVyeSBmb3IgYSBnaXZlbiBwYXRoLgorICoKKyAqIEEgcGF0aCBwYXR0ZXJuIG1h eSByZXN1bHQgaW50byBubyBwYXRoIGlmIGFueSBvZiB0aGUgZWxlbWVudCBwYXR0ZXJuIHlpZWxk cworICogbm8gZWxlbWVudHMgb3IgZWRnZSBwYXR0ZXJucyB5aWVsZCBubyBlZGdlcyBjb25uZWN0 aW5nIGFkamFjZW50IHZlcnRleAorICogcGF0dGVybnMuIEluIHN1Y2ggYSBjYXNlIGEgcXVlcnkg d2hpY2ggcmV0dXJucyBubyByZXN1bHQgaXMgcmV0dXJuZWQKKyAqIChnZW5lcmF0ZV9xdWVyeV9m b3JfZW1wdHlfcGF0aF9wYXR0ZXJuKCkpLgorICoKKyAqICdwYXRoX3BhdHRlcm4nIGlzIGdpdmVu IHBhdGggcGF0dGVybgorICogJ3J0ZScgcmVmZXJlbmNlcyB0aGUgcHJvcGVydHkgZ3JhcGggaW4g dGhlIEdSQVBIX1RBQkxFIGNsYXVzZQorICovCitzdGF0aWMgTGlzdCAqCitnZW5lcmF0ZV9xdWVy aWVzX2Zvcl9wYXRoX3BhdHRlcm4oUmFuZ2VUYmxFbnRyeSAqcnRlLCBMaXN0ICpwYXRoX3BhdHRl cm4pCit7CisJTGlzdAkgICAqcGF0aHF1ZXJpZXMgPSBOSUw7CisJTGlzdAkgICAqcGF0aF9lbGVt X2xpc3RzID0gTklMOworCUxpc3RDZWxsICAgKmxjOworCWludAkJCWVsZW1wb3MgPSAwOworCisJ QXNzZXJ0KGxpc3RfbGVuZ3RoKHBhdGhfcGF0dGVybikgPiAwKTsKKworCS8qCisJICogRm9yIGV2 ZXJ5IGVsZW1lbnQgcGF0dGVybiBpbiB0aGUgZ2l2ZW4gcGF0aCBwYXR0ZXJuIGNvbGxlY3QgYWxs IHRoZQorCSAqIGdyYXBoIGVsZW1lbnRzIHRoYXQgc2F0aXNmeSB0aGUgZWxlbWVudCBwYXR0ZXJu LgorCSAqLworCWZvcmVhY2gobGMsIHBhdGhfcGF0dGVybikKKwl7CisJCUdyYXBoRWxlbWVudFBh dHRlcm4gKmdlcCA9IGxmaXJzdF9ub2RlKEdyYXBoRWxlbWVudFBhdHRlcm4sIGxjKTsKKworCQlp ZiAoZ2VwLT5raW5kICE9IFZFUlRFWF9QQVRURVJOICYmCisJCQlnZXAtPmtpbmQgIT0gRURHRV9Q QVRURVJOX0xFRlQgJiYgZ2VwLT5raW5kICE9IEVER0VfUEFUVEVSTl9SSUdIVCkKKwkJCWVsb2co RVJST1IsICJ1bnN1cHBvcnRlZCBlbGVtZW50IHBhdHRlcm4ga2luZDogJXMiLCBnZXRfZ2VwX2tp bmRfbmFtZShnZXAtPmtpbmQpKTsKKworCQlpZiAoZ2VwLT5xdWFudGlmaWVyKQorCQkJZWxvZyhF UlJPUiwgImVsZW1lbnQgcGF0dGVybiBxdWFudGlmaWVyIG5vdCBzdXBwb3J0ZWQgeWV0Iik7CisK KwkJcGF0aF9lbGVtX2xpc3RzID0gbGFwcGVuZChwYXRoX2VsZW1fbGlzdHMsCisJCQkJCQkJCSAg Z2V0X2VsZW1lbnRzX2Zvcl9nZXAocnRlLT5yZWxpZCwgZ2VwLCBlbGVtcG9zKyspKTsKKwl9CisK KwlwYXRocXVlcmllcyA9IGdlbmVyYXRlX3F1ZXJpZXNfZm9yX3BhdGhfcGF0dGVybl9yZWN1cnNl KHJ0ZSwgcGF0aHF1ZXJpZXMsCisJCQkJCQkJCQkJCQkJCQlOSUwsIHBhdGhfZWxlbV9saXN0cywg MCk7CisKKwlpZiAoIXBhdGhxdWVyaWVzKQorCQlwYXRocXVlcmllcyA9IGxpc3RfbWFrZTEoZ2Vu ZXJhdGVfcXVlcnlfZm9yX2VtcHR5X3BhdGhfcGF0dGVybihydGUpKTsKKworCXJldHVybiBwYXRo cXVlcmllczsKK30KKworLyoKKyAqIFJlY3Vyc2l2ZSB3b3JraG9yc2UgZnVuY3Rpb24gb2YgZ2Vu ZXJhdGVfcXVlcmllc19mb3JfcGF0aF9wYXR0ZXJuKCkuCisgKi8KK3N0YXRpYyBMaXN0ICoKK2dl bmVyYXRlX3F1ZXJpZXNfZm9yX3BhdGhfcGF0dGVybl9yZWN1cnNlKFJhbmdlVGJsRW50cnkgKnJ0 ZSwgTGlzdCAqcGF0aHF1ZXJpZXMsIExpc3QgKmN1cl9wYXRoLCBMaXN0ICpwYXRoX2VsZW1fbGlz dHMsIGludCBlbGVtcG9zKQoreworCUxpc3QJICAgKmdlcF9lbGVtcyA9IGxpc3RfbnRoX25vZGUo TGlzdCwgcGF0aF9lbGVtX2xpc3RzLCBlbGVtcG9zKTsKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZv cmVhY2gobGMsIGdlcF9lbGVtcykKKwl7CisJCXN0cnVjdCBncmFwaF9wYXRoX2VsZW1lbnQgKmVs ZW0gPSBsZmlyc3QobGMpOworCisJCS8qIFVwZGF0ZSBjdXJyZW50IHBhdGggYmVpbmcgYnVpbHQg d2l0aCBjdXJyZW50IGVsZW1lbnQuICovCisJCWN1cl9wYXRoID0gbGFwcGVuZChjdXJfcGF0aCwg ZWxlbSk7CisKKwkJLyoKKwkJICogSWYgdGhpcyBpcyB0aGUgbGFzdCBlbGVtZW50IGluIHRoZSBw YXRoLCBnZW5lcmF0ZSBxdWVyeSBmb3IgdGhlCisJCSAqIGNvbXBsZXRlZCBwYXRoLiBFbHNlIHJl Y3Vyc2UgcHJvY2Vzc2luZyB0aGUgbmV4dCBlbGVtZW50LgorCQkgKi8KKwkJaWYgKGxpc3RfbGVu Z3RoKHBhdGhfZWxlbV9saXN0cykgPT0gbGlzdF9sZW5ndGgoY3VyX3BhdGgpKQorCQl7CisJCQlR dWVyeQkgICAqcGF0aHF1ZXJ5ID0gZ2VuZXJhdGVfcXVlcnlfZm9yX2dyYXBoX3BhdGgocnRlLCBj dXJfcGF0aCk7CisKKwkJCUFzc2VydChlbGVtcG9zID09IGxpc3RfbGVuZ3RoKHBhdGhfZWxlbV9s aXN0cykgLSAxKTsKKwkJCWlmIChwYXRocXVlcnkpCisJCQkJcGF0aHF1ZXJpZXMgPSBsYXBwZW5k KHBhdGhxdWVyaWVzLCBwYXRocXVlcnkpOworCQl9CisJCWVsc2UKKwkJCXBhdGhxdWVyaWVzID0g Z2VuZXJhdGVfcXVlcmllc19mb3JfcGF0aF9wYXR0ZXJuX3JlY3Vyc2UocnRlLCBwYXRocXVlcmll cywKKwkJCQkJCQkJCQkJCQkJCQkJY3VyX3BhdGgsCisJCQkJCQkJCQkJCQkJCQkJCXBhdGhfZWxl bV9saXN0cywKKwkJCQkJCQkJCQkJCQkJCQkJZWxlbXBvcyArIDEpOworCQkvKiBNYWtlIHdheSBm b3IgdGhlIG5leHQgZWxlbWVudCBhdCB0aGUgc2FtZSBwb3NpdGlvbi4gKi8KKwkJY3VyX3BhdGgg PSBsaXN0X2RlbGV0ZV9sYXN0KGN1cl9wYXRoKTsKKwl9CisKKwlyZXR1cm4gcGF0aHF1ZXJpZXM7 Cit9CisKKy8qCisgKiBDb25zdHJ1Y3QgYSBxdWVyeSByZXByZXNlbnRpbmcgZ2l2ZW4gZ3JhcGgg cGF0aC4KKyAqCisgKiBNb3JlIGRldGFpbHMgaW4gdGhlIHByb2xvZ3VlIG9mIGdlbmVyYXRlX3F1 ZXJpZXNfZm9yX3BhdGhfcGF0dGVybigpLgorICovCitzdGF0aWMgUXVlcnkgKgorZ2VuZXJhdGVf cXVlcnlfZm9yX2dyYXBoX3BhdGgoUmFuZ2VUYmxFbnRyeSAqcnRlLCBMaXN0ICpncmFwaF9wYXRo KQoreworCUxpc3RDZWxsICAgKmxjOworCVF1ZXJ5CSAgICpwYXRoX3F1ZXJ5ID0gbWFrZU5vZGUo UXVlcnkpOworCUxpc3QJICAgKmZyb21saXN0ID0gTklMOworCUxpc3QJICAgKnF1YWxfZXhwcnMg PSBOSUw7CisKKwlwYXRoX3F1ZXJ5LT5jb21tYW5kVHlwZSA9IENNRF9TRUxFQ1Q7CisKKwlmb3Jl YWNoKGxjLCBncmFwaF9wYXRoKQorCXsKKwkJc3RydWN0IGdyYXBoX3BhdGhfZWxlbWVudCAqZ3Bl ID0gKHN0cnVjdCBncmFwaF9wYXRoX2VsZW1lbnQgKikgbGZpcnN0KGxjKTsKKwkJR3JhcGhFbGVt ZW50UGF0dGVybiAqZ2VwID0gZ3BlLT5wYXJlbnRfZ2VwOworCQlSYW5nZVRibFJlZiAqcnRyOwor CQlSZWxhdGlvbglyZWw7CisJCVBhcnNlTmFtZXNwYWNlSXRlbSAqcG5pOworCisJCUFzc2VydChn ZXAtPmtpbmQgPT0gVkVSVEVYX1BBVFRFUk4gfHwKKwkJCSAgIGdlcC0+a2luZCA9PSBFREdFX1BB VFRFUk5fTEVGVCB8fCBnZXAtPmtpbmQgPT0gRURHRV9QQVRURVJOX1JJR0hUKTsKKwkJQXNzZXJ0 KCFnZXAtPnF1YW50aWZpZXIpOworCisJCWlmIChnZXAtPmtpbmQgPT0gRURHRV9QQVRURVJOX0xF RlQgfHwgZ2VwLT5raW5kID09IEVER0VfUEFUVEVSTl9SSUdIVCkKKwkJeworCQkJc3RydWN0IGdy YXBoX3BhdGhfZWxlbWVudCAqc3JjX2dwZSA9IGxpc3RfbnRoKGdyYXBoX3BhdGgsIGdwZS0+c3Jj ZWxlbV9wb3MpOworCQkJc3RydWN0IGdyYXBoX3BhdGhfZWxlbWVudCAqZGVzdF9ncGUgPSBsaXN0 X250aChncmFwaF9wYXRoLCBncGUtPmRlc3RlbGVtX3Bvcyk7CisKKwkJCS8qCisJCQkgKiBNYWtl IHN1cmUgdGhhdCB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBlbGVtZW50cyBvZiB0aGlzIGVk Z2UKKwkJCSAqIGFyZSBwbGFjZWQgYXQgdGhlIGV4cGVjdGVkIHBvc2l0aW9uIGFuZCBoYXZlIHRo ZSBjb3JyZXQKKwkJCSAqIFJhbmdlVGJsRW50cnkgaW5kZXhlcyBhcyBzZXR1cCBieSBjcmVhdGVf Z3BlX2Zvcl9lbGVtZW50KCkuCisJCQkgKi8KKwkJCUFzc2VydChncGUtPnNyY2VsZW1fcG9zID09 IHNyY19ncGUtPnJ0aW5kZXggLSAxICYmCisJCQkJICAgZ3BlLT5kZXN0ZWxlbV9wb3MgPT0gZGVz dF9ncGUtPnJ0aW5kZXggLSAxKTsKKworCQkJLyoKKwkJCSAqIElmIHRoZSBnaXZlbiBlZGdlIGVs ZW1lbnQgZG9lcyBub3QgY29ubmVjdCB0aGUgYWRqYWNlbnQgdmVydGV4CisJCQkgKiBlbGVtZW50 cyBpbiB0aGlzIHBhdGgsIHRoZSBwYXRoIGlzIGJyb2tlbi4gQWJhbmRvbiB0aGlzIHBhdGggYXMK KwkJCSAqIGl0IHdvbid0IHJldHVybiBhbnkgcm93cy4KKwkJCSAqLworCQkJaWYgKHNyY19ncGUt PmVsZW1vaWQgIT0gZ3BlLT5zcmN2ZXJ0ZXhpZCB8fAorCQkJCWRlc3RfZ3BlLT5lbGVtb2lkICE9 IGdwZS0+ZGVzdHZlcnRleGlkKQorCQkJCXJldHVybiBOVUxMOworCQl9CisKKwkJLyogQ3JlYXRl IFJhbmdlVGJsRW50cnkgZm9yIHRoaXMgZWxlbWVudCB0YWJsZS4gKi8KKwkJcmVsID0gdGFibGVf b3BlbihncGUtPnJlbG9pZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJcG5pID0gYWRkUmFuZ2VUYWJs ZUVudHJ5Rm9yUmVsYXRpb24obWFrZV9wYXJzZXN0YXRlKE5VTEwpLCByZWwsIEFjY2Vzc1NoYXJl TG9jaywKKwkJCQkJCQkJCQkJTlVMTCwgdHJ1ZSwgZmFsc2UpOworCQl0YWJsZV9jbG9zZShyZWws IE5vTG9jayk7CisJCXBhdGhfcXVlcnktPnJ0YWJsZSA9IGxhcHBlbmQocGF0aF9xdWVyeS0+cnRh YmxlLCBwbmktPnBfcnRlKTsKKwkJcGF0aF9xdWVyeS0+cnRlcGVybWluZm9zID0gbGFwcGVuZChw YXRoX3F1ZXJ5LT5ydGVwZXJtaW5mb3MsIHBuaS0+cF9wZXJtaW5mbyk7CisJCXBuaS0+cF9ydGUt PnBlcm1pbmZvaW5kZXggPSBsaXN0X2xlbmd0aChwYXRoX3F1ZXJ5LT5ydGVwZXJtaW5mb3MpOwor CQlydHIgPSBtYWtlTm9kZShSYW5nZVRibFJlZik7CisJCXJ0ci0+cnRpbmRleCA9IGxpc3RfbGVu Z3RoKHBhdGhfcXVlcnktPnJ0YWJsZSk7CisJCWZyb21saXN0ID0gbGFwcGVuZChmcm9tbGlzdCwg cnRyKTsKKworCQkvKgorCQkgKiBNYWtlIHN1cmUgdGhhdCB0aGUgYXNzdW1wdGlvbiBtZW50aW9u ZWQgaW4gY3JlYXRlX2dwZV9mb3JfZWxlbWVudCgpCisJCSAqIGhvbGRzIHRydWUuIFRoYXQgdGhl IGVsZW1lbnRzJyBSYW5nZVRibEVudHJ5cyBhcmUgYWRkZWQgaW4gdGhlCisJCSAqIG9yZGVyIGlu IHdoaWNoIHRoZXkgYXBwZWFyIGluIHRoZSBwYXRoLgorCQkgKi8KKwkJQXNzZXJ0KGdwZS0+cnRp bmRleCA9PSBydHItPnJ0aW5kZXgpOworCisJCWlmIChnZXAtPndoZXJlQ2xhdXNlKQorCQl7CisJ CQlOb2RlCSAgICp0cjsKKworCQkJdHIgPSByZXBsYWNlX3Byb3BlcnR5X3JlZnMocnRlLT5yZWxp ZCwgZ2VwLT53aGVyZUNsYXVzZSwgbGlzdF9tYWtlMShncGUpKTsKKworCQkJcXVhbF9leHBycyA9 IGxhcHBlbmQocXVhbF9leHBycywgdHIpOworCQl9CisJCXF1YWxfZXhwcnMgPSBsaXN0X2NvbmNh dChxdWFsX2V4cHJzLCBncGUtPnF1YWxfZXhwcnMpOworCX0KKworCXBhdGhfcXVlcnktPmpvaW50 cmVlID0gbWFrZUZyb21FeHByKGZyb21saXN0LAorCQkJCQkJCQkJCShOb2RlICopIG1ha2VCb29s RXhwcihBTkRfRVhQUiwgcXVhbF9leHBycywgLTEpKTsKKworCS8qIEVhY2ggcGF0aCBxdWVyeSBw cm9qZWN0cyB0aGUgY29sdW1ucyBzcGVjaWZpZWQgaW4gdGhlIEdSQUhfVEFCTEUgY2xhdXNlICov CisJcGF0aF9xdWVyeS0+dGFyZ2V0TGlzdCA9IGNhc3ROb2RlKExpc3QsCisJCQkJCQkJCQkgIHJl cGxhY2VfcHJvcGVydHlfcmVmcyhydGUtPnJlbGlkLAorCQkJCQkJCQkJCQkJCQkJKE5vZGUgKikg cnRlLT5ncmFwaF90YWJsZV9jb2x1bW5zLAorCQkJCQkJCQkJCQkJCQkJZ3JhcGhfcGF0aCkpOwor CXJldHVybiBwYXRoX3F1ZXJ5OworfQorCisvKgorICogQ29uc3RydWN0IGEgcXVlcnkgd2hpY2gg d291bGQgbm90IHJldHVybiBhbnkgcm93cy4KKyAqCisgKiBNb3JlIGRldGFpbHMgaW4gdGhlIHBy b2xvZ3VlIG9mIGdlbmVyYXRlX3F1ZXJpZXNfZm9yX3BhdGhfcGF0dGVybigpLgorICovCitzdGF0 aWMgUXVlcnkgKgorZ2VuZXJhdGVfcXVlcnlfZm9yX2VtcHR5X3BhdGhfcGF0dGVybihSYW5nZVRi bEVudHJ5ICpydGUpCit7CisJUXVlcnkJICAgKnF1ZXJ5ID0gbWFrZU5vZGUoUXVlcnkpOworCUxp c3RDZWxsICAgKmxjOworCisJcXVlcnktPmNvbW1hbmRUeXBlID0gQ01EX1NFTEVDVDsKKworCisJ cXVlcnktPnJ0YWJsZSA9IE5JTDsKKwlxdWVyeS0+cnRlcGVybWluZm9zID0gTklMOworCisKKwlx dWVyeS0+am9pbnRyZWUgPSBtYWtlRnJvbUV4cHIoTklMLCAoTm9kZSAqKSBtYWtlQm9vbENvbnN0 KGZhbHNlLCBmYWxzZSkpOworCisJLyoKKwkgKiBFdmVuIHRob3VnaCBubyByb3dzIGFyZSByZXR1 cm5lZCwgdGhlIHJlc3VsdCBzdGlsbCBwcm9qZWN0cyB0aGUgc2FtZQorCSAqIGNvbHVtbnMgYXMg cHJvamVjdGVkIGJ5IEdSQVBIX1RBQkxFIGNsYXVzZS4gRG8gdGhpcyBieSBjb25zdHJ1Y3Rpbmcg YQorCSAqIHRhcmdldCBsaXN0IGZ1bGwgb2YgTlVMTCB2YWx1ZXMuCisJICovCisJZm9yZWFjaChs YywgcnRlLT5ncmFwaF90YWJsZV9jb2x1bW5zKQorCXsKKwkJVGFyZ2V0RW50cnkgKnRlID0gY29w eU9iamVjdChsZmlyc3Rfbm9kZShUYXJnZXRFbnRyeSwgbGMpKTsKKwkJTm9kZQkgICAqbnRlID0g KE5vZGUgKikgdGUtPmV4cHI7CisKKwkJdGUtPmV4cHIgPSAoRXhwciAqKSBtYWtlTnVsbENvbnN0 KGV4cHJUeXBlKG50ZSksIGV4cHJUeXBtb2QobnRlKSwgZXhwckNvbGxhdGlvbihudGUpKTsKKwkJ cXVlcnktPnRhcmdldExpc3QgPSBsYXBwZW5kKHF1ZXJ5LT50YXJnZXRMaXN0LCB0ZSk7CisJfQor CisJcmV0dXJuIHF1ZXJ5OworfQorCisvKgorICogQ29uc3RydWN0IGEgcXVlcnkgd2hpY2ggaXMg VU5JT04gb2YgZ2l2ZW4gcGF0aCBxdWVyaWVzLgorICoKKyAqIFRoZSBmdW5jdGlvbiBkZXN0cm95 cyBnaXZlbiBwYXRocXVlcmllcyBsaXN0IHdoaWxlIGNvbnN0cnVjdGluZworICogU2V0T3BlcmF0 aW9uU3RtdCByZWNydXJzaXZlbHkuIEhlbmNlIHRoZSBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyB3 aXRoCisgKiBgcGF0aHF1ZXJpZXNgIHNldCB0byBOSUwuCisgKi8KK3N0YXRpYyBRdWVyeSAqCitn ZW5lcmF0ZV91bmlvbl9mcm9tX3BhdGhxdWVyaWVzKExpc3QgKipwYXRocXVlcmllcykKK3sKKwlM aXN0CSAgICpydGFibGUgPSBOSUw7CisJUXVlcnkJICAgKnNhbXBsZVF1ZXJ5ID0gbGluaXRpYWxf bm9kZShRdWVyeSwgKnBhdGhxdWVyaWVzKTsKKwlTZXRPcGVyYXRpb25TdG10ICpzb3N0bXQ7CisJ UXVlcnkJICAgKnVuaW9uX3F1ZXJ5OworCWludAkJCXJlc25vOworCUxpc3RDZWxsICAgKmxjdGws CisJCQkgICAqbGN0LAorCQkJICAgKmxjbSwKKwkJCSAgICpsY2M7CisKKwlBc3NlcnQobGlzdF9s ZW5ndGgoKnBhdGhxdWVyaWVzKSA+IDApOworCisJLyogSWYgdGhlcmUncyBvbmx5IG9uZSBwYXRo cXVlcnksIG5vIG5lZWQgdG8gY29uc3RydWN0IGEgVU5JT04gcXVlcnkuICovCisJaWYgKGxpc3Rf bGVuZ3RoKCpwYXRocXVlcmllcykgPT0gMSkKKwl7CisJCSpwYXRocXVlcmllcyA9IE5JTDsKKwkJ cmV0dXJuIHNhbXBsZVF1ZXJ5OworCX0KKworCXNvc3RtdCA9IGNhc3ROb2RlKFNldE9wZXJhdGlv blN0bXQsCisJCQkJCSAgZ2VuZXJhdGVfc2V0b3BfZnJvbV9wYXRocXVlcmllcygqcGF0aHF1ZXJp ZXMsICZydGFibGUsIE5VTEwpKTsKKworCS8qIEVuY2Fwc3VsYXRlIHRoZSBzZXQgb3BlcmF0aW9u IHN0YXRlbWVudCBpbnRvIGEgUXVlcnkuICovCisJdW5pb25fcXVlcnkgPSBtYWtlTm9kZShRdWVy eSk7CisJdW5pb25fcXVlcnktPmNvbW1hbmRUeXBlID0gQ01EX1NFTEVDVDsKKwl1bmlvbl9xdWVy eS0+cnRhYmxlID0gcnRhYmxlOworCXVuaW9uX3F1ZXJ5LT5zZXRPcGVyYXRpb25zID0gKE5vZGUg Kikgc29zdG10OworCXVuaW9uX3F1ZXJ5LT5ydGVwZXJtaW5mb3MgPSBOSUw7CisJdW5pb25fcXVl cnktPmpvaW50cmVlID0gbWFrZUZyb21FeHByKE5JTCwgTlVMTCk7CisKKwkvKgorCSAqIEdlbmVy YXRlIGR1bW15IHRhcmdldGxpc3QgZm9yIG91dGVyIHF1ZXJ5IHVzaW5nIGNvbHVtbiBuYW1lcyBm cm9tIG9uZQorCSAqIG9mIHRoZSBxdWVyaWVzIGFuZCBjb21tb24gZGF0YXR5cGVzL2NvbGxhdGlv bnMgb2YgdG9wbW9zdCBzZXQKKwkgKiBvcGVyYXRpb24uICBJdCBzaG91bGRuJ3QgbWF0dGVyIHdo aWNoIHF1ZXJ5LiBBbHNvIGl0IHNob3VsZG4ndCBtYXR0ZXIKKwkgKiB3aGljaCBSVCBpbmRleCBp cyB1c2VkIGFzIHZhcm5vIGluIHRoZSB0YXJnZXQgbGlzdCBlbnRyaWVzLCBhcyBsb25nIGFzCisJ ICogaXQgY29ycmVzcG9uZHMgdG8gYSByZWFsIFJUIGVudHJ5OyBlbHNlIGZ1bm55IHRoaW5ncyBt YXkgaGFwcGVuIHdoZW4KKwkgKiB0aGUgdHJlZSBpcyBtYXNoZWQgYnkgcnVsZSByZXdyaXRpbmcu IFNvIHdlIHVzZSAxIHNpbmNlIHRoZXJlJ3MgYWx3YXlzCisJICogb25lIFJUIGVudHJ5IGF0IGxl YXN0LgorCSAqLworCUFzc2VydChydF9mZXRjaCgxLCBydGFibGUpKTsKKwl1bmlvbl9xdWVyeS0+ dGFyZ2V0TGlzdCA9IE5VTEw7CisJcmVzbm8gPSAxOworCWZvcmZvdXIobGN0LCBzb3N0bXQtPmNv bFR5cGVzLAorCQkJbGNtLCBzb3N0bXQtPmNvbFR5cG1vZHMsCisJCQlsY2MsIHNvc3RtdC0+Y29s Q29sbGF0aW9ucywKKwkJCWxjdGwsIHNhbXBsZVF1ZXJ5LT50YXJnZXRMaXN0KQorCXsKKwkJT2lk CQkJY29sVHlwZSA9IGxmaXJzdF9vaWQobGN0KTsKKwkJaW50MzIJCWNvbFR5cG1vZCA9IGxmaXJz dF9pbnQobGNtKTsKKwkJT2lkCQkJY29sQ29sbGF0aW9uID0gbGZpcnN0X29pZChsY2MpOworCQlU YXJnZXRFbnRyeSAqc2FtcGxlX3RsZSA9IChUYXJnZXRFbnRyeSAqKSBsZmlyc3QobGN0bCk7CisJ CWNoYXIJICAgKmNvbE5hbWU7CisJCVRhcmdldEVudHJ5ICp0bGU7CisJCVZhcgkJICAgKnZhcjsK KworCQlBc3NlcnQoIXNhbXBsZV90bGUtPnJlc2p1bmspOworCQljb2xOYW1lID0gcHN0cmR1cChz YW1wbGVfdGxlLT5yZXNuYW1lKTsKKwkJdmFyID0gbWFrZVZhcigxLCBzYW1wbGVfdGxlLT5yZXNu bywgY29sVHlwZSwgY29sVHlwbW9kLCBjb2xDb2xsYXRpb24sIDApOworCQl2YXItPmxvY2F0aW9u ID0gZXhwckxvY2F0aW9uKChOb2RlICopIHNhbXBsZV90bGUtPmV4cHIpOworCQl0bGUgPSBtYWtl VGFyZ2V0RW50cnkoKEV4cHIgKikgdmFyLCAoQXR0ck51bWJlcikgcmVzbm8rKywgY29sTmFtZSwg ZmFsc2UpOworCQl1bmlvbl9xdWVyeS0+dGFyZ2V0TGlzdCA9IGxhcHBlbmQodW5pb25fcXVlcnkt PnRhcmdldExpc3QsIHRsZSk7CisJfQorCisJKnBhdGhxdWVyaWVzID0gTklMOworCXJldHVybiB1 bmlvbl9xdWVyeTsKK30KKworLyoKKyAqIENvbnN0cnVjdCBhIHF1ZXJ5IHdoaWNoIGlzIFVOSU9O IG9mIGFsbCB0aGUgZ2l2ZW4gcGF0aCBxdWVyaWVzLgorICoKKyAqIFRoZSBmdW5jdGlvbiBkZXN0 cm95cyBnaXZlbiBwYXRocXVlcmllcyBsaXN0IHdoaWxlIGNvbnN0cnVjdGluZworICogU2V0T3Bl cmF0aW9uU3RtdCByZWN1cnNpdmVseS4KKyAqLworc3RhdGljIE5vZGUgKgorZ2VuZXJhdGVfc2V0 b3BfZnJvbV9wYXRocXVlcmllcyhMaXN0ICpwYXRocXVlcmllcywgTGlzdCAqKnJ0YWJsZSwgTGlz dCAqKnRhcmdldGxpc3QpCit7CisJU2V0T3BlcmF0aW9uU3RtdCAqc29zdG10OworCVF1ZXJ5CSAg ICpscXVlcnk7CisJTm9kZQkgICAqcmFyZzsKKwlSYW5nZVRibFJlZiAqbHJ0ciA9IG1ha2VOb2Rl KFJhbmdlVGJsUmVmKTsKKwlMaXN0CSAgICpydGFyZ2V0bGlzdDsKKwlQYXJzZU5hbWVzcGFjZUl0 ZW0gKnBuaTsKKworCS8qIFJlY3Vyc2lvbiB0ZXJtaW5hdGlvbiBjb25kaXRpb24uICovCisJaWYg KGxpc3RfbGVuZ3RoKHBhdGhxdWVyaWVzKSA9PSAwKQorCXsKKwkJKnRhcmdldGxpc3QgPSBOSUw7 CisJCXJldHVybiBOVUxMOworCX0KKworCWxxdWVyeSA9IGxpbml0aWFsX25vZGUoUXVlcnksIHBh dGhxdWVyaWVzKTsKKworCXBuaSA9IGFkZFJhbmdlVGFibGVFbnRyeUZvclN1YnF1ZXJ5KG1ha2Vf cGFyc2VzdGF0ZShOVUxMKSwgbHF1ZXJ5LCBOVUxMLAorCQkJCQkJCQkJCWZhbHNlLCBmYWxzZSk7 CisJKnJ0YWJsZSA9IGxhcHBlbmQoKnJ0YWJsZSwgcG5pLT5wX3J0ZSk7CisJbHJ0ci0+cnRpbmRl eCA9IGxpc3RfbGVuZ3RoKCpydGFibGUpOworCXJhcmcgPSBnZW5lcmF0ZV9zZXRvcF9mcm9tX3Bh dGhxdWVyaWVzKGxpc3RfZGVsZXRlX2ZpcnN0KHBhdGhxdWVyaWVzKSwgcnRhYmxlLCAmcnRhcmdl dGxpc3QpOworCWlmIChyYXJnID09IE5VTEwpCisJeworCQkvKgorCQkgKiBObyBmdXJ0aGVyIHBh dGggcXVlcmllcyBpbiB0aGUgbGlzdC4gQ29udmVydCB0aGUgbGFzdCBxdWVyeSBpbnRvIGFuCisJ CSAqIFJhbmdlVGJsUmVmIGFzIGV4cGVjdGVkIGJ5IFNldE9wZXJhdGlvblN0bXQuIEV4dHJhY3Qg YSBsaXN0IG9mIHRoZQorCQkgKiBub24tanVuayBUTEVzIGZvciB1cHBlci1sZXZlbCBwcm9jZXNz aW5nLgorCQkgKi8KKwkJaWYgKHRhcmdldGxpc3QpCisJCXsKKwkJCUxpc3RDZWxsICAgKnRsOwor CisJCQkqdGFyZ2V0bGlzdCA9IE5JTDsKKwkJCWZvcmVhY2godGwsIGxxdWVyeS0+dGFyZ2V0TGlz dCkKKwkJCXsKKwkJCQlUYXJnZXRFbnRyeSAqdGxlID0gKFRhcmdldEVudHJ5ICopIGxmaXJzdCh0 bCk7CisKKwkJCQlpZiAoIXRsZS0+cmVzanVuaykKKwkJCQkJKnRhcmdldGxpc3QgPSBsYXBwZW5k KCp0YXJnZXRsaXN0LCB0bGUpOworCQkJfQorCQl9CisJCXJldHVybiAoTm9kZSAqKSBscnRyOwor CX0KKworCXNvc3RtdCA9IG1ha2VOb2RlKFNldE9wZXJhdGlvblN0bXQpOworCXNvc3RtdC0+b3Ag PSBTRVRPUF9VTklPTjsKKwlzb3N0bXQtPmFsbCA9IHRydWU7CisJc29zdG10LT5sYXJnID0gKE5v ZGUgKikgbHJ0cjsKKwlzb3N0bXQtPnJhcmcgPSByYXJnOworCWNvbnN0cnVjdFNldE9wVGFyZ2V0 bGlzdChzb3N0bXQsIGxxdWVyeS0+dGFyZ2V0TGlzdCwgcnRhcmdldGxpc3QsIHRhcmdldGxpc3Qs ICJVTklPTiIsIE5VTEwsIGZhbHNlKTsKKworCXJldHVybiAoTm9kZSAqKSBzb3N0bXQ7Cit9CisK Ky8qCisgKiBDb25zdHJ1Y3QgYSBncmFwaF9wYXRoX2VsZW1lbnQgb2JqZWN0IGZvciB0aGUgZ3Jh cGggZWxlbWVudCBnaXZlbiBieSBgZWxlbW9pZGAKKyAqIHN0YXRpc2ZpZWQgYnkgdGhlIGdyYXBo IGVsZW1lbnQgcGF0dGVybiBgZ2VwYC4KKyAqCisgKiAnZWxlbXBvc2AgaXMgdGhlIHBvc2l0aW9u IG9mIGdpdmVuIGVsZW1lbnQgcGF0dGVybiBpbiB0aGUgcGF0aCBwYXR0ZXJuLgorICoKKyAqIElm IHRoZSB0eXBlIG9mIGdyYXBoIGVsZW1lbnQgZG9lcyBub3QgZml0IHRoZSBlbGVtZW50IHBhdHRl cm4ga2luZCwgdGhlCisgKiBmdW5jdGlvbiByZXR1cm5zIE5VTEwuCisgKi8KK3N0YXRpYyBzdHJ1 Y3QgZ3JhcGhfcGF0aF9lbGVtZW50ICoKK2NyZWF0ZV9ncGVfZm9yX2VsZW1lbnQoR3JhcGhFbGVt ZW50UGF0dGVybiAqZ2VwLCBPaWQgZWxlbW9pZCwgaW50IGVsZW1wb3MpCit7CisJSGVhcFR1cGxl CWVsZXR1cCA9IFNlYXJjaFN5c0NhY2hlMShQUk9QR1JBUEhFTE9JRCwgT2JqZWN0SWRHZXREYXR1 bShlbGVtb2lkKSk7CisJRm9ybV9wZ19wcm9wZ3JhcGhfZWxlbWVudCBwZ2Vmb3JtOworCXN0cnVj dCBncmFwaF9wYXRoX2VsZW1lbnQgKmdwZTsKKworCWlmICghZWxldHVwKQorCQllbG9nKEVSUk9S LCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcHJvcGVydHkgZ3JhcGggZWxlbWVudCAldSIsIGVs ZW1vaWQpOworCXBnZWZvcm0gPSAoKEZvcm1fcGdfcHJvcGdyYXBoX2VsZW1lbnQpIEdFVFNUUlVD VChlbGV0dXApKTsKKworCWlmICgocGdlZm9ybS0+cGdla2luZCA9PSBQR0VLSU5EX1ZFUlRFWCAm JiBnZXAtPmtpbmQgIT0gVkVSVEVYX1BBVFRFUk4pIHx8CisJCShwZ2Vmb3JtLT5wZ2VraW5kID09 IFBHRUtJTkRfRURHRSAmJiAhSVNfRURHRV9QQVRURVJOKGdlcC0+a2luZCkpKQorCXsKKwkJUmVs ZWFzZVN5c0NhY2hlKGVsZXR1cCk7CisJCXJldHVybiBOVUxMOworCX0KKworCWdwZSA9IHBhbGxv YzBfb2JqZWN0KHN0cnVjdCBncmFwaF9wYXRoX2VsZW1lbnQpOworCWdwZS0+cGFyZW50X2dlcCA9 IGdlcDsKKwlncGUtPmVsZW1vaWQgPSBlbGVtb2lkOworCWdwZS0+cmVsb2lkID0gcGdlZm9ybS0+ cGdlcmVsaWQ7CisJZ3BlLT5xdWFsX2V4cHJzID0gTklMOworCisJLyoKKwkgKiBXaGVuIHRoZSBw YXRoIGNvbnRhaW5pbmcgdGhpcyBlbGVtZW50IHdpbGwgYmUgY29udmVydGVkIGludG8gYSBxdWVy eQorCSAqIChnZW5lcmF0ZV9xdWVyeV9mb3JfZ3JhcGhfcGF0aCgpKSB0aGlzIGVsZW1lbnQgd2ls bCBiZSBjb252ZXJ0ZWQgaW50byBhCisJICogUmFuZ2VUYmxFbnRyeS4gVGhlIFJhbmdlVGJsRW50 cnlzIGFyZSBjcmVhdGVkIGluIHRoZSBzYW1lIG9yZGVyIGluCisJICogd2hpY2ggZWxlbWVudHMg YXBwZWFyIGluIHRoZSBwYXRoIGFuZCB0aHVzIGdldCBjb25zZWN1dGl2ZSBydGluZGV4ZXMuCisJ ICogS25vd2luZyB0aG9zZSBydGluZGV4ZXMgaGVyZSBtYWtlcyBpdCBwb3NzaWJsZSB0byBjcmFm dCBlbGVtZW50cycgcXVhbAorCSAqIGV4cHJlc3Npb25zIG9ubHkgb25jZS4gT3RoZXJ3aXNlIHRo ZXkgbmVlZCB0byBiZSBjcmFmdGVkIGFzIG1hbnkgdGltZXMKKwkgKiBhcyB0aGUgbnVtYmVyIG9m IHBhdGhzIHRoaXMgZWxlbWVudCBhcHBlYXJzIGluLiBIZW5jZSBzYXZlIHRoZSBhc3N1bWVkCisJ ICogcnRpbmRleCBzbyB0aGF0IGl0IGNhbiBiZSB2ZXJpZmllZCBsYXRlci4KKwkgKi8KKwlncGUt PnJ0aW5kZXggPSBlbGVtcG9zICsgMTsKKworCWlmIChJU19FREdFX1BBVFRFUk4oZ2VwLT5raW5k KSkKKwl7CisJCWludAkJCXNyY19ydGluZGV4OworCQlpbnQJCQlkZXN0X3J0aW5kZXg7CisJCUxp c3QJICAgKmVkZ2VfcXVhbDsKKworCQlncGUtPnNyY3ZlcnRleGlkID0gcGdlZm9ybS0+cGdlc3Jj dmVydGV4aWQ7CisJCWdwZS0+ZGVzdHZlcnRleGlkID0gcGdlZm9ybS0+cGdlZGVzdHZlcnRleGlk OworCisJCWlmIChnZXAtPmtpbmQgPT0gRURHRV9QQVRURVJOX1JJR0hUKQorCQl7CisJCQlncGUt PnNyY2VsZW1fcG9zID0gZWxlbXBvcyAtIDE7CisJCQlncGUtPmRlc3RlbGVtX3BvcyA9IGVsZW1w b3MgKyAxOworCQkJc3JjX3J0aW5kZXggPSBncGUtPnJ0aW5kZXggLSAxOworCQkJZGVzdF9ydGlu ZGV4ID0gZ3BlLT5ydGluZGV4ICsgMTsKKwkJfQorCQllbHNlIGlmIChnZXAtPmtpbmQgPT0gRURH RV9QQVRURVJOX0xFRlQpCisJCXsKKwkJCWdwZS0+c3JjZWxlbV9wb3MgPSBlbGVtcG9zICsgMTsK KwkJCWdwZS0+ZGVzdGVsZW1fcG9zID0gZWxlbXBvcyAtIDE7CisJCQlzcmNfcnRpbmRleCA9IGdw ZS0+cnRpbmRleCArIDE7CisJCQlkZXN0X3J0aW5kZXggPSBncGUtPnJ0aW5kZXggLSAxOworCQl9 CisJCWVsc2UKKwkJeworCQkJLyogV2UgZG9uJ3Qgc3VwcG9ydCB1bmRpcmVjdGVkIGVkZ2VzIHll dC4gKi8KKwkJCUFzc2VydChmYWxzZSk7CisJCQlncGUtPnNyY2VsZW1fcG9zID0gZWxlbXBvczsK KwkJCWdwZS0+ZGVzdGVsZW1fcG9zID0gZWxlbXBvczsKKwkJCXNyY19ydGluZGV4ID0gZ3BlLT5y dGluZGV4OworCQkJZGVzdF9ydGluZGV4ID0gZ3BlLT5ydGluZGV4OworCQl9CisKKwkJZWRnZV9x dWFsID0gYnVpbGRfZWRnZV92ZXJ0ZXhfbGlua19xdWFscyhlbGV0dXAsIGdwZS0+cnRpbmRleCwg c3JjX3J0aW5kZXgsCisJCQkJCQkJCQkJCQkgQW51bV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9wZ2Vz cmNrZXksCisJCQkJCQkJCQkJCQkgQW51bV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9wZ2VzcmNyZWYp OworCQlncGUtPnF1YWxfZXhwcnMgPSBsaXN0X2NvbmNhdChncGUtPnF1YWxfZXhwcnMsIGVkZ2Vf cXVhbCk7CisJCWVkZ2VfcXVhbCA9IGJ1aWxkX2VkZ2VfdmVydGV4X2xpbmtfcXVhbHMoZWxldHVw LCBncGUtPnJ0aW5kZXgsIGRlc3RfcnRpbmRleCwKKwkJCQkJCQkJCQkJCSBBbnVtX3BnX3Byb3Bn cmFwaF9lbGVtZW50X3BnZWRlc3RrZXksCisJCQkJCQkJCQkJCQkgQW51bV9wZ19wcm9wZ3JhcGhf ZWxlbWVudF9wZ2VkZXN0cmVmKTsKKwkJZ3BlLT5xdWFsX2V4cHJzID0gbGlzdF9jb25jYXQoZ3Bl LT5xdWFsX2V4cHJzLCBlZGdlX3F1YWwpOworCX0KKworCVJlbGVhc2VTeXNDYWNoZShlbGV0dXAp OworCisJcmV0dXJuIGdwZTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKgorZ2V0X2dlcF9raW5k X25hbWUoR3JhcGhFbGVtZW50UGF0dGVybktpbmQgZ2Vwa2luZCkKK3sKKwlzd2l0Y2ggKGdlcGtp bmQpCisJeworCQljYXNlIFZFUlRFWF9QQVRURVJOOgorCQkJcmV0dXJuICJ2ZXJ0ZXgiOworCQlj YXNlIEVER0VfUEFUVEVSTl9MRUZUOgorCQkJcmV0dXJuICJlZGdlIHBvaW50aW5nIGxlZnQiOwor CQljYXNlIEVER0VfUEFUVEVSTl9SSUdIVDoKKwkJCXJldHVybiAiZWRnZSBwb2ludGluZyByaWdo dCI7CisJCWNhc2UgRURHRV9QQVRURVJOX0FOWToKKwkJCXJldHVybiAidW5kaXJlY3RlZCBlZGdl IjsKKwkJY2FzZSBQQVJFTl9FWFBSOgorCQkJcmV0dXJuICJuZXN0ZWQgcGF0aCBwYXR0ZXJuIjsK Kwl9CisKKwlwZ191bnJlYWNoYWJsZSgpOworfQorCisvKgorICogUmV0dXJucyB0aGUgbGlzdCBv ZiBPSURzIG9mIGdyYXBoIGxhYmVscyB3aGljaCB0aGUgZ2l2ZW4gbGFiZWwgZXhwcmVzc2lvbgor ICogcmVzb2x2ZXMgdG8gaW4gdGhlIGdpdmVuIHByb3BlcnR5IGdyYXBoLgorICovCitzdGF0aWMg TGlzdCAqCitnZXRfbGFiZWxzX2Zvcl9leHByKE9pZCBwcm9wZ3JhcGhpZCwgTm9kZSAqbGFiZWxl eHByKQoreworCUxpc3QJICAgKmxhYmVsX29pZHM7CisKKwlpZiAoIWxhYmVsZXhwcikKKwl7CisJ CVJlbGF0aW9uCXJlbDsKKwkJU3lzU2NhbkRlc2Mgc2NhbjsKKwkJU2NhbktleURhdGEga2V5WzFd OworCQlIZWFwVHVwbGUJdHVwOworCisJCS8qCisJCSAqIEFjY29yZGluZyB0byBzZWN0aW9uIDku MiAiQ29udGV4dHVhbCBpbmZlcmVuY2Ugb2YgYSBzZXQgb2YgbGFiZWxzIgorCQkgKiBzdWJjbGF1 c2UgMi5hLmlpIG9mIFNRTC9QR1Egc3RhbmRhcmQsIGVsZW1lbnQgcGF0dGVybiB3aGljaCBkb2Vz CisJCSAqIG5vdCBoYXZlIGEgbGFiZWwgZXhwcmVzc2lvbiBpcyBjb25zaWRlcmVkIHRvIGhhdmUg bGFiZWwgZXhwcmVzc2lvbgorCQkgKiBlcXVpdmFsZW50IHRvICclfCElJyB3aGljaCBpcyBzZXQg b2YgYWxsIGxhYmVscy4KKwkJICovCisJCWxhYmVsX29pZHMgPSBOSUw7CisJCXJlbCA9IHRhYmxl X29wZW4oUHJvcGdyYXBoTGFiZWxSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCQlTY2Fu S2V5SW5pdCgma2V5WzBdLAorCQkJCQlBbnVtX3BnX3Byb3BncmFwaF9sYWJlbF9wZ2xwZ2lkLAor CQkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsCisJCQkJCUZfT0lERVEsIE9iamVjdElkR2V0RGF0 dW0ocHJvcGdyYXBoaWQpKTsKKwkJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihyZWwsIFByb3Bn cmFwaExhYmVsR3JhcGhOYW1lSW5kZXhJZCwKKwkJCQkJCQkJICB0cnVlLCBOVUxMLCAxLCBrZXkp OworCQl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXAgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4p KSkKKwkJeworCQkJRm9ybV9wZ19wcm9wZ3JhcGhfbGFiZWwgbGFiZWwgPSAoRm9ybV9wZ19wcm9w Z3JhcGhfbGFiZWwpIEdFVFNUUlVDVCh0dXApOworCisJCQlsYWJlbF9vaWRzID0gbGFwcGVuZF9v aWQobGFiZWxfb2lkcywgbGFiZWwtPm9pZCk7CisJCX0KKwkJc3lzdGFibGVfZW5kc2NhbihzY2Fu KTsKKwkJdGFibGVfY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCX0KKwllbHNlIGlmIChJ c0EobGFiZWxleHByLCBHcmFwaExhYmVsUmVmKSkKKwl7CisJCUdyYXBoTGFiZWxSZWYgKmdsciA9 IGNhc3ROb2RlKEdyYXBoTGFiZWxSZWYsIGxhYmVsZXhwcik7CisKKwkJbGFiZWxfb2lkcyA9IGxp c3RfbWFrZTFfb2lkKGdsci0+bGFiZWxpZCk7CisJfQorCWVsc2UgaWYgKElzQShsYWJlbGV4cHIs IEJvb2xFeHByKSkKKwl7CisJCUJvb2xFeHByICAgKmJlID0gY2FzdE5vZGUoQm9vbEV4cHIsIGxh YmVsZXhwcik7CisJCUxpc3QJICAgKmxhYmVsX2V4cHJzID0gYmUtPmFyZ3M7CisJCUxpc3RDZWxs ICAgKmxsYzsKKworCQlsYWJlbF9vaWRzID0gTklMOworCQlmb3JlYWNoKGxsYywgbGFiZWxfZXhw cnMpCisJCXsKKwkJCUdyYXBoTGFiZWxSZWYgKmdsciA9IGxmaXJzdF9ub2RlKEdyYXBoTGFiZWxS ZWYsIGxsYyk7CisKKwkJCWxhYmVsX29pZHMgPSBsYXBwZW5kX29pZChsYWJlbF9vaWRzLCBnbHIt PmxhYmVsaWQpOworCQl9CisJfQorCWVsc2UKKwkJZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIGxh YmVsIGV4cHJlc3Npb24gdHlwZTogJWQiLCAoaW50KSBub2RlVGFnKGxhYmVsZXhwcikpOworCisJ cmV0dXJuIGxhYmVsX29pZHM7Cit9CisKKy8qCisgKiBHaXZlbiBhIGdyYXBoIGVsZW1lbnQgcGF0 dGVybiBgZ2VwYCwgcmV0dXJuIGEgbGlzdCBvZiBhbGwgdGhlIGdyYXBoIGVsZW1lbnRzCisgKiB0 aGF0IHNhdGlzZnkgdGhlIGdyYXBoIHBhdHRlcm4uCisgKgorICogRmlyc3Qgd2UgZmluZCBhbGwg dGhlIGdyYXBoIGxhYmVscyB0aGF0IHNhdGlzZnkgdGhlIGxhYmVsIGV4cHJlc3Npb24gaW4KKyAq IGdyYXBoIGVsZW1lbnQgcGF0dGVybi4gRWFjaCBsYWJlbCBoYXMgYXNzb2NpYXRlZCB3aXRoIG9u ZSBvciBtb3JlIGdyYXBoCisgKiBlbGVtZW50cy4gQSB1bmlvbiBvZiBhbGwgc3VjaCBlbGVtZW50 cyBzYXRpc2ZpZXMgdGhlIGVsZW1lbnQgcGF0dGVybi4gVGhlCisgKiByZXR1cm5lZCBsaXN0IGNv bnRhaW5zIG9uZSBncmFwaF9wYXRoX2VsZW1lbnQgb2JqZWN0IHJlcHJlc2VudGluZyBlYWNoIG9m CisgKiB0aGVzZSBlbGVtZW50cyByZXNwZWN0aXZlbHkuCisgKgorICogYGVsZW1wb3NgIGlzIHBv c2l0aW9uIG9mIHRoZSBlbGVtZW50IHBhdHRlcm4gaW4gdGhlIHBhdGggcGF0dGVybi4KKyAqLwor c3RhdGljIExpc3QgKgorZ2V0X2VsZW1lbnRzX2Zvcl9nZXAoT2lkIHByb3BncmFwaGlkLCBHcmFw aEVsZW1lbnRQYXR0ZXJuICpnZXAsIGludCBlbGVtcG9zKQoreworCUxpc3QJICAgKmxhYmVsX29p ZHMgPSBnZXRfbGFiZWxzX2Zvcl9leHByKHByb3BncmFwaGlkLCBnZXAtPmxhYmVsZXhwcik7CisJ TGlzdAkgICAqZWxlbV9vaWRzX3NlZW4gPSBOSUw7CisJTGlzdAkgICAqZWxlbV9ncGVfb2lkcyA9 IE5JTDsKKwlMaXN0CSAgICplbGVtX2dwZXMgPSBOSUw7CisJTGlzdENlbGwgICAqbGM7CisJUmVs YXRpb24JcmVsOworCVN5c1NjYW5EZXNjIHNjYW47CisJU2NhbktleURhdGEga2V5WzFdOworCUhl YXBUdXBsZQl0dXA7CisKKwlyZWwgPSB0YWJsZV9vcGVuKFByb3BncmFwaEVsZW1lbnRMYWJlbFJl bGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJZm9yZWFjaChsYywgbGFiZWxfb2lkcykKKwl7 CisJCU9pZAkJCWxhYmVsb2lkID0gbGZpcnN0X29pZChsYyk7CisJCWJvb2wJCWZvdW5kID0gZmFs c2U7CisKKwkJU2NhbktleUluaXQoJmtleVswXSwKKwkJCQkJQW51bV9wZ19wcm9wZ3JhcGhfZWxl bWVudF9sYWJlbF9wZ2VsbGFiZWxpZCwKKwkJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLAorCQkJ CQlGX09JREVRLCBPYmplY3RJZEdldERhdHVtKGxhYmVsb2lkKSk7CisJCXNjYW4gPSBzeXN0YWJs ZV9iZWdpbnNjYW4ocmVsLCBQcm9wZ3JhcGhFbGVtZW50TGFiZWxMYWJlbEluZGV4SWQsIHRydWUs CisJCQkJCQkJCSAgTlVMTCwgMSwga2V5KTsKKwkJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodHVw ID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJCXsKKwkJCUZvcm1fcGdfcHJvcGdyYXBoX2Vs ZW1lbnRfbGFiZWwgbGFiZWxfZWxlbSA9IChGb3JtX3BnX3Byb3BncmFwaF9lbGVtZW50X2xhYmVs KSBHRVRTVFJVQ1QodHVwKTsKKwkJCU9pZAkJCWVsZW1fb2lkID0gbGFiZWxfZWxlbS0+cGdlbGVs aWQ7CisKKwkJCWlmICghbGlzdF9tZW1iZXJfb2lkKGVsZW1fb2lkc19zZWVuLCBlbGVtX29pZCkp CisJCQl7CisJCQkJLyoKKwkJCQkgKiBGb3VuZCBhIG5ldyBlbGVtZW50IHRoYXQgaXMgYXNzb2Np YXRlZCB3aXRoIGxhYmVscyBpbiB0aGUKKwkJCQkgKiBnaXZlbiBlbGVtZW50IHBhdHRlcm4uIElm IGl0IGZpdHMgdGhlIGVsZW1lbnQgcGF0dGVybiBraW5kCisJCQkJICogd2Ugd2lsbCBjcmVhdGUg R3JhcGhQYXRoUGF0dGVybiBvYmplY3QgZm9yIGl0IGFuZCBmbGFnIHRoYXQKKwkJCQkgKiB0aGUg Y3VycmVudCBsYWJlbCBoYXMgYXQgbGVhc3Qgb25lIGVsZW1lbnQsIHRoYXQgc2F0aXNmaWVzCisJ CQkJICogdGhlIGdpdmVuIGVsZW1lbnQgcGF0dGVybiwgYXNzb2NpYXRlZCB3aXRoIGl0LgorCQkJ CSAqLworCQkJCXN0cnVjdCBncmFwaF9wYXRoX2VsZW1lbnQgKmdwZSA9IGNyZWF0ZV9ncGVfZm9y X2VsZW1lbnQoZ2VwLCBlbGVtX29pZCwgZWxlbXBvcyk7CisKKwkJCQlpZiAoZ3BlKQorCQkJCXsK KwkJCQkJZWxlbV9ncGVzID0gbGFwcGVuZChlbGVtX2dwZXMsIGdwZSk7CisJCQkJCWVsZW1fZ3Bl X29pZHMgPSBsYXBwZW5kX29pZChlbGVtX2dwZV9vaWRzLCBlbGVtX29pZCk7CisJCQkJCWZvdW5k ID0gdHJ1ZTsKKwkJCQl9CisKKwkJCQkvKgorCQkJCSAqIEFkZCB0aGUgZ3JhcGggZWxlbWVudCB0 byB0aGUgZWxlbWVudHMgY29uc2lkZXJlZCBzbyBmYXIgdG8KKwkJCQkgKiBhdm9pZCBwcm9jZXNz aW5nIHNhbWUgZWxlbWVudCBhc3NvY2lhdGVkIHdpdGggbXVsdGlwbGUKKwkJCQkgKiBsYWJlbHMg bXVsdGlwbGUgdGltZXMuIEFsc28gYXZvaWRzIGNyZWF0aW5nIGR1cGxpY2F0ZQorCQkJCSAqIEdy YXBoUGF0aEVsZW1lbnRzLgorCQkJCSAqLworCQkJCWVsZW1fb2lkc19zZWVuID0gbGFwcGVuZF9v aWQoZWxlbV9vaWRzX3NlZW4sIGxhYmVsX2VsZW0tPnBnZWxlbGlkKTsKKwkJCX0KKwkJCWVsc2Ug aWYgKGxpc3RfbWVtYmVyX29pZChlbGVtX2dwZV9vaWRzLCBlbGVtX29pZCkpCisJCQl7CisJCQkJ LyoKKwkJCQkgKiBUaGUgZ3JhcGggZWxlbWVudCBpcyBrbm93biB0byBxdWFsaWZ5IHRoZSBnaXZl biBlbGVtZW50CisJCQkJICogcGF0dGVybi4gRmxhZyB0aGF0IHRoZSBjdXJyZW50IGxhYmVsIGhh cyBhdCBsZWFzdCBvbmUKKwkJCQkgKiBlbGVtZW50LCB0aGF0IHNhdGlzZmllcyB0aGUgZ2l2ZW4g ZWxlbWVudCBwYXR0ZXJuLAorCQkJCSAqIGFzc29jaWF0ZWQgd2l0aCBpdC4KKwkJCQkgKi8KKwkJ CQlmb3VuZCA9IHRydWU7CisJCQl9CisJCX0KKworCQlpZiAoIWZvdW5kKQorCQl7CisJCQkvKgor CQkJICogV2UgZGlkIG5vdCBmaW5kIGFueSBlbGVtZW50LCB0aGF0IGZpdHMgZ2l2ZW4gZWxlbWVu dCBwYXR0ZXJuCisJCQkgKiBraW5kLCBhc3NvY2lhdGVkIHdpdGggdGhpcyBsYWJlbC4gVGhlIGxh YmVsIG9yIGl0cyBwcm9wZXJ0aWVzCisJCQkgKiBjYW4gbm90IGJlIGFzc29jaWF0ZWQgd2l0aCB0 aGUgZ2l2ZW4gZWxlbWVudCBwYXR0ZXJuLiBUaHJvdyBhbgorCQkJICogZXJyb3IgaWYgdGhlIGxh YmVsIHdhcyBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiB0aGUgZWxlbWVudAorCQkJICogcGF0dGVy bi4gT3RoZXJ3aXNlIGp1c3QgUmVtb3ZlIGl0IGZyb20gdGhlIGxpc3QuCisJCQkgKi8KKwkJCWlm ICghZ2VwLT5sYWJlbGV4cHIpCisJCQkJZm9yZWFjaF9kZWxldGVfY3VycmVudChsYWJlbF9vaWRz LCBsYyk7CisJCQllbHNlCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNP REVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCQkgZXJybXNnKCJjYW4gbm90IGZpbmQgbGFiZWwg XCIlc1wiIGluIHByb3BlcnR5IGdyYXBoIFwiJXNcIiBmb3IgZWxlbWVudCB0eXBlIFwiJXNcIiIs CisJCQkJCQkJCWdldF9wcm9wZ3JhcGhfbGFiZWxfbmFtZShsYWJlbG9pZCksCisJCQkJCQkJCWdl dF9yZWxfbmFtZShwcm9wZ3JhcGhpZCksCisJCQkJCQkJCWdldF9ncmFwaF9lbGVtX2tpbmRfbmFt ZShnZXAtPmtpbmQpKSkpOworCQl9CisKKwkJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKwl9CisJ dGFibGVfY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJLyogVXBkYXRlIHRoZSBmaWx0 ZXJlZCBsYWJlbCBsaXN0IGluIGVhY2ggZ3JhcGhfcGF0aF9lbGVtZW50LiAqLworCWZvcmVhY2go bGMsIGVsZW1fZ3BlcykKKwl7CisJCXN0cnVjdCBncmFwaF9wYXRoX2VsZW1lbnQgKmdwZSA9IGxm aXJzdChsYyk7CisKKwkJZ3BlLT5sYWJlbG9pZHMgPSBsYWJlbF9vaWRzOworCX0KKworCXJldHVy biBlbGVtX2dwZXM7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICoKK2dldF9ncmFwaF9lbGVtX2tp bmRfbmFtZShHcmFwaEVsZW1lbnRQYXR0ZXJuS2luZCBnZXBraW5kKQoreworCWlmIChnZXBraW5k ID09IFZFUlRFWF9QQVRURVJOKQorCQlyZXR1cm4gInZlcnRleCI7CisJZWxzZSBpZiAoSVNfRURH RV9QQVRURVJOKGdlcGtpbmQpKQorCQlyZXR1cm4gImVkZ2UiOworCWVsc2UgaWYgKGdlcGtpbmQg PT0gUEFSRU5fRVhQUikKKwkJcmV0dXJuICJuZXN0ZWQgcGF0aCBwYXR0ZXJuIjsKKworCXJldHVy biAidW5rbm93biI7Cit9CisKKy8qCisgKiBNdXRhdGluZyBwcm9wZXJ0eSByZWZlcmVuY2VzIGlu dG8gdGFibGUgdmFyaWFibGVzCisgKi8KKworc3RydWN0IHJlcGxhY2VfcHJvcGVydHlfcmVmc19j b250ZXh0Cit7CisJT2lkCQkJcHJvcGdyYXBoaWQ7CisJY29uc3QgTGlzdCAqbWFwcGluZ3M7Cit9 OworCitzdGF0aWMgTm9kZSAqCityZXBsYWNlX3Byb3BlcnR5X3JlZnNfbXV0YXRvcihOb2RlICpu b2RlLCBzdHJ1Y3QgcmVwbGFjZV9wcm9wZXJ0eV9yZWZzX2NvbnRleHQgKmNvbnRleHQpCit7CisJ aWYgKG5vZGUgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisJaWYgKElzQShub2RlLCBWYXIpKQor CXsKKwkJVmFyCQkgICAqdmFyID0gKFZhciAqKSBub2RlOworCQlWYXIJCSAgICpuZXd2YXIgPSBj b3B5T2JqZWN0KHZhcik7CisKKwkJLyoKKwkJICogSWYgaXQncyBhbHJlYWR5IGEgVmFyLCB0aGVu IGl0IHdhcyBhIGxhdGVyYWwgcmVmZXJlbmNlLiAgU2luY2Ugd2UKKwkJICogYXJlIGluIGEgc3Vi cXVlcnkgYWZ0ZXIgdGhlIHJld3JpdGUsIHdlIGhhdmUgdG8gaW5jcmVhc2UgdGhlIGxldmVsCisJ CSAqIGJ5IG9uZS4KKwkJICovCisJCW5ld3Zhci0+dmFybGV2ZWxzdXArKzsKKworCQlyZXR1cm4g KE5vZGUgKikgbmV3dmFyOworCX0KKwllbHNlIGlmIChJc0Eobm9kZSwgR3JhcGhQcm9wZXJ0eVJl ZikpCisJeworCQlHcmFwaFByb3BlcnR5UmVmICpncHIgPSAoR3JhcGhQcm9wZXJ0eVJlZiAqKSBu b2RlOworCQlOb2RlCSAgICpuID0gTlVMTDsKKwkJTGlzdENlbGwgICAqbGM7CisJCXN0cnVjdCBn cmFwaF9wYXRoX2VsZW1lbnQgKmZvdW5kX21hcHBpbmcgPSBOVUxMOworCQlMaXN0CSAgICp1bnJl bGF0ZWRfbGFiZWxzID0gTklMOworCisJCWZvcmVhY2gobGMsIGNvbnRleHQtPm1hcHBpbmdzKQor CQl7CisJCQlzdHJ1Y3QgZ3JhcGhfcGF0aF9lbGVtZW50ICptID0gbGZpcnN0KGxjKTsKKworCQkJ aWYgKG0tPnBhcmVudF9nZXAtPnZhcmlhYmxlICYmIHN0cmNtcChncHItPmVsdmFybmFtZSwgbS0+ cGFyZW50X2dlcC0+dmFyaWFibGUpID09IDApCisJCQl7CisJCQkJZm91bmRfbWFwcGluZyA9IG07 CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwkJaWYgKCFmb3VuZF9tYXBwaW5nKQorCQkJZWxvZyhF UlJPUiwgInVuZGVmaW5lZCBlbGVtZW50IHZhcmlhYmxlIFwiJXNcIiIsIGdwci0+ZWx2YXJuYW1l KTsKKworCQkvKgorCQkgKiBGaW5kIHByb3BlcnR5IGRlZmluaXRpb24gZm9yIGdpdmVuIGVsZW1l bnQgdGhyb3VnaCBhbnkgb2YgdGhlCisJCSAqIGFzc29jaWF0ZWQgbGFiZWxzLgorCQkgKi8KKwkJ Zm9yZWFjaChsYywgZm91bmRfbWFwcGluZy0+bGFiZWxvaWRzKQorCQl7CisJCQlPaWQJCQlsYWJl bG9pZCA9IGxmaXJzdF9vaWQobGMpOworCQkJT2lkCQkJZWxlbV9sYWJlbGlkID0gR2V0U3lzQ2Fj aGVPaWQyKFBST1BHUkFQSEVMRU1FTlRMQUJFTEVMRU1FTlRMQUJFTCwKKwkJCQkJCQkJCQkJCQkg ICBBbnVtX3BnX3Byb3BncmFwaF9lbGVtZW50X2xhYmVsX29pZCwKKwkJCQkJCQkJCQkJCQkgICBP YmplY3RJZEdldERhdHVtKGZvdW5kX21hcHBpbmctPmVsZW1vaWQpLAorCQkJCQkJCQkJCQkJCSAg IE9iamVjdElkR2V0RGF0dW0obGFiZWxvaWQpKTsKKworCQkJaWYgKE9pZElzVmFsaWQoZWxlbV9s YWJlbGlkKSkKKwkJCXsKKwkJCQlIZWFwVHVwbGUJdHVwID0gU2VhcmNoU3lzQ2FjaGUyKFBST1BH UkFQSExBQkVMUFJPUCwgT2JqZWN0SWRHZXREYXR1bShlbGVtX2xhYmVsaWQpLAorCQkJCQkJCQkJ CQkJICBPYmplY3RJZEdldERhdHVtKGdwci0+cHJvcGlkKSk7CisKKwkJCQlpZiAoIXR1cCkKKwkJ CQl7CisJCQkJCS8qCisJCQkJCSAqIFRoZSBsYWJlbCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIGdp dmVuIGVsZW1lbnQgYnV0IGl0CisJCQkJCSAqIGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggdGhlIHJl cXVpcmVkIHByb3BlcnR5LiBDaGVjaworCQkJCQkgKiBuZXh0IGxhYmVsLgorCQkJCQkgKi8KKwkJ CQkJY29udGludWU7CisJCQkJfQorCisJCQkJbiA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRD U3RyaW5nKFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoUFJPUEdSQVBITEFCRUxQUk9QLAorCQkJCQkJ CQkJCQkJCQkJCQkJCXR1cCwgQW51bV9wZ19wcm9wZ3JhcGhfbGFiZWxfcHJvcGVydHlfcGxwZXhw cikpKTsKKwkJCQlDaGFuZ2VWYXJOb2RlcyhuLCAxLCBmb3VuZF9tYXBwaW5nLT5ydGluZGV4LCAw KTsKKworCQkJCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJ CS8qCisJCQkJICogTGFiZWwgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCB0aGUgZWxlbWVudCBidXQg aXQgbWF5IGJlCisJCQkJICogYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm9wZXJ0eSB0aHJvdWdoIHNv bWUgb3RoZXIgZWxlbWVudC4KKwkJCQkgKiBTYXZlIGl0IGZvciBsYXRlciB1c2UuCisJCQkJICov CisJCQkJdW5yZWxhdGVkX2xhYmVscyA9IGxhcHBlbmRfb2lkKHVucmVsYXRlZF9sYWJlbHMsIGxh YmVsb2lkKTsKKwkJCX0KKwkJfQorCisJCS8qIFNlZSBpZiB3ZSBjYW4gcmVzb2x2ZSB0aGUgcHJv cGVydHkgaW4gc29tZSBvdGhlciB3YXkuICovCisJCWlmICghbikKKwkJeworCQkJTGlzdENlbGwg ICAqbGN1OworCQkJYm9vbAkJcHJvcF9hc3NvY2lhdGVkID0gZmFsc2U7CisKKwkJCWZvcmVhY2go bGN1LCB1bnJlbGF0ZWRfbGFiZWxzKQorCQkJeworCQkJCWlmIChpc19wcm9wZXJ0eV9hc3NvY2lh dGVkX3dpdGhfbGFiZWwobGZpcnN0X29pZChsY3UpLCBncHItPnByb3BpZCkpCisJCQkJeworCQkJ CQlwcm9wX2Fzc29jaWF0ZWQgPSB0cnVlOworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisKKwkJ CWlmIChwcm9wX2Fzc29jaWF0ZWQpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBUaGUgcHJvcGVydHkg aXMgYXNzb2NpYXRlZCB3aXRoIGF0IGxlYXN0IG9uZSBvZiB0aGUgbGFiZWxzCisJCQkJICogdGhh dCBzYXRpc2Z5IGdpdmVuIGVsZW1lbnQgcGF0dGVybi4gSWYgaXQncyBhc3NvY2lhdGVkIHdpdGgK KwkJCQkgKiB0aGUgZ2l2ZW4gZWxlbWVudCB0aHJvdWdoIHNvbWUgYW55IG9mIHRoZSBsYWJlbHMs IHVzZQorCQkJCSAqIGNvcnJlc3BvbmRpZyB2YWx1ZSBleHByZXNzaW9uLiBPdGhlcndpc2UgTlVM TC4gUmVmLiBTUUwvUEdRCisJCQkJICogc3RhbmRhcmQgc2VjdGlvbiA2LjUgUHJvcGVydHkgUmVm ZXJlY2UsIEdlbmVyYWwgUnVsZSAyLmIuCisJCQkJICoKKwkJCQkgKiBOT1RFOiBBbiBlbGVtZW50 IHBhdGggcGF0dGVybiBtYXkgcmVzb2x2ZSB0byBtdWx0aXBsZQorCQkJCSAqIGVsZW1lbnRzLiAg VGhlIGFib3ZlIHNlY3Rpb24gZG9lcyBub3Qgc2VlbSB0byBkZXNjcmliZSB0aGlzCisJCQkJICog Y2FzZS4gQnV0IGl0IGRlcGVuZHMgdXBvbiBob3cgdGhlIHRlcm0gRVIgaXMgaW50ZXJwcmV0ZWQu CisJCQkJICogRm9yIGEgZ2l2ZW4gcGF0aCB0aGVyZSdzIG9ubHkgb25lIGVsZW1lbnQgYm91bmQg dG8gYSBnaXZlbgorCQkJCSAqIEVSLiBIZW5jZSB0aGUgYWJvdmUgc3RhdGVkIHJ1bGUgY2FuIGJl IGFwcGxpZWQgaGVyZS4gIFRoZQorCQkJCSAqIHNlY3Rpb24gYWxzbyBzdGF0ZXMgdGhlIGNhc2Ug d2hlbiBubyBlbGVtZW50IGJpbmRzIHRvIEVSLgorCQkJCSAqIFdlIGNvbnNpZGVyIHN1Y2ggcGF0 aHMgYXMgYnJva2VuIGFuZCBkbyBub3QgY29udHJpYnV0ZSBhbnkKKwkJCQkgKiByb3dzIHRvIHRo ZSBHUkFQSF9UQUJMRS4KKwkJCQkgKi8KKwkJCQluID0gZ2V0X2VsZW1lbnRfcHJvcGVydHlfZXhw cihmb3VuZF9tYXBwaW5nLT5lbGVtb2lkLCBncHItPnByb3BpZCwKKwkJCQkJCQkJCQkJICBmb3Vu ZF9tYXBwaW5nLT5ydGluZGV4KTsKKworCQkJCWlmICghbikKKwkJCQl7CisJCQkJCS8qIFhYWDog RG9lcyBjb2xsYXRpb24gb2YgTlVMTCB2YWx1ZSBtYXR0ZXI/ICovCisJCQkJCW4gPSAoTm9kZSAq KSBtYWtlTnVsbENvbnN0KGdwci0+dHlwZUlkLCAtMSwgSW52YWxpZE9pZCk7CisJCQkJfQorCQkJ fQorCisJCX0KKworCQlpZiAoIW4pCisJCQllbG9nKEVSUk9SLCAicHJvcGVydHkgXCIlc1wiIG9m IGVsZW1lbnQgdmFyaWFibGUgXCIlc1wiIG5vdCBmb3VuZCIsCisJCQkJIGdldF9wcm9wZ3JhcGhf cHJvcGVydHlfbmFtZShncHItPnByb3BpZCksIGZvdW5kX21hcHBpbmctPnBhcmVudF9nZXAtPnZh cmlhYmxlKTsKKworCQlyZXR1cm4gbjsKKwl9CisKKwlyZXR1cm4gZXhwcmVzc2lvbl90cmVlX211 dGF0b3Iobm9kZSwgcmVwbGFjZV9wcm9wZXJ0eV9yZWZzX211dGF0b3IsIGNvbnRleHQpOworfQor CitzdGF0aWMgTm9kZSAqCityZXBsYWNlX3Byb3BlcnR5X3JlZnMoT2lkIHByb3BncmFwaGlkLCBO b2RlICpub2RlLCBjb25zdCBMaXN0ICptYXBwaW5ncykKK3sKKwlzdHJ1Y3QgcmVwbGFjZV9wcm9w ZXJ0eV9yZWZzX2NvbnRleHQgY29udGV4dDsKKworCWNvbnRleHQubWFwcGluZ3MgPSBtYXBwaW5n czsKKwljb250ZXh0LnByb3BncmFwaGlkID0gcHJvcGdyYXBoaWQ7CisKKwlyZXR1cm4gZXhwcmVz c2lvbl90cmVlX211dGF0b3Iobm9kZSwgcmVwbGFjZV9wcm9wZXJ0eV9yZWZzX211dGF0b3IsICZj b250ZXh0KTsKK30KKworLyoKKyAqIEJ1aWxkIGpvaW4gcXVhbGlmaWNhdGlvbiBleHByZXNzaW9u cyBiZXR3ZWVuIGVkZ2UgYW5kIHZlcnRleCB0YWJsZXMuCisgKi8KK3N0YXRpYyBMaXN0ICoKK2J1 aWxkX2VkZ2VfdmVydGV4X2xpbmtfcXVhbHMoSGVhcFR1cGxlIGVkZ2V0dXAsIGludCBlZGdlcnRp LCBpbnQgcmVmcnRpLCBBdHRyTnVtYmVyIGNhdGFsb2dfa2V5X2F0dG51bSwgQXR0ck51bWJlciBj YXRhbG9nX3JlZl9hdHRudW0pCit7CisJTGlzdAkgICAqcXVhbHMgPSBOSUw7CisJRm9ybV9wZ19w cm9wZ3JhcGhfZWxlbWVudCBwZ2Vmb3JtOworCURhdHVtCQlkYXR1bTsKKwlEYXR1bQkgICAqZDEs CisJCQkgICAqZDI7CisJaW50CQkJbjEsCisJCQkJbjI7CisKKwlwZ2Vmb3JtID0gKEZvcm1fcGdf cHJvcGdyYXBoX2VsZW1lbnQpIEdFVFNUUlVDVChlZGdldHVwKTsKKworCWRhdHVtID0gU3lzQ2Fj aGVHZXRBdHRyTm90TnVsbChQUk9QR1JBUEhFTE9JRCwgZWRnZXR1cCwgY2F0YWxvZ19rZXlfYXR0 bnVtKTsKKwlkZWNvbnN0cnVjdF9hcnJheV9idWlsdGluKERhdHVtR2V0QXJyYXlUeXBlUChkYXR1 bSksIElOVDJPSUQsICZkMSwgTlVMTCwgJm4xKTsKKworCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRy Tm90TnVsbChQUk9QR1JBUEhFTE9JRCwgZWRnZXR1cCwgY2F0YWxvZ19yZWZfYXR0bnVtKTsKKwlk ZWNvbnN0cnVjdF9hcnJheV9idWlsdGluKERhdHVtR2V0QXJyYXlUeXBlUChkYXR1bSksIElOVDJP SUQsICZkMiwgTlVMTCwgJm4yKTsKKworCWlmIChuMSAhPSBuMikKKwkJZWxvZyhFUlJPUiwgImFy cmF5IHNpemUga2V5ICglZCkgdnMgcmVmICglZCkgbWlzbWF0Y2ggZm9yIGVsZW1lbnQgSUQgJXUi LCBjYXRhbG9nX2tleV9hdHRudW0sIGNhdGFsb2dfcmVmX2F0dG51bSwgcGdlZm9ybS0+b2lkKTsK KworCWZvciAoaW50IGkgPSAwOyBpIDwgbjE7IGkrKykKKwl7CisJCUF0dHJOdW1iZXIJa2V5YXR0 biA9IERhdHVtR2V0SW50MTYoZDFbaV0pOworCQlBdHRyTnVtYmVyCXJlZmF0dG4gPSBEYXR1bUdl dEludDE2KGQyW2ldKTsKKwkJT2lkCQkJYXR0dHlwaWQ7CisJCVR5cGVDYWNoZUVudHJ5ICp0eXBl bnRyeTsKKwkJT3BFeHByCSAgICpvcDsKKworCQkvKgorCQkgKiBUT0RPOiBBc3N1bWVzIHR5cGVz IHRoZSBzYW1lIG9uIGJvdGggc2lkZXM7IG5vIGNvbGxhdGlvbnMgeWV0LiBTb21lCisJCSAqIG9m IHRoaXMgY291bGQgcHJvYmFibHkgYmUgc2hhcmVkIHdpdGggZm9yZWlnbiBrZXkgdHJpZ2dlcnMu CisJCSAqLworCQlhdHR0eXBpZCA9IGdldF9hdHR0eXBlKHBnZWZvcm0tPnBnZXJlbGlkLCBrZXlh dHRuKTsKKwkJdHlwZW50cnkgPSBsb29rdXBfdHlwZV9jYWNoZShhdHR0eXBpZCwgVFlQRUNBQ0hF X0VRX09QUik7CisKKwkJb3AgPSBtYWtlTm9kZShPcEV4cHIpOworCQlvcC0+bG9jYXRpb24gPSAt MTsKKwkJb3AtPm9wbm8gPSB0eXBlbnRyeS0+ZXFfb3ByOworCQlvcC0+b3ByZXN1bHR0eXBlID0g Qk9PTE9JRDsKKwkJb3AtPmFyZ3MgPSBsaXN0X21ha2UyKG1ha2VWYXIoZWRnZXJ0aSwga2V5YXR0 biwgYXR0dHlwaWQsIC0xLCAwLCAwKSwKKwkJCQkJCQkgIG1ha2VWYXIocmVmcnRpLCByZWZhdHRu LCBhdHR0eXBpZCwgLTEsIDAsIDApKTsKKwkJcXVhbHMgPSBsYXBwZW5kKHF1YWxzLCBvcCk7CisJ fQorCisJcmV0dXJuIHF1YWxzOworfQorCisvKgorICogQ2hlY2sgaWYgdGhlIGdpdmVuIHByb3Bl cnR5IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gbGFiZWwuCisgKgorICogQSBsYWJlbCBw cm9qZWN0cyB0aGUgc2FtZSBzZXQgb2YgcHJvcGVydGllcyB0aHJvdWdoIGV2ZXJ5IGVsZW1lbnQg aXQgaXMKKyAqIGFzc29jaWF0ZWQgd2l0aC4gRmluZCBhbnkgb2YgdGhlIGVsZW1lbnRzIGFuZCBy ZXR1cm4gdHJ1ZSBpZiB0aGF0IGVsZW1lbnQgaXMKKyAqIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2 ZW4gcHJvcGVydHkuIEZhbHNlIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGJvb2wKK2lzX3Byb3Bl cnR5X2Fzc29jaWF0ZWRfd2l0aF9sYWJlbChPaWQgbGFiZWxvaWQsIE9pZCBwcm9wb2lkKQorewor CVJlbGF0aW9uCXJlbDsKKwlTeXNTY2FuRGVzYyBzY2FuOworCVNjYW5LZXlEYXRhIGtleVsxXTsK KwlIZWFwVHVwbGUJdHVwOworCWJvb2wJCWFzc29jaWF0ZWQgPSBmYWxzZTsKKworCXJlbCA9IHRh YmxlX29wZW4oUHJvcGdyYXBoRWxlbWVudExhYmVsUmVsYXRpb25JZCwgUm93U2hhcmVMb2NrKTsK KwlTY2FuS2V5SW5pdCgma2V5WzBdLAorCQkJCUFudW1fcGdfcHJvcGdyYXBoX2VsZW1lbnRfbGFi ZWxfcGdlbGxhYmVsaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLAorCQkJCUZfT0lERVEs IE9iamVjdElkR2V0RGF0dW0obGFiZWxvaWQpKTsKKwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2Fu KHJlbCwgUHJvcGdyYXBoRWxlbWVudExhYmVsTGFiZWxJbmRleElkLAorCQkJCQkJCSAgdHJ1ZSwg TlVMTCwgMSwga2V5KTsKKworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHR1cCA9IHN5c3RhYmxlX2dl dG5leHQoc2NhbikpKQorCXsKKwkJRm9ybV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9sYWJlbCBlbGVf bGFiZWwgPSAoRm9ybV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9sYWJlbCkgR0VUU1RSVUNUKHR1cCk7 CisKKwkJYXNzb2NpYXRlZCA9IFNlYXJjaFN5c0NhY2hlRXhpc3RzMihQUk9QR1JBUEhMQUJFTFBS T1AsCisJCQkJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShlbGVfbGFiZWwtPm9pZCksIE9iamVj dElkR2V0RGF0dW0ocHJvcG9pZCkpOworCX0KKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRh YmxlX2Nsb3NlKHJlbCwgUm93U2hhcmVMb2NrKTsKKworCXJldHVybiBhc3NvY2lhdGVkOworfQor CisvKgorICogSWYgZ2l2ZW4gZWxlbWVudCBoYXMgdGhlIGdpdmVuIHByb3BlcnR5IGFzc29jaWF0 ZWQgd2l0aCBpdCwgdGhyb3VnaCBhbnkgb2YKKyAqIHRoZSBhc3NvY2lhdGVkIGxhYmVscywgcmV0 dXJuIHZhbHVlIGV4cHJlc3Npb24gb2YgdGhlIHByb3BlcnR5LiBPdGhlcndpc2UKKyAqIE5VTEwu CisgKi8KK3N0YXRpYyBOb2RlICoKK2dldF9lbGVtZW50X3Byb3BlcnR5X2V4cHIoT2lkIGVsZW1v aWQsIE9pZCBwcm9wb2lkLCBpbnQgcnRpbmRleCkKK3sKKwlSZWxhdGlvbglyZWw7CisJU3lzU2Nh bkRlc2Mgc2NhbjsKKwlTY2FuS2V5RGF0YSBrZXlbMV07CisJSGVhcFR1cGxlCWxhYmVsdHVwOwor CU5vZGUJICAgKm4gPSBOVUxMOworCisJcmVsID0gdGFibGVfb3BlbihQcm9wZ3JhcGhFbGVtZW50 TGFiZWxSZWxhdGlvbklkLCBSb3dTaGFyZUxvY2spOworCVNjYW5LZXlJbml0KCZrZXlbMF0sCisJ CQkJQW51bV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9sYWJlbF9wZ2VsZWxpZCwKKwkJCQlCVEVxdWFs U3RyYXRlZ3lOdW1iZXIsCisJCQkJRl9PSURFUSwgT2JqZWN0SWRHZXREYXR1bShlbGVtb2lkKSk7 CisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihyZWwsIFByb3BncmFwaEVsZW1lbnRMYWJlbEVs ZW1lbnRMYWJlbEluZGV4SWQsCisJCQkJCQkJICB0cnVlLCBOVUxMLCAxLCBrZXkpOworCisJd2hp bGUgKEhlYXBUdXBsZUlzVmFsaWQobGFiZWx0dXAgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkK Kwl7CisJCUZvcm1fcGdfcHJvcGdyYXBoX2VsZW1lbnRfbGFiZWwgZWxlX2xhYmVsID0gKEZvcm1f cGdfcHJvcGdyYXBoX2VsZW1lbnRfbGFiZWwpIEdFVFNUUlVDVChsYWJlbHR1cCk7CisKKwkJSGVh cFR1cGxlCXByb3B0dXAgPSBTZWFyY2hTeXNDYWNoZTIoUFJPUEdSQVBITEFCRUxQUk9QLAorCQkJ CQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0oZWxlX2xhYmVsLT5vaWQpLCBPYmplY3RJZEdldERh dHVtKHByb3BvaWQpKTsKKworCQlpZiAoIXByb3B0dXApCisJCQljb250aW51ZTsKKwkJbiA9IHN0 cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRDU3RyaW5nKFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoUFJP UEdSQVBITEFCRUxQUk9QLAorCQkJCQkJCQkJCQkJCQkJCQlwcm9wdHVwLCBBbnVtX3BnX3Byb3Bn cmFwaF9sYWJlbF9wcm9wZXJ0eV9wbHBleHByKSkpOworCQlDaGFuZ2VWYXJOb2RlcyhuLCAxLCBy dGluZGV4LCAwKTsKKworCQlSZWxlYXNlU3lzQ2FjaGUocHJvcHR1cCk7CisJCWJyZWFrOworCX0K KwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Nsb3NlKHJlbCwgUm93U2hhcmVMb2Nr KTsKKworCXJldHVybiBuOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdy aXRlSGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCmluZGV4 IGMyMjNhMmM1MGEuLmI0OWJjZWJkYmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3JpdGUv cmV3cml0ZUhhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVy LmMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIK ICNpbmNsdWRlICJwYXJzZXIvcGFyc2V0cmVlLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRl RGVmaW5lLmgiCisjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlR3JhcGhUYWJsZS5oIgogI2luY2x1 ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVN YW5pcC5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZVNlYXJjaEN5Y2xlLmgiCkBAIC0yMDI0 LDYgKzIwMjUsMTYgQEAgZmlyZVJJUnJ1bGVzKFF1ZXJ5ICpwYXJzZXRyZWUsIExpc3QgKmFjdGl2 ZVJJUnMpCiAKIAkJcnRlID0gcnRfZmV0Y2gocnRfaW5kZXgsIHBhcnNldHJlZS0+cnRhYmxlKTsK IAorCQkvKgorCQkgKiBDb252ZXJ0IEdSQVBIX1RBQkxFIGNsYXVzZSBpbnRvIGEgc3VicXVlcnkg dXNpbmcgcmVsYXRpb25hbAorCQkgKiBvcGVyYXRvcnMuICAoVGhpcyB3aWxsIGNoYW5nZSB0aGUg cnRla2luZCB0byBzdWJxdWVyeSwgc28gaXQgbXVzdAorCQkgKiBiZSBkb25lIGJlZm9yZSB0aGUg c3VicXVlcnkgaGFuZGxpbmcgYmVsb3cuKQorCQkgKi8KKwkJaWYgKHJ0ZS0+cnRla2luZCA9PSBS VEVfR1JBUEhfVEFCTEUpCisJCXsKKwkJCXBhcnNldHJlZSA9IHJld3JpdGVHcmFwaFRhYmxlKHBh cnNldHJlZSwgcnRfaW5kZXgpOworCQl9CisKIAkJLyoKIAkJICogQSBzdWJxdWVyeSBSVEUgY2Fu J3QgaGF2ZSBhc3NvY2lhdGVkIHJ1bGVzLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8KIAkJICogZG8g dG8gdGhpcyBsZXZlbCBvZiB0aGUgcXVlcnksIGJ1dCB3ZSBtdXN0IHJlY3Vyc2UgaW50byB0aGUK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNv cC91dGlsaXR5LmMKaW5kZXggYjJlYTgxMjVjOS4uM2YwZDU1ZjcxNSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMK QEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9wb3J0YWxjbWRzLmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvcHJlcGFyZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3Byb2NsYW5nLmgi CisjaW5jbHVkZSAiY29tbWFuZHMvcHJvcGdyYXBoY21kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRz L3B1YmxpY2F0aW9uY21kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3NjaGVtYWNtZHMuaCIKICNp bmNsdWRlICJjb21tYW5kcy9zZWNsYWJlbC5oIgpAQCAtMTQ4LDYgKzE0OSw3IEBAIENsYXNzaWZ5 VXRpbGl0eUNvbW1hbmRBc1JlYWRPbmx5KE5vZGUgKnBhcnNldHJlZSkKIAkJY2FzZSBUX0FsdGVy T3BlcmF0b3JTdG10OgogCQljYXNlIFRfQWx0ZXJPd25lclN0bXQ6CiAJCWNhc2UgVF9BbHRlclBv bGljeVN0bXQ6CisJCWNhc2UgVF9BbHRlclByb3BHcmFwaFN0bXQ6CiAJCWNhc2UgVF9BbHRlclB1 YmxpY2F0aW9uU3RtdDoKIAkJY2FzZSBUX0FsdGVyUm9sZVNldFN0bXQ6CiAJCWNhc2UgVF9BbHRl clJvbGVTdG10OgpAQCAtMTc4LDYgKzE4MCw3IEBAIENsYXNzaWZ5VXRpbGl0eUNvbW1hbmRBc1Jl YWRPbmx5KE5vZGUgKnBhcnNldHJlZSkKIAkJY2FzZSBUX0NyZWF0ZU9wRmFtaWx5U3RtdDoKIAkJ Y2FzZSBUX0NyZWF0ZVBMYW5nU3RtdDoKIAkJY2FzZSBUX0NyZWF0ZVBvbGljeVN0bXQ6CisJCWNh c2UgVF9DcmVhdGVQcm9wR3JhcGhTdG10OgogCQljYXNlIFRfQ3JlYXRlUHVibGljYXRpb25TdG10 OgogCQljYXNlIFRfQ3JlYXRlUmFuZ2VTdG10OgogCQljYXNlIFRfQ3JlYXRlUm9sZVN0bXQ6CkBA IC0xNzM2LDYgKzE3MzksMTQgQEAgUHJvY2Vzc1V0aWxpdHlTbG93KFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkJCQljb21tYW5kQ29sbGVjdGVkID0gdHJ1ZTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBU X0NyZWF0ZVByb3BHcmFwaFN0bXQ6CisJCQkJYWRkcmVzcyA9IENyZWF0ZVByb3BHcmFwaChwc3Rh dGUsIChDcmVhdGVQcm9wR3JhcGhTdG10ICopIHBhcnNldHJlZSk7CisJCQkJYnJlYWs7CisKKwkJ CWNhc2UgVF9BbHRlclByb3BHcmFwaFN0bXQ6CisJCQkJYWRkcmVzcyA9IEFsdGVyUHJvcEdyYXBo KHBzdGF0ZSwgKEFsdGVyUHJvcEdyYXBoU3RtdCAqKSBwYXJzZXRyZWUpOworCQkJCWJyZWFrOwor CiAJCQljYXNlIFRfQ3JlYXRlVHJhbnNmb3JtU3RtdDoKIAkJCQlhZGRyZXNzID0gQ3JlYXRlVHJh bnNmb3JtKChDcmVhdGVUcmFuc2Zvcm1TdG10ICopIHBhcnNldHJlZSk7CiAJCQkJYnJlYWs7CkBA IC0yMDA0LDYgKzIwMTUsNyBAQCBFeGVjRHJvcFN0bXQoRHJvcFN0bXQgKnN0bXQsIGJvb2wgaXNU b3BMZXZlbCkKIAkJY2FzZSBPQkpFQ1RfVklFVzoKIAkJY2FzZSBPQkpFQ1RfTUFUVklFVzoKIAkJ Y2FzZSBPQkpFQ1RfRk9SRUlHTl9UQUJMRToKKwkJY2FzZSBPQkpFQ1RfUFJPUEdSQVBIOgogCQkJ UmVtb3ZlUmVsYXRpb25zKHN0bXQpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CkBAIC0yMjgwLDYg KzIyOTIsOSBAQCBBbHRlck9iamVjdFR5cGVDb21tYW5kVGFnKE9iamVjdFR5cGUgb2JqdHlwZSkK IAkJY2FzZSBPQkpFQ1RfUFJPQ0VEVVJFOgogCQkJdGFnID0gQ01EVEFHX0FMVEVSX1BST0NFRFVS RTsKIAkJCWJyZWFrOworCQljYXNlIE9CSkVDVF9QUk9QR1JBUEg6CisJCQl0YWcgPSBDTURUQUdf QUxURVJfUFJPUEVSVFlfR1JBUEg7CisJCQlicmVhazsKIAkJY2FzZSBPQkpFQ1RfUk9MRToKIAkJ CXRhZyA9IENNRFRBR19BTFRFUl9ST0xFOwogCQkJYnJlYWs7CkBAIC0yNTU2LDYgKzI1NzEsOSBA QCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSkKIAkJCQljYXNlIE9CSkVDVF9JTkRF WDoKIAkJCQkJdGFnID0gQ01EVEFHX0RST1BfSU5ERVg7CiAJCQkJCWJyZWFrOworCQkJCWNhc2Ug T0JKRUNUX1BST1BHUkFQSDoKKwkJCQkJdGFnID0gQ01EVEFHX0RST1BfUFJPUEVSVFlfR1JBUEg7 CisJCQkJCWJyZWFrOwogCQkJCWNhc2UgT0JKRUNUX1RZUEU6CiAJCQkJCXRhZyA9IENNRFRBR19E Uk9QX1RZUEU7CiAJCQkJCWJyZWFrOwpAQCAtMjkzNyw2ICsyOTU1LDE0IEBAIENyZWF0ZUNvbW1h bmRUYWcoTm9kZSAqcGFyc2V0cmVlKQogCQkJfQogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0NyZWF0 ZVByb3BHcmFwaFN0bXQ6CisJCQl0YWcgPSBDTURUQUdfQ1JFQVRFX1BST1BFUlRZX0dSQVBIOwor CQkJYnJlYWs7CisKKwkJY2FzZSBUX0FsdGVyUHJvcEdyYXBoU3RtdDoKKwkJCXRhZyA9IENNRFRB R19BTFRFUl9QUk9QRVJUWV9HUkFQSDsKKwkJCWJyZWFrOworCiAJCWNhc2UgVF9DcmVhdGVUcmFu c2Zvcm1TdG10OgogCQkJdGFnID0gQ01EVEFHX0NSRUFURV9UUkFOU0ZPUk07CiAJCQlicmVhazsK QEAgLTM2MzQsNiArMzY2MCwxNCBAQCBHZXRDb21tYW5kTG9nTGV2ZWwoTm9kZSAqcGFyc2V0cmVl KQogCQkJbGV2ID0gTE9HU1RNVF9EREw7CiAJCQlicmVhazsKIAorCQljYXNlIFRfQ3JlYXRlUHJv cEdyYXBoU3RtdDoKKwkJCWxldiA9IExPR1NUTVRfRERMOworCQkJYnJlYWs7CisKKwkJY2FzZSBU X0FsdGVyUHJvcEdyYXBoU3RtdDoKKwkJCWxldiA9IExPR1NUTVRfRERMOworCQkJYnJlYWs7CisK IAkJY2FzZSBUX0NyZWF0ZVRyYW5zZm9ybVN0bXQ6CiAJCQlsZXYgPSBMT0dTVE1UX0RETDsKIAkJ CWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDAwZWRhMWIzNGMuLmU2Yzg2 YjhhZTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTM0LDYgKzM0LDExIEBACiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFy dGl0aW9uZWRfdGFibGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKKyNpbmNsdWRl ICJjYXRhbG9nL3BnX3Byb3BncmFwaF9lbGVtZW50LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19w cm9wZ3JhcGhfZWxlbWVudF9sYWJlbC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvcGdyYXBo X2xhYmVsLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9wZ3JhcGhfbGFiZWxfcHJvcGVydHku aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb3BncmFwaF9wcm9wZXJ0eS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfc3RhdGlzdGljX2V4dC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHJpZ2dl ci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgpAQCAtMzQ1LDYgKzM1MCw5IEBAIHN0 YXRpYyBjaGFyICpwZ19nZXRfaW5kZXhkZWZfd29ya2VyKE9pZCBpbmRleHJlbGlkLCBpbnQgY29s bm8sCiAJCQkJCQkJCQlib29sIGF0dHJzT25seSwgYm9vbCBrZXlzT25seSwKIAkJCQkJCQkJCWJv b2wgc2hvd1RibFNwYywgYm9vbCBpbmhlcml0cywKIAkJCQkJCQkJCWludCBwcmV0dHlGbGFncywg Ym9vbCBtaXNzaW5nX29rKTsKK3N0YXRpYyB2b2lkIG1ha2VfcHJvcGdyYXBoZGVmX2VsZW1lbnRz KFN0cmluZ0luZm8gYnVmLCBPaWQgcGdyZWxpZCwgY2hhciBwZ2VraW5kKTsKK3N0YXRpYyB2b2lk IG1ha2VfcHJvcGdyYXBoZGVmX2xhYmVscyhTdHJpbmdJbmZvIGJ1ZiwgT2lkIGVsaWQsIGNvbnN0 IGNoYXIgKmVsYWxpYXMsIE9pZCBlbHJlbGlkKTsKK3N0YXRpYyB2b2lkIG1ha2VfcHJvcGdyYXBo ZGVmX3Byb3BlcnRpZXMoU3RyaW5nSW5mbyBidWYsIE9pZCBlbGxhYmVsaWQsIE9pZCBlbHJlbGlk KTsKIHN0YXRpYyBjaGFyICpwZ19nZXRfc3RhdGlzdGljc29ial93b3JrZXIoT2lkIHN0YXRleHRp ZCwgYm9vbCBjb2x1bW5zX29ubHksCiAJCQkJCQkJCQkJIGJvb2wgbWlzc2luZ19vayk7CiBzdGF0 aWMgY2hhciAqcGdfZ2V0X3BhcnRrZXlkZWZfd29ya2VyKE9pZCByZWxpZCwgaW50IHByZXR0eUZs YWdzLApAQCAtMTU4NCw2ICsxNTkyLDMzMSBAQCBwZ19nZXRfcXVlcnlkZWYoUXVlcnkgKnF1ZXJ5 LCBib29sIHByZXR0eSkKIAlyZXR1cm4gYnVmLmRhdGE7CiB9CiAKKy8qCisgKiBwZ19nZXRfcHJv cGdyYXBoZGVmIC0gZ2V0IHRoZSBkZWZpbml0aW9uIG9mIGEgcHJvcGVydHkgZ3JhcGgKKyAqLwor RGF0dW0KK3BnX2dldF9wcm9wZ3JhcGhkZWYoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlPaWQJCQlw Z3JlbGlkID0gUEdfR0VUQVJHX09JRCgwKTsKKwlTdHJpbmdJbmZvRGF0YSBidWY7CisJSGVhcFR1 cGxlCWNsYXNzdHVwOworCUZvcm1fcGdfY2xhc3MgY2xhc3Nmb3JtOworCWNoYXIJICAgKm5hbWU7 CisJY2hhcgkgICAqbnNwOworCisJaW5pdFN0cmluZ0luZm8oJmJ1Zik7CisKKwljbGFzc3R1cCA9 IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQsIE9iamVjdElkR2V0RGF0dW0ocGdyZWxpZCkpOworCWlm ICghSGVhcFR1cGxlSXNWYWxpZChjbGFzc3R1cCkpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwlj bGFzc2Zvcm0gPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKGNsYXNzdHVwKTsKKwluYW1lID0g TmFtZVN0cihjbGFzc2Zvcm0tPnJlbG5hbWUpOworCisJaWYgKGNsYXNzZm9ybS0+cmVsa2luZCAh PSBSRUxLSU5EX1BST1BHUkFQSCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgcHJv cGVydHkgZ3JhcGgiLCBuYW1lKSkpOworCisJbnNwID0gZ2V0X25hbWVzcGFjZV9uYW1lKGNsYXNz Zm9ybS0+cmVsbmFtZXNwYWNlKTsKKworCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIkNSRUFURSBQ Uk9QRVJUWSBHUkFQSCAlcyIsCisJCQkJCSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihuc3As IG5hbWUpKTsKKworCVJlbGVhc2VTeXNDYWNoZShjbGFzc3R1cCk7CisKKwltYWtlX3Byb3BncmFw aGRlZl9lbGVtZW50cygmYnVmLCBwZ3JlbGlkLCBQR0VLSU5EX1ZFUlRFWCk7CisJbWFrZV9wcm9w Z3JhcGhkZWZfZWxlbWVudHMoJmJ1ZiwgcGdyZWxpZCwgUEdFS0lORF9FREdFKTsKKworCVBHX1JF VFVSTl9URVhUX1Aoc3RyaW5nX3RvX3RleHQoYnVmLmRhdGEpKTsKK30KKworLyoKKyAqIEdlbmVy YXRlcyBhIFZFUlRFWCBUQUJMRVMgKC4uLikgb3IgRURHRSBUQUJMRVMgKC4uLikgY2xhdXNlLiAg UGFzcyBpbiB0aGUKKyAqIHByb3BlcnR5IGdyYXBoIHJlbGF0aW9uIE9JRCBhbmQgdGhlIGVsZW1l bnQga2luZCAodmVydGV4IG9yIGVkZ2UpLiAgUmVzdWx0CisgKiBpcyBhcHBlbmRlZCB0byBidWYu CisgKi8KK3N0YXRpYyB2b2lkCittYWtlX3Byb3BncmFwaGRlZl9lbGVtZW50cyhTdHJpbmdJbmZv IGJ1ZiwgT2lkIHBncmVsaWQsIGNoYXIgcGdla2luZCkKK3sKKwlSZWxhdGlvbglwZ2VyZWw7CisJ U2NhbktleURhdGEgc2NhbmtleVsxXTsKKwlTeXNTY2FuRGVzYyBzY2FuOworCWJvb2wJCWZpcnN0 OworCUhlYXBUdXBsZQl0dXA7CisKKwlwZ2VyZWwgPSB0YWJsZV9vcGVuKFByb3BncmFwaEVsZW1l bnRSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJU2NhbktleUluaXQoJnNjYW5rZXlb MF0sCisJCQkJQW51bV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9wZ2VwZ2lkLAorCQkJCUJURXF1YWxT dHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKHBncmVsaWQpKTsK KworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdlcmVsLCBQcm9wZ3JhcGhFbGVtZW50QWxp YXNJbmRleElkLCB0cnVlLCBOVUxMLCAxLCBzY2Fua2V5KTsKKworCWZpcnN0ID0gdHJ1ZTsKKwl3 aGlsZSAoKHR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJRm9ybV9wZ19wcm9w Z3JhcGhfZWxlbWVudCBwZ2Vmb3JtID0gKEZvcm1fcGdfcHJvcGdyYXBoX2VsZW1lbnQpIEdFVFNU UlVDVCh0dXApOworCQljaGFyCSAgICpyZWxuYW1lOworCQlEYXR1bQkJZGF0dW07CisJCWJvb2wJ CWlzbnVsbDsKKworCQlpZiAocGdlZm9ybS0+cGdla2luZCAhPSBwZ2VraW5kKQorCQkJY29udGlu dWU7CisKKwkJaWYgKGZpcnN0KQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIlxuICAg ICVzIFRBQkxFUyAoXG4iLCBwZ2VraW5kID09IFBHRUtJTkRfVkVSVEVYID8gIlZFUlRFWCIgOiAi RURHRSIpOworCQkJZmlyc3QgPSBmYWxzZTsKKwkJfQorCQllbHNlCisJCQlhcHBlbmRTdHJpbmdJ bmZvKGJ1ZiwgIixcbiIpOworCisJCXJlbG5hbWUgPSBnZXRfcmVsX25hbWUocGdlZm9ybS0+cGdl cmVsaWQpOworCQlpZiAocmVsbmFtZSAmJiBzdHJjbXAocmVsbmFtZSwgTmFtZVN0cihwZ2Vmb3Jt LT5wZ2VhbGlhcykpID09IDApCisJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiAgICAgICAgJXMi LAorCQkJCQkJCSBnZW5lcmF0ZV9yZWxhdGlvbl9uYW1lKHBnZWZvcm0tPnBnZXJlbGlkLCBOSUwp KTsKKwkJZWxzZQorCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIgICAgICAgICVzIEFTICVzIiwK KwkJCQkJCQkgZ2VuZXJhdGVfcmVsYXRpb25fbmFtZShwZ2Vmb3JtLT5wZ2VyZWxpZCwgTklMKSwK KwkJCQkJCQkgTmFtZVN0cihwZ2Vmb3JtLT5wZ2VhbGlhcykpOworCisJCWRhdHVtID0gaGVhcF9n ZXRhdHRyKHR1cCwgQW51bV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9wZ2VrZXksIFJlbGF0aW9uR2V0 RGVzY3IocGdlcmVsKSwgJmlzbnVsbCk7CisJCWlmICghaXNudWxsKQorCQl7CisJCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiBLRVkgKCIpOworCQkJZGVjb21waWxlX2NvbHVtbl9pbmRl eF9hcnJheShkYXR1bSwgcGdlZm9ybS0+cGdlcmVsaWQsIGJ1Zik7CisJCQlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKGJ1ZiwgIikiKTsKKwkJfQorCQllbHNlCisJCQllbG9nKEVSUk9SLCAibnVsbCBw Z2VrZXkgZm9yIGVsZW1lbnQgJXUiLCBwZ2Vmb3JtLT5vaWQpOworCisJCWlmIChwZ2VraW5kID09 IFBHRUtJTkRfRURHRSkKKwkJeworCQkJRGF0dW0JCXNyY2tleTsKKwkJCURhdHVtCQlzcmNyZWY7 CisJCQlEYXR1bQkJZGVzdGtleTsKKwkJCURhdHVtCQlkZXN0cmVmOworCQkJSGVhcFR1cGxlCXR1 cDI7CisJCQlGb3JtX3BnX3Byb3BncmFwaF9lbGVtZW50IHBnZWZvcm0yOworCisJCQlkYXR1bSA9 IGhlYXBfZ2V0YXR0cih0dXAsIEFudW1fcGdfcHJvcGdyYXBoX2VsZW1lbnRfcGdlc3Jja2V5LCBS ZWxhdGlvbkdldERlc2NyKHBnZXJlbCksICZpc251bGwpOworCQkJc3Jja2V5ID0gaXNudWxsID8g MCA6IGRhdHVtOworCQkJZGF0dW0gPSBoZWFwX2dldGF0dHIodHVwLCBBbnVtX3BnX3Byb3BncmFw aF9lbGVtZW50X3BnZXNyY3JlZiwgUmVsYXRpb25HZXREZXNjcihwZ2VyZWwpLCAmaXNudWxsKTsK KwkJCXNyY3JlZiA9IGlzbnVsbCA/IDAgOiBkYXR1bTsKKwkJCWRhdHVtID0gaGVhcF9nZXRhdHRy KHR1cCwgQW51bV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9wZ2VkZXN0a2V5LCBSZWxhdGlvbkdldERl c2NyKHBnZXJlbCksICZpc251bGwpOworCQkJZGVzdGtleSA9IGlzbnVsbCA/IDAgOiBkYXR1bTsK KwkJCWRhdHVtID0gaGVhcF9nZXRhdHRyKHR1cCwgQW51bV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9w Z2VkZXN0cmVmLCBSZWxhdGlvbkdldERlc2NyKHBnZXJlbCksICZpc251bGwpOworCQkJZGVzdHJl ZiA9IGlzbnVsbCA/IDAgOiBkYXR1bTsKKworCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYs ICIgU09VUkNFIik7CisJCQl0dXAyID0gU2VhcmNoU3lzQ2FjaGUxKFBST1BHUkFQSEVMT0lELCBP YmplY3RJZEdldERhdHVtKHBnZWZvcm0tPnBnZXNyY3ZlcnRleGlkKSk7CisJCQlpZiAoIXR1cDIp CisJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHByb3BlcnR5IGdyYXBo IGVsZW1lbnQgJXUiLCBwZ2Vmb3JtLT5wZ2VzcmN2ZXJ0ZXhpZCk7CisJCQlwZ2Vmb3JtMiA9IChG b3JtX3BnX3Byb3BncmFwaF9lbGVtZW50KSBHRVRTVFJVQ1QodHVwMik7CisJCQlpZiAoc3Jja2V5 KQorCQkJeworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIEtFWSAoIik7CisJCQkJ ZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheShzcmNrZXksIHBnZWZvcm0tPnBnZXJlbGlkLCBi dWYpOworCQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiKSBSRUZFUkVOQ0VTICVzICgiLCBOYW1l U3RyKHBnZWZvcm0yLT5wZ2VhbGlhcykpOworCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJy YXkoc3JjcmVmLCBwZ2Vmb3JtMi0+cGdlcmVsaWQsIGJ1Zik7CisJCQkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZyhidWYsICIpIik7CisJCQl9CisJCQllbHNlCisJCQkJYXBwZW5kU3RyaW5nSW5mbyhi dWYsICIgJXMgIiwgTmFtZVN0cihwZ2Vmb3JtMi0+cGdlYWxpYXMpKTsKKwkJCVJlbGVhc2VTeXND YWNoZSh0dXAyKTsKKworCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIgREVTVElOQVRJ T04iKTsKKwkJCXR1cDIgPSBTZWFyY2hTeXNDYWNoZTEoUFJPUEdSQVBIRUxPSUQsIE9iamVjdElk R2V0RGF0dW0ocGdlZm9ybS0+cGdlZGVzdHZlcnRleGlkKSk7CisJCQlpZiAoIXR1cDIpCisJCQkJ ZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHByb3BlcnR5IGdyYXBoIGVsZW1l bnQgJXUiLCBwZ2Vmb3JtLT5wZ2VkZXN0dmVydGV4aWQpOworCQkJcGdlZm9ybTIgPSAoRm9ybV9w Z19wcm9wZ3JhcGhfZWxlbWVudCkgR0VUU1RSVUNUKHR1cDIpOworCQkJaWYgKGRlc3RrZXkpCisJ CQl7CisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIgS0VZICgiKTsKKwkJCQlkZWNv bXBpbGVfY29sdW1uX2luZGV4X2FycmF5KGRlc3RrZXksIHBnZWZvcm0tPnBnZXJlbGlkLCBidWYp OworCQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiKSBSRUZFUkVOQ0VTICVzICgiLCBOYW1lU3Ry KHBnZWZvcm0yLT5wZ2VhbGlhcykpOworCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXko ZGVzdHJlZiwgcGdlZm9ybTItPnBnZXJlbGlkLCBidWYpOworCQkJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoYnVmLCAiKSIpOworCQkJfQorCQkJZWxzZQorCQkJCWFwcGVuZFN0cmluZ0luZm8oYnVm LCAiICVzIiwgTmFtZVN0cihwZ2Vmb3JtMi0+cGdlYWxpYXMpKTsKKwkJCVJlbGVhc2VTeXNDYWNo ZSh0dXAyKTsKKwkJfQorCisJCW1ha2VfcHJvcGdyYXBoZGVmX2xhYmVscyhidWYsIHBnZWZvcm0t Pm9pZCwgTmFtZVN0cihwZ2Vmb3JtLT5wZ2VhbGlhcyksIHBnZWZvcm0tPnBnZXJlbGlkKTsKKwl9 CisJaWYgKCFmaXJzdCkKKwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJcbiAgICApIik7CisKKwlz eXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Nsb3NlKHBnZXJlbCwgQWNjZXNzU2hhcmVM b2NrKTsKK30KKworLyoKKyAqIEdlbmVyYXRlcyBsYWJlbCBhbmQgcHJvcGVydGllcyBsaXN0LiAg UGFzcyBpbiB0aGUgZWxlbWVudCBPSUQsIHRoZSBlbGVtZW50CisgKiBhbGlhcywgYW5kIHRoZSBn cmFwaCByZWxhdGlvbiBPSUQuICBSZXN1bHQgaXMgYXBwZW5kIHRvIGJ1Zi4KKyAqLworc3RhdGlj IHZvaWQKK21ha2VfcHJvcGdyYXBoZGVmX2xhYmVscyhTdHJpbmdJbmZvIGJ1ZiwgT2lkIGVsaWQs IGNvbnN0IGNoYXIgKmVsYWxpYXMsIE9pZCBlbHJlbGlkKQoreworCVJlbGF0aW9uCXBnbHJlbDsK KwlTY2FuS2V5RGF0YSBzY2Fua2V5WzFdOworCVN5c1NjYW5EZXNjIHNjYW47CisJaW50CQkJY291 bnQ7CisJSGVhcFR1cGxlCXR1cDsKKworCXBnbHJlbCA9IHRhYmxlX29wZW4oUHJvcGdyYXBoRWxl bWVudExhYmVsUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCVNjYW5LZXlJbml0KCZz Y2Fua2V5WzBdLAorCQkJCUFudW1fcGdfcHJvcGdyYXBoX2VsZW1lbnRfbGFiZWxfcGdlbGVsaWQs CisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0 dW0oZWxpZCkpOworCisJY291bnQgPSAwOworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGds cmVsLCBQcm9wZ3JhcGhFbGVtZW50TGFiZWxFbGVtZW50TGFiZWxJbmRleElkLCB0cnVlLCBOVUxM LCAxLCBzY2Fua2V5KTsKKwl3aGlsZSAoKHR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQor CXsKKwkJY291bnQrKzsKKwl9CisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKworCS8qIFhYWCBu ZWVkIHRvIHJlLWluaXQgc2NhbiBrZXkgZm9yIHNlY29uZCBzY2FuICovCisJU2NhbktleUluaXQo JnNjYW5rZXlbMF0sCisJCQkJQW51bV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9sYWJlbF9wZ2VsZWxp ZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXRE YXR1bShlbGlkKSk7CisKKwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHBnbHJlbCwgUHJvcGdy YXBoRWxlbWVudExhYmVsRWxlbWVudExhYmVsSW5kZXhJZCwgdHJ1ZSwgTlVMTCwgMSwgc2Nhbmtl eSk7CisKKwl3aGlsZSAoKHR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJRm9y bV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9sYWJlbCBwZ2VsZm9ybSA9IChGb3JtX3BnX3Byb3BncmFw aF9lbGVtZW50X2xhYmVsKSBHRVRTVFJVQ1QodHVwKTsKKwkJY29uc3QgY2hhciAqbGFiZWxuYW1l OworCisJCWxhYmVsbmFtZSA9IGdldF9wcm9wZ3JhcGhfbGFiZWxfbmFtZShwZ2VsZm9ybS0+cGdl bGxhYmVsaWQpOworCisJCWlmIChzdHJjbXAobGFiZWxuYW1lLCBlbGFsaWFzKSA9PSAwKQorCQl7 CisJCQkvKiBJZiB0aGUgZGVmYXVsdCBsYWJlbCBpcyB0aGUgb25seSBsYWJlbCwgZG9uJ3QgcHJp bnQgYW55dGhpbmcuICovCisJCQlpZiAoY291bnQgIT0gMSkKKwkJCQlhcHBlbmRTdHJpbmdJbmZv KGJ1ZiwgIiBERUZBVUxUIExBQkVMIik7CisJCX0KKwkJZWxzZQorCQkJYXBwZW5kU3RyaW5nSW5m byhidWYsICIgTEFCRUwgJXMiLCBxdW90ZV9pZGVudGlmaWVyKGxhYmVsbmFtZSkpOworCisJCW1h a2VfcHJvcGdyYXBoZGVmX3Byb3BlcnRpZXMoYnVmLCBwZ2VsZm9ybS0+b2lkLCBlbHJlbGlkKTsK Kwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCisJdGFibGVfY2xvc2UocGdscmVsLCBB Y2Nlc3NTaGFyZUxvY2spOworfQorCisvKgorICogSGVscGVyIGZ1bmN0aW9uIGZvciBtYWtlX3By b3BncmFwaGRlZl9wcm9wZXJ0aWVzKCk6IFNvcnQgKHByb3BuYW1lLCBleHByKQorICogcGFpcnMg YnkgbmFtZS4KKyAqLworc3RhdGljIGludAorcHJvcGRhdGFfYnlfbmFtZV9jbXAoY29uc3QgTGlz dENlbGwgKmEsIGNvbnN0IExpc3RDZWxsICpiKQoreworCUxpc3QJICAgKmxhID0gbGZpcnN0X25v ZGUoTGlzdCwgYSk7CisJTGlzdAkgICAqbGIgPSBsZmlyc3Rfbm9kZShMaXN0LCBiKTsKKwljaGFy CSAgICpwbmEgPSBzdHJWYWwobGluaXRpYWwobGEpKTsKKwljaGFyCSAgICpwbmIgPSBzdHJWYWwo bGluaXRpYWwobGIpKTsKKworCXJldHVybiBzdHJjbXAocG5hLCBwbmIpOworfQorCisvKgorICog R2VuZXJhdGVzIGVsZW1lbnQgdGFibGUgcHJvcGVydGllcyBjbGF1c2UgKFBST1BFUlRJRVMgKC4u Likgb3IgTk8KKyAqIFBST1BFUlRJRVMpLiAgUGFzcyBpbiBsYWJlbCBPREkgYW5kIGVsZW1lbnQg dGFibGUgT0lELiAgUmVzdWx0IGlzIGFwcGVuZGVkCisgKiB0byBidWYuCisgKi8KK3N0YXRpYyB2 b2lkCittYWtlX3Byb3BncmFwaGRlZl9wcm9wZXJ0aWVzKFN0cmluZ0luZm8gYnVmLCBPaWQgZWxs YWJlbGlkLCBPaWQgZWxyZWxpZCkKK3sKKwlSZWxhdGlvbglwbHByZWw7CisJU2NhbktleURhdGEg c2NhbmtleVsxXTsKKwlTeXNTY2FuRGVzYyBzY2FuOworCUhlYXBUdXBsZQl0dXA7CisJTGlzdAkg ICAqb3V0bGlzdCA9IE5JTDsKKworCXBscHJlbCA9IHRhYmxlX29wZW4oUHJvcGdyYXBoTGFiZWxQ cm9wZXJ0eVJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgmc2Nh bmtleVswXSwKKwkJCQlBbnVtX3BnX3Byb3BncmFwaF9sYWJlbF9wcm9wZXJ0eV9wbHBlbGxhYmVs aWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9iamVjdElkR2V0 RGF0dW0oZWxsYWJlbGlkKSk7CisKKwkvKgorCSAqIFdlIHdhbnQgdG8gb3V0cHV0IHRoZSBwcm9w ZXJ0aWVzIGluIGEgZGV0ZXJtaW5pc3RpYyBvcmRlci4gIFNvIHdlIGZpcnN0CisJICogcmVhZCBh bGwgdGhlIGRhdGEsIHRoZW4gc29ydCwgdGhlbiBwcmludCBpdC4KKwkgKi8KKwlzY2FuID0gc3lz dGFibGVfYmVnaW5zY2FuKHBscHJlbCwgUHJvcGdyYXBoTGFiZWxQcm9wZXJ0eUxhYmVsUHJvcElu ZGV4SWQsIHRydWUsIE5VTEwsIDEsIHNjYW5rZXkpOworCisJd2hpbGUgKCh0dXAgPSBzeXN0YWJs ZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJCUZvcm1fcGdfcHJvcGdyYXBoX2xhYmVsX3Byb3BlcnR5 IHBscGZvcm0gPSAoRm9ybV9wZ19wcm9wZ3JhcGhfbGFiZWxfcHJvcGVydHkpIEdFVFNUUlVDVCh0 dXApOworCQlEYXR1bQkJZXhwckRhdHVtOworCQlib29sCQlpc251bGw7CisJCWNoYXIJICAgKnRt cDsKKwkJTm9kZQkgICAqZXhwcjsKKwkJY2hhcgkgICAqcHJvcG5hbWU7CisKKwkJZXhwckRhdHVt ID0gaGVhcF9nZXRhdHRyKHR1cCwgQW51bV9wZ19wcm9wZ3JhcGhfbGFiZWxfcHJvcGVydHlfcGxw ZXhwciwgUmVsYXRpb25HZXREZXNjcihwbHByZWwpLCAmaXNudWxsKTsKKwkJQXNzZXJ0KCFpc251 bGwpOworCQl0bXAgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGV4cHJEYXR1bSk7CisJCWV4cHIgPSBz dHJpbmdUb05vZGUodG1wKTsKKwkJcGZyZWUodG1wKTsKKworCQlwcm9wbmFtZSA9IGdldF9wcm9w Z3JhcGhfcHJvcGVydHlfbmFtZShwbHBmb3JtLT5wbHBwcm9waWQpOworCisJCW91dGxpc3QgPSBs YXBwZW5kKG91dGxpc3QsIGxpc3RfbWFrZTIobWFrZVN0cmluZyhwcm9wbmFtZSksIGV4cHIpKTsK Kwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Nsb3NlKHBscHJlbCwgQWNj ZXNzU2hhcmVMb2NrKTsKKworCWxpc3Rfc29ydChvdXRsaXN0LCBwcm9wZGF0YV9ieV9uYW1lX2Nt cCk7CisKKwlpZiAob3V0bGlzdCkKKwl7CisJCUxpc3QJICAgKmNvbnRleHQ7CisJCUxpc3RDZWxs ICAgKmxjOworCQlib29sCQlmaXJzdCA9IHRydWU7CisKKwkJY29udGV4dCA9IGRlcGFyc2VfY29u dGV4dF9mb3IoZ2V0X3JlbGF0aW9uX25hbWUoZWxyZWxpZCksIGVscmVsaWQpOworCisJCWFwcGVu ZFN0cmluZ0luZm8oYnVmLCAiIFBST1BFUlRJRVMgKCIpOworCisJCWZvcmVhY2gobGMsIG91dGxp c3QpCisJCXsKKwkJCUxpc3QJICAgKmRhdGEgPSBsZmlyc3Rfbm9kZShMaXN0LCBsYyk7CisJCQlj aGFyCSAgICpwcm9wbmFtZSA9IHN0clZhbChsaW5pdGlhbChkYXRhKSk7CisJCQlOb2RlCSAgICpl eHByID0gbHNlY29uZChkYXRhKTsKKworCQkJaWYgKGZpcnN0KQorCQkJCWZpcnN0ID0gZmFsc2U7 CisJCQllbHNlCisJCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsICIpOworCisJCQlpZiAoSXNB KGV4cHIsIFZhcikgJiYgc3RyY21wKHByb3BuYW1lLCBnZXRfYXR0bmFtZShlbHJlbGlkLCBjYXN0 Tm9kZShWYXIsIGV4cHIpLT52YXJhdHRubywgZmFsc2UpKSA9PSAwKQorCQkJCWFwcGVuZFN0cmlu Z0luZm8oYnVmLCAiJXMiLCBwcm9wbmFtZSk7CisJCQllbHNlCisJCQkJYXBwZW5kU3RyaW5nSW5m byhidWYsICIlcyBBUyAlcyIsCisJCQkJCQkJCSBkZXBhcnNlX2V4cHJlc3Npb25fcHJldHR5KGV4 cHIsIGNvbnRleHQsIGZhbHNlLCBmYWxzZSwgMCwgMCksCisJCQkJCQkJCSBwcm9wbmFtZSk7CisJ CX0KKworCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIikiKTsKKwl9CisJZWxzZQorCQlhcHBlbmRT dHJpbmdJbmZvKGJ1ZiwgIiBOTyBQUk9QRVJUSUVTIik7Cit9CisKIC8qCiAgKiBwZ19nZXRfc3Rh dGlzdGljc29iamRlZgogICoJCUdldCB0aGUgZGVmaW5pdGlvbiBvZiBhbiBleHRlbmRlZCBzdGF0 aXN0aWNzIG9iamVjdApAQCAtNzI3NSw2ICs3NjA4LDE3MSBAQCBnZXRfdXRpbGl0eV9xdWVyeV9k ZWYoUXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpCiAJfQogfQogCisKKy8q CisgKiBQYXJzZSBiYWNrIGEgZ3JhcGggbGFiZWwgZXhwcmVzc2lvbgorICovCitzdGF0aWMgdm9p ZAorZ2V0X2dyYXBoX2xhYmVsX2V4cHIoTm9kZSAqbGFiZWxfZXhwciwgZGVwYXJzZV9jb250ZXh0 ICpjb250ZXh0KQoreworCVN0cmluZ0luZm8JYnVmID0gY29udGV4dC0+YnVmOworCisJY2hlY2tf c3RhY2tfZGVwdGgoKTsKKworCXN3aXRjaCAobm9kZVRhZyhsYWJlbF9leHByKSkKKwl7CisJCWNh c2UgVF9HcmFwaExhYmVsUmVmOgorCQkJeworCQkJCUdyYXBoTGFiZWxSZWYgKmxyZWYgPSAoR3Jh cGhMYWJlbFJlZiAqKSBsYWJlbF9leHByOworCisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhi dWYsIHF1b3RlX2lkZW50aWZpZXIoZ2V0X3Byb3BncmFwaF9sYWJlbF9uYW1lKGxyZWYtPmxhYmVs aWQpKSk7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJY2FzZSBUX0Jvb2xFeHByOgorCQkJeworCQkJ CUJvb2xFeHByICAgKmJlID0gKEJvb2xFeHByICopIGxhYmVsX2V4cHI7CisJCQkJTGlzdENlbGwg ICAqbGM7CisJCQkJYm9vbAkJZmlyc3QgPSB0cnVlOworCisJCQkJQXNzZXJ0KGJlLT5ib29sb3Ag PT0gT1JfRVhQUik7CisKKwkJCQlmb3JlYWNoKGxjLCBiZS0+YXJncykKKwkJCQl7CisJCQkJCWlm ICghZmlyc3QpCisJCQkJCXsKKwkJCQkJCWlmIChiZS0+Ym9vbG9wID09IE9SX0VYUFIpCisJCQkJ CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJ8Iik7CisJCQkJCX0KKwkJCQkJZWxzZQor CQkJCQkJZmlyc3QgPSBmYWxzZTsKKwkJCQkJZ2V0X2dyYXBoX2xhYmVsX2V4cHIobGZpcnN0KGxj KSwgY29udGV4dCk7CisJCQkJfQorCisJCQkJYnJlYWs7CisJCQl9CisKKwkJZGVmYXVsdDoKKwkJ CWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgbm9kZSB0eXBlOiAlZCIsIChpbnQpIG5vZGVUYWco bGFiZWxfZXhwcikpOworCQkJYnJlYWs7CisJfQorfQorCisvKgorICogUGFyc2UgYmFjayBhIHBh dGggcGF0dGVybiBleHByZXNzaW9uCisgKi8KK3N0YXRpYyB2b2lkCitnZXRfcGF0aF9wYXR0ZXJu X2V4cHJfZGVmKExpc3QgKnBhdGhfcGF0dGVybl9leHByLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRl eHQpCit7CisJU3RyaW5nSW5mbwlidWYgPSBjb250ZXh0LT5idWY7CisJTGlzdENlbGwgICAqbGM7 CisKKwlmb3JlYWNoKGxjLCBwYXRoX3BhdHRlcm5fZXhwcikKKwl7CisJCUdyYXBoRWxlbWVudFBh dHRlcm4gKmdlcCA9IGxmaXJzdF9ub2RlKEdyYXBoRWxlbWVudFBhdHRlcm4sIGxjKTsKKwkJY29u c3QgY2hhciAqc2VwID0gIiI7CisKKwkJc3dpdGNoIChnZXAtPmtpbmQpCisJCXsKKwkJCWNhc2Ug VkVSVEVYX1BBVFRFUk46CisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIoIik7CisJ CQkJYnJlYWs7CisJCQljYXNlIEVER0VfUEFUVEVSTl9MRUZUOgorCQkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoYnVmLCAiPC1bIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEVER0VfUEFUVEVSTl9S SUdIVDoKKwkJCWNhc2UgRURHRV9QQVRURVJOX0FOWToKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKGJ1ZiwgIi1bIik7CisJCQkJYnJlYWs7CisJCQljYXNlIFBBUkVOX0VYUFI6CisJCQkJYXBw ZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIoIik7CisJCQkJYnJlYWs7CisJCX0KKworCQlpZiAo Z2VwLT52YXJpYWJsZSkKKwkJeworCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIGdlcC0+ dmFyaWFibGUpOworCQkJc2VwID0gIiAiOworCQl9CisKKwkJaWYgKGdlcC0+bGFiZWxleHByKQor CQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1Ziwgc2VwKTsKKwkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoYnVmLCAiSVMgIik7CisJCQlnZXRfZ3JhcGhfbGFiZWxfZXhwcihnZXAtPmxh YmVsZXhwciwgY29udGV4dCk7CisJCQlzZXAgPSAiICI7CisJCX0KKworCQlpZiAoZ2VwLT5zdWJl eHByKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1Ziwgc2VwKTsKKwkJCWdldF9w YXRoX3BhdHRlcm5fZXhwcl9kZWYoZ2VwLT5zdWJleHByLCBjb250ZXh0KTsKKwkJCXNlcCA9ICIg IjsKKwkJfQorCisJCWlmIChnZXAtPndoZXJlQ2xhdXNlKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKGJ1Ziwgc2VwKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiV0hF UkUgIik7CisJCQlnZXRfcnVsZV9leHByKGdlcC0+d2hlcmVDbGF1c2UsIGNvbnRleHQsIGZhbHNl KTsKKwkJfQorCisJCXN3aXRjaCAoZ2VwLT5raW5kKQorCQl7CisJCQljYXNlIFZFUlRFWF9QQVRU RVJOOgorCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiKSIpOworCQkJCWJyZWFrOwor CQkJY2FzZSBFREdFX1BBVFRFUk5fTEVGVDoKKwkJCWNhc2UgRURHRV9QQVRURVJOX0FOWToKKwkJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIl0tIik7CisJCQkJYnJlYWs7CisJCQljYXNl IEVER0VfUEFUVEVSTl9SSUdIVDoKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIl0t PiIpOworCQkJCWJyZWFrOworCQkJY2FzZSBQQVJFTl9FWFBSOgorCQkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoYnVmLCAiKSIpOworCQkJCWJyZWFrOworCQl9CisKKwkJaWYgKGdlcC0+cXVhbnRp ZmllcikKKwkJeworCQkJaW50CQkJbG93ZXIgPSBsaW5pdGlhbF9pbnQoZ2VwLT5xdWFudGlmaWVy KTsKKwkJCWludAkJCXVwcGVyID0gbHNlY29uZF9pbnQoZ2VwLT5xdWFudGlmaWVyKTsKKworCQkJ YXBwZW5kU3RyaW5nSW5mbyhidWYsICJ7JWQsJWR9IiwgbG93ZXIsIHVwcGVyKTsKKwkJfQorCX0K K30KKworLyoKKyAqIFBhcnNlIGJhY2sgYSBncmFwaCBwYXR0ZXJuCisgKi8KK3N0YXRpYyB2b2lk CitnZXRfZ3JhcGhfcGF0dGVybl9kZWYoR3JhcGhQYXR0ZXJuICpncmFwaF9wYXR0ZXJuLCBkZXBh cnNlX2NvbnRleHQgKmNvbnRleHQpCit7CisJU3RyaW5nSW5mbwlidWYgPSBjb250ZXh0LT5idWY7 CisJTGlzdENlbGwgICAqbGM7CisJYm9vbAkJZmlyc3QgPSB0cnVlOworCisJZm9yZWFjaChsYywg Z3JhcGhfcGF0dGVybi0+cGF0aF9wYXR0ZXJuX2xpc3QpCisJeworCQlMaXN0CSAgICpwYXRoX3Bh dHRlcm5fZXhwciA9IGxmaXJzdF9ub2RlKExpc3QsIGxjKTsKKworCQlpZiAoIWZpcnN0KQorCQkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIsICIpOworCQllbHNlCisJCQlmaXJzdCA9IGZh bHNlOworCisJCWdldF9wYXRoX3BhdHRlcm5fZXhwcl9kZWYocGF0aF9wYXR0ZXJuX2V4cHIsIGNv bnRleHQpOworCX0KKworCWlmIChncmFwaF9wYXR0ZXJuLT53aGVyZUNsYXVzZSkKKwl7CisJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiV0hFUkUgIik7CisJCWdldF9ydWxlX2V4cHIoZ3Jh cGhfcGF0dGVybi0+d2hlcmVDbGF1c2UsIGNvbnRleHQsIGZhbHNlKTsKKwl9Cit9CisKIC8qCiAg KiBEaXNwbGF5IGEgVmFyIGFwcHJvcHJpYXRlbHkuCiAgKgpAQCAtNzgzNyw2ICs4MzM1LDcgQEAg Z2V0X25hbWVfZm9yX3Zhcl9maWVsZChWYXIgKnZhciwgaW50IGZpZWxkbm8sCiAJCWNhc2UgUlRF X1JFTEFUSU9OOgogCQljYXNlIFJURV9WQUxVRVM6CiAJCWNhc2UgUlRFX05BTUVEVFVQTEVTVE9S RToKKwkJY2FzZSBSVEVfR1JBUEhfVEFCTEU6CiAJCWNhc2UgUlRFX1JFU1VMVDoKIAogCQkJLyoK QEAgLTEwMjI2LDYgKzEwNzI1LDE0IEBAIGdldF9ydWxlX2V4cHIoTm9kZSAqbm9kZSwgZGVwYXJz ZV9jb250ZXh0ICpjb250ZXh0LAogCQkJZ2V0X3RhYmxlZnVuYygoVGFibGVGdW5jICopIG5vZGUs IGNvbnRleHQsIHNob3dpbXBsaWNpdCk7CiAJCQlicmVhazsKIAorCQljYXNlIFRfR3JhcGhQcm9w ZXJ0eVJlZjoKKwkJCXsKKwkJCQlHcmFwaFByb3BlcnR5UmVmICpncHIgPSAoR3JhcGhQcm9wZXJ0 eVJlZiAqKSBub2RlOworCisJCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlcy4lcyIsIHF1b3Rl X2lkZW50aWZpZXIoZ3ByLT5lbHZhcm5hbWUpLCBxdW90ZV9pZGVudGlmaWVyKGdldF9wcm9wZ3Jh cGhfcHJvcGVydHlfbmFtZShncHItPnByb3BpZCkpKTsKKwkJCQlicmVhazsKKwkJCX0KKwogCQlk ZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBub2RlIHR5cGU6ICVkIiwgKGlu dCkgbm9kZVRhZyhub2RlKSk7CiAJCQlicmVhazsKQEAgLTEyMDg0LDYgKzEyNTkxLDM2IEBAIGdl dF9mcm9tX2NsYXVzZV9pdGVtKE5vZGUgKmp0bm9kZSwgUXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2Nv bnRleHQgKmNvbnRleHQpCiAJCQljYXNlIFJURV9UQUJMRUZVTkM6CiAJCQkJZ2V0X3RhYmxlZnVu YyhydGUtPnRhYmxlZnVuYywgY29udGV4dCwgdHJ1ZSk7CiAJCQkJYnJlYWs7CisJCQljYXNlIFJU RV9HUkFQSF9UQUJMRToKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIkdSQVBIX1RB QkxFICgiKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgZ2VuZXJhdGVfcmVsYXRp b25fbmFtZShydGUtPnJlbGlkLCBjb250ZXh0LT5uYW1lc3BhY2VzKSk7CisJCQkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZyhidWYsICIgTUFUQ0ggIik7CisJCQkJZ2V0X2dyYXBoX3BhdHRlcm5fZGVm KHJ0ZS0+Z3JhcGhfcGF0dGVybiwgY29udGV4dCk7CisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZyhidWYsICIgQ09MVU1OUyAoIik7CisJCQkJeworCQkJCQlMaXN0Q2VsbCAgICpsYzsKKwkJCQkJ Ym9vbAkJZmlyc3QgPSB0cnVlOworCisJCQkJCWZvcmVhY2gobGMsIHJ0ZS0+Z3JhcGhfdGFibGVf Y29sdW1ucykKKwkJCQkJeworCQkJCQkJVGFyZ2V0RW50cnkgKnRlID0gbGZpcnN0X25vZGUoVGFy Z2V0RW50cnksIGxjKTsKKwkJCQkJCWRlcGFyc2VfY29udGV4dCBjb250ZXh0ID0gezB9OworCisJ CQkJCQlpZiAoIWZpcnN0KQorCQkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAi KTsKKwkJCQkJCWVsc2UKKwkJCQkJCQlmaXJzdCA9IGZhbHNlOworCisJCQkJCQljb250ZXh0LmJ1 ZiA9IGJ1ZjsKKworCQkJCQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSB0ZS0+ZXhwciwgJmNvbnRl eHQsIGZhbHNlKTsKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIEFTICIpOwor CQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHF1b3RlX2lkZW50aWZpZXIodGUtPnJl c25hbWUpKTsKKwkJCQkJfQorCQkJCX0KKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1Ziwg IikiKTsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIikiKTsKKwkJCQlicmVhazsK IAkJCWNhc2UgUlRFX1ZBTFVFUzoKIAkJCQkvKiBWYWx1ZXMgbGlzdCBSVEUgKi8KIAkJCQlhcHBl bmRTdHJpbmdJbmZvQ2hhcihidWYsICcoJyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9sc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5j CmluZGV4IDQ4YTI4MGQwODkuLjc0NjMzM2UzMTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNj YWNoZS5jCkBAIC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf cHJvYy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvcGdyYXBoX2xhYmVsLmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9wZ19wcm9wZ3JhcGhfcHJvcGVydHkuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19yYW5nZS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfc3RhdGlzdGljLmgiCkBAIC0zNzE0LDMgKzM3MTYsMzkgQEAgZ2V0X3N1YnNj cmlwdGlvbl9uYW1lKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rKQogCiAJcmV0dXJuIHN1Ym5h bWU7CiB9CisKK2NoYXIgKgorZ2V0X3Byb3BncmFwaF9sYWJlbF9uYW1lKE9pZCBsYWJlbG9pZCkK K3sKKwlIZWFwVHVwbGUJdHVwbGU7CisJY2hhcgkgICAqbGFiZWxuYW1lOworCisJdHVwbGUgPSBT ZWFyY2hTeXNDYWNoZTEoUFJPUEdSQVBITEFCRUxPSUQsIGxhYmVsb2lkKTsKKwlpZiAoIXR1cGxl KQorCXsKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGxhYmVsICV1Iiwg bGFiZWxvaWQpOworCQlyZXR1cm4gTlVMTDsKKwl9CisJbGFiZWxuYW1lID0gcHN0cmR1cChOYW1l U3RyKCgoRm9ybV9wZ19wcm9wZ3JhcGhfbGFiZWwpIEdFVFNUUlVDVCh0dXBsZSkpLT5wZ2xsYWJl bCkpOworCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisKKwlyZXR1cm4gbGFiZWxuYW1lOworfQor CitjaGFyICoKK2dldF9wcm9wZ3JhcGhfcHJvcGVydHlfbmFtZShPaWQgcHJvcG9pZCkKK3sKKwlI ZWFwVHVwbGUJdHVwbGU7CisJY2hhcgkgICAqcHJvcG5hbWU7CisKKwl0dXBsZSA9IFNlYXJjaFN5 c0NhY2hlMShQUk9QR1JBUEhQUk9QT0lELCBwcm9wb2lkKTsKKwlpZiAoIXR1cGxlKQorCXsKKwkJ ZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHByb3BlcnR5ICV1IiwgcHJvcG9p ZCk7CisJCXJldHVybiBOVUxMOworCX0KKwlwcm9wbmFtZSA9IHBzdHJkdXAoTmFtZVN0cigoKEZv cm1fcGdfcHJvcGdyYXBoX3Byb3BlcnR5KSBHRVRTVFJVQ1QodHVwbGUpKS0+cGdwbmFtZSkpOwor CVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisKKwlyZXR1cm4gcHJvcG5hbWU7Cit9CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2R1bXAvY29tbW9uLmMgYi9zcmMvYmluL3BnX2R1bXAvY29tbW9uLmMK aW5kZXggYzMyM2I1YmQzZC4uNTdmYjVlNjA2MiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1w L2NvbW1vbi5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9jb21tb24uYwpAQCAtNDk3LDcgKzQ5Nyw4 IEBAIGZsYWdJbmhBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBu dW1UYWJsZXMpCiAJCS8qIFNvbWUga2luZHMgbmV2ZXIgaGF2ZSBwYXJlbnRzICovCiAJCWlmICh0 YmluZm8tPnJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSB8fAogCQkJdGJpbmZvLT5yZWxraW5k ID09IFJFTEtJTkRfVklFVyB8fAotCQkJdGJpbmZvLT5yZWxraW5kID09IFJFTEtJTkRfTUFUVklF VykKKwkJCXRiaW5mby0+cmVsa2luZCA9PSBSRUxLSU5EX01BVFZJRVcgfHwKKwkJCXRiaW5mby0+ cmVsa2luZCA9PSBSRUxLSU5EX1BST1BHUkFQSCkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIERvbid0 IGJvdGhlciBjb21wdXRpbmcgYW55dGhpbmcgZm9yIG5vbi10YXJnZXQgdGFibGVzLCBlaXRoZXIg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwppbmRleCA4YzIwYzI2M2M0Li4yNTRi NDdhN2VmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMK KysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCkBAIC0zNjQxLDYgKzM2 NDEsNyBAQCBfZ2V0T2JqZWN0RGVzY3JpcHRpb24oUFFFeHBCdWZmZXIgYnVmLCBjb25zdCBUb2NF bnRyeSAqdGUpCiAJCXN0cmNtcCh0eXBlLCAiRE9NQUlOIikgPT0gMCB8fAogCQlzdHJjbXAodHlw ZSwgIkZPUkVJR04gVEFCTEUiKSA9PSAwIHx8CiAJCXN0cmNtcCh0eXBlLCAiTUFURVJJQUxJWkVE IFZJRVciKSA9PSAwIHx8CisJCXN0cmNtcCh0eXBlLCAiUFJPUEVSVFkgR1JBUEgiKSA9PSAwIHx8 CiAJCXN0cmNtcCh0eXBlLCAiU0VRVUVOQ0UiKSA9PSAwIHx8CiAJCXN0cmNtcCh0eXBlLCAiU1RB VElTVElDUyIpID09IDAgfHwKIAkJc3RyY21wKHR5cGUsICJUQUJMRSIpID09IDAgfHwKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jCmluZGV4IGI2ZTAxZDNkMjkuLjUyOGM2MWU1YjQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtMTY5MSwx MCArMTY5MSwxMCBAQCBleHBhbmRfdGFibGVfbmFtZV9wYXR0ZXJucyhBcmNoaXZlICpmb3V0LAog CQkJCQkJICAiXG4gICAgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuIgogCQkJ CQkJICAiXG4gICAgIE9OIG4ub2lkIE9QRVJBVE9SKHBnX2NhdGFsb2cuPSkgYy5yZWxuYW1lc3Bh Y2UiCiAJCQkJCQkgICJcbldIRVJFIGMucmVsa2luZCBPUEVSQVRPUihwZ19jYXRhbG9nLj0pIEFO WSIKLQkJCQkJCSAgIlxuICAgIChhcnJheVsnJWMnLCAnJWMnLCAnJWMnLCAnJWMnLCAnJWMnLCAn JWMnXSlcbiIsCisJCQkJCQkgICJcbiAgICAoYXJyYXlbJyVjJywgJyVjJywgJyVjJywgJyVjJywg JyVjJywgJyVjJywgJyVjJ10pXG4iLAogCQkJCQkJICBSRUxLSU5EX1JFTEFUSU9OLCBSRUxLSU5E X1NFUVVFTkNFLCBSRUxLSU5EX1ZJRVcsCiAJCQkJCQkgIFJFTEtJTkRfTUFUVklFVywgUkVMS0lO RF9GT1JFSUdOX1RBQkxFLAotCQkJCQkJICBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKTsKKwkJ CQkJCSAgUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSwgUkVMS0lORF9QUk9QR1JBUEgpOwogCQlp bml0UFFFeHBCdWZmZXIoJmRiYnVmKTsKIAkJcHJvY2Vzc1NRTE5hbWVQYXR0ZXJuKEdldENvbm5l Y3Rpb24oZm91dCksIHF1ZXJ5LCBjZWxsLT52YWwsIHRydWUsCiAJCQkJCQkJICBmYWxzZSwgIm4u bnNwbmFtZSIsICJjLnJlbG5hbWUiLCBOVUxMLApAQCAtMjg2MSw2ICsyODYxLDkgQEAgbWFrZVRh YmxlRGF0YUluZm8oRHVtcE9wdGlvbnMgKmRvcHQsIFRhYmxlSW5mbyAqdGJpbmZvKQogCWlmICh0 YmluZm8tPmRhdGFPYmogIT0gTlVMTCkKIAkJcmV0dXJuOwogCisJLyogU2tpcCBwcm9wZXJ0eSBn cmFwaHMgKG5vIGRhdGEgdG8gZHVtcCkgKi8KKwlpZiAodGJpbmZvLT5yZWxraW5kID09IFJFTEtJ TkRfUFJPUEdSQVBIKQorCQlyZXR1cm47CiAJLyogU2tpcCBWSUVXcyAobm8gZGF0YSB0byBkdW1w KSAqLwogCWlmICh0YmluZm8tPnJlbGtpbmQgPT0gUkVMS0lORF9WSUVXKQogCQlyZXR1cm47CkBA IC02OTY2LDcgKzY5NjksOCBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1UYWJs ZXMpCiAJCQkJCQkgQ3BwQXNTdHJpbmcyKFJFTEtJTkRfQ09NUE9TSVRFX1RZUEUpICIsICIKIAkJ CQkJCSBDcHBBc1N0cmluZzIoUkVMS0lORF9NQVRWSUVXKSAiLCAiCiAJCQkJCQkgQ3BwQXNTdHJp bmcyKFJFTEtJTkRfRk9SRUlHTl9UQUJMRSkgIiwgIgotCQkJCQkJIENwcEFzU3RyaW5nMihSRUxL SU5EX1BBUlRJVElPTkVEX1RBQkxFKSAiKVxuIgorCQkJCQkJIENwcEFzU3RyaW5nMihSRUxLSU5E X1BBUlRJVElPTkVEX1RBQkxFKSAiLCAiCisJCQkJCQkgQ3BwQXNTdHJpbmcyKFJFTEtJTkRfUFJP UEdSQVBIKSAiKVxuIgogCQkJCQkJICJPUkRFUiBCWSBjLm9pZCIpOwogCiAJcmVzID0gRXhlY3V0 ZVNxbFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOwpAQCAtMTU3OTIs OCArMTU3OTYsNiBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgY29uc3QgVGFibGVJ bmZvICp0YmluZm8pCiAKIAkJcmVsdHlwZW5hbWUgPSAiVklFVyI7CiAKLQkJYXBwZW5kUFFFeHBC dWZmZXIoZGVscSwgIkRST1AgVklFVyAlcztcbiIsIHF1YWxyZWxuYW1lKTsKLQogCQlpZiAoZG9w dC0+YmluYXJ5X3VwZ3JhZGUpCiAJCQliaW5hcnlfdXBncmFkZV9zZXRfcGdfY2xhc3Nfb2lkcyhm b3V0LCBxLAogCQkJCQkJCQkJCQkgdGJpbmZvLT5kb2JqLmNhdElkLm9pZCk7CkBAIC0xNTgxOSw2 ICsxNTgyMSw0NyBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgY29uc3QgVGFibGVJ bmZvICp0YmluZm8pCiAJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiXG4gIFdJVEggJXMgQ0hFQ0sg T1BUSU9OIiwgdGJpbmZvLT5jaGVja29wdGlvbik7CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEs ICI7XG4iKTsKIAl9CisJZWxzZSBpZiAodGJpbmZvLT5yZWxraW5kID09IFJFTEtJTkRfUFJPUEdS QVBIKQorCXsKKwkJUFFFeHBCdWZmZXIgcXVlcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCQlQ R3Jlc3VsdCAgICpyZXM7CisJCWludAkJCWxlbjsKKworCQlyZWx0eXBlbmFtZSA9ICJQUk9QRVJU WSBHUkFQSCI7CisKKwkJaWYgKGRvcHQtPmJpbmFyeV91cGdyYWRlKQorCQkJYmluYXJ5X3VwZ3Jh ZGVfc2V0X3BnX2NsYXNzX29pZHMoZm91dCwgcSwKKwkJCQkJCQkJCQkJIHRiaW5mby0+ZG9iai5j YXRJZC5vaWQsIGZhbHNlKTsKKworCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwKKwkJCQkJCSAg IlNFTEVDVCBwZ19jYXRhbG9nLnBnX2dldF9wcm9wZ3JhcGhkZWYoJyV1Jzo6cGdfY2F0YWxvZy5v aWQpIEFTIHBnZGVmIiwKKwkJCQkJCSAgdGJpbmZvLT5kb2JqLmNhdElkLm9pZCk7CisKKwkJcmVz ID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOwor CisJCWlmIChQUW50dXBsZXMocmVzKSAhPSAxKQorCQl7CisJCQlpZiAoUFFudHVwbGVzKHJlcykg PCAxKQorCQkJCXBnX2ZhdGFsKCJxdWVyeSB0byBvYnRhaW4gZGVmaW5pdGlvbiBvZiBwcm9wZXJ0 eSBncmFwaCBcIiVzXCIgcmV0dXJuZWQgbm8gZGF0YSIsCisJCQkJCQkgdGJpbmZvLT5kb2JqLm5h bWUpOworCQkJZWxzZQorCQkJCXBnX2ZhdGFsKCJxdWVyeSB0byBvYnRhaW4gZGVmaW5pdGlvbiBv ZiBwcm9wZXJ0eSBncmFwaCBcIiVzXCIgcmV0dXJuZWQgbW9yZSB0aGFuIG9uZSBkZWZpbml0aW9u IiwKKwkJCQkJCSB0YmluZm8tPmRvYmoubmFtZSk7CisJCX0KKworCQlsZW4gPSBQUWdldGxlbmd0 aChyZXMsIDAsIDApOworCisJCWlmIChsZW4gPT0gMCkKKwkJCXBnX2ZhdGFsKCJkZWZpbml0aW9u IG9mIHByb3BlcnR5IGdyYXBoIFwiJXNcIiBhcHBlYXJzIHRvIGJlIGVtcHR5IChsZW5ndGggemVy bykiLAorCQkJCQkgdGJpbmZvLT5kb2JqLm5hbWUpOworCisJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KHEsIFBRZ2V0dmFsdWUocmVzLCAwLCAwKSk7CisKKwkJUFFjbGVhcihyZXMpOworCQlkZXN0cm95 UFFFeHBCdWZmZXIocXVlcnkpOworCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsICI7XG4iKTsK Kwl9CiAJZWxzZQogCXsKIAkJY2hhcgkgICAqcGFydGtleWRlZiA9IE5VTEw7CkBAIC0xNTg5NCw4 ICsxNTkzNyw2IEBAIGR1bXBUYWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBjb25zdCBUYWJsZUlu Zm8gKnRiaW5mbykKIAkJbnVtUGFyZW50cyA9IHRiaW5mby0+bnVtUGFyZW50czsKIAkJcGFyZW50 cyA9IHRiaW5mby0+cGFyZW50czsKIAotCQlhcHBlbmRQUUV4cEJ1ZmZlcihkZWxxLCAiRFJPUCAl cyAlcztcbiIsIHJlbHR5cGVuYW1lLCBxdWFscmVsbmFtZSk7Ci0KIAkJaWYgKGRvcHQtPmJpbmFy eV91cGdyYWRlKQogCQkJYmluYXJ5X3VwZ3JhZGVfc2V0X3BnX2NsYXNzX29pZHMoZm91dCwgcSwK IAkJCQkJCQkJCQkJIHRiaW5mby0+ZG9iai5jYXRJZC5vaWQpOwpAQCAtMTY1MzMsNiArMTY1NzQs OCBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgY29uc3QgVGFibGVJbmZvICp0Ymlu Zm8pCiAJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICJcbkFMVEVSIFRBQkxFIE9OTFkgJXMgRk9SQ0Ug Uk9XIExFVkVMIFNFQ1VSSVRZO1xuIiwKIAkJCQkJCSAgcXVhbHJlbG5hbWUpOwogCisJYXBwZW5k UFFFeHBCdWZmZXIoZGVscSwgIkRST1AgJXMgJXM7XG4iLCByZWx0eXBlbmFtZSwgcXVhbHJlbG5h bWUpOworCiAJaWYgKGRvcHQtPmJpbmFyeV91cGdyYWRlKQogCQliaW5hcnlfdXBncmFkZV9leHRl bnNpb25fbWVtYmVyKHEsICZ0YmluZm8tPmRvYmosCiAJCQkJCQkJCQkJcmVsdHlwZW5hbWUsIHFy ZWxuYW1lLApAQCAtMTg0NjksNiArMTg1MTIsMTYgQEAgZ2V0RGVwZW5kZW5jaWVzKEFyY2hpdmUg KmZvdXQpCiAJCQkJCQkgImNsYXNzaWQgPSAncGdfYW1wcm9jJzo6cmVnY2xhc3MgQU5EIG9iamlk ID0gcC5vaWQgIgogCQkJCQkJICJBTkQgTk9UIChyZWZjbGFzc2lkID0gJ3BnX29wZmFtaWx5Jzo6 cmVnY2xhc3MgQU5EIGFtcHJvY2ZhbWlseSA9IHJlZm9iamlkKVxuIik7CiAKKwkvKgorCSAqIFRy YW5zbGF0ZSBkZXBlbmRlbmNpZXMgb2YgcGdfcHJvcGdyYXBoX2VsZW1lbnQgZW50cmllcyBpbnRv CisJICogZGVwZW5kZW5jaWVzIG9mIHRoZWlyIHBhcmVudCBwZ19jbGFzcyBlbnRyeS4KKwkgKi8K KwlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIlVOSU9OIEFMTFxuIgorCQkJCQkJICJTRUxF Q1QgJ3BnX2NsYXNzJzo6cmVnY2xhc3MgQVMgY2xhc3NpZCwgcGdlcGdpZCBBUyBvYmppZCwgcmVm Y2xhc3NpZCwgcmVmb2JqaWQsIGRlcHR5cGUgIgorCQkJCQkJICJGUk9NIHBnX2RlcGVuZCBkLCBw Z19wcm9wZ3JhcGhfZWxlbWVudCBwZ2UgIgorCQkJCQkJICJXSEVSRSBkZXB0eXBlIE5PVCBJTiAo J3AnLCAnZScsICdpJykgQU5EICIKKwkJCQkJCSAiY2xhc3NpZCA9ICdwZ19wcm9wZ3JhcGhfZWxl bWVudCc6OnJlZ2NsYXNzIEFORCBvYmppZCA9IHBnZS5vaWRcbiIpOworCiAJLyogU29ydCB0aGUg b3V0cHV0IGZvciBlZmZpY2llbmN5IGJlbG93ICovCiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksICJPUkRFUiBCWSAxLDIiKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAy X3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCA1YmNj MjI0NGQ1Li45ZDY0ODVhY2ExIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdf ZHVtcC5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtMjkxMiw2 ICsyOTEyLDE3IEBAIG15ICV0ZXN0cyA9ICgKIAkJfSwKIAl9LAogCisJJ0NSRUFURSBQUk9QRVJU WSBHUkFQSCBwcm9wZ3JhcGgnID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDIwLAorCQljcmVhdGVf c3FsICAgPT4gJ0NSRUFURSBQUk9QRVJUWSBHUkFQSCBkdW1wX3Rlc3QucHJvcGdyYXBoOycsCisJ CXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBQUk9QRVJUWSBHUkFQSCBkdW1wX3Rlc3QucHJv cGdyYXBoXEU7CisJCQkveG0sCisJCWxpa2UgPT4KKwkJICB7ICVmdWxsX3J1bnMsICVkdW1wX3Rl c3Rfc2NoZW1hX3J1bnMsIHNlY3Rpb25fcHJlX2RhdGEgPT4gMSwgfSwKKwkJdW5saWtlID0+IHsg ZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1hID0+IDEsIG9ubHlfZHVtcF9tZWFzdXJlbWVudCA9PiAx LCB9LAorCX0sCisKIAknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEnID0+IHsKIAkJY3JlYXRlX29y ZGVyID0+IDUwLAogCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgUFVCTElDQVRJT04gcHViMTsnLApk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyBiL3NyYy9iaW4vcHNxbC9jb21tYW5k LmMKaW5kZXggNGRmYzdiMmQ4NS4uMzBiYmRkNmI5MyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3Fs L2NvbW1hbmQuYworKysgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5jCkBAIC04NzEsNyArODcxLDcg QEAgZXhlY19jb21tYW5kX2QoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9i cmFuY2gsIGNvbnN0IGNoYXIgKmNtZCkKIAkJCQkJc3VjY2VzcyA9IGRlc2NyaWJlVGFibGVEZXRh aWxzKHBhdHRlcm4sIHNob3dfdmVyYm9zZSwgc2hvd19zeXN0ZW0pOwogCQkJCWVsc2UKIAkJCQkJ Lyogc3RhbmRhcmQgbGlzdGluZyBvZiBpbnRlcmVzdGluZyB0aGluZ3MgKi8KLQkJCQkJc3VjY2Vz cyA9IGxpc3RUYWJsZXMoInR2bXNFIiwgTlVMTCwgc2hvd192ZXJib3NlLCBzaG93X3N5c3RlbSk7 CisJCQkJCXN1Y2Nlc3MgPSBsaXN0VGFibGVzKCJ0dm1zRUciLCBOVUxMLCBzaG93X3ZlcmJvc2Us IHNob3dfc3lzdGVtKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgJ0EnOgogCQkJCXsKQEAgLTEwMDIs NiArMTAwMiw3IEBAIGV4ZWNfY29tbWFuZF9kKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9v bCBhY3RpdmVfYnJhbmNoLCBjb25zdCBjaGFyICpjbWQpCiAJCQljYXNlICdpJzoKIAkJCWNhc2Ug J3MnOgogCQkJY2FzZSAnRSc6CisJCQljYXNlICdHJzoKIAkJCQlzdWNjZXNzID0gbGlzdFRhYmxl cygmY21kWzFdLCBwYXR0ZXJuLCBzaG93X3ZlcmJvc2UsIHNob3dfc3lzdGVtKTsKIAkJCQlicmVh azsKIAkJCWNhc2UgJ3InOgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9z cmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCA3YzlhMWYyMzRjLi43YmE2MzFjZDFiIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3Jp YmUuYwpAQCAtMTAyOSw2ICsxMDI5LDcgQEAgcGVybWlzc2lvbnNMaXN0KGNvbnN0IGNoYXIgKnBh dHRlcm4sIGJvb2wgc2hvd1N5c3RlbSkKIAkJCQkJICAiIFdIRU4gIiBDcHBBc1N0cmluZzIoUkVM S0lORF9NQVRWSUVXKSAiIFRIRU4gJyVzJyIKIAkJCQkJICAiIFdIRU4gIiBDcHBBc1N0cmluZzIo UkVMS0lORF9TRVFVRU5DRSkgIiBUSEVOICclcyciCiAJCQkJCSAgIiBXSEVOICIgQ3BwQXNTdHJp bmcyKFJFTEtJTkRfRk9SRUlHTl9UQUJMRSkgIiBUSEVOICclcyciCisJCQkJCSAgIiBXSEVOICIg Q3BwQXNTdHJpbmcyKFJFTEtJTkRfUFJPUEdSQVBIKSAiIFRIRU4gJyVzJyIKIAkJCQkJICAiIFdI RU4gIiBDcHBBc1N0cmluZzIoUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkgIiBUSEVOICclcyci CiAJCQkJCSAgIiBFTkQgYXMgXCIlc1wiLFxuIgogCQkJCQkgICIgICIsCkBAIC0xMDM5LDYgKzEw NDAsNyBAQCBwZXJtaXNzaW9uc0xpc3QoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCBzaG93U3lz dGVtKQogCQkJCQkgIGdldHRleHRfbm9vcCgibWF0ZXJpYWxpemVkIHZpZXciKSwKIAkJCQkJICBn ZXR0ZXh0X25vb3AoInNlcXVlbmNlIiksCiAJCQkJCSAgZ2V0dGV4dF9ub29wKCJmb3JlaWduIHRh YmxlIiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJwcm9wZXJ0eSBncmFwaCIpLAogCQkJCQkgIGdl dHRleHRfbm9vcCgicGFydGl0aW9uZWQgdGFibGUiKSwKIAkJCQkJICBnZXR0ZXh0X25vb3AoIlR5 cGUiKSk7CiAKQEAgLTExMzAsNiArMTEzMiw3IEBAIHBlcm1pc3Npb25zTGlzdChjb25zdCBjaGFy ICpwYXR0ZXJuLCBib29sIHNob3dTeXN0ZW0pCiAJCQkJCQkgQ3BwQXNTdHJpbmcyKFJFTEtJTkRf TUFUVklFVykgIiwiCiAJCQkJCQkgQ3BwQXNTdHJpbmcyKFJFTEtJTkRfU0VRVUVOQ0UpICIsIgog CQkJCQkJIENwcEFzU3RyaW5nMihSRUxLSU5EX0ZPUkVJR05fVEFCTEUpICIsIgorCQkJCQkJIENw cEFzU3RyaW5nMihSRUxLSU5EX1BST1BHUkFQSCkgIiwiCiAJCQkJCQkgQ3BwQXNTdHJpbmcyKFJF TEtJTkRfUEFSVElUSU9ORURfVEFCTEUpICIpXG4iKTsKIAogCWlmICghc2hvd1N5c3RlbSAmJiAh cGF0dGVybikKQEAgLTIwMTMsNiArMjAxNiwxMCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhj b25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZ0aXRsZSwgXygi UGFydGl0aW9uZWQgdGFibGUgXCIlcy4lc1wiIiksCiAJCQkJCQkJCSAgc2NoZW1hbmFtZSwgcmVs YXRpb25uYW1lKTsKIAkJCWJyZWFrOworCQljYXNlIFJFTEtJTkRfUFJPUEdSQVBIOgorCQkJcHJp bnRmUFFFeHBCdWZmZXIoJnRpdGxlLCBfKCJQcm9wZXJ0eSBncmFwaCBcIiVzLiVzXCIiKSwKKwkJ CQkJCQkgIHNjaGVtYW5hbWUsIHJlbGF0aW9ubmFtZSk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoK IAkJCS8qIHVudHJhbnNsYXRlZCB1bmtub3duIHJlbGtpbmQgKi8KIAkJCXByaW50ZlBRRXhwQnVm ZmVyKCZ0aXRsZSwgIj8lYz8gXCIlcy4lc1wiIiwKQEAgLTMwNTIsNiArMzA1OSwzMiBAQCBkZXNj cmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQl9CiAJfQogCisJ LyogQWRkIHByb3BlcnR5IGdyYXBoIGRlZmluaXRpb24gaW4gdmVyYm9zZSBtb2RlICovCisJaWYg KHRhYmxlaW5mby5yZWxraW5kID09IFJFTEtJTkRfUFJPUEdSQVBIICYmIHZlcmJvc2UpCisJewor CQlQR3Jlc3VsdCAgICpyZXN1bHQ7CisJCWNoYXIJICAgKnBnZGVmID0gTlVMTDsKKworCQlwcmlu dGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJICAiU0VMRUNUIHBnX2NhdGFsb2cucGdfZ2V0X3By b3BncmFwaGRlZignJXMnOjpwZ19jYXRhbG9nLm9pZCk7IiwKKwkJCQkJCSAgb2lkKTsKKwkJcmVz dWx0ID0gUFNRTGV4ZWMoYnVmLmRhdGEpOworCQlpZiAoIXJlc3VsdCkKKwkJCWdvdG8gZXJyb3Jf cmV0dXJuOworCisJCWlmIChQUW50dXBsZXMocmVzdWx0KSA+IDApCisJCQlwZ2RlZiA9IHBnX3N0 cmR1cChQUWdldHZhbHVlKHJlc3VsdCwgMCwgMCkpOworCisJCVBRY2xlYXIocmVzdWx0KTsKKwor CQlpZiAocGdkZWYpCisJCXsKKwkJCXByaW50VGFibGVBZGRGb290ZXIoJmNvbnQsIF8oIlByb3Bl cnR5IGdyYXBoIGRlZmluaXRpb246IikpOworCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIiAl cyIsIHBnZGVmKTsKKwkJCXByaW50VGFibGVBZGRGb290ZXIoJmNvbnQsIGJ1Zi5kYXRhKTsKKwkJ fQorCX0KKwogCS8qIEdldCB2aWV3X2RlZiBpZiB0YWJsZSBpcyBhIHZpZXcgb3IgbWF0ZXJpYWxp emVkIHZpZXcgKi8KIAlpZiAoKHRhYmxlaW5mby5yZWxraW5kID09IFJFTEtJTkRfVklFVyB8fAog CQkgdGFibGVpbmZvLnJlbGtpbmQgPT0gUkVMS0lORF9NQVRWSUVXKSAmJiB2ZXJib3NlKQpAQCAt MzkwMyw2ICszOTM2LDcgQEAgZGVzY3JpYmVSb2xlR3JhbnRzKGNvbnN0IGNoYXIgKnBhdHRlcm4s IGJvb2wgc2hvd1N5c3RlbSkKICAqIG0gLSBtYXRlcmlhbGl6ZWQgdmlld3MKICAqIHMgLSBzZXF1 ZW5jZXMKICAqIEUgLSBmb3JlaWduIHRhYmxlIChOb3RlOiBkaWZmZXJlbnQgZnJvbSAnZicsIHRo ZSByZWxraW5kIHZhbHVlKQorICogRyAtIHByb3BlcnR5IGdyYXBocwogICogKGFueSBvcmRlciBv ZiB0aGUgYWJvdmUgaXMgZmluZSkKICAqLwogYm9vbApAQCAtMzkxNCw2ICszOTQ4LDcgQEAgbGlz dFRhYmxlcyhjb25zdCBjaGFyICp0YWJ0eXBlcywgY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2 ZXJib3NlLCBib29sIHNob3dTeXMKIAlib29sCQlzaG93TWF0Vmlld3MgPSBzdHJjaHIodGFidHlw ZXMsICdtJykgIT0gTlVMTDsKIAlib29sCQlzaG93U2VxID0gc3RyY2hyKHRhYnR5cGVzLCAncycp ICE9IE5VTEw7CiAJYm9vbAkJc2hvd0ZvcmVpZ24gPSBzdHJjaHIodGFidHlwZXMsICdFJykgIT0g TlVMTDsKKwlib29sCQlzaG93UHJvcEdyYXBocyA9IHN0cmNocih0YWJ0eXBlcywgJ0cnKSAhPSBO VUxMOwogCiAJUFFFeHBCdWZmZXJEYXRhIGJ1ZjsKIAlQR3Jlc3VsdCAgICpyZXM7CkBAIC0zOTIy LDggKzM5NTcsOCBAQCBsaXN0VGFibGVzKGNvbnN0IGNoYXIgKnRhYnR5cGVzLCBjb25zdCBjaGFy ICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wgc2hvd1N5cwogCWJvb2wJCXRyYW5zbGF0ZV9j b2x1bW5zW10gPSB7ZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz ZSwgZmFsc2UsIGZhbHNlfTsKIAogCS8qIElmIHRhYnR5cGVzIGlzIGVtcHR5LCB3ZSBkZWZhdWx0 IHRvIFxkdHZtc0UgKGJ1dCBzZWUgYWxzbyBjb21tYW5kLmMpICovCi0JaWYgKCEoc2hvd1RhYmxl cyB8fCBzaG93SW5kZXhlcyB8fCBzaG93Vmlld3MgfHwgc2hvd01hdFZpZXdzIHx8IHNob3dTZXEg fHwgc2hvd0ZvcmVpZ24pKQotCQlzaG93VGFibGVzID0gc2hvd1ZpZXdzID0gc2hvd01hdFZpZXdz ID0gc2hvd1NlcSA9IHNob3dGb3JlaWduID0gdHJ1ZTsKKwlpZiAoIShzaG93VGFibGVzIHx8IHNo b3dJbmRleGVzIHx8IHNob3dWaWV3cyB8fCBzaG93TWF0Vmlld3MgfHwgc2hvd1NlcSB8fCBzaG93 Rm9yZWlnbiB8fCBzaG93UHJvcEdyYXBocykpCisJCXNob3dUYWJsZXMgPSBzaG93Vmlld3MgPSBz aG93TWF0Vmlld3MgPSBzaG93U2VxID0gc2hvd0ZvcmVpZ24gPSBzaG93UHJvcEdyYXBocyA9IHRy dWU7CiAKIAlpbml0UFFFeHBCdWZmZXIoJmJ1Zik7CiAKQEAgLTM5NDAsNiArMzk3NSw3IEBAIGxp c3RUYWJsZXMoY29uc3QgY2hhciAqdGFidHlwZXMsIGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wg dmVyYm9zZSwgYm9vbCBzaG93U3lzCiAJCQkJCSAgIiBXSEVOICIgQ3BwQXNTdHJpbmcyKFJFTEtJ TkRfRk9SRUlHTl9UQUJMRSkgIiBUSEVOICclcyciCiAJCQkJCSAgIiBXSEVOICIgQ3BwQXNTdHJp bmcyKFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpICIgVEhFTiAnJXMnIgogCQkJCQkgICIgV0hF TiAiIENwcEFzU3RyaW5nMihSRUxLSU5EX1BBUlRJVElPTkVEX0lOREVYKSAiIFRIRU4gJyVzJyIK KwkJCQkJICAiIFdIRU4gIiBDcHBBc1N0cmluZzIoUkVMS0lORF9QUk9QR1JBUEgpICIgVEhFTiAn JXMnIgogCQkJCQkgICIgRU5EIGFzIFwiJXNcIixcbiIKIAkJCQkJICAiICBwZ19jYXRhbG9nLnBn X2dldF91c2VyYnlpZChjLnJlbG93bmVyKSBhcyBcIiVzXCIiLAogCQkJCQkgIGdldHRleHRfbm9v cCgiU2NoZW1hIiksCkBAIC0zOTUzLDYgKzM5ODksNyBAQCBsaXN0VGFibGVzKGNvbnN0IGNoYXIg KnRhYnR5cGVzLCBjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wgc2hvd1N5 cwogCQkJCQkgIGdldHRleHRfbm9vcCgiZm9yZWlnbiB0YWJsZSIpLAogCQkJCQkgIGdldHRleHRf bm9vcCgicGFydGl0aW9uZWQgdGFibGUiKSwKIAkJCQkJICBnZXR0ZXh0X25vb3AoInBhcnRpdGlv bmVkIGluZGV4IiksCisJCQkJCSAgZ2V0dGV4dF9ub29wKCJwcm9wZXJ0eSBncmFwaCIpLAogCQkJ CQkgIGdldHRleHRfbm9vcCgiVHlwZSIpLAogCQkJCQkgIGdldHRleHRfbm9vcCgiT3duZXIiKSk7 CiAJY29sc19zb19mYXIgPSA0OwpAQCAtNDAzNiw2ICs0MDczLDggQEAgbGlzdFRhYmxlcyhjb25z dCBjaGFyICp0YWJ0eXBlcywgY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBib29s IHNob3dTeXMKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIidzJywiKTsgLyogd2FzIFJF TEtJTkRfU1BFQ0lBTCAqLwogCWlmIChzaG93Rm9yZWlnbikKIAkJYXBwZW5kUFFFeHBCdWZmZXJT dHIoJmJ1ZiwgQ3BwQXNTdHJpbmcyKFJFTEtJTkRfRk9SRUlHTl9UQUJMRSkgIiwiKTsKKwlpZiAo c2hvd1Byb3BHcmFwaHMpCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsIENwcEFzU3RyaW5n MihSRUxLSU5EX1BST1BHUkFQSCkgIiwiKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYs ICInJyIpOwkvKiBkdW1teSAqLwogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIpXG4iKTsK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9oZWxwLmMgYi9zcmMvYmluL3BzcWwvaGVscC5jCmlu ZGV4IDE5ZDIwYzU4NzguLjAwZjMzY2RjMTkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9oZWxw LmMKKysrIGIvc3JjL2Jpbi9wc3FsL2hlbHAuYwpAQCAtMjQ5LDYgKzI0OSw3IEBAIHNsYXNoVXNh Z2UodW5zaWduZWQgc2hvcnQgaW50IHBhZ2VyKQogCUhFTFAwKCIgIFxcZEZwWytdIFtQQVRURVJO XSAgICAgIGxpc3QgdGV4dCBzZWFyY2ggcGFyc2Vyc1xuIik7CiAJSEVMUDAoIiAgXFxkRnRbK10g W1BBVFRFUk5dICAgICAgbGlzdCB0ZXh0IHNlYXJjaCB0ZW1wbGF0ZXNcbiIpOwogCUhFTFAwKCIg IFxcZGdbUytdIFtQQVRURVJOXSAgICAgIGxpc3Qgcm9sZXNcbiIpOworCUhFTFAwKCIgIFxcZEdb UytdIFtQQVRURVJOXSAgICAgIGxpc3QgcHJvcGVydHkgZ3JhcGhzIik7CiAJSEVMUDAoIiAgXFxk aVtTK10gW1BBVFRFUk5dICAgICAgbGlzdCBpbmRleGVzXG4iKTsKIAlIRUxQMCgiICBcXGRsWytd ICAgICAgICAgICAgICAgICBsaXN0IGxhcmdlIG9iamVjdHMsIHNhbWUgYXMgXFxsb19saXN0XG4i KTsKIAlIRUxQMCgiICBcXGRMW1MrXSBbUEFUVEVSTl0gICAgICBsaXN0IHByb2NlZHVyYWwgbGFu Z3VhZ2VzXG4iKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyBiL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuYwppbmRleCBhN2NjZGU2ZDdkLi43MWZlMmMxZTBlIDEw MDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKKysrIGIvc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5jCkBAIC03ODgsNiArNzg4LDE0IEBAIHN0YXRpYyBjb25zdCBTY2hlbWFR dWVyeSBRdWVyeV9mb3JfbGlzdF9vZl9wYXJ0aXRpb25lZF9pbmRleGVzID0gewogCS5yZXN1bHQg PSAiYy5yZWxuYW1lIiwKIH07CiAKK3N0YXRpYyBjb25zdCBTY2hlbWFRdWVyeSBRdWVyeV9mb3Jf bGlzdF9vZl9wcm9wZ3JhcGhzID0geworCS5jYXRuYW1lID0gInBnX2NhdGFsb2cucGdfY2xhc3Mg YyIsCisJLnNlbGNvbmRpdGlvbiA9ICJjLnJlbGtpbmQgSU4gKCIgQ3BwQXNTdHJpbmcyKFJFTEtJ TkRfUFJPUEdSQVBIKSAiKSIsCisJLnZpc2NvbmRpdGlvbiA9ICJwZ19jYXRhbG9nLnBnX3RhYmxl X2lzX3Zpc2libGUoYy5vaWQpIiwKKwkubmFtZXNwYWNlID0gImMucmVsbmFtZXNwYWNlIiwKKwku cmVzdWx0ID0gInBnX2NhdGFsb2cucXVvdGVfaWRlbnQoYy5yZWxuYW1lKSIsCit9OworCiAKIC8q IEFsbCByZWxhdGlvbnMgKi8KIHN0YXRpYyBjb25zdCBTY2hlbWFRdWVyeSBRdWVyeV9mb3JfbGlz dF9vZl9yZWxhdGlvbnMgPSB7CkBAIC0xMjU2LDYgKzEyNjQsNyBAQCBzdGF0aWMgY29uc3QgcGdz cWxfdGhpbmdfdCB3b3Jkc19hZnRlcl9jcmVhdGVbXSA9IHsKIAl7IlBBUlNFUiIsIE5VTEwsIE5V TEwsICZRdWVyeV9mb3JfbGlzdF9vZl90c19wYXJzZXJzLCBOVUxMLCBUSElOR19OT19TSE9XfSwK IAl7IlBPTElDWSIsIE5VTEwsIE5VTEwsIE5VTEx9LAogCXsiUFJPQ0VEVVJFIiwgTlVMTCwgTlVM TCwgUXVlcnlfZm9yX2xpc3Rfb2ZfcHJvY2VkdXJlc30sCisJeyJQUk9QRVJUWSBHUkFQSCIsIE5V TEwsIE5VTEwsICZRdWVyeV9mb3JfbGlzdF9vZl9wcm9wZ3JhcGhzfSwKIAl7IlBVQkxJQ0FUSU9O IiwgTlVMTCwgUXVlcnlfZm9yX2xpc3Rfb2ZfcHVibGljYXRpb25zfSwKIAl7IlJPTEUiLCBRdWVy eV9mb3JfbGlzdF9vZl9yb2xlc30sCiAJeyJST1VUSU5FIiwgTlVMTCwgTlVMTCwgJlF1ZXJ5X2Zv cl9saXN0X29mX3JvdXRpbmVzLCBOVUxMLCBUSElOR19OT19DUkVBVEV9LApAQCAtMjMwNyw2ICsy MzE2LDIwIEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGlu dCBlbmQpCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUE9MSUNZIiwgTWF0Y2hBbnksICJP TiIsIE1hdGNoQW55LCAiV0lUSCIsICJDSEVDSyIpKQogCQlDT01QTEVURV9XSVRIKCIoIik7CiAK KwkvKiBBTFRFUiBQUk9QRVJUWSBHUkFQSCAqLworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwg IlBST1BFUlRZIiwgIkdSQVBIIikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5 X2Zvcl9saXN0X29mX3Byb3BncmFwaHMpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBS T1BFUlRZIiwgIkdSQVBIIiwgTWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIKCJBREQiLCAiQUxU RVIiLCAiRFJPUCIsICJPV05FUiBUTyIsICJSRU5BTUUgVE8iLCAiU0VUIFNDSEVNQSIpOworCWVs c2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBST1BFUlRZIiwgIkdSQVBIIiwgTWF0Y2hBbnksICJB RER8QUxURVJ8RFJPUCIpKQorCQlDT01QTEVURV9XSVRIKCJWRVJURVgiLCAiRURHRSIpOworCWVs c2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBST1BFUlRZIiwgIkdSQVBIIiwgTWF0Y2hBbnksICJB RER8RFJPUCIsICJWRVJURVh8RURHRSIpKQorCQlDT01QTEVURV9XSVRIKCJUQUJMRVMiKTsKKwll bHNlIGlmIChIZWFkTWF0Y2hlcygiQUxURVIiLCAiUFJPUEVSVFkiLCAiR1JBUEgiLCBNYXRjaEFu eSwgIkFERCIpICYmIFRhaWxNYXRjaGVzKCJFREdFIikpCisJCUNPTVBMRVRFX1dJVEgoIlRBQkxF UyIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBST1BFUlRZIiwgIkdSQVBIIiwgTWF0 Y2hBbnksICJBTFRFUiIsICJWRVJURVh8RURHRSIpKQorCQlDT01QTEVURV9XSVRIKCJUQUJMRSIp OworCiAJLyogQUxURVIgUlVMRSA8bmFtZT4sIGFkZCBPTiAqLwogCWVsc2UgaWYgKE1hdGNoZXMo IkFMVEVSIiwgIlJVTEUiLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEgoIk9OIik7CkBAIC0y Nzg2LDcgKzI4MDksNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0 YXJ0LCBpbnQgZW5kKQogCQkJCQkgICJGT1JFSUdOIERBVEEgV1JBUFBFUiIsICJGT1JFSUdOIFRB QkxFIiwKIAkJCQkJICAiRlVOQ1RJT04iLCAiSU5ERVgiLCAiTEFOR1VBR0UiLCAiTEFSR0UgT0JK RUNUIiwKIAkJCQkJICAiTUFURVJJQUxJWkVEIFZJRVciLCAiT1BFUkFUT1IiLCAiUE9MSUNZIiwK LQkJCQkJICAiUFJPQ0VEVVJFIiwgIlBST0NFRFVSQUwgTEFOR1VBR0UiLCAiUFVCTElDQVRJT04i LCAiUk9MRSIsCisJCQkJCSAgIlBST0NFRFVSRSIsICJQUk9DRURVUkFMIExBTkdVQUdFIiwgIlBS T1BFUlRZIEdSQVBIIiwgIlBVQkxJQ0FUSU9OIiwgIlJPTEUiLAogCQkJCQkgICJST1VUSU5FIiwg IlJVTEUiLCAiU0NIRU1BIiwgIlNFUVVFTkNFIiwgIlNFUlZFUiIsCiAJCQkJCSAgIlNUQVRJU1RJ Q1MiLCAiU1VCU0NSSVBUSU9OIiwgIlRBQkxFIiwKIAkJCQkJICAiVEFCTEVTUEFDRSIsICJURVhU IFNFQVJDSCIsICJUUkFOU0ZPUk0gRk9SIiwKQEAgLTI4MjQsNiArMjg0Nyw4IEBAIHBzcWxfY29t cGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJfQogCWVsc2Ug aWYgKE1hdGNoZXMoIkNPTU1FTlQiLCAiT04iLCAiUFJPQ0VEVVJBTCIsICJMQU5HVUFHRSIpKQog CQlDT01QTEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX2xhbmd1YWdlcyk7CisJZWxz ZSBpZiAoTWF0Y2hlcygiQ09NTUVOVCIsICJPTiIsICJQUk9QRVJUWSIsICJHUkFQSCIpKQorCQlD T01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9wcm9wZ3JhcGhzKTsK IAllbHNlIGlmIChNYXRjaGVzKCJDT01NRU5UIiwgIk9OIiwgIlJVTEUiLCBNYXRjaEFueSkpCiAJ CUNPTVBMRVRFX1dJVEgoIk9OIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ09NTUVOVCIsICJPTiIs ICJSVUxFIiwgTWF0Y2hBbnksICJPTiIpKQpAQCAtMzE0Miw2ICszMTY3LDI1IEBAIHBzcWxfY29t cGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJZWxzZSBpZiAo TWF0Y2hlcygiQ1JFQVRFIiwgIlBPTElDWSIsIE1hdGNoQW55LCAiT04iLCBNYXRjaEFueSwgIkFT IiwgTWF0Y2hBbnksICJVU0lORyIpKQogCQlDT01QTEVURV9XSVRIKCIoIik7CiAKKy8qIENSRUFU RSBQUk9QRVJUWSBHUkFQSCAqLworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQUk9QRVJU WSIpKQorCQlDT01QTEVURV9XSVRIKCJHUkFQSCIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFU RSIsICJQUk9QRVJUWSIsICJHUkFQSCIsIE1hdGNoQW55KSkKKwkJQ09NUExFVEVfV0lUSCgiVkVS VEVYIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBST1BFUlRZIiwgIkdSQVBIIiwg TWF0Y2hBbnksICJWRVJURVh8Tk9ERSIpKQorCQlDT01QTEVURV9XSVRIKCJUQUJMRVMiKTsKKwll bHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFJPUEVSVFkiLCAiR1JBUEgiLCBNYXRjaEFueSwg IlZFUlRFWHxOT0RFIiwgIlRBQkxFUyIpKQorCQlDT01QTEVURV9XSVRIKCIoIik7CisJZWxzZSBp ZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBST1BFUlRZIiwgIkdSQVBIIiwgTWF0Y2hBbnksICJWRVJU RVh8Tk9ERSIsICJUQUJMRVMiLCAiKCIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShR dWVyeV9mb3JfbGlzdF9vZl90YWJsZXMpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQ Uk9QRVJUWSIsICJHUkFQSCIsIE1hdGNoQW55LCAiVkVSVEVYfE5PREUiLCAiVEFCTEVTIiwgIigq KSIpKQorCQlDT01QTEVURV9XSVRIKCJFREdFIik7CisJZWxzZSBpZiAoSGVhZE1hdGNoZXMoIkNS RUFURSIsICJQUk9QRVJUWSIsICJHUkFQSCIpICYmIFRhaWxNYXRjaGVzKCJFREdFfFJFTEFUSU9O U0hJUCIpKQorCQlDT01QTEVURV9XSVRIKCJUQUJMRVMiKTsKKwllbHNlIGlmIChIZWFkTWF0Y2hl cygiQ1JFQVRFIiwgIlBST1BFUlRZIiwgIkdSQVBIIikgJiYgVGFpbE1hdGNoZXMoIkVER0V8UkVM QVRJT05TSElQIiwgIlRBQkxFUyIpKQorCQlDT01QTEVURV9XSVRIKCIoIik7CisJZWxzZSBpZiAo SGVhZE1hdGNoZXMoIkNSRUFURSIsICJQUk9QRVJUWSIsICJHUkFQSCIpICYmIFRhaWxNYXRjaGVz KCJFREdFfFJFTEFUSU9OU0hJUCIsICJUQUJMRVMiLCAiKCIpKQorCQlDT01QTEVURV9XSVRIX1ND SEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXMpOwogCiAvKiBDUkVBVEUgUFVCTElD QVRJT04gKi8KIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRj aEFueSkpCkBAIC0zODAzLDYgKzM4NDcsMTIgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIg KnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAllbHNlIGlmIChNYXRjaGVzKCJEUk9QIiwgIlBP TElDWSIsIE1hdGNoQW55LCAiT04iLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEgoIkNBU0NB REUiLCAiUkVTVFJJQ1QiKTsKIAorCS8qIERST1AgUFJPUEVSVFkgR1JBUEggKi8KKwllbHNlIGlm IChNYXRjaGVzKCJEUk9QIiwgIlBST1BFUlRZIikpCisJCUNPTVBMRVRFX1dJVEgoIkdSQVBIIik7 CisJZWxzZSBpZiAoTWF0Y2hlcygiRFJPUCIsICJQUk9QRVJUWSIsICJHUkFQSCIpKQorCQlDT01Q TEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9wcm9wZ3JhcGhzKTsKKwog CS8qIERST1AgUlVMRSAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkRST1AiLCAiUlVMRSIsIE1hdGNo QW55KSkKIAkJQ09NUExFVEVfV0lUSCgiT04iKTsKQEAgLTQwNDksNiArNDA5OSw3IEBAIHBzcWxf Y29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCQkJCQkJ CQkJCSJMQVJHRSBPQkpFQ1QiLAogCQkJCQkJCQkJCQkiUEFSQU1FVEVSIiwKIAkJCQkJCQkJCQkJ IlBST0NFRFVSRSIsCisJCQkJCQkJCQkJCSJQUk9QRVJUWSBHUkFQSCIsCiAJCQkJCQkJCQkJCSJS T1VUSU5FIiwKIAkJCQkJCQkJCQkJIlNDSEVNQSIsCiAJCQkJCQkJCQkJCSJTRVFVRU5DRSIsCkBA IC00MTc4LDYgKzQyMjksMTQgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGlu dCBzdGFydCwgaW50IGVuZCkKIAkJCUNPTVBMRVRFX1dJVEgoIkZST00iKTsKIAl9CiAKKy8qIEdS QVBIX1RBQkxFICovCisJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIkdSQVBIX1RBQkxFIikpCisJCUNP TVBMRVRFX1dJVEgoIigiKTsKKwllbHNlIGlmIChUYWlsTWF0Y2hlcygiR1JBUEhfVEFCTEUiLCAi KCIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9wcm9w Z3JhcGhzKTsKKwllbHNlIGlmIChUYWlsTWF0Y2hlcygiR1JBUEhfVEFCTEUiLCAiKCIsIE1hdGNo QW55KSkKKwkJQ09NUExFVEVfV0lUSCgiTUFUQ0giKTsKKwogLyogR1JPVVAgQlkgKi8KIAllbHNl IGlmIChUYWlsTWF0Y2hlcygiRlJPTSIsIE1hdGNoQW55LCAiR1JPVVAiKSkKIAkJQ09NUExFVEVf V0lUSCgiQlkiKTsKQEAgLTQ1MDEsOCArNDU2MCwxMCBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3Qg Y2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQlDT01QTEVURV9XSVRIKCJUQUJMRSIs ICJDT0xVTU4iLCAiQUdHUkVHQVRFIiwgIkRBVEFCQVNFIiwgIkRPTUFJTiIsCiAJCQkJCSAgIkVW RU5UIFRSSUdHRVIiLCAiRk9SRUlHTiBUQUJMRSIsICJGVU5DVElPTiIsCiAJCQkJCSAgIkxBUkdF IE9CSkVDVCIsICJNQVRFUklBTElaRUQgVklFVyIsICJMQU5HVUFHRSIsCi0JCQkJCSAgIlBVQkxJ Q0FUSU9OIiwgIlBST0NFRFVSRSIsICJST0xFIiwgIlJPVVRJTkUiLCAiU0NIRU1BIiwKKwkJCQkJ ICAiUFJPUEVSVFkgR1JBUEgiLCAiUFVCTElDQVRJT04iLCAiUFJPQ0VEVVJFIiwgIlJPTEUiLCAi Uk9VVElORSIsICJTQ0hFTUEiLAogCQkJCQkgICJTRVFVRU5DRSIsICJTVUJTQ1JJUFRJT04iLCAi VEFCTEVTUEFDRSIsICJUWVBFIiwgIlZJRVciKTsKKwllbHNlIGlmIChNYXRjaGVzKCJTRUNVUklU WSIsICJMQUJFTCIsICJPTiIsICJQUk9QRVJUWSIsICJHUkFQSCIpKQorCQlDT01QTEVURV9XSVRI X1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9wcm9wZ3JhcGhzKTsKIAllbHNlIGlmIChN YXRjaGVzKCJTRUNVUklUWSIsICJMQUJFTCIsICJPTiIsIE1hdGNoQW55LCBNYXRjaEFueSkpCiAJ CUNPTVBMRVRFX1dJVEgoIklTIik7CiAKQEAgLTQ5MTksNiArNDk4MCw4IEBAIHBzcWxfY29tcGxl dGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCQlDT01QTEVURV9X SVRIKCJPQkpFQ1QiKTsKIAkJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIkNSRUFURXxBTFRFUnxEUk9Q IiwgIk1BVEVSSUFMSVpFRCIpKQogCQkJQ09NUExFVEVfV0lUSCgiVklFVyIpOworCQllbHNlIGlm IChUYWlsTWF0Y2hlcygiQ1JFQVRFfEFMVEVSfERST1AiLCAiUFJPUEVSVFkiKSkKKwkJCUNPTVBM RVRFX1dJVEgoIkdSQVBIIik7CiAJCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJDUkVBVEV8QUxURVJ8 RFJPUCIsICJURVhUIikpCiAJCQlDT01QTEVURV9XSVRIKCJTRUFSQ0giKTsKIAkJZWxzZSBpZiAo VGFpbE1hdGNoZXMoIkNSRUFURXxBTFRFUnxEUk9QIiwgIlVTRVIiKSkKZGlmZiAtLWdpdCBhL3Ny Yy9mZV91dGlscy9wc3Fsc2Nhbi5sIGIvc3JjL2ZlX3V0aWxzL3BzcWxzY2FuLmwKaW5kZXggZGRj NDY1OGI5Mi4uZjJmODc2ZjU5OCAxMDA2NDQKLS0tIGEvc3JjL2ZlX3V0aWxzL3BzcWxzY2FuLmwK KysrIGIvc3JjL2ZlX3V0aWxzL3BzcWxzY2FuLmwKQEAgLTMwMiw2ICszMDIsOCBAQCBsZXNzX2Vx dWFscwkJIjw9IgogZ3JlYXRlcl9lcXVhbHMJIj49IgogbGVzc19ncmVhdGVyCSI8PiIKIG5vdF9l cXVhbHMJCSIhPSIKKy8qIE5vdGUgdGhlcmUgaXMgbm8gbmVlZCBmb3IgbGVmdF9hcnJvdywgc2lu Y2UgIjwtIiBpcyBub3QgYSBzaW5nbGUgb3BlcmF0b3IuICovCityaWdodF9hcnJvdwkJIi0+Igog CiAvKgogICogInNlbGYiIGlzIHRoZSBzZXQgb2YgY2hhcnMgdGhhdCBzaG91bGQgYmUgcmV0dXJu ZWQgYXMgc2luZ2xlLWNoYXJhY3RlcgpAQCAtMzEzLDcgKzMxNSw3IEBAIG5vdF9lcXVhbHMJCSIh PSIKICAqIElmIHlvdSBjaGFuZ2UgZWl0aGVyIHNldCwgYWRqdXN0IHRoZSBjaGFyYWN0ZXIgbGlz dHMgYXBwZWFyaW5nIGluIHRoZQogICogcnVsZSBmb3IgIm9wZXJhdG9yIiEKICAqLwotc2VsZgkJ CVssKClcW1xdLjtcOlwrXC1cKlwvXCVcXlw8XD5cPV0KK3NlbGYJCQlbLCgpXFtcXS47XDpcfFwr XC1cKlwvXCVcXlw8XD5cPV0KIG9wX2NoYXJzCQlbXH5cIVxAXCNcXlwmXHxcYFw/XCtcLVwqXC9c JVw8XD5cPV0KIG9wZXJhdG9yCQl7b3BfY2hhcnN9KwogCkBAIC02NDcsNiArNjQ5LDEwIEBAIG90 aGVyCQkJLgogCQkJCQlFQ0hPOwogCQkJCX0KIAore3JpZ2h0X2Fycm93fQl7CisJCQkJCUVDSE87 CisJCQkJfQorCiAJLyoKIAkgKiBUaGVzZSBydWxlcyBhcmUgc3BlY2lmaWMgdG8gcHNxbCAtLS0g dGhleSBpbXBsZW1lbnQgcGFyZW50aGVzaXMKIAkgKiBjb3VudGluZyBhbmQgZGV0ZWN0aW9uIG9m IGNvbW1hbmQtZW5kaW5nIHNlbWljb2xvbi4gIFRoZXNlIG11c3QKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvTWFrZWZpbGUgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL01ha2VmaWxlCmlu ZGV4IDE2N2Y5MWE2ZTMuLmUxMjZhYTE5OWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvTWFrZWZpbGUKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9NYWtlZmlsZQpAQCAtODEsNyAr ODEsMTIgQEAgQ0FUQUxPR19IRUFERVJTIDo9IFwKIAlwZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2Uu aCBcCiAJcGdfcHVibGljYXRpb25fcmVsLmggXAogCXBnX3N1YnNjcmlwdGlvbi5oIFwKLQlwZ19z dWJzY3JpcHRpb25fcmVsLmgKKwlwZ19zdWJzY3JpcHRpb25fcmVsLmggXAorCXBnX3Byb3BncmFw aF9lbGVtZW50LmggXAorCXBnX3Byb3BncmFwaF9lbGVtZW50X2xhYmVsLmggXAorCXBnX3Byb3Bn cmFwaF9sYWJlbC5oIFwKKwlwZ19wcm9wZ3JhcGhfbGFiZWxfcHJvcGVydHkuaCBcCisJcGdfcHJv cGdyYXBoX3Byb3BlcnR5LmgKIAogR0VORVJBVEVEX0hFQURFUlMgOj0gJChDQVRBTE9HX0hFQURF UlM6JS5oPSVfZC5oKQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL21lc29uLmJ1 aWxkIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9tZXNvbi5idWlsZAppbmRleCBmNzBkMWRhYmE1Li5k ZTIxOGMzZTk5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL21lc29uLmJ1aWxkCisr KyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQKQEAgLTY5LDYgKzY5LDExIEBAIGNh dGFsb2dfaGVhZGVycyA9IFsKICAgJ3BnX3B1YmxpY2F0aW9uX3JlbC5oJywKICAgJ3BnX3N1YnNj cmlwdGlvbi5oJywKICAgJ3BnX3N1YnNjcmlwdGlvbl9yZWwuaCcsCisgICdwZ19wcm9wZ3JhcGhf ZWxlbWVudC5oJywKKyAgJ3BnX3Byb3BncmFwaF9lbGVtZW50X2xhYmVsLmgnLAorICAncGdfcHJv cGdyYXBoX2xhYmVsLmgnLAorICAncGdfcHJvcGdyYXBoX2xhYmVsX3Byb3BlcnR5LmgnLAorICAn cGdfcHJvcGdyYXBoX3Byb3BlcnR5LmgnLAogXQogCiAjIFRoZSAuZGF0IGZpbGVzIHdlIG5lZWQg Y2FuIGp1c3QgYmUgbGlzdGVkIGFscGhhYmV0aWNhbGx5LgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19jbGFzcy5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jbGFzcy5oCmlu ZGV4IDBmYzJjMDkzYjAuLjcyOWEyZDcwMTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfY2xhc3MuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNzLmgKQEAgLTE3 MSw2ICsxNzEsNyBAQCBNQUtFX1NZU0NBQ0hFKFJFTE5BTUVOU1AsIHBnX2NsYXNzX3JlbG5hbWVf bnNwX2luZGV4LCAxMjgpOwogI2RlZmluZQkJICBSRUxLSU5EX0ZPUkVJR05fVEFCTEUgICAnZicJ LyogZm9yZWlnbiB0YWJsZSAqLwogI2RlZmluZQkJICBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxF ICdwJyAvKiBwYXJ0aXRpb25lZCB0YWJsZSAqLwogI2RlZmluZQkJICBSRUxLSU5EX1BBUlRJVElP TkVEX0lOREVYICdJJyAvKiBwYXJ0aXRpb25lZCBpbmRleCAqLworI2RlZmluZQkJICBSRUxLSU5E X1BST1BHUkFQSAkJICAnZycJLyogcHJvcGVydHkgZ3JhcGggKi8KIAogI2RlZmluZQkJICBSRUxQ RVJTSVNURU5DRV9QRVJNQU5FTlQJJ3AnIC8qIHJlZ3VsYXIgdGFibGUgKi8KICNkZWZpbmUJCSAg UkVMUEVSU0lTVEVOQ0VfVU5MT0dHRUQJJ3UnIC8qIHVubG9nZ2VkIHBlcm1hbmVudCB0YWJsZSAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggNGFiYzZkOTUyNi4uNmU2M2ExZDVhYyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0zODI1LDYgKzM4MjUsOSBAQAogICBwcm9hcmd0eXBl cyA9PiAnb2lkIG9pZCcsIHByb3NyYyA9PiAnb2lkZ2UnIH0sCiAKICMgU3lzdGVtLXZpZXcgc3Vw cG9ydCBmdW5jdGlvbnMKK3sgb2lkID0+ICc4MzAyJywgZGVzY3IgPT4gJ3NvdXJjZSB0ZXh0IG9m IGEgcHJvcGVydHkgZ3JhcGgnLAorICBwcm9uYW1lID0+ICdwZ19nZXRfcHJvcGdyYXBoZGVmJywg cHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ICd0ZXh0JywKKyAgcHJvYXJndHlwZXMg PT4gJ29pZCcsIHByb3NyYyA9PiAncGdfZ2V0X3Byb3BncmFwaGRlZicgfSwKIHsgb2lkID0+ICcx NTczJywgZGVzY3IgPT4gJ3NvdXJjZSB0ZXh0IG9mIGEgcnVsZScsCiAgIHByb25hbWUgPT4gJ3Bn X2dldF9ydWxlZGVmJywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ICd0ZXh0JywK ICAgcHJvYXJndHlwZXMgPT4gJ29pZCcsIHByb3NyYyA9PiAncGdfZ2V0X3J1bGVkZWYnIH0sCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb3BncmFwaF9lbGVtZW50LmggYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb3BncmFwaF9lbGVtZW50LmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMmJjMjA2NmI2YwotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvcGdyYXBoX2VsZW1lbnQuaApAQCAtMCwwICsxLDEwMyBA QAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGdfcHJvcGdyYXBoX2VsZW1lbnQuaAorICoJ ICBkZWZpbml0aW9uIG9mIHRoZSAicHJvcGVydHkgZ3JhcGggZWxlbWVudHMiIHN5c3RlbSBjYXRh bG9nIChwZ19wcm9wZ3JhcGhfZWxlbWVudCkKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp IDE5OTYtMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRp b25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxp Zm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9wZ3JhcGhfZWxlbWVudC5o CisgKgorICogTk9URVMKKyAqCSAgVGhlIENhdGFsb2cucG0gbW9kdWxlIHJlYWRzIHRoaXMgZmls ZSBhbmQgZGVyaXZlcyBzY2hlbWEKKyAqCSAgaW5mb3JtYXRpb24uCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKyNpZm5kZWYgUEdfUFJPUEdSQVBIX0VMRU1FTlRfSAorI2RlZmluZSBQR19Q Uk9QR1JBUEhfRUxFTUVOVF9ICisKKyNpbmNsdWRlICJjYXRhbG9nL2dlbmJraS5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfcHJvcGdyYXBoX2VsZW1lbnRfZC5oIgorCisvKiAtLS0tLS0tLS0tLS0t LS0tCisgKgkJcGdfcHJvcGdyYXBoX2VsZW1lbnQgZGVmaW5pdGlvbi4gIGNwcCB0dXJucyB0aGlz IGludG8KKyAqCQl0eXBlZGVmIHN0cnVjdCBGb3JtRGF0YV9wZ19wcm9wZ3JhcGhfZWxlbWVudAor ICogLS0tLS0tLS0tLS0tLS0tLQorICovCitDQVRBTE9HKHBnX3Byb3BncmFwaF9lbGVtZW50LDgy OTksUHJvcGdyYXBoRWxlbWVudFJlbGF0aW9uSWQpCit7CisJT2lkCQkJb2lkOworCisJLyogT0lE IG9mIHRoZSBwcm9wZXJ0eSBncmFwaCByZWxhdGlvbiAqLworCU9pZAkJCXBnZXBnaWQgQktJX0xP T0tVUChwZ19jbGFzcyk7CisKKwkvKiBPSUQgb2YgdGhlIGVsZW1lbnQgdGFibGUgKi8KKwlPaWQJ CQlwZ2VyZWxpZCBCS0lfTE9PS1VQKHBnX2NsYXNzKTsKKworCS8qIGVsZW1lbnQgYWxpYXMgKi8K KwlOYW1lRGF0YQlwZ2VhbGlhczsKKworCS8qIHZlcnRleCBvciBlZGdlPyAtLSBzZWUgUEdFS0lO RF8qIGJlbG93ICovCisJY2hhcgkJcGdla2luZDsKKworCS8qIGZvciBlZGdlczogc291cmNlIHZl cnRleCAqLworCU9pZAkJCXBnZXNyY3ZlcnRleGlkIEJLSV9MT09LVVBfT1BUKHBnX3Byb3BncmFw aF9lbGVtZW50KTsKKworCS8qIGZvciBlZGdlczogZGVzdGluYXRpb24gdmVydGV4ICovCisJT2lk CQkJcGdlZGVzdHZlcnRleGlkIEJLSV9MT09LVVBfT1BUKHBnX3Byb3BncmFwaF9lbGVtZW50KTsK KworI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFy dCBoZXJlICovCisJLyogZWxlbWVudCBrZXkgKGNvbHVtbiBudW1iZXJzIGluIHBnZXJlbGlkIHJl bGF0aW9uKSAqLworCWludDE2CQlwZ2VrZXlbMV0gQktJX0ZPUkNFX05PVF9OVUxMOworCisJLyoK KwkgKiBmb3IgZWRnZXM6IHNvdXJjZSB2ZXJ0ZXgga2V5IChjb2x1bW4gbnVtYmVycyBpbiBwZ2Vy ZWxpZCByZWxhdGlvbikKKwkgKi8KKwlpbnQxNgkJcGdlc3Jja2V5WzFdOworCisJLyoKKwkgKiBm b3IgZWRnZXM6IHNvdXJjZSB2ZXJ0ZXggdGFibGUgcmVmZXJlbmNlZCBjb2x1bW5zIChjb2x1bW4g bnVtYmVycyBpbgorCSAqIHJlbGF0aW9uIHJlYWNoZWQgdmlhIHBnZXNyY3ZlcnRleGlkKQorCSAq LworCWludDE2CQlwZ2VzcmNyZWZbMV07CisKKwkvKgorCSAqIGZvciBlZGdlczogZGVzdGluYXRp b24gdmVydGV4IGtleSAoY29sdW1uIG51bWJlcnMgaW4gcGdlcmVsaWQgcmVsYXRpb24pCisJICov CisJaW50MTYJCXBnZWRlc3RrZXlbMV07CisKKwkvKgorCSAqIGZvciBlZGdlczogZGVzdGluYXRp b24gdmVydGV4IHRhYmxlIHJlZmVyZW5jZWQgY29sdW1ucyAoY29sdW1uIG51bWJlcnMKKwkgKiBp biByZWxhdGlvbiByZWFjaGVkIHZpYSBwZ2VkZXN0dmVydGV4aWQpCisJICovCisJaW50MTYJCXBn ZWRlc3RyZWZbMV07CisjZW5kaWYKK30gRm9ybURhdGFfcGdfcHJvcGdyYXBoX2VsZW1lbnQ7CisK Ky8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlGb3JtX3BnX3Byb3BncmFwaF9lbGVtZW50IGNvcnJl c3BvbmRzIHRvIGEgcG9pbnRlciB0byBhIHR1cGxlIHdpdGgKKyAqCQl0aGUgZm9ybWF0IG9mIHBn X3Byb3BncmFwaF9lbGVtZW50IHJlbGF0aW9uLgorICogLS0tLS0tLS0tLS0tLS0tLQorICovCit0 eXBlZGVmIEZvcm1EYXRhX3BnX3Byb3BncmFwaF9lbGVtZW50ICpGb3JtX3BnX3Byb3BncmFwaF9l bGVtZW50OworCitERUNMQVJFX1RPQVNUKHBnX3Byb3BncmFwaF9lbGVtZW50LCA4MzE1LCA4MzE2 KTsKKworREVDTEFSRV9VTklRVUVfSU5ERVhfUEtFWShwZ19wcm9wZ3JhcGhfZWxlbWVudF9vaWRf aW5kZXgsIDgzMDAsIFByb3BncmFwaEVsZW1lbnRPYmplY3RJbmRleElkLCBwZ19wcm9wZ3JhcGhf ZWxlbWVudCwgYnRyZWUob2lkIG9pZF9vcHMpKTsKK0RFQ0xBUkVfVU5JUVVFX0lOREVYKHBnX3By b3BncmFwaF9lbGVtZW50X2FsaWFzX2luZGV4LCA4MzAxLCBQcm9wZ3JhcGhFbGVtZW50QWxpYXNJ bmRleElkLCBwZ19wcm9wZ3JhcGhfZWxlbWVudCwgYnRyZWUocGdlcGdpZCBvaWRfb3BzLCBwZ2Vh bGlhcyBuYW1lX29wcykpOworCitNQUtFX1NZU0NBQ0hFKFBST1BHUkFQSEVMT0lELCBwZ19wcm9w Z3JhcGhfZWxlbWVudF9vaWRfaW5kZXgsIDEyOCk7CitNQUtFX1NZU0NBQ0hFKFBST1BHUkFQSEVM QUxJQVMsIHBnX3Byb3BncmFwaF9lbGVtZW50X2FsaWFzX2luZGV4LCAxMjgpOworCisjaWZkZWYg RVhQT1NFX1RPX0NMSUVOVF9DT0RFCisKKy8qCisgKiBTeW1ib2xpYyB2YWx1ZXMgZm9yIHBnZWtp bmQgY29sdW1uCisgKi8KKyNkZWZpbmUgUEdFS0lORF9WRVJURVggJ3YnCisjZGVmaW5lIFBHRUtJ TkRfRURHRSAnZScKKworI2VuZGlmCQkJCQkJCS8qIEVYUE9TRV9UT19DTElFTlRfQ09ERSAqLwor CisjZW5kaWYJCQkJCQkJLyogUEdfUFJPUEdSQVBIX0VMRU1FTlRfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9wZ3JhcGhfZWxlbWVudF9sYWJlbC5oIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9wZ3JhcGhfZWxlbWVudF9sYWJlbC5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjkxODUxYTE5MjcKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb3BncmFwaF9lbGVtZW50X2xhYmVsLmgKQEAgLTAsMCAr MSw1MSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGdfcHJvcGdyYXBoX2VsZW1lbnRf bGFiZWwuaAorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI0LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAx OTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb3BncmFwaF9lbGVtZW50X2xhYmVsLmgKKyAqCisgKiBOT1RF UworICoJICBUaGUgQ2F0YWxvZy5wbSBtb2R1bGUgcmVhZHMgdGhpcyBmaWxlIGFuZCBkZXJpdmVz IHNjaGVtYQorICoJICBpbmZvcm1hdGlvbi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwor I2lmbmRlZiBQR19QUk9QR1JBUEhfRUxFTUVOVF9MQUJFTF9ICisjZGVmaW5lIFBHX1BST1BHUkFQ SF9FTEVNRU5UX0xBQkVMX0gKKworI2luY2x1ZGUgImNhdGFsb2cvZ2VuYmtpLmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9wZ19wcm9wZ3JhcGhfZWxlbWVudF9sYWJlbF9kLmgiCisKKy8qIC0tLS0tLS0t LS0tLS0tLS0KKyAqCQlwZ19wcm9wZ3JhcGhfZWxlbWVudF9sYWJlbCBkZWZpbml0aW9uLiAgY3Bw IHR1cm5zIHRoaXMgaW50bworICoJCXR5cGVkZWYgc3RydWN0IEZvcm1EYXRhX3BnX3Byb3BncmFw aF9lbGVtZW50X2xhYmVsCisgKiAtLS0tLS0tLS0tLS0tLS0tCisgKi8KK0NBVEFMT0cocGdfcHJv cGdyYXBoX2VsZW1lbnRfbGFiZWwsODMwNSxQcm9wZ3JhcGhFbGVtZW50TGFiZWxSZWxhdGlvbklk KQoreworCU9pZAkJCW9pZDsKKworCS8qIE9JRCBvZiB0aGUgbGFiZWwgKi8KKwlPaWQJCQlwZ2Vs bGFiZWxpZCBCS0lfTE9PS1VQKHBnX3Byb3BncmFwaF9sYWJlbCk7CisKKwkvKiBPSUQgb2YgdGhl IHByb3BlcnR5IGdyYXBoIGVsZW1lbnQgKi8KKwlPaWQJCQlwZ2VsZWxpZCBCS0lfTE9PS1VQKHBn X3Byb3BncmFwaF9lbGVtZW50KTsKK30gRm9ybURhdGFfcGdfcHJvcGdyYXBoX2VsZW1lbnRfbGFi ZWw7CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlGb3JtX3BnX3Byb3BncmFwaF9lbGVtZW50 X2xhYmVsIGNvcnJlc3BvbmRzIHRvIGEgcG9pbnRlciB0byBhIHR1cGxlIHdpdGgKKyAqCQl0aGUg Zm9ybWF0IG9mIHBnX3Byb3BncmFwaF9lbGVtZW50X2xhYmVsIHJlbGF0aW9uLgorICogLS0tLS0t LS0tLS0tLS0tLQorICovCit0eXBlZGVmIEZvcm1EYXRhX3BnX3Byb3BncmFwaF9lbGVtZW50X2xh YmVsICpGb3JtX3BnX3Byb3BncmFwaF9lbGVtZW50X2xhYmVsOworCitERUNMQVJFX1VOSVFVRV9J TkRFWF9QS0VZKHBnX3Byb3BncmFwaF9lbGVtZW50X2xhYmVsX29pZF9pbmRleCwgODMxMiwgUHJv cGdyYXBoRWxlbWVudExhYmVsT2JqZWN0SW5kZXhJZCwgcGdfcHJvcGdyYXBoX2VsZW1lbnRfbGFi ZWwsIGJ0cmVlKG9pZCBvaWRfb3BzKSk7CitERUNMQVJFX1VOSVFVRV9JTkRFWChwZ19wcm9wZ3Jh cGhfZWxlbWVudF9sYWJlbF9lbGVtZW50X2xhYmVsX2luZGV4LCA4MzEzLCBQcm9wZ3JhcGhFbGVt ZW50TGFiZWxFbGVtZW50TGFiZWxJbmRleElkLCBwZ19wcm9wZ3JhcGhfZWxlbWVudF9sYWJlbCwg YnRyZWUocGdlbGVsaWQgb2lkX29wcywgcGdlbGxhYmVsaWQgb2lkX29wcykpOworREVDTEFSRV9J TkRFWChwZ19wcm9wZ3JhcGhfZWxlbWVudF9sYWJlbF9sYWJlbF9pbmRleCwgODMxNywgUHJvcGdy YXBoRWxlbWVudExhYmVsTGFiZWxJbmRleElkLCBwZ19wcm9wZ3JhcGhfZWxlbWVudF9sYWJlbCwg YnRyZWUocGdlbGxhYmVsaWQgb2lkX29wcykpOworCitNQUtFX1NZU0NBQ0hFKFBST1BHUkFQSEVM RU1FTlRMQUJFTEVMRU1FTlRMQUJFTCwgcGdfcHJvcGdyYXBoX2VsZW1lbnRfbGFiZWxfZWxlbWVu dF9sYWJlbF9pbmRleCwgMTI4KTsKKworI2VuZGlmCQkJCQkJCS8qIFBHX1BST1BHUkFQSF9FTEVN RU5UX0xBQkVMX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvcGdy YXBoX2xhYmVsLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb3BncmFwaF9sYWJlbC5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmM2YjcxMTM1MWIKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb3BncmFwaF9sYWJlbC5oCkBAIC0w LDAgKzEsNTEgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX3Byb3BncmFwaF9sYWJl bC5oCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjQsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQs IFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvcGdyYXBoX2xhYmVsLmgKKyAqCisgKiBOT1RFUworICoJICBUaGUg Q2F0YWxvZy5wbSBtb2R1bGUgcmVhZHMgdGhpcyBmaWxlIGFuZCBkZXJpdmVzIHNjaGVtYQorICoJ ICBpbmZvcm1hdGlvbi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBQR19Q Uk9QR1JBUEhfTEFCRUxfSAorI2RlZmluZSBQR19QUk9QR1JBUEhfTEFCRUxfSAorCisjaW5jbHVk ZSAiY2F0YWxvZy9nZW5ia2kuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb3BncmFwaF9sYWJl bF9kLmgiCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlwZ19wcm9wZ3JhcGhfbGFiZWwgZGVm aW5pdGlvbi4gIGNwcCB0dXJucyB0aGlzIGludG8KKyAqCQl0eXBlZGVmIHN0cnVjdCBGb3JtRGF0 YV9wZ19wcm9wZ3JhcGhfbGFiZWwKKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLworQ0FUQUxPRyhw Z19wcm9wZ3JhcGhfbGFiZWwsODMwMyxQcm9wZ3JhcGhMYWJlbFJlbGF0aW9uSWQpCit7CisJT2lk CQkJb2lkOworCisJLyogT0lEIG9mIHRoZSBwcm9wZXJ0eSBncmFwaCByZWxhdGlvbiAqLworCU9p ZAkJCXBnbHBnaWQgQktJX0xPT0tVUChwZ19jbGFzcyk7CisKKwkvKiBsYWJlbCBuYW1lICovCisJ TmFtZURhdGEJcGdsbGFiZWw7Cit9IEZvcm1EYXRhX3BnX3Byb3BncmFwaF9sYWJlbDsKKworLyog LS0tLS0tLS0tLS0tLS0tLQorICoJCUZvcm1fcGdfcHJvcGdyYXBoX2xhYmVsIGNvcnJlc3BvbmRz IHRvIGEgcG9pbnRlciB0byBhIHR1cGxlIHdpdGgKKyAqCQl0aGUgZm9ybWF0IG9mIHBnX3Byb3Bn cmFwaF9sYWJlbCByZWxhdGlvbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBG b3JtRGF0YV9wZ19wcm9wZ3JhcGhfbGFiZWwgKkZvcm1fcGdfcHJvcGdyYXBoX2xhYmVsOworCitE RUNMQVJFX1VOSVFVRV9JTkRFWF9QS0VZKHBnX3Byb3BncmFwaF9sYWJlbF9vaWRfaW5kZXgsIDgz MDQsIFByb3BncmFwaExhYmVsT2JqZWN0SW5kZXhJZCwgcGdfcHJvcGdyYXBoX2xhYmVsLCBidHJl ZShvaWQgb2lkX29wcykpOworREVDTEFSRV9VTklRVUVfSU5ERVgocGdfcHJvcGdyYXBoX2xhYmVs X2dyYXBoX25hbWVfaW5kZXgsIDgzMTQsIFByb3BncmFwaExhYmVsR3JhcGhOYW1lSW5kZXhJZCwg cGdfcHJvcGdyYXBoX2xhYmVsLCBidHJlZShwZ2xwZ2lkIG9pZF9vcHMsIHBnbGxhYmVsIG5hbWVf b3BzKSk7CisKK01BS0VfU1lTQ0FDSEUoUFJPUEdSQVBITEFCRUxPSUQsIHBnX3Byb3BncmFwaF9s YWJlbF9vaWRfaW5kZXgsIDEyOCk7CitNQUtFX1NZU0NBQ0hFKFBST1BHUkFQSExBQkVMTkFNRSwg cGdfcHJvcGdyYXBoX2xhYmVsX2dyYXBoX25hbWVfaW5kZXgsIDEyOCk7CisKKyNlbmRpZgkJCQkJ CQkvKiBQR19QUk9QR1JBUEhfTEFCRUxfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9wZ3JhcGhfbGFiZWxfcHJvcGVydHkuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvcGdyYXBoX2xhYmVsX3Byb3BlcnR5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uYTk1OTUyMTU2NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvcGdyYXBoX2xhYmVsX3Byb3BlcnR5LmgKQEAgLTAsMCArMSw1OSBAQAorLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKgorICogcGdfcHJvcGdyYXBoX2xhYmVsX3Byb3BlcnR5LmgKKyAq CisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwg RGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50 cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9wZ3JhcGhfbGFiZWxfcHJvcGVydHkuaAorICoKKyAqIE5PVEVTCisgKgkgIFRo ZSBDYXRhbG9nLnBtIG1vZHVsZSByZWFkcyB0aGlzIGZpbGUgYW5kIGRlcml2ZXMgc2NoZW1hCisg KgkgIGluZm9ybWF0aW9uLgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFBH X1BST1BHUkFQSF9MQUJFTF9QUk9QRVJUWV9ICisjZGVmaW5lIFBHX1BST1BHUkFQSF9MQUJFTF9Q Uk9QRVJUWV9ICisKKyNpbmNsdWRlICJjYXRhbG9nL2dlbmJraS5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfcHJvcGdyYXBoX2xhYmVsX3Byb3BlcnR5X2QuaCIKKworLyogLS0tLS0tLS0tLS0tLS0t LQorICoJCXBnX3Byb3BncmFwaF9sYWJlbF9wcm9wZXJ0eSBkZWZpbml0aW9uLiAgY3BwIHR1cm5z IHRoaXMgaW50bworICoJCXR5cGVkZWYgc3RydWN0IEZvcm1EYXRhX3BnX3Byb3BncmFwaF9sYWJl bF9wcm9wZXJ0eQorICogLS0tLS0tLS0tLS0tLS0tLQorICovCitDQVRBTE9HKHBnX3Byb3BncmFw aF9sYWJlbF9wcm9wZXJ0eSw4MzE4LFByb3BncmFwaExhYmVsUHJvcGVydHlSZWxhdGlvbklkKQor eworCU9pZAkJCW9pZDsKKworCS8qIE9JRCBvZiB0aGUgcHJvcGVydHkgKi8KKwlPaWQJCQlwbHBw cm9waWQgQktJX0xPT0tVUChwZ19wcm9wZ3JhcGhfcHJvcGVydHkpOworCisJLyogT0lEIG9mIHRo ZSBlbGVtZW50IGxhYmVsICovCisJT2lkCQkJcGxwZWxsYWJlbGlkIEJLSV9MT09LVVAocGdfcHJv cGdyYXBoX2VsZW1lbnRfbGFiZWwpOworCisjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJp YWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KKworCS8qIHByb3BlcnR5IGV4cHJlc3Np b24gKi8KKwlwZ19ub2RlX3RyZWUgcGxwZXhwciBCS0lfRk9SQ0VfTk9UX05VTEw7CisKKyNlbmRp ZgorfSBGb3JtRGF0YV9wZ19wcm9wZ3JhcGhfbGFiZWxfcHJvcGVydHk7CisKKy8qIC0tLS0tLS0t LS0tLS0tLS0KKyAqCQlGb3JtX3BnX3Byb3BncmFwaF9sYWJlbF9wcm9wZXJ0eSBjb3JyZXNwb25k cyB0byBhIHBvaW50ZXIgdG8gYSB0dXBsZSB3aXRoCisgKgkJdGhlIGZvcm1hdCBvZiBwZ19wcm9w Z3JhcGhfbGFiZWxfcHJvcGVydHkgcmVsYXRpb24uCisgKiAtLS0tLS0tLS0tLS0tLS0tCisgKi8K K3R5cGVkZWYgRm9ybURhdGFfcGdfcHJvcGdyYXBoX2xhYmVsX3Byb3BlcnR5ICpGb3JtX3BnX3By b3BncmFwaF9sYWJlbF9wcm9wZXJ0eTsKKworREVDTEFSRV9UT0FTVChwZ19wcm9wZ3JhcGhfbGFi ZWxfcHJvcGVydHksIDgzMTksIDgzMjApOworCitERUNMQVJFX1VOSVFVRV9JTkRFWF9QS0VZKHBn X3Byb3BncmFwaF9sYWJlbF9wcm9wZXJ0eV9vaWRfaW5kZXgsIDgzMjEsIFByb3BncmFwaExhYmVs UHJvcGVydHlPYmplY3RJbmRleElkLCBwZ19wcm9wZ3JhcGhfbGFiZWxfcHJvcGVydHksIGJ0cmVl KG9pZCBvaWRfb3BzKSk7CitERUNMQVJFX1VOSVFVRV9JTkRFWChwZ19wcm9wZ3JhcGhfbGFiZWxf cHJvcGVydHlfbGFiZWxfcHJvcF9pbmRleCwgODMyMiwgUHJvcGdyYXBoTGFiZWxQcm9wZXJ0eUxh YmVsUHJvcEluZGV4SWQsIHBnX3Byb3BncmFwaF9sYWJlbF9wcm9wZXJ0eSwgYnRyZWUocGxwZWxs YWJlbGlkIG9pZF9vcHMsIHBscHByb3BpZCBvaWRfb3BzKSk7CisKK01BS0VfU1lTQ0FDSEUoUFJP UEdSQVBITEFCRUxQUk9QLCBwZ19wcm9wZ3JhcGhfbGFiZWxfcHJvcGVydHlfbGFiZWxfcHJvcF9p bmRleCwgMTI4KTsKKworI2VuZGlmCQkJCQkJCS8qIFBHX1BST1BHUkFQSF9MQUJFTF9QUk9QRVJU WV9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb3BncmFwaF9wcm9w ZXJ0eS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9wZ3JhcGhfcHJvcGVydHkuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5iODkyMWFjZTMwCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9wZ3JhcGhfcHJvcGVydHkuaApAQCAt MCwwICsxLDU0IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19wcm9wZ3JhcGhfcHJv cGVydHkuaAorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI0LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAx OTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb3BncmFwaF9wcm9wZXJ0eS5oCisgKgorICogTk9URVMKKyAq CSAgVGhlIENhdGFsb2cucG0gbW9kdWxlIHJlYWRzIHRoaXMgZmlsZSBhbmQgZGVyaXZlcyBzY2hl bWEKKyAqCSAgaW5mb3JtYXRpb24uCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5k ZWYgUEdfUFJPUEdSQVBIX1BST1BFUlRZX0gKKyNkZWZpbmUgUEdfUFJPUEdSQVBIX1BST1BFUlRZ X0gKKworI2luY2x1ZGUgImNhdGFsb2cvZ2VuYmtpLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19w cm9wZ3JhcGhfcHJvcGVydHlfZC5oIgorCisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKgkJcGdfcHJv cGdyYXBoX3Byb3BlcnR5IGRlZmluaXRpb24uICBjcHAgdHVybnMgdGhpcyBpbnRvCisgKgkJdHlw ZWRlZiBzdHJ1Y3QgRm9ybURhdGFfcGdfcHJvcGdyYXBoX3Byb3BlcnR5CisgKiAtLS0tLS0tLS0t LS0tLS0tCisgKi8KK0NBVEFMT0cocGdfcHJvcGdyYXBoX3Byb3BlcnR5LDgzMDYsUHJvcGdyYXBo UHJvcGVydHlSZWxhdGlvbklkKQoreworCU9pZAkJCW9pZDsKKworCS8qIE9JRCBvZiB0aGUgcHJv cGVydHkgZ3JhcGggcmVsYXRpb24gKi8KKwlPaWQJCQlwZ3BwZ2lkIEJLSV9MT09LVVAocGdfY2xh c3MpOworCisJLyogcHJvcGVydHkgbmFtZSAqLworCU5hbWVEYXRhCXBncG5hbWU7CisKKwkvKiBk YXRhIHR5cGUgb2YgdGhlIHByb3BlcnR5ICovCisJT2lkCQkJcGdwdHlwaWQgQktJX0xPT0tVUF9P UFQocGdfdHlwZSk7Cit9IEZvcm1EYXRhX3BnX3Byb3BncmFwaF9wcm9wZXJ0eTsKKworLyogLS0t LS0tLS0tLS0tLS0tLQorICoJCUZvcm1fcGdfcHJvcGdyYXBoX3Byb3BlcnR5IGNvcnJlc3BvbmRz IHRvIGEgcG9pbnRlciB0byBhIHR1cGxlIHdpdGgKKyAqCQl0aGUgZm9ybWF0IG9mIHBnX3Byb3Bn cmFwaF9wcm9wZXJ0eSByZWxhdGlvbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLwordHlwZWRl ZiBGb3JtRGF0YV9wZ19wcm9wZ3JhcGhfcHJvcGVydHkgKkZvcm1fcGdfcHJvcGdyYXBoX3Byb3Bl cnR5OworCitERUNMQVJFX1VOSVFVRV9JTkRFWF9QS0VZKHBnX3Byb3BncmFwaF9wcm9wZXJ0eV9v aWRfaW5kZXgsIDgzMDcsIFByb3BncmFwaFByb3BlcnR5T2JqZWN0SW5kZXhJZCwgcGdfcHJvcGdy YXBoX3Byb3BlcnR5LCBidHJlZShvaWQgb2lkX29wcykpOworREVDTEFSRV9VTklRVUVfSU5ERVgo cGdfcHJvcGdyYXBoX3Byb3BlcnR5X25hbWVfaW5kZXgsIDgzMDgsIFByb3BncmFwaFByb3BlcnR5 TmFtZUluZGV4SWQsIHBnX3Byb3BncmFwaF9wcm9wZXJ0eSwgYnRyZWUocGdwcGdpZCBvaWRfb3Bz LCBwZ3BuYW1lIG5hbWVfb3BzKSk7CisKK01BS0VfU1lTQ0FDSEUoUFJPUEdSQVBIUFJPUE9JRCwg cGdfcHJvcGdyYXBoX3Byb3BlcnR5X29pZF9pbmRleCwgMTI4KTsKK01BS0VfU1lTQ0FDSEUoUFJP UEdSQVBIUFJPUE5BTUUsIHBnX3Byb3BncmFwaF9wcm9wZXJ0eV9uYW1lX2luZGV4LCAxMjgpOwor CisjZW5kaWYJCQkJCQkJLyogUEdfUFJPUEdSQVBIX1BST1BFUlRZX0ggKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb3BncmFwaGNtZHMuaCBiL3NyYy9pbmNsdWRlL2NvbW1h bmRzL3Byb3BncmFwaGNtZHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li4yNDQwYmQ0YTYwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHJv cGdyYXBoY21kcy5oCkBAIC0wLDAgKzEsMjMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IHByb3BncmFwaGNtZHMuaAorICoJICBwcm90b3R5cGVzIGZvciBwcm9wZ3JhcGhjbWRzLmMuCisg KgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjQsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2Vu dHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9pbmNsdWRlL2Nv bW1hbmRzL3Byb3BncmFwaGNtZHMuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNp Zm5kZWYgUFJPUEdSQVBIQ01EU19ICisjZGVmaW5lIFBST1BHUkFQSENNRFNfSAorCisjaW5jbHVk ZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX25vZGUu aCIKKworZXh0ZXJuIE9iamVjdEFkZHJlc3MgQ3JlYXRlUHJvcEdyYXBoKFBhcnNlU3RhdGUgKnBz dGF0ZSwgY29uc3QgQ3JlYXRlUHJvcEdyYXBoU3RtdCAqc3RtdCk7CitleHRlcm4gT2JqZWN0QWRk cmVzcyBBbHRlclByb3BHcmFwaChQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IEFsdGVyUHJvcEdy YXBoU3RtdCAqc3RtdCk7CisKKyNlbmRpZgkJCQkJCQkvKiBQUk9QR1JBUEhDTURTX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaAppbmRleCAxMjRkODUzZTQ5Li5jNTkxYjU2NmUyIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCkBAIC02ODIsNiArNjgyLDE5IEBAIHR5cGVkZWYgc3RydWN0IFJhbmdlVGFi bGVGdW5jQ29sCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEg aWYgdW5rbm93biAqLwogfSBSYW5nZVRhYmxlRnVuY0NvbDsKIAorLyoKKyAqIFJhbmdlR3JhcGhU YWJsZSAtIHJhdyBmb3JtIG9mIEdSQVBIX1RBQkxFIGNsYXVzZQorICovCit0eXBlZGVmIHN0cnVj dCBSYW5nZUdyYXBoVGFibGUKK3sKKwlOb2RlVGFnCQl0eXBlOworCVJhbmdlVmFyICAgKmdyYXBo X25hbWU7CisJc3RydWN0IEdyYXBoUGF0dGVybiAqZ3JhcGhfcGF0dGVybjsKKwlMaXN0CSAgICpj b2x1bW5zOworCUFsaWFzCSAgICphbGlhczsJCQkvKiB0YWJsZSBhbGlhcyAmIG9wdGlvbmFsIGNv bHVtbiBhbGlhc2VzICovCisJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwg b3IgLTEgaWYgdW5rbm93biAqLworfSBSYW5nZUdyYXBoVGFibGU7CisKIC8qCiAgKiBSYW5nZVRh YmxlU2FtcGxlIC0gVEFCTEVTQU1QTEUgYXBwZWFyaW5nIGluIGEgcmF3IEZST00gY2xhdXNlCiAg KgpAQCAtOTQ4LDYgKzk2MSw0MiBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25DbWQKIAlib29s CQljb25jdXJyZW50OwogfSBQYXJ0aXRpb25DbWQ7CiAKKy8qCisgKiBOb2RlcyBmb3IgZ3JhcGgg cGF0dGVybgorICovCisKK3R5cGVkZWYgc3RydWN0IEdyYXBoUGF0dGVybgoreworCU5vZGVUYWcJ CXR5cGU7CisJTGlzdAkgICAqcGF0aF9wYXR0ZXJuX2xpc3Q7CisJTm9kZQkgICAqd2hlcmVDbGF1 c2U7Cit9IEdyYXBoUGF0dGVybjsKKwordHlwZWRlZiBlbnVtIEdyYXBoRWxlbWVudFBhdHRlcm5L aW5kCit7CisJVkVSVEVYX1BBVFRFUk4sCisJRURHRV9QQVRURVJOX0xFRlQsCisJRURHRV9QQVRU RVJOX1JJR0hULAorCUVER0VfUEFUVEVSTl9BTlksCisJUEFSRU5fRVhQUiwKK30gR3JhcGhFbGVt ZW50UGF0dGVybktpbmQ7CisKKyNkZWZpbmUgSVNfRURHRV9QQVRURVJOKGtpbmQpICgoa2luZCkg PT0gRURHRV9QQVRURVJOX0FOWSB8fCBcCisJCQkJCQkJICAgKGtpbmQpID09IEVER0VfUEFUVEVS Tl9SSUdIVCB8fCBcCisJCQkJCQkJICAgKGtpbmQpID09IEVER0VfUEFUVEVSTl9MRUZUKQorCit0 eXBlZGVmIHN0cnVjdCBHcmFwaEVsZW1lbnRQYXR0ZXJuCit7CisJTm9kZVRhZwkJdHlwZTsKKwlH cmFwaEVsZW1lbnRQYXR0ZXJuS2luZCBraW5kOworCWNvbnN0IGNoYXIgKnZhcmlhYmxlOworCU5v ZGUJICAgKmxhYmVsZXhwcjsKKwlMaXN0CSAgICpzdWJleHByOworCU5vZGUJICAgKndoZXJlQ2xh dXNlOworCUxpc3QJICAgKnF1YW50aWZpZXI7CisJUGFyc2VMb2MJbG9jYXRpb247Cit9IEdyYXBo RWxlbWVudFBhdHRlcm47CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKglOb2RlcyBmb3IgYSBR dWVyeSB0cmVlCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTEwMjAsNiArMTA2OSw3IEBAIHR5 cGVkZWYgZW51bSBSVEVLaW5kCiAJUlRFX1ZBTFVFUywJCQkJCS8qIFZBTFVFUyAoPGV4cHJsaXN0 PiksICg8ZXhwcmxpc3Q+KSwgLi4uICovCiAJUlRFX0NURSwJCQkJCS8qIGNvbW1vbiB0YWJsZSBl eHByIChXSVRIIGxpc3QgZWxlbWVudCkgKi8KIAlSVEVfTkFNRURUVVBMRVNUT1JFLAkJLyogdHVw bGVzdG9yZSwgZS5nLiBmb3IgQUZURVIgdHJpZ2dlcnMgKi8KKwlSVEVfR1JBUEhfVEFCTEUsCQkJ LyogR1JBUEhfVEFCTEUgY2xhdXNlICovCiAJUlRFX1JFU1VMVCwJCQkJCS8qIFJURSByZXByZXNl bnRzIGFuIGVtcHR5IEZST00gY2xhdXNlOyBzdWNoCiAJCQkJCQkJCSAqIFJURXMgYXJlIGFkZGVk IGJ5IHRoZSBwbGFubmVyLCB0aGV5J3JlIG5vdAogCQkJCQkJCQkgKiBwcmVzZW50IGR1cmluZyBw YXJzaW5nIG9yIHJld3JpdGluZyAqLwpAQCAtMTE4MCw2ICsxMjMwLDEyIEBAIHR5cGVkZWYgc3Ry dWN0IFJhbmdlVGJsRW50cnkKIAkgKi8KIAlUYWJsZUZ1bmMgICp0YWJsZWZ1bmM7CiAKKwkvKgor CSAqIEZpZWxkcyB2YWxpZCBmb3IgYSBncmFwaCB0YWJsZSBSVEUgKGVsc2UgTlVMTCk6CisJICov CisJR3JhcGhQYXR0ZXJuICpncmFwaF9wYXR0ZXJuOworCUxpc3QJICAgKmdyYXBoX3RhYmxlX2Nv bHVtbnM7CisKIAkvKgogCSAqIEZpZWxkcyB2YWxpZCBmb3IgYSB2YWx1ZXMgUlRFIChlbHNlIE5J TCk6CiAJICovCkBAIC0yMjc1LDYgKzIzMzEsNyBAQCB0eXBlZGVmIGVudW0gT2JqZWN0VHlwZQog CU9CSkVDVF9QQVJBTUVURVJfQUNMLAogCU9CSkVDVF9QT0xJQ1ksCiAJT0JKRUNUX1BST0NFRFVS RSwKKwlPQkpFQ1RfUFJPUEdSQVBILAogCU9CSkVDVF9QVUJMSUNBVElPTiwKIAlPQkpFQ1RfUFVC TElDQVRJT05fTkFNRVNQQUNFLAogCU9CSkVDVF9QVUJMSUNBVElPTl9SRUwsCkBAIC0zOTk5LDYg KzQwNTYsODggQEAgdHlwZWRlZiBzdHJ1Y3QgQ3JlYXRlQ2FzdFN0bXQKIAlib29sCQlpbm91dDsK IH0gQ3JlYXRlQ2FzdFN0bXQ7CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCUNSRUFU RSBQUk9QRVJUWSBHUkFQSCBTdGF0ZW1lbnQKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq LwordHlwZWRlZiBzdHJ1Y3QgQ3JlYXRlUHJvcEdyYXBoU3RtdAoreworCU5vZGVUYWcJCXR5cGU7 CisJUmFuZ2VWYXIgICAqcGduYW1lOworCUxpc3QJICAgKnZlcnRleF90YWJsZXM7CisJTGlzdAkg ICAqZWRnZV90YWJsZXM7Cit9IENyZWF0ZVByb3BHcmFwaFN0bXQ7CisKK3R5cGVkZWYgc3RydWN0 IFByb3BHcmFwaFZlcnRleAoreworCU5vZGVUYWcJCXR5cGU7CisJUmFuZ2VWYXIgICAqdnRhYmxl OworCUxpc3QJICAgKnZrZXk7CisJTGlzdAkgICAqbGFiZWxzOworCVBhcnNlTG9jCWxvY2F0aW9u OworfSBQcm9wR3JhcGhWZXJ0ZXg7CisKK3R5cGVkZWYgc3RydWN0IFByb3BHcmFwaEVkZ2UKK3sK KwlOb2RlVGFnCQl0eXBlOworCVJhbmdlVmFyICAgKmV0YWJsZTsKKwlMaXN0CSAgICpla2V5Owor CUxpc3QJICAgKmVzcmNrZXk7CisJY2hhcgkgICAqZXNyY3ZlcnRleDsKKwlMaXN0CSAgICplc3Jj dmVydGV4Y29sczsKKwlMaXN0CSAgICplZGVzdGtleTsKKwljaGFyCSAgICplZGVzdHZlcnRleDsK KwlMaXN0CSAgICplZGVzdHZlcnRleGNvbHM7CisJTGlzdAkgICAqbGFiZWxzOworCVBhcnNlTG9j CWxvY2F0aW9uOworfSBQcm9wR3JhcGhFZGdlOworCit0eXBlZGVmIHN0cnVjdCBQcm9wR3JhcGhM YWJlbEFuZFByb3BlcnRpZXMKK3sKKwlOb2RlVGFnCQl0eXBlOworCWNvbnN0IGNoYXIgKmxhYmVs OworCXN0cnVjdCBQcm9wR3JhcGhQcm9wZXJ0aWVzICpwcm9wZXJ0aWVzOworCVBhcnNlTG9jCWxv Y2F0aW9uOworfSBQcm9wR3JhcGhMYWJlbEFuZFByb3BlcnRpZXM7CisKK3R5cGVkZWYgc3RydWN0 IFByb3BHcmFwaFByb3BlcnRpZXMKK3sKKwlOb2RlVGFnCQl0eXBlOworCUxpc3QJICAgKnByb3Bl cnRpZXM7CisJYm9vbAkJYWxsOworCVBhcnNlTG9jCWxvY2F0aW9uOworfSBQcm9wR3JhcGhQcm9w ZXJ0aWVzOworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKglBTFRFUiBQUk9QRVJUWSBH UkFQSCBTdGF0ZW1lbnQKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCit0eXBlZGVm IGVudW0gQWx0ZXJQcm9wR3JhcGhFbGVtZW50S2luZAoreworCVBST1BHUkFQSF9FTEVNRU5UX0tJ TkRfVkVSVEVYID0gMSwKKwlQUk9QR1JBUEhfRUxFTUVOVF9LSU5EX0VER0UgPSAyLAorfSBBbHRl clByb3BHcmFwaEVsZW1lbnRLaW5kOworCit0eXBlZGVmIHN0cnVjdCBBbHRlclByb3BHcmFwaFN0 bXQKK3sKKwlOb2RlVGFnCQl0eXBlOworCVJhbmdlVmFyICAgKnBnbmFtZTsKKwlib29sCQltaXNz aW5nX29rOworCUxpc3QJICAgKmFkZF92ZXJ0ZXhfdGFibGVzOworCUxpc3QJICAgKmFkZF9lZGdl X3RhYmxlczsKKwlMaXN0CSAgICpkcm9wX3ZlcnRleF90YWJsZXM7CisJTGlzdAkgICAqZHJvcF9l ZGdlX3RhYmxlczsKKwlEcm9wQmVoYXZpb3IgZHJvcF9iZWhhdmlvcjsKKwlBbHRlclByb3BHcmFw aEVsZW1lbnRLaW5kIGVsZW1lbnRfa2luZDsKKwljb25zdCBjaGFyICplbGVtZW50X2FsaWFzOwor CUxpc3QJICAgKmFkZF9sYWJlbHM7CisJY29uc3QgY2hhciAqZHJvcF9sYWJlbDsKKwljb25zdCBj aGFyICphbHRlcl9sYWJlbDsKKwlQcm9wR3JhcGhQcm9wZXJ0aWVzICphZGRfcHJvcGVydGllczsK KwlMaXN0CSAgICpkcm9wX3Byb3BlcnRpZXM7Cit9IEFsdGVyUHJvcEdyYXBoU3RtdDsKKwogLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJQ1JFQVRFIFRSQU5TRk9STSBTdGF0ZW1lbnQKICAq IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3By aW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggZWE0NzY1MmFk Yi4uMDdkMjA3MDUxNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTIxMjQsNiArMjEyNCwyOCBA QCB0eXBlZGVmIHN0cnVjdCBJbmZlcmVuY2VFbGVtCiAJT2lkCQkJaW5mZXJvcGNsYXNzOwkvKiBP SUQgb2YgYXR0IG9wY2xhc3MsIG9yIEludmFsaWRPaWQgKi8KIH0gSW5mZXJlbmNlRWxlbTsKIAor LyoKKyAqIEdyYXBoTGFiZWxSZWYgLSBsYWJlbCByZWZlcmVuY2UgaW4gbGFiZWwgZXhwcmVzc2lv biBpbnNpZGUgR1JBUEhfVEFCTEUgY2xhdXNlCisgKi8KK3R5cGVkZWYgc3RydWN0IEdyYXBoTGFi ZWxSZWYKK3sKKwlOb2RlVGFnCQl0eXBlOworCU9pZAkJCWxhYmVsaWQ7CisJUGFyc2VMb2MJbG9j YXRpb247Cit9IEdyYXBoTGFiZWxSZWY7CisKKy8qCisgKiBHcmFwaFByb3BlcnR5UmVmIC0gcHJv cGVydHkgcmVmZXJlbmNlIGluc2lkZSBHUkFQSF9UQUJMRSBjbGF1c2UKKyAqLwordHlwZWRlZiBz dHJ1Y3QgR3JhcGhQcm9wZXJ0eVJlZgoreworCUV4cHIJCXhwcjsKKwljb25zdCBjaGFyICplbHZh cm5hbWU7CisJT2lkCQkJcHJvcGlkOworCU9pZAkJCXR5cGVJZDsKKwlQYXJzZUxvYwlsb2NhdGlv bjsKK30gR3JhcGhQcm9wZXJ0eVJlZjsKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLQogICogVGFy Z2V0RW50cnkgLQogICoJICAgYSB0YXJnZXQgZW50cnkgKHVzZWQgaW4gcXVlcnkgdGFyZ2V0IGxp c3RzKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9hbmFseXplLmgKaW5kZXggMjhiNjZmY2NiNC4uMzg1ZjdmZGZhMSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJz ZXIvYW5hbHl6ZS5oCkBAIC02Miw1ICs2Miw4IEBAIGV4dGVybiBMaXN0ICpCdWlsZE9uQ29uZmxp Y3RFeGNsdWRlZFRhcmdldGxpc3QoUmVsYXRpb24gdGFyZ2V0cmVsLAogCQkJCQkJCQkJCQkgICBJ bmRleCBleGNsUmVsSW5kZXgpOwogCiBleHRlcm4gU29ydEdyb3VwQ2xhdXNlICptYWtlU29ydEdy b3VwQ2xhdXNlRm9yU2V0T3AoT2lkIHJlc2NvbHR5cGUsIGJvb2wgcmVxdWlyZV9oYXNoKTsKK2V4 dGVybiB2b2lkIGNvbnN0cnVjdFNldE9wVGFyZ2V0bGlzdChTZXRPcGVyYXRpb25TdG10ICpvcCwg TGlzdCAqbHRhcmdldGxpc3QsCisJCQkJCQkJCQkgTGlzdCAqcnRhcmdldGxpc3QsIExpc3QgKip0 YXJnZXRsaXN0LCBjb25zdCBjaGFyICpjb250ZXh0LAorCQkJCQkJCQkJIFBhcnNlU3RhdGUgKnBz dGF0ZSwgYm9vbCByZWN1cnNpdmUpOwogCiAjZW5kaWYJCQkJCQkJLyogQU5BTFlaRV9IICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJz ZXIva3dsaXN0LmgKaW5kZXggZjg2NTkwNzhjZS4uZGNhNGUzZTBhYiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3Qu aApAQCAtMTM2LDYgKzEzNiw3IEBAIFBHX0tFWVdPUkQoImRlbGltaXRlcnMiLCBERUxJTUlURVJT LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJkZXBlbmRzIiwg REVQRU5EUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZGVw dGgiLCBERVBUSCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi ZGVzYyIsIERFU0MsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJk ZXN0aW5hdGlvbiIsIERFU1RJTkFUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJkZXRhY2giLCBERVRBQ0gsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoImRpY3Rpb25hcnkiLCBESUNUSU9OQVJZLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJkaXNhYmxlIiwgRElTQUJMRV9QLCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBAIC0xNDcsNiArMTQ4LDcgQEAgUEdfS0VZV09S RCgiZG9tYWluIiwgRE9NQUlOX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoImRvdWJsZSIsIERPVUJMRV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJkcm9wIiwgRFJPUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgiZWFjaCIsIEVBQ0gsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKK1BHX0tFWVdPUkQoImVkZ2UiLCBFREdFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJlbHNlIiwgRUxTRSwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoImVtcHR5IiwgRU1QVFlfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZW5hYmxlIiwgRU5BQkxFX1AsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKQEAgLTE5MCw2ICsxOTIsOCBAQCBQR19LRVlXT1JEKCJnZW5lcmF0 ZWQiLCBHRU5FUkFURUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoImdsb2JhbCIsIEdMT0JBTCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgiZ3JhbnQiLCBHUkFOVCwgUkVTRVJWRURfS0VZV09SRCwgQVNfTEFCRUwpCiBQR19L RVlXT1JEKCJncmFudGVkIiwgR1JBTlRFRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQorUEdfS0VZV09SRCgiZ3JhcGgiLCBHUkFQSCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQorUEdfS0VZV09SRCgiZ3JhcGhfdGFibGUiLCBHUkFQSF9UQUJMRSwgQ09MX05BTUVfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImdyZWF0ZXN0IiwgR1JFQVRFU1QsIENPTF9O QU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJncm91cCIsIEdST1VQX1AsIFJF U0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQogUEdfS0VZV09SRCgiZ3JvdXBpbmciLCBHUk9VUElO RywgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTI5NCw2ICsyOTgsNyBAQCBQR19L RVlXT1JEKCJuZmQiLCBORkQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoIm5ma2MiLCBORktDLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJuZmtkIiwgTkZLRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgibm8iLCBOTywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZ V09SRCgibm9kZSIsIE5PREUsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoIm5vbmUiLCBOT05FLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgibm9ybWFsaXplIiwgTk9STUFMSVpFLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgibm9ybWFsaXplZCIsIE5PUk1BTElaRUQsIFVOUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKQEAgLTM1NSw2ICszNjAsOCBAQCBQR19LRVlXT1JEKCJwcm9jZWR1cmFs IiwgUFJPQ0VEVVJBTCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgicHJvY2VkdXJlIiwgUFJPQ0VEVVJFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJwcm9jZWR1cmVzIiwgUFJPQ0VEVVJFUywgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicHJvZ3JhbSIsIFBST0dSQU0sIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInByb3BlcnRpZXMiLCBQUk9QRVJUSUVT LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJwcm9wZXJ0eSIs IFBST1BFUlRZLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJw dWJsaWNhdGlvbiIsIFBVQkxJQ0FUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJxdW90ZSIsIFFVT1RFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJxdW90ZXMiLCBRVU9URVMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKQEAgLTM2OCw2ICszNzUsNyBAQCBQR19LRVlXT1JEKCJyZWZlcmVuY2VzIiwgUkVG RVJFTkNFUywgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInJlZmVy ZW5jaW5nIiwgUkVGRVJFTkNJTkcsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoInJlZnJlc2giLCBSRUZSRVNILCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJyZWluZGV4IiwgUkVJTkRFWCwgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQorUEdfS0VZV09SRCgicmVsYXRpb25zaGlwIiwgUkVMQVRJT05TSElQLCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJyZWxhdGl2ZSIsIFJFTEFU SVZFX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInJlbGVh c2UiLCBSRUxFQVNFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJyZW5hbWUiLCBSRU5BTUUsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTQ4 Nyw2ICs0OTUsNyBAQCBQR19LRVlXT1JEKCJ2YXJpYWRpYyIsIFZBUklBRElDLCBSRVNFUlZFRF9L RVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgidmFyeWluZyIsIFZBUllJTkcsIFVOUkVT RVJWRURfS0VZV09SRCwgQVNfTEFCRUwpCiBQR19LRVlXT1JEKCJ2ZXJib3NlIiwgVkVSQk9TRSwg VFlQRV9GVU5DX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInZlcnNpb24i LCBWRVJTSU9OX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQo InZlcnRleCIsIFZFUlRFWCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgidmlldyIsIFZJRVcsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoInZpZXdzIiwgVklFV1MsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoInZvbGF0aWxlIiwgVk9MQVRJTEUsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ncmFwaHRhYmxlLmgg Yi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfZ3JhcGh0YWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLmFmMGY1NTBjZDIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv aW5jbHVkZS9wYXJzZXIvcGFyc2VfZ3JhcGh0YWJsZS5oCkBAIC0wLDAgKzEsMzEgQEAKKy8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIHBhcnNlX2dyYXBodGFibGUuaAorICoJCXBhcnNpbmcgb2Yg R1JBUEhfVEFCTEUKKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjQs IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmln aHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoK KyAqIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ncmFwaHRhYmxlLmgKKyAqCisgKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqLworI2lmbmRlZiBQQVJTRV9HUkFQSFRBQkxFX0gKKyNkZWZpbmUgUEFSU0Vf R1JBUEhUQUJMRV9ICisKKyNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCisjaW5jbHVkZSAi bm9kZXMvcGdfbGlzdC5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9ub2RlLmgiCisKK3R5cGVk ZWYgc3RydWN0IEdyYXBoVGFibGVQYXJzZVN0YXRlCit7CisJT2lkCQkJZ3JhcGhpZDsKKwlMaXN0 CSAgICp2YXJpYWJsZXM7Cit9IEdyYXBoVGFibGVQYXJzZVN0YXRlOworCitleHRlcm4gTm9kZSAq Z3JhcGhfdGFibGVfcHJvcGVydHlfcmVmZXJlbmNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1u UmVmICpjcmVmLCBOb2RlICp2YXIpOworCitleHRlcm4gTm9kZSAqdHJhbnNmb3JtR3JhcGhQYXR0 ZXJuKFBhcnNlU3RhdGUgKnBzdGF0ZSwgR3JhcGhUYWJsZVBhcnNlU3RhdGUgKmdwc3RhdGUsIEdy YXBoUGF0dGVybiAqZ3JhcGhfcGF0dGVybik7CisKKyNlbmRpZgkJCQkJCQkvKiBQQVJTRV9HUkFQ SFRBQkxFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgg Yi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCmluZGV4IDViNzgxZDg3YTkuLjMyNDZm YmUxNTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIv c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtODIsNiArODIsNyBAQCB0eXBlZGVm IGVudW0gUGFyc2VFeHByS2luZAogCUVYUFJfS0lORF9DT1BZX1dIRVJFLAkJLyogV0hFUkUgY29u ZGl0aW9uIGluIENPUFkgRlJPTSAqLwogCUVYUFJfS0lORF9HRU5FUkFURURfQ09MVU1OLCAvKiBn ZW5lcmF0aW9uIGV4cHJlc3Npb24gZm9yIGEgY29sdW1uICovCiAJRVhQUl9LSU5EX0NZQ0xFX01B UkssCQkvKiBjeWNsZSBtYXJrIHZhbHVlICovCisJRVhQUl9LSU5EX1BST1BHUkFQSF9QUk9QRVJU WSwJLyogZGVyaXZlZCBwcm9wZXJ0eSBleHByZXNzaW9uICovCiB9IFBhcnNlRXhwcktpbmQ7CiAK IApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmggYi9zcmMv aW5jbHVkZS9wYXJzZXIvcGFyc2VfcmVsYXRpb24uaAppbmRleCBiZWEyZGE1NDk2Li5jMTFiODk1 YjdiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfcmVsYXRpb24uaAorKysg Yi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfcmVsYXRpb24uaApAQCAtODEsNiArODEsMTQgQEAg ZXh0ZXJuIFBhcnNlTmFtZXNwYWNlSXRlbSAqYWRkUmFuZ2VUYWJsZUVudHJ5Rm9yVGFibGVGdW5j KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkJCQkJICBBbGlhcyAqYWxpYXMsCiAJCQkJ CQkJCQkJCQkJCSAgYm9vbCBsYXRlcmFsLAogCQkJCQkJCQkJCQkJCQkgIGJvb2wgaW5Gcm9tQ2wp OworZXh0ZXJuIFBhcnNlTmFtZXNwYWNlSXRlbSAqYWRkUmFuZ2VUYWJsZUVudHJ5Rm9yR3JhcGhU YWJsZShQYXJzZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJCQkJCQkJCSAgIE9pZCBncmFwaGlkLAor CQkJCQkJCQkJCQkJCQkgICBHcmFwaFBhdHRlcm4gKmdyYXBoX3BhdHRlcm4sCisJCQkJCQkJCQkJ CQkJCSAgIExpc3QgKmNvbHVtbnMsCisJCQkJCQkJCQkJCQkJCSAgIExpc3QgKmNvbG5hbWVzLAor CQkJCQkJCQkJCQkJCQkgICBBbGlhcyAqYWxpYXMsCisJCQkJCQkJCQkJCQkJCSAgIGJvb2wgbGF0 ZXJhbCwKKwkJCQkJCQkJCQkJCQkJICAgYm9vbCBpbkZyb21DbCk7CiBleHRlcm4gUGFyc2VOYW1l c3BhY2VJdGVtICphZGRSYW5nZVRhYmxlRW50cnlGb3JKb2luKFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJCQkJCQkJCQkJCQkgTGlzdCAqY29sbmFtZXMsCiAJCQkJCQkJCQkJCQkJIFBhcnNlTmFtZXNw YWNlQ29sdW1uICpuc2NvbHVtbnMsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXdyaXRlL3Jl d3JpdGVHcmFwaFRhYmxlLmggYi9zcmMvaW5jbHVkZS9yZXdyaXRlL3Jld3JpdGVHcmFwaFRhYmxl LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMGMwMzE5ZjVjZgotLS0g L2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3Jld3JpdGUvcmV3cml0ZUdyYXBoVGFibGUuaApA QCAtMCwwICsxLDIxIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiByZXdyaXRlR3JhcGhU YWJsZS5oCisgKgkJU3VwcG9ydCBmb3IgcmV3cml0aW5nIEdSQVBIX1RBQkxFIGNsYXVzZXMuCisg KgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI0LCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBS ZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMvaW5jbHVk ZS9yZXdyaXRlL3Jld3JpdGVHcmFwaFRhYmxlLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq LworI2lmbmRlZiBSRVdSSVRFR1JBUEhUQUJMRV9ICisjZGVmaW5lIFJFV1JJVEVHUkFQSFRBQkxF X0gKKworI2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKKworZXh0ZXJuIFF1ZXJ5ICpyZXdy aXRlR3JhcGhUYWJsZShRdWVyeSAqcGFyc2V0cmVlLCBpbnQgcnRfaW5kZXgpOworCisjZW5kaWYJ CQkJCQkJLyogUkVXUklURUdSQVBIVEFCTEVfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dGNvcC9jbWR0YWdsaXN0LmggYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaAppbmRleCA3 ZmRjZWM2ZGQ5Li41NTgyNDgzZDA2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90Y29wL2NtZHRh Z2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaApAQCAtNDgsNiArNDgs NyBAQCBQR19DTURUQUcoQ01EVEFHX0FMVEVSX09QRVJBVE9SX0NMQVNTLCAiQUxURVIgT1BFUkFU T1IgQ0xBU1MiLCB0cnVlLCBmYWxzZSwgZmFscwogUEdfQ01EVEFHKENNRFRBR19BTFRFUl9PUEVS QVRPUl9GQU1JTFksICJBTFRFUiBPUEVSQVRPUiBGQU1JTFkiLCB0cnVlLCBmYWxzZSwgZmFsc2Up CiBQR19DTURUQUcoQ01EVEFHX0FMVEVSX1BPTElDWSwgIkFMVEVSIFBPTElDWSIsIHRydWUsIGZh bHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfQUxURVJfUFJPQ0VEVVJFLCAiQUxURVIgUFJP Q0VEVVJFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9QUk9Q RVJUWV9HUkFQSCwgIkFMVEVSIFBST1BFUlRZIEdSQVBIIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQog UEdfQ01EVEFHKENNRFRBR19BTFRFUl9QVUJMSUNBVElPTiwgIkFMVEVSIFBVQkxJQ0FUSU9OIiwg dHJ1ZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19BTFRFUl9ST0xFLCAiQUxURVIg Uk9MRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0FMVEVSX1JPVVRJ TkUsICJBTFRFUiBST1VUSU5FIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQpAQCAtMTAzLDYgKzEwNCw3 IEBAIFBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX09QRVJBVE9SX0NMQVNTLCAiQ1JFQVRFIE9QRVJB VE9SIENMQVNTIiwgdHJ1ZSwgZmFsc2UsIGZhCiBQR19DTURUQUcoQ01EVEFHX0NSRUFURV9PUEVS QVRPUl9GQU1JTFksICJDUkVBVEUgT1BFUkFUT1IgRkFNSUxZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl KQogUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfUE9MSUNZLCAiQ1JFQVRFIFBPTElDWSIsIHRydWUs IGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1BST0NFRFVSRSwgIkNSRUFU RSBQUk9DRURVUkUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NSRUFU RV9QUk9QRVJUWV9HUkFQSCwgIkNSRUFURSBQUk9QRVJUWSBHUkFQSCIsIHRydWUsIGZhbHNlLCBm YWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1BVQkxJQ0FUSU9OLCAiQ1JFQVRFIFBVQkxJ Q0FUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfUk9M RSwgIkNSRUFURSBST0xFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdf Q1JFQVRFX1JPVVRJTkUsICJDUkVBVEUgUk9VVElORSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKQEAg LTE1Niw2ICsxNTgsNyBAQCBQR19DTURUQUcoQ01EVEFHX0RST1BfT1BFUkFUT1JfRkFNSUxZLCAi RFJPUCBPUEVSQVRPUiBGQU1JTFkiLCB0cnVlLCBmYWxzZSwgZmFscwogUEdfQ01EVEFHKENNRFRB R19EUk9QX09XTkVELCAiRFJPUCBPV05FRCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRB RyhDTURUQUdfRFJPUF9QT0xJQ1ksICJEUk9QIFBPTElDWSIsIHRydWUsIGZhbHNlLCBmYWxzZSkK IFBHX0NNRFRBRyhDTURUQUdfRFJPUF9QUk9DRURVUkUsICJEUk9QIFBST0NFRFVSRSIsIHRydWUs IGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9QUk9QRVJUWV9HUkFQSCwgIkRS T1AgUFJPUEVSVFkgR1JBUEgiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFH X0RST1BfUFVCTElDQVRJT04sICJEUk9QIFBVQkxJQ0FUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl KQogUEdfQ01EVEFHKENNRFRBR19EUk9QX1JPTEUsICJEUk9QIFJPTEUiLCBmYWxzZSwgZmFsc2Us IGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19EUk9QX1JPVVRJTkUsICJEUk9QIFJPVVRJTkUiLCB0 cnVlLCBmYWxzZSwgZmFsc2UpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9hY2wuaCBi L3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCmluZGV4IDczMWQ4NGIyYTkuLmI2ODEzZDcyOTIgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2FjbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxz L2FjbC5oCkBAIC0xNjYsNiArMTY2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQXJyYXlUeXBlIEFjbDsK ICNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfTEFOR1VBR0UJCShBQ0xfVVNBR0UpCiAjZGVmaW5lIEFD TF9BTExfUklHSFRTX0xBUkdFT0JKRUNUCShBQ0xfU0VMRUNUfEFDTF9VUERBVEUpCiAjZGVmaW5l IEFDTF9BTExfUklHSFRTX1BBUkFNRVRFUl9BQ0wgKEFDTF9TRVR8QUNMX0FMVEVSX1NZU1RFTSkK KyNkZWZpbmUgQUNMX0FMTF9SSUdIVFNfUFJPUEdSQVBICShBQ0xfU0VMRUNUKQogI2RlZmluZSBB Q0xfQUxMX1JJR0hUU19TQ0hFTUEJCShBQ0xfVVNBR0V8QUNMX0NSRUFURSkKICNkZWZpbmUgQUNM X0FMTF9SSUdIVFNfVEFCTEVTUEFDRQkoQUNMX0NSRUFURSkKICNkZWZpbmUgQUNMX0FMTF9SSUdI VFNfVFlQRQkJCShBQ0xfVVNBR0UpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9sc3lz Y2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCmluZGV4IDIwNDQ2ZjZmODMu LjgyZDBiYmIyNjcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCisr KyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCkBAIC0yMDYsNiArMjA2LDkgQEAgZXh0 ZXJuIGNoYXIgKmdldF9wdWJsaWNhdGlvbl9uYW1lKE9pZCBwdWJpZCwgYm9vbCBtaXNzaW5nX29r KTsKIGV4dGVybiBPaWQJZ2V0X3N1YnNjcmlwdGlvbl9vaWQoY29uc3QgY2hhciAqc3VibmFtZSwg Ym9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiBjaGFyICpnZXRfc3Vic2NyaXB0aW9uX25hbWUoT2lk IHN1YmlkLCBib29sIG1pc3Npbmdfb2spOwogCitleHRlcm4gY2hhciAqZ2V0X3Byb3BncmFwaF9s YWJlbF9uYW1lKE9pZCBsYWJlbG9pZCk7CitleHRlcm4gY2hhciAqZ2V0X3Byb3BncmFwaF9wcm9w ZXJ0eV9uYW1lKE9pZCBwcm9wb2lkKTsKKwogI2RlZmluZSB0eXBlX2lzX2FycmF5KHR5cGlkKSAg KGdldF9lbGVtZW50X3R5cGUodHlwaWQpICE9IEludmFsaWRPaWQpCiAvKiB0eXBlX2lzX2FycmF5 X2RvbWFpbiBhY2NlcHRzIGJvdGggcGxhaW4gYXJyYXlzIGFuZCBkb21haW5zIG92ZXIgYXJyYXlz ICovCiAjZGVmaW5lIHR5cGVfaXNfYXJyYXlfZG9tYWluKHR5cGlkKSAgKGdldF9iYXNlX2VsZW1l bnRfdHlwZSh0eXBpZCkgIT0gSW52YWxpZE9pZCkKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2Vz L2VjcGcvcHJlcHJvYy9wYXJzZS5wbCBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9wYXJz ZS5wbAppbmRleCBmZThkM2U1MTc4Li4yNDY1OWNiNDFlIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJm YWNlcy9lY3BnL3ByZXByb2MvcGFyc2UucGwKKysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVw cm9jL3BhcnNlLnBsCkBAIC02Nyw3ICs2Nyw4IEBAIG15ICVyZXBsYWNlX3N0cmluZyA9ICgKIAkn RVFVQUxTX0dSRUFURVInID0+ICc9PicsCiAJJ0xFU1NfRVFVQUxTJyA9PiAnPD0nLAogCSdHUkVB VEVSX0VRVUFMUycgPT4gJz49JywKLQknTk9UX0VRVUFMUycgPT4gJzw+JywpOworCSdOT1RfRVFV QUxTJyA9PiAnPD4nLAorCSdSSUdIVF9BUlJPVycgPT4gJy0+JywpOwogCiAjIHNwZWNpZmljIHJl cGxhY2VfdHlwZXMgZm9yIHNwZWNpZmljIG5vbi10ZXJtaW5hbHMgLSBuZXZlciBpbmNsdWRlIHRo ZSAnOicKICMgRUNQRy1vbmx5IHJlcGxhY2VfdHlwZXMgYXJlIGRlZmluZWQgaW4gZWNwZy1yZXBs YWNlX3R5cGVzCkBAIC0xODYsOSArMTg3LDkgQEAgc3ViIG1haW4KIAogCQlteSAkcHJlYyA9IDA7 CiAKLQkJIyBNYWtlIHN1cmUgYW55IGJyYWNlcyBhcmUgc3BsaXQKLQkJcy97LyB7IC9nOwotCQlz L30vIH0gL2c7CisJCSMgTWFrZSBzdXJlIGFueSAodW5xdW90ZWQpIGJyYWNlcyBhcmUgc3BsaXQK KwkJcy8oPzwhJylceyg/IScpLyB7IC9nOworCQlzLyg/PCEnKVx9KD8hJykvIH0gL2c7CiAKIAkJ IyBBbnkgY29tbWVudHMgYXJlIHNwbGl0CiAJCXN8XC9cKnwgLyogfGc7CmRpZmYgLS1naXQgYS9z cmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvcGdjLmwgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3By ZXByb2MvcGdjLmwKaW5kZXggZjM2M2EzNDY1OS4uMjJlZGNmMzc4ZiAxMDA2NDQKLS0tIGEvc3Jj L2ludGVyZmFjZXMvZWNwZy9wcmVwcm9jL3BnYy5sCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcv cHJlcHJvYy9wZ2MubApAQCAtMzM1LDYgKzMzNSw4IEBAIGxlc3NfZXF1YWxzCQkiPD0iCiBncmVh dGVyX2VxdWFscwkiPj0iCiBsZXNzX2dyZWF0ZXIJIjw+Igogbm90X2VxdWFscwkJIiE9IgorLyog Tm90ZSB0aGVyZSBpcyBubyBuZWVkIGZvciBsZWZ0X2Fycm93LCBzaW5jZSAiPC0iIGlzIG5vdCBh IHNpbmdsZSBvcGVyYXRvci4gKi8KK3JpZ2h0X2Fycm93CQkiLT4iCiAKIC8qCiAgKiAic2VsZiIg aXMgdGhlIHNldCBvZiBjaGFycyB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCBhcyBzaW5nbGUtY2hh cmFjdGVyCkBAIC0zNDYsNyArMzQ4LDcgQEAgbm90X2VxdWFscwkJIiE9IgogICogSWYgeW91IGNo YW5nZSBlaXRoZXIgc2V0LCBhZGp1c3QgdGhlIGNoYXJhY3RlciBsaXN0cyBhcHBlYXJpbmcgaW4g dGhlCiAgKiBydWxlIGZvciAib3BlcmF0b3IiIQogICovCi1zZWxmCQkJWywoKVxbXF0uO1w6XCtc LVwqXC9cJVxeXDxcPlw9XQorc2VsZgkJCVssKClcW1xdLjtcOlx8XCtcLVwqXC9cJVxeXDxcPlw9 XQogb3BfY2hhcnMJCVtcflwhXEBcI1xeXCZcfFxgXD9cK1wtXCpcL1wlXDxcPlw9XQogb3BlcmF0 b3IJCXtvcF9jaGFyc30rCiAKQEAgLTg0MCw2ICs4NDIsMTAgQEAgY3BwbGluZQkJCXtzcGFjZX0q IyhbXmldW0EtWmEtel0qfHtpZn18e2lmZGVmfXx7aWZuZGVmfXx7aW1wb3J0fSkoKFwvXCpbXiov XSpcKisKIAkJCQkJcmV0dXJuIE5PVF9FUVVBTFM7CiAJCQkJfQogCit7cmlnaHRfYXJyb3d9CXsK KwkJCQkJcmV0dXJuIFJJR0hUX0FSUk9XOworCQkJCX0KKwoge2luZm9ybWl4X3NwZWNpYWx9IHsK IAkJCQkJLyogYXJlIHdlIHNpbXVsYXRpbmcgSW5mb3JtaXg/ICovCiAJCQkJCWlmIChJTkZPUk1J WF9NT0RFKQpAQCAtOTMzLDcgKzkzOSw3IEBAIGNwcGxpbmUJCQl7c3BhY2V9KiMoW15pXVtBLVph LXpdKnx7aWZ9fHtpZmRlZn18e2lmbmRlZn18e2ltcG9ydH0pKChcL1wqW14qL10qXCorCiAJCQkJ CQkgKiB0aGF0IHRoZSAic2VsZiIgcnVsZSB3b3VsZCBoYXZlLgogCQkJCQkJICovCiAJCQkJCQlp ZiAobmNoYXJzID09IDEgJiYKLQkJCQkJCQlzdHJjaHIoIiwoKVtdLjs6Ky0qLyVePD49IiwgeXl0 ZXh0WzBdKSkKKwkJCQkJCQlzdHJjaHIoIiwoKVtdLjs6fCstKi8lXjw+PSIsIHl5dGV4dFswXSkp CiAJCQkJCQkJcmV0dXJuIHl5dGV4dFswXTsKIAogCQkJCQkJLyoKQEAgLTk1NCw2ICs5NjAsOCBA QCBjcHBsaW5lCQkJe3NwYWNlfSojKFteaV1bQS1aYS16XSp8e2lmfXx7aWZkZWZ9fHtpZm5kZWZ9 fHtpbXBvcnR9KSgoXC9cKlteKi9dKlwqKwogCQkJCQkJCQlyZXR1cm4gTk9UX0VRVUFMUzsKIAkJ CQkJCQlpZiAoeXl0ZXh0WzBdID09ICchJyAmJiB5eXRleHRbMV0gPT0gJz0nKQogCQkJCQkJCQly ZXR1cm4gTk9UX0VRVUFMUzsKKwkJCQkJCQlpZiAoeXl0ZXh0WzBdID09ICctJyAmJiB5eXRleHRb MV0gPT0gJz4nKQorCQkJCQkJCQlyZXR1cm4gUklHSFRfQVJST1c7CiAJCQkJCQl9CiAJCQkJCX0K IApkaWZmIC0tZ2l0IGEvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2dyYW0ueSBiL3NyYy9wbC9wbHBn c3FsL3NyYy9wbF9ncmFtLnkKaW5kZXggODE4MmNlMjhhYS4uOGY2MTQ2ZThkYyAxMDA2NDQKLS0t IGEvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2dyYW0ueQorKysgYi9zcmMvcGwvcGxwZ3NxbC9zcmMv cGxfZ3JhbS55CkBAIC0yMzcsNiArMjM3LDcgQEAgc3RhdGljCXZvaWQJCQljaGVja19yYWlzZV9w YXJhbWV0ZXJzKFBMcGdTUUxfc3RtdF9yYWlzZSAqc3RtdCk7CiAldG9rZW4gPGl2YWw+CUlDT05T VCBQQVJBTQogJXRva2VuCQkJVFlQRUNBU1QgRE9UX0RPVCBDT0xPTl9FUVVBTFMgRVFVQUxTX0dS RUFURVIKICV0b2tlbgkJCUxFU1NfRVFVQUxTIEdSRUFURVJfRVFVQUxTIE5PVF9FUVVBTFMKKyV0 b2tlbgkJCUJSQUNLRVRfUklHSFRfQVJST1cgTEVGVF9BUlJPV19CUkFDS0VUIE1JTlVTX0xFRlRf QlJBQ0tFVCBSSUdIVF9CUkFDS0VUX01JTlVTCiAKIC8qCiAgKiBPdGhlciB0b2tlbnMgcmVjb2du aXplZCBieSBwbHBnc3FsJ3MgbGV4ZXIgaW50ZXJmYWNlIGxheWVyIChwbF9zY2FubmVyLmMpLgpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hbHRlcl9nZW5lcmljLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWx0ZXJfZ2VuZXJpYy5vdXQKaW5kZXggYWU1NGNi MjU0Zi4uYWI5Y2U5ZTlhYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9h bHRlcl9nZW5lcmljLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FsdGVyX2dl bmVyaWMub3V0CkBAIC01MjAsNiArNTIwLDQ5IEBAIEVSUk9SOiAgbGVmdCBhbmQgcmlnaHQgYXNz b2NpYXRlZCBkYXRhIHR5cGVzIGZvciBvcGVyYXRvciBjbGFzcyBvcHRpb25zIHBhcnNpbmcKIEFM VEVSIE9QRVJBVE9SIEZBTUlMWSBhbHRfb3BmMTkgVVNJTkcgYnRyZWUgQUREIEZVTkNUSU9OIDUg KGludDQpIHRlc3Rfb3BjbGFzc19vcHRpb25zX2Z1bmMoaW50ZXJuYWwpOyAtLSBPawogQUxURVIg T1BFUkFUT1IgRkFNSUxZIGFsdF9vcGYxOSBVU0lORyBidHJlZSBEUk9QIEZVTkNUSU9OIDUgKGlu dDQsIGludDQpOwogRFJPUCBPUEVSQVRPUiBGQU1JTFkgYWx0X29wZjE5IFVTSU5HIGJ0cmVlOwor LS0KKy0tIFByb3BlcnR5IEdyYXBoCistLQorU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdy ZXNzX2FsdGVyX2dlbmVyaWNfdXNlcjE7CitDUkVBVEUgUFJPUEVSVFkgR1JBUEggYWx0X2dyYXBo MTsKK0NSRUFURSBQUk9QRVJUWSBHUkFQSCBhbHRfZ3JhcGgyOworQ1JFQVRFIFBST1BFUlRZIEdS QVBIIGFsdF9ncmFwaDM7CitBTFRFUiBQUk9QRVJUWSBHUkFQSCBhbHRfZ3JhcGgxIFJFTkFNRSBU TyBhbHRfZ3JhcGgyOyAtLSBmYWlsZWQgKG5hbWUgY29uZmxpY3QpCitFUlJPUjogIHJlbGF0aW9u ICJhbHRfZ3JhcGgyIiBhbHJlYWR5IGV4aXN0cworQUxURVIgUFJPUEVSVFkgR1JBUEggYWx0X2dy YXBoMSBSRU5BTUUgVE8gYWx0X2dyYXBoNDsgLS0gT0sKK0FMVEVSIFBST1BFUlRZIEdSQVBIIGFs dF9ncmFwaDIgT1dORVIgVE8gcmVncmVzc19hbHRlcl9nZW5lcmljX3VzZXIyOyAgLS0gZmFpbGVk IChubyByb2xlIG1lbWJlcnNoaXApCitFUlJPUjogIG11c3QgYmUgYWJsZSB0byBTRVQgUk9MRSAi cmVncmVzc19hbHRlcl9nZW5lcmljX3VzZXIyIgorQUxURVIgUFJPUEVSVFkgR1JBUEggYWx0X2dy YXBoMiBPV05FUiBUTyByZWdyZXNzX2FsdGVyX2dlbmVyaWNfdXNlcjM7ICAtLSBPSworQUxURVIg UFJPUEVSVFkgR1JBUEggYWx0X2dyYXBoNCBTRVQgU0NIRU1BIGFsdF9uc3AyOyAgLS0gT0sKK0FM VEVSIFBST1BFUlRZIEdSQVBIIGFsdF9uc3AyLmFsdF9ncmFwaDQgUkVOQU1FIFRPIGFsdF9ncmFw aDI7ICAtLSBPSworQUxURVIgUFJPUEVSVFkgR1JBUEggYWx0X2dyYXBoMiBTRVQgU0NIRU1BIGFs dF9uc3AyOyAgLS0gZmFpbGVkIChuYW1lIGNvbmZsaWN0KQorRVJST1I6ICByZWxhdGlvbiAiYWx0 X2dyYXBoMiIgYWxyZWFkeSBleGlzdHMgaW4gc2NoZW1hICJhbHRfbnNwMiIKK1NFVCBTRVNTSU9O IEFVVEhPUklaQVRJT04gcmVncmVzc19hbHRlcl9nZW5lcmljX3VzZXIyOworQ1JFQVRFIFBST1BF UlRZIEdSQVBIIGFsdF9ncmFwaDU7CitBTFRFUiBQUk9QRVJUWSBHUkFQSCBhbHRfZ3JhcGgzIFJF TkFNRSBUTyBhbHRfZ3JhcGg1OyAgLS0gZmFpbGVkIChub3Qgb3duZXIpCitFUlJPUjogIG11c3Qg YmUgb3duZXIgb2YgcHJvcGVydHkgZ3JhcGggYWx0X2dyYXBoMworQUxURVIgUFJPUEVSVFkgR1JB UEggYWx0X2dyYXBoNSBSRU5BTUUgVE8gYWx0X2dyYXBoNjsgIC0tIE9LCitBTFRFUiBQUk9QRVJU WSBHUkFQSCBhbHRfZ3JhcGgzIE9XTkVSIFRPIHJlZ3Jlc3NfYWx0ZXJfZ2VuZXJpY191c2VyMjsg IC0tIGZhaWxlZCAobm90IG93bmVyKQorRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHByb3BlcnR5 IGdyYXBoIGFsdF9ncmFwaDMKK0FMVEVSIFBST1BFUlRZIEdSQVBIIGFsdF9ncmFwaDYgT1dORVIg VE8gcmVncmVzc19hbHRlcl9nZW5lcmljX3VzZXIzOyAgLS0gZmFpbGVkIChubyByb2xlIG1lbWJl cnNoaXApCitFUlJPUjogIG11c3QgYmUgYWJsZSB0byBTRVQgUk9MRSAicmVncmVzc19hbHRlcl9n ZW5lcmljX3VzZXIzIgorQUxURVIgUFJPUEVSVFkgR1JBUEggYWx0X2dyYXBoMyBTRVQgU0NIRU1B IGFsdF9uc3AyOyAgLS0gZmFpbGVkIChub3Qgb3duZXIpCitFUlJPUjogIG11c3QgYmUgb3duZXIg b2YgcHJvcGVydHkgZ3JhcGggYWx0X2dyYXBoMworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9O OworU0VMRUNUIG5zcG5hbWUsIHJlbG5hbWUsIHJvbG5hbWUKKyAgRlJPTSBwZ19jbGFzcyBjLCBw Z19uYW1lc3BhY2UgbiwgcGdfYXV0aGlkIGEKKyAgV0hFUkUgYy5yZWxuYW1lc3BhY2UgPSBuLm9p ZCBBTkQgYy5yZWxvd25lciA9IGEub2lkCisgICAgQU5EIG4ubnNwbmFtZSBpbiAoJ2FsdF9uc3Ax JywgJ2FsdF9uc3AyJykKKyAgICBBTkQgYy5yZWxraW5kID0gJ2cnCisgIE9SREVSIEJZIG5zcG5h bWUsIHJlbG5hbWU7CisgbnNwbmFtZSAgfCAgcmVsbmFtZSAgIHwgICAgICAgICAgIHJvbG5hbWUg ICAgICAgICAgIAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBhbHRfbnNwMSB8IGFsdF9ncmFwaDIgfCByZWdyZXNzX2FsdGVyX2dlbmVyaWNf dXNlcjMKKyBhbHRfbnNwMSB8IGFsdF9ncmFwaDMgfCByZWdyZXNzX2FsdGVyX2dlbmVyaWNfdXNl cjEKKyBhbHRfbnNwMSB8IGFsdF9ncmFwaDYgfCByZWdyZXNzX2FsdGVyX2dlbmVyaWNfdXNlcjIK KyBhbHRfbnNwMiB8IGFsdF9ncmFwaDIgfCByZWdyZXNzX2FsdGVyX2dlbmVyaWNfdXNlcjEKKyg0 IHJvd3MpCisKIC0tCiAtLSBTdGF0aXN0aWNzCiAtLQpAQCAtNzEwLDcgKzc1Myw3IEBAIE5PVElD RTogIGRyb3AgY2FzY2FkZXMgdG8gc2VydmVyIGFsdF9mc2VydjMKIERST1AgTEFOR1VBR0UgYWx0 X2xhbmcyIENBU0NBREU7CiBEUk9QIExBTkdVQUdFIGFsdF9sYW5nMyBDQVNDQURFOwogRFJPUCBT Q0hFTUEgYWx0X25zcDEgQ0FTQ0FERTsKLU5PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMjggb3Ro ZXIgb2JqZWN0cworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byAzMSBvdGhlciBvYmplY3RzCiBE RVRBSUw6ICBkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGFsdF9mdW5jMyhpbnRlZ2VyKQogZHJv cCBjYXNjYWRlcyB0byBmdW5jdGlvbiBhbHRfYWdnMyhpbnRlZ2VyKQogZHJvcCBjYXNjYWRlcyB0 byBmdW5jdGlvbiBhbHRfZnVuYzQoaW50ZWdlcikKQEAgLTcyNyw2ICs3NzAsOSBAQCBkcm9wIGNh c2NhZGVzIHRvIG9wZXJhdG9yIGZhbWlseSBhbHRfb3BjMSBmb3IgYWNjZXNzIG1ldGhvZCBoYXNo CiBkcm9wIGNhc2NhZGVzIHRvIG9wZXJhdG9yIGZhbWlseSBhbHRfb3BjMiBmb3IgYWNjZXNzIG1l dGhvZCBoYXNoCiBkcm9wIGNhc2NhZGVzIHRvIG9wZXJhdG9yIGZhbWlseSBhbHRfb3BmNCBmb3Ig YWNjZXNzIG1ldGhvZCBoYXNoCiBkcm9wIGNhc2NhZGVzIHRvIG9wZXJhdG9yIGZhbWlseSBhbHRf b3BmMiBmb3IgYWNjZXNzIG1ldGhvZCBoYXNoCitkcm9wIGNhc2NhZGVzIHRvIHByb3BlcnR5IGdy YXBoIGFsdF9ncmFwaDIKK2Ryb3AgY2FzY2FkZXMgdG8gcHJvcGVydHkgZ3JhcGggYWx0X2dyYXBo MworZHJvcCBjYXNjYWRlcyB0byBwcm9wZXJ0eSBncmFwaCBhbHRfZ3JhcGg2CiBkcm9wIGNhc2Nh ZGVzIHRvIHRhYmxlIGFsdF9yZWdyZXNzXzEKIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgYWx0X3Jl Z3Jlc3NfMgogZHJvcCBjYXNjYWRlcyB0byB0ZXh0IHNlYXJjaCBkaWN0aW9uYXJ5IGFsdF90c19k aWN0MwpAQCAtNzQwLDEyICs3ODYsMTMgQEAgZHJvcCBjYXNjYWRlcyB0byB0ZXh0IHNlYXJjaCB0 ZW1wbGF0ZSBhbHRfdHNfdGVtcDIKIGRyb3AgY2FzY2FkZXMgdG8gdGV4dCBzZWFyY2ggcGFyc2Vy IGFsdF90c19wcnMzCiBkcm9wIGNhc2NhZGVzIHRvIHRleHQgc2VhcmNoIHBhcnNlciBhbHRfdHNf cHJzMgogRFJPUCBTQ0hFTUEgYWx0X25zcDIgQ0FTQ0FERTsKLU5PVElDRTogIGRyb3AgY2FzY2Fk ZXMgdG8gOSBvdGhlciBvYmplY3RzCitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIDEwIG90aGVy IG9iamVjdHMKIERFVEFJTDogIGRyb3AgY2FzY2FkZXMgdG8gZnVuY3Rpb24gYWx0X25zcDIuYWx0 X2Z1bmMyKGludGVnZXIpCiBkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGFsdF9uc3AyLmFsdF9h Z2cyKGludGVnZXIpCiBkcm9wIGNhc2NhZGVzIHRvIGNvbnZlcnNpb24gYWx0X25zcDIuYWx0X2Nv bnYyCiBkcm9wIGNhc2NhZGVzIHRvIG9wZXJhdG9yIGFsdF9uc3AyLkAtQChpbnRlZ2VyLGludGVn ZXIpCiBkcm9wIGNhc2NhZGVzIHRvIG9wZXJhdG9yIGZhbWlseSBhbHRfbnNwMi5hbHRfb3BmMiBm b3IgYWNjZXNzIG1ldGhvZCBoYXNoCitkcm9wIGNhc2NhZGVzIHRvIHByb3BlcnR5IGdyYXBoIGFs dF9uc3AyLmFsdF9ncmFwaDIKIGRyb3AgY2FzY2FkZXMgdG8gdGV4dCBzZWFyY2ggZGljdGlvbmFy eSBhbHRfbnNwMi5hbHRfdHNfZGljdDIKIGRyb3AgY2FzY2FkZXMgdG8gdGV4dCBzZWFyY2ggY29u ZmlndXJhdGlvbiBhbHRfbnNwMi5hbHRfdHNfY29uZjIKIGRyb3AgY2FzY2FkZXMgdG8gdGV4dCBz ZWFyY2ggdGVtcGxhdGUgYWx0X25zcDIuYWx0X3RzX3RlbXAyCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9wcm9wZXJ0eV9ncmFwaC5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV9wcm9wZXJ0eV9ncmFwaC5vdXQKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNDMzMTZmYmMwMgotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX3Byb3BlcnR5X2dyYXBoLm91dApAQCAtMCww ICsxLDQ5NiBAQAorQ1JFQVRFIFNDSEVNQSBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHM7CitH UkFOVCBVU0FHRSBPTiBTQ0hFTUEgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIFRPIFBVQkxJ QzsKK1NFVCBzZWFyY2hfcGF0aCA9IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0czsKK0NSRUFU RSBST0xFIHJlZ3Jlc3NfZ3JhcGhfdXNlcjE7CitDUkVBVEUgUk9MRSByZWdyZXNzX2dyYXBoX3Vz ZXIyOworQ1JFQVRFIFBST1BFUlRZIEdSQVBIIGcxOworQ09NTUVOVCBPTiBQUk9QRVJUWSBHUkFQ SCBnMSBJUyAnYSBncmFwaCc7CitDUkVBVEUgUFJPUEVSVFkgR1JBUEggZzE7ICAtLSBlcnJvcjog ZHVwbGljYXRlCitFUlJPUjogIHJlbGF0aW9uICJnMSIgYWxyZWFkeSBleGlzdHMKK0NSRUFURSBU QUJMRSB0MSAoYSBpbnQsIGIgdGV4dCk7CitDUkVBVEUgVEFCTEUgdDIgKGkgaW50IFBSSU1BUlkg S0VZLCBqIGludCwgayBpbnQpOworQ1JFQVRFIFRBQkxFIHQzICh4IGludCwgeSB0ZXh0LCB6IHRl eHQpOworQ1JFQVRFIFRBQkxFIGUxIChhIGludCwgaSBpbnQsIHQgdGV4dCwgUFJJTUFSWSBLRVkg KGEsIGkpKTsKK0NSRUFURSBUQUJMRSBlMiAoYSBpbnQsIHggaW50LCB0IHRleHQpOworQ1JFQVRF IFBST1BFUlRZIEdSQVBIIGcyCisgICAgVkVSVEVYIFRBQkxFUyAodDEgS0VZIChhKSwgdDIgREVG QVVMVCBMQUJFTCwgdDMgS0VZICh4KSBMQUJFTCB0M2wxIExBQkVMIHQzbDIpCisgICAgRURHRSBU QUJMRVMgKAorICAgICAgICBlMQorICAgICAgICAgICAgU09VUkNFIEtFWSAoYSkgUkVGRVJFTkNF UyB0MSAoYSkKKyAgICAgICAgICAgIERFU1RJTkFUSU9OIEtFWSAoaSkgUkVGRVJFTkNFUyB0MiAo aSksCisgICAgICAgIGUyIEtFWSAoYSwgeCkKKyAgICAgICAgICAgIFNPVVJDRSBLRVkgKGEpIFJF RkVSRU5DRVMgdDEgKGEpCisgICAgICAgICAgICBERVNUSU5BVElPTiBLRVkgKHgsIHQpIFJFRkVS RU5DRVMgdDMgKHgsIHkpCisgICAgKTsKKy0tIHRlc3QgZGVwZW5kZW5jaWVzL29iamVjdCBkZXNj cmlwdGlvbnMKK0RST1AgVEFCTEUgdDE7ICAtLSBmYWlsCitFUlJPUjogIGNhbm5vdCBkcm9wIHRh YmxlIHQxIGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHZlcnRl eCB0MSBvZiBwcm9wZXJ0eSBncmFwaCBnMiBkZXBlbmRzIG9uIHRhYmxlIHQxCitlZGdlIGUxIG9m IHByb3BlcnR5IGdyYXBoIGcyIGRlcGVuZHMgb24gdGFibGUgdDEKK2VkZ2UgZTIgb2YgcHJvcGVy dHkgZ3JhcGggZzIgZGVwZW5kcyBvbiB0YWJsZSB0MQorSElOVDogIFVzZSBEUk9QIC4uLiBDQVND QURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmplY3RzIHRvby4KK0FMVEVSIFRBQkxFIHQxIERS T1AgQ09MVU1OIGI7ICAtLSBub24ta2V5IGNvbHVtbjsgZmFpbAorRVJST1I6ICBjYW5ub3QgZHJv cCBjb2x1bW4gYiBvZiB0YWJsZSB0MSBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0 CitERVRBSUw6ICBwcm9wZXJ0eSBiIG9mIGxhYmVsIHQxIG9mIHZlcnRleCB0MSBvZiBwcm9wZXJ0 eSBncmFwaCBnMiBkZXBlbmRzIG9uIGNvbHVtbiBiIG9mIHRhYmxlIHQxCitISU5UOiAgVXNlIERS T1AgLi4uIENBU0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorQUxURVIg VEFCTEUgdDEgRFJPUCBDT0xVTU4gYTsgIC0tIGtleSBjb2x1bW47IGZhaWwKK0VSUk9SOiAgY2Fu bm90IGRyb3AgY29sdW1uIGEgb2YgdGFibGUgdDEgYmVjYXVzZSBvdGhlciBvYmplY3RzIGRlcGVu ZCBvbiBpdAorREVUQUlMOiAgdmVydGV4IHQxIG9mIHByb3BlcnR5IGdyYXBoIGcyIGRlcGVuZHMg b24gY29sdW1uIGEgb2YgdGFibGUgdDEKK2VkZ2UgZTEgb2YgcHJvcGVydHkgZ3JhcGggZzIgZGVw ZW5kcyBvbiBjb2x1bW4gYSBvZiB0YWJsZSB0MQorZWRnZSBlMiBvZiBwcm9wZXJ0eSBncmFwaCBn MiBkZXBlbmRzIG9uIGNvbHVtbiBhIG9mIHRhYmxlIHQxCitISU5UOiAgVXNlIERST1AgLi4uIENB U0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorLS0gbGlrZSBnMiBidXQg YXNzZW1ibGVkIHdpdGggQUxURVIKK0NSRUFURSBQUk9QRVJUWSBHUkFQSCBnMzsKK0FMVEVSIFBS T1BFUlRZIEdSQVBIIGczIEFERCBWRVJURVggVEFCTEVTICh0MSBLRVkgKGEpLCB0MiBERUZBVUxU IExBQkVMKTsKK0FMVEVSIFBST1BFUlRZIEdSQVBIIGczCisgICAgQUREIFZFUlRFWCBUQUJMRVMg KHQzIEtFWSAoeCkgTEFCRUwgdDNsMSkKKyAgICBBREQgRURHRSBUQUJMRVMgKAorICAgICAgICBl MSBTT1VSQ0UgS0VZIChhKSBSRUZFUkVOQ0VTIHQxIChhKSBERVNUSU5BVElPTiBLRVkgKGkpIFJF RkVSRU5DRVMgdDIgKGkpLAorICAgICAgICBlMiBLRVkgKGEsIHgpIFNPVVJDRSBLRVkgKGEpIFJF RkVSRU5DRVMgdDEgKGEpIERFU1RJTkFUSU9OIEtFWSAoeCwgdCkgUkVGRVJFTkNFUyB0MyAoeCwg eSkKKyAgICApOworQUxURVIgUFJPUEVSVFkgR1JBUEggZzMgQUxURVIgVkVSVEVYIFRBQkxFIHQz IEFERCBMQUJFTCB0M2wyIFBST1BFUlRJRVMgQUxMIENPTFVNTlMgQUREIExBQkVMIHQzbDMgUFJP UEVSVElFUyBBTEwgQ09MVU1OUzsKK0FMVEVSIFBST1BFUlRZIEdSQVBIIGczIEFMVEVSIFZFUlRF WCBUQUJMRSB0MyBEUk9QIExBQkVMIHQzbDN4OyAgLS0gZXJyb3IKK0VSUk9SOiAgcHJvcGVydHkg Z3JhcGggImczIiBlbGVtZW50ICJ0MyIgaGFzIG5vIGxhYmVsICJ0M2wzeCIKK0FMVEVSIFBST1BF UlRZIEdSQVBIIGczIEFMVEVSIFZFUlRFWCBUQUJMRSB0MyBEUk9QIExBQkVMIHQzbDM7CitBTFRF UiBQUk9QRVJUWSBHUkFQSCBnMyBEUk9QIFZFUlRFWCBUQUJMRVMgKHQyKTsgIC0tIGZhaWwgKFRP RE86IGR1YmlvdXMgZXJyb3IgbWVzc2FnZSkKK0VSUk9SOiAgY2Fubm90IGRyb3AgdmVydGV4IHQy IG9mIHByb3BlcnR5IGdyYXBoIGczIGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQK K0RFVEFJTDogIGVkZ2UgZTEgb2YgcHJvcGVydHkgZ3JhcGggZzMgZGVwZW5kcyBvbiB2ZXJ0ZXgg dDIgb2YgcHJvcGVydHkgZ3JhcGggZzMKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBk cm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCitBTFRFUiBQUk9QRVJUWSBHUkFQSCBnMyBE Uk9QIFZFUlRFWCBUQUJMRVMgKHQyKSBDQVNDQURFOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0 byBlZGdlIGUxIG9mIHByb3BlcnR5IGdyYXBoIGczCitBTFRFUiBQUk9QRVJUWSBHUkFQSCBnMyBE Uk9QIEVER0UgVEFCTEVTIChlMik7CitDUkVBVEUgUFJPUEVSVFkgR1JBUEggZzQKKyAgICBWRVJU RVggVEFCTEVTICgKKyAgICAgICAgdDEgS0VZIChhKSBOTyBQUk9QRVJUSUVTLAorICAgICAgICB0 MiBERUZBVUxUIExBQkVMIFBST1BFUlRJRVMgKGkgKyBqIEFTIGlfaiwgayksCisgICAgICAgIHQz IEtFWSAoeCkgTEFCRUwgdDNsMSBQUk9QRVJUSUVTICh4LCB5IEFTIHl5KSBMQUJFTCB0M2wyIFBS T1BFUlRJRVMgKHgsIHogQVMgenopCisgICAgKQorICAgIEVER0UgVEFCTEVTICgKKyAgICAgICAg ZTEKKyAgICAgICAgICAgIFNPVVJDRSBLRVkgKGEpIFJFRkVSRU5DRVMgdDEgKGEpCisgICAgICAg ICAgICBERVNUSU5BVElPTiBLRVkgKGkpIFJFRkVSRU5DRVMgdDIgKGkpCisgICAgICAgICAgICBQ Uk9QRVJUSUVTIEFMTCBDT0xVTU5TLAorICAgICAgICBlMiBLRVkgKGEsIHgpCisgICAgICAgICAg ICBTT1VSQ0UgS0VZIChhKSBSRUZFUkVOQ0VTIHQxIChhKQorICAgICAgICAgICAgREVTVElOQVRJ T04gS0VZICh4LCB0KSBSRUZFUkVOQ0VTIHQzICh4LCB5KQorICAgICAgICAgICAgUFJPUEVSVElF UyBBTEwgQ09MVU1OUworICAgICk7CitBTFRFUiBQUk9QRVJUWSBHUkFQSCBnNCBBTFRFUiBWRVJU RVggVEFCTEUgdDIgQUxURVIgTEFCRUwgdDIgQUREIFBST1BFUlRJRVMgKGsgKiAyIEFTIGtrKTsK K0FMVEVSIFBST1BFUlRZIEdSQVBIIGc0IEFMVEVSIFZFUlRFWCBUQUJMRSB0MiBBTFRFUiBMQUJF TCB0MiBEUk9QIFBST1BFUlRJRVMgKGspOworQ1JFQVRFIFRBQkxFIHQxMSAoYSBpbnQgUFJJTUFS WSBLRVkpOworQ1JFQVRFIFRBQkxFIHQxMiAoYiBpbnQgUFJJTUFSWSBLRVkpOworQ1JFQVRFIFRB QkxFIHQxMyAoCisgICAgYyBpbnQgUFJJTUFSWSBLRVksCisgICAgZCBpbnQgUkVGRVJFTkNFUyB0 MTEsCisgICAgZSBpbnQgUkVGRVJFTkNFUyB0MTIKKyk7CitDUkVBVEUgUFJPUEVSVFkgR1JBUEgg ZzUKKyAgICBWRVJURVggVEFCTEVTICh0MTEsIHQxMikKKyAgICBFREdFIFRBQkxFUyAodDEzIFNP VVJDRSB0MTEgREVTVElOQVRJT04gdDEyKTsKK1NFTEVDVCBwZ19nZXRfcHJvcGdyYXBoZGVmKCdn NSc6OnJlZ2NsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBnX2dldF9wcm9wZ3JhcGhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgUFJPUEVSVFkgR1JBUEggY3JlYXRlX3Byb3Bl cnR5X2dyYXBoX3Rlc3RzLmc1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgVkVSVEVYIFRBQkxFUyAoICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIHQxMSBLRVkgKGEpIFBST1BFUlRJ RVMgKGEpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIHQxMiBLRVkgKGIpIFBST1BF UlRJRVMgKGIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgRURHRSBUQUJMRVMgKCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIHQxMyBLRVkg KGMpIFNPVVJDRSBLRVkgKGUpIFJFRkVSRU5DRVMgdDExIChhKSBERVNUSU5BVElPTiBLRVkgKGUp IFJFRkVSRU5DRVMgdDEyIChiKSBQUk9QRVJUSUVTIChjLCBkLCBlKSsKKyAgICAgKQorKDEgcm93 KQorCistLSBlcnJvciBjYXNlcworQ1JFQVRFIFBST1BFUlRZIEdSQVBIIGd4IFZFUlRFWCBUQUJM RVMgKHh4LCB5eSk7CitFUlJPUjogIHJlbGF0aW9uICJ4eCIgZG9lcyBub3QgZXhpc3QKK0NSRUFU RSBQUk9QRVJUWSBHUkFQSCBneCBWRVJURVggVEFCTEVTICh0MSBLRVkgKGEpLCB0MiBLRVkgKGkp LCB0MSBLRVkgKGEpKTsKK0VSUk9SOiAgYWxpYXMgInQxIiB1c2VkIG1vcmUgdGhhbiBvbmNlIGFz IGVsZW1lbnQgdGFibGUKK0xJTkUgMTogLi4uWSBHUkFQSCBneCBWRVJURVggVEFCTEVTICh0MSBL RVkgKGEpLCB0MiBLRVkgKGkpLCB0MSBLRVkgKGEpLi4uCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorQ1JFQVRFIFBST1BFUlRZ IEdSQVBIIGd4CisgICAgVkVSVEVYIFRBQkxFUyAodDEgQVMgdHQgS0VZIChhKSwgdDIgS0VZIChp KSkKKyAgICBFREdFIFRBQkxFUyAoCisgICAgICAgIGUxIFNPVVJDRSB0MSBERVNUSU5BVElPTiB0 MgorICAgICk7CitFUlJPUjogIHNvdXJjZSB2ZXJ0ZXggInQxIiBvZiBlZGdlICJlMSIgZG9lcyBu b3QgZXhpc3QKK0xJTkUgNDogICAgICAgICBlMSBTT1VSQ0UgdDEgREVTVElOQVRJT04gdDIKKyAg ICAgICAgICAgICAgICBeCitDUkVBVEUgUFJPUEVSVFkgR1JBUEggZ3gKKyAgICBWRVJURVggVEFC TEVTICh0MSBLRVkgKGEpLCB0MiBLRVkgKGkpKQorICAgIEVER0UgVEFCTEVTICgKKyAgICAgICAg ZTEgU09VUkNFIHQxIERFU1RJTkFUSU9OIHR4CisgICAgKTsKK0VSUk9SOiAgZGVzdGluYXRpb24g dmVydGV4ICJ0eCIgb2YgZWRnZSAiZTEiIGRvZXMgbm90IGV4aXN0CitMSU5FIDQ6ICAgICAgICAg ZTEgU09VUkNFIHQxIERFU1RJTkFUSU9OIHR4CisgICAgICAgICAgICAgICAgXgorQ09NTUVOVCBP TiBQUk9QRVJUWSBHUkFQSCBneCBJUyAnbm90IGEgZ3JhcGgnOworRVJST1I6ICByZWxhdGlvbiAi Z3giIGRvZXMgbm90IGV4aXN0CitDUkVBVEUgUFJPUEVSVFkgR1JBUEggZ3gKKyAgICBWRVJURVgg VEFCTEVTICh0MSBLRVkgKGEpLCB0MikKKyAgICBFREdFIFRBQkxFUyAoCisgICAgICAgIGUxIFNP VVJDRSB0MSBERVNUSU5BVElPTiB0MiAgLS0gbm8gZm9yZWlnbiBrZXlzCisgICAgKTsKK0VSUk9S OiAgbm8gU09VUkNFIGtleSBzcGVjaWZpZWQgYW5kIG5vIHN1aXRhYmxlIGZvcmVpZ24ga2V5IGV4 aXN0cyBmb3IgZGVmaW5pdGlvbiBvZiBlZGdlICJlMSIKK0xJTkUgNDogICAgICAgICBlMSBTT1VS Q0UgdDEgREVTVElOQVRJT04gdDIgIC0tIG5vIGZvcmVpZ24ga2V5cworICAgICAgICAgICAgICAg IF4KK0NSRUFURSBQUk9QRVJUWSBHUkFQSCBneAorICAgIFZFUlRFWCBUQUJMRVMgKAorICAgICAg ICB0MSBLRVkgKGEpIExBQkVMIGZvbyBQUk9QRVJUSUVTIChhICsgMSBBUyBhYSkKKyAgICAgICAg ICAgICAgICAgICBMQUJFTCBiYXIgUFJPUEVSVElFUyAoMSArIGEgQVMgYWEpICAtLSBleHByZXNz aW9uIG1pc21hdGNoCisgICAgKTsKK0VSUk9SOiAgZWxlbWVudCAidDEiIHByb3BlcnR5ICJhYSIg ZXhwcmVzc2lvbiBtaXNtYXRjaDogKDEgKyBhKSB2cy4gKGEgKyAxKQorREVUQUlMOiAgSW4gYSBw cm9wZXJ0eSBncmFwaCBlbGVtZW50LCBhIHByb3BlcnR5IG9mIHRoZSBzYW1lIG5hbWUgaGFzIHRv IGhhdmUgdGhlIHNhbWUgZXhwcmVzc2lvbiBpbiBlYWNoIGxhYmVsLgorQUxURVIgUFJPUEVSVFkg R1JBUEggZzIKKyAgICBBREQgVkVSVEVYIFRBQkxFUyAoCisgICAgICAgIHQxIEFTIHQxeCBLRVkg KGEpIExBQkVMIGZvbyBQUk9QRVJUSUVTIChhICsgMSBBUyBhYSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgTEFCRUwgYmFyIFBST1BFUlRJRVMgKDEgKyBhIEFTIGFhKSAgLS0gZXhwcmVzc2lv biBtaXNtYXRjaAorICAgICk7CitFUlJPUjogIGVsZW1lbnQgInQxeCIgcHJvcGVydHkgImFhIiBl eHByZXNzaW9uIG1pc21hdGNoOiAoMSArIGEpIHZzLiAoYSArIDEpCitERVRBSUw6ICBJbiBhIHBy b3BlcnR5IGdyYXBoIGVsZW1lbnQsIGEgcHJvcGVydHkgb2YgdGhlIHNhbWUgbmFtZSBoYXMgdG8g aGF2ZSB0aGUgc2FtZSBleHByZXNzaW9uIGluIGVhY2ggbGFiZWwuCitDUkVBVEUgUFJPUEVSVFkg R1JBUEggZ3gKKyAgICBWRVJURVggVEFCTEVTICgKKyAgICAgICAgdDEgS0VZIChhKSBQUk9QRVJU SUVTIChiIEFTIHAxKSwKKyAgICAgICAgdDIgUFJPUEVSVElFUyAoayBBUyBwMSkgIC0tIHR5cGUg bWlzbWF0Y2gKKyAgICApOworRVJST1I6ICBwcm9wZXJ0eSAicDEiIGRhdGEgdHlwZSBtaXNtYXRj aDogdGV4dCB2cy4gaW50ZWdlcgorREVUQUlMOiAgSW4gYSBwcm9wZXJ0eSBncmFwaCwgYSBwcm9w ZXJ0eSBvZiB0aGUgc2FtZSBuYW1lIGhhcyB0byBoYXZlIHRoZSBzYW1lIGRhdGEgdHlwZSBpbiBl YWNoIGxhYmVsLgorQUxURVIgUFJPUEVSVFkgR1JBUEggZzIgQUxURVIgVkVSVEVYIFRBQkxFIHQx IEFERCBMQUJFTCBmb28gUFJPUEVSVElFUyAoYiBBUyBrKTsgIC0tIHR5cGUgbWlzbWF0Y2gKK0VS Uk9SOiAgcHJvcGVydHkgImsiIGRhdGEgdHlwZSBtaXNtYXRjaDogaW50ZWdlciB2cy4gdGV4dAor REVUQUlMOiAgSW4gYSBwcm9wZXJ0eSBncmFwaCwgYSBwcm9wZXJ0eSBvZiB0aGUgc2FtZSBuYW1l IGhhcyB0byBoYXZlIHRoZSBzYW1lIGRhdGEgdHlwZSBpbiBlYWNoIGxhYmVsLgorQ1JFQVRFIFBS T1BFUlRZIEdSQVBIIGd4CisgICAgVkVSVEVYIFRBQkxFUyAoCisgICAgICAgIHQxIEtFWSAoYSkg TEFCRUwgbDEgUFJPUEVSVElFUyAoYSwgYSBBUyBhYSksCisgICAgICAgIHQyIEtFWSAoaSkgTEFC RUwgbDEgUFJPUEVSVElFUyAoaSBBUyBhLCBqIEFTIGIsIGspICAtLSBtaXNtYXRjaGluZyBudW1i ZXIgb2YgcHJvcGVydGllcyBvbiBsYWJlbAorICAgICk7CitFUlJPUjogIG1pc21hdGNoaW5nIG51 bWJlciBvZiBwcm9wZXJ0aWVzIGluIGRlZmluaXRpb24gb2YgbGFiZWwgImwxIgorQ1JFQVRFIFBS T1BFUlRZIEdSQVBIIGd4CisgICAgVkVSVEVYIFRBQkxFUyAoCisgICAgICAgIHQxIEtFWSAoYSkg TEFCRUwgbDEgUFJPUEVSVElFUyAoYSwgYiksCisgICAgICAgIHQyIEtFWSAoaSkgTEFCRUwgbDEg UFJPUEVSVElFUyAoaSBBUyBhKSAgLS0gbWlzbWF0Y2hpbmcgbnVtYmVyIG9mIHByb3BlcnRpZXMg b24gbGFiZWwKKyAgICApOworRVJST1I6ICBtaXNtYXRjaGluZyBudW1iZXIgb2YgcHJvcGVydGll cyBpbiBkZWZpbml0aW9uIG9mIGxhYmVsICJsMSIKK0NSRUFURSBQUk9QRVJUWSBHUkFQSCBneAor ICAgIFZFUlRFWCBUQUJMRVMgKAorICAgICAgICB0MSBLRVkgKGEpIExBQkVMIGwxIFBST1BFUlRJ RVMgKGEsIGIpLAorICAgICAgICB0MiBLRVkgKGkpIExBQkVMIGwxIFBST1BFUlRJRVMgKGkgQVMg YSwgaiBBUyBqKSAgLS0gbWlzbWF0Y2hpbmcgcHJvcGVydHkgbmFtZXMgb24gbGFiZWwKKyAgICAp OworRVJST1I6ICBtaXNtYXRjaGluZyBwcm9wZXJ0aWVzIG5hbWVzIGluIGRlZmluaXRpb24gb2Yg bGFiZWwgImwxIgorQUxURVIgUFJPUEVSVFkgR1JBUEggZzQgQUxURVIgVkVSVEVYIFRBQkxFIHQx IEFERCBMQUJFTCB0M2wxIFBST1BFUlRJRVMgKGEgQVMgeCwgYiBBUyB5eSwgYiBBUyB6eik7ICAt LSBtaXNtYXRjaGluZyBudW1iZXIgb2YgcHJvcGVydGllcyBvbiBsYWJlbAorRVJST1I6ICBtaXNt YXRjaGluZyBudW1iZXIgb2YgcHJvcGVydGllcyBpbiBkZWZpbml0aW9uIG9mIGxhYmVsICJ0M2wx IgorQUxURVIgUFJPUEVSVFkgR1JBUEggZzQgQUxURVIgVkVSVEVYIFRBQkxFIHQxIEFERCBMQUJF TCB0M2wxIFBST1BFUlRJRVMgKGEgQVMgeCwgYiBBUyB6eik7ICAtLSBtaXNtYXRjaGluZyBwcm9w ZXJ0eSBuYW1lcyBvbiBsYWJlbAorRVJST1I6ICBtaXNtYXRjaGluZyBwcm9wZXJ0aWVzIG5hbWVz IGluIGRlZmluaXRpb24gb2YgbGFiZWwgInQzbDEiCitBTFRFUiBQUk9QRVJUWSBHUkFQSCBnNCBB TFRFUiBWRVJURVggVEFCTEUgdDEgQUREIExBQkVMIHQzbDEgUFJPUEVSVElFUyAoYSBBUyB4KTsg IC0tIG1pc21hdGNoaW5nIG51bWJlciBvZiBwcm9wZXJ0aWVzIG9uIGxhYmVsCitFUlJPUjogIG1p c21hdGNoaW5nIG51bWJlciBvZiBwcm9wZXJ0aWVzIGluIGRlZmluaXRpb24gb2YgbGFiZWwgInQz bDEiCitBTFRFUiBQUk9QRVJUWSBHUkFQSCBnMSBPV05FUiBUTyByZWdyZXNzX2dyYXBoX3VzZXIx OworU0VUIFJPTEUgcmVncmVzc19ncmFwaF91c2VyMTsKK0dSQU5UIFNFTEVDVCBPTiBQUk9QRVJU WSBHUkFQSCBnMSBUTyByZWdyZXNzX2dyYXBoX3VzZXIyOworR1JBTlQgVVBEQVRFIE9OIFBST1BF UlRZIEdSQVBIIGcxIFRPIHJlZ3Jlc3NfZ3JhcGhfdXNlcjI7ICAtLSBmYWlsCitFUlJPUjogIGlu dmFsaWQgcHJpdmlsZWdlIHR5cGUgVVBEQVRFIGZvciBwcm9wZXJ0eSBncmFwaAorUkVTRVQgUk9M RTsKKy0tIGluZm9ybWF0aW9uIHNjaGVtYQorU0VMRUNUICogRlJPTSBpbmZvcm1hdGlvbl9zY2hl bWEucHJvcGVydHlfZ3JhcGhzIE9SREVSIEJZIHByb3BlcnR5X2dyYXBoX25hbWU7CisgcHJvcGVy dHlfZ3JhcGhfY2F0YWxvZyB8ICAgIHByb3BlcnR5X2dyYXBoX3NjaGVtYSAgICB8IHByb3BlcnR5 X2dyYXBoX25hbWUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc2lvbiAgICAgICAgICAg ICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGcxCisgcmVncmVzc2lvbiAgICAgICAg ICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGcyCisgcmVncmVzc2lvbiAgICAg ICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGczCisgcmVncmVzc2lvbiAg ICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGc0CisgcmVncmVzc2lv biAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGc1CisoNSByb3dz KQorCitTRUxFQ1QgKiBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5wZ19lbGVtZW50X3RhYmxlcyBP UkRFUiBCWSBwcm9wZXJ0eV9ncmFwaF9uYW1lLCBlbGVtZW50X3RhYmxlX2FsaWFzOworIHByb3Bl cnR5X2dyYXBoX2NhdGFsb2cgfCAgICBwcm9wZXJ0eV9ncmFwaF9zY2hlbWEgICAgfCBwcm9wZXJ0 eV9ncmFwaF9uYW1lIHwgZWxlbWVudF90YWJsZV9hbGlhcyB8IGVsZW1lbnRfdGFibGVfa2luZCB8 IHRhYmxlX2NhdGFsb2cgfCAgICAgICAgdGFibGVfc2NoZW1hICAgICAgICAgfCB0YWJsZV9uYW1l IHwgZWxlbWVudF90YWJsZV9kZWZpbml0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhf dGVzdHMgfCBnMiAgICAgICAgICAgICAgICAgIHwgZTEgICAgICAgICAgICAgICAgICB8IEVER0Ug ICAgICAgICAgICAgICB8IHJlZ3Jlc3Npb24gICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVz dHMgfCBlMSAgICAgICAgIHwgCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9w ZXJ0eV9ncmFwaF90ZXN0cyB8IGcyICAgICAgICAgICAgICAgICAgfCBlMiAgICAgICAgICAgICAg ICAgIHwgRURHRSAgICAgICAgICAgICAgIHwgcmVncmVzc2lvbiAgICB8IGNyZWF0ZV9wcm9wZXJ0 eV9ncmFwaF90ZXN0cyB8IGUyICAgICAgICAgfCAKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwg Y3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzIgICAgICAgICAgICAgICAgICB8IHQxICAg ICAgICAgICAgICAgICAgfCBWRVJURVggICAgICAgICAgICAgfCByZWdyZXNzaW9uICAgIHwgY3Jl YXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgdDEgICAgICAgICB8IAorIHJlZ3Jlc3Npb24gICAg ICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMiAgICAgICAgICAgICAg ICAgIHwgdDIgICAgICAgICAgICAgICAgICB8IFZFUlRFWCAgICAgICAgICAgICB8IHJlZ3Jlc3Np b24gICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCB0MiAgICAgICAgIHwgCisgcmVn cmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGcyICAg ICAgICAgICAgICAgICAgfCB0MyAgICAgICAgICAgICAgICAgIHwgVkVSVEVYICAgICAgICAgICAg IHwgcmVncmVzc2lvbiAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IHQzICAgICAg ICAgfCAKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rl c3RzIHwgZzMgICAgICAgICAgICAgICAgICB8IHQxICAgICAgICAgICAgICAgICAgfCBWRVJURVgg ICAgICAgICAgICAgfCByZWdyZXNzaW9uICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3Rz IHwgdDEgICAgICAgICB8IAorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVy dHlfZ3JhcGhfdGVzdHMgfCBnMyAgICAgICAgICAgICAgICAgIHwgdDMgICAgICAgICAgICAgICAg ICB8IFZFUlRFWCAgICAgICAgICAgICB8IHJlZ3Jlc3Npb24gICAgfCBjcmVhdGVfcHJvcGVydHlf Z3JhcGhfdGVzdHMgfCB0MyAgICAgICAgIHwgCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNy ZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGc0ICAgICAgICAgICAgICAgICAgfCBlMSAgICAg ICAgICAgICAgICAgIHwgRURHRSAgICAgICAgICAgICAgIHwgcmVncmVzc2lvbiAgICB8IGNyZWF0 ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGUxICAgICAgICAgfCAKKyByZWdyZXNzaW9uICAgICAg ICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzQgICAgICAgICAgICAgICAg ICB8IGUyICAgICAgICAgICAgICAgICAgfCBFREdFICAgICAgICAgICAgICAgfCByZWdyZXNzaW9u ICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZTIgICAgICAgICB8IAorIHJlZ3Jl c3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnNCAgICAg ICAgICAgICAgICAgIHwgdDEgICAgICAgICAgICAgICAgICB8IFZFUlRFWCAgICAgICAgICAgICB8 IHJlZ3Jlc3Npb24gICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCB0MSAgICAgICAg IHwgCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0 cyB8IGc0ICAgICAgICAgICAgICAgICAgfCB0MiAgICAgICAgICAgICAgICAgIHwgVkVSVEVYICAg ICAgICAgICAgIHwgcmVncmVzc2lvbiAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8 IHQyICAgICAgICAgfCAKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5 X2dyYXBoX3Rlc3RzIHwgZzQgICAgICAgICAgICAgICAgICB8IHQzICAgICAgICAgICAgICAgICAg fCBWRVJURVggICAgICAgICAgICAgfCByZWdyZXNzaW9uICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dy YXBoX3Rlc3RzIHwgdDMgICAgICAgICB8IAorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVh dGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnNSAgICAgICAgICAgICAgICAgIHwgdDExICAgICAg ICAgICAgICAgICB8IFZFUlRFWCAgICAgICAgICAgICB8IHJlZ3Jlc3Npb24gICAgfCBjcmVhdGVf cHJvcGVydHlfZ3JhcGhfdGVzdHMgfCB0MTEgICAgICAgIHwgCisgcmVncmVzc2lvbiAgICAgICAg ICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGc1ICAgICAgICAgICAgICAgICAg fCB0MTIgICAgICAgICAgICAgICAgIHwgVkVSVEVYICAgICAgICAgICAgIHwgcmVncmVzc2lvbiAg ICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IHQxMiAgICAgICAgfCAKKyByZWdyZXNz aW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzUgICAgICAg ICAgICAgICAgICB8IHQxMyAgICAgICAgICAgICAgICAgfCBFREdFICAgICAgICAgICAgICAgfCBy ZWdyZXNzaW9uICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgdDEzICAgICAgICB8 IAorKDE1IHJvd3MpCisKK1NFTEVDVCAqIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnBnX2VsZW1l bnRfdGFibGVfa2V5X2NvbHVtbnMgT1JERVIgQlkgcHJvcGVydHlfZ3JhcGhfbmFtZSwgZWxlbWVu dF90YWJsZV9hbGlhcywgb3JkaW5hbF9wb3NpdGlvbjsKKyBwcm9wZXJ0eV9ncmFwaF9jYXRhbG9n IHwgICAgcHJvcGVydHlfZ3JhcGhfc2NoZW1hICAgIHwgcHJvcGVydHlfZ3JhcGhfbmFtZSB8IGVs ZW1lbnRfdGFibGVfYWxpYXMgfCBjb2x1bW5fbmFtZSB8IG9yZGluYWxfcG9zaXRpb24gCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlf Z3JhcGhfdGVzdHMgfCBnMiAgICAgICAgICAgICAgICAgIHwgZTEgICAgICAgICAgICAgICAgICB8 IGEgICAgICAgICAgIHwgICAgICAgICAgICAgICAgMQorIHJlZ3Jlc3Npb24gICAgICAgICAgICAg fCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMiAgICAgICAgICAgICAgICAgIHwgZTEg ICAgICAgICAgICAgICAgICB8IGkgICAgICAgICAgIHwgICAgICAgICAgICAgICAgMgorIHJlZ3Jl c3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMiAgICAg ICAgICAgICAgICAgIHwgZTIgICAgICAgICAgICAgICAgICB8IGEgICAgICAgICAgIHwgICAgICAg ICAgICAgICAgMQorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3Jh cGhfdGVzdHMgfCBnMiAgICAgICAgICAgICAgICAgIHwgZTIgICAgICAgICAgICAgICAgICB8IHgg ICAgICAgICAgIHwgICAgICAgICAgICAgICAgMgorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBj cmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMiAgICAgICAgICAgICAgICAgIHwgdDEgICAg ICAgICAgICAgICAgICB8IGEgICAgICAgICAgIHwgICAgICAgICAgICAgICAgMQorIHJlZ3Jlc3Np b24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMiAgICAgICAg ICAgICAgICAgIHwgdDIgICAgICAgICAgICAgICAgICB8IGkgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgMQorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhf dGVzdHMgfCBnMiAgICAgICAgICAgICAgICAgIHwgdDMgICAgICAgICAgICAgICAgICB8IHggICAg ICAgICAgIHwgICAgICAgICAgICAgICAgMQorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVh dGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMyAgICAgICAgICAgICAgICAgIHwgdDEgICAgICAg ICAgICAgICAgICB8IGEgICAgICAgICAgIHwgICAgICAgICAgICAgICAgMQorIHJlZ3Jlc3Npb24g ICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMyAgICAgICAgICAg ICAgICAgIHwgdDMgICAgICAgICAgICAgICAgICB8IHggICAgICAgICAgIHwgICAgICAgICAgICAg ICAgMQorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVz dHMgfCBnNCAgICAgICAgICAgICAgICAgIHwgZTEgICAgICAgICAgICAgICAgICB8IGEgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgMQorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVf cHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnNCAgICAgICAgICAgICAgICAgIHwgZTEgICAgICAgICAg ICAgICAgICB8IGkgICAgICAgICAgIHwgICAgICAgICAgICAgICAgMgorIHJlZ3Jlc3Npb24gICAg ICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnNCAgICAgICAgICAgICAg ICAgIHwgZTIgICAgICAgICAgICAgICAgICB8IGEgICAgICAgICAgIHwgICAgICAgICAgICAgICAg MQorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMg fCBnNCAgICAgICAgICAgICAgICAgIHwgZTIgICAgICAgICAgICAgICAgICB8IHggICAgICAgICAg IHwgICAgICAgICAgICAgICAgMgorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJv cGVydHlfZ3JhcGhfdGVzdHMgfCBnNCAgICAgICAgICAgICAgICAgIHwgdDEgICAgICAgICAgICAg ICAgICB8IGEgICAgICAgICAgIHwgICAgICAgICAgICAgICAgMQorIHJlZ3Jlc3Npb24gICAgICAg ICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnNCAgICAgICAgICAgICAgICAg IHwgdDIgICAgICAgICAgICAgICAgICB8IGkgICAgICAgICAgIHwgICAgICAgICAgICAgICAgMQor IHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBn NCAgICAgICAgICAgICAgICAgIHwgdDMgICAgICAgICAgICAgICAgICB8IHggICAgICAgICAgIHwg ICAgICAgICAgICAgICAgMQorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVy dHlfZ3JhcGhfdGVzdHMgfCBnNSAgICAgICAgICAgICAgICAgIHwgdDExICAgICAgICAgICAgICAg ICB8IGEgICAgICAgICAgIHwgICAgICAgICAgICAgICAgMQorIHJlZ3Jlc3Npb24gICAgICAgICAg ICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnNSAgICAgICAgICAgICAgICAgIHwg dDEyICAgICAgICAgICAgICAgICB8IGIgICAgICAgICAgIHwgICAgICAgICAgICAgICAgMQorIHJl Z3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnNSAg ICAgICAgICAgICAgICAgIHwgdDEzICAgICAgICAgICAgICAgICB8IGMgICAgICAgICAgIHwgICAg ICAgICAgICAgICAgMQorKDE5IHJvd3MpCisKK1NFTEVDVCAqIEZST00gaW5mb3JtYXRpb25fc2No ZW1hLnBnX2VkZ2VfdGFibGVfY29tcG9uZW50cyBPUkRFUiBCWSBwcm9wZXJ0eV9ncmFwaF9uYW1l LCBlZGdlX3RhYmxlX2FsaWFzLCBlZGdlX2VuZCBERVNDLCBvcmRpbmFsX3Bvc2l0aW9uOworIHBy b3BlcnR5X2dyYXBoX2NhdGFsb2cgfCAgICBwcm9wZXJ0eV9ncmFwaF9zY2hlbWEgICAgfCBwcm9w ZXJ0eV9ncmFwaF9uYW1lIHwgZWRnZV90YWJsZV9hbGlhcyB8IHZlcnRleF90YWJsZV9hbGlhcyB8 ICBlZGdlX2VuZCAgIHwgZWRnZV90YWJsZV9jb2x1bW5fbmFtZSB8IHZlcnRleF90YWJsZV9jb2x1 bW5fbmFtZSB8IG9yZGluYWxfcG9zaXRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0KKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3Rz IHwgZzIgICAgICAgICAgICAgICAgICB8IGUxICAgICAgICAgICAgICAgfCB0MSAgICAgICAgICAg ICAgICAgfCBTT1VSQ0UgICAgICB8IGEgICAgICAgICAgICAgICAgICAgICAgfCBhICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAxCisgcmVncmVzc2lvbiAgICAgICAgICAg ICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGcyICAgICAgICAgICAgICAgICAgfCBl MSAgICAgICAgICAgICAgIHwgdDIgICAgICAgICAgICAgICAgIHwgREVTVElOQVRJT04gfCBpICAg ICAgICAgICAgICAgICAgICAgIHwgaSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgMQorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhf dGVzdHMgfCBnMiAgICAgICAgICAgICAgICAgIHwgZTIgICAgICAgICAgICAgICB8IHQxICAgICAg ICAgICAgICAgICB8IFNPVVJDRSAgICAgIHwgYSAgICAgICAgICAgICAgICAgICAgICB8IGEgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIDEKKyByZWdyZXNzaW9uICAgICAg ICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzIgICAgICAgICAgICAgICAg ICB8IGUyICAgICAgICAgICAgICAgfCB0MyAgICAgICAgICAgICAgICAgfCBERVNUSU5BVElPTiB8 IHggICAgICAgICAgICAgICAgICAgICAgfCB4ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAxCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9n cmFwaF90ZXN0cyB8IGcyICAgICAgICAgICAgICAgICAgfCBlMiAgICAgICAgICAgICAgIHwgdDMg ICAgICAgICAgICAgICAgIHwgREVTVElOQVRJT04gfCB0ICAgICAgICAgICAgICAgICAgICAgIHwg eSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgMgorIHJlZ3Jlc3Npb24g ICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnNCAgICAgICAgICAg ICAgICAgIHwgZTEgICAgICAgICAgICAgICB8IHQxICAgICAgICAgICAgICAgICB8IFNPVVJDRSAg ICAgIHwgYSAgICAgICAgICAgICAgICAgICAgICB8IGEgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgIDEKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3Bl cnR5X2dyYXBoX3Rlc3RzIHwgZzQgICAgICAgICAgICAgICAgICB8IGUxICAgICAgICAgICAgICAg fCB0MiAgICAgICAgICAgICAgICAgfCBERVNUSU5BVElPTiB8IGkgICAgICAgICAgICAgICAgICAg ICAgfCBpICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAxCisgcmVncmVz c2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGc0ICAgICAg ICAgICAgICAgICAgfCBlMiAgICAgICAgICAgICAgIHwgdDEgICAgICAgICAgICAgICAgIHwgU09V UkNFICAgICAgfCBhICAgICAgICAgICAgICAgICAgICAgIHwgYSAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgMQorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVf cHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnNCAgICAgICAgICAgICAgICAgIHwgZTIgICAgICAgICAg ICAgICB8IHQzICAgICAgICAgICAgICAgICB8IERFU1RJTkFUSU9OIHwgeCAgICAgICAgICAgICAg ICAgICAgICB8IHggICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIDEKKyBy ZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzQg ICAgICAgICAgICAgICAgICB8IGUyICAgICAgICAgICAgICAgfCB0MyAgICAgICAgICAgICAgICAg fCBERVNUSU5BVElPTiB8IHQgICAgICAgICAgICAgICAgICAgICAgfCB5ICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAyCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNy ZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGc1ICAgICAgICAgICAgICAgICAgfCB0MTMgICAg ICAgICAgICAgIHwgdDExICAgICAgICAgICAgICAgIHwgU09VUkNFICAgICAgfCBlICAgICAgICAg ICAgICAgICAgICAgIHwgYSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg MQorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMg fCBnNSAgICAgICAgICAgICAgICAgIHwgdDEzICAgICAgICAgICAgICB8IHQxMiAgICAgICAgICAg ICAgICB8IERFU1RJTkFUSU9OIHwgZSAgICAgICAgICAgICAgICAgICAgICB8IGIgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIDEKKygxMiByb3dzKQorCitTRUxFQ1QgKiBG Uk9NIGluZm9ybWF0aW9uX3NjaGVtYS5wZ19lbGVtZW50X3RhYmxlX2xhYmVscyBPUkRFUiBCWSBw cm9wZXJ0eV9ncmFwaF9uYW1lLCBlbGVtZW50X3RhYmxlX2FsaWFzLCBsYWJlbF9uYW1lOworIHBy b3BlcnR5X2dyYXBoX2NhdGFsb2cgfCAgICBwcm9wZXJ0eV9ncmFwaF9zY2hlbWEgICAgfCBwcm9w ZXJ0eV9ncmFwaF9uYW1lIHwgZWxlbWVudF90YWJsZV9hbGlhcyB8IGxhYmVsX25hbWUgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyByZWdy ZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzIgICAg ICAgICAgICAgICAgICB8IGUxICAgICAgICAgICAgICAgICAgfCBlMQorIHJlZ3Jlc3Npb24gICAg ICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMiAgICAgICAgICAgICAg ICAgIHwgZTIgICAgICAgICAgICAgICAgICB8IGUyCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8 IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGcyICAgICAgICAgICAgICAgICAgfCB0MSAg ICAgICAgICAgICAgICAgIHwgdDEKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3By b3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzIgICAgICAgICAgICAgICAgICB8IHQyICAgICAgICAgICAg ICAgICAgfCB0MgorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3Jh cGhfdGVzdHMgfCBnMiAgICAgICAgICAgICAgICAgIHwgdDMgICAgICAgICAgICAgICAgICB8IHQz bDEKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3Rz IHwgZzIgICAgICAgICAgICAgICAgICB8IHQzICAgICAgICAgICAgICAgICAgfCB0M2wyCisgcmVn cmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGczICAg ICAgICAgICAgICAgICAgfCB0MSAgICAgICAgICAgICAgICAgIHwgdDEKKyByZWdyZXNzaW9uICAg ICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzMgICAgICAgICAgICAg ICAgICB8IHQzICAgICAgICAgICAgICAgICAgfCB0M2wxCisgcmVncmVzc2lvbiAgICAgICAgICAg ICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGczICAgICAgICAgICAgICAgICAgfCB0 MyAgICAgICAgICAgICAgICAgIHwgdDNsMgorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVh dGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnNCAgICAgICAgICAgICAgICAgIHwgZTEgICAgICAg ICAgICAgICAgICB8IGUxCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0 eV9ncmFwaF90ZXN0cyB8IGc0ICAgICAgICAgICAgICAgICAgfCBlMiAgICAgICAgICAgICAgICAg IHwgZTIKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rl c3RzIHwgZzQgICAgICAgICAgICAgICAgICB8IHQxICAgICAgICAgICAgICAgICAgfCB0MQorIHJl Z3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnNCAg ICAgICAgICAgICAgICAgIHwgdDIgICAgICAgICAgICAgICAgICB8IHQyCisgcmVncmVzc2lvbiAg ICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGc0ICAgICAgICAgICAg ICAgICAgfCB0MyAgICAgICAgICAgICAgICAgIHwgdDNsMQorIHJlZ3Jlc3Npb24gICAgICAgICAg ICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnNCAgICAgICAgICAgICAgICAgIHwg dDMgICAgICAgICAgICAgICAgICB8IHQzbDIKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3Jl YXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzUgICAgICAgICAgICAgICAgICB8IHQxMSAgICAg ICAgICAgICAgICAgfCB0MTEKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3Bl cnR5X2dyYXBoX3Rlc3RzIHwgZzUgICAgICAgICAgICAgICAgICB8IHQxMiAgICAgICAgICAgICAg ICAgfCB0MTIKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBo X3Rlc3RzIHwgZzUgICAgICAgICAgICAgICAgICB8IHQxMyAgICAgICAgICAgICAgICAgfCB0MTMK KygxOCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5wZ19lbGVtZW50 X3RhYmxlX3Byb3BlcnRpZXMgT1JERVIgQlkgcHJvcGVydHlfZ3JhcGhfbmFtZSwgZWxlbWVudF90 YWJsZV9hbGlhcywgcHJvcGVydHlfbmFtZTsKKyBwcm9wZXJ0eV9ncmFwaF9jYXRhbG9nIHwgICAg cHJvcGVydHlfZ3JhcGhfc2NoZW1hICAgIHwgcHJvcGVydHlfZ3JhcGhfbmFtZSB8IGVsZW1lbnRf dGFibGVfYWxpYXMgfCBwcm9wZXJ0eV9uYW1lIHwgcHJvcGVydHlfZXhwcmVzc2lvbiAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3Bl cnR5X2dyYXBoX3Rlc3RzIHwgZzIgICAgICAgICAgICAgICAgICB8IGUxICAgICAgICAgICAgICAg ICAgfCBhICAgICAgICAgICAgIHwgYQorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVf cHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMiAgICAgICAgICAgICAgICAgIHwgZTEgICAgICAgICAg ICAgICAgICB8IGkgICAgICAgICAgICAgfCBpCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNy ZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGcyICAgICAgICAgICAgICAgICAgfCBlMSAgICAg ICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICB8IHQKKyByZWdyZXNzaW9uICAgICAgICAgICAg IHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzIgICAgICAgICAgICAgICAgICB8IGUy ICAgICAgICAgICAgICAgICAgfCBhICAgICAgICAgICAgIHwgYQorIHJlZ3Jlc3Npb24gICAgICAg ICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMiAgICAgICAgICAgICAgICAg IHwgZTIgICAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgfCB0CisgcmVncmVzc2lvbiAg ICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGcyICAgICAgICAgICAg ICAgICAgfCBlMiAgICAgICAgICAgICAgICAgIHwgeCAgICAgICAgICAgICB8IHgKKyByZWdyZXNz aW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzIgICAgICAg ICAgICAgICAgICB8IHQxICAgICAgICAgICAgICAgICAgfCBhICAgICAgICAgICAgIHwgYQorIHJl Z3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMiAg ICAgICAgICAgICAgICAgIHwgdDEgICAgICAgICAgICAgICAgICB8IGIgICAgICAgICAgICAgfCBi CisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8 IGcyICAgICAgICAgICAgICAgICAgfCB0MiAgICAgICAgICAgICAgICAgIHwgaSAgICAgICAgICAg ICB8IGkKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rl c3RzIHwgZzIgICAgICAgICAgICAgICAgICB8IHQyICAgICAgICAgICAgICAgICAgfCBqICAgICAg ICAgICAgIHwgagorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3Jh cGhfdGVzdHMgfCBnMiAgICAgICAgICAgICAgICAgIHwgdDIgICAgICAgICAgICAgICAgICB8IGsg ICAgICAgICAgICAgfCBrCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0 eV9ncmFwaF90ZXN0cyB8IGcyICAgICAgICAgICAgICAgICAgfCB0MyAgICAgICAgICAgICAgICAg IHwgeCAgICAgICAgICAgICB8IHgKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3By b3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzIgICAgICAgICAgICAgICAgICB8IHQzICAgICAgICAgICAg ICAgICAgfCB5ICAgICAgICAgICAgIHwgeQorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVh dGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMiAgICAgICAgICAgICAgICAgIHwgdDMgICAgICAg ICAgICAgICAgICB8IHogICAgICAgICAgICAgfCB6CisgcmVncmVzc2lvbiAgICAgICAgICAgICB8 IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGczICAgICAgICAgICAgICAgICAgfCB0MSAg ICAgICAgICAgICAgICAgIHwgYSAgICAgICAgICAgICB8IGEKKyByZWdyZXNzaW9uICAgICAgICAg ICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzMgICAgICAgICAgICAgICAgICB8 IHQxICAgICAgICAgICAgICAgICAgfCBiICAgICAgICAgICAgIHwgYgorIHJlZ3Jlc3Npb24gICAg ICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMyAgICAgICAgICAgICAg ICAgIHwgdDMgICAgICAgICAgICAgICAgICB8IHggICAgICAgICAgICAgfCB4CisgcmVncmVzc2lv biAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGczICAgICAgICAg ICAgICAgICAgfCB0MyAgICAgICAgICAgICAgICAgIHwgeSAgICAgICAgICAgICB8IHkKKyByZWdy ZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzMgICAg ICAgICAgICAgICAgICB8IHQzICAgICAgICAgICAgICAgICAgfCB6ICAgICAgICAgICAgIHwgegor IHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBn NCAgICAgICAgICAgICAgICAgIHwgZTEgICAgICAgICAgICAgICAgICB8IGEgICAgICAgICAgICAg fCBhCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0 cyB8IGc0ICAgICAgICAgICAgICAgICAgfCBlMSAgICAgICAgICAgICAgICAgIHwgaSAgICAgICAg ICAgICB8IGkKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBo X3Rlc3RzIHwgZzQgICAgICAgICAgICAgICAgICB8IGUxICAgICAgICAgICAgICAgICAgfCB0ICAg ICAgICAgICAgIHwgdAorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlf Z3JhcGhfdGVzdHMgfCBnNCAgICAgICAgICAgICAgICAgIHwgZTIgICAgICAgICAgICAgICAgICB8 IGEgICAgICAgICAgICAgfCBhCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9w ZXJ0eV9ncmFwaF90ZXN0cyB8IGc0ICAgICAgICAgICAgICAgICAgfCBlMiAgICAgICAgICAgICAg ICAgIHwgdCAgICAgICAgICAgICB8IHQKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRl X3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzQgICAgICAgICAgICAgICAgICB8IGUyICAgICAgICAg ICAgICAgICAgfCB4ICAgICAgICAgICAgIHwgeAorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBj cmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnNCAgICAgICAgICAgICAgICAgIHwgdDIgICAg ICAgICAgICAgICAgICB8IGlfaiAgICAgICAgICAgfCAoaSArIGopCisgcmVncmVzc2lvbiAgICAg ICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGc0ICAgICAgICAgICAgICAg ICAgfCB0MiAgICAgICAgICAgICAgICAgIHwga2sgICAgICAgICAgICB8IChrICogMikKKyByZWdy ZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzQgICAg ICAgICAgICAgICAgICB8IHQzICAgICAgICAgICAgICAgICAgfCB4ICAgICAgICAgICAgIHwgeAor IHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBn NCAgICAgICAgICAgICAgICAgIHwgdDMgICAgICAgICAgICAgICAgICB8IHl5ICAgICAgICAgICAg fCB5CisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0 cyB8IGc0ICAgICAgICAgICAgICAgICAgfCB0MyAgICAgICAgICAgICAgICAgIHwgenogICAgICAg ICAgICB8IHoKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBo X3Rlc3RzIHwgZzUgICAgICAgICAgICAgICAgICB8IHQxMSAgICAgICAgICAgICAgICAgfCBhICAg ICAgICAgICAgIHwgYQorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlf Z3JhcGhfdGVzdHMgfCBnNSAgICAgICAgICAgICAgICAgIHwgdDEyICAgICAgICAgICAgICAgICB8 IGIgICAgICAgICAgICAgfCBiCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9w ZXJ0eV9ncmFwaF90ZXN0cyB8IGc1ICAgICAgICAgICAgICAgICAgfCB0MTMgICAgICAgICAgICAg ICAgIHwgYyAgICAgICAgICAgICB8IGMKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRl X3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzUgICAgICAgICAgICAgICAgICB8IHQxMyAgICAgICAg ICAgICAgICAgfCBkICAgICAgICAgICAgIHwgZAorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBj cmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnNSAgICAgICAgICAgICAgICAgIHwgdDEzICAg ICAgICAgICAgICAgICB8IGUgICAgICAgICAgICAgfCBlCisoMzUgcm93cykKKworU0VMRUNUICog RlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEucGdfbGFiZWxfcHJvcGVydGllcyBPUkRFUiBCWSBwcm9w ZXJ0eV9ncmFwaF9uYW1lLCBsYWJlbF9uYW1lLCBwcm9wZXJ0eV9uYW1lOworIHByb3BlcnR5X2dy YXBoX2NhdGFsb2cgfCAgICBwcm9wZXJ0eV9ncmFwaF9zY2hlbWEgICAgfCBwcm9wZXJ0eV9ncmFw aF9uYW1lIHwgbGFiZWxfbmFtZSB8IHByb3BlcnR5X25hbWUgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwg Y3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzIgICAgICAgICAgICAgICAgICB8IGUxICAg ICAgICAgfCBhCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFw aF90ZXN0cyB8IGcyICAgICAgICAgICAgICAgICAgfCBlMSAgICAgICAgIHwgaQorIHJlZ3Jlc3Np b24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMiAgICAgICAg ICAgICAgICAgIHwgZTEgICAgICAgICB8IHQKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3Jl YXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzIgICAgICAgICAgICAgICAgICB8IGUyICAgICAg ICAgfCBhCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90 ZXN0cyB8IGcyICAgICAgICAgICAgICAgICAgfCBlMiAgICAgICAgIHwgdAorIHJlZ3Jlc3Npb24g ICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMiAgICAgICAgICAg ICAgICAgIHwgZTIgICAgICAgICB8IHgKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRl X3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzIgICAgICAgICAgICAgICAgICB8IHQxICAgICAgICAg fCBhCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0 cyB8IGcyICAgICAgICAgICAgICAgICAgfCB0MSAgICAgICAgIHwgYgorIHJlZ3Jlc3Npb24gICAg ICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMiAgICAgICAgICAgICAg ICAgIHwgdDIgICAgICAgICB8IGkKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3By b3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzIgICAgICAgICAgICAgICAgICB8IHQyICAgICAgICAgfCBq CisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8 IGcyICAgICAgICAgICAgICAgICAgfCB0MiAgICAgICAgIHwgaworIHJlZ3Jlc3Npb24gICAgICAg ICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMiAgICAgICAgICAgICAgICAg IHwgdDNsMSAgICAgICB8IHgKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3Bl cnR5X2dyYXBoX3Rlc3RzIHwgZzIgICAgICAgICAgICAgICAgICB8IHQzbDEgICAgICAgfCB5Cisg cmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGcy ICAgICAgICAgICAgICAgICAgfCB0M2wxICAgICAgIHwgegorIHJlZ3Jlc3Npb24gICAgICAgICAg ICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMiAgICAgICAgICAgICAgICAgIHwg dDNsMiAgICAgICB8IHgKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5 X2dyYXBoX3Rlc3RzIHwgZzIgICAgICAgICAgICAgICAgICB8IHQzbDIgICAgICAgfCB5CisgcmVn cmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGcyICAg ICAgICAgICAgICAgICAgfCB0M2wyICAgICAgIHwgegorIHJlZ3Jlc3Npb24gICAgICAgICAgICAg fCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMyAgICAgICAgICAgICAgICAgIHwgdDEg ICAgICAgICB8IGEKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dy YXBoX3Rlc3RzIHwgZzMgICAgICAgICAgICAgICAgICB8IHQxICAgICAgICAgfCBiCisgcmVncmVz c2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGczICAgICAg ICAgICAgICAgICAgfCB0M2wxICAgICAgIHwgeAorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBj cmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMyAgICAgICAgICAgICAgICAgIHwgdDNsMSAg ICAgICB8IHkKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBo X3Rlc3RzIHwgZzMgICAgICAgICAgICAgICAgICB8IHQzbDEgICAgICAgfCB6CisgcmVncmVzc2lv biAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGczICAgICAgICAg ICAgICAgICAgfCB0M2wyICAgICAgIHwgeAorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVh dGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMyAgICAgICAgICAgICAgICAgIHwgdDNsMiAgICAg ICB8IHkKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rl c3RzIHwgZzMgICAgICAgICAgICAgICAgICB8IHQzbDIgICAgICAgfCB6CisgcmVncmVzc2lvbiAg ICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGc0ICAgICAgICAgICAg ICAgICAgfCBlMSAgICAgICAgIHwgYQorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVf cHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnNCAgICAgICAgICAgICAgICAgIHwgZTEgICAgICAgICB8 IGkKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3Rz IHwgZzQgICAgICAgICAgICAgICAgICB8IGUxICAgICAgICAgfCB0CisgcmVncmVzc2lvbiAgICAg ICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGc0ICAgICAgICAgICAgICAg ICAgfCBlMiAgICAgICAgIHwgYQorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJv cGVydHlfZ3JhcGhfdGVzdHMgfCBnNCAgICAgICAgICAgICAgICAgIHwgZTIgICAgICAgICB8IHQK KyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwg ZzQgICAgICAgICAgICAgICAgICB8IGUyICAgICAgICAgfCB4CisgcmVncmVzc2lvbiAgICAgICAg ICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGc0ICAgICAgICAgICAgICAgICAg fCB0MiAgICAgICAgIHwgaV9qCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9w ZXJ0eV9ncmFwaF90ZXN0cyB8IGc0ICAgICAgICAgICAgICAgICAgfCB0MiAgICAgICAgIHwga2sK KyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwg ZzQgICAgICAgICAgICAgICAgICB8IHQzbDEgICAgICAgfCB4CisgcmVncmVzc2lvbiAgICAgICAg ICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGc0ICAgICAgICAgICAgICAgICAg fCB0M2wxICAgICAgIHwgeXkKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3Bl cnR5X2dyYXBoX3Rlc3RzIHwgZzQgICAgICAgICAgICAgICAgICB8IHQzbDIgICAgICAgfCB4Cisg cmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGc0 ICAgICAgICAgICAgICAgICAgfCB0M2wyICAgICAgIHwgenoKKyByZWdyZXNzaW9uICAgICAgICAg ICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzUgICAgICAgICAgICAgICAgICB8 IHQxMSAgICAgICAgfCBhCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0 eV9ncmFwaF90ZXN0cyB8IGc1ICAgICAgICAgICAgICAgICAgfCB0MTIgICAgICAgIHwgYgorIHJl Z3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnNSAg ICAgICAgICAgICAgICAgIHwgdDEzICAgICAgICB8IGMKKyByZWdyZXNzaW9uICAgICAgICAgICAg IHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzUgICAgICAgICAgICAgICAgICB8IHQx MyAgICAgICAgfCBkCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9n cmFwaF90ZXN0cyB8IGc1ICAgICAgICAgICAgICAgICAgfCB0MTMgICAgICAgIHwgZQorKDQyIHJv d3MpCisKK1NFTEVDVCAqIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnBnX2xhYmVscyBPUkRFUiBC WSBwcm9wZXJ0eV9ncmFwaF9uYW1lLCBsYWJlbF9uYW1lOworIHByb3BlcnR5X2dyYXBoX2NhdGFs b2cgfCAgICBwcm9wZXJ0eV9ncmFwaF9zY2hlbWEgICAgfCBwcm9wZXJ0eV9ncmFwaF9uYW1lIHwg bGFiZWxfbmFtZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgcmVncmVzc2lv biAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGcyICAgICAgICAg ICAgICAgICAgfCBlMQorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlf Z3JhcGhfdGVzdHMgfCBnMiAgICAgICAgICAgICAgICAgIHwgZTIKKyByZWdyZXNzaW9uICAgICAg ICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzIgICAgICAgICAgICAgICAg ICB8IHQxCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90 ZXN0cyB8IGcyICAgICAgICAgICAgICAgICAgfCB0MgorIHJlZ3Jlc3Npb24gICAgICAgICAgICAg fCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMiAgICAgICAgICAgICAgICAgIHwgdDNs MQorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMg fCBnMiAgICAgICAgICAgICAgICAgIHwgdDNsMgorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBj cmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMyAgICAgICAgICAgICAgICAgIHwgdDEKKyBy ZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzMg ICAgICAgICAgICAgICAgICB8IHQzbDEKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRl X3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzMgICAgICAgICAgICAgICAgICB8IHQzbDIKKyByZWdy ZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzQgICAg ICAgICAgICAgICAgICB8IGUxCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9w ZXJ0eV9ncmFwaF90ZXN0cyB8IGc0ICAgICAgICAgICAgICAgICAgfCBlMgorIHJlZ3Jlc3Npb24g ICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnNCAgICAgICAgICAg ICAgICAgIHwgdDEKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dy YXBoX3Rlc3RzIHwgZzQgICAgICAgICAgICAgICAgICB8IHQyCisgcmVncmVzc2lvbiAgICAgICAg ICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGc0ICAgICAgICAgICAgICAgICAg fCB0M2wxCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90 ZXN0cyB8IGc0ICAgICAgICAgICAgICAgICAgfCB0M2wyCisgcmVncmVzc2lvbiAgICAgICAgICAg ICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGc1ICAgICAgICAgICAgICAgICAgfCB0 MTEKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3Rz IHwgZzUgICAgICAgICAgICAgICAgICB8IHQxMgorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBj cmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnNSAgICAgICAgICAgICAgICAgIHwgdDEzCiso MTggcm93cykKKworU0VMRUNUICogRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEucGdfcHJvcGVydHlf ZGF0YV90eXBlcyBPUkRFUiBCWSBwcm9wZXJ0eV9ncmFwaF9uYW1lLCBwcm9wZXJ0eV9uYW1lOwor IHByb3BlcnR5X2dyYXBoX2NhdGFsb2cgfCAgICBwcm9wZXJ0eV9ncmFwaF9zY2hlbWEgICAgfCBw cm9wZXJ0eV9ncmFwaF9uYW1lIHwgcHJvcGVydHlfbmFtZSB8IGRhdGFfdHlwZSB8IGNoYXJhY3Rl cl9tYXhpbXVtX2xlbmd0aCB8IGNoYXJhY3Rlcl9vY3RldF9sZW5ndGggfCBjaGFyYWN0ZXJfc2V0 X2NhdGFsb2cgfCBjaGFyYWN0ZXJfc2V0X3NjaGVtYSB8IGNoYXJhY3Rlcl9zZXRfbmFtZSB8IGNv bGxhdGlvbl9jYXRhbG9nIHwgY29sbGF0aW9uX3NjaGVtYSB8IGNvbGxhdGlvbl9uYW1lIHwgbnVt ZXJpY19wcmVjaXNpb24gfCBudW1lcmljX3ByZWNpc2lvbl9yYWRpeCB8IG51bWVyaWNfc2NhbGUg fCBkYXRldGltZV9wcmVjaXNpb24gfCBpbnRlcnZhbF90eXBlIHwgaW50ZXJ2YWxfcHJlY2lzaW9u IHwgdXNlcl9kZWZpbmVkX3R5cGVfY2F0YWxvZyB8IHVzZXJfZGVmaW5lZF90eXBlX3NjaGVtYSB8 IHVzZXJfZGVmaW5lZF90eXBlX25hbWUgfCBzY29wZV9jYXRhbG9nIHwgc2NvcGVfc2NoZW1hIHwg c2NvcGVfbmFtZSB8IG1heGltdW1fY2FyZGluYWxpdHkgfCBkdGRfaWRlbnRpZmllciAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc2lv biAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGcyICAgICAgICAg ICAgICAgICAgfCBhICAgICAgICAgICAgIHwgaW50ZWdlciAgIHwgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCByZWdyZXNz aW9uICAgICAgICAgICAgICAgIHwgcGdfY2F0YWxvZyAgICAgICAgICAgICAgIHwgaW50NCAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgICAgICB8IGEKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3Jl YXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzIgICAgICAgICAgICAgICAgICB8IGIgICAgICAg ICAgICAgfCB0ZXh0ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8IHJlZ3Jlc3Npb24gICAgICAgICAgICAgICAg fCBwZ19jYXRhbG9nICAgICAgICAgICAgICAgfCB0ZXh0ICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgIHwgYgorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhf dGVzdHMgfCBnMiAgICAgICAgICAgICAgICAgIHwgaSAgICAgICAgICAgICB8IGludGVnZXIgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgIHwgcmVncmVzc2lvbiAgICAgICAgICAgICAgICB8IHBnX2NhdGFsb2cgICAgICAg ICAgICAgICB8IGludDQgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCBpCisgcmVncmVzc2lv biAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGcyICAgICAgICAg ICAgICAgICAgfCBqICAgICAgICAgICAgIHwgaW50ZWdlciAgIHwgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCByZWdyZXNz aW9uICAgICAgICAgICAgICAgIHwgcGdfY2F0YWxvZyAgICAgICAgICAgICAgIHwgaW50NCAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgICAgICB8IGoKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3Jl YXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzIgICAgICAgICAgICAgICAgICB8IGsgICAgICAg ICAgICAgfCBpbnRlZ2VyICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8IHJlZ3Jlc3Npb24gICAgICAgICAgICAgICAg fCBwZ19jYXRhbG9nICAgICAgICAgICAgICAgfCBpbnQ0ICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgIHwgaworIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhf dGVzdHMgfCBnMiAgICAgICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICB8IHRleHQgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgIHwgcmVncmVzc2lvbiAgICAgICAgICAgICAgICB8IHBnX2NhdGFsb2cgICAgICAg ICAgICAgICB8IHRleHQgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCB0CisgcmVncmVzc2lv biAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGcyICAgICAgICAg ICAgICAgICAgfCB4ICAgICAgICAgICAgIHwgaW50ZWdlciAgIHwgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCByZWdyZXNz aW9uICAgICAgICAgICAgICAgIHwgcGdfY2F0YWxvZyAgICAgICAgICAgICAgIHwgaW50NCAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgICAgICB8IHgKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3Jl YXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzIgICAgICAgICAgICAgICAgICB8IHkgICAgICAg ICAgICAgfCB0ZXh0ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8IHJlZ3Jlc3Npb24gICAgICAgICAgICAgICAg fCBwZ19jYXRhbG9nICAgICAgICAgICAgICAgfCB0ZXh0ICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgIHwgeQorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhf dGVzdHMgfCBnMiAgICAgICAgICAgICAgICAgIHwgeiAgICAgICAgICAgICB8IHRleHQgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgIHwgcmVncmVzc2lvbiAgICAgICAgICAgICAgICB8IHBnX2NhdGFsb2cgICAgICAg ICAgICAgICB8IHRleHQgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCB6CisgcmVncmVzc2lv biAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGczICAgICAgICAg ICAgICAgICAgfCBhICAgICAgICAgICAgIHwgaW50ZWdlciAgIHwgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCByZWdyZXNz aW9uICAgICAgICAgICAgICAgIHwgcGdfY2F0YWxvZyAgICAgICAgICAgICAgIHwgaW50NCAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgICAgICB8IGEKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3Jl YXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzMgICAgICAgICAgICAgICAgICB8IGIgICAgICAg ICAgICAgfCB0ZXh0ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8IHJlZ3Jlc3Npb24gICAgICAgICAgICAgICAg fCBwZ19jYXRhbG9nICAgICAgICAgICAgICAgfCB0ZXh0ICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgIHwgYgorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhf dGVzdHMgfCBnMyAgICAgICAgICAgICAgICAgIHwgeCAgICAgICAgICAgICB8IGludGVnZXIgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgIHwgcmVncmVzc2lvbiAgICAgICAgICAgICAgICB8IHBnX2NhdGFsb2cgICAgICAg ICAgICAgICB8IGludDQgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCB4CisgcmVncmVzc2lv biAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGczICAgICAgICAg ICAgICAgICAgfCB5ICAgICAgICAgICAgIHwgdGV4dCAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCByZWdyZXNz aW9uICAgICAgICAgICAgICAgIHwgcGdfY2F0YWxvZyAgICAgICAgICAgICAgIHwgdGV4dCAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgICAgICB8IHkKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3Jl YXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzMgICAgICAgICAgICAgICAgICB8IHogICAgICAg ICAgICAgfCB0ZXh0ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8IHJlZ3Jlc3Npb24gICAgICAgICAgICAgICAg fCBwZ19jYXRhbG9nICAgICAgICAgICAgICAgfCB0ZXh0ICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgIHwgegorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhf dGVzdHMgfCBnNCAgICAgICAgICAgICAgICAgIHwgYSAgICAgICAgICAgICB8IGludGVnZXIgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgIHwgcmVncmVzc2lvbiAgICAgICAgICAgICAgICB8IHBnX2NhdGFsb2cgICAgICAg ICAgICAgICB8IGludDQgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCBhCisgcmVncmVzc2lv biAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGc0ICAgICAgICAg ICAgICAgICAgfCBpICAgICAgICAgICAgIHwgaW50ZWdlciAgIHwgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCByZWdyZXNz aW9uICAgICAgICAgICAgICAgIHwgcGdfY2F0YWxvZyAgICAgICAgICAgICAgIHwgaW50NCAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgICAgICB8IGkKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwgY3Jl YXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzQgICAgICAgICAgICAgICAgICB8IGlfaiAgICAg ICAgICAgfCBpbnRlZ2VyICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8IHJlZ3Jlc3Npb24gICAgICAgICAgICAgICAg fCBwZ19jYXRhbG9nICAgICAgICAgICAgICAgfCBpbnQ0ICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgIHwgaV9qCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFw aF90ZXN0cyB8IGc0ICAgICAgICAgICAgICAgICAgfCBrayAgICAgICAgICAgIHwgaW50ZWdlciAg IHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgfCByZWdyZXNzaW9uICAgICAgICAgICAgICAgIHwgcGdfY2F0YWxvZyAgICAg ICAgICAgICAgIHwgaW50NCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8IGtrCisgcmVncmVz c2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyB8IGc0ICAgICAg ICAgICAgICAgICAgfCB0ICAgICAgICAgICAgIHwgdGV4dCAgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCByZWdy ZXNzaW9uICAgICAgICAgICAgICAgIHwgcGdfY2F0YWxvZyAgICAgICAgICAgICAgIHwgdGV4dCAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICB8IHQKKyByZWdyZXNzaW9uICAgICAgICAgICAgIHwg Y3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzQgICAgICAgICAgICAgICAgICB8IHggICAg ICAgICAgICAgfCBpbnRlZ2VyICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8IHJlZ3Jlc3Npb24gICAgICAgICAgICAg ICAgfCBwZ19jYXRhbG9nICAgICAgICAgICAgICAgfCBpbnQ0ICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgIHwgeAorIHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3Jh cGhfdGVzdHMgfCBnNCAgICAgICAgICAgICAgICAgIHwgeXkgICAgICAgICAgICB8IHRleHQgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgICAgICAgIHwgcmVncmVzc2lvbiAgICAgICAgICAgICAgICB8IHBnX2NhdGFsb2cgICAg ICAgICAgICAgICB8IHRleHQgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCB5eQorIHJlZ3Jl c3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnNCAgICAg ICAgICAgICAgICAgIHwgenogICAgICAgICAgICB8IHRleHQgICAgICB8ICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgcmVn cmVzc2lvbiAgICAgICAgICAgICAgICB8IHBnX2NhdGFsb2cgICAgICAgICAgICAgICB8IHRleHQg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCB6egorIHJlZ3Jlc3Npb24gICAgICAgICAgICAg fCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnNSAgICAgICAgICAgICAgICAgIHwgYSAg ICAgICAgICAgICB8IGludGVnZXIgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgcmVncmVzc2lvbiAgICAgICAgICAg ICAgICB8IHBnX2NhdGFsb2cgICAgICAgICAgICAgICB8IGludDQgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgICAgICAgfCBhCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9n cmFwaF90ZXN0cyB8IGc1ICAgICAgICAgICAgICAgICAgfCBiICAgICAgICAgICAgIHwgaW50ZWdl ciAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgfCByZWdyZXNzaW9uICAgICAgICAgICAgICAgIHwgcGdfY2F0YWxvZyAg ICAgICAgICAgICAgIHwgaW50NCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8IGIKKyByZWdy ZXNzaW9uICAgICAgICAgICAgIHwgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzUgICAg ICAgICAgICAgICAgICB8IGMgICAgICAgICAgICAgfCBpbnRlZ2VyICAgfCAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8IHJl Z3Jlc3Npb24gICAgICAgICAgICAgICAgfCBwZ19jYXRhbG9nICAgICAgICAgICAgICAgfCBpbnQ0 ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYworIHJlZ3Jlc3Npb24gICAgICAgICAgICAg fCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnNSAgICAgICAgICAgICAgICAgIHwgZCAg ICAgICAgICAgICB8IGludGVnZXIgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgcmVncmVzc2lvbiAgICAgICAgICAg ICAgICB8IHBnX2NhdGFsb2cgICAgICAgICAgICAgICB8IGludDQgICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgICAgICAgfCBkCisgcmVncmVzc2lvbiAgICAgICAgICAgICB8IGNyZWF0ZV9wcm9wZXJ0eV9n cmFwaF90ZXN0cyB8IGc1ICAgICAgICAgICAgICAgICAgfCBlICAgICAgICAgICAgIHwgaW50ZWdl ciAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgfCByZWdyZXNzaW9uICAgICAgICAgICAgICAgIHwgcGdfY2F0YWxvZyAg ICAgICAgICAgICAgIHwgaW50NCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8IGUKKygyNyBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5wZ19wcm9wZXJ0eV9ncmFw aF9wcml2aWxlZ2VzIFdIRVJFIGdyYW50ZWUgTElLRSAncmVncmVzcyUnIE9SREVSIEJZIHByb3Bl cnR5X2dyYXBoX25hbWU7CisgICAgICAgZ3JhbnRvciAgICAgICB8ICAgICAgIGdyYW50ZWUgICAg ICAgfCBwcm9wZXJ0eV9ncmFwaF9jYXRhbG9nIHwgICAgcHJvcGVydHlfZ3JhcGhfc2NoZW1hICAg IHwgcHJvcGVydHlfZ3JhcGhfbmFtZSB8IHByaXZpbGVnZV90eXBlIHwgaXNfZ3JhbnRhYmxlIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX2dyYXBoX3Vz ZXIxIHwgcmVncmVzc19ncmFwaF91c2VyMSB8IHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVh dGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBnMSAgICAgICAgICAgICAgICAgIHwgU0VMRUNUICAg ICAgICAgfCBZRVMKKyByZWdyZXNzX2dyYXBoX3VzZXIxIHwgcmVncmVzc19ncmFwaF91c2VyMiB8 IHJlZ3Jlc3Npb24gICAgICAgICAgICAgfCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMgfCBn MSAgICAgICAgICAgICAgICAgIHwgU0VMRUNUICAgICAgICAgfCBOTworKDIgcm93cykKKworXGFc dAorU0VMRUNUIHBnX2dldF9wcm9wZ3JhcGhkZWYoJ2cyJzo6cmVnY2xhc3MpOworQ1JFQVRFIFBS T1BFUlRZIEdSQVBIIGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cy5nMgorICAgIFZFUlRFWCBU QUJMRVMgKAorICAgICAgICB0MSBLRVkgKGEpIFBST1BFUlRJRVMgKGEsIGIpLAorICAgICAgICB0 MiBLRVkgKGkpIFBST1BFUlRJRVMgKGksIGosIGspLAorICAgICAgICB0MyBLRVkgKHgpIExBQkVM IHQzbDEgUFJPUEVSVElFUyAoeCwgeSwgeikgTEFCRUwgdDNsMiBQUk9QRVJUSUVTICh4LCB5LCB6 KQorICAgICkKKyAgICBFREdFIFRBQkxFUyAoCisgICAgICAgIGUxIEtFWSAoYSwgaSkgU09VUkNF IEtFWSAoYSkgUkVGRVJFTkNFUyB0MSAoYSkgREVTVElOQVRJT04gS0VZIChpKSBSRUZFUkVOQ0VT IHQyIChpKSBQUk9QRVJUSUVTIChhLCBpLCB0KSwKKyAgICAgICAgZTIgS0VZIChhLCB4KSBTT1VS Q0UgS0VZIChhKSBSRUZFUkVOQ0VTIHQxIChhKSBERVNUSU5BVElPTiBLRVkgKHgsIHQpIFJFRkVS RU5DRVMgdDMgKHgsIHkpIFBST1BFUlRJRVMgKGEsIHQsIHgpCisgICAgKQorU0VMRUNUIHBnX2dl dF9wcm9wZ3JhcGhkZWYoJ2czJzo6cmVnY2xhc3MpOworQ1JFQVRFIFBST1BFUlRZIEdSQVBIIGNy ZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cy5nMworICAgIFZFUlRFWCBUQUJMRVMgKAorICAgICAg ICB0MSBLRVkgKGEpIFBST1BFUlRJRVMgKGEsIGIpLAorICAgICAgICB0MyBLRVkgKHgpIExBQkVM IHQzbDEgUFJPUEVSVElFUyAoeCwgeSwgeikgTEFCRUwgdDNsMiBQUk9QRVJUSUVTICh4LCB5LCB6 KQorICAgICkKK1NFTEVDVCBwZ19nZXRfcHJvcGdyYXBoZGVmKCdnNCc6OnJlZ2NsYXNzKTsKK0NS RUFURSBQUk9QRVJUWSBHUkFQSCBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHMuZzQKKyAgICBW RVJURVggVEFCTEVTICgKKyAgICAgICAgdDEgS0VZIChhKSBOTyBQUk9QRVJUSUVTLAorICAgICAg ICB0MiBLRVkgKGkpIFBST1BFUlRJRVMgKChpICsgaikgQVMgaV9qLCAoayAqIDIpIEFTIGtrKSwK KyAgICAgICAgdDMgS0VZICh4KSBMQUJFTCB0M2wxIFBST1BFUlRJRVMgKHgsIHkgQVMgeXkpIExB QkVMIHQzbDIgUFJPUEVSVElFUyAoeCwgeiBBUyB6eikKKyAgICApCisgICAgRURHRSBUQUJMRVMg KAorICAgICAgICBlMSBLRVkgKGEsIGkpIFNPVVJDRSBLRVkgKGEpIFJFRkVSRU5DRVMgdDEgKGEp IERFU1RJTkFUSU9OIEtFWSAoaSkgUkVGRVJFTkNFUyB0MiAoaSkgUFJPUEVSVElFUyAoYSwgaSwg dCksCisgICAgICAgIGUyIEtFWSAoYSwgeCkgU09VUkNFIEtFWSAoYSkgUkVGRVJFTkNFUyB0MSAo YSkgREVTVElOQVRJT04gS0VZICh4LCB0KSBSRUZFUkVOQ0VTIHQzICh4LCB5KSBQUk9QRVJUSUVT IChhLCB0LCB4KQorICAgICkKK1NFTEVDVCBwZ19nZXRfcHJvcGdyYXBoZGVmKCdwZ190eXBlJzo6 cmVnY2xhc3MpOyAgLS0gZXJyb3IKK0VSUk9SOiAgInBnX3R5cGUiIGlzIG5vdCBhIHByb3BlcnR5 IGdyYXBoCitcYVx0CitcZEcgZzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiByZWxhdGlvbnMKKyAgICAgICAgICAgU2NoZW1hICAgICAgICAgICAgfCBOYW1lIHwgICAgICBU eXBlICAgICAgfCAgICAgICAgT3duZXIgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgY3Jl YXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzIHwgZzEgICB8IHByb3BlcnR5IGdyYXBoIHwgcmVncmVz c19ncmFwaF91c2VyMQorKDEgcm93KQorCistLSBUT0RPCitcZCBnMQorUHJvcGVydHkgZ3JhcGgg ImNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cy5nMSIKKyBDb2x1bW4gfCBUeXBlIAorLS0tLS0t LS0rLS0tLS0tCisKK1xkKyBnMQorUHJvcGVydHkgZ3JhcGggImNyZWF0ZV9wcm9wZXJ0eV9ncmFw aF90ZXN0cy5nMSIKKyBDb2x1bW4gfCBUeXBlIHwgU3RvcmFnZSAKKy0tLS0tLS0tKy0tLS0tLSst LS0tLS0tLS0KK1Byb3BlcnR5IGdyYXBoIGRlZmluaXRpb246CisgQ1JFQVRFIFBST1BFUlRZIEdS QVBIIGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cy5nMQorCitEUk9QIFRBQkxFIGcyOyAgLS0g ZXJyb3I6IHdyb25nIG9iamVjdCB0eXBlCitFUlJPUjogICJnMiIgaXMgbm90IGEgdGFibGUKK0hJ TlQ6ICBVc2UgRFJPUCBQUk9QRVJUWSBHUkFQSCB0byByZW1vdmUgYSBwcm9wZXJ0eSBncmFwaC4K K0RST1AgUFJPUEVSVFkgR1JBUEggZzE7CitEUk9QIFBST1BFUlRZIEdSQVBIIGcxOyAgLS0gZXJy b3I6IGRvZXMgbm90IGV4aXN0CitFUlJPUjogIHByb3BlcnR5IGdyYXBoICJnMSIgZG9lcyBub3Qg ZXhpc3QKK0RST1AgUFJPUEVSVFkgR1JBUEggSUYgRVhJU1RTIGcxOworTk9USUNFOiAgcHJvcGVy dHkgZ3JhcGggImcxIiBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmcKKy0tIGxlYXZlIGZvciBwZ191 cGdyYWRlL3BnX2R1bXAgdGVzdHMKKy0tRFJPUCBTQ0hFTUEgY3JlYXRlX3Byb3BlcnR5X2dyYXBo X3Rlc3RzIENBU0NBREU7CitEUk9QIFJPTEUgcmVncmVzc19ncmFwaF91c2VyMSwgcmVncmVzc19n cmFwaF91c2VyMjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3JhcGhf dGFibGUub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ncmFwaF90YWJsZS5vdXQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uODEzZmM5YWEyNQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3JhcGhfdGFibGUub3V0CkBAIC0w LDAgKzEsNDg0IEBACitDUkVBVEUgU0NIRU1BIGdyYXBoX3RhYmxlX3Rlc3RzOworR1JBTlQgVVNB R0UgT04gU0NIRU1BIGdyYXBoX3RhYmxlX3Rlc3RzIFRPIFBVQkxJQzsKK1NFVCBzZWFyY2hfcGF0 aCA9IGdyYXBoX3RhYmxlX3Rlc3RzOworQ1JFQVRFIFRBQkxFIHByb2R1Y3RzICgKKyAgICBwcm9k dWN0X25vIGludGVnZXIgUFJJTUFSWSBLRVksCisgICAgbmFtZSB2YXJjaGFyLAorICAgIHByaWNl IG51bWVyaWMKKyk7CitDUkVBVEUgVEFCTEUgY3VzdG9tZXJzICgKKyAgICBjdXN0b21lcl9pZCBp bnRlZ2VyIFBSSU1BUlkgS0VZLAorICAgIG5hbWUgdmFyY2hhciwKKyAgICBhZGRyZXNzIHZhcmNo YXIKKyk7CitDUkVBVEUgVEFCTEUgb3JkZXJzICgKKyAgICBvcmRlcl9pZCBpbnRlZ2VyIFBSSU1B UlkgS0VZLAorICAgIG9yZGVyZWRfd2hlbiBkYXRlCispOworQ1JFQVRFIFRBQkxFIG9yZGVyX2l0 ZW1zICgKKyAgICBvcmRlcl9pdGVtc19pZCBpbnRlZ2VyIFBSSU1BUlkgS0VZLAorICAgIG9yZGVy X2lkIGludGVnZXIgUkVGRVJFTkNFUyBvcmRlcnMgKG9yZGVyX2lkKSwKKyAgICBwcm9kdWN0X25v IGludGVnZXIgUkVGRVJFTkNFUyBwcm9kdWN0cyAocHJvZHVjdF9ubyksCisgICAgcXVhbnRpdHkg aW50ZWdlcgorKTsKK0NSRUFURSBUQUJMRSBjdXN0b21lcl9vcmRlcnMgKAorICAgIGN1c3RvbWVy X29yZGVyc19pZCBpbnRlZ2VyIFBSSU1BUlkgS0VZLAorICAgIGN1c3RvbWVyX2lkIGludGVnZXIg UkVGRVJFTkNFUyBjdXN0b21lcnMgKGN1c3RvbWVyX2lkKSwKKyAgICBvcmRlcl9pZCBpbnRlZ2Vy IFJFRkVSRU5DRVMgb3JkZXJzIChvcmRlcl9pZCkKKyk7CitDUkVBVEUgVEFCTEUgd2lzaGxpc3Rz ICgKKyAgICB3aXNobGlzdF9pZCBpbnRlZ2VyIFBSSU1BUlkgS0VZLAorICAgIHdpc2hsaXN0X25h bWUgdmFyY2hhcgorKTsKK0NSRUFURSBUQUJMRSB3aXNobGlzdF9pdGVtcyAoCisgICAgd2lzaGxp c3RfaXRlbXNfaWQgaW50ZWdlciBQUklNQVJZIEtFWSwKKyAgICB3aXNobGlzdF9pZCBpbnRlZ2Vy IFJFRkVSRU5DRVMgd2lzaGxpc3RzICh3aXNobGlzdF9pZCksCisgICAgcHJvZHVjdF9ubyBpbnRl Z2VyIFJFRkVSRU5DRVMgcHJvZHVjdHMgKHByb2R1Y3Rfbm8pCispOworQ1JFQVRFIFRBQkxFIGN1 c3RvbWVyX3dpc2hsaXN0cyAoCisgICAgY3VzdG9tZXJfd2lzaGxpc3RfaWQgaW50ZWdlciBQUklN QVJZIEtFWSwKKyAgICBjdXN0b21lcl9pZCBpbnRlZ2VyIFJFRkVSRU5DRVMgY3VzdG9tZXJzIChj dXN0b21lcl9pZCksCisgICAgd2lzaGxpc3RfaWQgaW50ZWdlciBSRUZFUkVOQ0VTIHdpc2hsaXN0 cyAod2lzaGxpc3RfaWQpCispOworQ1JFQVRFIFBST1BFUlRZIEdSQVBIIG15c2hvcAorICAgIFZF UlRFWCBUQUJMRVMgKAorICAgICAgICBwcm9kdWN0cywKKyAgICAgICAgY3VzdG9tZXJzLAorICAg ICAgICBvcmRlcnMKKyAgICAgICAgICAgREVGQVVMVCBMQUJFTAorICAgICAgICAgICAgTEFCRUwg bGlzdHMgUFJPUEVSVElFUyAob3JkZXJfaWQgYXMgbm9kZV9pZCwgJ29yZGVyJzo6dmFyY2hhcigx MCkgYXMgbGlzdF90eXBlKSwKKyAgICAgICAgd2lzaGxpc3RzCisgICAgICAgICAgIERFRkFVTFQg TEFCRUwKKyAgICAgICAgICAgIExBQkVMIGxpc3RzIFBST1BFUlRJRVMgKHdpc2hsaXN0X2lkIGFz IG5vZGVfaWQsICd3aXNobGlzdCc6OnZhcmNoYXIoMTApIGFzIGxpc3RfdHlwZSkKKyAgICApCisg ICAgRURHRSBUQUJMRVMgKAorICAgICAgICBvcmRlcl9pdGVtcyBLRVkgKG9yZGVyX2l0ZW1zX2lk KQorICAgICAgICAgICAgU09VUkNFIEtFWSAob3JkZXJfaWQpIFJFRkVSRU5DRVMgb3JkZXJzIChv cmRlcl9pZCkKKyAgICAgICAgICAgIERFU1RJTkFUSU9OIEtFWSAocHJvZHVjdF9ubykgUkVGRVJF TkNFUyBwcm9kdWN0cyAocHJvZHVjdF9ubykKKyAgICAgICAgICAgIERFRkFVTFQgTEFCRUwKKyAg ICAgICAgICAgIExBQkVMIGxpc3RfaXRlbXMgUFJPUEVSVElFUyAob3JkZXJfaWQgYXMgbGlua19p ZCwgcHJvZHVjdF9ubyksCisgICAgICAgIHdpc2hsaXN0X2l0ZW1zIEtFWSAod2lzaGxpc3RfaXRl bXNfaWQpCisgICAgICAgICAgICBTT1VSQ0UgS0VZICh3aXNobGlzdF9pZCkgUkVGRVJFTkNFUyB3 aXNobGlzdHMgKHdpc2hsaXN0X2lkKQorICAgICAgICAgICAgREVTVElOQVRJT04gS0VZIChwcm9k dWN0X25vKSBSRUZFUkVOQ0VTIHByb2R1Y3RzIChwcm9kdWN0X25vKQorICAgICAgICAgICAgREVG QVVMVCBMQUJFTAorICAgICAgICAgICAgTEFCRUwgbGlzdF9pdGVtcyBQUk9QRVJUSUVTICh3aXNo bGlzdF9pZCBhcyBsaW5rX2lkLCBwcm9kdWN0X25vKSwKKyAgICAgICAgY3VzdG9tZXJfb3JkZXJz IEtFWSAoY3VzdG9tZXJfb3JkZXJzX2lkKQorICAgICAgICAgICAgU09VUkNFIEtFWSAoY3VzdG9t ZXJfaWQpIFJFRkVSRU5DRVMgY3VzdG9tZXJzIChjdXN0b21lcl9pZCkKKyAgICAgICAgICAgIERF U1RJTkFUSU9OIEtFWSAob3JkZXJfaWQpIFJFRkVSRU5DRVMgb3JkZXJzIChvcmRlcl9pZCkKKyAg ICAgICAgICAgIERFRkFVTFQgTEFCRUwKKyAgICAgICAgICAgIExBQkVMIGN1c3RfbGlzdHMgUFJP UEVSVElFUyAoY3VzdG9tZXJfaWQsIG9yZGVyX2lkIGFzIGxpbmtfaWQpLAorICAgICAgICBjdXN0 b21lcl93aXNobGlzdHMgS0VZIChjdXN0b21lcl93aXNobGlzdF9pZCkKKyAgICAgICAgICAgIFNP VVJDRSBLRVkgKGN1c3RvbWVyX2lkKSBSRUZFUkVOQ0VTIGN1c3RvbWVycyAoY3VzdG9tZXJfaWQp CisgICAgICAgICAgICBERVNUSU5BVElPTiBLRVkgKHdpc2hsaXN0X2lkKSBSRUZFUkVOQ0VTIHdp c2hsaXN0cyAod2lzaGxpc3RfaWQpCisgICAgICAgICAgICBERUZBVUxUIExBQkVMCisgICAgICAg ICAgICBMQUJFTCBjdXN0X2xpc3RzIFBST1BFUlRJRVMgKGN1c3RvbWVyX2lkLCB3aXNobGlzdF9p ZCBhcyBsaW5rX2lkKQorICAgICk7CitTRUxFQ1QgY3VzdG9tZXJfbmFtZSBGUk9NIEdSQVBIX1RB QkxFICh4eHggTUFUQ0ggKGMgSVMgY3VzdG9tZXJzIFdIRVJFIGMuYWRkcmVzcyA9ICdVUycpLVtJ UyBjdXN0b21lcl9vcmRlcnNdLT4obyBJUyBvcmRlcnMpIENPTFVNTlMgKGMubmFtZSBBUyBjdXN0 b21lcl9uYW1lKSk7ICAtLSBlcnJvcgorRVJST1I6ICByZWxhdGlvbiAieHh4IiBkb2VzIG5vdCBl eGlzdAorTElORSAxOiBTRUxFQ1QgY3VzdG9tZXJfbmFtZSBGUk9NIEdSQVBIX1RBQkxFICh4eHgg TUFUQ0ggKGMgSVMgY3VzdG8uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorU0VMRUNUIGN1c3RvbWVyX25hbWUgRlJPTSBHUkFQSF9UQUJMRSAocGdf Y2xhc3MgTUFUQ0ggKGMgSVMgY3VzdG9tZXJzIFdIRVJFIGMuYWRkcmVzcyA9ICdVUycpLVtJUyBj dXN0b21lcl9vcmRlcnNdLT4obyBJUyBvcmRlcnMpIENPTFVNTlMgKGMubmFtZSBBUyBjdXN0b21l cl9uYW1lKSk7ICAtLSBlcnJvcgorRVJST1I6ICAicGdfY2xhc3MiIGlzIG5vdCBhIHByb3BlcnR5 IGdyYXBoCitMSU5FIDE6IFNFTEVDVCBjdXN0b21lcl9uYW1lIEZST00gR1JBUEhfVEFCTEUgKHBn X2NsYXNzIE1BVENIIChjIElTIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCitTRUxFQ1QgY3VzdG9tZXJfbmFtZSBGUk9NIEdSQVBIX1RBQkxFICht eXNob3AgTUFUQ0ggKGMgSVMgY3VzdG9tZXJzIFdIRVJFIGMuYWRkcmVzcyA9ICdVUycpLVtJUyBj dXN0b21lcl9vcmRlcnNdLT4obyBJUyBvcmRlcnMpIENPTFVNTlMgKGN4Lm5hbWUgQVMgY3VzdG9t ZXJfbmFtZSkpOyAgLS0gZXJyb3IKK0VSUk9SOiAgbWlzc2luZyBGUk9NLWNsYXVzZSBlbnRyeSBm b3IgdGFibGUgImN4IgorTElORSAxOiAuLi5VUycpLVtJUyBjdXN0b21lcl9vcmRlcnNdLT4obyBJ UyBvcmRlcnMpIENPTFVNTlMgKGN4Lm5hbWUgQVMuLi4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgY3VzdG9tZXJf bmFtZSBGUk9NIEdSQVBIX1RBQkxFIChteXNob3AgTUFUQ0ggKGMgSVMgY3VzdG9tZXJzIFdIRVJF IGMuYWRkcmVzcyA9ICdVUycpLVtJUyBjdXN0b21lcl9vcmRlcnNdLT4obyBJUyBvcmRlcnMpIENP TFVNTlMgKGMubmFtZXggQVMgY3VzdG9tZXJfbmFtZSkpOyAgLS0gZXJyb3IKK0VSUk9SOiAgcHJv cGVydHkgIm5hbWV4IiBkb2VzIG5vdCBleGlzdAorU0VMRUNUIGN1c3RvbWVyX25hbWUgRlJPTSBH UkFQSF9UQUJMRSAobXlzaG9wIE1BVENIIChjIElTIGN1c3RvbWVyc3xlbXBsb3llZXMgV0hFUkUg Yy5hZGRyZXNzID0gJ1VTJyktW0lTIGN1c3RvbWVyX29yZGVyc10tPihvIElTIG9yZGVycykgQ09M VU1OUyAoYy5uYW1lIEFTIGN1c3RvbWVyX25hbWUpKTsgIC0tIGVycm9yCitFUlJPUjogIGxhYmVs ICJlbXBsb3llZXMiIGRvZXMgbm90IGV4aXN0IGluIHByb3BlcnR5IGdyYXBoICJteXNob3AiCitT RUxFQ1QgY3VzdG9tZXJfbmFtZSBGUk9NIEdSQVBIX1RBQkxFIChteXNob3AgTUFUQ0ggKGMgSVMg Y3VzdG9tZXJzIFdIRVJFIGMuYWRkcmVzcyA9ICdVUycpLVtJUyBjdXN0b21lcl9vcmRlcnNdIENP TFVNTlMgKGMubmFtZSBBUyBjdXN0b21lcl9uYW1lKSk7ICAtLSBlcnJvcgorRVJST1I6ICBzeW50 YXggZXJyb3IgYXQgb3IgbmVhciAiQ09MVU1OUyIKK0xJTkUgMTogLi4ubWVycyBXSEVSRSBjLmFk ZHJlc3MgPSAnVVMnKS1bSVMgY3VzdG9tZXJfb3JkZXJzXSBDT0xVTU5TIChjLi4uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor SU5TRVJUIElOVE8gcHJvZHVjdHMgVkFMVUVTCisgICAgKDEsICdwcm9kdWN0MScsIDEwKSwKKyAg ICAoMiwgJ3Byb2R1Y3QyJywgMjApLAorICAgICgzLCAncHJvZHVjdDMnLCAzMCk7CitJTlNFUlQg SU5UTyBjdXN0b21lcnMgVkFMVUVTCisgICAgKDEsICdjdXN0b21lcjEnLCAnVVMnKSwKKyAgICAo MiwgJ2N1c3RvbWVyMicsICdDQScpLAorICAgICgzLCAnY3VzdG9tZXIzJywgJ0dMJyk7CitJTlNF UlQgSU5UTyBvcmRlcnMgVkFMVUVTCisgICAgKDEsIGRhdGUgJzIwMjQtMDEtMDEnKSwKKyAgICAo MiwgZGF0ZSAnMjAyNC0wMS0wMicpLAorICAgICgzLCBkYXRlICcyMDI0LTAxLTAzJyk7CitJTlNF UlQgSU5UTyB3aXNobGlzdHMgVkFMVUVTCisgICAgKDEsICd3aXNobGlzdDEnKSwKKyAgICAoMiwg J3dpc2hsaXN0MicpLAorICAgICgzLCAnd2lzaGxpc3QzJyk7CitJTlNFUlQgSU5UTyBvcmRlcl9p dGVtcyAob3JkZXJfaXRlbXNfaWQsIG9yZGVyX2lkLCBwcm9kdWN0X25vLCBxdWFudGl0eSkgVkFM VUVTCisgICAgKDEsIDEsIDEsIDUpLAorICAgICgyLCAxLCAyLCAxMCksCisgICAgKDMsIDIsIDEs IDcpOworSU5TRVJUIElOVE8gY3VzdG9tZXJfb3JkZXJzIChjdXN0b21lcl9vcmRlcnNfaWQsIGN1 c3RvbWVyX2lkLCBvcmRlcl9pZCkgVkFMVUVTCisgICAgKDEsIDEsIDEpLAorICAgICgyLCAyLCAy KTsKK0lOU0VSVCBJTlRPIGN1c3RvbWVyX3dpc2hsaXN0cyAoY3VzdG9tZXJfd2lzaGxpc3RfaWQs IGN1c3RvbWVyX2lkLCB3aXNobGlzdF9pZCkgVkFMVUVTCisgICAgKDEsIDIsIDMpLAorICAgICgy LCAzLCAxKSwKKyAgICAoMywgMywgMik7CitJTlNFUlQgSU5UTyB3aXNobGlzdF9pdGVtcyAod2lz aGxpc3RfaXRlbXNfaWQsIHdpc2hsaXN0X2lkLCBwcm9kdWN0X25vKSBWQUxVRVMKKyAgICAoMSwg MSwgMiksCisgICAgKDIsIDEsIDMpLAorICAgICgzLCAyLCAxKSwKKyAgICAoNCwgMywgMSk7Cist LSBzaW5nbGUgZWxlbWVudCBwYXRoIHBhdHRlcm4KK1NFTEVDVCAqIEZST00gR1JBUEhfVEFCTEUg KG15c2hvcCBNQVRDSCAoYyBJUyBjdXN0b21lcnMpIENPTFVNTlMgKGMubmFtZSkpOworICAgbmFt ZSAgICAKKy0tLS0tLS0tLS0tCisgY3VzdG9tZXIxCisgY3VzdG9tZXIyCisgY3VzdG9tZXIzCiso MyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIEdSQVBIX1RBQkxFIChteXNob3AgTUFUQ0ggKGMgSVMg Y3VzdG9tZXJzIFdIRVJFIGMuYWRkcmVzcyA9ICdVUycpLVtJUyBjdXN0b21lcl9vcmRlcnNdLT4o byBJUyBvcmRlcnMpIENPTFVNTlMgKGMubmFtZSkpOworICAgbmFtZSAgICAKKy0tLS0tLS0tLS0t CisgY3VzdG9tZXIxCisoMSByb3cpCisKKy0tIGdyYXBoIGVsZW1lbnQgc3BlY2lmaWNhdGlvbiB3 aXRob3V0IGxhYmVsIG9yIHZhcmlhYmxlCitTRUxFQ1QgKiBGUk9NIEdSQVBIX1RBQkxFIChteXNo b3AgTUFUQ0ggKGMgSVMgY3VzdG9tZXJzIFdIRVJFIGMuYWRkcmVzcyA9ICdVUycpLVtdLT4obyBJ UyBvcmRlcnMpIENPTFVNTlMgKGMubmFtZSBBUyBjdXN0b21lcl9uYW1lKSk7CisgY3VzdG9tZXJf bmFtZSAKKy0tLS0tLS0tLS0tLS0tLQorIGN1c3RvbWVyMQorKDEgcm93KQorCitTRUxFQ1QgKiBG Uk9NIEdSQVBIX1RBQkxFIChteXNob3AgTUFUQ0ggKGM6Y3VzdG9tZXJzKS1bY286Y3VzdG9tZXJf b3JkZXJzXS0+KG86b3JkZXJzIFdIRVJFIG8ub3JkZXJlZF93aGVuID0gZGF0ZSAnMjAyNC0wMS0w MicpIENPTFVNTlMgKGMubmFtZSwgYy5hZGRyZXNzKSk7CisgICBuYW1lICAgIHwgYWRkcmVzcyAK Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLQorIGN1c3RvbWVyMiB8IENBCisoMSByb3cpCisKK1NFTEVD VCAqIEZST00gR1JBUEhfVEFCTEUgKG15c2hvcCBNQVRDSCAobyBJUyBvcmRlcnMpLVtJUyBjdXN0 b21lcl9vcmRlcnNdLT4oYyBJUyBjdXN0b21lcnMpIENPTFVNTlMgKGMubmFtZSwgby5vcmRlcmVk X3doZW4pKTsKKyBuYW1lIHwgb3JkZXJlZF93aGVuIAorLS0tLS0tKy0tLS0tLS0tLS0tLS0tCiso MCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIEdSQVBIX1RBQkxFIChteXNob3AgTUFUQ0ggKG8gSVMg b3JkZXJzKTwtW0lTIGN1c3RvbWVyX29yZGVyc10tKGMgSVMgY3VzdG9tZXJzKSBDT0xVTU5TIChj Lm5hbWUsIG8ub3JkZXJlZF93aGVuKSk7CisgICBuYW1lICAgIHwgb3JkZXJlZF93aGVuIAorLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBjdXN0b21lcjEgfCAwMS0wMS0yMDI0CisgY3VzdG9t ZXIyIHwgMDEtMDItMjAyNAorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBHUkFQSF9UQUJMRSAo bXlzaG9wIE1BVENIICggbyBJUyBvcmRlcnMgKSA8LSBbIElTIGN1c3RvbWVyX29yZGVycyBdIC0g KGMgSVMgY3VzdG9tZXJzKSBDT0xVTU5TICggYy5uYW1lLCBvLm9yZGVyZWRfd2hlbikpOworICAg bmFtZSAgICB8IG9yZGVyZWRfd2hlbiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgY3Vz dG9tZXIxIHwgMDEtMDEtMjAyNAorIGN1c3RvbWVyMiB8IDAxLTAyLTIwMjQKKygyIHJvd3MpCisK K1NFTEVDVCAqIEZST00gR1JBUEhfVEFCTEUgKG15c2hvcCBNQVRDSCAoYyBJUyBjdXN0b21lcnMp LVtJUyBjdXN0X2xpc3RzXS0+KGwgSVMgbGlzdHMpLVsgSVMgbGlzdF9pdGVtc10tPihwIElTIHBy b2R1Y3RzKSBDT0xVTU5TIChjLm5hbWUgQVMgY3VzdG9tZXJfbmFtZSwgcC5uYW1lIGFzIHByb2R1 Y3RfbmFtZSwgbC5saXN0X3R5cGUpKSBPUkRFUiBCWSBjdXN0b21lcl9uYW1lLCBwcm9kdWN0X25h bWUsIGxpc3RfdHlwZTsKKyBjdXN0b21lcl9uYW1lIHwgcHJvZHVjdF9uYW1lIHwgbGlzdF90eXBl IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgY3VzdG9tZXIx ICAgICB8IHByb2R1Y3QxICAgICB8IG9yZGVyCisgY3VzdG9tZXIxICAgICB8IHByb2R1Y3QyICAg ICB8IG9yZGVyCisgY3VzdG9tZXIyICAgICB8IHByb2R1Y3QxICAgICB8IG9yZGVyCisgY3VzdG9t ZXIyICAgICB8IHByb2R1Y3QxICAgICB8IHdpc2hsaXN0CisgY3VzdG9tZXIzICAgICB8IHByb2R1 Y3QxICAgICB8IHdpc2hsaXN0CisgY3VzdG9tZXIzICAgICB8IHByb2R1Y3QyICAgICB8IHdpc2hs aXN0CisgY3VzdG9tZXIzICAgICB8IHByb2R1Y3QzICAgICB8IHdpc2hsaXN0CisoNyByb3dzKQor CistLSBsYWJlbCBkaXNqdW5jdGlvbgorU0VMRUNUICogRlJPTSBHUkFQSF9UQUJMRSAobXlzaG9w IE1BVENIIChjIElTIGN1c3RvbWVycyktW0lTIGN1c3RvbWVyX29yZGVycyB8IGN1c3RvbWVyX3dp c2hsaXN0cyBdLT4obCBJUyBvcmRlcnMgfCB3aXNobGlzdHMpLVsgSVMgbGlzdF9pdGVtc10tPihw IElTIHByb2R1Y3RzKSBDT0xVTU5TIChjLm5hbWUgQVMgY3VzdG9tZXJfbmFtZSwgcC5uYW1lIGFz IHByb2R1Y3RfbmFtZSkpIE9SREVSIEJZIGN1c3RvbWVyX25hbWUsIHByb2R1Y3RfbmFtZTsKKyBj dXN0b21lcl9uYW1lIHwgcHJvZHVjdF9uYW1lIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tCisgY3VzdG9tZXIxICAgICB8IHByb2R1Y3QxCisgY3VzdG9tZXIxICAgICB8IHByb2R1Y3Qy CisgY3VzdG9tZXIyICAgICB8IHByb2R1Y3QxCisgY3VzdG9tZXIyICAgICB8IHByb2R1Y3QxCisg Y3VzdG9tZXIzICAgICB8IHByb2R1Y3QxCisgY3VzdG9tZXIzICAgICB8IHByb2R1Y3QyCisgY3Vz dG9tZXIzICAgICB8IHByb2R1Y3QzCisoNyByb3dzKQorCistLSBwcm9wZXJ0eSBub3QgYXNzb2Np YXRlZCB3aXRoIGxhYmVscyBxdWVyaWVkIHJlc3VsdHMgaW4gZXJyb3IKK1NFTEVDVCAqIEZST00g R1JBUEhfVEFCTEUgKG15c2hvcCBNQVRDSCAoYyBJUyBjdXN0b21lcnMpLVtJUyBjdXN0b21lcl9v cmRlcnMgfCBjdXN0b21lcl93aXNobGlzdHMgXS0+KGwgSVMgb3JkZXJzIHwgd2lzaGxpc3RzKS1b IElTIGxpc3RfaXRlbXNdLT4ocCBJUyBwcm9kdWN0cykgQ09MVU1OUyAoYy5uYW1lIEFTIGN1c3Rv bWVyX25hbWUsIHAubmFtZSBhcyBwcm9kdWN0X25hbWUsIGwubGlzdF90eXBlKSkgT1JERVIgQlkg MSwgMiwgMzsKK0VSUk9SOiAgcHJvcGVydHkgImxpc3RfdHlwZSIgb2YgZWxlbWVudCB2YXJpYWJs ZSAibCIgbm90IGZvdW5kCistLSB2ZXJ0ZXggdG8gdmVydGV4IGNvbm5lY3Rpb24gYWJicmV2aWF0 aW9uCitTRUxFQ1QgKiBGUk9NIEdSQVBIX1RBQkxFIChteXNob3AgTUFUQ0ggKGMgSVMgY3VzdG9t ZXJzKS0+KG8gSVMgb3JkZXJzKSBDT0xVTU5TIChjLm5hbWUsIG8ub3JkZXJlZF93aGVuKSkgT1JE RVIgQlkgMTsKKyAgIG5hbWUgICAgfCBvcmRlcmVkX3doZW4gCistLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLQorIGN1c3RvbWVyMSB8IDAxLTAxLTIwMjQKKyBjdXN0b21lcjIgfCAwMS0wMi0yMDI0 CisoMiByb3dzKQorCistLSBsYXRlcmFsIHRlc3QKK0NSRUFURSBUQUJMRSB4MSAoYSBpbnQsIGIg dGV4dCk7CitJTlNFUlQgSU5UTyB4MSBWQUxVRVMgKDEsICdvbmUnKSwgKDIsICd0d28nKTsKK1NF TEVDVCAqIEZST00geDEsIEdSQVBIX1RBQkxFIChteXNob3AgTUFUQ0ggKGMgSVMgY3VzdG9tZXJz IFdIRVJFIGMuYWRkcmVzcyA9ICdVUycgQU5EIGMuY3VzdG9tZXJfaWQgPSB4MS5hKS1bSVMgY3Vz dG9tZXJfb3JkZXJzXS0+KG8gSVMgb3JkZXJzKSBDT0xVTU5TIChjLm5hbWUgQVMgY3VzdG9tZXJf bmFtZSwgYy5jdXN0b21lcl9pZCBBUyBjaWQpKTsKKyBhIHwgIGIgIHwgY3VzdG9tZXJfbmFtZSB8 IGNpZCAKKy0tLSstLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0KKyAxIHwgb25lIHwgY3VzdG9t ZXIxICAgICB8ICAgMQorKDEgcm93KQorCitEUk9QIFRBQkxFIHgxOworY3JlYXRlIHRhYmxlIHYx IChpZCBpbnQgcHJpbWFyeSBrZXksCisJCQkJCXZuYW1lIHZhcmNoYXIoMTApLAorCQkJCQl2cHJv cDEgaW50LAorCQkJCQl2cHJvcDIgaW50KTsKK2NyZWF0ZSB0YWJsZSB2MiAoaWQxIGludCwKKwkJ CQkJaWQyIGludCwKKwkJCQkJdm5hbWUgdmFyY2hhcigxMCksCisJCQkJCXZwcm9wMSBpbnQsCisJ CQkJCXZwcm9wMiBpbnQpOworY3JlYXRlIHRhYmxlIHYzIChpZCBpbnQgcHJpbWFyeSBrZXksCisJ CQkJCXZuYW1lIHZhcmNoYXIoMTApLAorCQkJCQl2cHJvcDEgaW50LAorCQkJCQl2cHJvcDIgaW50 KTsKKy0tIGVkZ2UgY29ubmVjdGluZyB2MSBhbmQgdjIKK2NyZWF0ZSB0YWJsZSBlMV8yIChpZF8x IGludCwKKwkJCQkJaWRfMl8xIGludCwKKwkJCQkJaWRfMl8yIGludCwKKwkJCQkJZW5hbWUgdmFy Y2hhcigxMCksCisJCQkJCWVwcm9wMSBpbnQpOworLS0gZWRnZSBjb25uZWN0aW5nIHYxIGFuZCB2 MworY3JlYXRlIHRhYmxlIGUxXzMgKGlkXzEgaW50LAorCQkJCQlpZF8zIGludCwKKwkJCQkJZW5h bWUgdmFyY2hhcigxMCksCisJCQkJCWVwcm9wMSBpbnQsCisJCQkJCXByaW1hcnkga2V5IChpZF8x LCBpZF8zKSk7CitjcmVhdGUgdGFibGUgZTJfMyAoaWRfMl8xIGludCwKKyAgICAgICAgICAgICAg ICAgICAgaWRfMl8yIGludCwKKyAgICAgICAgICAgICAgICAgICAgaWRfMyBpbnQsCisgICAgICAg ICAgICAgICAgICAgIGVuYW1lIHZhcmNoYXIoMTApLAorICAgICAgICAgICAgICAgICAgICBlcHJv cDEgaW50KTsKK2NyZWF0ZSBwcm9wZXJ0eSBncmFwaCBnMQordmVydGV4IHRhYmxlcyAoCisJdjEK KyAgICAgICAgbGFiZWwgdmwxIHByb3BlcnRpZXMgKHZuYW1lLCB2cHJvcDEpCisgICAgICAgIGxh YmVsIGwxIHByb3BlcnRpZXMgKHZuYW1lIGFzIGVsbmFtZSksIC0tIGxhYmVsIHNoYXJlZCBieSB2 ZXJ0ZXhlcyBhcyB3ZWxsIGFzIGVkZ2VzCisJdjIga2V5IChpZDEsIGlkMikKKwkJbGFiZWwgdmwy IHByb3BlcnRpZXMgKHZuYW1lLCB2cHJvcDIsICd2bDJfcHJvcCc6OnZhcmNoYXIoMTApIGFzIGxw cm9wMSkKKyAgICAgICAgbGFiZWwgdmwzIHByb3BlcnRpZXMgKHZuYW1lLCB2cHJvcDEsICd2bDJf cHJvcCc6OnZhcmNoYXIoMTApIGFzIGxwcm9wMSkKKyAgICAgICAgbGFiZWwgbDEgcHJvcGVydGll cyAodm5hbWUgYXMgZWxuYW1lKSwKKwl2MworCQlsYWJlbCB2bDMgcHJvcGVydGllcyAodm5hbWUs IHZwcm9wMSwgJ3ZsM19wcm9wJzo6dmFyY2hhcigxMCkgYXMgbHByb3AxKQorICAgICAgICBsYWJl bCBsMSBwcm9wZXJ0aWVzICh2bmFtZSBhcyBlbG5hbWUpCispCistLSBlZGdlcyB3aXRoIGRpZmZl cmluZyBudW1iZXIgb2YgY29sdW1ucyBpbiBkZXN0aW5hdGlvbiBrZXlzCitlZGdlIHRhYmxlcyAo CisJZTFfMiBrZXkgKGlkXzEsIGlkXzJfMSwgaWRfMl8yKQorCQlzb3VyY2Uga2V5IChpZF8xKSBy ZWZlcmVuY2VzIHYxIChpZCkKKwkJZGVzdGluYXRpb24ga2V5IChpZF8yXzEsIGlkXzJfMikgcmVm ZXJlbmNlcyB2MiAoaWQxLCBpZDIpCisJCWxhYmVsIGVsMSBwcm9wZXJ0aWVzIChlcHJvcDEsIGVu YW1lKQorICAgICAgICBsYWJlbCBsMSBwcm9wZXJ0aWVzIChlbmFtZSBhcyBlbG5hbWUpLAorCWUx XzMKKwkJc291cmNlIGtleSAoaWRfMSkgcmVmZXJlbmNlcyB2MSAoaWQpCisJCWRlc3RpbmF0aW9u IGtleSAoaWRfMykgcmVmZXJlbmNlcyB2MyAoaWQpCisJCS0tIG9yZGVyIG9mIHByb3BlcnR5IG5h bWVzIGRvZXNuJ3QgbWF0dGVyCisJCWxhYmVsIGVsMSBwcm9wZXJ0aWVzIChlbmFtZSwgZXByb3Ax KQorICAgICAgICBsYWJlbCBsMSBwcm9wZXJ0aWVzIChlbmFtZSBhcyBlbG5hbWUpLAorICAgIGUy XzMga2V5IChpZF8yXzEsIGlkXzJfMiwgaWRfMykKKyAgICAgICAgc291cmNlIGtleSAoaWRfMl8x LCBpZF8yXzIpIHJlZmVyZW5jZXMgdjIgKGlkMSwgaWQyKQorICAgICAgICBkZXN0aW5hdGlvbiBr ZXkgKGlkXzMpIHJlZmVyZW5jZXMgdjMgKGlkKQorICAgICAgICAtLSBuZXcgcHJvcGVydHkgbHBy b3AyIG5vdCBzaGFyZWQgYnkgZWwxCisgICAgICAgIC0tIGRvZXMgbm90IHNoYXJlIGVwcm9wMSBm cm9tIGJ5IGVsMQorICAgICAgICBsYWJlbCBlbDIgcHJvcGVydGllcyAoZW5hbWUsIGVwcm9wMSAq IDEwIGFzIGxwcm9wMikKKyAgICAgICAgbGFiZWwgbDEgcHJvcGVydGllcyAoZW5hbWUgYXMgZWxu YW1lKQorKTsKK2luc2VydCBpbnRvIHYxIHZhbHVlcyAoMSwgJ3YxMScsIDEwLCAxMDApLAorICAg ICAgICAgICAgICAgICAgICAgICgyLCAndjEyJywgMjAsIDIwMCksCisgICAgICAgICAgICAgICAg ICAgICAgKDMsICd2MTMnLCAzMCwgMzAwKTsKK2luc2VydCBpbnRvIHYyIHZhbHVlcyAoMTAwMCwg MSwgJ3YyMScsIDEwMTAsIDExMDApLAorICAgICAgICAgICAgICAgICAgICAgICgxMDAwLCAyLCAn djIyJywgMTAyMCwgMTIwMCksCisgICAgICAgICAgICAgICAgICAgICAgKDEwMDAsIDMsICd2MjMn LCAxMDMwLCAxMzAwKTsKK2luc2VydCBpbnRvIHYzIHZhbHVlcyAoMjAwMSwgJ3YzMScsIDIwMTAs IDIxMDApLAorICAgICAgICAgICAgICAgICAgICAgICgyMDAyLCAndjMyJywgMjAyMCwgMjIwMCks CisgICAgICAgICAgICAgICAgICAgICAgKDIwMDMsICd2MzMnLCAyMDMwLCAyMzAwKTsKK2luc2Vy dCBpbnRvIGUxXzIgdmFsdWVzICgxLCAxMDAwLCAyLCAnZTEyMScsIDEwMDAxKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICgyLCAxMDAwLCAxLCAnZTEyMicsIDEwMDAyKTsKK2luc2VydCBpbnRv IGUxXzMgdmFsdWVzICgxLCAyMDAzLCAnZTEzMScsIDEwMDAzKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICgxLCAyMDAxLCAnZTEzMicsIDEwMDA0KTsKK2luc2VydCBpbnRvIGUyXzMgdmFsdWVz ICgxMDAwLCAyLCAyMDAyLCAnZTIzMScsIDEwMDA1KTsKKy0tIGVtcHR5IGVsZW1lbnQgcGF0aCBw YXR0ZXJuLCBjb3VudHMgbnVtYmVyIG9mIGVkZ2VzIGluIHRoZSBncmFwaAorU0VMRUNUIGNvdW50 KCopIEZST00gR1JBUEhfVEFCTEUgKGcxIE1BVENIICgpLVtdLT4oKSBDT0xVTU5TICgxIGFzIG9u ZSkpOworIGNvdW50IAorLS0tLS0tLQorICAgICA1CisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgq KSBGUk9NIEdSQVBIX1RBQkxFIChnMSBNQVRDSCAoKS0+KCkgQ09MVU1OUyAoMSBhcyBvbmUpKTsK KyBjb3VudCAKKy0tLS0tLS0KKyAgICAgNQorKDEgcm93KQorCistLSBWZXJ0ZXggZWxlbWVudCB2 MiBoYXMgbGFiZWwgdmwzIHdoaWNoIGV4cG9zZXMgcHJvcGVydHkgdnByb3AxLiBCdXQgdmwzIGlz CistLSBub3QgcGFydCBvZiBsYWJlbCBleHByZXNzaW9uLiBJbnN0ZWFkIHYyIGdldCBib3VuZCB0 aHJvdWdoIGxhYmVsIHZsMiB3aGljaAorLS0gZG9lcyBub3QgZXhwb3NlIHZwcm9wMS4gVGhlIEdS QVBIX1RBQkxFIGNsYXVzZSBwcm9qZWN0IHZwcm9wMS4KKy0tCistLSBUT0RPOiBUaGlzIGNhc2Ug ZmFpbHMgc2luY2UgY2F0YWxvZ3MgZG8gbm90IGFzc29jaWF0ZWQgcHJvcGVydGllcyB3aXRoCist LSBlbGVtZW50cyBkaXJlY3RseS4gTW9yZSBjb2RlIGlzIG5lZWRlZCB0byBtYWtlIGl0IHdvcmsu CitTRUxFQ1QgKiBGUk9NIEdSQVBIX1RBQkxFIChnMSBNQVRDSCAoYSBJUyB2bDEgfCB2bDIpIENP TFVNTlMgKGEudm5hbWUsCithLnZwcm9wMSkpOworIHZuYW1lIHwgdnByb3AxIAorLS0tLS0tLSst LS0tLS0tLQorIHYxMSAgIHwgICAgIDEwCisgdjEyICAgfCAgICAgMjAKKyB2MTMgICB8ICAgICAz MAorIHYyMSAgIHwgICAxMDEwCisgdjIyICAgfCAgIDEwMjAKKyB2MjMgICB8ICAgMTAzMAorKDYg cm93cykKKworLS0gdnByb3AyIGlzIGFzc29jaWF0ZWQgd2l0aCB2bDIgYnV0IG5vdCB2bDMKK3Nl bGVjdCBzcmMsIGNvbm4sIGRlc3QsIGxwcm9wMSwgdnByb3AyLCB2cHJvcDEgZnJvbSBncmFwaF90 YWJsZSAoZzEgbWF0Y2ggKGEgaXMgdmwxKS1bYiBpcyBlbDFdLT4oYyBpcyB2bDIgfCB2bDMpIGNv bHVtbnMgKGEudm5hbWUgYXMgc3JjLCBiLmVuYW1lIGFzIGNvbm4sIGMudm5hbWUgYXMgZGVzdCwg Yy5scHJvcDEsIGMudnByb3AyLCBjLnZwcm9wMSkpOworIHNyYyB8IGNvbm4gfCBkZXN0IHwgIGxw cm9wMSAgfCB2cHJvcDIgfCB2cHJvcDEgCistLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0KKyB2MTIgfCBlMTIyIHwgdjIxICB8IHZsMl9wcm9wIHwgICAxMTAw IHwgICAxMDEwCisgdjExIHwgZTEyMSB8IHYyMiAgfCB2bDJfcHJvcCB8ICAgMTIwMCB8ICAgMTAy MAorIHYxMSB8IGUxMzEgfCB2MzMgIHwgdmwzX3Byb3AgfCAgICAgICAgfCAgIDIwMzAKKyB2MTEg fCBlMTMyIHwgdjMxICB8IHZsM19wcm9wIHwgICAgICAgIHwgICAyMDEwCisoNCByb3dzKQorCist LSBFcnJvcnMKKy0tIHZsMSBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIHByb3BlcnR5IHZwcm9wMgor c2VsZWN0IHNyYywgc3JjX3Zwcm9wMiwgY29ubiwgZGVzdCBmcm9tIGdyYXBoX3RhYmxlIChnMSBt YXRjaCAoYSBpcyB2bDEpLVtiIGlzIGVsMV0tPihjIGlzIHZsMiB8IHZsMykgY29sdW1ucyAoYS52 bmFtZSBhcyBzcmMsIGEudnByb3AyIGFzIHNyY192cHJvcDIsIGIuZW5hbWUgYXMgY29ubiwgYy52 bmFtZSBhcyBkZXN0KSk7CitFUlJPUjogIHByb3BlcnR5ICJ2cHJvcDIiIG9mIGVsZW1lbnQgdmFy aWFibGUgImEiIG5vdCBmb3VuZAorLS0gcHJvcGVydHkgZW5hbWUgaXMgYXNzb2NpYXRlZCB3aXRo IGVkZ2UgbGFiZWxzIGJ1dCBub3Qgd2l0aCBhIHZlcnRleCBsYWJlbAorc2VsZWN0ICogZnJvbSBn cmFwaF90YWJsZSAoZzEgbWF0Y2ggKHNyYyktW2Nvbm5dLT4oZGVzdCkgY29sdW1ucyAoc3JjLnZu YW1lIGFzIHN2bmFtZSwgc3JjLmVuYW1lIGFzIHNlbmFtZSkpOworRVJST1I6ICBwcm9wZXJ0eSAi ZW5hbWUiIG9mIGVsZW1lbnQgdmFyaWFibGUgInNyYyIgbm90IGZvdW5kCistLSB2bmFtZSBpcyBh c3NvY2lhdGVkIHZlcnRleCBsYWJlbHMgYnV0IG5vdCBhbiBlZGdlIGxhYmVsCitzZWxlY3QgKiBm cm9tIGdyYXBoX3RhYmxlIChnMSBtYXRjaCAoc3JjKS1bY29ubl0tPihkZXN0KSBjb2x1bW5zIChj b25uLnZuYW1lIGFzIGN2bmFtZSwgY29ubi5lbmFtZSBhcyBjZW5hbWUpKTsKK0VSUk9SOiAgcHJv cGVydHkgInZuYW1lIiBvZiBlbGVtZW50IHZhcmlhYmxlICJjb25uIiBub3QgZm91bmQKKy0tIGVs MSBpcyBhc3NvY2lhdGVkIHdpdGggZWRnZXMgYnV0IGlzIG9ubHkgbGFiZWwgdXNlZCB0byBxdWFs aWZ5IHZlcnRleAorc2VsZWN0ICogZnJvbSBncmFwaF90YWJsZSAoZzEgbWF0Y2ggKHNyYyBpcyBl bDEpLVtjb25uXS0+KGRlc3QpIGNvbHVtbnMgKGNvbm4uZW5hbWUgYXMgY2VuYW1lKSk7CitFUlJP UjogIGNhbiBub3QgZmluZCBsYWJlbCAiZWwxIiBpbiBwcm9wZXJ0eSBncmFwaCAiZzEiIGZvciBl bGVtZW50IHR5cGUgInZlcnRleCIKKy0tIGVsMSBpcyBhc3NvY2lhdGVkIHdpdGggZWRnZXMgYnV0 IGlzIG9uZSBvZiB0aGUgbGFiZWxzIHVzZWQgdG8gcXVhbGlmeSB2ZXJ0ZXgKK3NlbGVjdCAqIGZy b20gZ3JhcGhfdGFibGUgKGcxIG1hdGNoIChzcmMgaXMgZWwxIHwgdmwxKS1bY29ubl0tPihkZXN0 KSBjb2x1bW5zIChjb25uLmVuYW1lIGFzIGNlbmFtZSkpOworRVJST1I6ICBjYW4gbm90IGZpbmQg bGFiZWwgImVsMSIgaW4gcHJvcGVydHkgZ3JhcGggImcxIiBmb3IgZWxlbWVudCB0eXBlICJ2ZXJ0 ZXgiCistLSBzZWxlY3QgYWxsIHRoZSBwcm9wZXJ0aWVzIGFjcm9zcyBhbGwgdGhlIGxhYmVscyBh c3NvY2lhdGVkIHdpdGggYSBnaXZlbiB0eXBlCistLSBvZiBncmFwaCBlbGVtZW50CitzZWxlY3Qg KiBmcm9tIGdyYXBoX3RhYmxlIChnMSBtYXRjaCAoc3JjKS1bY29ubl0tPihkZXN0KSBjb2x1bW5z IChzcmMudm5hbWUgYXMgc3ZuYW1lLCBjb25uLmVuYW1lIGFzIGNlbmFtZSwgZGVzdC52bmFtZSBh cyBkdm5hbWUsIHNyYy52cHJvcDEgYXMgc3ZwMSwgc3JjLnZwcm9wMiBhcyBzdnAyLCBzcmMubHBy b3AxIGFzIHNscDEsIGRlc3QudnByb3AxIGFzIGR2cDEsIGRlc3QudnByb3AyIGFzIGR2cDIsIGRl c3QubHByb3AxIGFzIGRscDEsIGNvbm4uZXByb3AxIGFzIGNlcDEsIGNvbm4ubHByb3AyIGFzIGNs cDIpKTsKKyBzdm5hbWUgfCBjZW5hbWUgfCBkdm5hbWUgfCBzdnAxIHwgc3ZwMiB8ICAgc2xwMSAg IHwgZHZwMSB8IGR2cDIgfCAgIGRscDEgICB8IGNlcDEgIHwgIGNscDIgIAorLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tCisgdjEyICAgIHwgZTEyMiAgIHwgdjIxICAgIHwgICAy MCB8ICAgICAgfCAgICAgICAgICB8IDEwMTAgfCAxMTAwIHwgdmwyX3Byb3AgfCAxMDAwMiB8ICAg ICAgIAorIHYxMSAgICB8IGUxMjEgICB8IHYyMiAgICB8ICAgMTAgfCAgICAgIHwgICAgICAgICAg fCAxMDIwIHwgMTIwMCB8IHZsMl9wcm9wIHwgMTAwMDEgfCAgICAgICAKKyB2MTEgICAgfCBlMTMx ICAgfCB2MzMgICAgfCAgIDEwIHwgICAgICB8ICAgICAgICAgIHwgMjAzMCB8ICAgICAgfCB2bDNf cHJvcCB8IDEwMDAzIHwgICAgICAgCisgdjExICAgIHwgZTEzMiAgIHwgdjMxICAgIHwgICAxMCB8 ICAgICAgfCAgICAgICAgICB8IDIwMTAgfCAgICAgIHwgdmwzX3Byb3AgfCAxMDAwNCB8ICAgICAg IAorIHYyMiAgICB8IGUyMzEgICB8IHYzMiAgICB8IDEwMjAgfCAxMjAwIHwgdmwyX3Byb3AgfCAy MDIwIHwgICAgICB8IHZsM19wcm9wIHwgICAgICAgfCAxMDAwNTAKKyg1IHJvd3MpCisKKy0tIHRo cmVlIGxhYmVsIGRpc2p1bmN0aW9uCitzZWxlY3QgKiBmcm9tIGdyYXBoX3RhYmxlIChnMSBtYXRj aCAoc3JjIElTIHZsMSB8IHZsMiB8IHZsMyktW2Nvbm5dLT4oZGVzdCkgY29sdW1ucyAoc3JjLnZu YW1lIGFzIHN2bmFtZSwgY29ubi5lbmFtZSBhcyBjZW5hbWUsIGRlc3Qudm5hbWUgYXMgZHZuYW1l KSk7Cisgc3ZuYW1lIHwgY2VuYW1lIHwgZHZuYW1lIAorLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0KKyB2MTIgICAgfCBlMTIyICAgfCB2MjEKKyB2MTEgICAgfCBlMTIxICAgfCB2MjIKKyB2MTEg ICAgfCBlMTMxICAgfCB2MzMKKyB2MTEgICAgfCBlMTMyICAgfCB2MzEKKyB2MjIgICAgfCBlMjMx ICAgfCB2MzIKKyg1IHJvd3MpCisKKy0tIGdyYXBoJ2ljYWwgcXVlcnk6IGZpbmQgYSB2ZXJ0ZXgg d2hpY2ggaXMgbm90IGNvbm5lY3RlZCB0byBhbnkgb3RoZXIgdmVydGV4IGFzIGEgc291cmNlIG9y IGEgZGVzdGluYXRpb24uCit3aXRoIGFsbF9jb25uZWN0ZWRfdmVydGljZXMgYXMgKHNlbGVjdCBz dm4sIGR2biBmcm9tIGdyYXBoX3RhYmxlIChnMSBtYXRjaCAoc3JjKS1bY29ubl0tPihkZXN0KSBj b2x1bW5zIChzcmMudm5hbWUgYXMgc3ZuLCBkZXN0LnZuYW1lIGFzIGR2bikpKSwKKyAgICBhbGxf dmVydGljZXMgYXMgKHNlbGVjdCB2biBmcm9tIGdyYXBoX3RhYmxlIChnMSBtYXRjaCAodmVydGV4 KSBjb2x1bW5zICh2ZXJ0ZXgudm5hbWUgYXMgdm4pKSkKK3NlbGVjdCB2biBmcm9tIGFsbF92ZXJ0 aWNlcyBleGNlcHQgKHNlbGVjdCBzdm4gZnJvbSBhbGxfY29ubmVjdGVkX3ZlcnRpY2VzIHVuaW9u IHNlbGVjdCBkdm4gZnJvbSBhbGxfY29ubmVjdGVkX3ZlcnRpY2VzKTsKKyB2biAgCistLS0tLQor IHYxMworIHYyMworKDIgcm93cykKKworLS0gcXVlcnkgYWxsIGNvbm5lY3Rpb25zIHVzaW5nIGEg bGFiZWwgc2hhcmVkIGJ5IHZlcnRpY2VzIGFuZCBlZGdlcworc2VsZWN0IHNuLCBjbiwgZG4gZnJv bSBncmFwaF90YWJsZSAoZzEgbWF0Y2ggKHNyYyA6IGwxKS1bY29ubiA6IGwxXS0+KGRlc3QgOiBs MSkgY29sdW1ucyAoc3JjLmVsbmFtZSBhcyBzbiwgY29ubi5lbG5hbWUgYXMgY24sIGRlc3QuZWxu YW1lIGFzIGRuKSk7Cisgc24gIHwgIGNuICB8IGRuICAKKy0tLS0tKy0tLS0tLSstLS0tLQorIHYx MiB8IGUxMjIgfCB2MjEKKyB2MTEgfCBlMTIxIHwgdjIyCisgdjExIHwgZTEzMSB8IHYzMworIHYx MSB8IGUxMzIgfCB2MzEKKyB2MjIgfCBlMjMxIHwgdjMyCisoNSByb3dzKQorCistLSBwcm9wZXJ0 eSBncmFwaCB3aXRoIHNvbWUgb2YgdGhlIGVsZW1lbnRzLCBsYWJlbHMgYW5kIHByb3BlcnRpZXMg c2FtZSBhcyB0aGUKKy0tIHByZXZpb3VzIG9uZS4gVGVzdCB3aGV0aGVyIGNvbXBvbmVudHMgZnJv bSB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IGdyYXBoIGFyZQorLS0gdXNlZC4KK2NyZWF0ZSBwcm9w ZXJ0eSBncmFwaCBnMgordmVydGV4IHRhYmxlcyAoCisJdjEKKyAgICAgICAgbGFiZWwgbDEgcHJv cGVydGllcyAoJ2cyLicgfHwgdm5hbWUgYXMgZWxuYW1lKSwKKwl2MiBrZXkgKGlkMSwgaWQyKQor ICAgICAgICBsYWJlbCBsMSBwcm9wZXJ0aWVzICgnZzIuJyB8fCB2bmFtZSBhcyBlbG5hbWUpLAor CXYzCisgICAgICAgIGxhYmVsIGwxIHByb3BlcnRpZXMgKCdnMi4nIHx8IHZuYW1lIGFzIGVsbmFt ZSkKKykKK2VkZ2UgdGFibGVzICgKKwllMV8yIGtleSAoaWRfMSwgaWRfMl8xLCBpZF8yXzIpCisJ CXNvdXJjZSBrZXkgKGlkXzEpIHJlZmVyZW5jZXMgdjEgKGlkKQorCQlkZXN0aW5hdGlvbiBrZXkg KGlkXzJfMSwgaWRfMl8yKSByZWZlcmVuY2VzIHYyIChpZDEsIGlkMikKKyAgICAgICAgbGFiZWwg bDEgcHJvcGVydGllcyAoJ2cyLicgfHwgZW5hbWUgYXMgZWxuYW1lKSwKKwllMV8zCisJCXNvdXJj ZSBrZXkgKGlkXzEpIHJlZmVyZW5jZXMgdjEgKGlkKQorCQlkZXN0aW5hdGlvbiBrZXkgKGlkXzMp IHJlZmVyZW5jZXMgdjMgKGlkKQorICAgICAgICBsYWJlbCBsMSBwcm9wZXJ0aWVzICgnZzIuJyB8 fCBlbmFtZSBhcyBlbG5hbWUpLAorICAgIGUyXzMga2V5IChpZF8yXzEsIGlkXzJfMiwgaWRfMykK KyAgICAgICAgc291cmNlIGtleSAoaWRfMl8xLCBpZF8yXzIpIHJlZmVyZW5jZXMgdjIgKGlkMSwg aWQyKQorICAgICAgICBkZXN0aW5hdGlvbiBrZXkgKGlkXzMpIHJlZmVyZW5jZXMgdjMgKGlkKQor ICAgICAgICBsYWJlbCBsMSBwcm9wZXJ0aWVzICgnZzIuJyB8fCBlbmFtZSBhcyBlbG5hbWUpCisp Oworc2VsZWN0IHNuLCBjbiwgZG4gZnJvbSBncmFwaF90YWJsZSAoZzIgbWF0Y2ggKHNyYyA6IGwx KS1bY29ubiA6IGwxXS0+KGRlc3QgOiBsMSkgY29sdW1ucyAoc3JjLmVsbmFtZSBhcyBzbiwgY29u bi5lbG5hbWUgYXMgY24sIGRlc3QuZWxuYW1lIGFzIGRuKSk7CisgICBzbiAgIHwgICBjbiAgICB8 ICAgZG4gICAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLQorIGcyLnYxMiB8IGcyLmUxMjIg fCBnMi52MjEKKyBnMi52MTEgfCBnMi5lMTIxIHwgZzIudjIyCisgZzIudjExIHwgZzIuZTEzMSB8 IGcyLnYzMworIGcyLnYxMSB8IGcyLmUxMzIgfCBnMi52MzEKKyBnMi52MjIgfCBnMi5lMjMxIHwg ZzIudjMyCisoNSByb3dzKQorCitDUkVBVEUgVklFVyBjdXN0b21lcnNfdXMgQVMgU0VMRUNUIGN1 c3RvbWVyX25hbWUgRlJPTSBHUkFQSF9UQUJMRSAobXlzaG9wIE1BVENIIChjIElTIGN1c3RvbWVy cyBXSEVSRSBjLmFkZHJlc3MgPSAnVVMnKS1bSVMgY3VzdG9tZXJfb3JkZXJzXS0+KG8gSVMgb3Jk ZXJzKSBDT0xVTU5TIChjLm5hbWUgQVMgY3VzdG9tZXJfbmFtZSkpOworU0VMRUNUIHBnX2dldF92 aWV3ZGVmKCdjdXN0b21lcnNfdXMnOjpyZWdjbGFzcyk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dl dF92aWV3ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBjdXN0b21lcl9uYW1lICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgRlJPTSBHUkFQSF9UQUJMRSAobXlzaG9wIE1BVENIIChjIElT IGN1c3RvbWVycyBXSEVSRSAoKGMuYWRkcmVzcyk6OnRleHQgPSAnVVMnOjp0ZXh0KSktW0lTIGN1 c3RvbWVyX29yZGVyc10tPihvIElTIG9yZGVycykgQ09MVU1OUyAoYy5uYW1lIEFTIGN1c3RvbWVy X25hbWUpKTsKKygxIHJvdykKKworLS0gdGVzdCB2aWV3L2dyYXBoIG5lc3RpbmcKK0NSRUFURSBW SUVXIGN1c3RvbWVyc192aWV3IEFTIFNFTEVDVCBjdXN0b21lcl9pZCwgJ3JlZGFjdGVkJyB8fCBj dXN0b21lcl9pZCBBUyBuYW1lX3JlZGFjdGVkLCBhZGRyZXNzIEZST00gY3VzdG9tZXJzOworU0VM RUNUICogRlJPTSBjdXN0b21lcnM7CisgY3VzdG9tZXJfaWQgfCAgIG5hbWUgICAgfCBhZGRyZXNz IAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IGN1 c3RvbWVyMSB8IFVTCisgICAgICAgICAgIDIgfCBjdXN0b21lcjIgfCBDQQorICAgICAgICAgICAz IHwgY3VzdG9tZXIzIHwgR0wKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gY3VzdG9tZXJzX3Zp ZXc7CisgY3VzdG9tZXJfaWQgfCBuYW1lX3JlZGFjdGVkIHwgYWRkcmVzcyAKKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQorICAgICAgICAgICAxIHwgcmVkYWN0ZWQxICAg ICB8IFVTCisgICAgICAgICAgIDIgfCByZWRhY3RlZDIgICAgIHwgQ0EKKyAgICAgICAgICAgMyB8 IHJlZGFjdGVkMyAgICAgfCBHTAorKDMgcm93cykKKworQ1JFQVRFIFBST1BFUlRZIEdSQVBIIG15 c2hvcDIKKyAgICBWRVJURVggVEFCTEVTICgKKyAgICAgICAgcHJvZHVjdHMsCisgICAgICAgIGN1 c3RvbWVyc192aWV3IEtFWSAoY3VzdG9tZXJfaWQpIExBQkVMIGN1c3RvbWVycywKKyAgICAgICAg b3JkZXJzCisgICAgKQorICAgIEVER0UgVEFCTEVTICgKKyAgICAgICAgb3JkZXJfaXRlbXMgS0VZ IChvcmRlcl9pdGVtc19pZCkKKyAgICAgICAgICAgIFNPVVJDRSBLRVkgKG9yZGVyX2lkKSBSRUZF UkVOQ0VTIG9yZGVycyAob3JkZXJfaWQpCisgICAgICAgICAgICBERVNUSU5BVElPTiBLRVkgKHBy b2R1Y3Rfbm8pIFJFRkVSRU5DRVMgcHJvZHVjdHMgKHByb2R1Y3Rfbm8pLAorICAgICAgICBjdXN0 b21lcl9vcmRlcnMgS0VZIChjdXN0b21lcl9vcmRlcnNfaWQpCisgICAgICAgICAgICBTT1VSQ0Ug S0VZIChjdXN0b21lcl9pZCkgUkVGRVJFTkNFUyBjdXN0b21lcnNfdmlldyAoY3VzdG9tZXJfaWQp CisgICAgICAgICAgICBERVNUSU5BVElPTiBLRVkgKG9yZGVyX2lkKSBSRUZFUkVOQ0VTIG9yZGVy cyAob3JkZXJfaWQpCisgICAgKTsKK0NSRUFURSBWSUVXIGN1c3RvbWVyc191c19yZWRhY3RlZCBB UyBTRUxFQ1QgKiBGUk9NIEdSQVBIX1RBQkxFIChteXNob3AyIE1BVENIIChjIElTIGN1c3RvbWVy cyBXSEVSRSBjLmFkZHJlc3MgPSAnVVMnKS1bSVMgY3VzdG9tZXJfb3JkZXJzXS0+KG8gSVMgb3Jk ZXJzKSBDT0xVTU5TIChjLm5hbWVfcmVkYWN0ZWQgQVMgY3VzdG9tZXJfbmFtZV9yZWRhY3RlZCkp OworU0VMRUNUICogRlJPTSBjdXN0b21lcnNfdXNfcmVkYWN0ZWQ7CisgY3VzdG9tZXJfbmFtZV9y ZWRhY3RlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZGFjdGVkMQorKDEgcm93KQor CistLSBsZWF2ZSBmb3IgcGdfdXBncmFkZS9wZ19kdW1wIHRlc3RzCistLURST1AgU0NIRU1BIGdy YXBoX3RhYmxlX3Rlc3RzIENBU0NBREU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL29iamVjdF9hZGRyZXNzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2Jq ZWN0X2FkZHJlc3Mub3V0CmluZGV4IGZjNDJkNDE4YmYuLjQzMmJhNDcxZmUgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2JqZWN0X2FkZHJlc3Mub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2JqZWN0X2FkZHJlc3Mub3V0CkBAIC0zNCw2ICszNCw3IEBA IENSRUFURSBGVU5DVElPTiBhZGRyX25zcC50cmlnKCkgUkVUVVJOUyBUUklHR0VSIExBTkdVQUdF IHBscGdzcWwgQVMgJCQgQkVHSU4gRU5ECiBDUkVBVEUgVFJJR0dFUiB0IEJFRk9SRSBJTlNFUlQg T04gYWRkcl9uc3AuZ2VudGFibGUgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIGFkZHJf bnNwLnRyaWcoKTsKIENSRUFURSBQT0xJQ1kgZ2VucG9sIE9OIGFkZHJfbnNwLmdlbnRhYmxlOwog Q1JFQVRFIFBST0NFRFVSRSBhZGRyX25zcC5wcm9jKGludDQpIExBTkdVQUdFIFNRTCBBUyAkJCAk JDsKK0NSRUFURSBQUk9QRVJUWSBHUkFQSCBhZGRyX25zcC5nZW5ncmFwaDsKIENSRUFURSBTRVJW RVIgImludGVnZXIiIEZPUkVJR04gREFUQSBXUkFQUEVSIGFkZHJfZmR3OwogQ1JFQVRFIFVTRVIg TUFQUElORyBGT1IgcmVncmVzc19hZGRyX3VzZXIgU0VSVkVSICJpbnRlZ2VyIjsKIEFMVEVSIERF RkFVTFQgUFJJVklMRUdFUyBGT1IgUk9MRSByZWdyZXNzX2FkZHJfdXNlciBJTiBTQ0hFTUEgcHVi bGljIEdSQU5UIEFMTCBPTiBUQUJMRVMgVE8gcmVncmVzc19hZGRyX3VzZXI7CkBAIC05OCw3ICs5 OSw3IEBAIERFQ0xBUkUKIEJFR0lOCiAgICAgRk9SIG9ianR5cGUgSU4gVkFMVUVTCiAgICAgICAg ICgndGFibGUnKSwgKCdpbmRleCcpLCAoJ3NlcXVlbmNlJyksICgndmlldycpLAotICAgICAgICAo J21hdGVyaWFsaXplZCB2aWV3JyksICgnZm9yZWlnbiB0YWJsZScpLAorICAgICAgICAoJ21hdGVy aWFsaXplZCB2aWV3JyksICgnZm9yZWlnbiB0YWJsZScpLCAoJ3Byb3BlcnR5IGdyYXBoJyksCiAg ICAgICAgICgndGFibGUgY29sdW1uJyksICgnZm9yZWlnbiB0YWJsZSBjb2x1bW4nKSwKICAgICAg ICAgKCdhZ2dyZWdhdGUnKSwgKCdmdW5jdGlvbicpLCAoJ3Byb2NlZHVyZScpLCAoJ3R5cGUnKSwg KCdjYXN0JyksCiAgICAgICAgICgndGFibGUgY29uc3RyYWludCcpLCAoJ2RvbWFpbiBjb25zdHJh aW50JyksICgnY29udmVyc2lvbicpLCAoJ2RlZmF1bHQgdmFsdWUnKSwKQEAgLTE1OSw2ICsxNjAs MTIgQEAgV0FSTklORzogIGVycm9yIGZvciBmb3JlaWduIHRhYmxlLHthZGRyX25zcCx6d2VpfSx7 fTogcmVsYXRpb24gImFkZHJfbnNwLnp3ZWkiIGQKIFdBUk5JTkc6ICBlcnJvciBmb3IgZm9yZWln biB0YWJsZSx7YWRkcl9uc3AsendlaX0se2ludGVnZXJ9OiByZWxhdGlvbiAiYWRkcl9uc3Auendl aSIgZG9lcyBub3QgZXhpc3QKIFdBUk5JTkc6ICBlcnJvciBmb3IgZm9yZWlnbiB0YWJsZSx7ZWlu cyx6d2VpLGRyZWl9LHt9OiBjcm9zcy1kYXRhYmFzZSByZWZlcmVuY2VzIGFyZSBub3QgaW1wbGVt ZW50ZWQ6ICJlaW5zLnp3ZWkuZHJlaSIKIFdBUk5JTkc6ICBlcnJvciBmb3IgZm9yZWlnbiB0YWJs ZSx7ZWlucyx6d2VpLGRyZWl9LHtpbnRlZ2VyfTogY3Jvc3MtZGF0YWJhc2UgcmVmZXJlbmNlcyBh cmUgbm90IGltcGxlbWVudGVkOiAiZWlucy56d2VpLmRyZWkiCitXQVJOSU5HOiAgZXJyb3IgZm9y IHByb3BlcnR5IGdyYXBoLHtlaW5zfSx7fTogcmVsYXRpb24gImVpbnMiIGRvZXMgbm90IGV4aXN0 CitXQVJOSU5HOiAgZXJyb3IgZm9yIHByb3BlcnR5IGdyYXBoLHtlaW5zfSx7aW50ZWdlcn06IHJl bGF0aW9uICJlaW5zIiBkb2VzIG5vdCBleGlzdAorV0FSTklORzogIGVycm9yIGZvciBwcm9wZXJ0 eSBncmFwaCx7YWRkcl9uc3AsendlaX0se306IHJlbGF0aW9uICJhZGRyX25zcC56d2VpIiBkb2Vz IG5vdCBleGlzdAorV0FSTklORzogIGVycm9yIGZvciBwcm9wZXJ0eSBncmFwaCx7YWRkcl9uc3As endlaX0se2ludGVnZXJ9OiByZWxhdGlvbiAiYWRkcl9uc3AuendlaSIgZG9lcyBub3QgZXhpc3QK K1dBUk5JTkc6ICBlcnJvciBmb3IgcHJvcGVydHkgZ3JhcGgse2VpbnMsendlaSxkcmVpfSx7fTog Y3Jvc3MtZGF0YWJhc2UgcmVmZXJlbmNlcyBhcmUgbm90IGltcGxlbWVudGVkOiAiZWlucy56d2Vp LmRyZWkiCitXQVJOSU5HOiAgZXJyb3IgZm9yIHByb3BlcnR5IGdyYXBoLHtlaW5zLHp3ZWksZHJl aX0se2ludGVnZXJ9OiBjcm9zcy1kYXRhYmFzZSByZWZlcmVuY2VzIGFyZSBub3QgaW1wbGVtZW50 ZWQ6ICJlaW5zLnp3ZWkuZHJlaSIKIFdBUk5JTkc6ICBlcnJvciBmb3IgdGFibGUgY29sdW1uLHtl aW5zfSx7fTogY29sdW1uIG5hbWUgbXVzdCBiZSBxdWFsaWZpZWQKIFdBUk5JTkc6ICBlcnJvciBm b3IgdGFibGUgY29sdW1uLHtlaW5zfSx7aW50ZWdlcn06IGNvbHVtbiBuYW1lIG11c3QgYmUgcXVh bGlmaWVkCiBXQVJOSU5HOiAgZXJyb3IgZm9yIHRhYmxlIGNvbHVtbix7YWRkcl9uc3AsendlaX0s e306IHJlbGF0aW9uICJhZGRyX25zcCIgZG9lcyBub3QgZXhpc3QKQEAgLTM5OCw2ICs0MDUsNyBA QCBXSVRIIG9iamVjdHMgKHR5cGUsIG5hbWUsIGFyZ3MpIEFTIChWQUxVRVMKICAgICAoJ3ZpZXcn LCAne2FkZHJfbnNwLCBnZW52aWV3fScsICd7fScpLAogICAgICgnbWF0ZXJpYWxpemVkIHZpZXcn LCAne2FkZHJfbnNwLCBnZW5tYXR2aWV3fScsICd7fScpLAogICAgICgnZm9yZWlnbiB0YWJsZScs ICd7YWRkcl9uc3AsIGdlbmZ0YWJsZX0nLCAne30nKSwKKyAgICAoJ3Byb3BlcnR5IGdyYXBoJywg J3thZGRyX25zcCwgZ2VuZ3JhcGh9JywgJ3t9JyksCiAgICAgKCd0YWJsZSBjb2x1bW4nLCAne2Fk ZHJfbnNwLCBnZW50YWJsZSwgYn0nLCAne30nKSwKICAgICAoJ2ZvcmVpZ24gdGFibGUgY29sdW1u JywgJ3thZGRyX25zcCwgZ2VuZnRhYmxlLCBhfScsICd7fScpLAogICAgICgnYWdncmVnYXRlJywg J3thZGRyX25zcCwgZ2VuYWdncn0nLCAne2ludDR9JyksCkBAIC00NzQsNiArNDgyLDcgQEAgdmll d3xhZGRyX25zcHxnZW52aWV3fGFkZHJfbnNwLmdlbnZpZXd8dAogbWF0ZXJpYWxpemVkIHZpZXd8 YWRkcl9uc3B8Z2VubWF0dmlld3xhZGRyX25zcC5nZW5tYXR2aWV3fHQKIGZvcmVpZ24gdGFibGV8 YWRkcl9uc3B8Z2VuZnRhYmxlfGFkZHJfbnNwLmdlbmZ0YWJsZXx0CiBmb3JlaWduIHRhYmxlIGNv bHVtbnxhZGRyX25zcHxnZW5mdGFibGV8YWRkcl9uc3AuZ2VuZnRhYmxlLmF8dAorcHJvcGVydHkg Z3JhcGh8YWRkcl9uc3B8Z2VuZ3JhcGh8YWRkcl9uc3AuZ2VuZ3JhcGh8dAogcm9sZXxOVUxMfHJl Z3Jlc3NfYWRkcl91c2VyfHJlZ3Jlc3NfYWRkcl91c2VyfHQKIHNlcnZlcnxOVUxMfGFkZHJfZnNl cnZ8YWRkcl9mc2Vydnx0CiB1c2VyIG1hcHBpbmd8TlVMTHxOVUxMfHJlZ3Jlc3NfYWRkcl91c2Vy IG9uIHNlcnZlciBpbnRlZ2VyfHQKQEAgLTUxOCw3ICs1MjcsNyBAQCBEUk9QIFBVQkxJQ0FUSU9O IGFkZHJfcHViOwogRFJPUCBQVUJMSUNBVElPTiBhZGRyX3B1Yl9zY2hlbWE7CiBEUk9QIFNVQlND UklQVElPTiByZWdyZXNzX2FkZHJfc3ViOwogRFJPUCBTQ0hFTUEgYWRkcl9uc3AgQ0FTQ0FERTsK LU5PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMTQgb3RoZXIgb2JqZWN0cworTk9USUNFOiAgZHJv cCBjYXNjYWRlcyB0byAxNSBvdGhlciBvYmplY3RzCiBERVRBSUw6ICBkcm9wIGNhc2NhZGVzIHRv IHRleHQgc2VhcmNoIGRpY3Rpb25hcnkgYWRkcl90c19kaWN0CiBkcm9wIGNhc2NhZGVzIHRvIHRl eHQgc2VhcmNoIGNvbmZpZ3VyYXRpb24gYWRkcl90c19jb25mCiBkcm9wIGNhc2NhZGVzIHRvIHRl eHQgc2VhcmNoIHRlbXBsYXRlIGFkZHJfdHNfdGVtcApAQCAtNTMzLDYgKzU0Miw3IEBAIGRyb3Ag Y2FzY2FkZXMgdG8gZnVuY3Rpb24gZ2VuYWdncihpbnRlZ2VyKQogZHJvcCBjYXNjYWRlcyB0byB0 eXBlIGdlbmRvbWFpbgogZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiB0cmlnKCkKIGRyb3AgY2Fz Y2FkZXMgdG8gZnVuY3Rpb24gcHJvYyhpbnRlZ2VyKQorZHJvcCBjYXNjYWRlcyB0byBwcm9wZXJ0 eSBncmFwaCBnZW5ncmFwaAogRFJPUCBPV05FRCBCWSByZWdyZXNzX2FkZHJfdXNlcjsKIERST1Ag VVNFUiByZWdyZXNzX2FkZHJfdXNlcjsKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL29pZGpvaW5zLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lkam9p bnMub3V0CmluZGV4IDIxNWViODk5YmUuLjNiNDFmYzdiYTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lkam9pbnMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvb2lkam9pbnMub3V0CkBAIC0yNjYsMyArMjY2LDE0IEBAIE5PVElDRTogIGNoZWNraW5n IHBnX3N1YnNjcmlwdGlvbiB7c3ViZGJpZH0gPT4gcGdfZGF0YWJhc2Uge29pZH0KIE5PVElDRTog IGNoZWNraW5nIHBnX3N1YnNjcmlwdGlvbiB7c3Vib3duZXJ9ID0+IHBnX2F1dGhpZCB7b2lkfQog Tk9USUNFOiAgY2hlY2tpbmcgcGdfc3Vic2NyaXB0aW9uX3JlbCB7c3JzdWJpZH0gPT4gcGdfc3Vi c2NyaXB0aW9uIHtvaWR9CiBOT1RJQ0U6ICBjaGVja2luZyBwZ19zdWJzY3JpcHRpb25fcmVsIHtz cnJlbGlkfSA9PiBwZ19jbGFzcyB7b2lkfQorTk9USUNFOiAgY2hlY2tpbmcgcGdfcHJvcGdyYXBo X2VsZW1lbnQge3BnZXBnaWR9ID0+IHBnX2NsYXNzIHtvaWR9CitOT1RJQ0U6ICBjaGVja2luZyBw Z19wcm9wZ3JhcGhfZWxlbWVudCB7cGdlcmVsaWR9ID0+IHBnX2NsYXNzIHtvaWR9CitOT1RJQ0U6 ICBjaGVja2luZyBwZ19wcm9wZ3JhcGhfZWxlbWVudCB7cGdlc3JjdmVydGV4aWR9ID0+IHBnX3By b3BncmFwaF9lbGVtZW50IHtvaWR9CitOT1RJQ0U6ICBjaGVja2luZyBwZ19wcm9wZ3JhcGhfZWxl bWVudCB7cGdlZGVzdHZlcnRleGlkfSA9PiBwZ19wcm9wZ3JhcGhfZWxlbWVudCB7b2lkfQorTk9U SUNFOiAgY2hlY2tpbmcgcGdfcHJvcGdyYXBoX2VsZW1lbnRfbGFiZWwge3BnZWxsYWJlbGlkfSA9 PiBwZ19wcm9wZ3JhcGhfbGFiZWwge29pZH0KK05PVElDRTogIGNoZWNraW5nIHBnX3Byb3BncmFw aF9lbGVtZW50X2xhYmVsIHtwZ2VsZWxpZH0gPT4gcGdfcHJvcGdyYXBoX2VsZW1lbnQge29pZH0K K05PVElDRTogIGNoZWNraW5nIHBnX3Byb3BncmFwaF9sYWJlbCB7cGdscGdpZH0gPT4gcGdfY2xh c3Mge29pZH0KK05PVElDRTogIGNoZWNraW5nIHBnX3Byb3BncmFwaF9sYWJlbF9wcm9wZXJ0eSB7 cGxwcHJvcGlkfSA9PiBwZ19wcm9wZ3JhcGhfcHJvcGVydHkge29pZH0KK05PVElDRTogIGNoZWNr aW5nIHBnX3Byb3BncmFwaF9sYWJlbF9wcm9wZXJ0eSB7cGxwZWxsYWJlbGlkfSA9PiBwZ19wcm9w Z3JhcGhfZWxlbWVudF9sYWJlbCB7b2lkfQorTk9USUNFOiAgY2hlY2tpbmcgcGdfcHJvcGdyYXBo X3Byb3BlcnR5IHtwZ3BwZ2lkfSA9PiBwZ19jbGFzcyB7b2lkfQorTk9USUNFOiAgY2hlY2tpbmcg cGdfcHJvcGdyYXBoX3Byb3BlcnR5IHtwZ3B0eXBpZH0gPT4gcGdfdHlwZSB7b2lkfQpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggZjUzYTUyNmY3Yy4uYWE3ZDFlY2RjZSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC00OCw3ICs0OCw3IEBAIHRlc3Q6IGNyZWF0ZV9p bmRleCBjcmVhdGVfaW5kZXhfc3BnaXN0IGNyZWF0ZV92aWV3IGluZGV4X2luY2x1ZGluZyBpbmRl eF9pbmNsdWRpCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0 cwogIyAtLS0tLS0tLS0tCi10ZXN0OiBjcmVhdGVfYWdncmVnYXRlIGNyZWF0ZV9mdW5jdGlvbl9z cWwgY3JlYXRlX2Nhc3QgY29uc3RyYWludHMgdHJpZ2dlcnMgc2VsZWN0IGluaGVyaXQgdHlwZWRf dGFibGUgdmFjdXVtIGRyb3BfaWZfZXhpc3RzIHVwZGF0YWJsZV92aWV3cyByb2xlYXR0cmlidXRl cyBjcmVhdGVfYW0gaGFzaF9mdW5jIGVycm9ycyBpbmZpbml0ZV9yZWN1cnNlCit0ZXN0OiBjcmVh dGVfYWdncmVnYXRlIGNyZWF0ZV9mdW5jdGlvbl9zcWwgY3JlYXRlX2Nhc3QgY29uc3RyYWludHMg dHJpZ2dlcnMgc2VsZWN0IGluaGVyaXQgdHlwZWRfdGFibGUgdmFjdXVtIGRyb3BfaWZfZXhpc3Rz IHVwZGF0YWJsZV92aWV3cyByb2xlYXR0cmlidXRlcyBjcmVhdGVfYW0gaGFzaF9mdW5jIGVycm9y cyBpbmZpbml0ZV9yZWN1cnNlIGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaAogCiAjIC0tLS0tLS0tLS0K ICMgc2FuaXR5X2NoZWNrIGRvZXMgYSB2YWN1dW0sIGFmZmVjdGluZyB0aGUgc29ydCBvcmRlciBv ZiBTRUxFQ1QgKgpAQCAtNzgsNyArNzgsNyBAQCB0ZXN0OiBicmluX2Jsb29tIGJyaW5fbXVsdGkK ICMgcHNxbCBkZXBlbmRzIG9uIGNyZWF0ZV9hbQogIyBhbXV0aWxzIGRlcGVuZHMgb24gZ2VvbWV0 cnksIGNyZWF0ZV9pbmRleF9zcGdpc3QsIGhhc2hfaW5kZXgsIGJyaW4KICMgLS0tLS0tLS0tLQot dGVzdDogY3JlYXRlX3RhYmxlX2xpa2UgYWx0ZXJfZ2VuZXJpYyBhbHRlcl9vcGVyYXRvciBtaXNj IGFzeW5jIGRic2l6ZSBtZXJnZSBtaXNjX2Z1bmN0aW9ucyBzeXN2aWV3cyB0c3JmIHRpZCB0aWRz Y2FuIHRpZHJhbmdlc2NhbiBjb2xsYXRlLnV0ZjggY29sbGF0ZS5pY3UudXRmOCBpbmNyZW1lbnRh bF9zb3J0IGNyZWF0ZV9yb2xlCit0ZXN0OiBjcmVhdGVfdGFibGVfbGlrZSBhbHRlcl9nZW5lcmlj IGFsdGVyX29wZXJhdG9yIG1pc2MgYXN5bmMgZGJzaXplIG1lcmdlIG1pc2NfZnVuY3Rpb25zIHN5 c3ZpZXdzIHRzcmYgdGlkIHRpZHNjYW4gdGlkcmFuZ2VzY2FuIGNvbGxhdGUudXRmOCBjb2xsYXRl LmljdS51dGY4IGluY3JlbWVudGFsX3NvcnQgY3JlYXRlX3JvbGUgZ3JhcGhfdGFibGUKIAogIyBj b2xsYXRlLmxpbnV4LnV0ZjggYW5kIGNvbGxhdGUuaWN1LnV0ZjggdGVzdHMgY2Fubm90IGJlIHJ1 biBpbiBwYXJhbGxlbCB3aXRoIGVhY2ggb3RoZXIKIHRlc3Q6IHJ1bGVzIHBzcWwgcHNxbF9jcm9z c3RhYiBhbXV0aWxzIHN0YXRzX2V4dCBjb2xsYXRlLmxpbnV4LnV0ZjggY29sbGF0ZS53aW5kb3dz LndpbjEyNTIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2FsdGVyX2dlbmVyaWMu c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYWx0ZXJfZ2VuZXJpYy5zcWwKaW5kZXggZGU1OGQy NjhkMy4uMDY3ZDVjMmI0OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYWx0ZXJf Z2VuZXJpYy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYWx0ZXJfZ2VuZXJpYy5zcWwK QEAgLTQ1Niw2ICs0NTYsNDAgQEAgQUxURVIgT1BFUkFUT1IgRkFNSUxZIGFsdF9vcGYxOSBVU0lO RyBidHJlZSBBREQgRlVOQ1RJT04gNSAoaW50NCkgdGVzdF9vcGNsYXNzX28KIEFMVEVSIE9QRVJB VE9SIEZBTUlMWSBhbHRfb3BmMTkgVVNJTkcgYnRyZWUgRFJPUCBGVU5DVElPTiA1IChpbnQ0LCBp bnQ0KTsKIERST1AgT1BFUkFUT1IgRkFNSUxZIGFsdF9vcGYxOSBVU0lORyBidHJlZTsKIAorLS0K Ky0tIFByb3BlcnR5IEdyYXBoCistLQorU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNz X2FsdGVyX2dlbmVyaWNfdXNlcjE7CitDUkVBVEUgUFJPUEVSVFkgR1JBUEggYWx0X2dyYXBoMTsK K0NSRUFURSBQUk9QRVJUWSBHUkFQSCBhbHRfZ3JhcGgyOworQ1JFQVRFIFBST1BFUlRZIEdSQVBI IGFsdF9ncmFwaDM7CisKK0FMVEVSIFBST1BFUlRZIEdSQVBIIGFsdF9ncmFwaDEgUkVOQU1FIFRP IGFsdF9ncmFwaDI7IC0tIGZhaWxlZCAobmFtZSBjb25mbGljdCkKK0FMVEVSIFBST1BFUlRZIEdS QVBIIGFsdF9ncmFwaDEgUkVOQU1FIFRPIGFsdF9ncmFwaDQ7IC0tIE9LCitBTFRFUiBQUk9QRVJU WSBHUkFQSCBhbHRfZ3JhcGgyIE9XTkVSIFRPIHJlZ3Jlc3NfYWx0ZXJfZ2VuZXJpY191c2VyMjsg IC0tIGZhaWxlZCAobm8gcm9sZSBtZW1iZXJzaGlwKQorQUxURVIgUFJPUEVSVFkgR1JBUEggYWx0 X2dyYXBoMiBPV05FUiBUTyByZWdyZXNzX2FsdGVyX2dlbmVyaWNfdXNlcjM7ICAtLSBPSworQUxU RVIgUFJPUEVSVFkgR1JBUEggYWx0X2dyYXBoNCBTRVQgU0NIRU1BIGFsdF9uc3AyOyAgLS0gT0sK K0FMVEVSIFBST1BFUlRZIEdSQVBIIGFsdF9uc3AyLmFsdF9ncmFwaDQgUkVOQU1FIFRPIGFsdF9n cmFwaDI7ICAtLSBPSworQUxURVIgUFJPUEVSVFkgR1JBUEggYWx0X2dyYXBoMiBTRVQgU0NIRU1B IGFsdF9uc3AyOyAgLS0gZmFpbGVkIChuYW1lIGNvbmZsaWN0KQorCitTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OIHJlZ3Jlc3NfYWx0ZXJfZ2VuZXJpY191c2VyMjsKK0NSRUFURSBQUk9QRVJUWSBH UkFQSCBhbHRfZ3JhcGg1OworCitBTFRFUiBQUk9QRVJUWSBHUkFQSCBhbHRfZ3JhcGgzIFJFTkFN RSBUTyBhbHRfZ3JhcGg1OyAgLS0gZmFpbGVkIChub3Qgb3duZXIpCitBTFRFUiBQUk9QRVJUWSBH UkFQSCBhbHRfZ3JhcGg1IFJFTkFNRSBUTyBhbHRfZ3JhcGg2OyAgLS0gT0sKK0FMVEVSIFBST1BF UlRZIEdSQVBIIGFsdF9ncmFwaDMgT1dORVIgVE8gcmVncmVzc19hbHRlcl9nZW5lcmljX3VzZXIy OyAgLS0gZmFpbGVkIChub3Qgb3duZXIpCitBTFRFUiBQUk9QRVJUWSBHUkFQSCBhbHRfZ3JhcGg2 IE9XTkVSIFRPIHJlZ3Jlc3NfYWx0ZXJfZ2VuZXJpY191c2VyMzsgIC0tIGZhaWxlZCAobm8gcm9s ZSBtZW1iZXJzaGlwKQorQUxURVIgUFJPUEVSVFkgR1JBUEggYWx0X2dyYXBoMyBTRVQgU0NIRU1B IGFsdF9uc3AyOyAgLS0gZmFpbGVkIChub3Qgb3duZXIpCisKK1JFU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTjsKKworU0VMRUNUIG5zcG5hbWUsIHJlbG5hbWUsIHJvbG5hbWUKKyAgRlJPTSBwZ19j bGFzcyBjLCBwZ19uYW1lc3BhY2UgbiwgcGdfYXV0aGlkIGEKKyAgV0hFUkUgYy5yZWxuYW1lc3Bh Y2UgPSBuLm9pZCBBTkQgYy5yZWxvd25lciA9IGEub2lkCisgICAgQU5EIG4ubnNwbmFtZSBpbiAo J2FsdF9uc3AxJywgJ2FsdF9uc3AyJykKKyAgICBBTkQgYy5yZWxraW5kID0gJ2cnCisgIE9SREVS IEJZIG5zcG5hbWUsIHJlbG5hbWU7CisKIC0tCiAtLSBTdGF0aXN0aWNzCiAtLQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3Byb3BlcnR5X2dyYXBoLnNxbCBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9wcm9wZXJ0eV9ncmFwaC5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNGY5YjVjMDM0OQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9wcm9wZXJ0eV9ncmFwaC5zcWwKQEAgLTAsMCArMSwx OTAgQEAKK0NSRUFURSBTQ0hFTUEgY3JlYXRlX3Byb3BlcnR5X2dyYXBoX3Rlc3RzOworR1JBTlQg VVNBR0UgT04gU0NIRU1BIGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyBUTyBQVUJMSUM7CitT RVQgc2VhcmNoX3BhdGggPSBjcmVhdGVfcHJvcGVydHlfZ3JhcGhfdGVzdHM7CisKK0NSRUFURSBS T0xFIHJlZ3Jlc3NfZ3JhcGhfdXNlcjE7CitDUkVBVEUgUk9MRSByZWdyZXNzX2dyYXBoX3VzZXIy OworCitDUkVBVEUgUFJPUEVSVFkgR1JBUEggZzE7CisKK0NPTU1FTlQgT04gUFJPUEVSVFkgR1JB UEggZzEgSVMgJ2EgZ3JhcGgnOworCitDUkVBVEUgUFJPUEVSVFkgR1JBUEggZzE7ICAtLSBlcnJv cjogZHVwbGljYXRlCisKK0NSRUFURSBUQUJMRSB0MSAoYSBpbnQsIGIgdGV4dCk7CitDUkVBVEUg VEFCTEUgdDIgKGkgaW50IFBSSU1BUlkgS0VZLCBqIGludCwgayBpbnQpOworQ1JFQVRFIFRBQkxF IHQzICh4IGludCwgeSB0ZXh0LCB6IHRleHQpOworCitDUkVBVEUgVEFCTEUgZTEgKGEgaW50LCBp IGludCwgdCB0ZXh0LCBQUklNQVJZIEtFWSAoYSwgaSkpOworQ1JFQVRFIFRBQkxFIGUyIChhIGlu dCwgeCBpbnQsIHQgdGV4dCk7CisKK0NSRUFURSBQUk9QRVJUWSBHUkFQSCBnMgorICAgIFZFUlRF WCBUQUJMRVMgKHQxIEtFWSAoYSksIHQyIERFRkFVTFQgTEFCRUwsIHQzIEtFWSAoeCkgTEFCRUwg dDNsMSBMQUJFTCB0M2wyKQorICAgIEVER0UgVEFCTEVTICgKKyAgICAgICAgZTEKKyAgICAgICAg ICAgIFNPVVJDRSBLRVkgKGEpIFJFRkVSRU5DRVMgdDEgKGEpCisgICAgICAgICAgICBERVNUSU5B VElPTiBLRVkgKGkpIFJFRkVSRU5DRVMgdDIgKGkpLAorICAgICAgICBlMiBLRVkgKGEsIHgpCisg ICAgICAgICAgICBTT1VSQ0UgS0VZIChhKSBSRUZFUkVOQ0VTIHQxIChhKQorICAgICAgICAgICAg REVTVElOQVRJT04gS0VZICh4LCB0KSBSRUZFUkVOQ0VTIHQzICh4LCB5KQorICAgICk7CisKKy0t IHRlc3QgZGVwZW5kZW5jaWVzL29iamVjdCBkZXNjcmlwdGlvbnMKKworRFJPUCBUQUJMRSB0MTsg IC0tIGZhaWwKK0FMVEVSIFRBQkxFIHQxIERST1AgQ09MVU1OIGI7ICAtLSBub24ta2V5IGNvbHVt bjsgZmFpbAorQUxURVIgVEFCTEUgdDEgRFJPUCBDT0xVTU4gYTsgIC0tIGtleSBjb2x1bW47IGZh aWwKKworLS0gbGlrZSBnMiBidXQgYXNzZW1ibGVkIHdpdGggQUxURVIKK0NSRUFURSBQUk9QRVJU WSBHUkFQSCBnMzsKK0FMVEVSIFBST1BFUlRZIEdSQVBIIGczIEFERCBWRVJURVggVEFCTEVTICh0 MSBLRVkgKGEpLCB0MiBERUZBVUxUIExBQkVMKTsKK0FMVEVSIFBST1BFUlRZIEdSQVBIIGczCisg ICAgQUREIFZFUlRFWCBUQUJMRVMgKHQzIEtFWSAoeCkgTEFCRUwgdDNsMSkKKyAgICBBREQgRURH RSBUQUJMRVMgKAorICAgICAgICBlMSBTT1VSQ0UgS0VZIChhKSBSRUZFUkVOQ0VTIHQxIChhKSBE RVNUSU5BVElPTiBLRVkgKGkpIFJFRkVSRU5DRVMgdDIgKGkpLAorICAgICAgICBlMiBLRVkgKGEs IHgpIFNPVVJDRSBLRVkgKGEpIFJFRkVSRU5DRVMgdDEgKGEpIERFU1RJTkFUSU9OIEtFWSAoeCwg dCkgUkVGRVJFTkNFUyB0MyAoeCwgeSkKKyAgICApOworQUxURVIgUFJPUEVSVFkgR1JBUEggZzMg QUxURVIgVkVSVEVYIFRBQkxFIHQzIEFERCBMQUJFTCB0M2wyIFBST1BFUlRJRVMgQUxMIENPTFVN TlMgQUREIExBQkVMIHQzbDMgUFJPUEVSVElFUyBBTEwgQ09MVU1OUzsKK0FMVEVSIFBST1BFUlRZ IEdSQVBIIGczIEFMVEVSIFZFUlRFWCBUQUJMRSB0MyBEUk9QIExBQkVMIHQzbDN4OyAgLS0gZXJy b3IKK0FMVEVSIFBST1BFUlRZIEdSQVBIIGczIEFMVEVSIFZFUlRFWCBUQUJMRSB0MyBEUk9QIExB QkVMIHQzbDM7CitBTFRFUiBQUk9QRVJUWSBHUkFQSCBnMyBEUk9QIFZFUlRFWCBUQUJMRVMgKHQy KTsgIC0tIGZhaWwgKFRPRE86IGR1YmlvdXMgZXJyb3IgbWVzc2FnZSkKK0FMVEVSIFBST1BFUlRZ IEdSQVBIIGczIERST1AgVkVSVEVYIFRBQkxFUyAodDIpIENBU0NBREU7CitBTFRFUiBQUk9QRVJU WSBHUkFQSCBnMyBEUk9QIEVER0UgVEFCTEVTIChlMik7CisKK0NSRUFURSBQUk9QRVJUWSBHUkFQ SCBnNAorICAgIFZFUlRFWCBUQUJMRVMgKAorICAgICAgICB0MSBLRVkgKGEpIE5PIFBST1BFUlRJ RVMsCisgICAgICAgIHQyIERFRkFVTFQgTEFCRUwgUFJPUEVSVElFUyAoaSArIGogQVMgaV9qLCBr KSwKKyAgICAgICAgdDMgS0VZICh4KSBMQUJFTCB0M2wxIFBST1BFUlRJRVMgKHgsIHkgQVMgeXkp IExBQkVMIHQzbDIgUFJPUEVSVElFUyAoeCwgeiBBUyB6eikKKyAgICApCisgICAgRURHRSBUQUJM RVMgKAorICAgICAgICBlMQorICAgICAgICAgICAgU09VUkNFIEtFWSAoYSkgUkVGRVJFTkNFUyB0 MSAoYSkKKyAgICAgICAgICAgIERFU1RJTkFUSU9OIEtFWSAoaSkgUkVGRVJFTkNFUyB0MiAoaSkK KyAgICAgICAgICAgIFBST1BFUlRJRVMgQUxMIENPTFVNTlMsCisgICAgICAgIGUyIEtFWSAoYSwg eCkKKyAgICAgICAgICAgIFNPVVJDRSBLRVkgKGEpIFJFRkVSRU5DRVMgdDEgKGEpCisgICAgICAg ICAgICBERVNUSU5BVElPTiBLRVkgKHgsIHQpIFJFRkVSRU5DRVMgdDMgKHgsIHkpCisgICAgICAg ICAgICBQUk9QRVJUSUVTIEFMTCBDT0xVTU5TCisgICAgKTsKKworQUxURVIgUFJPUEVSVFkgR1JB UEggZzQgQUxURVIgVkVSVEVYIFRBQkxFIHQyIEFMVEVSIExBQkVMIHQyIEFERCBQUk9QRVJUSUVT IChrICogMiBBUyBrayk7CitBTFRFUiBQUk9QRVJUWSBHUkFQSCBnNCBBTFRFUiBWRVJURVggVEFC TEUgdDIgQUxURVIgTEFCRUwgdDIgRFJPUCBQUk9QRVJUSUVTIChrKTsKKworQ1JFQVRFIFRBQkxF IHQxMSAoYSBpbnQgUFJJTUFSWSBLRVkpOworQ1JFQVRFIFRBQkxFIHQxMiAoYiBpbnQgUFJJTUFS WSBLRVkpOworQ1JFQVRFIFRBQkxFIHQxMyAoCisgICAgYyBpbnQgUFJJTUFSWSBLRVksCisgICAg ZCBpbnQgUkVGRVJFTkNFUyB0MTEsCisgICAgZSBpbnQgUkVGRVJFTkNFUyB0MTIKKyk7CisKK0NS RUFURSBQUk9QRVJUWSBHUkFQSCBnNQorICAgIFZFUlRFWCBUQUJMRVMgKHQxMSwgdDEyKQorICAg IEVER0UgVEFCTEVTICh0MTMgU09VUkNFIHQxMSBERVNUSU5BVElPTiB0MTIpOworCitTRUxFQ1Qg cGdfZ2V0X3Byb3BncmFwaGRlZignZzUnOjpyZWdjbGFzcyk7CisKKy0tIGVycm9yIGNhc2VzCitD UkVBVEUgUFJPUEVSVFkgR1JBUEggZ3ggVkVSVEVYIFRBQkxFUyAoeHgsIHl5KTsKK0NSRUFURSBQ Uk9QRVJUWSBHUkFQSCBneCBWRVJURVggVEFCTEVTICh0MSBLRVkgKGEpLCB0MiBLRVkgKGkpLCB0 MSBLRVkgKGEpKTsKK0NSRUFURSBQUk9QRVJUWSBHUkFQSCBneAorICAgIFZFUlRFWCBUQUJMRVMg KHQxIEFTIHR0IEtFWSAoYSksIHQyIEtFWSAoaSkpCisgICAgRURHRSBUQUJMRVMgKAorICAgICAg ICBlMSBTT1VSQ0UgdDEgREVTVElOQVRJT04gdDIKKyAgICApOworQ1JFQVRFIFBST1BFUlRZIEdS QVBIIGd4CisgICAgVkVSVEVYIFRBQkxFUyAodDEgS0VZIChhKSwgdDIgS0VZIChpKSkKKyAgICBF REdFIFRBQkxFUyAoCisgICAgICAgIGUxIFNPVVJDRSB0MSBERVNUSU5BVElPTiB0eAorICAgICk7 CitDT01NRU5UIE9OIFBST1BFUlRZIEdSQVBIIGd4IElTICdub3QgYSBncmFwaCc7CitDUkVBVEUg UFJPUEVSVFkgR1JBUEggZ3gKKyAgICBWRVJURVggVEFCTEVTICh0MSBLRVkgKGEpLCB0MikKKyAg ICBFREdFIFRBQkxFUyAoCisgICAgICAgIGUxIFNPVVJDRSB0MSBERVNUSU5BVElPTiB0MiAgLS0g bm8gZm9yZWlnbiBrZXlzCisgICAgKTsKK0NSRUFURSBQUk9QRVJUWSBHUkFQSCBneAorICAgIFZF UlRFWCBUQUJMRVMgKAorICAgICAgICB0MSBLRVkgKGEpIExBQkVMIGZvbyBQUk9QRVJUSUVTIChh ICsgMSBBUyBhYSkKKyAgICAgICAgICAgICAgICAgICBMQUJFTCBiYXIgUFJPUEVSVElFUyAoMSAr IGEgQVMgYWEpICAtLSBleHByZXNzaW9uIG1pc21hdGNoCisgICAgKTsKK0FMVEVSIFBST1BFUlRZ IEdSQVBIIGcyCisgICAgQUREIFZFUlRFWCBUQUJMRVMgKAorICAgICAgICB0MSBBUyB0MXggS0VZ IChhKSBMQUJFTCBmb28gUFJPUEVSVElFUyAoYSArIDEgQVMgYWEpCisgICAgICAgICAgICAgICAg ICAgICAgICAgIExBQkVMIGJhciBQUk9QRVJUSUVTICgxICsgYSBBUyBhYSkgIC0tIGV4cHJlc3Np b24gbWlzbWF0Y2gKKyAgICApOworQ1JFQVRFIFBST1BFUlRZIEdSQVBIIGd4CisgICAgVkVSVEVY IFRBQkxFUyAoCisgICAgICAgIHQxIEtFWSAoYSkgUFJPUEVSVElFUyAoYiBBUyBwMSksCisgICAg ICAgIHQyIFBST1BFUlRJRVMgKGsgQVMgcDEpICAtLSB0eXBlIG1pc21hdGNoCisgICAgKTsKK0FM VEVSIFBST1BFUlRZIEdSQVBIIGcyIEFMVEVSIFZFUlRFWCBUQUJMRSB0MSBBREQgTEFCRUwgZm9v IFBST1BFUlRJRVMgKGIgQVMgayk7ICAtLSB0eXBlIG1pc21hdGNoCisKK0NSRUFURSBQUk9QRVJU WSBHUkFQSCBneAorICAgIFZFUlRFWCBUQUJMRVMgKAorICAgICAgICB0MSBLRVkgKGEpIExBQkVM IGwxIFBST1BFUlRJRVMgKGEsIGEgQVMgYWEpLAorICAgICAgICB0MiBLRVkgKGkpIExBQkVMIGwx IFBST1BFUlRJRVMgKGkgQVMgYSwgaiBBUyBiLCBrKSAgLS0gbWlzbWF0Y2hpbmcgbnVtYmVyIG9m IHByb3BlcnRpZXMgb24gbGFiZWwKKyAgICApOworQ1JFQVRFIFBST1BFUlRZIEdSQVBIIGd4Cisg ICAgVkVSVEVYIFRBQkxFUyAoCisgICAgICAgIHQxIEtFWSAoYSkgTEFCRUwgbDEgUFJPUEVSVElF UyAoYSwgYiksCisgICAgICAgIHQyIEtFWSAoaSkgTEFCRUwgbDEgUFJPUEVSVElFUyAoaSBBUyBh KSAgLS0gbWlzbWF0Y2hpbmcgbnVtYmVyIG9mIHByb3BlcnRpZXMgb24gbGFiZWwKKyAgICApOwor Q1JFQVRFIFBST1BFUlRZIEdSQVBIIGd4CisgICAgVkVSVEVYIFRBQkxFUyAoCisgICAgICAgIHQx IEtFWSAoYSkgTEFCRUwgbDEgUFJPUEVSVElFUyAoYSwgYiksCisgICAgICAgIHQyIEtFWSAoaSkg TEFCRUwgbDEgUFJPUEVSVElFUyAoaSBBUyBhLCBqIEFTIGopICAtLSBtaXNtYXRjaGluZyBwcm9w ZXJ0eSBuYW1lcyBvbiBsYWJlbAorICAgICk7CitBTFRFUiBQUk9QRVJUWSBHUkFQSCBnNCBBTFRF UiBWRVJURVggVEFCTEUgdDEgQUREIExBQkVMIHQzbDEgUFJPUEVSVElFUyAoYSBBUyB4LCBiIEFT IHl5LCBiIEFTIHp6KTsgIC0tIG1pc21hdGNoaW5nIG51bWJlciBvZiBwcm9wZXJ0aWVzIG9uIGxh YmVsCitBTFRFUiBQUk9QRVJUWSBHUkFQSCBnNCBBTFRFUiBWRVJURVggVEFCTEUgdDEgQUREIExB QkVMIHQzbDEgUFJPUEVSVElFUyAoYSBBUyB4LCBiIEFTIHp6KTsgIC0tIG1pc21hdGNoaW5nIHBy b3BlcnR5IG5hbWVzIG9uIGxhYmVsCitBTFRFUiBQUk9QRVJUWSBHUkFQSCBnNCBBTFRFUiBWRVJU RVggVEFCTEUgdDEgQUREIExBQkVMIHQzbDEgUFJPUEVSVElFUyAoYSBBUyB4KTsgIC0tIG1pc21h dGNoaW5nIG51bWJlciBvZiBwcm9wZXJ0aWVzIG9uIGxhYmVsCisKKworQUxURVIgUFJPUEVSVFkg R1JBUEggZzEgT1dORVIgVE8gcmVncmVzc19ncmFwaF91c2VyMTsKK1NFVCBST0xFIHJlZ3Jlc3Nf Z3JhcGhfdXNlcjE7CitHUkFOVCBTRUxFQ1QgT04gUFJPUEVSVFkgR1JBUEggZzEgVE8gcmVncmVz c19ncmFwaF91c2VyMjsKK0dSQU5UIFVQREFURSBPTiBQUk9QRVJUWSBHUkFQSCBnMSBUTyByZWdy ZXNzX2dyYXBoX3VzZXIyOyAgLS0gZmFpbAorUkVTRVQgUk9MRTsKKworCistLSBpbmZvcm1hdGlv biBzY2hlbWEKKworU0VMRUNUICogRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEucHJvcGVydHlfZ3Jh cGhzIE9SREVSIEJZIHByb3BlcnR5X2dyYXBoX25hbWU7CitTRUxFQ1QgKiBGUk9NIGluZm9ybWF0 aW9uX3NjaGVtYS5wZ19lbGVtZW50X3RhYmxlcyBPUkRFUiBCWSBwcm9wZXJ0eV9ncmFwaF9uYW1l LCBlbGVtZW50X3RhYmxlX2FsaWFzOworU0VMRUNUICogRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEu cGdfZWxlbWVudF90YWJsZV9rZXlfY29sdW1ucyBPUkRFUiBCWSBwcm9wZXJ0eV9ncmFwaF9uYW1l LCBlbGVtZW50X3RhYmxlX2FsaWFzLCBvcmRpbmFsX3Bvc2l0aW9uOworU0VMRUNUICogRlJPTSBp bmZvcm1hdGlvbl9zY2hlbWEucGdfZWRnZV90YWJsZV9jb21wb25lbnRzIE9SREVSIEJZIHByb3Bl cnR5X2dyYXBoX25hbWUsIGVkZ2VfdGFibGVfYWxpYXMsIGVkZ2VfZW5kIERFU0MsIG9yZGluYWxf cG9zaXRpb247CitTRUxFQ1QgKiBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5wZ19lbGVtZW50X3Rh YmxlX2xhYmVscyBPUkRFUiBCWSBwcm9wZXJ0eV9ncmFwaF9uYW1lLCBlbGVtZW50X3RhYmxlX2Fs aWFzLCBsYWJlbF9uYW1lOworU0VMRUNUICogRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEucGdfZWxl bWVudF90YWJsZV9wcm9wZXJ0aWVzIE9SREVSIEJZIHByb3BlcnR5X2dyYXBoX25hbWUsIGVsZW1l bnRfdGFibGVfYWxpYXMsIHByb3BlcnR5X25hbWU7CitTRUxFQ1QgKiBGUk9NIGluZm9ybWF0aW9u X3NjaGVtYS5wZ19sYWJlbF9wcm9wZXJ0aWVzIE9SREVSIEJZIHByb3BlcnR5X2dyYXBoX25hbWUs IGxhYmVsX25hbWUsIHByb3BlcnR5X25hbWU7CitTRUxFQ1QgKiBGUk9NIGluZm9ybWF0aW9uX3Nj aGVtYS5wZ19sYWJlbHMgT1JERVIgQlkgcHJvcGVydHlfZ3JhcGhfbmFtZSwgbGFiZWxfbmFtZTsK K1NFTEVDVCAqIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnBnX3Byb3BlcnR5X2RhdGFfdHlwZXMg T1JERVIgQlkgcHJvcGVydHlfZ3JhcGhfbmFtZSwgcHJvcGVydHlfbmFtZTsKK1NFTEVDVCAqIEZS T00gaW5mb3JtYXRpb25fc2NoZW1hLnBnX3Byb3BlcnR5X2dyYXBoX3ByaXZpbGVnZXMgV0hFUkUg Z3JhbnRlZSBMSUtFICdyZWdyZXNzJScgT1JERVIgQlkgcHJvcGVydHlfZ3JhcGhfbmFtZTsKKwor CitcYVx0CitTRUxFQ1QgcGdfZ2V0X3Byb3BncmFwaGRlZignZzInOjpyZWdjbGFzcyk7CitTRUxF Q1QgcGdfZ2V0X3Byb3BncmFwaGRlZignZzMnOjpyZWdjbGFzcyk7CitTRUxFQ1QgcGdfZ2V0X3By b3BncmFwaGRlZignZzQnOjpyZWdjbGFzcyk7CisKK1NFTEVDVCBwZ19nZXRfcHJvcGdyYXBoZGVm KCdwZ190eXBlJzo6cmVnY2xhc3MpOyAgLS0gZXJyb3IKK1xhXHQKKworXGRHIGcxCisKKy0tIFRP RE8KK1xkIGcxCitcZCsgZzEKKworRFJPUCBUQUJMRSBnMjsgIC0tIGVycm9yOiB3cm9uZyBvYmpl Y3QgdHlwZQorCitEUk9QIFBST1BFUlRZIEdSQVBIIGcxOworCitEUk9QIFBST1BFUlRZIEdSQVBI IGcxOyAgLS0gZXJyb3I6IGRvZXMgbm90IGV4aXN0CisKK0RST1AgUFJPUEVSVFkgR1JBUEggSUYg RVhJU1RTIGcxOworCistLSBsZWF2ZSBmb3IgcGdfdXBncmFkZS9wZ19kdW1wIHRlc3RzCistLURS T1AgU0NIRU1BIGNyZWF0ZV9wcm9wZXJ0eV9ncmFwaF90ZXN0cyBDQVNDQURFOworCitEUk9QIFJP TEUgcmVncmVzc19ncmFwaF91c2VyMSwgcmVncmVzc19ncmFwaF91c2VyMjsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dyYXBoX3RhYmxlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2dyYXBoX3RhYmxlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li4yYjQzYjEzNmVhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ3Jh cGhfdGFibGUuc3FsCkBAIC0wLDAgKzEsMzM2IEBACitDUkVBVEUgU0NIRU1BIGdyYXBoX3RhYmxl X3Rlc3RzOworR1JBTlQgVVNBR0UgT04gU0NIRU1BIGdyYXBoX3RhYmxlX3Rlc3RzIFRPIFBVQkxJ QzsKK1NFVCBzZWFyY2hfcGF0aCA9IGdyYXBoX3RhYmxlX3Rlc3RzOworCitDUkVBVEUgVEFCTEUg cHJvZHVjdHMgKAorICAgIHByb2R1Y3Rfbm8gaW50ZWdlciBQUklNQVJZIEtFWSwKKyAgICBuYW1l IHZhcmNoYXIsCisgICAgcHJpY2UgbnVtZXJpYworKTsKKworQ1JFQVRFIFRBQkxFIGN1c3RvbWVy cyAoCisgICAgY3VzdG9tZXJfaWQgaW50ZWdlciBQUklNQVJZIEtFWSwKKyAgICBuYW1lIHZhcmNo YXIsCisgICAgYWRkcmVzcyB2YXJjaGFyCispOworCitDUkVBVEUgVEFCTEUgb3JkZXJzICgKKyAg ICBvcmRlcl9pZCBpbnRlZ2VyIFBSSU1BUlkgS0VZLAorICAgIG9yZGVyZWRfd2hlbiBkYXRlCisp OworCitDUkVBVEUgVEFCTEUgb3JkZXJfaXRlbXMgKAorICAgIG9yZGVyX2l0ZW1zX2lkIGludGVn ZXIgUFJJTUFSWSBLRVksCisgICAgb3JkZXJfaWQgaW50ZWdlciBSRUZFUkVOQ0VTIG9yZGVycyAo b3JkZXJfaWQpLAorICAgIHByb2R1Y3Rfbm8gaW50ZWdlciBSRUZFUkVOQ0VTIHByb2R1Y3RzIChw cm9kdWN0X25vKSwKKyAgICBxdWFudGl0eSBpbnRlZ2VyCispOworCitDUkVBVEUgVEFCTEUgY3Vz dG9tZXJfb3JkZXJzICgKKyAgICBjdXN0b21lcl9vcmRlcnNfaWQgaW50ZWdlciBQUklNQVJZIEtF WSwKKyAgICBjdXN0b21lcl9pZCBpbnRlZ2VyIFJFRkVSRU5DRVMgY3VzdG9tZXJzIChjdXN0b21l cl9pZCksCisgICAgb3JkZXJfaWQgaW50ZWdlciBSRUZFUkVOQ0VTIG9yZGVycyAob3JkZXJfaWQp CispOworCitDUkVBVEUgVEFCTEUgd2lzaGxpc3RzICgKKyAgICB3aXNobGlzdF9pZCBpbnRlZ2Vy IFBSSU1BUlkgS0VZLAorICAgIHdpc2hsaXN0X25hbWUgdmFyY2hhcgorKTsKKworQ1JFQVRFIFRB QkxFIHdpc2hsaXN0X2l0ZW1zICgKKyAgICB3aXNobGlzdF9pdGVtc19pZCBpbnRlZ2VyIFBSSU1B UlkgS0VZLAorICAgIHdpc2hsaXN0X2lkIGludGVnZXIgUkVGRVJFTkNFUyB3aXNobGlzdHMgKHdp c2hsaXN0X2lkKSwKKyAgICBwcm9kdWN0X25vIGludGVnZXIgUkVGRVJFTkNFUyBwcm9kdWN0cyAo cHJvZHVjdF9ubykKKyk7CisKK0NSRUFURSBUQUJMRSBjdXN0b21lcl93aXNobGlzdHMgKAorICAg IGN1c3RvbWVyX3dpc2hsaXN0X2lkIGludGVnZXIgUFJJTUFSWSBLRVksCisgICAgY3VzdG9tZXJf aWQgaW50ZWdlciBSRUZFUkVOQ0VTIGN1c3RvbWVycyAoY3VzdG9tZXJfaWQpLAorICAgIHdpc2hs aXN0X2lkIGludGVnZXIgUkVGRVJFTkNFUyB3aXNobGlzdHMgKHdpc2hsaXN0X2lkKQorKTsKKwor Q1JFQVRFIFBST1BFUlRZIEdSQVBIIG15c2hvcAorICAgIFZFUlRFWCBUQUJMRVMgKAorICAgICAg ICBwcm9kdWN0cywKKyAgICAgICAgY3VzdG9tZXJzLAorICAgICAgICBvcmRlcnMKKyAgICAgICAg ICAgREVGQVVMVCBMQUJFTAorICAgICAgICAgICAgTEFCRUwgbGlzdHMgUFJPUEVSVElFUyAob3Jk ZXJfaWQgYXMgbm9kZV9pZCwgJ29yZGVyJzo6dmFyY2hhcigxMCkgYXMgbGlzdF90eXBlKSwKKyAg ICAgICAgd2lzaGxpc3RzCisgICAgICAgICAgIERFRkFVTFQgTEFCRUwKKyAgICAgICAgICAgIExB QkVMIGxpc3RzIFBST1BFUlRJRVMgKHdpc2hsaXN0X2lkIGFzIG5vZGVfaWQsICd3aXNobGlzdCc6 OnZhcmNoYXIoMTApIGFzIGxpc3RfdHlwZSkKKyAgICApCisgICAgRURHRSBUQUJMRVMgKAorICAg ICAgICBvcmRlcl9pdGVtcyBLRVkgKG9yZGVyX2l0ZW1zX2lkKQorICAgICAgICAgICAgU09VUkNF IEtFWSAob3JkZXJfaWQpIFJFRkVSRU5DRVMgb3JkZXJzIChvcmRlcl9pZCkKKyAgICAgICAgICAg IERFU1RJTkFUSU9OIEtFWSAocHJvZHVjdF9ubykgUkVGRVJFTkNFUyBwcm9kdWN0cyAocHJvZHVj dF9ubykKKyAgICAgICAgICAgIERFRkFVTFQgTEFCRUwKKyAgICAgICAgICAgIExBQkVMIGxpc3Rf aXRlbXMgUFJPUEVSVElFUyAob3JkZXJfaWQgYXMgbGlua19pZCwgcHJvZHVjdF9ubyksCisgICAg ICAgIHdpc2hsaXN0X2l0ZW1zIEtFWSAod2lzaGxpc3RfaXRlbXNfaWQpCisgICAgICAgICAgICBT T1VSQ0UgS0VZICh3aXNobGlzdF9pZCkgUkVGRVJFTkNFUyB3aXNobGlzdHMgKHdpc2hsaXN0X2lk KQorICAgICAgICAgICAgREVTVElOQVRJT04gS0VZIChwcm9kdWN0X25vKSBSRUZFUkVOQ0VTIHBy b2R1Y3RzIChwcm9kdWN0X25vKQorICAgICAgICAgICAgREVGQVVMVCBMQUJFTAorICAgICAgICAg ICAgTEFCRUwgbGlzdF9pdGVtcyBQUk9QRVJUSUVTICh3aXNobGlzdF9pZCBhcyBsaW5rX2lkLCBw cm9kdWN0X25vKSwKKyAgICAgICAgY3VzdG9tZXJfb3JkZXJzIEtFWSAoY3VzdG9tZXJfb3JkZXJz X2lkKQorICAgICAgICAgICAgU09VUkNFIEtFWSAoY3VzdG9tZXJfaWQpIFJFRkVSRU5DRVMgY3Vz dG9tZXJzIChjdXN0b21lcl9pZCkKKyAgICAgICAgICAgIERFU1RJTkFUSU9OIEtFWSAob3JkZXJf aWQpIFJFRkVSRU5DRVMgb3JkZXJzIChvcmRlcl9pZCkKKyAgICAgICAgICAgIERFRkFVTFQgTEFC RUwKKyAgICAgICAgICAgIExBQkVMIGN1c3RfbGlzdHMgUFJPUEVSVElFUyAoY3VzdG9tZXJfaWQs IG9yZGVyX2lkIGFzIGxpbmtfaWQpLAorICAgICAgICBjdXN0b21lcl93aXNobGlzdHMgS0VZIChj dXN0b21lcl93aXNobGlzdF9pZCkKKyAgICAgICAgICAgIFNPVVJDRSBLRVkgKGN1c3RvbWVyX2lk KSBSRUZFUkVOQ0VTIGN1c3RvbWVycyAoY3VzdG9tZXJfaWQpCisgICAgICAgICAgICBERVNUSU5B VElPTiBLRVkgKHdpc2hsaXN0X2lkKSBSRUZFUkVOQ0VTIHdpc2hsaXN0cyAod2lzaGxpc3RfaWQp CisgICAgICAgICAgICBERUZBVUxUIExBQkVMCisgICAgICAgICAgICBMQUJFTCBjdXN0X2xpc3Rz IFBST1BFUlRJRVMgKGN1c3RvbWVyX2lkLCB3aXNobGlzdF9pZCBhcyBsaW5rX2lkKQorICAgICk7 CisKK1NFTEVDVCBjdXN0b21lcl9uYW1lIEZST00gR1JBUEhfVEFCTEUgKHh4eCBNQVRDSCAoYyBJ UyBjdXN0b21lcnMgV0hFUkUgYy5hZGRyZXNzID0gJ1VTJyktW0lTIGN1c3RvbWVyX29yZGVyc10t PihvIElTIG9yZGVycykgQ09MVU1OUyAoYy5uYW1lIEFTIGN1c3RvbWVyX25hbWUpKTsgIC0tIGVy cm9yCitTRUxFQ1QgY3VzdG9tZXJfbmFtZSBGUk9NIEdSQVBIX1RBQkxFIChwZ19jbGFzcyBNQVRD SCAoYyBJUyBjdXN0b21lcnMgV0hFUkUgYy5hZGRyZXNzID0gJ1VTJyktW0lTIGN1c3RvbWVyX29y ZGVyc10tPihvIElTIG9yZGVycykgQ09MVU1OUyAoYy5uYW1lIEFTIGN1c3RvbWVyX25hbWUpKTsg IC0tIGVycm9yCitTRUxFQ1QgY3VzdG9tZXJfbmFtZSBGUk9NIEdSQVBIX1RBQkxFIChteXNob3Ag TUFUQ0ggKGMgSVMgY3VzdG9tZXJzIFdIRVJFIGMuYWRkcmVzcyA9ICdVUycpLVtJUyBjdXN0b21l cl9vcmRlcnNdLT4obyBJUyBvcmRlcnMpIENPTFVNTlMgKGN4Lm5hbWUgQVMgY3VzdG9tZXJfbmFt ZSkpOyAgLS0gZXJyb3IKK1NFTEVDVCBjdXN0b21lcl9uYW1lIEZST00gR1JBUEhfVEFCTEUgKG15 c2hvcCBNQVRDSCAoYyBJUyBjdXN0b21lcnMgV0hFUkUgYy5hZGRyZXNzID0gJ1VTJyktW0lTIGN1 c3RvbWVyX29yZGVyc10tPihvIElTIG9yZGVycykgQ09MVU1OUyAoYy5uYW1leCBBUyBjdXN0b21l cl9uYW1lKSk7ICAtLSBlcnJvcgorU0VMRUNUIGN1c3RvbWVyX25hbWUgRlJPTSBHUkFQSF9UQUJM RSAobXlzaG9wIE1BVENIIChjIElTIGN1c3RvbWVyc3xlbXBsb3llZXMgV0hFUkUgYy5hZGRyZXNz ID0gJ1VTJyktW0lTIGN1c3RvbWVyX29yZGVyc10tPihvIElTIG9yZGVycykgQ09MVU1OUyAoYy5u YW1lIEFTIGN1c3RvbWVyX25hbWUpKTsgIC0tIGVycm9yCitTRUxFQ1QgY3VzdG9tZXJfbmFtZSBG Uk9NIEdSQVBIX1RBQkxFIChteXNob3AgTUFUQ0ggKGMgSVMgY3VzdG9tZXJzIFdIRVJFIGMuYWRk cmVzcyA9ICdVUycpLVtJUyBjdXN0b21lcl9vcmRlcnNdIENPTFVNTlMgKGMubmFtZSBBUyBjdXN0 b21lcl9uYW1lKSk7ICAtLSBlcnJvcgorCitJTlNFUlQgSU5UTyBwcm9kdWN0cyBWQUxVRVMKKyAg ICAoMSwgJ3Byb2R1Y3QxJywgMTApLAorICAgICgyLCAncHJvZHVjdDInLCAyMCksCisgICAgKDMs ICdwcm9kdWN0MycsIDMwKTsKK0lOU0VSVCBJTlRPIGN1c3RvbWVycyBWQUxVRVMKKyAgICAoMSwg J2N1c3RvbWVyMScsICdVUycpLAorICAgICgyLCAnY3VzdG9tZXIyJywgJ0NBJyksCisgICAgKDMs ICdjdXN0b21lcjMnLCAnR0wnKTsKK0lOU0VSVCBJTlRPIG9yZGVycyBWQUxVRVMKKyAgICAoMSwg ZGF0ZSAnMjAyNC0wMS0wMScpLAorICAgICgyLCBkYXRlICcyMDI0LTAxLTAyJyksCisgICAgKDMs IGRhdGUgJzIwMjQtMDEtMDMnKTsKK0lOU0VSVCBJTlRPIHdpc2hsaXN0cyBWQUxVRVMKKyAgICAo MSwgJ3dpc2hsaXN0MScpLAorICAgICgyLCAnd2lzaGxpc3QyJyksCisgICAgKDMsICd3aXNobGlz dDMnKTsKK0lOU0VSVCBJTlRPIG9yZGVyX2l0ZW1zIChvcmRlcl9pdGVtc19pZCwgb3JkZXJfaWQs IHByb2R1Y3Rfbm8sIHF1YW50aXR5KSBWQUxVRVMKKyAgICAoMSwgMSwgMSwgNSksCisgICAgKDIs IDEsIDIsIDEwKSwKKyAgICAoMywgMiwgMSwgNyk7CitJTlNFUlQgSU5UTyBjdXN0b21lcl9vcmRl cnMgKGN1c3RvbWVyX29yZGVyc19pZCwgY3VzdG9tZXJfaWQsIG9yZGVyX2lkKSBWQUxVRVMKKyAg ICAoMSwgMSwgMSksCisgICAgKDIsIDIsIDIpOworSU5TRVJUIElOVE8gY3VzdG9tZXJfd2lzaGxp c3RzIChjdXN0b21lcl93aXNobGlzdF9pZCwgY3VzdG9tZXJfaWQsIHdpc2hsaXN0X2lkKSBWQUxV RVMKKyAgICAoMSwgMiwgMyksCisgICAgKDIsIDMsIDEpLAorICAgICgzLCAzLCAyKTsKK0lOU0VS VCBJTlRPIHdpc2hsaXN0X2l0ZW1zICh3aXNobGlzdF9pdGVtc19pZCwgd2lzaGxpc3RfaWQsIHBy b2R1Y3Rfbm8pIFZBTFVFUworICAgICgxLCAxLCAyKSwKKyAgICAoMiwgMSwgMyksCisgICAgKDMs IDIsIDEpLAorICAgICg0LCAzLCAxKTsKKworLS0gc2luZ2xlIGVsZW1lbnQgcGF0aCBwYXR0ZXJu CitTRUxFQ1QgKiBGUk9NIEdSQVBIX1RBQkxFIChteXNob3AgTUFUQ0ggKGMgSVMgY3VzdG9tZXJz KSBDT0xVTU5TIChjLm5hbWUpKTsKK1NFTEVDVCAqIEZST00gR1JBUEhfVEFCTEUgKG15c2hvcCBN QVRDSCAoYyBJUyBjdXN0b21lcnMgV0hFUkUgYy5hZGRyZXNzID0gJ1VTJyktW0lTIGN1c3RvbWVy X29yZGVyc10tPihvIElTIG9yZGVycykgQ09MVU1OUyAoYy5uYW1lKSk7CistLSBncmFwaCBlbGVt ZW50IHNwZWNpZmljYXRpb24gd2l0aG91dCBsYWJlbCBvciB2YXJpYWJsZQorU0VMRUNUICogRlJP TSBHUkFQSF9UQUJMRSAobXlzaG9wIE1BVENIIChjIElTIGN1c3RvbWVycyBXSEVSRSBjLmFkZHJl c3MgPSAnVVMnKS1bXS0+KG8gSVMgb3JkZXJzKSBDT0xVTU5TIChjLm5hbWUgQVMgY3VzdG9tZXJf bmFtZSkpOworU0VMRUNUICogRlJPTSBHUkFQSF9UQUJMRSAobXlzaG9wIE1BVENIIChjOmN1c3Rv bWVycyktW2NvOmN1c3RvbWVyX29yZGVyc10tPihvOm9yZGVycyBXSEVSRSBvLm9yZGVyZWRfd2hl biA9IGRhdGUgJzIwMjQtMDEtMDInKSBDT0xVTU5TIChjLm5hbWUsIGMuYWRkcmVzcykpOworU0VM RUNUICogRlJPTSBHUkFQSF9UQUJMRSAobXlzaG9wIE1BVENIIChvIElTIG9yZGVycyktW0lTIGN1 c3RvbWVyX29yZGVyc10tPihjIElTIGN1c3RvbWVycykgQ09MVU1OUyAoYy5uYW1lLCBvLm9yZGVy ZWRfd2hlbikpOworU0VMRUNUICogRlJPTSBHUkFQSF9UQUJMRSAobXlzaG9wIE1BVENIIChvIElT IG9yZGVycyk8LVtJUyBjdXN0b21lcl9vcmRlcnNdLShjIElTIGN1c3RvbWVycykgQ09MVU1OUyAo Yy5uYW1lLCBvLm9yZGVyZWRfd2hlbikpOworU0VMRUNUICogRlJPTSBHUkFQSF9UQUJMRSAobXlz aG9wIE1BVENIICggbyBJUyBvcmRlcnMgKSA8LSBbIElTIGN1c3RvbWVyX29yZGVycyBdIC0gKGMg SVMgY3VzdG9tZXJzKSBDT0xVTU5TICggYy5uYW1lLCBvLm9yZGVyZWRfd2hlbikpOworU0VMRUNU ICogRlJPTSBHUkFQSF9UQUJMRSAobXlzaG9wIE1BVENIIChjIElTIGN1c3RvbWVycyktW0lTIGN1 c3RfbGlzdHNdLT4obCBJUyBsaXN0cyktWyBJUyBsaXN0X2l0ZW1zXS0+KHAgSVMgcHJvZHVjdHMp IENPTFVNTlMgKGMubmFtZSBBUyBjdXN0b21lcl9uYW1lLCBwLm5hbWUgYXMgcHJvZHVjdF9uYW1l LCBsLmxpc3RfdHlwZSkpIE9SREVSIEJZIGN1c3RvbWVyX25hbWUsIHByb2R1Y3RfbmFtZSwgbGlz dF90eXBlOworLS0gbGFiZWwgZGlzanVuY3Rpb24KK1NFTEVDVCAqIEZST00gR1JBUEhfVEFCTEUg KG15c2hvcCBNQVRDSCAoYyBJUyBjdXN0b21lcnMpLVtJUyBjdXN0b21lcl9vcmRlcnMgfCBjdXN0 b21lcl93aXNobGlzdHMgXS0+KGwgSVMgb3JkZXJzIHwgd2lzaGxpc3RzKS1bIElTIGxpc3RfaXRl bXNdLT4ocCBJUyBwcm9kdWN0cykgQ09MVU1OUyAoYy5uYW1lIEFTIGN1c3RvbWVyX25hbWUsIHAu bmFtZSBhcyBwcm9kdWN0X25hbWUpKSBPUkRFUiBCWSBjdXN0b21lcl9uYW1lLCBwcm9kdWN0X25h bWU7CistLSBwcm9wZXJ0eSBub3QgYXNzb2NpYXRlZCB3aXRoIGxhYmVscyBxdWVyaWVkIHJlc3Vs dHMgaW4gZXJyb3IKK1NFTEVDVCAqIEZST00gR1JBUEhfVEFCTEUgKG15c2hvcCBNQVRDSCAoYyBJ UyBjdXN0b21lcnMpLVtJUyBjdXN0b21lcl9vcmRlcnMgfCBjdXN0b21lcl93aXNobGlzdHMgXS0+ KGwgSVMgb3JkZXJzIHwgd2lzaGxpc3RzKS1bIElTIGxpc3RfaXRlbXNdLT4ocCBJUyBwcm9kdWN0 cykgQ09MVU1OUyAoYy5uYW1lIEFTIGN1c3RvbWVyX25hbWUsIHAubmFtZSBhcyBwcm9kdWN0X25h bWUsIGwubGlzdF90eXBlKSkgT1JERVIgQlkgMSwgMiwgMzsKKy0tIHZlcnRleCB0byB2ZXJ0ZXgg Y29ubmVjdGlvbiBhYmJyZXZpYXRpb24KK1NFTEVDVCAqIEZST00gR1JBUEhfVEFCTEUgKG15c2hv cCBNQVRDSCAoYyBJUyBjdXN0b21lcnMpLT4obyBJUyBvcmRlcnMpIENPTFVNTlMgKGMubmFtZSwg by5vcmRlcmVkX3doZW4pKSBPUkRFUiBCWSAxOworCistLSBsYXRlcmFsIHRlc3QKK0NSRUFURSBU QUJMRSB4MSAoYSBpbnQsIGIgdGV4dCk7CitJTlNFUlQgSU5UTyB4MSBWQUxVRVMgKDEsICdvbmUn KSwgKDIsICd0d28nKTsKK1NFTEVDVCAqIEZST00geDEsIEdSQVBIX1RBQkxFIChteXNob3AgTUFU Q0ggKGMgSVMgY3VzdG9tZXJzIFdIRVJFIGMuYWRkcmVzcyA9ICdVUycgQU5EIGMuY3VzdG9tZXJf aWQgPSB4MS5hKS1bSVMgY3VzdG9tZXJfb3JkZXJzXS0+KG8gSVMgb3JkZXJzKSBDT0xVTU5TIChj Lm5hbWUgQVMgY3VzdG9tZXJfbmFtZSwgYy5jdXN0b21lcl9pZCBBUyBjaWQpKTsKK0RST1AgVEFC TEUgeDE7CisKKworY3JlYXRlIHRhYmxlIHYxIChpZCBpbnQgcHJpbWFyeSBrZXksCisJCQkJCXZu YW1lIHZhcmNoYXIoMTApLAorCQkJCQl2cHJvcDEgaW50LAorCQkJCQl2cHJvcDIgaW50KTsKKwor Y3JlYXRlIHRhYmxlIHYyIChpZDEgaW50LAorCQkJCQlpZDIgaW50LAorCQkJCQl2bmFtZSB2YXJj aGFyKDEwKSwKKwkJCQkJdnByb3AxIGludCwKKwkJCQkJdnByb3AyIGludCk7CisKK2NyZWF0ZSB0 YWJsZSB2MyAoaWQgaW50IHByaW1hcnkga2V5LAorCQkJCQl2bmFtZSB2YXJjaGFyKDEwKSwKKwkJ CQkJdnByb3AxIGludCwKKwkJCQkJdnByb3AyIGludCk7CisKKy0tIGVkZ2UgY29ubmVjdGluZyB2 MSBhbmQgdjIKK2NyZWF0ZSB0YWJsZSBlMV8yIChpZF8xIGludCwKKwkJCQkJaWRfMl8xIGludCwK KwkJCQkJaWRfMl8yIGludCwKKwkJCQkJZW5hbWUgdmFyY2hhcigxMCksCisJCQkJCWVwcm9wMSBp bnQpOworCistLSBlZGdlIGNvbm5lY3RpbmcgdjEgYW5kIHYzCitjcmVhdGUgdGFibGUgZTFfMyAo aWRfMSBpbnQsCisJCQkJCWlkXzMgaW50LAorCQkJCQllbmFtZSB2YXJjaGFyKDEwKSwKKwkJCQkJ ZXByb3AxIGludCwKKwkJCQkJcHJpbWFyeSBrZXkgKGlkXzEsIGlkXzMpKTsKKworY3JlYXRlIHRh YmxlIGUyXzMgKGlkXzJfMSBpbnQsCisgICAgICAgICAgICAgICAgICAgIGlkXzJfMiBpbnQsCisg ICAgICAgICAgICAgICAgICAgIGlkXzMgaW50LAorICAgICAgICAgICAgICAgICAgICBlbmFtZSB2 YXJjaGFyKDEwKSwKKyAgICAgICAgICAgICAgICAgICAgZXByb3AxIGludCk7CisKK2NyZWF0ZSBw cm9wZXJ0eSBncmFwaCBnMQordmVydGV4IHRhYmxlcyAoCisJdjEKKyAgICAgICAgbGFiZWwgdmwx IHByb3BlcnRpZXMgKHZuYW1lLCB2cHJvcDEpCisgICAgICAgIGxhYmVsIGwxIHByb3BlcnRpZXMg KHZuYW1lIGFzIGVsbmFtZSksIC0tIGxhYmVsIHNoYXJlZCBieSB2ZXJ0ZXhlcyBhcyB3ZWxsIGFz IGVkZ2VzCisJdjIga2V5IChpZDEsIGlkMikKKwkJbGFiZWwgdmwyIHByb3BlcnRpZXMgKHZuYW1l LCB2cHJvcDIsICd2bDJfcHJvcCc6OnZhcmNoYXIoMTApIGFzIGxwcm9wMSkKKyAgICAgICAgbGFi ZWwgdmwzIHByb3BlcnRpZXMgKHZuYW1lLCB2cHJvcDEsICd2bDJfcHJvcCc6OnZhcmNoYXIoMTAp IGFzIGxwcm9wMSkKKyAgICAgICAgbGFiZWwgbDEgcHJvcGVydGllcyAodm5hbWUgYXMgZWxuYW1l KSwKKwl2MworCQlsYWJlbCB2bDMgcHJvcGVydGllcyAodm5hbWUsIHZwcm9wMSwgJ3ZsM19wcm9w Jzo6dmFyY2hhcigxMCkgYXMgbHByb3AxKQorICAgICAgICBsYWJlbCBsMSBwcm9wZXJ0aWVzICh2 bmFtZSBhcyBlbG5hbWUpCispCistLSBlZGdlcyB3aXRoIGRpZmZlcmluZyBudW1iZXIgb2YgY29s dW1ucyBpbiBkZXN0aW5hdGlvbiBrZXlzCitlZGdlIHRhYmxlcyAoCisJZTFfMiBrZXkgKGlkXzEs IGlkXzJfMSwgaWRfMl8yKQorCQlzb3VyY2Uga2V5IChpZF8xKSByZWZlcmVuY2VzIHYxIChpZCkK KwkJZGVzdGluYXRpb24ga2V5IChpZF8yXzEsIGlkXzJfMikgcmVmZXJlbmNlcyB2MiAoaWQxLCBp ZDIpCisJCWxhYmVsIGVsMSBwcm9wZXJ0aWVzIChlcHJvcDEsIGVuYW1lKQorICAgICAgICBsYWJl bCBsMSBwcm9wZXJ0aWVzIChlbmFtZSBhcyBlbG5hbWUpLAorCWUxXzMKKwkJc291cmNlIGtleSAo aWRfMSkgcmVmZXJlbmNlcyB2MSAoaWQpCisJCWRlc3RpbmF0aW9uIGtleSAoaWRfMykgcmVmZXJl bmNlcyB2MyAoaWQpCisJCS0tIG9yZGVyIG9mIHByb3BlcnR5IG5hbWVzIGRvZXNuJ3QgbWF0dGVy CisJCWxhYmVsIGVsMSBwcm9wZXJ0aWVzIChlbmFtZSwgZXByb3AxKQorICAgICAgICBsYWJlbCBs MSBwcm9wZXJ0aWVzIChlbmFtZSBhcyBlbG5hbWUpLAorICAgIGUyXzMga2V5IChpZF8yXzEsIGlk XzJfMiwgaWRfMykKKyAgICAgICAgc291cmNlIGtleSAoaWRfMl8xLCBpZF8yXzIpIHJlZmVyZW5j ZXMgdjIgKGlkMSwgaWQyKQorICAgICAgICBkZXN0aW5hdGlvbiBrZXkgKGlkXzMpIHJlZmVyZW5j ZXMgdjMgKGlkKQorICAgICAgICAtLSBuZXcgcHJvcGVydHkgbHByb3AyIG5vdCBzaGFyZWQgYnkg ZWwxCisgICAgICAgIC0tIGRvZXMgbm90IHNoYXJlIGVwcm9wMSBmcm9tIGJ5IGVsMQorICAgICAg ICBsYWJlbCBlbDIgcHJvcGVydGllcyAoZW5hbWUsIGVwcm9wMSAqIDEwIGFzIGxwcm9wMikKKyAg ICAgICAgbGFiZWwgbDEgcHJvcGVydGllcyAoZW5hbWUgYXMgZWxuYW1lKQorKTsKKworaW5zZXJ0 IGludG8gdjEgdmFsdWVzICgxLCAndjExJywgMTAsIDEwMCksCisgICAgICAgICAgICAgICAgICAg ICAgKDIsICd2MTInLCAyMCwgMjAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAoMywgJ3YxMycs IDMwLCAzMDApOworCitpbnNlcnQgaW50byB2MiB2YWx1ZXMgKDEwMDAsIDEsICd2MjEnLCAxMDEw LCAxMTAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAoMTAwMCwgMiwgJ3YyMicsIDEwMjAsIDEy MDApLAorICAgICAgICAgICAgICAgICAgICAgICgxMDAwLCAzLCAndjIzJywgMTAzMCwgMTMwMCk7 CisKK2luc2VydCBpbnRvIHYzIHZhbHVlcyAoMjAwMSwgJ3YzMScsIDIwMTAsIDIxMDApLAorICAg ICAgICAgICAgICAgICAgICAgICgyMDAyLCAndjMyJywgMjAyMCwgMjIwMCksCisgICAgICAgICAg ICAgICAgICAgICAgKDIwMDMsICd2MzMnLCAyMDMwLCAyMzAwKTsKKworaW5zZXJ0IGludG8gZTFf MiB2YWx1ZXMgKDEsIDEwMDAsIDIsICdlMTIxJywgMTAwMDEpLAorICAgICAgICAgICAgICAgICAg ICAgICAgKDIsIDEwMDAsIDEsICdlMTIyJywgMTAwMDIpOworCitpbnNlcnQgaW50byBlMV8zIHZh bHVlcyAoMSwgMjAwMywgJ2UxMzEnLCAxMDAwMyksCisgICAgICAgICAgICAgICAgICAgICAgICAo MSwgMjAwMSwgJ2UxMzInLCAxMDAwNCk7CitpbnNlcnQgaW50byBlMl8zIHZhbHVlcyAoMTAwMCwg MiwgMjAwMiwgJ2UyMzEnLCAxMDAwNSk7CisKKy0tIGVtcHR5IGVsZW1lbnQgcGF0aCBwYXR0ZXJu LCBjb3VudHMgbnVtYmVyIG9mIGVkZ2VzIGluIHRoZSBncmFwaAorU0VMRUNUIGNvdW50KCopIEZS T00gR1JBUEhfVEFCTEUgKGcxIE1BVENIICgpLVtdLT4oKSBDT0xVTU5TICgxIGFzIG9uZSkpOwor U0VMRUNUIGNvdW50KCopIEZST00gR1JBUEhfVEFCTEUgKGcxIE1BVENIICgpLT4oKSBDT0xVTU5T ICgxIGFzIG9uZSkpOworLS0gVmVydGV4IGVsZW1lbnQgdjIgaGFzIGxhYmVsIHZsMyB3aGljaCBl eHBvc2VzIHByb3BlcnR5IHZwcm9wMS4gQnV0IHZsMyBpcworLS0gbm90IHBhcnQgb2YgbGFiZWwg ZXhwcmVzc2lvbi4gSW5zdGVhZCB2MiBnZXQgYm91bmQgdGhyb3VnaCBsYWJlbCB2bDIgd2hpY2gK Ky0tIGRvZXMgbm90IGV4cG9zZSB2cHJvcDEuIFRoZSBHUkFQSF9UQUJMRSBjbGF1c2UgcHJvamVj dCB2cHJvcDEuCistLQorLS0gVE9ETzogVGhpcyBjYXNlIGZhaWxzIHNpbmNlIGNhdGFsb2dzIGRv IG5vdCBhc3NvY2lhdGVkIHByb3BlcnRpZXMgd2l0aAorLS0gZWxlbWVudHMgZGlyZWN0bHkuIE1v cmUgY29kZSBpcyBuZWVkZWQgdG8gbWFrZSBpdCB3b3JrLgorU0VMRUNUICogRlJPTSBHUkFQSF9U QUJMRSAoZzEgTUFUQ0ggKGEgSVMgdmwxIHwgdmwyKSBDT0xVTU5TIChhLnZuYW1lLAorYS52cHJv cDEpKTsKKy0tIHZwcm9wMiBpcyBhc3NvY2lhdGVkIHdpdGggdmwyIGJ1dCBub3QgdmwzCitzZWxl Y3Qgc3JjLCBjb25uLCBkZXN0LCBscHJvcDEsIHZwcm9wMiwgdnByb3AxIGZyb20gZ3JhcGhfdGFi bGUgKGcxIG1hdGNoIChhIGlzIHZsMSktW2IgaXMgZWwxXS0+KGMgaXMgdmwyIHwgdmwzKSBjb2x1 bW5zIChhLnZuYW1lIGFzIHNyYywgYi5lbmFtZSBhcyBjb25uLCBjLnZuYW1lIGFzIGRlc3QsIGMu bHByb3AxLCBjLnZwcm9wMiwgYy52cHJvcDEpKTsKKworLS0gRXJyb3JzCistLSB2bDEgaXMgbm90 IGFzc29jaWF0ZWQgd2l0aCBwcm9wZXJ0eSB2cHJvcDIKK3NlbGVjdCBzcmMsIHNyY192cHJvcDIs IGNvbm4sIGRlc3QgZnJvbSBncmFwaF90YWJsZSAoZzEgbWF0Y2ggKGEgaXMgdmwxKS1bYiBpcyBl bDFdLT4oYyBpcyB2bDIgfCB2bDMpIGNvbHVtbnMgKGEudm5hbWUgYXMgc3JjLCBhLnZwcm9wMiBh cyBzcmNfdnByb3AyLCBiLmVuYW1lIGFzIGNvbm4sIGMudm5hbWUgYXMgZGVzdCkpOworLS0gcHJv cGVydHkgZW5hbWUgaXMgYXNzb2NpYXRlZCB3aXRoIGVkZ2UgbGFiZWxzIGJ1dCBub3Qgd2l0aCBh IHZlcnRleCBsYWJlbAorc2VsZWN0ICogZnJvbSBncmFwaF90YWJsZSAoZzEgbWF0Y2ggKHNyYykt W2Nvbm5dLT4oZGVzdCkgY29sdW1ucyAoc3JjLnZuYW1lIGFzIHN2bmFtZSwgc3JjLmVuYW1lIGFz IHNlbmFtZSkpOworLS0gdm5hbWUgaXMgYXNzb2NpYXRlZCB2ZXJ0ZXggbGFiZWxzIGJ1dCBub3Qg YW4gZWRnZSBsYWJlbAorc2VsZWN0ICogZnJvbSBncmFwaF90YWJsZSAoZzEgbWF0Y2ggKHNyYykt W2Nvbm5dLT4oZGVzdCkgY29sdW1ucyAoY29ubi52bmFtZSBhcyBjdm5hbWUsIGNvbm4uZW5hbWUg YXMgY2VuYW1lKSk7CistLSBlbDEgaXMgYXNzb2NpYXRlZCB3aXRoIGVkZ2VzIGJ1dCBpcyBvbmx5 IGxhYmVsIHVzZWQgdG8gcXVhbGlmeSB2ZXJ0ZXgKK3NlbGVjdCAqIGZyb20gZ3JhcGhfdGFibGUg KGcxIG1hdGNoIChzcmMgaXMgZWwxKS1bY29ubl0tPihkZXN0KSBjb2x1bW5zIChjb25uLmVuYW1l IGFzIGNlbmFtZSkpOworLS0gZWwxIGlzIGFzc29jaWF0ZWQgd2l0aCBlZGdlcyBidXQgaXMgb25l IG9mIHRoZSBsYWJlbHMgdXNlZCB0byBxdWFsaWZ5IHZlcnRleAorc2VsZWN0ICogZnJvbSBncmFw aF90YWJsZSAoZzEgbWF0Y2ggKHNyYyBpcyBlbDEgfCB2bDEpLVtjb25uXS0+KGRlc3QpIGNvbHVt bnMgKGNvbm4uZW5hbWUgYXMgY2VuYW1lKSk7CisKKy0tIHNlbGVjdCBhbGwgdGhlIHByb3BlcnRp ZXMgYWNyb3NzIGFsbCB0aGUgbGFiZWxzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIHR5cGUKKy0t IG9mIGdyYXBoIGVsZW1lbnQKK3NlbGVjdCAqIGZyb20gZ3JhcGhfdGFibGUgKGcxIG1hdGNoIChz cmMpLVtjb25uXS0+KGRlc3QpIGNvbHVtbnMgKHNyYy52bmFtZSBhcyBzdm5hbWUsIGNvbm4uZW5h bWUgYXMgY2VuYW1lLCBkZXN0LnZuYW1lIGFzIGR2bmFtZSwgc3JjLnZwcm9wMSBhcyBzdnAxLCBz cmMudnByb3AyIGFzIHN2cDIsIHNyYy5scHJvcDEgYXMgc2xwMSwgZGVzdC52cHJvcDEgYXMgZHZw MSwgZGVzdC52cHJvcDIgYXMgZHZwMiwgZGVzdC5scHJvcDEgYXMgZGxwMSwgY29ubi5lcHJvcDEg YXMgY2VwMSwgY29ubi5scHJvcDIgYXMgY2xwMikpOworLS0gdGhyZWUgbGFiZWwgZGlzanVuY3Rp b24KK3NlbGVjdCAqIGZyb20gZ3JhcGhfdGFibGUgKGcxIG1hdGNoIChzcmMgSVMgdmwxIHwgdmwy IHwgdmwzKS1bY29ubl0tPihkZXN0KSBjb2x1bW5zIChzcmMudm5hbWUgYXMgc3ZuYW1lLCBjb25u LmVuYW1lIGFzIGNlbmFtZSwgZGVzdC52bmFtZSBhcyBkdm5hbWUpKTsKKy0tIGdyYXBoJ2ljYWwg cXVlcnk6IGZpbmQgYSB2ZXJ0ZXggd2hpY2ggaXMgbm90IGNvbm5lY3RlZCB0byBhbnkgb3RoZXIg dmVydGV4IGFzIGEgc291cmNlIG9yIGEgZGVzdGluYXRpb24uCit3aXRoIGFsbF9jb25uZWN0ZWRf dmVydGljZXMgYXMgKHNlbGVjdCBzdm4sIGR2biBmcm9tIGdyYXBoX3RhYmxlIChnMSBtYXRjaCAo c3JjKS1bY29ubl0tPihkZXN0KSBjb2x1bW5zIChzcmMudm5hbWUgYXMgc3ZuLCBkZXN0LnZuYW1l IGFzIGR2bikpKSwKKyAgICBhbGxfdmVydGljZXMgYXMgKHNlbGVjdCB2biBmcm9tIGdyYXBoX3Rh YmxlIChnMSBtYXRjaCAodmVydGV4KSBjb2x1bW5zICh2ZXJ0ZXgudm5hbWUgYXMgdm4pKSkKK3Nl bGVjdCB2biBmcm9tIGFsbF92ZXJ0aWNlcyBleGNlcHQgKHNlbGVjdCBzdm4gZnJvbSBhbGxfY29u bmVjdGVkX3ZlcnRpY2VzIHVuaW9uIHNlbGVjdCBkdm4gZnJvbSBhbGxfY29ubmVjdGVkX3ZlcnRp Y2VzKTsKKy0tIHF1ZXJ5IGFsbCBjb25uZWN0aW9ucyB1c2luZyBhIGxhYmVsIHNoYXJlZCBieSB2 ZXJ0aWNlcyBhbmQgZWRnZXMKK3NlbGVjdCBzbiwgY24sIGRuIGZyb20gZ3JhcGhfdGFibGUgKGcx IG1hdGNoIChzcmMgOiBsMSktW2Nvbm4gOiBsMV0tPihkZXN0IDogbDEpIGNvbHVtbnMgKHNyYy5l bG5hbWUgYXMgc24sIGNvbm4uZWxuYW1lIGFzIGNuLCBkZXN0LmVsbmFtZSBhcyBkbikpOworCist LSBwcm9wZXJ0eSBncmFwaCB3aXRoIHNvbWUgb2YgdGhlIGVsZW1lbnRzLCBsYWJlbHMgYW5kIHBy b3BlcnRpZXMgc2FtZSBhcyB0aGUKKy0tIHByZXZpb3VzIG9uZS4gVGVzdCB3aGV0aGVyIGNvbXBv bmVudHMgZnJvbSB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IGdyYXBoIGFyZQorLS0gdXNlZC4KK2Ny ZWF0ZSBwcm9wZXJ0eSBncmFwaCBnMgordmVydGV4IHRhYmxlcyAoCisJdjEKKyAgICAgICAgbGFi ZWwgbDEgcHJvcGVydGllcyAoJ2cyLicgfHwgdm5hbWUgYXMgZWxuYW1lKSwKKwl2MiBrZXkgKGlk MSwgaWQyKQorICAgICAgICBsYWJlbCBsMSBwcm9wZXJ0aWVzICgnZzIuJyB8fCB2bmFtZSBhcyBl bG5hbWUpLAorCXYzCisgICAgICAgIGxhYmVsIGwxIHByb3BlcnRpZXMgKCdnMi4nIHx8IHZuYW1l IGFzIGVsbmFtZSkKKykKK2VkZ2UgdGFibGVzICgKKwllMV8yIGtleSAoaWRfMSwgaWRfMl8xLCBp ZF8yXzIpCisJCXNvdXJjZSBrZXkgKGlkXzEpIHJlZmVyZW5jZXMgdjEgKGlkKQorCQlkZXN0aW5h dGlvbiBrZXkgKGlkXzJfMSwgaWRfMl8yKSByZWZlcmVuY2VzIHYyIChpZDEsIGlkMikKKyAgICAg ICAgbGFiZWwgbDEgcHJvcGVydGllcyAoJ2cyLicgfHwgZW5hbWUgYXMgZWxuYW1lKSwKKwllMV8z CisJCXNvdXJjZSBrZXkgKGlkXzEpIHJlZmVyZW5jZXMgdjEgKGlkKQorCQlkZXN0aW5hdGlvbiBr ZXkgKGlkXzMpIHJlZmVyZW5jZXMgdjMgKGlkKQorICAgICAgICBsYWJlbCBsMSBwcm9wZXJ0aWVz ICgnZzIuJyB8fCBlbmFtZSBhcyBlbG5hbWUpLAorICAgIGUyXzMga2V5IChpZF8yXzEsIGlkXzJf MiwgaWRfMykKKyAgICAgICAgc291cmNlIGtleSAoaWRfMl8xLCBpZF8yXzIpIHJlZmVyZW5jZXMg djIgKGlkMSwgaWQyKQorICAgICAgICBkZXN0aW5hdGlvbiBrZXkgKGlkXzMpIHJlZmVyZW5jZXMg djMgKGlkKQorICAgICAgICBsYWJlbCBsMSBwcm9wZXJ0aWVzICgnZzIuJyB8fCBlbmFtZSBhcyBl bG5hbWUpCispOworc2VsZWN0IHNuLCBjbiwgZG4gZnJvbSBncmFwaF90YWJsZSAoZzIgbWF0Y2gg KHNyYyA6IGwxKS1bY29ubiA6IGwxXS0+KGRlc3QgOiBsMSkgY29sdW1ucyAoc3JjLmVsbmFtZSBh cyBzbiwgY29ubi5lbG5hbWUgYXMgY24sIGRlc3QuZWxuYW1lIGFzIGRuKSk7CisKK0NSRUFURSBW SUVXIGN1c3RvbWVyc191cyBBUyBTRUxFQ1QgY3VzdG9tZXJfbmFtZSBGUk9NIEdSQVBIX1RBQkxF IChteXNob3AgTUFUQ0ggKGMgSVMgY3VzdG9tZXJzIFdIRVJFIGMuYWRkcmVzcyA9ICdVUycpLVtJ UyBjdXN0b21lcl9vcmRlcnNdLT4obyBJUyBvcmRlcnMpIENPTFVNTlMgKGMubmFtZSBBUyBjdXN0 b21lcl9uYW1lKSk7CisKK1NFTEVDVCBwZ19nZXRfdmlld2RlZignY3VzdG9tZXJzX3VzJzo6cmVn Y2xhc3MpOworCistLSB0ZXN0IHZpZXcvZ3JhcGggbmVzdGluZworCitDUkVBVEUgVklFVyBjdXN0 b21lcnNfdmlldyBBUyBTRUxFQ1QgY3VzdG9tZXJfaWQsICdyZWRhY3RlZCcgfHwgY3VzdG9tZXJf aWQgQVMgbmFtZV9yZWRhY3RlZCwgYWRkcmVzcyBGUk9NIGN1c3RvbWVyczsKK1NFTEVDVCAqIEZS T00gY3VzdG9tZXJzOworU0VMRUNUICogRlJPTSBjdXN0b21lcnNfdmlldzsKKworQ1JFQVRFIFBS T1BFUlRZIEdSQVBIIG15c2hvcDIKKyAgICBWRVJURVggVEFCTEVTICgKKyAgICAgICAgcHJvZHVj dHMsCisgICAgICAgIGN1c3RvbWVyc192aWV3IEtFWSAoY3VzdG9tZXJfaWQpIExBQkVMIGN1c3Rv bWVycywKKyAgICAgICAgb3JkZXJzCisgICAgKQorICAgIEVER0UgVEFCTEVTICgKKyAgICAgICAg b3JkZXJfaXRlbXMgS0VZIChvcmRlcl9pdGVtc19pZCkKKyAgICAgICAgICAgIFNPVVJDRSBLRVkg KG9yZGVyX2lkKSBSRUZFUkVOQ0VTIG9yZGVycyAob3JkZXJfaWQpCisgICAgICAgICAgICBERVNU SU5BVElPTiBLRVkgKHByb2R1Y3Rfbm8pIFJFRkVSRU5DRVMgcHJvZHVjdHMgKHByb2R1Y3Rfbm8p LAorICAgICAgICBjdXN0b21lcl9vcmRlcnMgS0VZIChjdXN0b21lcl9vcmRlcnNfaWQpCisgICAg ICAgICAgICBTT1VSQ0UgS0VZIChjdXN0b21lcl9pZCkgUkVGRVJFTkNFUyBjdXN0b21lcnNfdmll dyAoY3VzdG9tZXJfaWQpCisgICAgICAgICAgICBERVNUSU5BVElPTiBLRVkgKG9yZGVyX2lkKSBS RUZFUkVOQ0VTIG9yZGVycyAob3JkZXJfaWQpCisgICAgKTsKKworQ1JFQVRFIFZJRVcgY3VzdG9t ZXJzX3VzX3JlZGFjdGVkIEFTIFNFTEVDVCAqIEZST00gR1JBUEhfVEFCTEUgKG15c2hvcDIgTUFU Q0ggKGMgSVMgY3VzdG9tZXJzIFdIRVJFIGMuYWRkcmVzcyA9ICdVUycpLVtJUyBjdXN0b21lcl9v cmRlcnNdLT4obyBJUyBvcmRlcnMpIENPTFVNTlMgKGMubmFtZV9yZWRhY3RlZCBBUyBjdXN0b21l cl9uYW1lX3JlZGFjdGVkKSk7CisKK1NFTEVDVCAqIEZST00gY3VzdG9tZXJzX3VzX3JlZGFjdGVk OworCistLSBsZWF2ZSBmb3IgcGdfdXBncmFkZS9wZ19kdW1wIHRlc3RzCistLURST1AgU0NIRU1B IGdyYXBoX3RhYmxlX3Rlc3RzIENBU0NBREU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9vYmplY3RfYWRkcmVzcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9vYmplY3RfYWRk cmVzcy5zcWwKaW5kZXggMWE2YzYxZjQ5ZC4uOTNmOWY5YzcwNCAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvb2JqZWN0X2FkZHJlc3Muc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL29iamVjdF9hZGRyZXNzLnNxbApAQCAtMzcsNiArMzcsNyBAQCBDUkVBVEUgRlVOQ1RJT04g YWRkcl9uc3AudHJpZygpIFJFVFVSTlMgVFJJR0dFUiBMQU5HVUFHRSBwbHBnc3FsIEFTICQkIEJF R0lOIEVORAogQ1JFQVRFIFRSSUdHRVIgdCBCRUZPUkUgSU5TRVJUIE9OIGFkZHJfbnNwLmdlbnRh YmxlIEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSBhZGRyX25zcC50cmlnKCk7CiBDUkVB VEUgUE9MSUNZIGdlbnBvbCBPTiBhZGRyX25zcC5nZW50YWJsZTsKIENSRUFURSBQUk9DRURVUkUg YWRkcl9uc3AucHJvYyhpbnQ0KSBMQU5HVUFHRSBTUUwgQVMgJCQgJCQ7CitDUkVBVEUgUFJPUEVS VFkgR1JBUEggYWRkcl9uc3AuZ2VuZ3JhcGg7CiBDUkVBVEUgU0VSVkVSICJpbnRlZ2VyIiBGT1JF SUdOIERBVEEgV1JBUFBFUiBhZGRyX2ZkdzsKIENSRUFURSBVU0VSIE1BUFBJTkcgRk9SIHJlZ3Jl c3NfYWRkcl91c2VyIFNFUlZFUiAiaW50ZWdlciI7CiBBTFRFUiBERUZBVUxUIFBSSVZJTEVHRVMg Rk9SIFJPTEUgcmVncmVzc19hZGRyX3VzZXIgSU4gU0NIRU1BIHB1YmxpYyBHUkFOVCBBTEwgT04g VEFCTEVTIFRPIHJlZ3Jlc3NfYWRkcl91c2VyOwpAQCAtOTAsNyArOTEsNyBAQCBERUNMQVJFCiBC RUdJTgogICAgIEZPUiBvYmp0eXBlIElOIFZBTFVFUwogICAgICAgICAoJ3RhYmxlJyksICgnaW5k ZXgnKSwgKCdzZXF1ZW5jZScpLCAoJ3ZpZXcnKSwKLSAgICAgICAgKCdtYXRlcmlhbGl6ZWQgdmll dycpLCAoJ2ZvcmVpZ24gdGFibGUnKSwKKyAgICAgICAgKCdtYXRlcmlhbGl6ZWQgdmlldycpLCAo J2ZvcmVpZ24gdGFibGUnKSwgKCdwcm9wZXJ0eSBncmFwaCcpLAogICAgICAgICAoJ3RhYmxlIGNv bHVtbicpLCAoJ2ZvcmVpZ24gdGFibGUgY29sdW1uJyksCiAgICAgICAgICgnYWdncmVnYXRlJyks ICgnZnVuY3Rpb24nKSwgKCdwcm9jZWR1cmUnKSwgKCd0eXBlJyksICgnY2FzdCcpLAogICAgICAg ICAoJ3RhYmxlIGNvbnN0cmFpbnQnKSwgKCdkb21haW4gY29uc3RyYWludCcpLCAoJ2NvbnZlcnNp b24nKSwgKCdkZWZhdWx0IHZhbHVlJyksCkBAIC0xNjMsNiArMTY0LDcgQEAgV0lUSCBvYmplY3Rz ICh0eXBlLCBuYW1lLCBhcmdzKSBBUyAoVkFMVUVTCiAgICAgKCd2aWV3JywgJ3thZGRyX25zcCwg Z2Vudmlld30nLCAne30nKSwKICAgICAoJ21hdGVyaWFsaXplZCB2aWV3JywgJ3thZGRyX25zcCwg Z2VubWF0dmlld30nLCAne30nKSwKICAgICAoJ2ZvcmVpZ24gdGFibGUnLCAne2FkZHJfbnNwLCBn ZW5mdGFibGV9JywgJ3t9JyksCisgICAgKCdwcm9wZXJ0eSBncmFwaCcsICd7YWRkcl9uc3AsIGdl bmdyYXBofScsICd7fScpLAogICAgICgndGFibGUgY29sdW1uJywgJ3thZGRyX25zcCwgZ2VudGFi bGUsIGJ9JywgJ3t9JyksCiAgICAgKCdmb3JlaWduIHRhYmxlIGNvbHVtbicsICd7YWRkcl9uc3As IGdlbmZ0YWJsZSwgYX0nLCAne30nKSwKICAgICAoJ2FnZ3JlZ2F0ZScsICd7YWRkcl9uc3AsIGdl bmFnZ3J9JywgJ3tpbnQ0fScpLApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA5ZTk1MWE5 ZTZmLi5mYWFjNDM2ZDJjIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNDE2OSwzICs0 MTY5LDI0IEBAIHl5c2Nhbl90CiB6X3N0cmVhbQogel9zdHJlYW1wCiB6aWNfdAorCisjIFRPRE8K K0FsdGVyUHJvcEdyYXBoRWxlbWVudEtpbmQKK0FsdGVyUHJvcEdyYXBoU3RtdAorQ3JlYXRlUHJv cEdyYXBoU3RtdAorRm9ybURhdGFfcGdfcHJvcGdyYXBoX2VsZW1lbnQKK0Zvcm1EYXRhX3BnX3By b3BncmFwaF9lbGVtZW50X2xhYmVsCitGb3JtRGF0YV9wZ19wcm9wZ3JhcGhfbGFiZWwKK0Zvcm1E YXRhX3BnX3Byb3BncmFwaF9sYWJlbF9wcm9wZXJ0eQorRm9ybURhdGFfcGdfcHJvcGdyYXBoX3By b3BlcnR5CitHcmFwaEVsZW1lbnRQYXR0ZXJuCitHcmFwaEVsZW1lbnRQYXR0ZXJuS2luZAorR3Jh cGhMYWJlbFJlZgorR3JhcGhQYXR0ZXJuCitHcmFwaFByb3BlcnR5UmVmCitHcmFwaFRhYmxlUGFy c2VTdGF0ZQorUHJvcEdyYXBoRWRnZQorUHJvcEdyYXBoTGFiZWxBbmRQcm9wZXJ0aWVzCitQcm9w R3JhcGhQcm9wZXJ0aWVzCitQcm9wR3JhcGhWZXJ0ZXgKK1JhbmdlR3JhcGhUYWJsZQotLSAKMi4z NC4xCgo= --000000000000a4f0a30620bbafb2 Content-Type: text/x-patch; charset="US-ASCII"; name="0002-pgperltidy-fixes-20240828.patch" Content-Disposition: attachment; filename="0002-pgperltidy-fixes-20240828.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m0dpc2up1 RnJvbSAzMGJlODM2MDRmMTY5MTY5ODYzNzA0ZDlmOGVjMjY1MzdjY2E5ZGI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXRAZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogV2VkLCAxNyBKdWwgMjAyNCAxMDowNTozOSArMDUzMApTdWJqZWN0 OiBbUEFUQ0ggMy84XSBwZ3Blcmx0aWR5IGZpeGVzCgpGaXhlcyBzdWdnZXN0ZWQgYnkgcGdwZXJs dGlkeS4gVG8gYmUgc3F1YXNoZWQgaW50byB0aGUgcHJldmlvdXMgY29tbWl0LgoKQXNodXRvc2gg QmFwYXQKLS0tCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCB8IDUgKysrLS0KIDEg ZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8w MDJfcGdfZHVtcC5wbAppbmRleCA5ZDY0ODVhY2ExLi4xZmMwMTA5YzE5IDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8w MDJfcGdfZHVtcC5wbApAQCAtMjkxNCwxMyArMjkxNCwxNCBAQCBteSAldGVzdHMgPSAoCiAKIAkn Q1JFQVRFIFBST1BFUlRZIEdSQVBIIHByb3BncmFwaCcgPT4gewogCQljcmVhdGVfb3JkZXIgPT4g MjAsCi0JCWNyZWF0ZV9zcWwgICA9PiAnQ1JFQVRFIFBST1BFUlRZIEdSQVBIIGR1bXBfdGVzdC5w cm9wZ3JhcGg7JywKKwkJY3JlYXRlX3NxbCA9PiAnQ1JFQVRFIFBST1BFUlRZIEdSQVBIIGR1bXBf dGVzdC5wcm9wZ3JhcGg7JywKIAkJcmVnZXhwID0+IHFyL14KIAkJCVxRQ1JFQVRFIFBST1BFUlRZ IEdSQVBIIGR1bXBfdGVzdC5wcm9wZ3JhcGhcRTsKIAkJCS94bSwKIAkJbGlrZSA9PgogCQkgIHsg JWZ1bGxfcnVucywgJWR1bXBfdGVzdF9zY2hlbWFfcnVucywgc2VjdGlvbl9wcmVfZGF0YSA9PiAx LCB9LAotCQl1bmxpa2UgPT4geyBleGNsdWRlX2R1bXBfdGVzdF9zY2hlbWEgPT4gMSwgb25seV9k dW1wX21lYXN1cmVtZW50ID0+IDEsIH0sCisJCXVubGlrZSA9PgorCQkgIHsgZXhjbHVkZV9kdW1w X3Rlc3Rfc2NoZW1hID0+IDEsIG9ubHlfZHVtcF9tZWFzdXJlbWVudCA9PiAxLCB9LAogCX0sCiAK IAknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEnID0+IHsKLS0gCjIuMzQuMQoK --000000000000a4f0a30620bbafb2 Content-Type: text/x-patch; charset="US-ASCII"; name="0006-Support-cyclic-path-pattern-20240828.patch" Content-Disposition: attachment; filename="0006-Support-cyclic-path-pattern-20240828.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m0dpc2v45 RnJvbSA5Y2E0OTczYmI0MWYyYWMzZTdhYWVhNDhjYjkwOGFkMWY0NGMyYzg4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXRAZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVGh1LCAxIEF1ZyAyMDI0IDEwOjUyOjM1ICswNTMwClN1YmplY3Q6 IFtQQVRDSCA3LzhdIFN1cHBvcnQgY3ljbGljIHBhdGggcGF0dGVybi4KCkEgY3ljbGljIHBhdGgg cGF0dGVybiBpcyBhIHBhdGggcGF0dGVybnMgd2hlcmUgYW4gZWxlbWVudCBwYXR0ZXJuIHZhcmlh YmxlCnJlcGVhdHMgaW4gbXVsdGlwbGUgZWxlbWVudCBwYXRoIHBhdHRlcm5zLiBJbiBzdWNoIGEg cGF0aCBwYXR0ZXJuIHRoZSBlbGVtZW50CnBhdHRlcm5zIHdpdGggdGhlIHNhbWUgdmFyaWFibGUg aW5kaWNhdGUgdGhlIHNhbWUgZWxlbWVudCBpbiB0aGUgcGF0aC4KCkVsZW1lbnRzIHdoaWNoIHNo YXJlIHRoZSB2YXJpYWJsZSBuYW1lIHNob3VsZCBoYXZlIHRoZSBzYW1lIGVsZW1lbnQgdHlwZS4g VGhlCmVsZW1lbnQgcGF0dGVybnMgc2hhcmluZyB0aGUgc2FtZSB2YXJpYWJsZSBuYW1lIHNob3Vs ZCBoYXZlIHNhbWUgbGFiZWwKZXhwcmVzc2lvbi4gVGhlIHBhdHRlcm5zIG1heSBiZSBoYXZlIGRp ZmZlcmVudCBjb25kaXRpb25zIHdoaWNoIGFyZSBmaW5hbGx5CkFORGVkIHNpbmNlIHRoZXkgYWxs IHJlcHJlc2VudCB0aGUgc2FtZSBlbGVtZW50LgoKV2hpbGUgaXQncyBlYXN5IHRvIGltYWdpbmUg YSByZXBlYXRlZCB2ZXJ0ZXggcGF0dGVybiwgYSByZXBlYXRlZCBlZGdlIHBhdHRlcm4KaXMgc2xp Z2h0bHkgY29tcGxleC4gQW4gZWRnZSBjb25uZWN0cyBvbmx5IHR3byB2ZXJ0aWNlcywgYW5kIHRo dXMgYSByZXBlYXRlZAplZGdlIHBhdHRlcm4gY29uc3RyYWlucyB0aGUgYWRqYWNlbnQgdmVydGV4 IHBhdHRlcm5zIGV2ZW4gaWYgdGhleSBoYXZlCmRpZmZlcmVudCB2YXJpYWJsZSBuYW1lcy4gU3Vj aCBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZC4KCkF1dGhvcjogQXNodXRvc2ggQmFwYXQKLS0t CiBzcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVHcmFwaFRhYmxlLmMgICB8IDM5MCArKysrKysr KysrKysrKy0tLS0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dyYXBoX3RhYmxlLm91 dCB8IDExOSArKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ncmFwaF90YWJsZS5zcWwgICAg ICB8ICA1MiArKy0KIDMgZmlsZXMgY2hhbmdlZCwgNDA3IGluc2VydGlvbnMoKyksIDE1NCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVHcmFwaFRh YmxlLmMgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVHcmFwaFRhYmxlLmMKaW5kZXggNGI3 ODdhMmU4OC4uNmUyZTZlZDM4YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdy aXRlR3JhcGhUYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUdyYXBoVGFi bGUuYwpAQCAtMzgsMjQgKzM4LDQ1IEBACiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIAog CisvKgorICogUmVwcmVzZW50cyBvbmUgcGF0aCBmYWN0b3IgaW4gYSBwYXRoLgorICoKKyAqIE9u ZSBwYXRoIGZhY3RvciBjb3JyZXNwb25kcyB0byBvbmUgZWxlbWVudCBwYXR0ZXJuIGluIGEgc2lt cGxlIHBhdGguCisgKgorICogSW4gYSBjeWNsaWMgcGF0aCwgb25lIHBhdGggZmFjdG9yIG1heSBj b3JyZXNwb25kIHRvIG9uZSBvciBtb3JlIGVsZW1lbnQKKyAqIHBhdHRlcm5zIGFsbCBwb2ludGlu ZyB0byB0aGUgc2FtZSBncmFwaCBlbGVtZW50LiBUaGUgbWVtYmVycyBvZiBzdWNoIGEgcGF0aAor ICogZmFjdG9yIGFyZSBhIGNvbWJpbmF0aW9uIG9mIGNvcnJlc3BvbmRpbmcgc3BlY2lmaWNhdGlv bnMgaW4gdGhlIGVsZW1lbnQKKyAqIHBhdHRlcm5zLgorICovCitzdHJ1Y3QgcGF0aF9mYWN0b3IK K3sKKwlHcmFwaEVsZW1lbnRQYXR0ZXJuS2luZCBraW5kOworCWNvbnN0IGNoYXIgKnZhcmlhYmxl OworCU5vZGUJICAgKmxhYmVsZXhwcjsKKwlOb2RlCSAgICp3aGVyZUNsYXVzZTsKKwlpbnQJCQlm YWN0b3Jwb3M7CQkvKiBQb3NpdGlvbiBvZiB0aGlzIHBhdGggZmFjdG9yIGluIGEgcGF0aC4gKi8K KwlMaXN0CSAgICpsYWJlbG9pZHM7CQkvKiBPSURzIG9mIGFsbCB0aGUgbGFiZWxzIHJlZmVyZW5j ZWQgaW4KKwkJCQkJCQkJICogbGFiZWxleHByLiAqLworCS8qIExpbmtzIHRvIHZlcnRleCBwYXRo IGZhY3RvcnMgY29ubmVjdGVkIGJ5IHRoaXMgZWRnZSBwYXRoIGZhY3Rvci4gKi8KKwlzdHJ1Y3Qg cGF0aF9mYWN0b3IgKnNyY19wZjsKKwlzdHJ1Y3QgcGF0aF9mYWN0b3IgKmRlc3RfcGY7Cit9Owor CiAvKgogICogUmVwcmVzZW50cyBvbmUgcHJvcGVydHkgZ3JhcGggZWxlbWVudCAodmVydGV4IG9y IGVkZ2UpIGluIHRoZSBwYXRoLgogICoKICAqIExhYmVsIGV4cHJlc3Npb24gaW4gYW4gZWxlbWVu dCBwYXR0ZXJuIHJlc29sdmVzIGludG8gYSBzZXQgb2YgZWxlbWVudHMuIEZvcgogICogZWFjaCBv ZiB0aG9zZSBlbGVtZW50cyB3ZSBjcmVhdGUgb25lIGdyYXBoX3BhdGhfZWxlbWVudCBvYmplY3Qu CiAgKi8KLXN0cnVjdCBncmFwaF9wYXRoX2VsZW1lbnQKK3N0cnVjdCBwYXRoX2VsZW1lbnQKIHsK IAlPaWQJCQllbGVtb2lkOwogCU9pZAkJCXJlbG9pZDsKLQlpbnQJCQlydGluZGV4OwotCUxpc3QJ ICAgKmxhYmVsb2lkczsKIAlPaWQJCQlzcmN2ZXJ0ZXhpZDsKLQlpbnQJCQlzcmNlbGVtX3BvczsK IAlPaWQJCQlkZXN0dmVydGV4aWQ7Ci0JaW50CQkJZGVzdGVsZW1fcG9zOwogCUxpc3QJICAgKnF1 YWxfZXhwcnM7Ci0JR3JhcGhFbGVtZW50UGF0dGVybiAqcGFyZW50X2dlcDsKKwkvKiBQYXRoIGZh Y3RvciBmcm9tIHdoaWNoIHRoaXMgZWxlbWVudCBpcyBkZXJpdmVkLiAqLworCXN0cnVjdCBwYXRo X2ZhY3RvciAqcGF0aF9mYWN0b3I7CiB9OwogCiBzdGF0aWMgTm9kZSAqcmVwbGFjZV9wcm9wZXJ0 eV9yZWZzKE9pZCBwcm9wZ3JhcGhpZCwgTm9kZSAqbm9kZSwgY29uc3QgTGlzdCAqbWFwcGluZ3Mp OwpAQCAtNjcsNyArODgsNyBAQCBzdGF0aWMgTGlzdCAqZ2VuZXJhdGVfcXVlcmllc19mb3JfcGF0 aF9wYXR0ZXJuX3JlY3Vyc2UoUmFuZ2VUYmxFbnRyeSAqcnRlLCBMaXN0CiBzdGF0aWMgUXVlcnkg KmdlbmVyYXRlX3F1ZXJ5X2Zvcl9lbXB0eV9wYXRoX3BhdHRlcm4oUmFuZ2VUYmxFbnRyeSAqcnRl KTsKIHN0YXRpYyBRdWVyeSAqZ2VuZXJhdGVfdW5pb25fZnJvbV9wYXRocXVlcmllcyhMaXN0ICoq cGF0aHF1ZXJpZXMpOwogc3RhdGljIGNvbnN0IGNoYXIgKmdldF9nZXBfa2luZF9uYW1lKEdyYXBo RWxlbWVudFBhdHRlcm5LaW5kIGdlcGtpbmQpOwotc3RhdGljIExpc3QgKmdldF9lbGVtZW50c19m b3JfZ2VwKE9pZCBwcm9wZ3JhcGhpZCwgR3JhcGhFbGVtZW50UGF0dGVybiAqZ2VwLCBpbnQgZWxl bXBvcyk7CitzdGF0aWMgTGlzdCAqZ2V0X3BhdGhfZWxlbWVudHNfZm9yX3BhdGhfZmFjdG9yKE9p ZCBwcm9wZ3JhcGhpZCwgc3RydWN0IHBhdGhfZmFjdG9yICpwZik7CiBzdGF0aWMgYm9vbCBpc19w cm9wZXJ0eV9hc3NvY2lhdGVkX3dpdGhfbGFiZWwoT2lkIGxhYmVsb2lkLCBPaWQgcHJvcG9pZCk7 CiBzdGF0aWMgY29uc3QgY2hhciAqZ2V0X2dyYXBoX2VsZW1fa2luZF9uYW1lKEdyYXBoRWxlbWVu dFBhdHRlcm5LaW5kIGdlcGtpbmQpOwogc3RhdGljIE5vZGUgKmdldF9lbGVtZW50X3Byb3BlcnR5 X2V4cHIoT2lkIGVsZW1vaWQsIE9pZCBwcm9wb2lkLCBpbnQgcnRpbmRleCk7CkBAIC0xNTcsOCAr MTc4LDkgQEAgZ2VuZXJhdGVfcXVlcmllc19mb3JfcGF0aF9wYXR0ZXJuKFJhbmdlVGJsRW50cnkg KnJ0ZSwgTGlzdCAqcGF0aF9wYXR0ZXJuKQogewogCUxpc3QJICAgKnBhdGhxdWVyaWVzID0gTklM OwogCUxpc3QJICAgKnBhdGhfZWxlbV9saXN0cyA9IE5JTDsKLQlMaXN0Q2VsbCAgICpsYzsKLQlp bnQJCQllbGVtcG9zID0gMDsKKwlpbnQJCQlmYWN0b3Jwb3MgPSAwOworCUxpc3QJICAgKnBhdGhf ZmFjdG9ycyA9IE5JTDsKKwlzdHJ1Y3QgcGF0aF9mYWN0b3IgKnByZXZfcGYgPSBOVUxMOwogCiAJ QXNzZXJ0KGxpc3RfbGVuZ3RoKHBhdGhfcGF0dGVybikgPiAwKTsKIApAQCAtMTY2LDkgKzE4OCw5 IEBAIGdlbmVyYXRlX3F1ZXJpZXNfZm9yX3BhdGhfcGF0dGVybihSYW5nZVRibEVudHJ5ICpydGUs IExpc3QgKnBhdGhfcGF0dGVybikKIAkgKiBGb3IgZXZlcnkgZWxlbWVudCBwYXR0ZXJuIGluIHRo ZSBnaXZlbiBwYXRoIHBhdHRlcm4gY29sbGVjdCBhbGwgdGhlCiAJICogZ3JhcGggZWxlbWVudHMg dGhhdCBzYXRpc2Z5IHRoZSBlbGVtZW50IHBhdHRlcm4uCiAJICovCi0JZm9yZWFjaChsYywgcGF0 aF9wYXR0ZXJuKQorCWZvcmVhY2hfbm9kZShHcmFwaEVsZW1lbnRQYXR0ZXJuLCBnZXAsIHBhdGhf cGF0dGVybikKIAl7Ci0JCUdyYXBoRWxlbWVudFBhdHRlcm4gKmdlcCA9IGxmaXJzdF9ub2RlKEdy YXBoRWxlbWVudFBhdHRlcm4sIGxjKTsKKwkJc3RydWN0IHBhdGhfZmFjdG9yICpwZiA9IE5VTEw7 CiAKIAkJaWYgKGdlcC0+a2luZCAhPSBWRVJURVhfUEFUVEVSTiAmJgogCQkJZ2VwLT5raW5kICE9 IEVER0VfUEFUVEVSTl9MRUZUICYmIGdlcC0+a2luZCAhPSBFREdFX1BBVFRFUk5fUklHSFQpCkBA IC0xNzcsMTMgKzE5OSwxMzIgQEAgZ2VuZXJhdGVfcXVlcmllc19mb3JfcGF0aF9wYXR0ZXJuKFJh bmdlVGJsRW50cnkgKnJ0ZSwgTGlzdCAqcGF0aF9wYXR0ZXJuKQogCQlpZiAoZ2VwLT5xdWFudGlm aWVyKQogCQkJZWxvZyhFUlJPUiwgImVsZW1lbnQgcGF0dGVybiBxdWFudGlmaWVyIG5vdCBzdXBw b3J0ZWQgeWV0Iik7CiAKLQkJcGF0aF9lbGVtX2xpc3RzID0gbGFwcGVuZChwYXRoX2VsZW1fbGlz dHMsCi0JCQkJCQkJCSAgZ2V0X2VsZW1lbnRzX2Zvcl9nZXAocnRlLT5yZWxpZCwgZ2VwLCBlbGVt cG9zKyspKTsKKwkJLyoKKwkJICogRWxlbWVudCBwYXR0ZXJucyB3aXRoIHRoZSBzYW1lIG5hbWUg cmVwcmVzZW50IHRoZSBzYW1lIGVsZW1lbnQgYW5kCisJCSAqIGhlbmNlIHNhbWUgcGF0aCBmYWN0 b3IuIFRoZXkgZG8gbm90IGFkZCBhIG5ldyBncmFwaCBlbGVtZW50IHRvIHRoZQorCQkgKiBxdWVy eSBidXQgYWZmZWN0IHRoZSBsaW5rcyBvZiBhZGphY2VudCBlbGVtZW50cy4KKwkJICovCisJCWZv cmVhY2hfcHRyKHN0cnVjdCBwYXRoX2ZhY3Rvciwgb3RoZXIsIHBhdGhfZmFjdG9ycykKKwkJewor CQkJaWYgKGdlcC0+dmFyaWFibGUgJiYgb3RoZXItPnZhcmlhYmxlICYmCisJCQkJc3RyY21wKGdl cC0+dmFyaWFibGUsIG90aGVyLT52YXJpYWJsZSkgPT0gMCkKKwkJCXsKKwkJCQlpZiAob3RoZXIt PmtpbmQgIT0gZ2VwLT5raW5kKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkvKiBYWFg6IHVz ZSBjb3JyZWN0IGVycm9yIGNvZGUuICovCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQkJIGVycm1zZygiZWxlbWVudCBwYXR0ZXJucyB3aXRo IHNhbWUgdmFyaWFibGUgbmFtZSBcIiVzXCIgYnV0IGRpZmZlcmVudCBlbGVtZW50IHBhdHRlcm4g dHlwZXMiLAorCQkJCQkJCQkJZ2VwLT52YXJpYWJsZSkpKTsKKworCQkJCS8qCisJCQkJICogSWYg b25seSBvbmUgb2YgdGhlIHR3byBlbGVtZW50IHBhdHRlcm5zIGhhcyBhIGxhYmVsCisJCQkJICog ZXhwcmVzc2lvbiB1c2UgaXQuIE90aGVyd2lzZSBtYWtlIHN1cmUgdGhhdCBib3RoIG9mIHRoZW0K KwkJCQkgKiBoYXZlIHRoZSBzYW1lIGxhYmVsIGV4cHJlc3Npb24uIElmIHRoZXkgaGF2ZSBkaWZm ZXJlbnQKKwkJCQkgKiBsYWJlbCBleHByZXNzaW9ucyB0aGV5IG5lZWQgdG8gYmUgY29uanVuY3Rl ZC4gTGFiZWwKKwkJCQkgKiBjb25qdWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgcmlnaHQgbm93Lgor CQkJCSAqLworCQkJCWlmICghb3RoZXItPmxhYmVsZXhwcikKKwkJCQkJb3RoZXItPmxhYmVsZXhw ciA9IGdlcC0+bGFiZWxleHByOworCQkJCWVsc2UgaWYgKGdlcC0+bGFiZWxleHByICYmICFlcXVh bChvdGhlci0+bGFiZWxleHByLCBnZXAtPmxhYmVsZXhwcikpCisJCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCS8qIFhYWDogVXNlIGNvcnJlY3QgZXJyb3IgY29kZS4gKi8KKwkJCQkJCQkoZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCQkgZXJybXNnKCJlbGVt ZW50IHBhdHRlcm5zIHdpdGggc2FtZSB2YXJpYWJsZSBuYW1lIFwiJXNcIiBidXQgZGlmZmVyZW50 IGxhYmVsIGV4cHJlc3Npb25zIiwKKwkJCQkJCQkJCWdlcC0+dmFyaWFibGUpKSk7CisKKwkJCQkv KiBCb3RoIHNldHMgb2YgY29uZGl0aW9ucyBhcHBseSB0byB0aGUgZWxlbWVudCBwYXR0ZXJuLiAq LworCQkJCWlmICghb3RoZXItPndoZXJlQ2xhdXNlKQorCQkJCQlvdGhlci0+d2hlcmVDbGF1c2Ug PSBnZXAtPndoZXJlQ2xhdXNlOworCQkJCWVsc2UgaWYgKGdlcC0+d2hlcmVDbGF1c2UpCisJCQkJ CW90aGVyLT53aGVyZUNsYXVzZSA9IChOb2RlICopIG1ha2VCb29sRXhwcihBTkRfRVhQUiwKKwkJ CQkJCQkJCQkJCQkJCSAgIGxpc3RfbWFrZTIob3RoZXItPndoZXJlQ2xhdXNlLCBnZXAtPndoZXJl Q2xhdXNlKSwKKwkJCQkJCQkJCQkJCQkJCSAgIC0xKTsKKwkJCQlwZiA9IG90aGVyOworCQkJCWJy ZWFrOworCQkJfQorCQl9CisKKwkJaWYgKCFwZikKKwkJeworCQkJeworCQkJCXBmID0gcGFsbG9j MF9vYmplY3Qoc3RydWN0IHBhdGhfZmFjdG9yKTsKKwkJCQlwZi0+ZmFjdG9ycG9zID0gZmFjdG9y cG9zKys7CisJCQkJcGYtPmtpbmQgPSBnZXAtPmtpbmQ7CisJCQkJcGYtPmxhYmVsZXhwciA9IGdl cC0+bGFiZWxleHByOworCQkJCXBmLT52YXJpYWJsZSA9IGdlcC0+dmFyaWFibGU7CisJCQkJcGYt PndoZXJlQ2xhdXNlID0gZ2VwLT53aGVyZUNsYXVzZTsKKworCQkJCXBhdGhfZmFjdG9ycyA9IGxh cHBlbmQocGF0aF9mYWN0b3JzLCBwZik7CisJCQl9CisJCX0KKworCQkvKgorCQkgKiBTZXR1cCBh ZGphY2VudCBwYXRoIGZhY3RvcnMuIElmIG11bHRpcGxlIGVkZ2UgcGF0dGVybnMgc2hhcmUgdGhl CisJCSAqIHNhbWUgdmFyaWFibGUgbmFtZSwgdGhleSBjb25zdGFpbiB0aGUgYWRqYWNlbnQgdmVy dGV4IHBhdHRlcm5zCisJCSAqIHNpbmNlIGFuIGVkZ2UgY2FuIGNvbm5lY3Qgb25seSBvbmUgcGFp ciBvZiB2ZXJ0ZXhlcyBhbmQgdGhvc2UKKwkJICogdmVydGV4ZXMgYWxzbyBuZWVkIHRvIHJlcGVh dGVkIGFsb25nIHdpdGggdGhlIGVkZ2UgKGEgd2FsaykuIFRoaXMKKwkJICogbWVhbnMgdGhhdCB3 ZSBoYXZlIHRvIGNvYWxlc2NlIHRoZSB2ZXJ0ZXggcGF0dGVybnMgYWRqYWNlbnQgdG8gYQorCQkg KiByZXBlYXRlZCBlZGdlIGV2ZW4gdGhvdWdoIHRoZXkgaGF2ZSBkaWZmZXJlbnQgdmFyaWFibGVz LiAgRS5nLgorCQkgKiAoYSktW2JdLT4oYyktW2JdPC0oZCkgaW1wbGllcyB0aGF0IChhKSBhbmQg KGQpIHJlcHJlc2VudCB0aGUgc2FtZQorCQkgKiB2ZXJ0ZXggZWxlbWVudCBwYXR0ZXJuLiBUaGlz IGlzIHNsaWdobHkgaGFyZGVyIHRvIGltcGxlbWVudCBhbmQKKwkJICogcHJvYmFibHkgbGVzcyB1 c2VmdWwuIEhlbmNlIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdy4KKwkJICovCisJCWlmIChwcmV2X3Bm KQorCQl7CisJCQlpZiAocHJldl9wZi0+a2luZCA9PSBFREdFX1BBVFRFUk5fUklHSFQpCisJCQl7 CisJCQkJQXNzZXJ0KCFJU19FREdFX1BBVFRFUk4ocGYtPmtpbmQpKTsKKwkJCQlpZiAocHJldl9w Zi0+ZGVzdF9wZiAmJiBwcmV2X3BmLT5kZXN0X3BmICE9IHBmKQorCQkJCQllbG9nKEVSUk9SLCAi QW4gZWRnZSBjYW4gbm90IGNvbm5lY3QgbW9yZSB0aGFuIHR3byB2ZXJ0ZXhlcyBldmVuIGluIGEg Y3ljbGljIHBhdHRlcm4uIik7CisJCQkJcHJldl9wZi0+ZGVzdF9wZiA9IHBmOworCQkJfQorCQkJ ZWxzZSBpZiAocHJldl9wZi0+a2luZCA9PSBFREdFX1BBVFRFUk5fTEVGVCkKKwkJCXsKKwkJCQlB c3NlcnQoIUlTX0VER0VfUEFUVEVSTihwZi0+a2luZCkpOworCQkJCWlmIChwcmV2X3BmLT5zcmNf cGYgJiYgcHJldl9wZi0+c3JjX3BmICE9IHBmKQorCQkJCQllbG9nKEVSUk9SLCAiQW4gZWRnZSBj YW4gbm90IGNvbm5lY3QgbW9yZSB0aGFuIHR3byB2ZXJ0ZXhlcyBldmVuIGluIGEgY3ljbGljIHBh dHRlcm4uIik7CisJCQkJcHJldl9wZi0+c3JjX3BmID0gcGY7CisJCQl9CisJCQllbHNlIGlmIChw cmV2X3BmLT5raW5kID09IEVER0VfUEFUVEVSTl9BTlkpCisJCQl7CisJCQkJLyogV2UgZG9uJ3Qg c3VwcG9ydCB1bmRpcmVjdGVkIGVkZ2VzIHlldC4gKi8KKwkJCQlBc3NlcnQoZmFsc2UpOworCQkJ fQorCisJCQlpZiAocGYtPmtpbmQgPT0gRURHRV9QQVRURVJOX1JJR0hUKQorCQkJeworCQkJCUFz c2VydCghSVNfRURHRV9QQVRURVJOKHByZXZfcGYtPmtpbmQpKTsKKwkJCQlpZiAocGYtPnNyY19w ZiAmJiBwZi0+c3JjX3BmICE9IHByZXZfcGYpCisJCQkJCWVsb2coRVJST1IsICJBbiBlZGdlIGNh biBub3QgY29ubmVjdCBtb3JlIHRoYW4gdHdvIHZlcnRleGVzIGV2ZW4gaW4gYSBjeWNsaWMgcGF0 dGVybi4iKTsKKwkJCQlwZi0+c3JjX3BmID0gcHJldl9wZjsKKwkJCX0KKwkJCWVsc2UgaWYgKHBm LT5raW5kID09IEVER0VfUEFUVEVSTl9MRUZUKQorCQkJeworCQkJCUFzc2VydCghSVNfRURHRV9Q QVRURVJOKHByZXZfcGYtPmtpbmQpKTsKKwkJCQlpZiAocGYtPmRlc3RfcGYgJiYgcGYtPmRlc3Rf cGYgIT0gcHJldl9wZikKKwkJCQkJZWxvZyhFUlJPUiwgIkFuIGVkZ2UgY2FuIG5vdCBjb25uZWN0 IG1vcmUgdGhhbiB0d28gdmVydGV4ZXMgZXZlbiBpbiBhIGN5Y2xpYyBwYXR0ZXJuLiIpOworCQkJ CXBmLT5kZXN0X3BmID0gcHJldl9wZjsKKwkJCX0KKwkJCWVsc2UgaWYgKHBmLT5raW5kID09IEVE R0VfUEFUVEVSTl9BTlkpCisJCQl7CisJCQkJLyogV2UgZG9uJ3Qgc3VwcG9ydCB1bmRpcmVjdGVk IGVkZ2VzIHlldC4gKi8KKwkJCQlBc3NlcnQoZmFsc2UpOworCQkJfQorCQl9CisKKwkJcHJldl9w ZiA9IHBmOwogCX0KIAorCS8qCisJICogQ29sbGVjdCBsaXN0IG9mIGVsZW1lbnRzIGZvciBlYWNo IHBhdGggZmFjdG9yLiBEbyB0aGlzIGFmdGVyIGFsbCB0aGUKKwkgKiBlZGdlIGxpbmtzIGFyZSBz ZXR1cCBjb3JyZWN0bHkuCisJICovCisJZm9yZWFjaF9wdHIoc3RydWN0IHBhdGhfZmFjdG9yLCBw ZiwgcGF0aF9mYWN0b3JzKQorCQlwYXRoX2VsZW1fbGlzdHMgPSBsYXBwZW5kKHBhdGhfZWxlbV9s aXN0cywKKwkJCQkJCQkJICBnZXRfcGF0aF9lbGVtZW50c19mb3JfcGF0aF9mYWN0b3IocnRlLT5y ZWxpZCwgcGYpKTsKKwogCXBhdGhxdWVyaWVzID0gZ2VuZXJhdGVfcXVlcmllc19mb3JfcGF0aF9w YXR0ZXJuX3JlY3Vyc2UocnRlLCBwYXRocXVlcmllcywKIAkJCQkJCQkJCQkJCQkJCU5JTCwgcGF0 aF9lbGVtX2xpc3RzLCAwKTsKLQogCWlmICghcGF0aHF1ZXJpZXMpCiAJCXBhdGhxdWVyaWVzID0g bGlzdF9tYWtlMShnZW5lcmF0ZV9xdWVyeV9mb3JfZW1wdHlfcGF0aF9wYXR0ZXJuKHJ0ZSkpOwog CkBAIC0xOTYsMTUgKzMzNywxMiBAQCBnZW5lcmF0ZV9xdWVyaWVzX2Zvcl9wYXRoX3BhdHRlcm4o UmFuZ2VUYmxFbnRyeSAqcnRlLCBMaXN0ICpwYXRoX3BhdHRlcm4pCiBzdGF0aWMgTGlzdCAqCiBn ZW5lcmF0ZV9xdWVyaWVzX2Zvcl9wYXRoX3BhdHRlcm5fcmVjdXJzZShSYW5nZVRibEVudHJ5ICpy dGUsIExpc3QgKnBhdGhxdWVyaWVzLCBMaXN0ICpjdXJfcGF0aCwgTGlzdCAqcGF0aF9lbGVtX2xp c3RzLCBpbnQgZWxlbXBvcykKIHsKLQlMaXN0CSAgICpnZXBfZWxlbXMgPSBsaXN0X250aF9ub2Rl KExpc3QsIHBhdGhfZWxlbV9saXN0cywgZWxlbXBvcyk7Ci0JTGlzdENlbGwgICAqbGM7CisJTGlz dAkgICAqcGF0aF9lbGVtcyA9IGxpc3RfbnRoX25vZGUoTGlzdCwgcGF0aF9lbGVtX2xpc3RzLCBl bGVtcG9zKTsKIAotCWZvcmVhY2gobGMsIGdlcF9lbGVtcykKKwlmb3JlYWNoX3B0cihzdHJ1Y3Qg cGF0aF9lbGVtZW50LCBwZSwgcGF0aF9lbGVtcykKIAl7Ci0JCXN0cnVjdCBncmFwaF9wYXRoX2Vs ZW1lbnQgKmVsZW0gPSBsZmlyc3QobGMpOwotCiAJCS8qIFVwZGF0ZSBjdXJyZW50IHBhdGggYmVp bmcgYnVpbHQgd2l0aCBjdXJyZW50IGVsZW1lbnQuICovCi0JCWN1cl9wYXRoID0gbGFwcGVuZChj dXJfcGF0aCwgZWxlbSk7CisJCWN1cl9wYXRoID0gbGFwcGVuZChjdXJfcGF0aCwgcGUpOwogCiAJ CS8qCiAJCSAqIElmIHRoaXMgaXMgdGhlIGxhc3QgZWxlbWVudCBpbiB0aGUgcGF0aCwgZ2VuZXJh dGUgcXVlcnkgZm9yIHRoZQpAQCAtMjM4LDUwICszNzYsNDcgQEAgZ2VuZXJhdGVfcXVlcmllc19m b3JfcGF0aF9wYXR0ZXJuX3JlY3Vyc2UoUmFuZ2VUYmxFbnRyeSAqcnRlLCBMaXN0ICpwYXRocXVl cmllcywKIHN0YXRpYyBRdWVyeSAqCiBnZW5lcmF0ZV9xdWVyeV9mb3JfZ3JhcGhfcGF0aChSYW5n ZVRibEVudHJ5ICpydGUsIExpc3QgKmdyYXBoX3BhdGgpCiB7Ci0JTGlzdENlbGwgICAqbGM7CiAJ UXVlcnkJICAgKnBhdGhfcXVlcnkgPSBtYWtlTm9kZShRdWVyeSk7CiAJTGlzdAkgICAqZnJvbWxp c3QgPSBOSUw7CiAJTGlzdAkgICAqcXVhbF9leHBycyA9IE5JTDsKIAogCXBhdGhfcXVlcnktPmNv bW1hbmRUeXBlID0gQ01EX1NFTEVDVDsKIAotCWZvcmVhY2gobGMsIGdyYXBoX3BhdGgpCisJZm9y ZWFjaF9wdHIoc3RydWN0IHBhdGhfZWxlbWVudCwgcGUsIGdyYXBoX3BhdGgpCiAJewotCQlzdHJ1 Y3QgZ3JhcGhfcGF0aF9lbGVtZW50ICpncGUgPSAoc3RydWN0IGdyYXBoX3BhdGhfZWxlbWVudCAq KSBsZmlyc3QobGMpOwotCQlHcmFwaEVsZW1lbnRQYXR0ZXJuICpnZXAgPSBncGUtPnBhcmVudF9n ZXA7CisJCXN0cnVjdCBwYXRoX2ZhY3RvciAqcGYgPSBwZS0+cGF0aF9mYWN0b3I7CiAJCVJhbmdl VGJsUmVmICpydHI7CiAJCVJlbGF0aW9uCXJlbDsKIAkJUGFyc2VOYW1lc3BhY2VJdGVtICpwbmk7 CiAKLQkJQXNzZXJ0KGdlcC0+a2luZCA9PSBWRVJURVhfUEFUVEVSTiB8fAotCQkJICAgZ2VwLT5r aW5kID09IEVER0VfUEFUVEVSTl9MRUZUIHx8IGdlcC0+a2luZCA9PSBFREdFX1BBVFRFUk5fUklH SFQpOwotCQlBc3NlcnQoIWdlcC0+cXVhbnRpZmllcik7CisJCUFzc2VydChwZi0+a2luZCA9PSBW RVJURVhfUEFUVEVSTiB8fAorCQkJICAgcGYtPmtpbmQgPT0gRURHRV9QQVRURVJOX0xFRlQgfHwg cGYtPmtpbmQgPT0gRURHRV9QQVRURVJOX1JJR0hUKTsKIAotCQlpZiAoZ2VwLT5raW5kID09IEVE R0VfUEFUVEVSTl9MRUZUIHx8IGdlcC0+a2luZCA9PSBFREdFX1BBVFRFUk5fUklHSFQpCisJCWlm IChwZi0+a2luZCA9PSBFREdFX1BBVFRFUk5fTEVGVCB8fCBwZi0+a2luZCA9PSBFREdFX1BBVFRF Uk5fUklHSFQpCiAJCXsKLQkJCXN0cnVjdCBncmFwaF9wYXRoX2VsZW1lbnQgKnNyY19ncGUgPSBs aXN0X250aChncmFwaF9wYXRoLCBncGUtPnNyY2VsZW1fcG9zKTsKLQkJCXN0cnVjdCBncmFwaF9w YXRoX2VsZW1lbnQgKmRlc3RfZ3BlID0gbGlzdF9udGgoZ3JhcGhfcGF0aCwgZ3BlLT5kZXN0ZWxl bV9wb3MpOworCQkJc3RydWN0IHBhdGhfZWxlbWVudCAqc3JjX3BlOworCQkJc3RydWN0IHBhdGhf ZWxlbWVudCAqZGVzdF9nZTsKIAotCQkJLyoKLQkJCSAqIE1ha2Ugc3VyZSB0aGF0IHRoZSBzb3Vy Y2UgYW5kIGRlc3RpbmF0aW9uIGVsZW1lbnRzIG9mIHRoaXMgZWRnZQotCQkJICogYXJlIHBsYWNl ZCBhdCB0aGUgZXhwZWN0ZWQgcG9zaXRpb24gYW5kIGhhdmUgdGhlIGNvcnJldAotCQkJICogUmFu Z2VUYmxFbnRyeSBpbmRleGVzIGFzIHNldHVwIGJ5IGNyZWF0ZV9ncGVfZm9yX2VsZW1lbnQoKS4K LQkJCSAqLwotCQkJQXNzZXJ0KGdwZS0+c3JjZWxlbV9wb3MgPT0gc3JjX2dwZS0+cnRpbmRleCAt IDEgJiYKLQkJCQkgICBncGUtPmRlc3RlbGVtX3BvcyA9PSBkZXN0X2dwZS0+cnRpbmRleCAtIDEp OworCQkJQXNzZXJ0KHBmLT5zcmNfcGYgJiYgcGYtPmRlc3RfcGYpOworCQkJc3JjX3BlID0gbGlz dF9udGgoZ3JhcGhfcGF0aCwgcGYtPnNyY19wZi0+ZmFjdG9ycG9zKTsKKwkJCWRlc3RfZ2UgPSBs aXN0X250aChncmFwaF9wYXRoLCBwZi0+ZGVzdF9wZi0+ZmFjdG9ycG9zKTsKKworCQkJLyogTWFr ZSBzdXJlIHRoYXQgdGhlIGxpbmtzIG9mIGFkamFjZW50IHZlcnRpY2VzIGFyZSBjb3JyZWN0LiAq LworCQkJQXNzZXJ0KHBmLT5zcmNfcGYgPT0gc3JjX3BlLT5wYXRoX2ZhY3RvciAmJgorCQkJCSAg IHBmLT5kZXN0X3BmID09IGRlc3RfZ2UtPnBhdGhfZmFjdG9yKTsKIAogCQkJLyoKIAkJCSAqIElm IHRoZSBnaXZlbiBlZGdlIGVsZW1lbnQgZG9lcyBub3QgY29ubmVjdCB0aGUgYWRqYWNlbnQgdmVy dGV4CiAJCQkgKiBlbGVtZW50cyBpbiB0aGlzIHBhdGgsIHRoZSBwYXRoIGlzIGJyb2tlbi4gQWJh bmRvbiB0aGlzIHBhdGggYXMKIAkJCSAqIGl0IHdvbid0IHJldHVybiBhbnkgcm93cy4KIAkJCSAq LwotCQkJaWYgKHNyY19ncGUtPmVsZW1vaWQgIT0gZ3BlLT5zcmN2ZXJ0ZXhpZCB8fAotCQkJCWRl c3RfZ3BlLT5lbGVtb2lkICE9IGdwZS0+ZGVzdHZlcnRleGlkKQorCQkJaWYgKHNyY19wZS0+ZWxl bW9pZCAhPSBwZS0+c3JjdmVydGV4aWQgfHwKKwkJCQlkZXN0X2dlLT5lbGVtb2lkICE9IHBlLT5k ZXN0dmVydGV4aWQpCiAJCQkJcmV0dXJuIE5VTEw7CiAJCX0KIAogCQkvKiBDcmVhdGUgUmFuZ2VU YmxFbnRyeSBmb3IgdGhpcyBlbGVtZW50IHRhYmxlLiAqLwotCQlyZWwgPSB0YWJsZV9vcGVuKGdw ZS0+cmVsb2lkLCBBY2Nlc3NTaGFyZUxvY2spOworCQlyZWwgPSB0YWJsZV9vcGVuKHBlLT5yZWxv aWQsIEFjY2Vzc1NoYXJlTG9jayk7CiAJCXBuaSA9IGFkZFJhbmdlVGFibGVFbnRyeUZvclJlbGF0 aW9uKG1ha2VfcGFyc2VzdGF0ZShOVUxMKSwgcmVsLCBBY2Nlc3NTaGFyZUxvY2ssCiAJCQkJCQkJ CQkJCU5VTEwsIHRydWUsIGZhbHNlKTsKIAkJdGFibGVfY2xvc2UocmVsLCBOb0xvY2spOwpAQCAt Mjk3LDE3ICs0MzIsMTcgQEAgZ2VuZXJhdGVfcXVlcnlfZm9yX2dyYXBoX3BhdGgoUmFuZ2VUYmxF bnRyeSAqcnRlLCBMaXN0ICpncmFwaF9wYXRoKQogCQkgKiBob2xkcyB0cnVlLiBUaGF0IHRoZSBl bGVtZW50cycgUmFuZ2VUYmxFbnRyeXMgYXJlIGFkZGVkIGluIHRoZQogCQkgKiBvcmRlciBpbiB3 aGljaCB0aGV5IGFwcGVhciBpbiB0aGUgcGF0aC4KIAkJICovCi0JCUFzc2VydChncGUtPnJ0aW5k ZXggPT0gcnRyLT5ydGluZGV4KTsKKwkJQXNzZXJ0KHBmLT5mYWN0b3Jwb3MgKyAxID09IHJ0ci0+ cnRpbmRleCk7CiAKLQkJaWYgKGdlcC0+d2hlcmVDbGF1c2UpCisJCWlmIChwZi0+d2hlcmVDbGF1 c2UpCiAJCXsKIAkJCU5vZGUJICAgKnRyOwogCi0JCQl0ciA9IHJlcGxhY2VfcHJvcGVydHlfcmVm cyhydGUtPnJlbGlkLCBnZXAtPndoZXJlQ2xhdXNlLCBsaXN0X21ha2UxKGdwZSkpOworCQkJdHIg PSByZXBsYWNlX3Byb3BlcnR5X3JlZnMocnRlLT5yZWxpZCwgcGYtPndoZXJlQ2xhdXNlLCBsaXN0 X21ha2UxKHBlKSk7CiAKIAkJCXF1YWxfZXhwcnMgPSBsYXBwZW5kKHF1YWxfZXhwcnMsIHRyKTsK IAkJfQotCQlxdWFsX2V4cHJzID0gbGlzdF9jb25jYXQocXVhbF9leHBycywgZ3BlLT5xdWFsX2V4 cHJzKTsKKwkJcXVhbF9leHBycyA9IGxpc3RfY29uY2F0KHF1YWxfZXhwcnMsIHBlLT5xdWFsX2V4 cHJzKTsKIAl9CiAKIAlpZiAocnRlLT5ncmFwaF9wYXR0ZXJuLT53aGVyZUNsYXVzZSkKQEAgLTMz OSw3ICs0NzQsNiBAQCBzdGF0aWMgUXVlcnkgKgogZ2VuZXJhdGVfcXVlcnlfZm9yX2VtcHR5X3Bh dGhfcGF0dGVybihSYW5nZVRibEVudHJ5ICpydGUpCiB7CiAJUXVlcnkJICAgKnF1ZXJ5ID0gbWFr ZU5vZGUoUXVlcnkpOwotCUxpc3RDZWxsICAgKmxjOwogCiAJcXVlcnktPmNvbW1hbmRUeXBlID0g Q01EX1NFTEVDVDsKIApAQCAtMzU1LDkgKzQ4OSw4IEBAIGdlbmVyYXRlX3F1ZXJ5X2Zvcl9lbXB0 eV9wYXRoX3BhdHRlcm4oUmFuZ2VUYmxFbnRyeSAqcnRlKQogCSAqIGNvbHVtbnMgYXMgcHJvamVj dGVkIGJ5IEdSQVBIX1RBQkxFIGNsYXVzZS4gRG8gdGhpcyBieSBjb25zdHJ1Y3RpbmcgYQogCSAq IHRhcmdldCBsaXN0IGZ1bGwgb2YgTlVMTCB2YWx1ZXMuCiAJICovCi0JZm9yZWFjaChsYywgcnRl LT5ncmFwaF90YWJsZV9jb2x1bW5zKQorCWZvcmVhY2hfbm9kZShUYXJnZXRFbnRyeSwgdGUsIHJ0 ZS0+Z3JhcGhfdGFibGVfY29sdW1ucykKIAl7Ci0JCVRhcmdldEVudHJ5ICp0ZSA9IGNvcHlPYmpl Y3QobGZpcnN0X25vZGUoVGFyZ2V0RW50cnksIGxjKSk7CiAJCU5vZGUJICAgKm50ZSA9IChOb2Rl ICopIHRlLT5leHByOwogCiAJCXRlLT5leHByID0gKEV4cHIgKikgbWFrZU51bGxDb25zdChleHBy VHlwZShudGUpLCBleHByVHlwbW9kKG50ZSksIGV4cHJDb2xsYXRpb24obnRlKSk7CkBAIC00ODMs MTMgKzYxNiw5IEBAIGdlbmVyYXRlX3NldG9wX2Zyb21fcGF0aHF1ZXJpZXMoTGlzdCAqcGF0aHF1 ZXJpZXMsIExpc3QgKipydGFibGUsIExpc3QgKip0YXJnZXRsCiAJCSAqLwogCQlpZiAodGFyZ2V0 bGlzdCkKIAkJewotCQkJTGlzdENlbGwgICAqdGw7Ci0KIAkJCSp0YXJnZXRsaXN0ID0gTklMOwot CQkJZm9yZWFjaCh0bCwgbHF1ZXJ5LT50YXJnZXRMaXN0KQorCQkJZm9yZWFjaF9ub2RlKFRhcmdl dEVudHJ5LCB0bGUsIGxxdWVyeS0+dGFyZ2V0TGlzdCkKIAkJCXsKLQkJCQlUYXJnZXRFbnRyeSAq dGxlID0gKFRhcmdldEVudHJ5ICopIGxmaXJzdCh0bCk7Ci0KIAkJCQlpZiAoIXRsZS0+cmVzanVu aykKIAkJCQkJKnRhcmdldGxpc3QgPSBsYXBwZW5kKCp0YXJnZXRsaXN0LCB0bGUpOwogCQkJfQpA QCAtNTE2LDI5ICs2NDUsMjkgQEAgZ2VuZXJhdGVfc2V0b3BfZnJvbV9wYXRocXVlcmllcyhMaXN0 ICpwYXRocXVlcmllcywgTGlzdCAqKnJ0YWJsZSwgTGlzdCAqKnRhcmdldGwKICAqIElmIHRoZSB0 eXBlIG9mIGdyYXBoIGVsZW1lbnQgZG9lcyBub3QgZml0IHRoZSBlbGVtZW50IHBhdHRlcm4ga2lu ZCwgdGhlCiAgKiBmdW5jdGlvbiByZXR1cm5zIE5VTEwuCiAgKi8KLXN0YXRpYyBzdHJ1Y3QgZ3Jh cGhfcGF0aF9lbGVtZW50ICoKLWNyZWF0ZV9ncGVfZm9yX2VsZW1lbnQoR3JhcGhFbGVtZW50UGF0 dGVybiAqZ2VwLCBPaWQgZWxlbW9pZCwgaW50IGVsZW1wb3MpCitzdGF0aWMgc3RydWN0IHBhdGhf ZWxlbWVudCAqCitjcmVhdGVfZ3BlX2Zvcl9lbGVtZW50KHN0cnVjdCBwYXRoX2ZhY3RvciAqcGYs IE9pZCBlbGVtb2lkKQogewogCUhlYXBUdXBsZQllbGV0dXAgPSBTZWFyY2hTeXNDYWNoZTEoUFJP UEdSQVBIRUxPSUQsIE9iamVjdElkR2V0RGF0dW0oZWxlbW9pZCkpOwogCUZvcm1fcGdfcHJvcGdy YXBoX2VsZW1lbnQgcGdlZm9ybTsKLQlzdHJ1Y3QgZ3JhcGhfcGF0aF9lbGVtZW50ICpncGU7CisJ c3RydWN0IHBhdGhfZWxlbWVudCAqcGU7CiAKIAlpZiAoIWVsZXR1cCkKIAkJZWxvZyhFUlJPUiwg ImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHByb3BlcnR5IGdyYXBoIGVsZW1lbnQgJXUiLCBlbGVt b2lkKTsKIAlwZ2Vmb3JtID0gKChGb3JtX3BnX3Byb3BncmFwaF9lbGVtZW50KSBHRVRTVFJVQ1Qo ZWxldHVwKSk7CiAKLQlpZiAoKHBnZWZvcm0tPnBnZWtpbmQgPT0gUEdFS0lORF9WRVJURVggJiYg Z2VwLT5raW5kICE9IFZFUlRFWF9QQVRURVJOKSB8fAotCQkocGdlZm9ybS0+cGdla2luZCA9PSBQ R0VLSU5EX0VER0UgJiYgIUlTX0VER0VfUEFUVEVSTihnZXAtPmtpbmQpKSkKKwlpZiAoKHBnZWZv cm0tPnBnZWtpbmQgPT0gUEdFS0lORF9WRVJURVggJiYgcGYtPmtpbmQgIT0gVkVSVEVYX1BBVFRF Uk4pIHx8CisJCShwZ2Vmb3JtLT5wZ2VraW5kID09IFBHRUtJTkRfRURHRSAmJiAhSVNfRURHRV9Q QVRURVJOKHBmLT5raW5kKSkpCiAJewogCQlSZWxlYXNlU3lzQ2FjaGUoZWxldHVwKTsKIAkJcmV0 dXJuIE5VTEw7CiAJfQogCi0JZ3BlID0gcGFsbG9jMF9vYmplY3Qoc3RydWN0IGdyYXBoX3BhdGhf ZWxlbWVudCk7Ci0JZ3BlLT5wYXJlbnRfZ2VwID0gZ2VwOwotCWdwZS0+ZWxlbW9pZCA9IGVsZW1v aWQ7Ci0JZ3BlLT5yZWxvaWQgPSBwZ2Vmb3JtLT5wZ2VyZWxpZDsKLQlncGUtPnF1YWxfZXhwcnMg PSBOSUw7CisJcGUgPSBwYWxsb2MwX29iamVjdChzdHJ1Y3QgcGF0aF9lbGVtZW50KTsKKwlwZS0+ cGF0aF9mYWN0b3IgPSBwZjsKKwlwZS0+ZWxlbW9pZCA9IGVsZW1vaWQ7CisJcGUtPnJlbG9pZCA9 IHBnZWZvcm0tPnBnZXJlbGlkOworCXBlLT5xdWFsX2V4cHJzID0gTklMOwogCiAJLyoKIAkgKiBX aGVuIHRoZSBwYXRoIGNvbnRhaW5pbmcgdGhpcyBlbGVtZW50IHdpbGwgYmUgY29udmVydGVkIGlu dG8gYSBxdWVyeQpAQCAtNTUwLDU0ICs2NzksNDAgQEAgY3JlYXRlX2dwZV9mb3JfZWxlbWVudChH cmFwaEVsZW1lbnRQYXR0ZXJuICpnZXAsIE9pZCBlbGVtb2lkLCBpbnQgZWxlbXBvcykKIAkgKiBh cyB0aGUgbnVtYmVyIG9mIHBhdGhzIHRoaXMgZWxlbWVudCBhcHBlYXJzIGluLiBIZW5jZSBzYXZl IHRoZSBhc3N1bWVkCiAJICogcnRpbmRleCBzbyB0aGF0IGl0IGNhbiBiZSB2ZXJpZmllZCBsYXRl ci4KIAkgKi8KLQlncGUtPnJ0aW5kZXggPSBlbGVtcG9zICsgMTsKLQotCWlmIChJU19FREdFX1BB VFRFUk4oZ2VwLT5raW5kKSkKKwlpZiAoSVNfRURHRV9QQVRURVJOKHBmLT5raW5kKSkKIAl7Ci0J CWludAkJCXNyY19ydGluZGV4OwotCQlpbnQJCQlkZXN0X3J0aW5kZXg7CiAJCUxpc3QJICAgKmVk Z2VfcXVhbDsKIAotCQlncGUtPnNyY3ZlcnRleGlkID0gcGdlZm9ybS0+cGdlc3JjdmVydGV4aWQ7 Ci0JCWdwZS0+ZGVzdHZlcnRleGlkID0gcGdlZm9ybS0+cGdlZGVzdHZlcnRleGlkOworCQlwZS0+ c3JjdmVydGV4aWQgPSBwZ2Vmb3JtLT5wZ2VzcmN2ZXJ0ZXhpZDsKKwkJcGUtPmRlc3R2ZXJ0ZXhp ZCA9IHBnZWZvcm0tPnBnZWRlc3R2ZXJ0ZXhpZDsKKwkJQXNzZXJ0KHBmLT5zcmNfcGYgJiYgcGYt PmRlc3RfcGYpOwogCi0JCWlmIChnZXAtPmtpbmQgPT0gRURHRV9QQVRURVJOX1JJR0hUKQotCQl7 Ci0JCQlncGUtPnNyY2VsZW1fcG9zID0gZWxlbXBvcyAtIDE7Ci0JCQlncGUtPmRlc3RlbGVtX3Bv cyA9IGVsZW1wb3MgKyAxOwotCQkJc3JjX3J0aW5kZXggPSBncGUtPnJ0aW5kZXggLSAxOwotCQkJ ZGVzdF9ydGluZGV4ID0gZ3BlLT5ydGluZGV4ICsgMTsKLQkJfQotCQllbHNlIGlmIChnZXAtPmtp bmQgPT0gRURHRV9QQVRURVJOX0xFRlQpCi0JCXsKLQkJCWdwZS0+c3JjZWxlbV9wb3MgPSBlbGVt cG9zICsgMTsKLQkJCWdwZS0+ZGVzdGVsZW1fcG9zID0gZWxlbXBvcyAtIDE7Ci0JCQlzcmNfcnRp bmRleCA9IGdwZS0+cnRpbmRleCArIDE7Ci0JCQlkZXN0X3J0aW5kZXggPSBncGUtPnJ0aW5kZXgg LSAxOwotCQl9Ci0JCWVsc2UKLQkJewotCQkJLyogV2UgZG9uJ3Qgc3VwcG9ydCB1bmRpcmVjdGVk IGVkZ2VzIHlldC4gKi8KLQkJCUFzc2VydChmYWxzZSk7Ci0JCQlncGUtPnNyY2VsZW1fcG9zID0g ZWxlbXBvczsKLQkJCWdwZS0+ZGVzdGVsZW1fcG9zID0gZWxlbXBvczsKLQkJCXNyY19ydGluZGV4 ID0gZ3BlLT5ydGluZGV4OwotCQkJZGVzdF9ydGluZGV4ID0gZ3BlLT5ydGluZGV4OwotCQl9Ci0K LQkJZWRnZV9xdWFsID0gYnVpbGRfZWRnZV92ZXJ0ZXhfbGlua19xdWFscyhlbGV0dXAsIGdwZS0+ cnRpbmRleCwgc3JjX3J0aW5kZXgsCisJCS8qCisJCSAqIFdoZW4gdGhlIHBhdGggY29udGFpbmlu ZyB0aGlzIGVsZW1lbnQgd2lsbCBiZSBjb252ZXJ0ZWQgaW50byBhCisJCSAqIHF1ZXJ5IChnZW5l cmF0ZV9xdWVyeV9mb3JfZ3JhcGhfcGF0aCgpKSB0aGlzIGVsZW1lbnQgd2lsbCBiZQorCQkgKiBj b252ZXJ0ZWQgaW50byBhIFJhbmdlVGJsRW50cnkuIFRoZSBSYW5nZVRibEVudHJ5cyBhcmUgY3Jl YXRlZCBpbgorCQkgKiB0aGUgc2FtZSBvcmRlciBpbiB3aGljaCBlbGVtZW50cyBhcHBlYXIgaW4g dGhlIHBhdGggYW5kIHRodXMgZ2V0CisJCSAqIGNvbnNlY3V0aXZlIFJhbmdlVGFibGUgaW5kZXhl cy4gU28gd2UgY2FuIHNhZmVseSBhc3NpZ24gdGhlCisJCSAqIFJhbmdlVGFibGUgaW5kZXggb2Yg dGhpcyBlbGVtZW50IGJlZm9yZSBjcmVhdGluZyBSYW5nZVRibEVudHJ5IGZvcgorCQkgKiBpdC4g VGhpcyBoZWxwcyBjcmFmdGluZyB0aGUgcXVhbHMgbGlua2luZyBhbiBlZGdlIHRvIHRoZSBhZGph Y2VudAorCQkgKiB2ZXJ0ZXhlcyBvbmx5IG9uY2Ugd2hpbGUgd2UgaGF2ZSBhY2Nlc3MgdG8gdGhl IGNhdGFsb2cgZW50cnkgb2YgdGhlCisJCSAqIGVsZW1lbnQuIE90aGVyd2lzZSwgd2UgbmVlZCB0 byBjcmFmdCB0aGUgcXVhbHMgYXMgbWFueSB0aW1lcyBhcyB0aGUKKwkJICogbnVtYmVyIG9mIHBh dGhzIHRoaXMgZWxlbWVudCBhcHBlYXJzIGluLCBmZXRjaGluZyB0aGUgY2F0YWxvZyBlbnRyeQor CQkgKiBlYWNoIHRpbWUuCisJCSAqLworCQllZGdlX3F1YWwgPSBidWlsZF9lZGdlX3ZlcnRleF9s aW5rX3F1YWxzKGVsZXR1cCwgcGYtPmZhY3RvcnBvcyArIDEsIHBmLT5zcmNfcGYtPmZhY3RvcnBv cyArIDEsCiAJCQkJCQkJCQkJCQkgQW51bV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9wZ2VzcmNrZXks CiAJCQkJCQkJCQkJCQkgQW51bV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9wZ2VzcmNyZWYpOwotCQln cGUtPnF1YWxfZXhwcnMgPSBsaXN0X2NvbmNhdChncGUtPnF1YWxfZXhwcnMsIGVkZ2VfcXVhbCk7 Ci0JCWVkZ2VfcXVhbCA9IGJ1aWxkX2VkZ2VfdmVydGV4X2xpbmtfcXVhbHMoZWxldHVwLCBncGUt PnJ0aW5kZXgsIGRlc3RfcnRpbmRleCwKKwkJcGUtPnF1YWxfZXhwcnMgPSBsaXN0X2NvbmNhdChw ZS0+cXVhbF9leHBycywgZWRnZV9xdWFsKTsKKwkJZWRnZV9xdWFsID0gYnVpbGRfZWRnZV92ZXJ0 ZXhfbGlua19xdWFscyhlbGV0dXAsIHBmLT5mYWN0b3Jwb3MgKyAxLCBwZi0+ZGVzdF9wZi0+ZmFj dG9ycG9zICsgMSwKIAkJCQkJCQkJCQkJCSBBbnVtX3BnX3Byb3BncmFwaF9lbGVtZW50X3BnZWRl c3RrZXksCiAJCQkJCQkJCQkJCQkgQW51bV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9wZ2VkZXN0cmVm KTsKLQkJZ3BlLT5xdWFsX2V4cHJzID0gbGlzdF9jb25jYXQoZ3BlLT5xdWFsX2V4cHJzLCBlZGdl X3F1YWwpOworCQlwZS0+cXVhbF9leHBycyA9IGxpc3RfY29uY2F0KHBlLT5xdWFsX2V4cHJzLCBl ZGdlX3F1YWwpOwogCX0KIAogCVJlbGVhc2VTeXNDYWNoZShlbGV0dXApOwogCi0JcmV0dXJuIGdw ZTsKKwlyZXR1cm4gcGU7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyICoKQEAgLTY2OSwxNSArNzg0 LDEwIEBAIGdldF9sYWJlbHNfZm9yX2V4cHIoT2lkIHByb3BncmFwaGlkLCBOb2RlICpsYWJlbGV4 cHIpCiAJewogCQlCb29sRXhwciAgICpiZSA9IGNhc3ROb2RlKEJvb2xFeHByLCBsYWJlbGV4cHIp OwogCQlMaXN0CSAgICpsYWJlbF9leHBycyA9IGJlLT5hcmdzOwotCQlMaXN0Q2VsbCAgICpsbGM7 CiAKIAkJbGFiZWxfb2lkcyA9IE5JTDsKLQkJZm9yZWFjaChsbGMsIGxhYmVsX2V4cHJzKQotCQl7 Ci0JCQlHcmFwaExhYmVsUmVmICpnbHIgPSBsZmlyc3Rfbm9kZShHcmFwaExhYmVsUmVmLCBsbGMp OwotCisJCWZvcmVhY2hfbm9kZShHcmFwaExhYmVsUmVmLCBnbHIsIGxhYmVsX2V4cHJzKQogCQkJ bGFiZWxfb2lkcyA9IGxhcHBlbmRfb2lkKGxhYmVsX29pZHMsIGdsci0+bGFiZWxpZCk7Ci0JCX0K IAl9CiAJZWxzZQogCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQgbGFiZWwgZXhwcmVzc2lvbiB0 eXBlOiAlZCIsIChpbnQpIG5vZGVUYWcobGFiZWxleHByKSk7CkBAIC02OTgsMjIgKzgwOCwyMSBA QCBnZXRfbGFiZWxzX2Zvcl9leHByKE9pZCBwcm9wZ3JhcGhpZCwgTm9kZSAqbGFiZWxleHByKQog ICogYGVsZW1wb3NgIGlzIHBvc2l0aW9uIG9mIHRoZSBlbGVtZW50IHBhdHRlcm4gaW4gdGhlIHBh dGggcGF0dGVybi4KICAqLwogc3RhdGljIExpc3QgKgotZ2V0X2VsZW1lbnRzX2Zvcl9nZXAoT2lk IHByb3BncmFwaGlkLCBHcmFwaEVsZW1lbnRQYXR0ZXJuICpnZXAsIGludCBlbGVtcG9zKQorZ2V0 X3BhdGhfZWxlbWVudHNfZm9yX3BhdGhfZmFjdG9yKE9pZCBwcm9wZ3JhcGhpZCwgc3RydWN0IHBh dGhfZmFjdG9yICpwZikKIHsKLQlMaXN0CSAgICpsYWJlbF9vaWRzID0gZ2V0X2xhYmVsc19mb3Jf ZXhwcihwcm9wZ3JhcGhpZCwgZ2VwLT5sYWJlbGV4cHIpOworCUxpc3QJICAgKmxhYmVsX29pZHMg PSBnZXRfbGFiZWxzX2Zvcl9leHByKHByb3BncmFwaGlkLCBwZi0+bGFiZWxleHByKTsKIAlMaXN0 CSAgICplbGVtX29pZHNfc2VlbiA9IE5JTDsKLQlMaXN0CSAgICplbGVtX2dwZV9vaWRzID0gTklM OwotCUxpc3QJICAgKmVsZW1fZ3BlcyA9IE5JTDsKLQlMaXN0Q2VsbCAgICpsYzsKKwlMaXN0CSAg ICpwZl9lbGVtX29pZHMgPSBOSUw7CisJTGlzdAkgICAqcGF0aF9lbGVtZW50cyA9IE5JTDsKKwlM aXN0CSAgICp1bnJlc29sdmVkX2xhYmVscyA9IE5JTDsKIAlSZWxhdGlvbglyZWw7CiAJU3lzU2Nh bkRlc2Mgc2NhbjsKIAlTY2FuS2V5RGF0YSBrZXlbMV07CiAJSGVhcFR1cGxlCXR1cDsKIAogCXJl bCA9IHRhYmxlX29wZW4oUHJvcGdyYXBoRWxlbWVudExhYmVsUmVsYXRpb25JZCwgQWNjZXNzU2hh cmVMb2NrKTsKLQlmb3JlYWNoKGxjLCBsYWJlbF9vaWRzKQorCWZvcmVhY2hfb2lkKGxhYmVsb2lk LCBsYWJlbF9vaWRzKQogCXsKLQkJT2lkCQkJbGFiZWxvaWQgPSBsZmlyc3Rfb2lkKGxjKTsKIAkJ Ym9vbAkJZm91bmQgPSBmYWxzZTsKIAogCQlTY2FuS2V5SW5pdCgma2V5WzBdLApAQCAtNzM2LDEy ICs4NDUsMTIgQEAgZ2V0X2VsZW1lbnRzX2Zvcl9nZXAoT2lkIHByb3BncmFwaGlkLCBHcmFwaEVs ZW1lbnRQYXR0ZXJuICpnZXAsIGludCBlbGVtcG9zKQogCQkJCSAqIHRoZSBjdXJyZW50IGxhYmVs IGhhcyBhdCBsZWFzdCBvbmUgZWxlbWVudCwgdGhhdCBzYXRpc2ZpZXMKIAkJCQkgKiB0aGUgZ2l2 ZW4gZWxlbWVudCBwYXR0ZXJuLCBhc3NvY2lhdGVkIHdpdGggaXQuCiAJCQkJICovCi0JCQkJc3Ry dWN0IGdyYXBoX3BhdGhfZWxlbWVudCAqZ3BlID0gY3JlYXRlX2dwZV9mb3JfZWxlbWVudChnZXAs IGVsZW1fb2lkLCBlbGVtcG9zKTsKKwkJCQlzdHJ1Y3QgcGF0aF9lbGVtZW50ICpwZSA9IGNyZWF0 ZV9ncGVfZm9yX2VsZW1lbnQocGYsIGVsZW1fb2lkKTsKIAotCQkJCWlmIChncGUpCisJCQkJaWYg KHBlKQogCQkJCXsKLQkJCQkJZWxlbV9ncGVzID0gbGFwcGVuZChlbGVtX2dwZXMsIGdwZSk7Ci0J CQkJCWVsZW1fZ3BlX29pZHMgPSBsYXBwZW5kX29pZChlbGVtX2dwZV9vaWRzLCBlbGVtX29pZCk7 CisJCQkJCXBhdGhfZWxlbWVudHMgPSBsYXBwZW5kKHBhdGhfZWxlbWVudHMsIHBlKTsKKwkJCQkJ cGZfZWxlbV9vaWRzID0gbGFwcGVuZF9vaWQocGZfZWxlbV9vaWRzLCBlbGVtX29pZCk7CiAJCQkJ CWZvdW5kID0gdHJ1ZTsKIAkJCQl9CiAKQEAgLTc0OSwxMSArODU4LDExIEBAIGdldF9lbGVtZW50 c19mb3JfZ2VwKE9pZCBwcm9wZ3JhcGhpZCwgR3JhcGhFbGVtZW50UGF0dGVybiAqZ2VwLCBpbnQg ZWxlbXBvcykKIAkJCQkgKiBBZGQgdGhlIGdyYXBoIGVsZW1lbnQgdG8gdGhlIGVsZW1lbnRzIGNv bnNpZGVyZWQgc28gZmFyIHRvCiAJCQkJICogYXZvaWQgcHJvY2Vzc2luZyBzYW1lIGVsZW1lbnQg YXNzb2NpYXRlZCB3aXRoIG11bHRpcGxlCiAJCQkJICogbGFiZWxzIG11bHRpcGxlIHRpbWVzLiBB bHNvIGF2b2lkcyBjcmVhdGluZyBkdXBsaWNhdGUKLQkJCQkgKiBHcmFwaFBhdGhFbGVtZW50cy4K KwkJCQkgKiBwYXRoX2VsZW1lbnQgc3RydWN0dXJlcy4KIAkJCQkgKi8KIAkJCQllbGVtX29pZHNf c2VlbiA9IGxhcHBlbmRfb2lkKGVsZW1fb2lkc19zZWVuLCBsYWJlbF9lbGVtLT5wZ2VsZWxpZCk7 CiAJCQl9Ci0JCQllbHNlIGlmIChsaXN0X21lbWJlcl9vaWQoZWxlbV9ncGVfb2lkcywgZWxlbV9v aWQpKQorCQkJZWxzZSBpZiAobGlzdF9tZW1iZXJfb2lkKHBmX2VsZW1fb2lkcywgZWxlbV9vaWQp KQogCQkJewogCQkJCS8qCiAJCQkJICogVGhlIGdyYXBoIGVsZW1lbnQgaXMga25vd24gdG8gcXVh bGlmeSB0aGUgZ2l2ZW4gZWxlbWVudApAQCAtNzc0LDMwICs4ODMsMjcgQEAgZ2V0X2VsZW1lbnRz X2Zvcl9nZXAoT2lkIHByb3BncmFwaGlkLCBHcmFwaEVsZW1lbnRQYXR0ZXJuICpnZXAsIGludCBl bGVtcG9zKQogCQkJICogZXJyb3IgaWYgdGhlIGxhYmVsIHdhcyBleHBsaWNpdGx5IHNwZWNpZmll ZCBpbiB0aGUgZWxlbWVudAogCQkJICogcGF0dGVybi4gT3RoZXJ3aXNlIGp1c3QgUmVtb3ZlIGl0 IGZyb20gdGhlIGxpc3QuCiAJCQkgKi8KLQkJCWlmICghZ2VwLT5sYWJlbGV4cHIpCi0JCQkJZm9y ZWFjaF9kZWxldGVfY3VycmVudChsYWJlbF9vaWRzLCBsYyk7CisJCQlpZiAoIXBmLT5sYWJlbGV4 cHIpCisJCQkJdW5yZXNvbHZlZF9sYWJlbHMgPSBsYXBwZW5kX29pZCh1bnJlc29sdmVkX2xhYmVs cywgbGFiZWxvaWQpOwogCQkJZWxzZQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJyY29k ZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAogCQkJCQkJIGVycm1zZygiY2FuIG5vdCBmaW5k IGxhYmVsIFwiJXNcIiBpbiBwcm9wZXJ0eSBncmFwaCBcIiVzXCIgZm9yIGVsZW1lbnQgdHlwZSBc IiVzXCIiLAogCQkJCQkJCQlnZXRfcHJvcGdyYXBoX2xhYmVsX25hbWUobGFiZWxvaWQpLAogCQkJ CQkJCQlnZXRfcmVsX25hbWUocHJvcGdyYXBoaWQpLAotCQkJCQkJCQlnZXRfZ3JhcGhfZWxlbV9r aW5kX25hbWUoZ2VwLT5raW5kKSkpKTsKKwkJCQkJCQkJZ2V0X2dyYXBoX2VsZW1fa2luZF9uYW1l KHBmLT5raW5kKSkpKTsKIAkJfQogCiAJCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CiAJfQogCXRh YmxlX2Nsb3NlKHJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKIAotCS8qIFVwZGF0ZSB0aGUgZmlsdGVy ZWQgbGFiZWwgbGlzdCBpbiBlYWNoIGdyYXBoX3BhdGhfZWxlbWVudC4gKi8KLQlmb3JlYWNoKGxj LCBlbGVtX2dwZXMpCi0JewotCQlzdHJ1Y3QgZ3JhcGhfcGF0aF9lbGVtZW50ICpncGUgPSBsZmly c3QobGMpOwotCi0JCWdwZS0+bGFiZWxvaWRzID0gbGFiZWxfb2lkczsKLQl9Ci0KLQlyZXR1cm4g ZWxlbV9ncGVzOworCS8qCisJICogUmVtZW1iZXIgdGhlIE9JRHMgb2YgcmVzb2x2ZWQgbGFiZWxz IGZvciB0aGUgZ2l2ZW4gcGF0aCBmYWN0b3IgZm9yCisJICogbGF0ZXIgdXNlIC4KKwkgKi8KKwlw Zi0+bGFiZWxvaWRzID0gbGlzdF9kaWZmZXJlbmNlX29pZChsYWJlbF9vaWRzLCB1bnJlc29sdmVk X2xhYmVscyk7CisJcmV0dXJuIHBhdGhfZWxlbWVudHM7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFy ICoKQEAgLTg0NiwxNSArOTUyLDEzIEBAIHJlcGxhY2VfcHJvcGVydHlfcmVmc19tdXRhdG9yKE5v ZGUgKm5vZGUsIHN0cnVjdCByZXBsYWNlX3Byb3BlcnR5X3JlZnNfY29udGV4dCAqCiAJewogCQlH cmFwaFByb3BlcnR5UmVmICpncHIgPSAoR3JhcGhQcm9wZXJ0eVJlZiAqKSBub2RlOwogCQlOb2Rl CSAgICpuID0gTlVMTDsKLQkJTGlzdENlbGwgICAqbGM7Ci0JCXN0cnVjdCBncmFwaF9wYXRoX2Vs ZW1lbnQgKmZvdW5kX21hcHBpbmcgPSBOVUxMOworCQlzdHJ1Y3QgcGF0aF9lbGVtZW50ICpmb3Vu ZF9tYXBwaW5nID0gTlVMTDsKKwkJc3RydWN0IHBhdGhfZmFjdG9yICptYXBwaW5nX2ZhY3RvciA9 IE5VTEw7CiAJCUxpc3QJICAgKnVucmVsYXRlZF9sYWJlbHMgPSBOSUw7CiAKLQkJZm9yZWFjaChs YywgY29udGV4dC0+bWFwcGluZ3MpCisJCWZvcmVhY2hfcHRyKHN0cnVjdCBwYXRoX2VsZW1lbnQs IG0sIGNvbnRleHQtPm1hcHBpbmdzKQogCQl7Ci0JCQlzdHJ1Y3QgZ3JhcGhfcGF0aF9lbGVtZW50 ICptID0gbGZpcnN0KGxjKTsKLQotCQkJaWYgKG0tPnBhcmVudF9nZXAtPnZhcmlhYmxlICYmIHN0 cmNtcChncHItPmVsdmFybmFtZSwgbS0+cGFyZW50X2dlcC0+dmFyaWFibGUpID09IDApCisJCQlp ZiAobS0+cGF0aF9mYWN0b3ItPnZhcmlhYmxlICYmIHN0cmNtcChncHItPmVsdmFybmFtZSwgbS0+ cGF0aF9mYWN0b3ItPnZhcmlhYmxlKSA9PSAwKQogCQkJewogCQkJCWZvdW5kX21hcHBpbmcgPSBt OwogCQkJCWJyZWFrOwpAQCAtODYzLDEzICs5NjcsMTQgQEAgcmVwbGFjZV9wcm9wZXJ0eV9yZWZz X211dGF0b3IoTm9kZSAqbm9kZSwgc3RydWN0IHJlcGxhY2VfcHJvcGVydHlfcmVmc19jb250ZXh0 ICoKIAkJaWYgKCFmb3VuZF9tYXBwaW5nKQogCQkJZWxvZyhFUlJPUiwgInVuZGVmaW5lZCBlbGVt ZW50IHZhcmlhYmxlIFwiJXNcIiIsIGdwci0+ZWx2YXJuYW1lKTsKIAorCQltYXBwaW5nX2ZhY3Rv ciA9IGZvdW5kX21hcHBpbmctPnBhdGhfZmFjdG9yOworCiAJCS8qCiAJCSAqIEZpbmQgcHJvcGVy dHkgZGVmaW5pdGlvbiBmb3IgZ2l2ZW4gZWxlbWVudCB0aHJvdWdoIGFueSBvZiB0aGUKIAkJICog YXNzb2NpYXRlZCBsYWJlbHMuCiAJCSAqLwotCQlmb3JlYWNoKGxjLCBmb3VuZF9tYXBwaW5nLT5s YWJlbG9pZHMpCisJCWZvcmVhY2hfb2lkKGxhYmVsb2lkLCBtYXBwaW5nX2ZhY3Rvci0+bGFiZWxv aWRzKQogCQl7Ci0JCQlPaWQJCQlsYWJlbG9pZCA9IGxmaXJzdF9vaWQobGMpOwogCQkJT2lkCQkJ ZWxlbV9sYWJlbGlkID0gR2V0U3lzQ2FjaGVPaWQyKFBST1BHUkFQSEVMRU1FTlRMQUJFTEVMRU1F TlRMQUJFTCwKIAkJCQkJCQkJCQkJCQkgICBBbnVtX3BnX3Byb3BncmFwaF9lbGVtZW50X2xhYmVs X29pZCwKIAkJCQkJCQkJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKGZvdW5kX21hcHBpbmctPmVs ZW1vaWQpLApAQCAtODkyLDcgKzk5Nyw3IEBAIHJlcGxhY2VfcHJvcGVydHlfcmVmc19tdXRhdG9y KE5vZGUgKm5vZGUsIHN0cnVjdCByZXBsYWNlX3Byb3BlcnR5X3JlZnNfY29udGV4dCAqCiAKIAkJ CQluID0gc3RyaW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcoU3lzQ2FjaGVHZXRBdHRyTm90 TnVsbChQUk9QR1JBUEhMQUJFTFBST1AsCiAJCQkJCQkJCQkJCQkJCQkJCQkJdHVwLCBBbnVtX3Bn X3Byb3BncmFwaF9sYWJlbF9wcm9wZXJ0eV9wbHBleHByKSkpOwotCQkJCUNoYW5nZVZhck5vZGVz KG4sIDEsIGZvdW5kX21hcHBpbmctPnJ0aW5kZXgsIDApOworCQkJCUNoYW5nZVZhck5vZGVzKG4s IDEsIG1hcHBpbmdfZmFjdG9yLT5mYWN0b3Jwb3MgKyAxLCAwKTsKIAogCQkJCVJlbGVhc2VTeXND YWNoZSh0dXApOwogCQkJfQpAQCAtOTEwLDEyICsxMDE1LDExIEBAIHJlcGxhY2VfcHJvcGVydHlf cmVmc19tdXRhdG9yKE5vZGUgKm5vZGUsIHN0cnVjdCByZXBsYWNlX3Byb3BlcnR5X3JlZnNfY29u dGV4dCAqCiAJCS8qIFNlZSBpZiB3ZSBjYW4gcmVzb2x2ZSB0aGUgcHJvcGVydHkgaW4gc29tZSBv dGhlciB3YXkuICovCiAJCWlmICghbikKIAkJewotCQkJTGlzdENlbGwgICAqbGN1OwogCQkJYm9v bAkJcHJvcF9hc3NvY2lhdGVkID0gZmFsc2U7CiAKLQkJCWZvcmVhY2gobGN1LCB1bnJlbGF0ZWRf bGFiZWxzKQorCQkJZm9yZWFjaF9vaWQobG9pZCwgdW5yZWxhdGVkX2xhYmVscykKIAkJCXsKLQkJ CQlpZiAoaXNfcHJvcGVydHlfYXNzb2NpYXRlZF93aXRoX2xhYmVsKGxmaXJzdF9vaWQobGN1KSwg Z3ByLT5wcm9waWQpKQorCQkJCWlmIChpc19wcm9wZXJ0eV9hc3NvY2lhdGVkX3dpdGhfbGFiZWwo bG9pZCwgZ3ByLT5wcm9waWQpKQogCQkJCXsKIAkJCQkJcHJvcF9hc3NvY2lhdGVkID0gdHJ1ZTsK IAkJCQkJYnJlYWs7CkBAIC05NDEsNyArMTA0NSw3IEBAIHJlcGxhY2VfcHJvcGVydHlfcmVmc19t dXRhdG9yKE5vZGUgKm5vZGUsIHN0cnVjdCByZXBsYWNlX3Byb3BlcnR5X3JlZnNfY29udGV4dCAq CiAJCQkJICogcm93cyB0byB0aGUgR1JBUEhfVEFCTEUuCiAJCQkJICovCiAJCQkJbiA9IGdldF9l bGVtZW50X3Byb3BlcnR5X2V4cHIoZm91bmRfbWFwcGluZy0+ZWxlbW9pZCwgZ3ByLT5wcm9waWQs Ci0JCQkJCQkJCQkJCSAgZm91bmRfbWFwcGluZy0+cnRpbmRleCk7CisJCQkJCQkJCQkJCSAgbWFw cGluZ19mYWN0b3ItPmZhY3RvcnBvcyArIDEpOwogCiAJCQkJaWYgKCFuKQogCQkJCXsKQEAgLTk1 NCw3ICsxMDU4LDcgQEAgcmVwbGFjZV9wcm9wZXJ0eV9yZWZzX211dGF0b3IoTm9kZSAqbm9kZSwg c3RydWN0IHJlcGxhY2VfcHJvcGVydHlfcmVmc19jb250ZXh0ICoKIAogCQlpZiAoIW4pCiAJCQll bG9nKEVSUk9SLCAicHJvcGVydHkgXCIlc1wiIG9mIGVsZW1lbnQgdmFyaWFibGUgXCIlc1wiIG5v dCBmb3VuZCIsCi0JCQkJIGdldF9wcm9wZ3JhcGhfcHJvcGVydHlfbmFtZShncHItPnByb3BpZCks IGZvdW5kX21hcHBpbmctPnBhcmVudF9nZXAtPnZhcmlhYmxlKTsKKwkJCQkgZ2V0X3Byb3BncmFw aF9wcm9wZXJ0eV9uYW1lKGdwci0+cHJvcGlkKSwgbWFwcGluZ19mYWN0b3ItPnZhcmlhYmxlKTsK IAogCQlyZXR1cm4gbjsKIAl9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2dyYXBoX3RhYmxlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3JhcGhfdGFibGUu b3V0CmluZGV4IGRlMGQxNjNlODMuLjg3YWIzZTMxYWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZ3JhcGhfdGFibGUub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvZ3JhcGhfdGFibGUub3V0CkBAIC0zNDksMTQgKzM0OSw2IEBAIHNlbGVjdCBzcmMsIGNv bm4sIGRlc3QsIGxwcm9wMSwgdnByb3AyLCB2cHJvcDEgZnJvbSBncmFwaF90YWJsZSAoZzEgbWF0 Y2ggKGEgaXMKICB2MTEgfCBlMTMyIHwgdjMxICB8IHZsM19wcm9wIHwgICAgICAgIHwgICAyMDEw CiAoNCByb3dzKQogCi0tLSBXSEVSRSBjbGF1c2UgaW4gZ3JhcGggcGF0dGVybgotU0VMRUNUIHNl bGYsIHRocm91Z2ggRlJPTSBHUkFQSF9UQUJMRSAoZzEgTUFUQ0ggKGEpLT4oYiktPihjKSBXSEVS RSBhLnZuYW1lID0gYy52bmFtZSBhbmQgYS52bmFtZSA8PiBiLnZuYW1lIENPTFVNTlMgKGEudm5h bWUgYXMgc2VsZiwgYi52bmFtZSBhcyB0aHJvdWdoKSk7Ci0gc2VsZiB8IHRocm91Z2ggCi0tLS0t LS0rLS0tLS0tLS0tCi0gdjEyICB8IHYyMQotIHYyMSAgfCB2MTIKLSgyIHJvd3MpCi0KIC0tIEVy cm9ycwogLS0gdmwxIGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggcHJvcGVydHkgdnByb3AyCiBzZWxl Y3Qgc3JjLCBzcmNfdnByb3AyLCBjb25uLCBkZXN0IGZyb20gZ3JhcGhfdGFibGUgKGcxIG1hdGNo IChhIGlzIHZsMSktW2IgaXMgZWwxXS0+KGMgaXMgdmwyIHwgdmwzKSBjb2x1bW5zIChhLnZuYW1l IGFzIHNyYywgYS52cHJvcDIgYXMgc3JjX3Zwcm9wMiwgYi5lbmFtZSBhcyBjb25uLCBjLnZuYW1l IGFzIGRlc3QpKTsKQEAgLTQyMCw2ICs0MTIsMTE0IEBAIHNlbGVjdCBzbiwgY24sIGRuIGZyb20g Z3JhcGhfdGFibGUgKGcxIG1hdGNoIChzcmMgOiBsMSktW2Nvbm4gOiBsMV0tPihkZXN0IDogbDEp CiAgdjIyIHwgZTIzMSB8IHYzMgogKDYgcm93cykKIAorLS0gVGVzdHMgZm9yIGN5Y2xpYyBncmFw aCBwYXR0ZXJucworLS0gQWRkIHNvbWUgbW9yZSBjeWNsZXMgaW4gZ3JhcGgKK0NSRUFURSBUQUJM RSBlM18yIChpZF8zIGludCwKKyAgICAgICAgICAgICAgICAgICAgaWRfMl8xIGludCwKKyAgICAg ICAgICAgICAgICAgICAgaWRfMl8yIGludCwKKyAgICAgICAgICAgICAgICAgICAgZW5hbWUgdmFy Y2hhcigxMCksCisgICAgICAgICAgICAgICAgICAgIGVwcm9wMSBpbnQpOworQUxURVIgUFJPUEVS VFkgR1JBUEggZzEgQUREIEVER0UgVEFCTEVTICgKKyAgICBlM18yIEtFWSAoaWRfMywgaWRfMl8x LCBpZF8yXzIpCisgICAgICAgIFNPVVJDRSBLRVkgKGlkXzMpIFJFRkVSRU5DRVMgdjMgKGlkKQor ICAgICAgICBERVNUSU5BVElPTiBLRVkgKGlkXzJfMSwgaWRfMl8yKSBSRUZFUkVOQ0VTIHYyIChp ZDEsIGlkMikKKyAgICAgICAgTEFCRUwgZWwyIFBST1BFUlRJRVMgKGVuYW1lLCBlcHJvcDEgKiAx MCBBUyBscHJvcDIpCisgICAgICAgIExBQkVMIGwxIFBST1BFUlRJRVMgKGVuYW1lIEFTIGVsbmFt ZSkKKyk7CitJTlNFUlQgSU5UTyBlMV8yIFZBTFVFUyAoMywgMTAwMCwgMywgJ2UxMjMnLCAxMDAw Nyk7CitJTlNFUlQgSU5UTyBlMl8xIFZBTFVFUyAoMTAwMCwgMywgMywgJ2UyMTInLCAxMDAwOCk7 CitJTlNFUlQgSU5UTyBlM18yIFZBTFVFUyAoMjAwMiwgMTAwMCwgMiwgJ2UzMjEnLCAxMDAwOSk7 CistLSBjeWNsaWMgcGF0dGVybiB1c2luZyBXSEVSRSBjbGF1c2UgaW4gZ3JhcGggcGF0dGVybiwK K1NFTEVDVCAqIEZST00gR1JBUEhfVEFCTEUgKGcxIE1BVENIIChhKS0+KGIpLT4oYykgV0hFUkUg YS52bmFtZSA9IGMudm5hbWUgQ09MVU1OUyAoYS52bmFtZSBBUyBzZWxmLCBiLnZuYW1lIEFTIHRo cm91Z2gsIGEudnByb3AxIEFTIHNlbGZfcDEsIGIudnByb3AxIEFTIHRocm91Z2hfcDEpKSBPUkRF UiBCWSBzZWxmLCB0aHJvdWdoOworIHNlbGYgfCB0aHJvdWdoIHwgc2VsZl9wMSB8IHRocm91Z2hf cDEgCistLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyB2MTIgIHwgdjIx ICAgICB8ICAgICAgMjAgfCAgICAgICAxMDEwCisgdjEzICB8IHYyMyAgICAgfCAgICAgIDMwIHwg ICAgICAgMTAzMAorIHYyMSAgfCB2MTIgICAgIHwgICAgMTAxMCB8ICAgICAgICAgMjAKKyB2MjIg IHwgdjMyICAgICB8ICAgIDEwMjAgfCAgICAgICAyMDIwCisgdjIzICB8IHYxMyAgICAgfCAgICAx MDMwIHwgICAgICAgICAzMAorIHYzMiAgfCB2MjIgICAgIHwgICAgMjAyMCB8ICAgICAgIDEwMjAK Kyg2IHJvd3MpCisKKy0tIGN5Y2xpYyBwYXR0ZXJuIHVzaW5nIGVsZW1lbnRzIHdpdGggc2FtZSB2 YXJpYWJsZSBuYW1lCitTRUxFQ1QgKiBGUk9NIEdSQVBIX1RBQkxFIChnMSBNQVRDSCAoYSktPihi KS0+KGEpIENPTFVNTlMgKGEudm5hbWUgQVMgc2VsZiwgYi52bmFtZSBBUyB0aHJvdWdoLCBhLnZw cm9wMSBBUyBzZWxmX3AxLCBiLnZwcm9wMSBBUyB0aHJvdWdoX3AxKSkgT1JERVIgQlkgc2VsZiwg dGhyb3VnaDsKKyBzZWxmIHwgdGhyb3VnaCB8IHNlbGZfcDEgfCB0aHJvdWdoX3AxIAorLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgdjEyICB8IHYyMSAgICAgfCAgICAg IDIwIHwgICAgICAgMTAxMAorIHYxMyAgfCB2MjMgICAgIHwgICAgICAzMCB8ICAgICAgIDEwMzAK KyB2MjEgIHwgdjEyICAgICB8ICAgIDEwMTAgfCAgICAgICAgIDIwCisgdjIyICB8IHYzMiAgICAg fCAgICAxMDIwIHwgICAgICAgMjAyMAorIHYyMyAgfCB2MTMgICAgIHwgICAgMTAzMCB8ICAgICAg ICAgMzAKKyB2MzIgIHwgdjIyICAgICB8ICAgIDIwMjAgfCAgICAgICAxMDIwCisoNiByb3dzKQor CistLSBjeWNsaWMgcGF0dGVybiB3aXRoIFdIRVJFIGNsYXVzZQorU0VMRUNUICogRlJPTSBHUkFQ SF9UQUJMRSAoZzEgTUFUQ0ggKGEgd2hlcmUgYS52cHJvcDEgPCAyMDAwKS0+KGIgd2hlcmUgYi52 cHJvcDEgPiAyMCktPihhIHdoZXJlIGEudnByb3AxID4gMjApIENPTFVNTlMgKGEudm5hbWUgQVMg c2VsZiwgYi52bmFtZSBBUyB0aHJvdWdoLCBhLnZwcm9wMSBBUyBzZWxmX3AxLCBiLnZwcm9wMSBB UyB0aHJvdWdoX3AxKSkgT1JERVIgQlkgc2VsZiwgdGhyb3VnaDsKKyBzZWxmIHwgdGhyb3VnaCB8 IHNlbGZfcDEgfCB0aHJvdWdoX3AxIAorLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgdjEzICB8IHYyMyAgICAgfCAgICAgIDMwIHwgICAgICAgMTAzMAorIHYyMiAgfCB2 MzIgICAgIHwgICAgMTAyMCB8ICAgICAgIDIwMjAKKyB2MjMgIHwgdjEzICAgICB8ICAgIDEwMzAg fCAgICAgICAgIDMwCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIEdSQVBIX1RBQkxFIChnMSBN QVRDSCAoYSktPihiIHdoZXJlIGIudnByb3AxID4gMjApLT4oYSB3aGVyZSBhLnZwcm9wMSBiZXR3 ZWVuIDIwIGFuZCAyMDAwKSBDT0xVTU5TIChhLnZuYW1lIEFTIHNlbGYsIGIudm5hbWUgQVMgdGhy b3VnaCwgYS52cHJvcDEgQVMgc2VsZl9wMSwgYi52cHJvcDEgQVMgdGhyb3VnaF9wMSkpIE9SREVS IEJZIHNlbGYsIHRocm91Z2g7Cisgc2VsZiB8IHRocm91Z2ggfCBzZWxmX3AxIHwgdGhyb3VnaF9w MSAKKy0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIHYxMiAgfCB2MjEg ICAgIHwgICAgICAyMCB8ICAgICAgIDEwMTAKKyB2MTMgIHwgdjIzICAgICB8ICAgICAgMzAgfCAg ICAgICAxMDMwCisgdjIyICB8IHYzMiAgICAgfCAgICAxMDIwIHwgICAgICAgMjAyMAorIHYyMyAg fCB2MTMgICAgIHwgICAgMTAzMCB8ICAgICAgICAgMzAKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZS T00gR1JBUEhfVEFCTEUgKGcxIE1BVENIIChhIHdoZXJlIGEudnByb3AxIGJldHdlZW4gMjAgYW5k IDIwMDApLT4oYiB3aGVyZSBiLnZwcm9wMSA+IDIwKS0+KGEgd2hlcmUgYS52cHJvcDEgYmV0d2Vl biAyMCBhbmQgMjAwMCkgQ09MVU1OUyAoYS52bmFtZSBBUyBzZWxmLCBiLnZuYW1lIEFTIHRocm91 Z2gsIGEudnByb3AxIEFTIHNlbGZfcDEsIGIudnByb3AxIEFTIHRocm91Z2hfcDEpKSBPUkRFUiBC WSBzZWxmLCB0aHJvdWdoOworIHNlbGYgfCB0aHJvdWdoIHwgc2VsZl9wMSB8IHRocm91Z2hfcDEg CistLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyB2MTIgIHwgdjIxICAg ICB8ICAgICAgMjAgfCAgICAgICAxMDEwCisgdjEzICB8IHYyMyAgICAgfCAgICAgIDMwIHwgICAg ICAgMTAzMAorIHYyMiAgfCB2MzIgICAgIHwgICAgMTAyMCB8ICAgICAgIDIwMjAKKyB2MjMgIHwg djEzICAgICB8ICAgIDEwMzAgfCAgICAgICAgIDMwCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9N IEdSQVBIX1RBQkxFIChnMSBNQVRDSCAoYSBpcyBsMSktW2EgaXMgbDFdLT4oYiBpcyBsMSkgY29s dW1ucyAoYS5lbmFtZSBBUyBhZW5hbWUsIGIuZW5hbWUgQVMgYmVuYW1lKSkgT1JERVIgQlkgMSwg MjsgLS0gZXJyb3IKK0VSUk9SOiAgZWxlbWVudCBwYXR0ZXJucyB3aXRoIHNhbWUgdmFyaWFibGUg bmFtZSAiYSIgYnV0IGRpZmZlcmVudCBlbGVtZW50IHBhdHRlcm4gdHlwZXMKK1NFTEVDVCAqIEZS T00gR1JBUEhfVEFCTEUgKGcxIE1BVENIIChhIGlzIHZsMSktPihiKS0+KGEgaXMgdmwyKSBXSEVS RSBhLnZuYW1lIDw+IGIudm5hbWUgQ09MVU1OUyAoYS52bmFtZSBBUyBzZWxmLCBiLnZuYW1lIEFT IHRocm91Z2gsIGEudnByb3AxIEFTIHNlbGZfcDEsIGIudnByb3AxIEFTIHRocm91Z2hfcDEpKSBP UkRFUiBCWSBzZWxmLCB0aHJvdWdoOyAgLS0gZXJyb3IKK0VSUk9SOiAgZWxlbWVudCBwYXR0ZXJu cyB3aXRoIHNhbWUgdmFyaWFibGUgbmFtZSAiYSIgYnV0IGRpZmZlcmVudCBsYWJlbCBleHByZXNz aW9ucworU0VMRUNUICogRlJPTSBHUkFQSF9UQUJMRSAoZzEgTUFUQ0ggKGEgaXMgdmwxKS0+KGIp LT4oYSkgQ09MVU1OUyAoYS52bmFtZSBBUyBzZWxmLCBiLnZuYW1lIEFTIHRocm91Z2gsIGEudnBy b3AxIEFTIHNlbGZfcDEsIGIudnByb3AxIEFTIHRocm91Z2hfcDEpKSBPUkRFUiBCWSBzZWxmLCB0 aHJvdWdoOworIHNlbGYgfCB0aHJvdWdoIHwgc2VsZl9wMSB8IHRocm91Z2hfcDEgCistLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyB2MTIgIHwgdjIxICAgICB8ICAgICAg MjAgfCAgICAgICAxMDEwCisgdjEzICB8IHYyMyAgICAgfCAgICAgIDMwIHwgICAgICAgMTAzMAor KDIgcm93cykKKworU0VMRUNUICogRlJPTSBHUkFQSF9UQUJMRSAoZzEgTUFUQ0ggKGEpLT4oYikt PihhIGlzIHZsMSkgQ09MVU1OUyAoYS52bmFtZSBBUyBzZWxmLCBiLnZuYW1lIEFTIHRocm91Z2gs IGEudnByb3AxIEFTIHNlbGZfcDEsIGIudnByb3AxIEFTIHRocm91Z2hfcDEpKSBPUkRFUiBCWSBz ZWxmLCB0aHJvdWdoOworIHNlbGYgfCB0aHJvdWdoIHwgc2VsZl9wMSB8IHRocm91Z2hfcDEgCist LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyB2MTIgIHwgdjIxICAgICB8 ICAgICAgMjAgfCAgICAgICAxMDEwCisgdjEzICB8IHYyMyAgICAgfCAgICAgIDMwIHwgICAgICAg MTAzMAorKDIgcm93cykKKworLS0gYWRkIGFuIGVkZ2Ugd2l0aCBzYW1lIHZlcnRleCBhcyBzb3Vy Y2UgYW5kIGRlc3RpbmF0aW9uIHRvIHRlc3QgbG9vcHMKK0NSRUFURSBUQUJMRSBlM18zIChzcmNf aWQgaW50LAorICAgICAgICAgICAgICAgICAgICBkZXN0X2lkIGludCwKKyAgICAgICAgICAgICAg ICAgICAgZW5hbWUgdmFyY2hhcigxMCksCisgICAgICAgICAgICAgICAgICAgIGVwcm9wMSBpbnQp OworQUxURVIgUFJPUEVSVFkgR1JBUEggZzEgQUREIEVER0UgVEFCTEVTICgKKyAgICBlM18zIEtF WSAoc3JjX2lkLCBkZXN0X2lkKQorICAgICAgICBTT1VSQ0UgS0VZIChzcmNfaWQpIFJFRkVSRU5D RVMgdjMgKGlkKQorICAgICAgICBERVNUSU5BVElPTiBLRVkgKHNyY19pZCkgUkVGRVJFTkNFUyB2 MyAoaWQpCisgICAgICAgIExBQkVMIGVsMiBQUk9QRVJUSUVTIChlbmFtZSwgZXByb3AxICogMTAg QVMgbHByb3AyKQorICAgICAgICBMQUJFTCBsMSBQUk9QRVJUSUVTIChlbmFtZSBBUyBlbG5hbWUp CispOworSU5TRVJUIElOVE8gZTNfMyBWQUxVRVMgKDIwMDMsIDIwMDMsICdlMzMxJywgMTAwMTAp OworLS0gY3ljbGljIHBhdHRlcm4gd2l0aCBlZGdlIHBhdHRlcm5zIHdpdGggc2FtZSB2YXJpYWJs ZSBuYW1lCitTRUxFQ1QgKiBGUk9NIEdSQVBIX1RBQkxFIChnMSBNQVRDSCAoYSktW2JdLT4oYSkt W2JdLT4oYSkgQ09MVU1OUyAoYS52bmFtZSBBUyBzZWxmLCBiLmVuYW1lIEFTIGxvb3BfbmFtZSkp OworIHNlbGYgfCBsb29wX25hbWUgCistLS0tLS0rLS0tLS0tLS0tLS0KKyB2MzMgIHwgZTMzMQor KDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIEdSQVBIX1RBQkxFIChnMSBNQVRDSCAoYSktW2JdLT4o YyktW2JdLT4oZCkgQ09MVU1OUyAoYS52bmFtZSBBUyBhbmFtZSwgYi5lbmFtZSBBUyBibmFtZSwg Yy52bmFtZSBBUyBjbmFtZSwgZC52bmFtZSBBUyBkbmFtZSkpOyAtLWVycm9yCitFUlJPUjogIEFu IGVkZ2UgY2FuIG5vdCBjb25uZWN0IG1vcmUgdGhhbiB0d28gdmVydGV4ZXMgZXZlbiBpbiBhIGN5 Y2xpYyBwYXR0ZXJuLgogLS0gcHJvcGVydHkgZ3JhcGggd2l0aCBzb21lIG9mIHRoZSBlbGVtZW50 cywgbGFiZWxzIGFuZCBwcm9wZXJ0aWVzIHNhbWUgYXMgdGhlCiAtLSBwcmV2aW91cyBvbmUuIFRl c3Qgd2hldGhlciBjb21wb25lbnRzIGZyb20gdGhlIHNwZWNpZmllZCBwcm9wZXJ0eSBncmFwaCBh cmUKIC0tIHVzZWQuCkBAIC00NTEsMTAgKzU1MSwxMSBAQCBzZWxlY3Qgc24sIGNuLCBkbiBmcm9t IGdyYXBoX3RhYmxlIChnMiBtYXRjaCAoc3JjIDogbDEpLVtjb25uIDogbDFdLT4oZGVzdCA6IGwx KQogLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tCiAgZzIudjEyIHwgZzIuZTEyMiB8IGcyLnYy MQogIGcyLnYxMSB8IGcyLmUxMjEgfCBnMi52MjIKKyBnMi52MTMgfCBnMi5lMTIzIHwgZzIudjIz CiAgZzIudjExIHwgZzIuZTEzMSB8IGcyLnYzMwogIGcyLnYxMSB8IGcyLmUxMzIgfCBnMi52MzEK ICBnMi52MjIgfCBnMi5lMjMxIHwgZzIudjMyCi0oNSByb3dzKQorKDYgcm93cykKIAogQ1JFQVRF IFZJRVcgY3VzdG9tZXJzX3VzIEFTIFNFTEVDVCBjdXN0b21lcl9uYW1lIEZST00gR1JBUEhfVEFC TEUgKG15c2hvcCBNQVRDSCAoYyBJUyBjdXN0b21lcnMgV0hFUkUgYy5hZGRyZXNzID0gJ1VTJykt W0lTIGN1c3RvbWVyX29yZGVyc10tPihvIElTIG9yZGVycykgQ09MVU1OUyAoYy5uYW1lIEFTIGN1 c3RvbWVyX25hbWUpKTsKIFNFTEVDVCBwZ19nZXRfdmlld2RlZignY3VzdG9tZXJzX3VzJzo6cmVn Y2xhc3MpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ3JhcGhfdGFibGUuc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ3JhcGhfdGFibGUuc3FsCmluZGV4IDQ4NjU5NGE5OTMu LmYzNDYxNjE2M2EgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dyYXBoX3RhYmxl LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ncmFwaF90YWJsZS5zcWwKQEAgLTI2Miw4 ICsyNjIsNiBAQCBTRUxFQ1QgKiBGUk9NIEdSQVBIX1RBQkxFIChnMSBNQVRDSCAoYSBJUyB2bDEg fCB2bDIpIENPTFVNTlMgKGEudm5hbWUsCiBhLnZwcm9wMSkpOwogLS0gdnByb3AyIGlzIGFzc29j aWF0ZWQgd2l0aCB2bDIgYnV0IG5vdCB2bDMKIHNlbGVjdCBzcmMsIGNvbm4sIGRlc3QsIGxwcm9w MSwgdnByb3AyLCB2cHJvcDEgZnJvbSBncmFwaF90YWJsZSAoZzEgbWF0Y2ggKGEgaXMgdmwxKS1b YiBpcyBlbDFdLT4oYyBpcyB2bDIgfCB2bDMpIGNvbHVtbnMgKGEudm5hbWUgYXMgc3JjLCBiLmVu YW1lIGFzIGNvbm4sIGMudm5hbWUgYXMgZGVzdCwgYy5scHJvcDEsIGMudnByb3AyLCBjLnZwcm9w MSkpOwotLS0gV0hFUkUgY2xhdXNlIGluIGdyYXBoIHBhdHRlcm4KLVNFTEVDVCBzZWxmLCB0aHJv dWdoIEZST00gR1JBUEhfVEFCTEUgKGcxIE1BVENIIChhKS0+KGIpLT4oYykgV0hFUkUgYS52bmFt ZSA9IGMudm5hbWUgYW5kIGEudm5hbWUgPD4gYi52bmFtZSBDT0xVTU5TIChhLnZuYW1lIGFzIHNl bGYsIGIudm5hbWUgYXMgdGhyb3VnaCkpOwogCiAtLSBFcnJvcnMKIC0tIHZsMSBpcyBub3QgYXNz b2NpYXRlZCB3aXRoIHByb3BlcnR5IHZwcm9wMgpAQCAtMjg5LDYgKzI4Nyw1NiBAQCBzZWxlY3Qg dm4gZnJvbSBhbGxfdmVydGljZXMgZXhjZXB0IChzZWxlY3Qgc3ZuIGZyb20gYWxsX2Nvbm5lY3Rl ZF92ZXJ0aWNlcyB1bmlvbgogLS0gcXVlcnkgYWxsIGNvbm5lY3Rpb25zIHVzaW5nIGEgbGFiZWwg c2hhcmVkIGJ5IHZlcnRpY2VzIGFuZCBlZGdlcwogc2VsZWN0IHNuLCBjbiwgZG4gZnJvbSBncmFw aF90YWJsZSAoZzEgbWF0Y2ggKHNyYyA6IGwxKS1bY29ubiA6IGwxXS0+KGRlc3QgOiBsMSkgY29s dW1ucyAoc3JjLmVsbmFtZSBhcyBzbiwgY29ubi5lbG5hbWUgYXMgY24sIGRlc3QuZWxuYW1lIGFz IGRuKSk7CiAKKy0tIFRlc3RzIGZvciBjeWNsaWMgZ3JhcGggcGF0dGVybnMKKy0tIEFkZCBzb21l IG1vcmUgY3ljbGVzIGluIGdyYXBoCitDUkVBVEUgVEFCTEUgZTNfMiAoaWRfMyBpbnQsCisgICAg ICAgICAgICAgICAgICAgIGlkXzJfMSBpbnQsCisgICAgICAgICAgICAgICAgICAgIGlkXzJfMiBp bnQsCisgICAgICAgICAgICAgICAgICAgIGVuYW1lIHZhcmNoYXIoMTApLAorICAgICAgICAgICAg ICAgICAgICBlcHJvcDEgaW50KTsKK0FMVEVSIFBST1BFUlRZIEdSQVBIIGcxIEFERCBFREdFIFRB QkxFUyAoCisgICAgZTNfMiBLRVkgKGlkXzMsIGlkXzJfMSwgaWRfMl8yKQorICAgICAgICBTT1VS Q0UgS0VZIChpZF8zKSBSRUZFUkVOQ0VTIHYzIChpZCkKKyAgICAgICAgREVTVElOQVRJT04gS0VZ IChpZF8yXzEsIGlkXzJfMikgUkVGRVJFTkNFUyB2MiAoaWQxLCBpZDIpCisgICAgICAgIExBQkVM IGVsMiBQUk9QRVJUSUVTIChlbmFtZSwgZXByb3AxICogMTAgQVMgbHByb3AyKQorICAgICAgICBM QUJFTCBsMSBQUk9QRVJUSUVTIChlbmFtZSBBUyBlbG5hbWUpCispOworCitJTlNFUlQgSU5UTyBl MV8yIFZBTFVFUyAoMywgMTAwMCwgMywgJ2UxMjMnLCAxMDAwNyk7CitJTlNFUlQgSU5UTyBlMl8x IFZBTFVFUyAoMTAwMCwgMywgMywgJ2UyMTInLCAxMDAwOCk7CitJTlNFUlQgSU5UTyBlM18yIFZB TFVFUyAoMjAwMiwgMTAwMCwgMiwgJ2UzMjEnLCAxMDAwOSk7CisKKy0tIGN5Y2xpYyBwYXR0ZXJu IHVzaW5nIFdIRVJFIGNsYXVzZSBpbiBncmFwaCBwYXR0ZXJuLAorU0VMRUNUICogRlJPTSBHUkFQ SF9UQUJMRSAoZzEgTUFUQ0ggKGEpLT4oYiktPihjKSBXSEVSRSBhLnZuYW1lID0gYy52bmFtZSBD T0xVTU5TIChhLnZuYW1lIEFTIHNlbGYsIGIudm5hbWUgQVMgdGhyb3VnaCwgYS52cHJvcDEgQVMg c2VsZl9wMSwgYi52cHJvcDEgQVMgdGhyb3VnaF9wMSkpIE9SREVSIEJZIHNlbGYsIHRocm91Z2g7 CistLSBjeWNsaWMgcGF0dGVybiB1c2luZyBlbGVtZW50cyB3aXRoIHNhbWUgdmFyaWFibGUgbmFt ZQorU0VMRUNUICogRlJPTSBHUkFQSF9UQUJMRSAoZzEgTUFUQ0ggKGEpLT4oYiktPihhKSBDT0xV TU5TIChhLnZuYW1lIEFTIHNlbGYsIGIudm5hbWUgQVMgdGhyb3VnaCwgYS52cHJvcDEgQVMgc2Vs Zl9wMSwgYi52cHJvcDEgQVMgdGhyb3VnaF9wMSkpIE9SREVSIEJZIHNlbGYsIHRocm91Z2g7Cist LSBjeWNsaWMgcGF0dGVybiB3aXRoIFdIRVJFIGNsYXVzZQorU0VMRUNUICogRlJPTSBHUkFQSF9U QUJMRSAoZzEgTUFUQ0ggKGEgd2hlcmUgYS52cHJvcDEgPCAyMDAwKS0+KGIgd2hlcmUgYi52cHJv cDEgPiAyMCktPihhIHdoZXJlIGEudnByb3AxID4gMjApIENPTFVNTlMgKGEudm5hbWUgQVMgc2Vs ZiwgYi52bmFtZSBBUyB0aHJvdWdoLCBhLnZwcm9wMSBBUyBzZWxmX3AxLCBiLnZwcm9wMSBBUyB0 aHJvdWdoX3AxKSkgT1JERVIgQlkgc2VsZiwgdGhyb3VnaDsKK1NFTEVDVCAqIEZST00gR1JBUEhf VEFCTEUgKGcxIE1BVENIIChhKS0+KGIgd2hlcmUgYi52cHJvcDEgPiAyMCktPihhIHdoZXJlIGEu dnByb3AxIGJldHdlZW4gMjAgYW5kIDIwMDApIENPTFVNTlMgKGEudm5hbWUgQVMgc2VsZiwgYi52 bmFtZSBBUyB0aHJvdWdoLCBhLnZwcm9wMSBBUyBzZWxmX3AxLCBiLnZwcm9wMSBBUyB0aHJvdWdo X3AxKSkgT1JERVIgQlkgc2VsZiwgdGhyb3VnaDsKK1NFTEVDVCAqIEZST00gR1JBUEhfVEFCTEUg KGcxIE1BVENIIChhIHdoZXJlIGEudnByb3AxIGJldHdlZW4gMjAgYW5kIDIwMDApLT4oYiB3aGVy ZSBiLnZwcm9wMSA+IDIwKS0+KGEgd2hlcmUgYS52cHJvcDEgYmV0d2VlbiAyMCBhbmQgMjAwMCkg Q09MVU1OUyAoYS52bmFtZSBBUyBzZWxmLCBiLnZuYW1lIEFTIHRocm91Z2gsIGEudnByb3AxIEFT IHNlbGZfcDEsIGIudnByb3AxIEFTIHRocm91Z2hfcDEpKSBPUkRFUiBCWSBzZWxmLCB0aHJvdWdo OworU0VMRUNUICogRlJPTSBHUkFQSF9UQUJMRSAoZzEgTUFUQ0ggKGEgaXMgbDEpLVthIGlzIGwx XS0+KGIgaXMgbDEpIGNvbHVtbnMgKGEuZW5hbWUgQVMgYWVuYW1lLCBiLmVuYW1lIEFTIGJlbmFt ZSkpIE9SREVSIEJZIDEsIDI7IC0tIGVycm9yCitTRUxFQ1QgKiBGUk9NIEdSQVBIX1RBQkxFIChn MSBNQVRDSCAoYSBpcyB2bDEpLT4oYiktPihhIGlzIHZsMikgV0hFUkUgYS52bmFtZSA8PiBiLnZu YW1lIENPTFVNTlMgKGEudm5hbWUgQVMgc2VsZiwgYi52bmFtZSBBUyB0aHJvdWdoLCBhLnZwcm9w MSBBUyBzZWxmX3AxLCBiLnZwcm9wMSBBUyB0aHJvdWdoX3AxKSkgT1JERVIgQlkgc2VsZiwgdGhy b3VnaDsgIC0tIGVycm9yCitTRUxFQ1QgKiBGUk9NIEdSQVBIX1RBQkxFIChnMSBNQVRDSCAoYSBp cyB2bDEpLT4oYiktPihhKSBDT0xVTU5TIChhLnZuYW1lIEFTIHNlbGYsIGIudm5hbWUgQVMgdGhy b3VnaCwgYS52cHJvcDEgQVMgc2VsZl9wMSwgYi52cHJvcDEgQVMgdGhyb3VnaF9wMSkpIE9SREVS IEJZIHNlbGYsIHRocm91Z2g7CitTRUxFQ1QgKiBGUk9NIEdSQVBIX1RBQkxFIChnMSBNQVRDSCAo YSktPihiKS0+KGEgaXMgdmwxKSBDT0xVTU5TIChhLnZuYW1lIEFTIHNlbGYsIGIudm5hbWUgQVMg dGhyb3VnaCwgYS52cHJvcDEgQVMgc2VsZl9wMSwgYi52cHJvcDEgQVMgdGhyb3VnaF9wMSkpIE9S REVSIEJZIHNlbGYsIHRocm91Z2g7CisKKy0tIGFkZCBhbiBlZGdlIHdpdGggc2FtZSB2ZXJ0ZXgg YXMgc291cmNlIGFuZCBkZXN0aW5hdGlvbiB0byB0ZXN0IGxvb3BzCitDUkVBVEUgVEFCTEUgZTNf MyAoc3JjX2lkIGludCwKKyAgICAgICAgICAgICAgICAgICAgZGVzdF9pZCBpbnQsCisgICAgICAg ICAgICAgICAgICAgIGVuYW1lIHZhcmNoYXIoMTApLAorICAgICAgICAgICAgICAgICAgICBlcHJv cDEgaW50KTsKK0FMVEVSIFBST1BFUlRZIEdSQVBIIGcxIEFERCBFREdFIFRBQkxFUyAoCisgICAg ZTNfMyBLRVkgKHNyY19pZCwgZGVzdF9pZCkKKyAgICAgICAgU09VUkNFIEtFWSAoc3JjX2lkKSBS RUZFUkVOQ0VTIHYzIChpZCkKKyAgICAgICAgREVTVElOQVRJT04gS0VZIChzcmNfaWQpIFJFRkVS RU5DRVMgdjMgKGlkKQorICAgICAgICBMQUJFTCBlbDIgUFJPUEVSVElFUyAoZW5hbWUsIGVwcm9w MSAqIDEwIEFTIGxwcm9wMikKKyAgICAgICAgTEFCRUwgbDEgUFJPUEVSVElFUyAoZW5hbWUgQVMg ZWxuYW1lKQorKTsKKworSU5TRVJUIElOVE8gZTNfMyBWQUxVRVMgKDIwMDMsIDIwMDMsICdlMzMx JywgMTAwMTApOworLS0gY3ljbGljIHBhdHRlcm4gd2l0aCBlZGdlIHBhdHRlcm5zIHdpdGggc2Ft ZSB2YXJpYWJsZSBuYW1lCitTRUxFQ1QgKiBGUk9NIEdSQVBIX1RBQkxFIChnMSBNQVRDSCAoYSkt W2JdLT4oYSktW2JdLT4oYSkgQ09MVU1OUyAoYS52bmFtZSBBUyBzZWxmLCBiLmVuYW1lIEFTIGxv b3BfbmFtZSkpOworU0VMRUNUICogRlJPTSBHUkFQSF9UQUJMRSAoZzEgTUFUQ0ggKGEpLVtiXS0+ KGMpLVtiXS0+KGQpIENPTFVNTlMgKGEudm5hbWUgQVMgYW5hbWUsIGIuZW5hbWUgQVMgYm5hbWUs IGMudm5hbWUgQVMgY25hbWUsIGQudm5hbWUgQVMgZG5hbWUpKTsgLS1lcnJvcgorCiAtLSBwcm9w ZXJ0eSBncmFwaCB3aXRoIHNvbWUgb2YgdGhlIGVsZW1lbnRzLCBsYWJlbHMgYW5kIHByb3BlcnRp ZXMgc2FtZSBhcyB0aGUKIC0tIHByZXZpb3VzIG9uZS4gVGVzdCB3aGV0aGVyIGNvbXBvbmVudHMg ZnJvbSB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IGdyYXBoIGFyZQogLS0gdXNlZC4KLS0gCjIuMzQu MQoK --000000000000a4f0a30620bbafb2 Content-Type: text/x-patch; charset="US-ASCII"; name="0007-Fixes-following-issues-20240828.patch" Content-Disposition: attachment; filename="0007-Fixes-following-issues-20240828.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m0dpc2v76 RnJvbSBhNzQ2NDFmYmUwNGFlODBmMDllYTQxZTVjNzFlZjljNjNjMWEyODhjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXRAZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogV2VkLCAyMSBBdWcgMjAyNCAxOTo0MTo0OCArMDUzMApTdWJqZWN0 OiBbUEFUQ0ggOC84XSBGaXhlcyBmb2xsb3dpbmcgaXNzdWVzCgoxLiBBIHF1ZXJ5IGNvbnRhaW5p bmcgR1JBUEhfVEFCTEUgcmVmZXJlbmNlIHVzZWQgaW4gYSBVREYgY2F1c2VzIHNlZ21lbnRhdGlv bgpmYXVsdDogRWFybGllciB2ZXJzaW9uIG9mIHBhdGNoZXMgdXNlZCBwX3Bvc3RfY29sdW1ucmVm X2hvb2sgdG8gdHJhbnNmb3JtIGEKcHJvcGVydHkgcmVmZXJlbmNlIGluIGEgR1JBUEhfVEFCTEUg cmVmZXJlbmNlLiBCdXQgcmVsYXRlZCBob29rcyBhbmQgbWVtYmVycyBpbgpQYXJzZVN0YXRlIGFy ZSB1c2VkIGJ5IG90aGVyIG5vbi1jb3JlIG1vZHVsZXMgbGlrZSBwbHBnc3FsLiBJZiBhIHF1ZXJ5 IGluc2lkZSBhCnBscGdzcWwgZnVuY3Rpb24gaGFzIEdSQVBIX1RBQkxFIHJlZmVyZW5jZSBpbiBp dCB0aGUgdXNhZ2Ugb2YgdGhlc2UgaG9va3MKY29uZmxpY3RzLiBTaW5jZSBHUkFQSF9UQUJMRSBp cyBhIGNvcmUgZmVhdHVyZSwgaXQncyBiZXR0ZXIgdG8gaW50cm9kdWNlIGEgbmV3Cm1lbWJlciBQ YXJzZVN0YXRlOjpwX2dyYXBoX3RhYmxlX3BzdGF0ZSwgb2YgdHlwZSBHcmFwaFRhYmxlUGFyc2VT dGF0ZSwgdG8gaG9sZAp0aGUgbmFtZXNwYWNlIGZvciB0aGUgR1JBUEhfVEFCTEUgcmVmZXJlbmNl IGJlaW5nIHRyYW5zZm9ybWVkLiBJdCBpcyBpbmxpbmUKd2l0aCBQYXJzZVN0YXRlOjpwX3BhcmVu dF9jdGUgb3IgUGFyc2VTdGF0ZTo6cF9xdWVyeUVudiB3aGljaCBoYXZlIHNpbWlsYXIKcHVycG9z ZXMuIFdpdGggdGhhdCBjaGFuZ2UgZGVmaW5pdGlvbiBvZiBHcmFwaFRhYmxlUGFyc2VTdGF0ZSBp cyBtb3ZlZCB0bwpwYXJzZW5vZGVzLmggd2hlcmUgQ29tbW9uVGFibGVFeHByIGFuZCBRdWVyeUVu dmlyb25tZW50IGFyZSBhbHNvIGRlZmluZWQuIFRoZQpmdW5jdGlvbiB1c2luZyB0aGUgUGFyc2VT dGF0ZTo6cF9ncmFwaF90YWJsZV9wc3RhdGUgaXMgcmVuYW1lZCB0bwp0cmFuc2Zvcm1HcmFwaFRh YmxlUHJvcGVydHlSZWYoKSB0byBiZSBpbmxpbmUgd2l0aCBuYW1lcyBvZiBvdGhlciBzaW1pbGFy CmZ1bmN0aW9ucy4gVGhpcyBjaGFuZ2UgYWxzbyBhbGxvd3MgR3JhcGhUYWJsZVBhcnNlU3RhdGUg YXJndW1lbnQgdG8gYmUgcmVtb3ZlZApmcm9tIGEgZmV3IGZ1bmN0aW9ucy4KCjIuIEVSUk9SOiAg dW5yZWNvZ25pemVkIGxvY2sgbW9kZTogMCB2aWEgU2NhblF1ZXJ5Rm9yTG9ja3MoKTogQWZ0ZXIg Zml4aW5nIHRoZQpmaXJzdCBidWcsIEkgcmFuIGludG8gYWJvdmUgZXJyb3IuIEFuIFJURV9HUkFQ SF9UQUJMRSBpcyBjb252ZXJ0ZWQgdG8KUlRFX1NVQlFVRVJZIGFmdGVyIHRyYW5zZm9ybWF0aW9u IHdpdGggcmVsaWQgPSBPSUQgb2YgdGhlIHByb3BlcnR5IGdyYXBoIGJlaW5nCnJlZmVyZW5jZWQg aW4gR1JBUEhfVEFCTEUgY2xhdXNlLiBGdW5jdGlvbnMgY2FsbGVkIGZyb20gU2NhblF1ZXJ5Rm9y TG9ja3MoKQp0YWtlIGxvY2tzIHdoZW4gUmFuZ2VUYmxSZWY6OnJlbGlkIGlzIHZhbGlkOyB3aGlj aCBpcyBkZXNpcmFibGUgc2luY2Ugd2Ugd2FudAp0byBsb2NrIHRoZSBwcm9wZXJ0eSBncmFwaCB3 aGlsZSBpdCdzIGJlaW5nIHVzZWQuIFNvIHNldApSYW5nZVRibFJlZjo6cmVsbG9ja21vZGUgdG8g QWNjZXNzU2hhcmVMb2NrLgoKMy4gUHJvaGliaXRzIHN1YnF1ZXJ5IHdpdGhpbiBHUkFQSF9UQUJM RSByZWZlcmVuY2U6IEluIG9yZGVyIHRvIHN1cHBvcnQgaXQgdGhlCmhhc1N1YmxpbmtzIGZsYWcg bmVlZHMgdG8gYmUgdHJhbnNmZXJyZWQgdG8gdGhlIHF1ZXJpZXMgcHJvZHVjZWQgYXMgYSByZXN1 bHQgb2YKcmV3cml0aW5nIGdyYXBoIHRhYmxlIFJURS4gSXQgbmVlZHMgYSBiaXQgb2YgY29kZSBh bmQgc29tZSBub24tdHJpdmlhbCB0ZXN0aW5nLgpTbyBub3QgZG9uZSByaWdodCBub3cuCgo0LiBT dXBwb3J0IGVkZ2UgcGF0dGVybnMgaW4gYW55IGRpcmVjdGlvbjogU3VjaCBlZGdlIHBhdHRlcm5z IHNhdGlzZnkgZWRnZXMgaW4KZWl0aGVyIGRpcmVjdGlvbi4KCkFkZGl0aW9uYWwgY2hhbmdlcwox LiBUZXN0IGZvciBhIGpvaW4gYmV0d2VlbiBHUkFQSF9UQUJMRSBhbmQgYSByZWd1bGFyIHRhYmxl LgoyLiBDaGFuZ2VkIGEgZmV3IGxvb3BzIG92ZXIgbGlzdHMgdG8gdXNlIGZvcmVhY2hfbm9kZSBy ZWR1Y2luZyBhbmQgc2ltcGxpZnlpbmcKY29kZSBhIGJpdC4KMy4gSW1wcm92ZWQgY29tbWVudHMu CgpBdXRob3I6IEFzaHV0b3NoIEJhcGF0ClJlcG9ydGVkIEJ5OiBBamF5IFBhbAotLS0KIHNyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYyAgICAgICAgIHwgIDMwICsrKystCiBzcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAgICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfZ3JhcGh0YWJsZS5jICAgICB8ICA0MyArKystLS0tCiBzcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfcmVsYXRpb24uYyAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9yZXdyaXRl L3Jld3JpdGVHcmFwaFRhYmxlLmMgICB8IDE0OCArKysrKysrKysrKysrLS0tLS0tLS0tCiBzcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICB8ICAgNiArCiBzcmMvaW5jbHVk ZS9wYXJzZXIvcGFyc2VfZ3JhcGh0YWJsZS5oICAgICB8ICAxMSArLQogc3JjL2luY2x1ZGUvcGFy c2VyL3BhcnNlX25vZGUuaCAgICAgICAgICAgfCAgIDUgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ncmFwaF90YWJsZS5vdXQgfCAgODEgKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9ncmFwaF90YWJsZS5zcWwgICAgICB8ICA0NSArKysrKysrCiAxMCBmaWxlcyBjaGFuZ2Vk LCAyNzcgaW5zZXJ0aW9ucygrKSwgOTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Ns YXVzZS5jCmluZGV4IDYzZjVkZDU1NTYuLjkyM2Y4YjNmYmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf Y2xhdXNlLmMKQEAgLTkxNyw2ICs5MTcsNyBAQCB0cmFuc2Zvcm1SYW5nZUdyYXBoVGFibGUoUGFy c2VTdGF0ZSAqcHN0YXRlLCBSYW5nZUdyYXBoVGFibGUgKnJndCkKIAlMaXN0CSAgICpjb2xuYW1l cyA9IE5JTDsKIAlMaXN0Q2VsbCAgICpsYzsKIAlpbnQJCQlyZXNubyA9IDA7CisJYm9vbAkJc2F2 ZWRfaGFzU3VibGlua3M7CiAKIAlyZWwgPSBwYXJzZXJPcGVuVGFibGUocHN0YXRlLCByZ3QtPmdy YXBoX25hbWUsIEFjY2Vzc1NoYXJlTG9jayk7CiAJaWYgKHJlbC0+cmRfcmVsLT5yZWxraW5kICE9 IFJFTEtJTkRfUFJPUEdSQVBIKQpAQCAtOTMwLDEyICs5MzEsMjEgQEAgdHJhbnNmb3JtUmFuZ2VH cmFwaFRhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmFuZ2VHcmFwaFRhYmxlICpyZ3QpCiAKIAln cHN0YXRlLT5ncmFwaGlkID0gZ3JhcGhpZDsKIAotCXBzdGF0ZS0+cF9wb3N0X2NvbHVtbnJlZl9o b29rID0gZ3JhcGhfdGFibGVfcHJvcGVydHlfcmVmZXJlbmNlOwotCXBzdGF0ZS0+cF9yZWZfaG9v a19zdGF0ZSA9IGdwc3RhdGU7CisJLyoKKwkgKiBUaGUgc3ludGF4IGRvZXMgbm90IGFsbG93IG5l c3RlZCBHUkFQSF9UQUJMRSBhbmQgdGhpcyBmdW5jdGlvbgorCSAqIHByb2hpYml0cyBzdWJxdWVy eSB3aXRoaW4gR1JBUEhfVEFCTEUuIFRoZXJlIHNob3VsZCBiZSBvbmx5IG9uZQorCSAqIEdSQVBI X1RBQkxFIGJlaW5nIHRyYW5zZm9ybWVkIGF0IGEgdGltZS4KKwkgKi8KKwlBc3NlcnQoIXBzdGF0 ZS0+cF9ncmFwaF90YWJsZV9wc3RhdGUpOworCXBzdGF0ZS0+cF9ncmFwaF90YWJsZV9wc3RhdGUg PSBncHN0YXRlOworCiAJQXNzZXJ0KCFwc3RhdGUtPnBfbGF0ZXJhbF9hY3RpdmUpOwogCXBzdGF0 ZS0+cF9sYXRlcmFsX2FjdGl2ZSA9IHRydWU7CiAKLQlncCA9IHRyYW5zZm9ybUdyYXBoUGF0dGVy bihwc3RhdGUsIGdwc3RhdGUsIHJndC0+Z3JhcGhfcGF0dGVybik7CisJc2F2ZWRfaGFzU3VibGlu a3MgPSBwc3RhdGUtPnBfaGFzU3ViTGlua3M7CisJcHN0YXRlLT5wX2hhc1N1YkxpbmtzID0gZmFs c2U7CisKKwlncCA9IHRyYW5zZm9ybUdyYXBoUGF0dGVybihwc3RhdGUsIHJndC0+Z3JhcGhfcGF0 dGVybik7CiAKIAlmb3JlYWNoKGxjLCByZ3QtPmNvbHVtbnMpCiAJewpAQCAtOTcwLDEwICs5ODAs MjAgQEAgdHJhbnNmb3JtUmFuZ2VHcmFwaFRhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmFuZ2VH cmFwaFRhYmxlICpyZ3QpCiAKIAl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CiAKLQlwc3RhdGUt PnBfcHJlX2NvbHVtbnJlZl9ob29rID0gTlVMTDsKLQlwc3RhdGUtPnBfcmVmX2hvb2tfc3RhdGUg PSBOVUxMOworCXBzdGF0ZS0+cF9ncmFwaF90YWJsZV9wc3RhdGUgPSBOVUxMOwogCXBzdGF0ZS0+ cF9sYXRlcmFsX2FjdGl2ZSA9IGZhbHNlOwogCisJLyoKKwkgKiBJZiB3ZSBzdXBwb3J0IHN1YnF1 ZXJpZXMgd2l0aGluIEdSQVBIX1RBQkxFLCB0aG9zZSBuZWVkIHRvIGJlCisJICogcHJvcGFnYXRl ZCB0byB0aGUgcXVlcmllcyByZXN1bHRpbmcgZnJvbSByZXdyaXRpbmcgZ3JhcGggdGFibGUgUlRF LiBXZQorCSAqIGRvbid0IGRvIHRoYXQgcmlnaHQgbm93LCBoZW5jZSBwcm9oaWJpdCBpdCBmb3Ig bm93LgorCSAqLworCWlmIChwc3RhdGUtPnBfaGFzU3ViTGlua3MpCisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJt c2coInN1YnF1ZXJpZXMgd2l0aGluIEdSQVBIX1RBQkxFIHJlZmVyZW5jZSBhcmUgbm90IHN1cHBv cnRlZCIpKSk7CisJcHN0YXRlLT5wX2hhc1N1YkxpbmtzID0gc2F2ZWRfaGFzU3VibGlua3M7CisK IAlyZXR1cm4gYWRkUmFuZ2VUYWJsZUVudHJ5Rm9yR3JhcGhUYWJsZShwc3RhdGUsIGdyYXBoaWQs IGNhc3ROb2RlKEdyYXBoUGF0dGVybiwgZ3ApLCBjb2x1bW5zLCBjb2xuYW1lcywgcmd0LT5hbGlh cywgZmFsc2UsIHRydWUpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCAzODIyMmU3 NDVlLi4yYzFlNzQ3NzRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhw ci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTMwLDYgKzMwLDcg QEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29sbGF0ZS5oIgogI2luY2x1ZGUgInBhcnNlci9w YXJzZV9leHByLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2Z1bmMuaCIKKyNpbmNsdWRlICJw YXJzZXIvcGFyc2VfZ3JhcGh0YWJsZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9vcGVyLmgi CiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAicGFyc2VyL3Bh cnNlX3RhcmdldC5oIgpAQCAtODI1LDYgKzgyNiwxMCBAQCB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFy c2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpCiAJCQlicmVhazsKIAl9CiAKKwkvKiBU cnkgaXQgYXMgYSBncmFwaCB0YWJsZSBwcm9wZXJ0eSByZWZlcmVuY2UuICovCisJaWYgKG5vZGUg PT0gTlVMTCkKKwkJbm9kZSA9IHRyYW5zZm9ybUdyYXBoVGFibGVQcm9wZXJ0eVJlZihwc3RhdGUs IGNyZWYpOworCiAJLyoKIAkgKiBOb3cgZ2l2ZSB0aGUgUG9zdFBhcnNlQ29sdW1uUmVmSG9vaywg aWYgYW55LCBhIGNoYW5jZS4gIFdlIHBhc3MgdGhlCiAJICogdHJhbnNsYXRpb24tc28tZmFyIHNv IHRoYXQgaXQgY2FuIHRocm93IGFuIGVycm9yIGlmIGl0IHdpc2hlcyBpbiB0aGUKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ncmFwaHRhYmxlLmMgYi9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfZ3JhcGh0YWJsZS5jCmluZGV4IDFhOTcxNjg3MDIuLmIwODgzMDZiNWIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ncmFwaHRhYmxlLmMKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2dyYXBodGFibGUuYwpAQCAtMzMsMTIgKzMzLDE1IEBACiAK IAogLyoKLSAqIFJlc29sdmUgYSBwcm9wZXJ0eSByZWZlcmVuY2UuCisgKiBUcmFuc2Zvcm0gYSBw cm9wZXJ0eSByZWZlcmVuY2UuCiAgKi8KIE5vZGUgKgotZ3JhcGhfdGFibGVfcHJvcGVydHlfcmVm ZXJlbmNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29sdW1uUmVmICpjcmVmLCBOb2RlICp2YXIpCit0 cmFuc2Zvcm1HcmFwaFRhYmxlUHJvcGVydHlSZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5S ZWYgKmNyZWYpCiB7Ci0JR3JhcGhUYWJsZVBhcnNlU3RhdGUgKmdwc3RhdGUgPSBwc3RhdGUtPnBf cmVmX2hvb2tfc3RhdGU7CisJR3JhcGhUYWJsZVBhcnNlU3RhdGUgKmdwc3RhdGUgPSBwc3RhdGUt PnBfZ3JhcGhfdGFibGVfcHN0YXRlOworCisJaWYgKCFncHN0YXRlKQorCQlyZXR1cm4gTlVMTDsK IAogCWlmIChsaXN0X2xlbmd0aChjcmVmLT5maWVsZHMpID09IDIpCiAJewpAQCAtMTQ0LDggKzE0 NywxMCBAQCB0cmFuc2Zvcm1MYWJlbEV4cHIoR3JhcGhUYWJsZVBhcnNlU3RhdGUgKmdwc3RhdGUs IE5vZGUgKmxhYmVsZXhwcikKICAqIFRyYW5zZm9ybSBhIEdyYXBoRWxlbWVudFBhdHRlcm4uCiAg Ki8KIHN0YXRpYyBOb2RlICoKLXRyYW5zZm9ybUdyYXBoRWxlbWVudFBhdHRlcm4oUGFyc2VTdGF0 ZSAqcHN0YXRlLCBHcmFwaFRhYmxlUGFyc2VTdGF0ZSAqZ3BzdGF0ZSwgR3JhcGhFbGVtZW50UGF0 dGVybiAqZ2VwKQordHJhbnNmb3JtR3JhcGhFbGVtZW50UGF0dGVybihQYXJzZVN0YXRlICpwc3Rh dGUsIEdyYXBoRWxlbWVudFBhdHRlcm4gKmdlcCkKIHsKKwlHcmFwaFRhYmxlUGFyc2VTdGF0ZSAq Z3BzdGF0ZSA9IHBzdGF0ZS0+cF9ncmFwaF90YWJsZV9wc3RhdGU7CisKIAlpZiAoZ2VwLT52YXJp YWJsZSkKIAkJZ3BzdGF0ZS0+dmFyaWFibGVzID0gbGFwcGVuZChncHN0YXRlLT52YXJpYWJsZXMs IG1ha2VTdHJpbmcocHN0cmR1cChnZXAtPnZhcmlhYmxlKSkpOwogCkBAIC0xNjEsMTcgKzE2Niwx MyBAQCB0cmFuc2Zvcm1HcmFwaEVsZW1lbnRQYXR0ZXJuKFBhcnNlU3RhdGUgKnBzdGF0ZSwgR3Jh cGhUYWJsZVBhcnNlU3RhdGUgKmdwc3RhdGUsCiAgKiBUcmFuc2Zvcm0gYSBwYXRoIHRlcm0gKGxp c3Qgb2YgR3JhcGhFbGVtZW50UGF0dGVybidzKS4KICAqLwogc3RhdGljIE5vZGUgKgotdHJhbnNm b3JtUGF0aFRlcm0oUGFyc2VTdGF0ZSAqcHN0YXRlLCBHcmFwaFRhYmxlUGFyc2VTdGF0ZSAqZ3Bz dGF0ZSwgTGlzdCAqcGF0aF90ZXJtKQordHJhbnNmb3JtUGF0aFRlcm0oUGFyc2VTdGF0ZSAqcHN0 YXRlLCBMaXN0ICpwYXRoX3Rlcm0pCiB7CiAJTGlzdAkgICAqcmVzdWx0ID0gTklMOwotCUxpc3RD ZWxsICAgKmxjOwotCi0JZm9yZWFjaChsYywgcGF0aF90ZXJtKQotCXsKLQkJTm9kZQkgICAqbiA9 IHRyYW5zZm9ybUdyYXBoRWxlbWVudFBhdHRlcm4ocHN0YXRlLCBncHN0YXRlLCBsZmlyc3Rfbm9k ZShHcmFwaEVsZW1lbnRQYXR0ZXJuLCBsYykpOwogCi0JCXJlc3VsdCA9IGxhcHBlbmQocmVzdWx0 LCBuKTsKLQl9CisJZm9yZWFjaF9ub2RlKEdyYXBoRWxlbWVudFBhdHRlcm4sIGdlcCwgcGF0aF90 ZXJtKQorCQlyZXN1bHQgPSBsYXBwZW5kKHJlc3VsdCwKKwkJCQkJCSB0cmFuc2Zvcm1HcmFwaEVs ZW1lbnRQYXR0ZXJuKHBzdGF0ZSwgZ2VwKSk7CiAKIAlyZXR1cm4gKE5vZGUgKikgcmVzdWx0Owog fQpAQCAtMTgwLDE3ICsxODEsMTIgQEAgdHJhbnNmb3JtUGF0aFRlcm0oUGFyc2VTdGF0ZSAqcHN0 YXRlLCBHcmFwaFRhYmxlUGFyc2VTdGF0ZSAqZ3BzdGF0ZSwgTGlzdCAqcGF0aF8KICAqIFRyYW5z Zm9ybSBhIHBhdGggcGF0dGVybiBsaXN0IChsaXN0IG9mIHBhdGggdGVybXMpLgogICovCiBzdGF0 aWMgTm9kZSAqCi10cmFuc2Zvcm1QYXRoUGF0dGVybkxpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBH cmFwaFRhYmxlUGFyc2VTdGF0ZSAqZ3BzdGF0ZSwgTGlzdCAqcGF0aF9wYXR0ZXJuKQordHJhbnNm b3JtUGF0aFBhdHRlcm5MaXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqcGF0aF9wYXR0ZXJu KQogewogCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKLQlMaXN0Q2VsbCAgICpsYzsKIAotCWZvcmVh Y2gobGMsIHBhdGhfcGF0dGVybikKLQl7Ci0JCU5vZGUJICAgKm4gPSB0cmFuc2Zvcm1QYXRoVGVy bShwc3RhdGUsIGdwc3RhdGUsIGxmaXJzdChsYykpOwotCi0JCXJlc3VsdCA9IGxhcHBlbmQocmVz dWx0LCBuKTsKLQl9CisJZm9yZWFjaF9ub2RlKExpc3QsIHBhdGhfdGVybSwgcGF0aF9wYXR0ZXJu KQorCQlyZXN1bHQgPSBsYXBwZW5kKHJlc3VsdCwgdHJhbnNmb3JtUGF0aFRlcm0ocHN0YXRlLCBw YXRoX3Rlcm0pKTsKIAogCXJldHVybiAoTm9kZSAqKSByZXN1bHQ7CiB9CkBAIC0xOTksOSArMTk1 LDEyIEBAIHRyYW5zZm9ybVBhdGhQYXR0ZXJuTGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIEdyYXBo VGFibGVQYXJzZVN0YXRlICpncHN0YXRlLCBMaXN0CiAgKiBUcmFuc2Zvcm0gYSBHcmFwaFBhdHRl cm4uCiAgKi8KIE5vZGUgKgotdHJhbnNmb3JtR3JhcGhQYXR0ZXJuKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgR3JhcGhUYWJsZVBhcnNlU3RhdGUgKmdwc3RhdGUsIEdyYXBoUGF0dGVybiAqZ3JhcGhfcGF0 dGVybikKK3RyYW5zZm9ybUdyYXBoUGF0dGVybihQYXJzZVN0YXRlICpwc3RhdGUsIEdyYXBoUGF0 dGVybiAqZ3JhcGhfcGF0dGVybikKIHsKLQlncmFwaF9wYXR0ZXJuLT5wYXRoX3BhdHRlcm5fbGlz dCA9IChMaXN0ICopIHRyYW5zZm9ybVBhdGhQYXR0ZXJuTGlzdChwc3RhdGUsIGdwc3RhdGUsIGdy YXBoX3BhdHRlcm4tPnBhdGhfcGF0dGVybl9saXN0KTsKKwlMaXN0CSAgICpwYXRoX3BhdHRlcm5f bGlzdCA9IGNhc3ROb2RlKExpc3QsCisJCQkJCQkJCQkJCSB0cmFuc2Zvcm1QYXRoUGF0dGVybkxp c3QocHN0YXRlLCBncmFwaF9wYXR0ZXJuLT5wYXRoX3BhdHRlcm5fbGlzdCkpOworCisJZ3JhcGhf cGF0dGVybi0+cGF0aF9wYXR0ZXJuX2xpc3QgPSBwYXRoX3BhdHRlcm5fbGlzdDsKIAlncmFwaF9w YXR0ZXJuLT53aGVyZUNsYXVzZSA9IHRyYW5zZm9ybUV4cHIocHN0YXRlLCBncmFwaF9wYXR0ZXJu LT53aGVyZUNsYXVzZSwgRVhQUl9LSU5EX1dIRVJFKTsKIAlhc3NpZ25fZXhwcl9jb2xsYXRpb25z KHBzdGF0ZSwgZ3JhcGhfcGF0dGVybi0+d2hlcmVDbGF1c2UpOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9yZWxhdGlvbi5jCmluZGV4IDVlYTlmYTk5M2IuLmQyMjJjOTU4YzEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9yZWxhdGlvbi5jCkBAIC0yMTU0LDYgKzIxNTQsNyBAQCBhZGRSYW5nZVRhYmxlRW50 cnlGb3JHcmFwaFRhYmxlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlydGUtPmdyYXBoX3BhdHRlcm4g PSBncmFwaF9wYXR0ZXJuOwogCXJ0ZS0+Z3JhcGhfdGFibGVfY29sdW1ucyA9IGNvbHVtbnM7CiAJ cnRlLT5hbGlhcyA9IGFsaWFzOworCXJ0ZS0+cmVsbG9ja21vZGUgPSBBY2Nlc3NTaGFyZUxvY2s7 CiAKIAllcmVmID0gYWxpYXMgPyBjb3B5T2JqZWN0KGFsaWFzKSA6IG1ha2VBbGlhcyhyZWZuYW1l LCBOSUwpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVHcmFwaFRh YmxlLmMgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVHcmFwaFRhYmxlLmMKaW5kZXggNmUy ZTZlZDM4Yi4uMWVhNWE1Y2FlYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdy aXRlR3JhcGhUYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUdyYXBoVGFi bGUuYwpAQCAtNDEsMTIgKzQxLDExIEBACiAvKgogICogUmVwcmVzZW50cyBvbmUgcGF0aCBmYWN0 b3IgaW4gYSBwYXRoLgogICoKLSAqIE9uZSBwYXRoIGZhY3RvciBjb3JyZXNwb25kcyB0byBvbmUg ZWxlbWVudCBwYXR0ZXJuIGluIGEgc2ltcGxlIHBhdGguCisgKiBJbiBhIG5vbi1jeWNsaWMgcGF0 aCwgb25lIHBhdGggZmFjdG9yIGNvcnJlc3BvbmRzIHRvIG9uZSBlbGVtZW50IHBhdHRlcm4uCiAg KgogICogSW4gYSBjeWNsaWMgcGF0aCwgb25lIHBhdGggZmFjdG9yIG1heSBjb3JyZXNwb25kIHRv IG9uZSBvciBtb3JlIGVsZW1lbnQKLSAqIHBhdHRlcm5zIGFsbCBwb2ludGluZyB0byB0aGUgc2Ft ZSBncmFwaCBlbGVtZW50LiBUaGUgbWVtYmVycyBvZiBzdWNoIGEgcGF0aAotICogZmFjdG9yIGFy ZSBhIGNvbWJpbmF0aW9uIG9mIGNvcnJlc3BvbmRpbmcgc3BlY2lmaWNhdGlvbnMgaW4gdGhlIGVs ZW1lbnQKLSAqIHBhdHRlcm5zLgorICogcGF0dGVybnMgc2hhcmluZyB0aGUgc2FtZSB2YXJpYWJs ZSBuYW1lLCB0aHVzIHBvaW50aW5nIHRvIHRoZSBzYW1lIGdyYXBoCisgKiBlbGVtZW50LgogICov CiBzdHJ1Y3QgcGF0aF9mYWN0b3IKIHsKQEAgLTY2LDE3ICs2NSwyMCBAQCBzdHJ1Y3QgcGF0aF9m YWN0b3IKICAqIFJlcHJlc2VudHMgb25lIHByb3BlcnR5IGdyYXBoIGVsZW1lbnQgKHZlcnRleCBv ciBlZGdlKSBpbiB0aGUgcGF0aC4KICAqCiAgKiBMYWJlbCBleHByZXNzaW9uIGluIGFuIGVsZW1l bnQgcGF0dGVybiByZXNvbHZlcyBpbnRvIGEgc2V0IG9mIGVsZW1lbnRzLiBGb3IKLSAqIGVhY2gg b2YgdGhvc2UgZWxlbWVudHMgd2UgY3JlYXRlIG9uZSBncmFwaF9wYXRoX2VsZW1lbnQgb2JqZWN0 LgorICogZWFjaCBvZiB0aG9zZSBlbGVtZW50cyB3ZSBjcmVhdGUgb25lIHBhdGhfZWxlbWVudCBv YmplY3QuCiAgKi8KIHN0cnVjdCBwYXRoX2VsZW1lbnQKIHsKKwkvKiBQYXRoIGZhY3RvciBmcm9t IHdoaWNoIHRoaXMgZWxlbWVudCBpcyBkZXJpdmVkLiAqLworCXN0cnVjdCBwYXRoX2ZhY3RvciAq cGF0aF9mYWN0b3I7CiAJT2lkCQkJZWxlbW9pZDsKIAlPaWQJCQlyZWxvaWQ7CisJLyogU291cmNl IGFuZCBkZXN0aW5hdGlvbiB2ZXJ0ZXggZWxlbWVudHMgZm9yIGFuIGVkZ2UgZWxlbWVudC4gKi8K IAlPaWQJCQlzcmN2ZXJ0ZXhpZDsKIAlPaWQJCQlkZXN0dmVydGV4aWQ7Ci0JTGlzdAkgICAqcXVh bF9leHByczsKLQkvKiBQYXRoIGZhY3RvciBmcm9tIHdoaWNoIHRoaXMgZWxlbWVudCBpcyBkZXJp dmVkLiAqLwotCXN0cnVjdCBwYXRoX2ZhY3RvciAqcGF0aF9mYWN0b3I7CisJLyogU291cmNlIGFu ZCBkZXN0aW5hdGlvbiBjb25kaXRpb25zIGZvciBhbiBlZGdlIGVsZW1lbnQuICovCisJTGlzdAkg ICAqc3JjX3F1YWxzOworCUxpc3QJICAgKmRlc3RfcXVhbHM7CiB9OwogCiBzdGF0aWMgTm9kZSAq cmVwbGFjZV9wcm9wZXJ0eV9yZWZzKE9pZCBwcm9wZ3JhcGhpZCwgTm9kZSAqbm9kZSwgY29uc3Qg TGlzdCAqbWFwcGluZ3MpOwpAQCAtMTg3LDIzICsxODksMjIgQEAgZ2VuZXJhdGVfcXVlcmllc19m b3JfcGF0aF9wYXR0ZXJuKFJhbmdlVGJsRW50cnkgKnJ0ZSwgTGlzdCAqcGF0aF9wYXR0ZXJuKQog CS8qCiAJICogRm9yIGV2ZXJ5IGVsZW1lbnQgcGF0dGVybiBpbiB0aGUgZ2l2ZW4gcGF0aCBwYXR0 ZXJuIGNvbGxlY3QgYWxsIHRoZQogCSAqIGdyYXBoIGVsZW1lbnRzIHRoYXQgc2F0aXNmeSB0aGUg ZWxlbWVudCBwYXR0ZXJuLgorCSAqCisJICogRWxlbWVudCBwYXR0ZXJucyB3aXRoIHRoZSBzYW1l IG5hbWUgcmVwcmVzZW50IHRoZSBzYW1lIGVsZW1lbnQgYW5kCisJICogaGVuY2Ugc2FtZSBwYXRo IGZhY3Rvci4gVGhleSBkbyBub3QgYWRkIGEgbmV3IGdyYXBoIGVsZW1lbnQgdG8gdGhlCisJICog cXVlcnkgYnV0IGFmZmVjdCB0aGUgbGlua3Mgb2YgYWRqYWNlbnQgZWxlbWVudHMuIE1lcmdlIHN1 Y2ggZWxlbWVudHMKKwkgKiBwYXR0ZXJucyBpbnRvIGEgc2luZ2xlIHBhdGggZmFjdG9yLgogCSAq LwogCWZvcmVhY2hfbm9kZShHcmFwaEVsZW1lbnRQYXR0ZXJuLCBnZXAsIHBhdGhfcGF0dGVybikK IAl7CiAJCXN0cnVjdCBwYXRoX2ZhY3RvciAqcGYgPSBOVUxMOwogCi0JCWlmIChnZXAtPmtpbmQg IT0gVkVSVEVYX1BBVFRFUk4gJiYKLQkJCWdlcC0+a2luZCAhPSBFREdFX1BBVFRFUk5fTEVGVCAm JiBnZXAtPmtpbmQgIT0gRURHRV9QQVRURVJOX1JJR0hUKQotCQkJZWxvZyhFUlJPUiwgInVuc3Vw cG9ydGVkIGVsZW1lbnQgcGF0dGVybiBraW5kOiAlcyIsIGdldF9nZXBfa2luZF9uYW1lKGdlcC0+ a2luZCkpOworCQlpZiAoZ2VwLT5raW5kICE9IFZFUlRFWF9QQVRURVJOICYmICFJU19FREdFX1BB VFRFUk4oZ2VwLT5raW5kKSkKKwkJCWVsb2coRVJST1IsICJ1bnN1cHBvcnRlZCBlbGVtZW50IHBh dHRlcm4ga2luZDogXCIlc1wiIiwgZ2V0X2dlcF9raW5kX25hbWUoZ2VwLT5raW5kKSk7CiAKIAkJ aWYgKGdlcC0+cXVhbnRpZmllcikKIAkJCWVsb2coRVJST1IsICJlbGVtZW50IHBhdHRlcm4gcXVh bnRpZmllciBub3Qgc3VwcG9ydGVkIHlldCIpOwogCi0JCS8qCi0JCSAqIEVsZW1lbnQgcGF0dGVy bnMgd2l0aCB0aGUgc2FtZSBuYW1lIHJlcHJlc2VudCB0aGUgc2FtZSBlbGVtZW50IGFuZAotCQkg KiBoZW5jZSBzYW1lIHBhdGggZmFjdG9yLiBUaGV5IGRvIG5vdCBhZGQgYSBuZXcgZ3JhcGggZWxl bWVudCB0byB0aGUKLQkJICogcXVlcnkgYnV0IGFmZmVjdCB0aGUgbGlua3Mgb2YgYWRqYWNlbnQg ZWxlbWVudHMuCi0JCSAqLwogCQlmb3JlYWNoX3B0cihzdHJ1Y3QgcGF0aF9mYWN0b3IsIG90aGVy LCBwYXRoX2ZhY3RvcnMpCiAJCXsKIAkJCWlmIChnZXAtPnZhcmlhYmxlICYmIG90aGVyLT52YXJp YWJsZSAmJgpAQCAtMjI3LDEyICsyMjgsMTQgQEAgZ2VuZXJhdGVfcXVlcmllc19mb3JfcGF0aF9w YXR0ZXJuKFJhbmdlVGJsRW50cnkgKnJ0ZSwgTGlzdCAqcGF0aF9wYXR0ZXJuKQogCQkJCQlvdGhl ci0+bGFiZWxleHByID0gZ2VwLT5sYWJlbGV4cHI7CiAJCQkJZWxzZSBpZiAoZ2VwLT5sYWJlbGV4 cHIgJiYgIWVxdWFsKG90aGVyLT5sYWJlbGV4cHIsIGdlcC0+bGFiZWxleHByKSkKIAkJCQkJZXJl cG9ydChFUlJPUiwKLQkJCQkJLyogWFhYOiBVc2UgY29ycmVjdCBlcnJvciBjb2RlLiAqLwotCQkJ CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJCQkJCSBl cnJtc2coImVsZW1lbnQgcGF0dGVybnMgd2l0aCBzYW1lIHZhcmlhYmxlIG5hbWUgXCIlc1wiIGJ1 dCBkaWZmZXJlbnQgbGFiZWwgZXhwcmVzc2lvbnMiLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCQkgZXJybXNnKCJlbGVtZW50IHBhdHRlcm5z IHdpdGggc2FtZSB2YXJpYWJsZSBuYW1lIFwiJXNcIiBidXQgZGlmZmVyZW50IGxhYmVsIGV4cHJl c3Npb25zIGFyZSBub3Qgc3VwcG9ydGVkIiwKIAkJCQkJCQkJCWdlcC0+dmFyaWFibGUpKSk7CiAK LQkJCQkvKiBCb3RoIHNldHMgb2YgY29uZGl0aW9ucyBhcHBseSB0byB0aGUgZWxlbWVudCBwYXR0 ZXJuLiAqLworCQkJCS8qCisJCQkJICogQ29uZGl0aW9ucyBmcm9tIGJvdGggZWxlbWVudHMgcGF0 dGVybnMgY29uc3RyYWluIHRoZSBncmFwaAorCQkJCSAqIGVsZW1lbnQuIENvbWJpbmUgYnkgQU5E aW5nIHRoZW0uCisJCQkJICovCiAJCQkJaWYgKCFvdGhlci0+d2hlcmVDbGF1c2UpCiAJCQkJCW90 aGVyLT53aGVyZUNsYXVzZSA9IGdlcC0+d2hlcmVDbGF1c2U7CiAJCQkJZWxzZSBpZiAoZ2VwLT53 aGVyZUNsYXVzZSkKQEAgLTI1OSwxOSArMjYyLDI3IEBAIGdlbmVyYXRlX3F1ZXJpZXNfZm9yX3Bh dGhfcGF0dGVybihSYW5nZVRibEVudHJ5ICpydGUsIExpc3QgKnBhdGhfcGF0dGVybikKIAkJfQog CiAJCS8qCi0JCSAqIFNldHVwIGFkamFjZW50IHBhdGggZmFjdG9ycy4gSWYgbXVsdGlwbGUgZWRn ZSBwYXR0ZXJucyBzaGFyZSB0aGUKLQkJICogc2FtZSB2YXJpYWJsZSBuYW1lLCB0aGV5IGNvbnN0 YWluIHRoZSBhZGphY2VudCB2ZXJ0ZXggcGF0dGVybnMKLQkJICogc2luY2UgYW4gZWRnZSBjYW4g Y29ubmVjdCBvbmx5IG9uZSBwYWlyIG9mIHZlcnRleGVzIGFuZCB0aG9zZQotCQkgKiB2ZXJ0ZXhl cyBhbHNvIG5lZWQgdG8gcmVwZWF0ZWQgYWxvbmcgd2l0aCB0aGUgZWRnZSAoYSB3YWxrKS4gVGhp cwotCQkgKiBtZWFucyB0aGF0IHdlIGhhdmUgdG8gY29hbGVzY2UgdGhlIHZlcnRleCBwYXR0ZXJu cyBhZGphY2VudCB0byBhCi0JCSAqIHJlcGVhdGVkIGVkZ2UgZXZlbiB0aG91Z2ggdGhleSBoYXZl IGRpZmZlcmVudCB2YXJpYWJsZXMuICBFLmcuCi0JCSAqIChhKS1bYl0tPihjKS1bYl08LShkKSBp bXBsaWVzIHRoYXQgKGEpIGFuZCAoZCkgcmVwcmVzZW50IHRoZSBzYW1lCisJCSAqIFNldHVwIGxp bmtzIHRvIHRoZSBwcmV2aW91cyBwYXRoIGZhY3Rvci4gSWYgdGhlIHByZXZpb3VzIHBhdGgKKwkJ ICogZmFjdG9yIGlzIGFuIGVkZ2UsIHRoaXMgcGF0aCBmYWN0b3IgcmVwcmVzZW50cyBhbiBhZGph Y2VudCB2ZXJ0ZXg7CisJCSAqIHNvdXJjZSB2ZXJ0ZXggZm9yIGFuIGVkZ2UgcG9pbnRpbmcgbGVm dCBvciBkZXN0aW5hdGlvbiB2ZXJ0ZXggZm9yCisJCSAqIGFuIGVkZ2UgcG9pbnRpbmcgcmlnaHQu IEVkZ2UgcG9pbnRpbmcgaW4gYW55IGRpcmVjdGlvbiBpcyB0cmVhdGVkCisJCSAqIHNpbWlsYXIg dG8gdGhhdCBwb2ludGluZyBpbiByaWdodCBkaXJlY3Rpb24gaGVyZS4gV2hlbiBjb25zdHJ1Y3Rp bmcKKwkJICogYSBxdWVyeSwgaW4gZ2VuZXJhdGVfcXVlcnlfZm9yX2dyYXBoX3BhdGgoKSB3ZSB3 aWxsIHN3YXAgc291cmNlIGFuZAorCQkgKiBkZXN0aW5hdGlvbiBlbGVtZW50cyBpZiB0aGUgZWRn ZSBlbGVtZW50IHR1cm5zIG91dCB0byBiZSBhbmQgZWRnZQorCQkgKiBwb2ludGluZyBpbiBsZWZ0 IGRpcmVjdGlvbi4KKwkJICoKKwkJICogSWYgbXVsdGlwbGUgZWRnZSBwYXR0ZXJucyBzaGFyZSB0 aGUgc2FtZSB2YXJpYWJsZSBuYW1lLCB0aGV5CisJCSAqIGNvbnN0YWluIHRoZSBhZGphY2VudCB2 ZXJ0ZXggcGF0dGVybnMgc2luY2UgYW4gZWRnZSBjYW4gY29ubmVjdAorCQkgKiBvbmx5IG9uZSBw YWlyIG9mIHZlcnRleGVzLiBUaG9zZSB2ZXJ0ZXggcGF0dGVybnMgYWxzbyBuZWVkIHRvCisJCSAq IHJlcGVhdGVkIGFuZCBtZXJnZWQgYWxvbmcgd2l0aCB0aGUgcmVwZWF0ZWQgZWRnZSAoYSB3YWxr IG9mIGdyYXBoKQorCQkgKiBldmVuIHRob3VnaCB0aGV5IGhhdmUgZGlmZmVyZW50IHZhcmlhYmxl cy4gIEUuZy4KKwkJICogKGEpLVtiXS0+KGMpPC1bYl0tKGQpIGltcGxpZXMgdGhhdCAoYSkgYW5k IChkKSByZXByZXNlbnQgdGhlIHNhbWUKIAkJICogdmVydGV4IGVsZW1lbnQgcGF0dGVybi4gVGhp cyBpcyBzbGlnaGx5IGhhcmRlciB0byBpbXBsZW1lbnQgYW5kCiAJCSAqIHByb2JhYmx5IGxlc3Mg dXNlZnVsLiBIZW5jZSBub3Qgc3VwcG9ydGVkIGZvciBub3cuCiAJCSAqLwogCQlpZiAocHJldl9w ZikKIAkJewotCQkJaWYgKHByZXZfcGYtPmtpbmQgPT0gRURHRV9QQVRURVJOX1JJR0hUKQorCQkJ aWYgKHByZXZfcGYtPmtpbmQgPT0gRURHRV9QQVRURVJOX1JJR0hUIHx8IHByZXZfcGYtPmtpbmQg PT0gRURHRV9QQVRURVJOX0FOWSkKIAkJCXsKIAkJCQlBc3NlcnQoIUlTX0VER0VfUEFUVEVSTihw Zi0+a2luZCkpOwogCQkJCWlmIChwcmV2X3BmLT5kZXN0X3BmICYmIHByZXZfcGYtPmRlc3RfcGYg IT0gcGYpCkBAIC0yODUsMTMgKzI5Niw4IEBAIGdlbmVyYXRlX3F1ZXJpZXNfZm9yX3BhdGhfcGF0 dGVybihSYW5nZVRibEVudHJ5ICpydGUsIExpc3QgKnBhdGhfcGF0dGVybikKIAkJCQkJZWxvZyhF UlJPUiwgIkFuIGVkZ2UgY2FuIG5vdCBjb25uZWN0IG1vcmUgdGhhbiB0d28gdmVydGV4ZXMgZXZl biBpbiBhIGN5Y2xpYyBwYXR0ZXJuLiIpOwogCQkJCXByZXZfcGYtPnNyY19wZiA9IHBmOwogCQkJ fQotCQkJZWxzZSBpZiAocHJldl9wZi0+a2luZCA9PSBFREdFX1BBVFRFUk5fQU5ZKQotCQkJewot CQkJCS8qIFdlIGRvbid0IHN1cHBvcnQgdW5kaXJlY3RlZCBlZGdlcyB5ZXQuICovCi0JCQkJQXNz ZXJ0KGZhbHNlKTsKLQkJCX0KIAotCQkJaWYgKHBmLT5raW5kID09IEVER0VfUEFUVEVSTl9SSUdI VCkKKwkJCWlmIChwZi0+a2luZCA9PSBFREdFX1BBVFRFUk5fUklHSFQgfHwgcGYtPmtpbmQgPT0g RURHRV9QQVRURVJOX0FOWSkKIAkJCXsKIAkJCQlBc3NlcnQoIUlTX0VER0VfUEFUVEVSTihwcmV2 X3BmLT5raW5kKSk7CiAJCQkJaWYgKHBmLT5zcmNfcGYgJiYgcGYtPnNyY19wZiAhPSBwcmV2X3Bm KQpAQCAtMzA1LDExICszMTEsNiBAQCBnZW5lcmF0ZV9xdWVyaWVzX2Zvcl9wYXRoX3BhdHRlcm4o UmFuZ2VUYmxFbnRyeSAqcnRlLCBMaXN0ICpwYXRoX3BhdHRlcm4pCiAJCQkJCWVsb2coRVJST1Is ICJBbiBlZGdlIGNhbiBub3QgY29ubmVjdCBtb3JlIHRoYW4gdHdvIHZlcnRleGVzIGV2ZW4gaW4g YSBjeWNsaWMgcGF0dGVybi4iKTsKIAkJCQlwZi0+ZGVzdF9wZiA9IHByZXZfcGY7CiAJCQl9Ci0J CQllbHNlIGlmIChwZi0+a2luZCA9PSBFREdFX1BBVFRFUk5fQU5ZKQotCQkJewotCQkJCS8qIFdl IGRvbid0IHN1cHBvcnQgdW5kaXJlY3RlZCBlZGdlcyB5ZXQuICovCi0JCQkJQXNzZXJ0KGZhbHNl KTsKLQkJCX0KIAkJfQogCiAJCXByZXZfcGYgPSBwZjsKQEAgLTM4OSwzMSArMzkwLDYyIEBAIGdl bmVyYXRlX3F1ZXJ5X2Zvcl9ncmFwaF9wYXRoKFJhbmdlVGJsRW50cnkgKnJ0ZSwgTGlzdCAqZ3Jh cGhfcGF0aCkKIAkJUmVsYXRpb24JcmVsOwogCQlQYXJzZU5hbWVzcGFjZUl0ZW0gKnBuaTsKIAot CQlBc3NlcnQocGYtPmtpbmQgPT0gVkVSVEVYX1BBVFRFUk4gfHwKLQkJCSAgIHBmLT5raW5kID09 IEVER0VfUEFUVEVSTl9MRUZUIHx8IHBmLT5raW5kID09IEVER0VfUEFUVEVSTl9SSUdIVCk7CisJ CUFzc2VydChwZi0+a2luZCA9PSBWRVJURVhfUEFUVEVSTiB8fCBJU19FREdFX1BBVFRFUk4ocGYt PmtpbmQpKTsKIAotCQlpZiAocGYtPmtpbmQgPT0gRURHRV9QQVRURVJOX0xFRlQgfHwgcGYtPmtp bmQgPT0gRURHRV9QQVRURVJOX1JJR0hUKQorCQkvKiBBZGQgY29uZGl0aW9ucyByZXByZXNlbnRp bmcgZWRnZSBjb25ubmVjdGlvbnMuICovCisJCWlmIChJU19FREdFX1BBVFRFUk4ocGYtPmtpbmQp KQogCQl7CiAJCQlzdHJ1Y3QgcGF0aF9lbGVtZW50ICpzcmNfcGU7Ci0JCQlzdHJ1Y3QgcGF0aF9l bGVtZW50ICpkZXN0X2dlOworCQkJc3RydWN0IHBhdGhfZWxlbWVudCAqZGVzdF9wZTsKKwkJCUxp c3QJICAgKnNyY19xdWFsczsKKwkJCUxpc3QJICAgKmRlc3RfcXVhbHM7CiAKIAkJCUFzc2VydChw Zi0+c3JjX3BmICYmIHBmLT5kZXN0X3BmKTsKIAkJCXNyY19wZSA9IGxpc3RfbnRoKGdyYXBoX3Bh dGgsIHBmLT5zcmNfcGYtPmZhY3RvcnBvcyk7Ci0JCQlkZXN0X2dlID0gbGlzdF9udGgoZ3JhcGhf cGF0aCwgcGYtPmRlc3RfcGYtPmZhY3RvcnBvcyk7CisJCQlkZXN0X3BlID0gbGlzdF9udGgoZ3Jh cGhfcGF0aCwgcGYtPmRlc3RfcGYtPmZhY3RvcnBvcyk7CiAKIAkJCS8qIE1ha2Ugc3VyZSB0aGF0 IHRoZSBsaW5rcyBvZiBhZGphY2VudCB2ZXJ0aWNlcyBhcmUgY29ycmVjdC4gKi8KIAkJCUFzc2Vy dChwZi0+c3JjX3BmID09IHNyY19wZS0+cGF0aF9mYWN0b3IgJiYKLQkJCQkgICBwZi0+ZGVzdF9w ZiA9PSBkZXN0X2dlLT5wYXRoX2ZhY3Rvcik7CisJCQkJICAgcGYtPmRlc3RfcGYgPT0gZGVzdF9w ZS0+cGF0aF9mYWN0b3IpOwogCiAJCQkvKgogCQkJICogSWYgdGhlIGdpdmVuIGVkZ2UgZWxlbWVu dCBkb2VzIG5vdCBjb25uZWN0IHRoZSBhZGphY2VudCB2ZXJ0ZXgKIAkJCSAqIGVsZW1lbnRzIGlu IHRoaXMgcGF0aCwgdGhlIHBhdGggaXMgYnJva2VuLiBBYmFuZG9uIHRoaXMgcGF0aCBhcwogCQkJ ICogaXQgd29uJ3QgcmV0dXJuIGFueSByb3dzLgorCQkJICoKKwkJCSAqIEZvciBhbiBlZGdlIGVs ZW1lbnQgcGF0dGVybiBwb2ludGluZyBpbiBhbnkgZGlyZWN0aW9uLCB0cnkKKwkJCSAqIHN3YXBw aW5nIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHZlcnRleCBlbGVtZW50cy4KIAkJCSAqLwog CQkJaWYgKHNyY19wZS0+ZWxlbW9pZCAhPSBwZS0+c3JjdmVydGV4aWQgfHwKLQkJCQlkZXN0X2dl LT5lbGVtb2lkICE9IHBlLT5kZXN0dmVydGV4aWQpCi0JCQkJcmV0dXJuIE5VTEw7CisJCQkJZGVz dF9wZS0+ZWxlbW9pZCAhPSBwZS0+ZGVzdHZlcnRleGlkKQorCQkJeworCQkJCWlmIChwZi0+a2lu ZCA9PSBFREdFX1BBVFRFUk5fQU5ZICYmCisJCQkJCWRlc3RfcGUtPmVsZW1vaWQgPT0gcGUtPnNy Y3ZlcnRleGlkICYmCisJCQkJCXNyY19wZS0+ZWxlbW9pZCA9PSBwZS0+ZGVzdHZlcnRleGlkKQor CQkJCXsKKwkJCQkJZGVzdF9xdWFscyA9IGNvcHlPYmplY3QocGUtPnNyY19xdWFscyk7CisJCQkJ CXNyY19xdWFscyA9IGNvcHlPYmplY3QocGUtPmRlc3RfcXVhbHMpOworCisJCQkJCS8qIFN3YXAg dGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gdmFybm9zIGluIHRoZSBxdWFscy4gKi8KKwkJCQkJ Q2hhbmdlVmFyTm9kZXMoKE5vZGUgKikgZGVzdF9xdWFscywgcGUtPnBhdGhfZmFjdG9yLT5zcmNf cGYtPmZhY3RvcnBvcyArIDEsCisJCQkJCQkJCSAgIHBlLT5wYXRoX2ZhY3Rvci0+ZGVzdF9wZi0+ ZmFjdG9ycG9zICsgMSwgMCk7CisJCQkJCUNoYW5nZVZhck5vZGVzKChOb2RlICopIHNyY19xdWFs cywgcGUtPnBhdGhfZmFjdG9yLT5kZXN0X3BmLT5mYWN0b3Jwb3MgKyAxLAorCQkJCQkJCQkgICBw ZS0+cGF0aF9mYWN0b3ItPnNyY19wZi0+ZmFjdG9ycG9zICsgMSwgMCk7CisJCQkJfQorCQkJCWVs c2UKKwkJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJc3JjX3F1YWxz ID0gY29weU9iamVjdChwZS0+c3JjX3F1YWxzKTsKKwkJCQlkZXN0X3F1YWxzID0gY29weU9iamVj dChwZS0+ZGVzdF9xdWFscyk7CisJCQl9CisKKwkJCXF1YWxfZXhwcnMgPSBsaXN0X2NvbmNhdChx dWFsX2V4cHJzLCBzcmNfcXVhbHMpOworCQkJcXVhbF9leHBycyA9IGxpc3RfY29uY2F0KHF1YWxf ZXhwcnMsIGRlc3RfcXVhbHMpOwogCQl9CisJCWVsc2UKKwkJCUFzc2VydCghcGUtPnNyY19xdWFs cyAmJiAhcGUtPmRlc3RfcXVhbHMpOwogCiAJCS8qIENyZWF0ZSBSYW5nZVRibEVudHJ5IGZvciB0 aGlzIGVsZW1lbnQgdGFibGUuICovCiAJCXJlbCA9IHRhYmxlX29wZW4ocGUtPnJlbG9pZCwgQWNj ZXNzU2hhcmVMb2NrKTsKQEAgLTQ0Miw3ICs0NzQsNiBAQCBnZW5lcmF0ZV9xdWVyeV9mb3JfZ3Jh cGhfcGF0aChSYW5nZVRibEVudHJ5ICpydGUsIExpc3QgKmdyYXBoX3BhdGgpCiAKIAkJCXF1YWxf ZXhwcnMgPSBsYXBwZW5kKHF1YWxfZXhwcnMsIHRyKTsKIAkJfQotCQlxdWFsX2V4cHJzID0gbGlz dF9jb25jYXQocXVhbF9leHBycywgcGUtPnF1YWxfZXhwcnMpOwogCX0KIAogCWlmIChydGUtPmdy YXBoX3BhdHRlcm4tPndoZXJlQ2xhdXNlKQpAQCAtNDU3LDcgKzQ4OCw3IEBAIGdlbmVyYXRlX3F1 ZXJ5X2Zvcl9ncmFwaF9wYXRoKFJhbmdlVGJsRW50cnkgKnJ0ZSwgTGlzdCAqZ3JhcGhfcGF0aCkK IAlwYXRoX3F1ZXJ5LT5qb2ludHJlZSA9IG1ha2VGcm9tRXhwcihmcm9tbGlzdCwKIAkJCQkJCQkJ CQkoTm9kZSAqKSBtYWtlQm9vbEV4cHIoQU5EX0VYUFIsIHF1YWxfZXhwcnMsIC0xKSk7CiAKLQkv KiBFYWNoIHBhdGggcXVlcnkgcHJvamVjdHMgdGhlIGNvbHVtbnMgc3BlY2lmaWVkIGluIHRoZSBH UkFIX1RBQkxFIGNsYXVzZSAqLworCS8qIEVhY2ggcGF0aCBxdWVyeSBwcm9qZWN0cyB0aGUgQ09M VU1OUyBzcGVjaWZpZWQgaW4gdGhlIEdSQUhfVEFCTEUuICovCiAJcGF0aF9xdWVyeS0+dGFyZ2V0 TGlzdCA9IGNhc3ROb2RlKExpc3QsCiAJCQkJCQkJCQkgIHJlcGxhY2VfcHJvcGVydHlfcmVmcyhy dGUtPnJlbGlkLAogCQkJCQkJCQkJCQkJCQkJKE5vZGUgKikgcnRlLT5ncmFwaF90YWJsZV9jb2x1 bW5zLApAQCAtNjY3LDcgKzY5OCw2IEBAIGNyZWF0ZV9ncGVfZm9yX2VsZW1lbnQoc3RydWN0IHBh dGhfZmFjdG9yICpwZiwgT2lkIGVsZW1vaWQpCiAJcGUtPnBhdGhfZmFjdG9yID0gcGY7CiAJcGUt PmVsZW1vaWQgPSBlbGVtb2lkOwogCXBlLT5yZWxvaWQgPSBwZ2Vmb3JtLT5wZ2VyZWxpZDsKLQlw ZS0+cXVhbF9leHBycyA9IE5JTDsKIAogCS8qCiAJICogV2hlbiB0aGUgcGF0aCBjb250YWluaW5n IHRoaXMgZWxlbWVudCB3aWxsIGJlIGNvbnZlcnRlZCBpbnRvIGEgcXVlcnkKQEAgLTY4MSw4ICs3 MTEsNiBAQCBjcmVhdGVfZ3BlX2Zvcl9lbGVtZW50KHN0cnVjdCBwYXRoX2ZhY3RvciAqcGYsIE9p ZCBlbGVtb2lkKQogCSAqLwogCWlmIChJU19FREdFX1BBVFRFUk4ocGYtPmtpbmQpKQogCXsKLQkJ TGlzdAkgICAqZWRnZV9xdWFsOwotCiAJCXBlLT5zcmN2ZXJ0ZXhpZCA9IHBnZWZvcm0tPnBnZXNy Y3ZlcnRleGlkOwogCQlwZS0+ZGVzdHZlcnRleGlkID0gcGdlZm9ybS0+cGdlZGVzdHZlcnRleGlk OwogCQlBc3NlcnQocGYtPnNyY19wZiAmJiBwZi0+ZGVzdF9wZik7CkBAIC03MDAsMTQgKzcyOCwx MiBAQCBjcmVhdGVfZ3BlX2Zvcl9lbGVtZW50KHN0cnVjdCBwYXRoX2ZhY3RvciAqcGYsIE9pZCBl bGVtb2lkKQogCQkgKiBudW1iZXIgb2YgcGF0aHMgdGhpcyBlbGVtZW50IGFwcGVhcnMgaW4sIGZl dGNoaW5nIHRoZSBjYXRhbG9nIGVudHJ5CiAJCSAqIGVhY2ggdGltZS4KIAkJICovCi0JCWVkZ2Vf cXVhbCA9IGJ1aWxkX2VkZ2VfdmVydGV4X2xpbmtfcXVhbHMoZWxldHVwLCBwZi0+ZmFjdG9ycG9z ICsgMSwgcGYtPnNyY19wZi0+ZmFjdG9ycG9zICsgMSwKLQkJCQkJCQkJCQkJCSBBbnVtX3BnX3By b3BncmFwaF9lbGVtZW50X3BnZXNyY2tleSwKLQkJCQkJCQkJCQkJCSBBbnVtX3BnX3Byb3BncmFw aF9lbGVtZW50X3BnZXNyY3JlZik7Ci0JCXBlLT5xdWFsX2V4cHJzID0gbGlzdF9jb25jYXQocGUt PnF1YWxfZXhwcnMsIGVkZ2VfcXVhbCk7Ci0JCWVkZ2VfcXVhbCA9IGJ1aWxkX2VkZ2VfdmVydGV4 X2xpbmtfcXVhbHMoZWxldHVwLCBwZi0+ZmFjdG9ycG9zICsgMSwgcGYtPmRlc3RfcGYtPmZhY3Rv cnBvcyArIDEsCi0JCQkJCQkJCQkJCQkgQW51bV9wZ19wcm9wZ3JhcGhfZWxlbWVudF9wZ2VkZXN0 a2V5LAotCQkJCQkJCQkJCQkJIEFudW1fcGdfcHJvcGdyYXBoX2VsZW1lbnRfcGdlZGVzdHJlZik7 Ci0JCXBlLT5xdWFsX2V4cHJzID0gbGlzdF9jb25jYXQocGUtPnF1YWxfZXhwcnMsIGVkZ2VfcXVh bCk7CisJCXBlLT5zcmNfcXVhbHMgPSBidWlsZF9lZGdlX3ZlcnRleF9saW5rX3F1YWxzKGVsZXR1 cCwgcGYtPmZhY3RvcnBvcyArIDEsIHBmLT5zcmNfcGYtPmZhY3RvcnBvcyArIDEsCisJCQkJCQkJ CQkJCQkJIEFudW1fcGdfcHJvcGdyYXBoX2VsZW1lbnRfcGdlc3Jja2V5LAorCQkJCQkJCQkJCQkJ CSBBbnVtX3BnX3Byb3BncmFwaF9lbGVtZW50X3BnZXNyY3JlZik7CisJCXBlLT5kZXN0X3F1YWxz ID0gYnVpbGRfZWRnZV92ZXJ0ZXhfbGlua19xdWFscyhlbGV0dXAsIHBmLT5mYWN0b3Jwb3MgKyAx LCBwZi0+ZGVzdF9wZi0+ZmFjdG9ycG9zICsgMSwKKwkJCQkJCQkJCQkJCQkgIEFudW1fcGdfcHJv cGdyYXBoX2VsZW1lbnRfcGdlZGVzdGtleSwKKwkJCQkJCQkJCQkJCQkgIEFudW1fcGdfcHJvcGdy YXBoX2VsZW1lbnRfcGdlZGVzdHJlZik7CiAJfQogCiAJUmVsZWFzZVN5c0NhY2hlKGVsZXR1cCk7 CkBAIC03MjcsNyArNzUzLDcgQEAgZ2V0X2dlcF9raW5kX25hbWUoR3JhcGhFbGVtZW50UGF0dGVy bktpbmQgZ2Vwa2luZCkKIAkJY2FzZSBFREdFX1BBVFRFUk5fUklHSFQ6CiAJCQlyZXR1cm4gImVk Z2UgcG9pbnRpbmcgcmlnaHQiOwogCQljYXNlIEVER0VfUEFUVEVSTl9BTlk6Ci0JCQlyZXR1cm4g InVuZGlyZWN0ZWQgZWRnZSI7CisJCQlyZXR1cm4gImVkZ2UgcG9pbnRpbmcgYW55IGRpcmVjdGlv biI7CiAJCWNhc2UgUEFSRU5fRVhQUjoKIAkJCXJldHVybiAibmVzdGVkIHBhdGggcGF0dGVybiI7 CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGM1OTFiNTY2ZTIuLjNkNWU1YTgyZjAgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTQzNTksNCArNDM1OSwxMCBAQCB0eXBlZGVmIHN0cnVj dCBEcm9wU3Vic2NyaXB0aW9uU3RtdAogCURyb3BCZWhhdmlvciBiZWhhdmlvcjsJCS8qIFJFU1RS SUNUIG9yIENBU0NBREUgYmVoYXZpb3IgKi8KIH0gRHJvcFN1YnNjcmlwdGlvblN0bXQ7CiAKK3R5 cGVkZWYgc3RydWN0IEdyYXBoVGFibGVQYXJzZVN0YXRlCit7CisJT2lkCQkJZ3JhcGhpZDsKKwlM aXN0CSAgICp2YXJpYWJsZXM7Cit9IEdyYXBoVGFibGVQYXJzZVN0YXRlOworCiAjZW5kaWYJCQkJ CQkJLyogUEFSU0VOT0RFU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2VfZ3JhcGh0YWJsZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2dyYXBodGFibGUuaApp bmRleCBhZjBmNTUwY2QyLi40Y2VmZDVhY2Y5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJz ZXIvcGFyc2VfZ3JhcGh0YWJsZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ncmFw aHRhYmxlLmgKQEAgLTE0LDE4ICsxNCwxMSBAQAogI2lmbmRlZiBQQVJTRV9HUkFQSFRBQkxFX0gK ICNkZWZpbmUgUEFSU0VfR1JBUEhUQUJMRV9ICiAKLSNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVz LmgiCiAjaW5jbHVkZSAibm9kZXMvcGdfbGlzdC5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9u b2RlLmgiCiAKLXR5cGVkZWYgc3RydWN0IEdyYXBoVGFibGVQYXJzZVN0YXRlCi17Ci0JT2lkCQkJ Z3JhcGhpZDsKLQlMaXN0CSAgICp2YXJpYWJsZXM7Ci19IEdyYXBoVGFibGVQYXJzZVN0YXRlOwor ZXh0ZXJuIE5vZGUgKnRyYW5zZm9ybUdyYXBoVGFibGVQcm9wZXJ0eVJlZihQYXJzZVN0YXRlICpw c3RhdGUsIENvbHVtblJlZiAqY3JlZik7CiAKLWV4dGVybiBOb2RlICpncmFwaF90YWJsZV9wcm9w ZXJ0eV9yZWZlcmVuY2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYsIE5vZGUg KnZhcik7Ci0KLWV4dGVybiBOb2RlICp0cmFuc2Zvcm1HcmFwaFBhdHRlcm4oUGFyc2VTdGF0ZSAq cHN0YXRlLCBHcmFwaFRhYmxlUGFyc2VTdGF0ZSAqZ3BzdGF0ZSwgR3JhcGhQYXR0ZXJuICpncmFw aF9wYXR0ZXJuKTsKK2V4dGVybiBOb2RlICp0cmFuc2Zvcm1HcmFwaFBhdHRlcm4oUGFyc2VTdGF0 ZSAqcHN0YXRlLCBHcmFwaFBhdHRlcm4gKmdyYXBoX3BhdHRlcm4pOwogCiAjZW5kaWYJCQkJCQkJ LyogUEFSU0VfR1JBUEhUQUJMRV9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIv cGFyc2Vfbm9kZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCAzMjQ2 ZmJlMTU2Li45NDlhYjFhNDk0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf bm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKQEAgLTE3Nyw2ICsx NzcsOSBAQCB0eXBlZGVmIE5vZGUgKigqQ29lcmNlUGFyYW1Ib29rKSAoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBQYXJhbSAqcGFyYW0sCiAgKiBwX3Jlc29sdmVfdW5rbm93bnM6IHJlc29sdmUgdW5rbm93 bi10eXBlIFNFTEVDVCBvdXRwdXQgY29sdW1ucyBhcyB0eXBlIFRFWFQKICAqICh0aGlzIGlzIHRy dWUgYnkgZGVmYXVsdCkuCiAgKgorICogcF9ncmFwaF90YWJsZV9wc3RhdGU6IE5hbWVzcGFjZSBm b3IgdGhlIEdSQVBIX1RBQkxFIHJlZmVyZW5jZSBiZWluZworICogdHJhbnNmb3JtZWQsIGlmIGFu eS4KKyAqCiAgKiBwX2hhc0FnZ3MsIHBfaGFzV2luZG93RnVuY3MsIGV0YzogdHJ1ZSBpZiB3ZSd2 ZSBmb3VuZCBhbnkgb2YgdGhlIGluZGljYXRlZAogICogY29uc3RydWN0cyBpbiB0aGUgcXVlcnku CiAgKgpAQCAtMjE5LDYgKzIyMiw4IEBAIHN0cnVjdCBQYXJzZVN0YXRlCiAJCQkJCQkJCQkgKiB0 eXBlIHRleHQgKi8KIAogCVF1ZXJ5RW52aXJvbm1lbnQgKnBfcXVlcnlFbnY7CS8qIGN1cnIgZW52 LCBpbmNsIHJlZnMgdG8gZW5jbG9zaW5nIGVudiAqLworCUdyYXBoVGFibGVQYXJzZVN0YXRlICpw X2dyYXBoX3RhYmxlX3BzdGF0ZTsgLyogQ3VycmVudCBncmFwaCB0YWJsZQorCQkJCQkJCQkJCQkJ ICogbmFtZXNwYWNlLCBpZiBhbnkgKi8KIAogCS8qIEZsYWdzIHRlbGxpbmcgYWJvdXQgdGhpbmdz IGZvdW5kIGluIHRoZSBxdWVyeTogKi8KIAlib29sCQlwX2hhc0FnZ3M7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dyYXBoX3RhYmxlLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvZ3JhcGhfdGFibGUub3V0CmluZGV4IDg3YWIzZTMxYWYuLjM3OTYyOTdjYjAg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3JhcGhfdGFibGUub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ3JhcGhfdGFibGUub3V0CkBAIC0zNDksNiAr MzQ5LDI1IEBAIHNlbGVjdCBzcmMsIGNvbm4sIGRlc3QsIGxwcm9wMSwgdnByb3AyLCB2cHJvcDEg ZnJvbSBncmFwaF90YWJsZSAoZzEgbWF0Y2ggKGEgaXMKICB2MTEgfCBlMTMyIHwgdjMxICB8IHZs M19wcm9wIHwgICAgICAgIHwgICAyMDEwCiAoNCByb3dzKQogCistLSBlZGdlcyBkaXJlY3RlZCBp biBib3RoIHdheXMgLSB0byBhbmQgZnJvbSB2MgorU0VMRUNUICogRlJPTSBHUkFQSF9UQUJMRSAo ZzEgTUFUQ0ggKHNyYyBJUyB2bDIpLVtjb25uXS0oZGVzdCkgQ09MVU1OUyAoc3JjLnZuYW1lIEFT IHNuYW1lLCBjb25uLmVuYW1lIEFTIGNuYW1lLCBkZXN0LnZuYW1lIEFTIGRuYW1lKSk7Cisgc25h bWUgfCBjbmFtZSB8IGRuYW1lIAorLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0KKyB2MjEgICB8IGUx MjIgIHwgdjEyCisgdjIyICAgfCBlMTIxICB8IHYxMQorIHYyMSAgIHwgZTIxMSAgfCB2MTIKKyB2 MjIgICB8IGUyMzEgIHwgdjMyCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIEdSQVBIX1RBQkxF IChnMSBNQVRDSCAoc3JjIElTIHZsMiktKGRlc3QpIENPTFVNTlMgKHNyYy52bmFtZSBBUyBzbmFt ZSwgZGVzdC52bmFtZSBBUyBkbmFtZSkpOworIHNuYW1lIHwgZG5hbWUgCistLS0tLS0tKy0tLS0t LS0KKyB2MjEgICB8IHYxMgorIHYyMiAgIHwgdjExCisgdjIxICAgfCB2MTIKKyB2MjIgICB8IHYz MgorKDQgcm93cykKKwogLS0gRXJyb3JzCiAtLSB2bDEgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBw cm9wZXJ0eSB2cHJvcDIKIHNlbGVjdCBzcmMsIHNyY192cHJvcDIsIGNvbm4sIGRlc3QgZnJvbSBn cmFwaF90YWJsZSAoZzEgbWF0Y2ggKGEgaXMgdmwxKS1bYiBpcyBlbDFdLT4oYyBpcyB2bDIgfCB2 bDMpIGNvbHVtbnMgKGEudm5hbWUgYXMgc3JjLCBhLnZwcm9wMiBhcyBzcmNfdnByb3AyLCBiLmVu YW1lIGFzIGNvbm4sIGMudm5hbWUgYXMgZGVzdCkpOwpAQCAtNDgzLDcgKzUwMiw3IEBAIFNFTEVD VCAqIEZST00gR1JBUEhfVEFCTEUgKGcxIE1BVENIIChhIHdoZXJlIGEudnByb3AxIGJldHdlZW4g MjAgYW5kIDIwMDApLT4oYiB3CiBTRUxFQ1QgKiBGUk9NIEdSQVBIX1RBQkxFIChnMSBNQVRDSCAo YSBpcyBsMSktW2EgaXMgbDFdLT4oYiBpcyBsMSkgY29sdW1ucyAoYS5lbmFtZSBBUyBhZW5hbWUs IGIuZW5hbWUgQVMgYmVuYW1lKSkgT1JERVIgQlkgMSwgMjsgLS0gZXJyb3IKIEVSUk9SOiAgZWxl bWVudCBwYXR0ZXJucyB3aXRoIHNhbWUgdmFyaWFibGUgbmFtZSAiYSIgYnV0IGRpZmZlcmVudCBl bGVtZW50IHBhdHRlcm4gdHlwZXMKIFNFTEVDVCAqIEZST00gR1JBUEhfVEFCTEUgKGcxIE1BVENI IChhIGlzIHZsMSktPihiKS0+KGEgaXMgdmwyKSBXSEVSRSBhLnZuYW1lIDw+IGIudm5hbWUgQ09M VU1OUyAoYS52bmFtZSBBUyBzZWxmLCBiLnZuYW1lIEFTIHRocm91Z2gsIGEudnByb3AxIEFTIHNl bGZfcDEsIGIudnByb3AxIEFTIHRocm91Z2hfcDEpKSBPUkRFUiBCWSBzZWxmLCB0aHJvdWdoOyAg LS0gZXJyb3IKLUVSUk9SOiAgZWxlbWVudCBwYXR0ZXJucyB3aXRoIHNhbWUgdmFyaWFibGUgbmFt ZSAiYSIgYnV0IGRpZmZlcmVudCBsYWJlbCBleHByZXNzaW9ucworRVJST1I6ICBlbGVtZW50IHBh dHRlcm5zIHdpdGggc2FtZSB2YXJpYWJsZSBuYW1lICJhIiBidXQgZGlmZmVyZW50IGxhYmVsIGV4 cHJlc3Npb25zIGFyZSBub3Qgc3VwcG9ydGVkCiBTRUxFQ1QgKiBGUk9NIEdSQVBIX1RBQkxFIChn MSBNQVRDSCAoYSBpcyB2bDEpLT4oYiktPihhKSBDT0xVTU5TIChhLnZuYW1lIEFTIHNlbGYsIGIu dm5hbWUgQVMgdGhyb3VnaCwgYS52cHJvcDEgQVMgc2VsZl9wMSwgYi52cHJvcDEgQVMgdGhyb3Vn aF9wMSkpIE9SREVSIEJZIHNlbGYsIHRocm91Z2g7CiAgc2VsZiB8IHRocm91Z2ggfCBzZWxmX3Ax IHwgdGhyb3VnaF9wMSAKIC0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQpA QCAtNjA0LDUgKzYyMyw2NSBAQCBTRUxFQ1QgKiBGUk9NIGN1c3RvbWVyc191c19yZWRhY3RlZDsK ICByZWRhY3RlZDEKICgxIHJvdykKIAorLS0gR1JBUEhfVEFCTEUgaW4gVURGcworQ1JFQVRFIEZV TkNUSU9OIG91dF9kZWdyZWUoc25hbWUgdmFyY2hhcikgUkVUVVJOUyB2YXJjaGFyIEFTICQkCitE RUNMQVJFCisgICAgb3V0X2RlZ3JlZSBpbnQ7CitCRUdJTgorICAgIFNFTEVDVCBjb3VudCgqKSBJ TlRPIG91dF9kZWdyZWUKKyAgICAgICAgRlJPTSBHUkFQSF9UQUJMRSAoZzEgTUFUQ0ggKHNyYyBX SEVSRSBzcmMudm5hbWUgPSBzbmFtZSktPigpIENPTFVNTlMgKHNyYy52bmFtZSkpOworICAgIFJF VFVSTiBvdXRfZGVncmVlOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK0NSRUFURSBGVU5D VElPTiBkaXJlY3RfY29ubmVjdGlvbnMoc25hbWUgdmFyY2hhcikKK1JFVFVSTlMgVEFCTEUgKGNu YW1lIHZhcmNoYXIsIGRuYW1lIHZhcmNoYXIpCitBUyAkJAorICAgIFNFTEVDVCBjbmFtZSwgZG5h bWUKKyAgICAgICAgRlJPTSBHUkFQSF9UQUJMRSAoZzEgTUFUQ0ggKHNyYyBXSEVSRSBzcmMudm5h bWUgPSBzbmFtZSktW2Nvbm5dLT4oZHN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD T0xVTU5TIChjb25uLmVuYW1lIEFTIGNuYW1lLCBkc3Qudm5hbWUgQVMgZG5hbWUpKTsKKyQkIExB TkdVQUdFIFNRTDsKK1NFTEVDVCBzbmFtZSwgb3V0X2RlZ3JlZShzbmFtZSkgRlJPTSBHUkFQSF9U QUJMRSAoZzEgTUFUQ0ggKHNyYyBJUyB2bDEpIENPTFVNTlMgKHNyYy52bmFtZSBBUyBzbmFtZSkp OworIHNuYW1lIHwgb3V0X2RlZ3JlZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tCisgdjExICAgfCAz CisgdjEyICAgfCAxCisgdjEzICAgfCAxCisoMyByb3dzKQorCitTRUxFQ1Qgc25hbWUsIGNuYW1l LCBkbmFtZQorICAgIEZST00gR1JBUEhfVEFCTEUgKGcxIE1BVENIIChzcmMgSVMgdmwxKSBDT0xV TU5TIChzcmMudm5hbWUgQVMgc25hbWUpKSwKKyAgICAgICAgIExBVEVSQUwgZGlyZWN0X2Nvbm5l Y3Rpb25zKHNuYW1lKTsKKyBzbmFtZSB8IGNuYW1lIHwgZG5hbWUgCistLS0tLS0tKy0tLS0tLS0r LS0tLS0tLQorIHYxMSAgIHwgZTEyMSAgfCB2MjIKKyB2MTEgICB8IGUxMzEgIHwgdjMzCisgdjEx ICAgfCBlMTMyICB8IHYzMQorIHYxMiAgIHwgZTEyMiAgfCB2MjEKKyB2MTMgICB8IGUxMjMgIHwg djIzCisoNSByb3dzKQorCistLSBHUkFQSF9UQUJMRSBqb2luZWQgdG8gYSByZWd1bGFyIHRhYmxl CitTRUxFQ1QgKgorICAgIEZST00gY3VzdG9tZXJzIGNvLAorICAgICAgICAgR1JBUEhfVEFCTEUg KG15c2hvcDIgTUFUQ0ggKGNnIElTIGN1c3RvbWVycyBXSEVSRSBjZy5hZGRyZXNzID0gY28uYWRk cmVzcyktW0lTIGN1c3RvbWVyX29yZGVyc10tPihvIElTIG9yZGVycykKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIENPTFVNTlMgKGNnLm5hbWVfcmVkYWN0ZWQgQVMgY3VzdG9tZXJfbmFt ZV9yZWRhY3RlZCkpCisgICAgV0hFUkUgY28uY3VzdG9tZXJfaWQgPSAxOworIGN1c3RvbWVyX2lk IHwgICBuYW1lICAgIHwgYWRkcmVzcyB8IGN1c3RvbWVyX25hbWVfcmVkYWN0ZWQgCistLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgMSB8IGN1c3RvbWVyMSB8IFVTICAgICAgfCByZWRhY3RlZDEKKygxIHJvdykKKwor LS0gcXVlcnkgd2l0aGluIGdyYXBoIHRhYmxlCitTRUxFQ1Qgc25hbWUsIGRuYW1lCisgICAgRlJP TSBHUkFQSF9UQUJMRSAoZzEgTUFUQ0ggKHNyYyktPihkZXN0KQorICAgICAgICAgICAgICAgICAg ICAgICAgIFdIRVJFIHNyYy52cHJvcDEgPiAoU0VMRUNUIG1heCh2MS52cHJvcDEpIEZST00gdjEp CisgICAgICAgICAgICAgICAgICAgICAgICAgQ09MVU1OUyhzcmMudm5hbWUgYXMgc25hbWUsIGRl c3Qudm5hbWUgYXMgZG5hbWUpKTsKK0VSUk9SOiAgc3VicXVlcmllcyB3aXRoaW4gR1JBUEhfVEFC TEUgcmVmZXJlbmNlIGFyZSBub3Qgc3VwcG9ydGVkCitTRUxFQ1Qgc25hbWUsIGRuYW1lCisgICAg RlJPTSBHUkFQSF9UQUJMRSAoZzEgTUFUQ0ggKHNyYyktPihkZXN0KQorICAgICAgICAgICAgICAg ICAgICAgICAgIFdIRVJFIG91dF9kZWdyZWUoc3JjLnZuYW1lKSA+IChTRUxFQ1QgbWF4KG91dF9k ZWdyZWUobm5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRlJPTSBHUkFQSF9UQUJMRSAoZzEgTUFUQ0ggKG5vZGUpIENPTFVN TlMgKG5vZGUudm5hbWUgQVMgbm5hbWUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBDT0xV TU5TKHNyYy52bmFtZSBhcyBzbmFtZSwgZGVzdC52bmFtZSBhcyBkbmFtZSkpOworRVJST1I6ICBz dWJxdWVyaWVzIHdpdGhpbiBHUkFQSF9UQUJMRSByZWZlcmVuY2UgYXJlIG5vdCBzdXBwb3J0ZWQK IC0tIGxlYXZlIGZvciBwZ191cGdyYWRlL3BnX2R1bXAgdGVzdHMKIC0tRFJPUCBTQ0hFTUEgZ3Jh cGhfdGFibGVfdGVzdHMgQ0FTQ0FERTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2dyYXBoX3RhYmxlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dyYXBoX3RhYmxlLnNxbApp bmRleCBmMzQ2MTYxNjNhLi45MDViZTlkZjAxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9ncmFwaF90YWJsZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ3JhcGhfdGFi bGUuc3FsCkBAIC0yNjIsNiArMjYyLDkgQEAgU0VMRUNUICogRlJPTSBHUkFQSF9UQUJMRSAoZzEg TUFUQ0ggKGEgSVMgdmwxIHwgdmwyKSBDT0xVTU5TIChhLnZuYW1lLAogYS52cHJvcDEpKTsKIC0t IHZwcm9wMiBpcyBhc3NvY2lhdGVkIHdpdGggdmwyIGJ1dCBub3QgdmwzCiBzZWxlY3Qgc3JjLCBj b25uLCBkZXN0LCBscHJvcDEsIHZwcm9wMiwgdnByb3AxIGZyb20gZ3JhcGhfdGFibGUgKGcxIG1h dGNoIChhIGlzIHZsMSktW2IgaXMgZWwxXS0+KGMgaXMgdmwyIHwgdmwzKSBjb2x1bW5zIChhLnZu YW1lIGFzIHNyYywgYi5lbmFtZSBhcyBjb25uLCBjLnZuYW1lIGFzIGRlc3QsIGMubHByb3AxLCBj LnZwcm9wMiwgYy52cHJvcDEpKTsKKy0tIGVkZ2VzIGRpcmVjdGVkIGluIGJvdGggd2F5cyAtIHRv IGFuZCBmcm9tIHYyCitTRUxFQ1QgKiBGUk9NIEdSQVBIX1RBQkxFIChnMSBNQVRDSCAoc3JjIElT IHZsMiktW2Nvbm5dLShkZXN0KSBDT0xVTU5TIChzcmMudm5hbWUgQVMgc25hbWUsIGNvbm4uZW5h bWUgQVMgY25hbWUsIGRlc3Qudm5hbWUgQVMgZG5hbWUpKTsKK1NFTEVDVCAqIEZST00gR1JBUEhf VEFCTEUgKGcxIE1BVENIIChzcmMgSVMgdmwyKS0oZGVzdCkgQ09MVU1OUyAoc3JjLnZuYW1lIEFT IHNuYW1lLCBkZXN0LnZuYW1lIEFTIGRuYW1lKSk7CiAKIC0tIEVycm9ycwogLS0gdmwxIGlzIG5v dCBhc3NvY2lhdGVkIHdpdGggcHJvcGVydHkgdnByb3AyCkBAIC0zOTQsNSArMzk3LDQ3IEBAIENS RUFURSBWSUVXIGN1c3RvbWVyc191c19yZWRhY3RlZCBBUyBTRUxFQ1QgKiBGUk9NIEdSQVBIX1RB QkxFIChteXNob3AyIE1BVENIIChjCiAKIFNFTEVDVCAqIEZST00gY3VzdG9tZXJzX3VzX3JlZGFj dGVkOwogCistLSBHUkFQSF9UQUJMRSBpbiBVREZzCitDUkVBVEUgRlVOQ1RJT04gb3V0X2RlZ3Jl ZShzbmFtZSB2YXJjaGFyKSBSRVRVUk5TIHZhcmNoYXIgQVMgJCQKK0RFQ0xBUkUKKyAgICBvdXRf ZGVncmVlIGludDsKK0JFR0lOCisgICAgU0VMRUNUIGNvdW50KCopIElOVE8gb3V0X2RlZ3JlZQor ICAgICAgICBGUk9NIEdSQVBIX1RBQkxFIChnMSBNQVRDSCAoc3JjIFdIRVJFIHNyYy52bmFtZSA9 IHNuYW1lKS0+KCkgQ09MVU1OUyAoc3JjLnZuYW1lKSk7CisgICAgUkVUVVJOIG91dF9kZWdyZWU7 CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitDUkVBVEUgRlVOQ1RJT04gZGlyZWN0X2Nv bm5lY3Rpb25zKHNuYW1lIHZhcmNoYXIpCitSRVRVUk5TIFRBQkxFIChjbmFtZSB2YXJjaGFyLCBk bmFtZSB2YXJjaGFyKQorQVMgJCQKKyAgICBTRUxFQ1QgY25hbWUsIGRuYW1lCisgICAgICAgIEZS T00gR1JBUEhfVEFCTEUgKGcxIE1BVENIIChzcmMgV0hFUkUgc3JjLnZuYW1lID0gc25hbWUpLVtj b25uXS0+KGRzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09MVU1OUyAoY29ubi5l bmFtZSBBUyBjbmFtZSwgZHN0LnZuYW1lIEFTIGRuYW1lKSk7CiskJCBMQU5HVUFHRSBTUUw7CisK K1NFTEVDVCBzbmFtZSwgb3V0X2RlZ3JlZShzbmFtZSkgRlJPTSBHUkFQSF9UQUJMRSAoZzEgTUFU Q0ggKHNyYyBJUyB2bDEpIENPTFVNTlMgKHNyYy52bmFtZSBBUyBzbmFtZSkpOworU0VMRUNUIHNu YW1lLCBjbmFtZSwgZG5hbWUKKyAgICBGUk9NIEdSQVBIX1RBQkxFIChnMSBNQVRDSCAoc3JjIElT IHZsMSkgQ09MVU1OUyAoc3JjLnZuYW1lIEFTIHNuYW1lKSksCisgICAgICAgICBMQVRFUkFMIGRp cmVjdF9jb25uZWN0aW9ucyhzbmFtZSk7CisKKy0tIEdSQVBIX1RBQkxFIGpvaW5lZCB0byBhIHJl Z3VsYXIgdGFibGUKK1NFTEVDVCAqCisgICAgRlJPTSBjdXN0b21lcnMgY28sCisgICAgICAgICBH UkFQSF9UQUJMRSAobXlzaG9wMiBNQVRDSCAoY2cgSVMgY3VzdG9tZXJzIFdIRVJFIGNnLmFkZHJl c3MgPSBjby5hZGRyZXNzKS1bSVMgY3VzdG9tZXJfb3JkZXJzXS0+KG8gSVMgb3JkZXJzKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09MVU1OUyAoY2cubmFtZV9yZWRhY3RlZCBBUyBj dXN0b21lcl9uYW1lX3JlZGFjdGVkKSkKKyAgICBXSEVSRSBjby5jdXN0b21lcl9pZCA9IDE7CisK Ky0tIHF1ZXJ5IHdpdGhpbiBncmFwaCB0YWJsZQorU0VMRUNUIHNuYW1lLCBkbmFtZQorICAgIEZS T00gR1JBUEhfVEFCTEUgKGcxIE1BVENIIChzcmMpLT4oZGVzdCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICBXSEVSRSBzcmMudnByb3AxID4gKFNFTEVDVCBtYXgodjEudnByb3AxKSBGUk9NIHYx KQorICAgICAgICAgICAgICAgICAgICAgICAgIENPTFVNTlMoc3JjLnZuYW1lIGFzIHNuYW1lLCBk ZXN0LnZuYW1lIGFzIGRuYW1lKSk7CitTRUxFQ1Qgc25hbWUsIGRuYW1lCisgICAgRlJPTSBHUkFQ SF9UQUJMRSAoZzEgTUFUQ0ggKHNyYyktPihkZXN0KQorICAgICAgICAgICAgICAgICAgICAgICAg IFdIRVJFIG91dF9kZWdyZWUoc3JjLnZuYW1lKSA+IChTRUxFQ1QgbWF4KG91dF9kZWdyZWUobm5h bWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRlJPTSBHUkFQSF9UQUJMRSAoZzEgTUFUQ0ggKG5vZGUpIENPTFVNTlMgKG5vZGUu dm5hbWUgQVMgbm5hbWUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBDT0xVTU5TKHNyYy52 bmFtZSBhcyBzbmFtZSwgZGVzdC52bmFtZSBhcyBkbmFtZSkpOworCiAtLSBsZWF2ZSBmb3IgcGdf dXBncmFkZS9wZ19kdW1wIHRlc3RzCiAtLURST1AgU0NIRU1BIGdyYXBoX3RhYmxlX3Rlc3RzIENB U0NBREU7Ci0tIAoyLjM0LjEKCg== --000000000000a4f0a30620bbafb2--