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 1te82a-00C3gJ-Cj for pgsql-hackers@arkaria.postgresql.org; Sat, 01 Feb 2025 07:35:45 +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 1te82W-004OIS-MR for pgsql-hackers@arkaria.postgresql.org; Sat, 01 Feb 2025 07:35:40 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1te82V-004OIJ-QK for pgsql-hackers@lists.postgresql.org; Sat, 01 Feb 2025 07:35:40 +0000 Received: from mail-vk1-xa2c.google.com ([2607:f8b0:4864:20::a2c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1te82S-002akT-3D for pgsql-hackers@lists.postgresql.org; Sat, 01 Feb 2025 07:35:38 +0000 Received: by mail-vk1-xa2c.google.com with SMTP id 71dfb90a1353d-51c7b5f3b8bso865462e0c.2 for ; Fri, 31 Jan 2025 23:35:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738395336; x=1739000136; darn=lists.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=4/M/S/UWvFFEDf5AMWwJOVKe8POGO71+M1/2B78ruMc=; b=bmXKVFWH89Z+zg16JxoiL8dbVLe5yRX6dqSHu4dg/KI3U95FU6PLkesDeIA5yd8Ypt C8PJZJSAdPEtQgeDqYZz1gYdEGn5tHtvRwUULLqLzTzD20ZgC5zY4RvXfa1pAG3CfOyX mvNXNstBd+v70JDBdcV+5jc5LHuUWB0hGuZ85vlscr9AhBEK3Ekb4BUYGgHRJ/G+Knzi nRmWLg1l+X7Ne+BpX/i8hUAfLLhDFlEqGVUHne1GBnPPO2lUGb0md4PGTEWi5sH66uMu NV0MPNG+YU/55JDo4V2a8r/mDQmIGpY1wNgTmHToGb1yBy9X4Mh9VzKKvYXOVOmcIcsD 5ZUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738395336; x=1739000136; 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=4/M/S/UWvFFEDf5AMWwJOVKe8POGO71+M1/2B78ruMc=; b=ORlHYP9jK9pqbww3I2rEWIcvhA5jpf8Vk5n2+5ACNywPkP02UkuNCAU6IYpYEe4vQT gc3FSh8tt+xGcC2yj6cFwWOJ7LcSo7jmeWsXj1TdXJd6TwA6glZ16aoSR3OBmucFgN0D RvaRZs72ZmtdBqrzMUnjx+l7UAc5uXePq1Qmj/AXqSranQF0bqIL7mv5NfNisnewwSfK ERuFMewCoz3TubseyhrdRoKpr60dj7Zyq+XmPaf1yUD8w4ZBAUQOGGMK9/fu7RlcIELP 3xrhCI5IIB0S/6NJ2g9PtLzNFR3fkv5GfUz5TKYB4L41bzcFhq6iknsiFF2zYvhT4YxR x9Xg== X-Forwarded-Encrypted: i=1; AJvYcCXD+OazAK/pyqPTroF45q/5ijiNmVn3VY7fQFZiVrHKVQIDtasIVj+zj6DPiO9bTyoCcroJCIS80zeLxZFb@lists.postgresql.org X-Gm-Message-State: AOJu0YyvR9ZKwOpjCgfotjk29JPPPMezrUQ5iwePBI0jVk0gDOg5u8ls k1a23fJfGdvZ4R1lBO4RpkcwRWXBNJRzOF/q445bU3+UeN+KAKkvGwMX4nFKNeNpx/t6bYBnVyj sE5OFvjiLoXrgFwhGdCqkTmH3P8k= X-Gm-Gg: ASbGncsBw27qfN2JLVwv0QA9/iOHwG2LUFhgXbt5y0M+Ik2lcYAdv9wAdeGb5MPl6Jp oQ7nq1CBCpfZOz9tOfFGk1c2Ce6m9+Hs5dUrrRkiiDx8pTz8eAluUEtM0yXnktf2VQ4M3TQOfVQ == X-Google-Smtp-Source: AGHT+IGJ7+osVe7U9xJ68xvlw9LIzpYRhKnaOWmxdhTGLN5qYvqr7RGbX4OusLMZY7kBQLNGGe3Qo03g9XbCMo/sd6Y= X-Received: by 2002:a05:6122:1990:b0:51c:aa1a:2b5b with SMTP id 71dfb90a1353d-51e9e3fdc44mr12563255e0c.4.1738395336359; Fri, 31 Jan 2025 23:35:36 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Shayon Mukherjee Date: Sat, 1 Feb 2025 13:05:25 +0530 X-Gm-Features: AWEUYZmKOPQschB-64kSfJBNw5SMbvGVlWcydjFFtkLyMNZ0m_hI45zwlT-Z4Qk Message-ID: Subject: Re: Proposal to Enable/Disable Index using ALTER INDEX (with patch) To: Sami Imseih Cc: =?UTF-8?Q?Benoit_Lobr=C3=A9au?= , Michail Nikolaev , David Rowley , Robert Haas , Peter Eisentraut , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000080f35b062d0fb45f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000080f35b062d0fb45f Content-Type: multipart/alternative; boundary="00000000000080f359062d0fb45d" --00000000000080f359062d0fb45d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Jan 31, 2025 at 10:18=E2=80=AFAM Sami Imseih = wrote: > > What is being discussed here is different from what I can tell. This > is referring > to the index changing status ( visible/invisible ) and those changes bein= g > visible by another transaction. > > +1. My vote would be to keep the behavior as is, at least for the first roll out of this feature. > However, the current patch may be too restrictive. Why do we need > an AccessExclusiveLock on the table to perform the change. We are > only changing the catalog and not the underlying data. This is a lot like > ALTER INDEX RENAME, which only takes a ShareUpdateExclusiveLock. > Can we do the same here? > > Makes sense, I think this ended up being a remananent from one of the first iterations. Updated it in the attached v10 patch. > 1/ Missing ATSimpleRecursion call in PrepCmd for > case AT_SetIndexVisible: > case AT_SetIndexInvisible: > Without the recursion call, the visibility changes on a > parent will not apply to the partitions. We are also > missing tests for partitions. > > Great catch! Thank you!! Updated the patch with the support for partitions and backed by regression specs. 2/ In ATExecSetIndexVisibility > > Change: > elog(ERROR, "could not find tuple for index %u", indexOid); > > To: > elog(ERROR, "cache lookup failed for index %u", indexOid); > Good eye! I missed this :). > > 3/ In ATExecSetIndexVisibility > > if (indexForm->indcheckxmin) > + { > + heap_freetuple(indexTuple); > + table_close(pg_index, RowExclusiveLock); > + ereport(ERROR, > > There is no need to close the table or free the tuple, as > these are "cleaned up" when the transaction aborts. > > 4/ In ATExecSetIndexVisibility > > I have a suggestion below: > > What about we open both heapOid and IndexRelationId > at the start and close them at the end. Also, > inside the block for indexForm->indisvisible !=3D visible, > do the work to invalidate the cache, invoke the post > alter hook and increment the command counter. This will > also allow us to get rid of the update boolean as well. > > What do you think? > Thank you for the suggestions!! I was err'ing a bit on the "defensive" side being new to this area, however your suggestions are much more simpler. I have updated the patch accordingly. I have also added support for suggestions from the earlier messages, I will respond there accordingly. Thank you! Shayon --00000000000080f359062d0fb45d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

On Fri, Jan 31, 202= 5 at 10:18=E2=80=AFAM Sami Imseih <samimseih@gmail.com> wrote:

What is being discussed here is different from what I can tell. This
is referring
to the index changing status ( visible/invisible ) and those changes being<= br> visible by another transaction.


+1. My vote would be to keep the behav= ior as is, at least for the first roll out of this feature.=C2=A0
=C2=A0
However, the current patch may be too restrictive. Why do we need
an AccessExclusiveLock on the table to perform the change. We are
only changing the catalog and not the underlying data. This is a lot like ALTER INDEX RENAME, which only takes a ShareUpdateExclusiveLock.
Can we do the same here?


Makes sense, I think this ended up bei= ng a remananent from one of the first iterations. Updated it in the attache= d v10 patch.=C2=A0
=C2=A0
1/ Missing ATSimpleRecursion call in PrepCmd for
=C2=A0 =C2=A0 =C2=A0 =C2=A0 case AT_SetIndexVisible:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 case AT_SetIndexInvisible:
Without the recursion call, the visibility changes on a
parent will not apply to the partitions. We are also
missing tests for partitions.


Great catch! Thank you!! Updated the p= atch with the support for partitions and backed by regression specs.=C2=A0= =C2=A0


3/ In ATExecSetIndexVisibility

=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (indexForm->indcheckxmin)
+=C2=A0 =C2=A0 =C2=A0 =C2=A0{
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0heap_freetuple(inde= xTuple);
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0table_close(pg_inde= x, RowExclusiveLock);
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ereport(ERROR,

There is no need to close the table or free the tuple, as
these are "cleaned up" when the transaction aborts.

4/ In ATExecSetIndexVisibility

I have a suggestion below:

What about we open both heapOid and IndexRelationId
at the start and close them at the end. Also,
inside the block for indexForm->indisvisible !=3D visible,
do the work to invalidate the cache, invoke the post
alter hook and increment the command counter. This will
also allow us to get rid of the update boolean as well.

What do you think?

Thank you for the su= ggestions!! I was err'ing a bit on the "defensive" side being= new to this area, however your suggestions are much more simpler. I have u= pdated the patch accordingly.=C2=A0
=C2=A0
I have also = added support for suggestions from the earlier messages, I will respond the= re accordingly.=C2=A0

Thank you!
Shayon<= /div>
--00000000000080f359062d0fb45d-- --00000000000080f35b062d0fb45f Content-Type: application/octet-stream; name="v10-0001-Introduce-the-ability-to-set-index-visibility-us.patch" Content-Disposition: attachment; filename="v10-0001-Introduce-the-ability-to-set-index-visibility-us.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6lvnus70 RnJvbSAxYWM3OGFkOWNmNjUzYTgzMDA4YjdlOWQ2ZjJhOWEyMGIxNTVhOGQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGF5b24gTXVraGVyamVlIDxzaGF5b25qQGdtYWlsLmNvbT4K RGF0ZTogU3VuLCAxMiBKYW4gMjAyNSAxNDozNDo0OCAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggdjEw XSBJbnRyb2R1Y2UgdGhlIGFiaWxpdHkgdG8gc2V0IGluZGV4IHZpc2liaWxpdHkgdXNpbmcgQUxU RVIKIElOREVYCgpUaGlzIHBhdGNoIGludHJvZHVjZXMgaW5kZXggdmlzaWJpbGl0eSBjb250cm9s IHVzaW5nIEFMVEVSIElOREVYIGFuZCBDUkVBVEUgSU5ERVgKY29tbWFuZHMuCgpPcmlnaW5hbCBt b3RpdmF0aW9uIGZvciB0aGUgcHJvYmxlbSBhbmQgcHJvcG9zYWwgZm9yIGEgcGF0Y2gKY2FuIGJl IGZvdW5kIGF0IFsxXS4KClRoaXMgcGF0Y2ggcGFzc2VzIGFsbCB0aGUgZXhpc3Rpbmcgc3BlY3Mg YW5kIHRoZSBuZXdseSBhZGRlZCByZWdyZXNzaW9uIHRlc3RzLiBUaGUgcGF0Y2gKaXMgcmVhZHkg Zm9yIHJldmlldyBhbmQgdGVzdC4gSXQgY29tcGlsZXMsIHNvIHRoZSBwYXRjaCBjYW4gYmUgYXBw bGllZCBmb3IgdGVzdGluZyBhcyB3ZWxsLgoKTm90ZTogVGhlIHBhdGNoIGhhcyBnb25lIHRocm91 Z2ggYSBmZXcgaXRlcmF0aW9ucy4gRWFybGllciB2ZXJzaW9ucyBvZiB0aGUgcGF0Y2ggaGFkIHRo ZSBFTkFCTEUvRElTQUJMRSBncmFtbWFyLgpUaGUgY3VycmVudCB2ZXJzaW9uIGhhcyB0aGUgVklT SUJMRS9JTlZJU0lCTEUgZ3JhbW1hci4gU28sIHlvdSB3aWxsIHRoZSBsb2NhbCB2YXJpYWJsZSBu YW1lcyB1c2luZyB0aGUgbmV3IGdyYW1tYXIgYWNjb3JkaW5nbHkuCgpJbXBsZW1lbnRhdGlvbiBk ZXRhaWxzOgoKLSBOZXcgR3JhbW1hcjoKICAqIEFMVEVSIElOREVYIC4uLiBWSVNJQkxFL0lOVklT SUJMRQogICogQ1JFQVRFIElOREVYIC4uLiBJTlZJU0lCTEUKCi0gRGVmYXVsdCBzdGF0ZSBpcyB2 aXNpYmxlLiBJbmRleGVzIGFyZSBvbmx5IGludmlzaWJsZSB3aGVuIGV4cGxpY2l0bHkKICBpbnN0 cnVjdGVkIHZpYSBDUkVBVEUgSU5ERVggLi4uIElOVklTSUJMRSBvciBBTFRFUiBJTkRFWCAuLi4g SU5WSVNJQkxFLgoKLSBQcmltYXJ5IEtleSBhbmQgVW5pcXVlIGNvbnN0cmFpbnQgaW5kZXhlcyBh cmUgYWx3YXlzIHZpc2libGUuIFRoZQogIFZJU0lCTEUvSU5WSVNJQkxFIGdyYW1tYXIgaXMgc3Vw cG9ydGVkIGZvciB0aGVzZSB0eXBlcyBvZiBpbmRleGVzIGFuZCB0aGV5IGNhbgogIGJlIG1hZGUg aW52aXNpYmxlIHZpYSBBTFRFUiBJTkRFWCAuLi4gSU5WSVNJQkxFLgoKLSBBTFRFUiBJTkRFWCAu Li4gVklTSUJMRS9JTlZJU0lCTEUgcGVyZm9ybXMgdXBkYXRlIG9uIHRoZSByZWxldmFudCByb3cg aW4gcGdfaW5kZXgKICBjYXRhbG9nCgotIHBnX2dldF9pbmRleGRlZigpIHN1cHBvcnRzIHRoZSBu ZXcgZnVuY3Rpb25hbGl0eSBhbmQgZ3JhbW1hci4gVGhpcyBjaGFuZ2UgaXMKICByZWZsZWN0ZWQg aW4gXGQgb3V0cHV0IGZvciB0YWJsZXMgYW5kIHBnX2R1bXAuIFdlIHNob3cgdGhlIElOVklTSUJM RSBzeW50YXggYWNjb3JkaW5nbHkuCgotIEFkZGVkIGZvcmNlX2ludmlzaWJsZV9pbmRleCBHVUMg cGFyYW1ldGVyIHRoYXQgZm9yY2VzIHRoZSBwbGFubmVyIHRvIHVzZSBpbnZpc2libGUKICBpbmRl eGVzLiBUaGlzIGlzIHVzZWZ1bCBmb3IgdGVzdGluZyBhbmQgdmFsaWRhdGluZyBpbmRleCBiZWhh dmlvciB3aXRob3V0IGNoYW5naW5nCiAgdGhlaXIgdmlzaWJpbGl0eSBzdGF0ZS4gQmFzZWQgb24g ZmVlZGJhY2sgZnJvbSBTYW1pIFMgWzJdCgotIFVwZGF0ZWQgY3JlYXRlX2luZGV4LnNxbCByZWdy ZXNzaW9uIHRlc3QgdG8gY292ZXIgdGhlIG5ldyBncmFtbWFyIGFuZCB2ZXJpZnkKICB0aGF0IGlu dmlzaWJsZSBpbmRleGVzIGFyZSBub3QgdXNlZCBpbiBxdWVyaWVzLiBUaGUgdGVzdCBjb3ZlcnM6 CgogIC0gQmFzaWMgc2luZ2xlLWNvbHVtbiBhbmQgbXVsdGktY29sdW1uIGluZGV4ZXMKICAtIFBh cnRpYWwgaW5kZXhlcwogIC0gRXhwcmVzc2lvbiBpbmRleGVzCiAgLSBKb2luIGluZGV4ZXMKICAt IEdJTiBhbmQgR2lTVCBpbmRleGVzCiAgLSBDb3ZlcmluZyBpbmRleGVzCiAgLSBSYW5nZSBpbmRl eGVzCiAgLSBVbmlxdWUgaW5kZXhlcyBhbmQgY29uc3RyYWludHMKCi0gQWRkcyBhIG5ldyBpbmRp c3Zpc2libGUgYXR0cmlidXRlIHRvIHRoZSBJbmRleE9wdEluZm8gc3RydWN0dXJlLgoKLSBNb2Rp ZmllcyBnZXRfcmVsYXRpb25faW5mbyBpbiBwbGFuY2F0LmMgdG8gc2tpcCBpbnZpc2libGUgaW5k ZXhlcyBlbnRpcmVseSwgdGh1cyByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIHBsYWNlcyB3ZSBuZWVk IHRvIGNoZWNrIGlmIGFuIGluZGV4IGlzIGludmlzaWJsZSBvciBub3QuIEluc3BpcmVkIGJ5IHRo ZSBjb252ZXJzYXRpb25zIHN0YXJ0IGF0IFszXS4KICAtIEkgY2hvc2UgdG8gbW9kaWZ5IHRoZSBs b2dpYyB3aXRoaW4gZ2V0X3JlbGF0aW9uX2luZm8gYXMgY29tcGFyZWQgdG8sIHNheSwgcmVkdWNp bmcgdGhlIGNvc3QgdG8gbWFrZSB0aGUgcGxhbm5lciBub3QgY29uc2lkZXIgYW4gaW5kZXggZHVy aW5nIHBsYW5uaW5nLCBtb3N0bHkgdG8ga2VlcCB0aGUgbnVtYmVyIG9mIGNoYW5nZXMgYmVpbmcg aW50cm9kdWNlZCB0byBhIG1pbmltdW0gYW5kIGFsc28gdGhlIGxvZ2ljIGl0c2VsZiBiZWluZyBz ZWxmLWNvbnRhaW5lZCBhbmQgZWFzaWVyIHRvIHVuZGVyc3RhbmQgcGVyaGFwcyAoPykuCgotIE5v IGNoYW5nZXMgYXJlIG1hZGUgdG8gc3RvcCB0aGUgaW5kZXggZnJvbSBnZXR0aW5nIG1haW50YWlu ZWQuIFRoaXMgd2F5IHdlIGVuc3VyZSBubwogIGRhdGEgbG9zcyBvciBjb3JydXB0aW9uIHdoZW4g aW5kZXggaXMgbWFkZSB2aXNpYmxlIGFnYWluLgoKLSBUT0FTVCBpbmRleGVzIGFyZSBzdXBwb3J0 ZWQgYW5kIHZpc2libGUgYnkgZGVmYXVsdCBhcyB3ZWxsLgoKLSBSRUlOREVYIENPTkNVUlJFTlRM WSBpcyBzdXBwb3J0ZWQgYXMgd2VsbCBhbmQgZXhpc3Rpbmcgc3RhdGUgb2YgcGdfaW5kZXguaW5k aXN2aXNpYmxlCiAgaXMgY2FycmllZCBvdmVyIGFjY29yZGluZ2x5LgoKLSBTZWUgdGhlIGNoYW5n ZXMgaW4gY3JlYXRlX2luZGV4LnNxbCB0byBnZXQgYW4gaWRlYSBvZiB0aGUgZ3JhbW1hciBhbmQg c3FsIHN0YXRlbWVudHMuCgotIFNlZSB0aGUgY2hhbmdlcyBpbiBjcmVhdGVfaW5kZXgub3V0IHRv IGdldCBhbiBpZGVhIG9mIHRoZSBjYXRhbG9ndWUgc3RhdGVzIGFuZCBFWFBMQUlOCiAgb3V0cHV0 IHRvIHNlZSB3aGVuIGFuIGluZGV4IGlzIGdldHRpbmcgdXNlZCBvciBpc24ndCAod2hlbiBpbnZp c2libGUpLgoKLSBJbmNvcnBvcmF0ZWQgRGF2aWRSJ3MgZmVlZGJhY2sgZnJvbSBbNF0gYXJvdW5k IGRvY3VtZW50YXRpb24gYW5kIGFsc28geW91IHdpbGwgc2VlIHRoYXQgYnkgc2tpcHBpbmcgaW52 aXNpYmxlIGluZGV4ZXMgZW50aXJlbHkgZnJvbSBnZXRfcmVsYXRpb25faW5mbyBpbiBwbGFuY2F0 LmMgKGFzIG1lbnRpb25lZCBhYm92ZSksIHdlIGFkZHJlc3MgdGhlIG90aGVyIG1lbnRpb25lZCBp c3N1ZXMgYXMgd2VsbC4KCi0gTGFzdGx5LCBwcm90ZWN0cyBhZ2FpbnN0IHRoZSBjYXNlIHdoZXJl IGluZGNoZWNreG1pbiBpcyB0cnVlIGJ5IHJhaXNpbmcgRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BS RVJFUVVJU0lURV9TVEFURS4KCkxvb2tpbmcgZm9yd2FyZCB0byBhbnkgYW5kIGFsbCBmZWVkYmFj ayBvbiB0aGlzIHBhdGNoLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGNvZGUgcXVhbGl0 eSwgdGVzdHMsIGZ1bmRhbWVudGFsIGxvZ2ljLgoKWzFdIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwu b3JnL21lc3NhZ2UtaWQvQ0FOcXRGLW9YS2UwTSUzRDBRT2loNkglMkJzWlJqRTJCV0Fia1dfMSUy QjluTUVBTUx4VUpnNWpBJTQwbWFpbC5nbWFpbC5jb20KWzJdIGh0dHBzOi8vd3d3LnBvc3RncmVz cWwub3JnL21lc3NhZ2UtaWQvQ0FBNVJaMHVkenlkT2JNRGk2NUM1OS1vcTU0QjlabWpTWjF3Vkgz aCUyQnY0WGlWbTZRREElNDBtYWlsLmdtYWlsLmNvbQpbM10gaHR0cHM6Ly93d3cucG9zdGdyZXNx bC5vcmcvbWVzc2FnZS1pZC8zNDY1MjA5LjE3MjcyMDIwNjQlNDBzc3MucGdoLnBhLnVzCls0XSBo dHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBQXBIRHZwVU51JTNEaVZjZEo3 NHN5cHZnZWFDRiUyQnRmcHliOFZSaFphRjdEVGQxeFZyN2clNDBtYWlsLmdtYWlsLmNvbQotLS0K IGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICB8ICAxMSArCiBkb2Mv c3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgfCAgMTYgKwogZG9jL3NyYy9z Z21sL3JlZi9hbHRlcl9pbmRleC5zZ21sICAgICAgICAgIHwgIDM4ICsrCiBkb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9pbmRleC5zZ21sICAgICAgICAgfCAgMjkgKwogc3JjL2JhY2tlbmQvYm9vdHN0 cmFwL2Jvb3RwYXJzZS55ICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5k ZXguYyAgICAgICAgICAgICAgICB8ICAzMSArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGlu Zy5jICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YyAgICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAg ICAgICAgIHwgIDY2ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMgICAg ICAgfCAgMzEgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICB8 ICA1NiArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgIHwgICAz ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICB8ICAgNCArCiBz cmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgfCAgIDEgKwogc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgIHwgIDExICsKIHNyYy9iaW4vcHNx bC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvY2F0 YWxvZy9pbmRleC5oICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2luZGV4LmggICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oICAgICAgICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6 ZXIuaCAgICAgICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAgICAg ICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvdXRpbHMvZ3VjX2hvb2tzLmggICAgICAgICAg ICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCB8 IDcwNSArKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9p bmRleC5zcWwgICAgICB8IDI5MSArKysrKysrKysKIDI0IGZpbGVzIGNoYW5nZWQsIDEyOTggaW5z ZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCAwODhmYjE3NWNj Li44YjAwMTlkMGU2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtNDU5NSw2ICs0NTk1LDE3IEBAIFNDUkFN LVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJs ZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICAgcGFydGlhbCBpbmRleC4KICAgICAgIDwvcGFyYT48 L2VudHJ5PgogICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNh dGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAg ICA8c3RydWN0ZmllbGQ+aW5kaXN2aXNpYmxlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlw ZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIElmIHRydWUsIHRoZSBpbmRl eCBpcyBjdXJyZW50bHkgdmlzaWJsZSB0byB0aGUgcGxhbm5lciBhbmQgbWF5IGJlIHVzZWQgZm9y IHF1ZXJpZXMuCisgICAgICAgSWYgZmFsc2UsIHRoZSBpbmRleCBpcyBpbnZpc2libGUgYW5kIG1h eSBub3QgYmUgdXNlZCBmb3IgcXVlcmllcywKKyAgICAgICBidXQgaXMgc3RpbGwgdXBkYXRlZCB3 aGVuIHRoZSB0YWJsZSBpcyBtb2RpZmllZC4gRGVmYXVsdCBpcyB0cnVlLgorICAgICAgPC9wYXJh PjwvZW50cnk+CisgICAgIDwvcm93PgogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90 YWJsZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dt bC9jb25maWcuc2dtbAppbmRleCBhNzgyZjEwOTk4Li44NzNmYWU5YTkzIDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBA IC01NTg5LDYgKzU1ODksMjIgQEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5u dW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAgICAgIDwvbGlz dGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1 Yy1mb3JjZS1pbnZpc2libGUtaW5kZXgiIHhyZWZsYWJlbD0idXNlX2ludmlzaWJsZV9pbmRleCI+ CisgICAgICA8dGVybT48dmFybmFtZT51c2VfaW52aXNpYmxlX2luZGV4PC92YXJuYW1lPiAoPHR5 cGU+Ym9vbGVhbjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2 YXJuYW1lPnVzZV9pbnZpc2libGVfaW5kZXg8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1l dGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIEZvcmNlcyB0aGUgcXVlcnkgcGxhbm5l ciB0byBjb25zaWRlciBpbmRleGVzIHRoYXQgaGF2ZSBiZWVuIG1hcmtlZCBhcyBpbnZpc2libGUg dXNpbmcKKyAgICAgICAgPGNvbW1hbmQ+QUxURVIgSU5ERVggLi4uIElOVklTSUJMRTwvY29tbWFu ZD4uIFRoaXMgcGFyYW1ldGVyIGlzIHVzZWZ1bCBmb3Igc2VsZWN0aXZlCisgICAgICAgIHVzZSBv ZiBpbnZpc2libGUgaW5kZXhlcyBpbiBzcGVjaWZpYyBhcHBsaWNhdGlvbiBjb250ZXh0cy4gVGhl IGRlZmF1bHQKKyAgICAgICAgaXMgPGxpdGVyYWw+b2ZmPC9saXRlcmFsPi4KKyAgICAgICA8L3Bh cmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8L3Zh cmlhYmxlbGlzdD4KICAgICAgPC9zZWN0Mj4KICAgICAgPHNlY3QyIGlkPSJydW50aW1lLWNvbmZp Zy1xdWVyeS1jb25zdGFudHMiPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9p bmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9pbmRleC5zZ21sCmluZGV4IDFkNDJk MDVkODUuLmVhYWE0MGQ1NGMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfaW5k ZXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX2luZGV4LnNnbWwKQEAgLTMxLDYg KzMxLDcgQEAgQUxURVIgSU5ERVggWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IEFMVEUKICAgICBTRVQgU1RBVElTVElDUyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW50ZWdlcjwvcmVwbGFjZWFibGU+CiBBTFRFUiBJ TkRFWCBBTEwgSU4gVEFCTEVTUEFDRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFt ZTwvcmVwbGFjZWFibGU+IFsgT1dORUQgQlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnJvbGVfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIF0KICAgICBTRVQgVEFCTEVTUEFDRSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X3RhYmxlc3BhY2U8L3JlcGxhY2VhYmxl PiBbIE5PV0FJVCBdCitBTFRFUiBJTkRFWCBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4geyBWSVNJQkxFIHwgSU5WSVNJQkxFIH0K IDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApAQCAtMTU5LDYgKzE2MCwyOSBAQCBB TFRFUiBJTkRFWCBBTEwgSU4gVEFCTEVTUEFDRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5 PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPlZJU0lCTEU8L2xpdGVy YWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBNYWtlIHRoZSBz cGVjaWZpZWQgaW5kZXggdmlzaWJsZS4gVGhlIGluZGV4IHdpbGwgYmUgdXNlZCBmb3IgcXVlcmll cy4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwor ICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5JTlZJU0lCTEU8L2xpdGVyYWw+ PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBNYWtlIHRoZSBzcGVj aWZpZWQgaW5kZXggaW52aXNpYmxlLiBUaGUgaW5kZXggd2lsbCBub3QgYmUgdXNlZCBmb3IgcXVl cmllcy4KKyAgICAgIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgdGVzdGluZyBxdWVyeSBwZXJmb3Jt YW5jZSB3aXRoIGFuZCB3aXRob3V0IHNwZWNpZmljCisgICAgICBpbmRleGVzLiBJZiBwZXJmb3Jt YW5jZSBkZWdyYWRlcyBhZnRlciBtYWtpbmcgYW4gaW5kZXggaW52aXNpYmxlLCBpdCBjYW4gYmUg ZWFzaWx5CisgICAgICBiZSBtYWRlIHZpc2libGUgdXNpbmcgPGxpdGVyYWw+VklTSUJMRTwvbGl0 ZXJhbD4uIEJlZm9yZSBtYWtpbmcgYW4gaW5kZXggaW52aXNpYmxlLCBpdCdzIHJlY29tbWVuZGVk CisgICAgICB0byBjaGVjayA8c3RydWN0bmFtZT5wZ19zdGF0X3VzZXJfaW5kZXhlczwvc3RydWN0 bmFtZT4uPHN0cnVjdGZpZWxkPmlkeF9zY2FuPC9zdHJ1Y3RmaWVsZD4KKyAgICAgIHRvIGlkZW50 aWZ5IHBvdGVudGlhbGx5IHVudXNlZCBpbmRleGVzLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgIDwvdmFyaWFibGVsaXN0PgogICA8L3BhcmE+ CiAKQEAgLTMwMSw2ICszMjUsMjAgQEAgQ1JFQVRFIElOREVYIGNvb3JkX2lkeCBPTiBtZWFzdXJl ZCAoeCwgeSwgKHogKyB0KSk7CiBBTFRFUiBJTkRFWCBjb29yZF9pZHggQUxURVIgQ09MVU1OIDMg U0VUIFNUQVRJU1RJQ1MgMTAwMDsKIDwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgogCisgIDxwYXJh PgorICAgVG8gbWFrZSBhbiBpbmRleCB2aXNpYmxlOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIg SU5ERVggaWR4X25hbWUgVklTSUJMRTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KKwor ICA8cGFyYT4KKyAgIFRvIG1ha2UgYW4gaW5kZXggaW52aXNpYmxlOgorPHByb2dyYW1saXN0aW5n PgorQUxURVIgSU5ERVggaWR4X25hbWUgSU5WSVNJQkxFOworPC9wcm9ncmFtbGlzdGluZz4KKyAg PC9wYXJhPgorCiAgPC9yZWZzZWN0MT4KIAogIDxyZWZzZWN0MT4KZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9p bmRleC5zZ21sCmluZGV4IDIwODM4OWU4MDAuLjkwZDdkOTBhMmIgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfaW5kZXguc2dtbApAQCAtMjgsNiArMjgsNyBAQCBDUkVBVEUgWyBVTklRVUUgXSBJTkRFWCBb IENPTkNVUlJFTlRMWSBdIFsgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPQog ICAgIFsgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdG9yYWdlX3BhcmFt ZXRlcjwvcmVwbGFjZWFibGU+IFs9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1 ZTwvcmVwbGFjZWFibGU+XSBbLCAuLi4gXSApIF0KICAgICBbIFRBQkxFU1BBQ0UgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlc3BhY2VfbmFtZTwvcmVwbGFjZWFibGU+IF0KICAg ICBbIFdIRVJFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wcmVkaWNhdGU8L3JlcGxh Y2VhYmxlPiBdCisgICAgWyBJTlZJU0lCTEUgXQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lz ZGl2PgogCkBAIC0zODAsNiArMzgxLDE5IEBAIENSRUFURSBbIFVOSVFVRSBdIElOREVYIFsgQ09O Q1VSUkVOVExZIF0gWyBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9CiAgICAg ICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgIDx2YXJsaXN0ZW50cnk+ CisgICAgICA8dGVybT48bGl0ZXJhbD5JTlZJU0lCTEU8L2xpdGVyYWw+PC90ZXJtPgorICAgICAg PGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBDcmVhdGVzIHRoZSBpbmRleCBpbiBh biBpbnZpc2libGUgc3RhdGUgKGRlZmF1bHQgdmlzaWJsZSkuIEFuIGludmlzaWJsZSBpbmRleCBp cworICAgICAgICBub3QgdXNlZCBieSB0aGUgcXVlcnkgcGxhbm5lciBmb3IgcXVlcmllcywgYnV0 IGl0IGlzIHN0aWxsIG1haW50YWluZWQKKyAgICAgICAgd2hlbiB0aGUgdW5kZXJseWluZyB0YWJs ZSBkYXRhIGNoYW5nZXMuIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuIHlvdSB3YW50IHRvIGNyZWF0 ZQorICAgICAgICBhbiBpbmRleCB3aXRob3V0IGltbWVkaWF0ZWx5IGltcGFjdGluZyBxdWVyeSBw bGFubmluZywgYWxsb3dpbmcgeW91IHRvIG1ha2UgaXQKKyAgICAgICAgdmlzaWJsZSBsYXRlciBh dCBhIG1vcmUgY29udmVuaWVudCB0aW1lLiBUaGUgaW5kZXggY2FuIGJlIG1hZGUgdmlzaWJsZSBs YXRlcgorICAgICAgICB1c2luZyA8Y29tbWFuZD5BTFRFUiBJTkRFWCAuLi4gVklTSUJMRTwvY29t bWFuZD4uCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0 ZW50cnk+CiAgICAgPC92YXJpYWJsZWxpc3Q+CiAKICAgPHJlZnNlY3QyIGlkPSJzcWwtY3JlYXRl aW5kZXgtc3RvcmFnZS1wYXJhbWV0ZXJzIiB4cmVmbGFiZWw9IkluZGV4IFN0b3JhZ2UgUGFyYW1l dGVycyI+CkBAIC03MDEsNiArNzE1LDE0IEBAIEluZGV4ZXM6CiAgICAgcGFydGl0aW9uZWQgaW5k ZXggaXMgYSBtZXRhZGF0YSBvbmx5IG9wZXJhdGlvbi4KICAgIDwvcGFyYT4KIAorICA8cGFyYT4K KyAgIFdoZW4gY3JlYXRpbmcgYW4gaW5kZXggd2l0aCB0aGUgPGxpdGVyYWw+SU5WSVNJQkxFPC9s aXRlcmFsPiBvcHRpb24sIHRoZSBpbmRleAorICAgd2lsbCBiZSBjcmVhdGVkIGJ1dCBub3QgdXNl ZCBmb3IgcXVlcnkgcGxhbm5pbmcuIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IKKyAgIHByZXBhcmlu ZyBhbiBpbmRleCBpbiBhZHZhbmNlIG9mIGl0cyB1c2UsIG9yIGZvciB0ZXN0aW5nIHB1cnBvc2Vz LiBUaGUgaW5kZXgKKyAgIHdpbGwgc3RpbGwgYmUgbWFpbnRhaW5lZCBhcyB0aGUgdGFibGUgaXMg bW9kaWZpZWQsIHNvIGl0IGNhbiBiZSBtYWRlIHZpc2libGUKKyAgIGxhdGVyIHdpdGhvdXQgbmVl ZGluZyB0byBiZSByZWJ1aWx0LiBCeSBkZWZhdWx0IGFsbCBuZXcgaW5kZXhlcyBhcmUgdmlzaWJs ZS4KKyAgPC9wYXJhPgorCiAgIDwvcmVmc2VjdDI+CiAgPC9yZWZzZWN0MT4KIApAQCAtOTgwLDYg KzEwMDIsMTMgQEAgU0VMRUNUICogRlJPTSBwb2ludHMKIENSRUFURSBJTkRFWCBDT05DVVJSRU5U TFkgc2FsZXNfcXVhbnRpdHlfaW5kZXggT04gc2FsZXNfdGFibGUgKHF1YW50aXR5KTsKIDwvcHJv Z3JhbWxpc3Rpbmc+PC9wYXJhPgogCisgIDxwYXJhPgorICAgVG8gY3JlYXRlIGFuIGluZGV4IG9u IHRoZSB0YWJsZSA8bGl0ZXJhbD50ZXN0X3RhYmxlPC9saXRlcmFsPiB3aXRoIHRoZSBkZWZhdWx0 CisgICBuYW1lLCBidXQgaGF2ZSBpdCBpbml0aWFsbHkgaW52aXNpYmxlOgorPHByb2dyYW1saXN0 aW5nPgorQ1JFQVRFIElOREVYIE9OIHRlc3RfdGFibGUgKGNvbDEpIElOVklTSUJMRTsKKzwvcHJv Z3JhbWxpc3Rpbmc+CisgIDwvcGFyYT4KICA8L3JlZnNlY3QxPgogCiAgPHJlZnNlY3QxPgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RwYXJzZS55IGIvc3JjL2JhY2tlbmQv Ym9vdHN0cmFwL2Jvb3RwYXJzZS55CmluZGV4IDk4MzNmNTJjMWIuLmVhMjE1MTFhMjAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290cGFyc2UueQorKysgYi9zcmMvYmFja2Vu ZC9ib290c3RyYXAvYm9vdHBhcnNlLnkKQEAgLTMwMyw2ICszMDMsNyBAQCBCb290X0RlY2xhcmVJ bmRleFN0bXQ6CiAJCQkJCXN0bXQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKIAkJCQkJc3RtdC0+aWZf bm90X2V4aXN0cyA9IGZhbHNlOwogCQkJCQlzdG10LT5yZXNldF9kZWZhdWx0X3RibHNwYyA9IGZh bHNlOworCQkJCQlzdG10LT5pc3Zpc2libGUgPSB0cnVlOwogCiAJCQkJCS8qIGxvY2tzIGFuZCBy YWNlcyBuZWVkIG5vdCBjb25jZXJuIHVzIGluIGJvb3RzdHJhcCBtb2RlICovCiAJCQkJCXJlbGF0 aW9uSWQgPSBSYW5nZVZhckdldFJlbGlkKHN0bXQtPnJlbGF0aW9uLCBOb0xvY2ssCkBAIC0zNTYs NiArMzU3LDcgQEAgQm9vdF9EZWNsYXJlVW5pcXVlSW5kZXhTdG10OgogCQkJCQlzdG10LT5jb25j dXJyZW50ID0gZmFsc2U7CiAJCQkJCXN0bXQtPmlmX25vdF9leGlzdHMgPSBmYWxzZTsKIAkJCQkJ c3RtdC0+cmVzZXRfZGVmYXVsdF90YmxzcGMgPSBmYWxzZTsKKwkJCQkJc3RtdC0+aXN2aXNpYmxl ID0gdHJ1ZTsKIAogCQkJCQkvKiBsb2NrcyBhbmQgcmFjZXMgbmVlZCBub3QgY29uY2VybiB1cyBp biBib290c3RyYXAgbW9kZSAqLwogCQkJCQlyZWxhdGlvbklkID0gUmFuZ2VWYXJHZXRSZWxpZChz dG10LT5yZWxhdGlvbiwgTm9Mb2NrLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9p bmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IDczNzc5MTJiNDEuLmVm NTFlNmRlMGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9z cmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTExOCw3ICsxMTgsOCBAQCBzdGF0aWMgdm9p ZCBVcGRhdGVJbmRleFJlbGF0aW9uKE9pZCBpbmRleG9pZCwgT2lkIGhlYXBvaWQsCiAJCQkJCQkJ CWJvb2wgaXNleGNsdXNpb24sCiAJCQkJCQkJCWJvb2wgaW1tZWRpYXRlLAogCQkJCQkJCQlib29s IGlzdmFsaWQsCi0JCQkJCQkJCWJvb2wgaXNyZWFkeSk7CisJCQkJCQkJCWJvb2wgaXNyZWFkeSwK KwkJCQkJCQkJYm9vbCBpc3Zpc2libGUpOwogc3RhdGljIHZvaWQgaW5kZXhfdXBkYXRlX3N0YXRz KFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkgICBib29sIGhhc2luZGV4LAogCQkJCQkJCSAgIGRvdWJs ZSByZWx0dXBsZXMpOwpAQCAtNTcwLDcgKzU3MSw4IEBAIFVwZGF0ZUluZGV4UmVsYXRpb24oT2lk IGluZGV4b2lkLAogCQkJCQlib29sIGlzZXhjbHVzaW9uLAogCQkJCQlib29sIGltbWVkaWF0ZSwK IAkJCQkJYm9vbCBpc3ZhbGlkLAotCQkJCQlib29sIGlzcmVhZHkpCisJCQkJCWJvb2wgaXNyZWFk eSwKKwkJCQkJYm9vbCBpc3Zpc2libGUpCiB7CiAJaW50MnZlY3RvciAqaW5ka2V5OwogCW9pZHZl Y3RvciAgKmluZGNvbGxhdGlvbjsKQEAgLTY0OCw2ICs2NTAsNyBAQCBVcGRhdGVJbmRleFJlbGF0 aW9uKE9pZCBpbmRleG9pZCwKIAl2YWx1ZXNbQW51bV9wZ19pbmRleF9pbmRpc3JlYWR5IC0gMV0g PSBCb29sR2V0RGF0dW0oaXNyZWFkeSk7CiAJdmFsdWVzW0FudW1fcGdfaW5kZXhfaW5kaXNsaXZl IC0gMV0gPSBCb29sR2V0RGF0dW0odHJ1ZSk7CiAJdmFsdWVzW0FudW1fcGdfaW5kZXhfaW5kaXNy ZXBsaWRlbnQgLSAxXSA9IEJvb2xHZXREYXR1bShmYWxzZSk7CisJdmFsdWVzW0FudW1fcGdfaW5k ZXhfaW5kaXN2aXNpYmxlIC0gMV0gPSBCb29sR2V0RGF0dW0oaXN2aXNpYmxlKTsKIAl2YWx1ZXNb QW51bV9wZ19pbmRleF9pbmRrZXkgLSAxXSA9IFBvaW50ZXJHZXREYXR1bShpbmRrZXkpOwogCXZh bHVlc1tBbnVtX3BnX2luZGV4X2luZGNvbGxhdGlvbiAtIDFdID0gUG9pbnRlckdldERhdHVtKGlu ZGNvbGxhdGlvbik7CiAJdmFsdWVzW0FudW1fcGdfaW5kZXhfaW5kY2xhc3MgLSAxXSA9IFBvaW50 ZXJHZXREYXR1bShpbmRjbGFzcyk7CkBAIC03MTMsNiArNzE2LDggQEAgVXBkYXRlSW5kZXhSZWxh dGlvbihPaWQgaW5kZXhvaWQsCiAgKgkJCWFscmVhZHkgZXhpc3RzLgogICoJCUlOREVYX0NSRUFU RV9QQVJUSVRJT05FRDoKICAqCQkJY3JlYXRlIGEgcGFydGl0aW9uZWQgaW5kZXggKHRhYmxlIG11 c3QgYmUgcGFydGl0aW9uZWQpCisgKgkJSU5ERVhfQ1JFQVRFX1ZJU0lCTEU6CisgKgkJCWNyZWF0 ZSB0aGUgaW5kZXggYXMgdmlzaWJsZSB0byBxdWVyeSBwbGFubmVyCiAgKiBjb25zdHJfZmxhZ3M6 IGZsYWdzIHBhc3NlZCB0byBpbmRleF9jb25zdHJhaW50X2NyZWF0ZQogICoJCShvbmx5IGlmIElO REVYX0NSRUFURV9BRERfQ09OU1RSQUlOVCBpcyBzZXQpCiAgKiBhbGxvd19zeXN0ZW1fdGFibGVf bW9kczogYWxsb3cgdGFibGUgdG8gYmUgYSBzeXN0ZW0gY2F0YWxvZwpAQCAtNzU4LDYgKzc2Myw3 IEBAIGluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJYm9vbAkJaW52YWxpZCA9 IChmbGFncyAmIElOREVYX0NSRUFURV9JTlZBTElEKSAhPSAwOwogCWJvb2wJCWNvbmN1cnJlbnQg PSAoZmxhZ3MgJiBJTkRFWF9DUkVBVEVfQ09OQ1VSUkVOVCkgIT0gMDsKIAlib29sCQlwYXJ0aXRp b25lZCA9IChmbGFncyAmIElOREVYX0NSRUFURV9QQVJUSVRJT05FRCkgIT0gMDsKKwlib29sIAkJ aXN2aXNpYmxlICA9IChmbGFncyAmIElOREVYX0NSRUFURV9WSVNJQkxFKSAhPSAwOwogCWNoYXIJ CXJlbGtpbmQ7CiAJVHJhbnNhY3Rpb25JZCByZWxmcm96ZW54aWQ7CiAJTXVsdGlYYWN0SWQgcmVs bWlubXhpZDsKQEAgLTEwNDEsMTMgKzEwNDcsMTUgQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkgKgkgIChPciwgY291bGQgZGVmaW5lIGEgcnVsZSB0byBtYWludGFpbiB0 aGUgcHJlZGljYXRlKSAtLU5lbHMsIEZlYiAnOTIKIAkgKiAtLS0tLS0tLS0tLS0tLS0tCiAJICov CisKIAlVcGRhdGVJbmRleFJlbGF0aW9uKGluZGV4UmVsYXRpb25JZCwgaGVhcFJlbGF0aW9uSWQs IHBhcmVudEluZGV4UmVsaWQsCiAJCQkJCQlpbmRleEluZm8sCiAJCQkJCQljb2xsYXRpb25JZHMs IG9wY2xhc3NJZHMsIGNvbG9wdGlvbnMsCiAJCQkJCQlpc3ByaW1hcnksIGlzX2V4Y2x1c2lvbiwK IAkJCQkJCShjb25zdHJfZmxhZ3MgJiBJTkRFWF9DT05TVFJfQ1JFQVRFX0RFRkVSUkFCTEUpID09 IDAsCiAJCQkJCQkhY29uY3VycmVudCAmJiAhaW52YWxpZCwKLQkJCQkJCSFjb25jdXJyZW50KTsK KwkJCQkJCSFjb25jdXJyZW50LAorCQkJCQkJaXN2aXNpYmxlKTsKIAogCS8qCiAJICogUmVnaXN0 ZXIgcmVsY2FjaGUgaW52YWxpZGF0aW9uIG9uIHRoZSBpbmRleGVzJyBoZWFwIHJlbGF0aW9uLCB0 bwpAQCAtMTMxNiw2ICsxMzI0LDggQEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCiAJTGlzdAkgICAqaW5kZXhDb2xO YW1lcyA9IE5JTDsKIAlMaXN0CSAgICppbmRleEV4cHJzID0gTklMOwogCUxpc3QJICAgKmluZGV4 UHJlZHMgPSBOSUw7CisJRm9ybV9wZ19pbmRleCBpbmRleEZvcm07CisJYml0czE2IAkgY3JlYXRl RmxhZ3M7CiAKIAlpbmRleFJlbGF0aW9uID0gaW5kZXhfb3BlbihvbGRJbmRleElkLCBSb3dFeGNs dXNpdmVMb2NrKTsKIApAQCAtMTM0Myw2ICsxMzUzLDkgQEAgaW5kZXhfY29uY3VycmVudGx5X2Ny ZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCiAJCQkJCQkJ CQkJCUFudW1fcGdfaW5kZXhfaW5kb3B0aW9uKTsKIAlpbmRjb2xvcHRpb25zID0gKGludDJ2ZWN0 b3IgKikgRGF0dW1HZXRQb2ludGVyKGNvbE9wdGlvbkRhdHVtKTsKIAorCS8qIEdldCB0aGUgdmlz aWJpbGl0eSBzdGF0ZSBvZiB0aGUgb3JpZ2luYWwgaW5kZXggKi8KKwlpbmRleEZvcm0gPSAoRm9y bV9wZ19pbmRleCkgR0VUU1RSVUNUKGluZGV4VHVwbGUpOworCiAJLyogRmV0Y2ggcmVsb3B0aW9u cyBvZiBpbmRleCBpZiBhbnkgKi8KIAljbGFzc1R1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFJFTE9J RCwgT2JqZWN0SWRHZXREYXR1bShvbGRJbmRleElkKSk7CiAJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KGNsYXNzVHVwbGUpKQpAQCAtMTQzNCw2ICsxNDQ3LDE2IEBAIGluZGV4X2NvbmN1cnJlbnRseV9j cmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9pZCBvbGRJbmRleElkLAogCQlzdGF0 dGFyZ2V0c1tpXS5pc251bGwgPSBpc251bGw7CiAJfQogCisJLyoKKwkqIERldGVybWluZSB0aGUg Y3JlYXRlIGZsYWdzIGZvciB0aGUgbmV3IGluZGV4LgorCSogV2UgYWx3YXlzIHVzZSBTS0lQX0JV SUxEIGFuZCBDT05DVVJSRU5UIGZvciBjb25jdXJyZW50IHJlaW5kZXhpbmcuCisJKiBJZiB0aGUg b3JpZ2luYWwgaW5kZXggd2FzIHZpc2libGUsIHdlIGFsc28gc2V0IHRoZSBWSVNJQkxFIGZsYWcK KwkqIHRvIG1haW50YWluIHRoZSBzYW1lIHN0YXRlIGluIHRoZSBuZXcgaW5kZXguCisJKi8KKwlj cmVhdGVGbGFncyA9IElOREVYX0NSRUFURV9TS0lQX0JVSUxEIHwgSU5ERVhfQ1JFQVRFX0NPTkNV UlJFTlQ7CisJaWYgKGluZGV4Rm9ybS0+aW5kaXN2aXNpYmxlKQorCQkJY3JlYXRlRmxhZ3MgfD0g SU5ERVhfQ1JFQVRFX1ZJU0lCTEU7CisKIAkvKgogCSAqIE5vdyBjcmVhdGUgdGhlIG5ldyBpbmRl eC4KIAkgKgpAQCAtMTQ1Nyw3ICsxNDgwLDcgQEAgaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9j b3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCiAJCQkJCQkJICBpbmRj b2xvcHRpb25zLT52YWx1ZXMsCiAJCQkJCQkJICBzdGF0dGFyZ2V0cywKIAkJCQkJCQkgIHJlbG9w dGlvbnNEYXR1bSwKLQkJCQkJCQkgIElOREVYX0NSRUFURV9TS0lQX0JVSUxEIHwgSU5ERVhfQ1JF QVRFX0NPTkNVUlJFTlQsCisJCQkJCQkJICBjcmVhdGVGbGFncywKIAkJCQkJCQkgIDAsCiAJCQkJ CQkJICB0cnVlLCAvKiBhbGxvdyB0YWJsZSB0byBiZSBhIHN5c3RlbSBjYXRhbG9nPyAqLwogCQkJ CQkJCSAgZmFsc2UsCS8qIGlzX2ludGVybmFsPyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy90b2FzdGluZy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCmluZGV4 IDg3NGE4ZmM4OWEuLjc3MjFkMTZmZDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv dG9hc3RpbmcuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMKQEAgLTMyNSw3 ICszMjUsNyBAQCBjcmVhdGVfdG9hc3RfdGFibGUoUmVsYXRpb24gcmVsLCBPaWQgdG9hc3RPaWQs IE9pZCB0b2FzdEluZGV4T2lkLAogCQkJCSBCVFJFRV9BTV9PSUQsCiAJCQkJIHJlbC0+cmRfcmVs LT5yZWx0YWJsZXNwYWNlLAogCQkJCSBjb2xsYXRpb25JZHMsIG9wY2xhc3NJZHMsIE5VTEwsIGNv bG9wdGlvbnMsIE5VTEwsIChEYXR1bSkgMCwKLQkJCQkgSU5ERVhfQ1JFQVRFX0lTX1BSSU1BUlks IDAsIHRydWUsIHRydWUsIE5VTEwpOworCQkJCSBJTkRFWF9DUkVBVEVfSVNfUFJJTUFSWSB8IElO REVYX0NSRUFURV9WSVNJQkxFLCAwLCB0cnVlLCB0cnVlLCBOVUxMKTsKIAogCXRhYmxlX2Nsb3Nl KHRvYXN0X3JlbCwgTm9Mb2NrKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv aW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCA1OWM4 MzZmYzI0Li45ZTg2ZWE0MTNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRl eGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMTE5OCw2 ICsxMTk4LDEwIEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQlmbGFncyB8PSBJTkRFWF9D UkVBVEVfUEFSVElUSU9ORUQ7CiAJaWYgKHN0bXQtPnByaW1hcnkpCiAJCWZsYWdzIHw9IElOREVY X0NSRUFURV9JU19QUklNQVJZOworICAgaWYgKHN0bXQtPmlzdmlzaWJsZSkKKwkJZmxhZ3MgfD0g SU5ERVhfQ1JFQVRFX1ZJU0lCTEU7CisgICBlbHNlCisJCWZsYWdzICY9IH5JTkRFWF9DUkVBVEVf VklTSUJMRTsKIAogCS8qCiAJICogSWYgdGhlIHRhYmxlIGlzIHBhcnRpdGlvbmVkLCBhbmQgcmVj dXJzaW9uIHdhcyBkZWNsaW5lZCBidXQgcGFydGl0aW9ucwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YwppbmRleCBkNjE3YzRiYzYzLi5iOTc1ZTgzYTEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YwpAQCAtNzAwLDcgKzcwMCw3IEBAIHN0YXRpYyBMaXN0ICpHZXRQYXJlbnRlZEZvcmVpZ25LZXlS ZWZzKFJlbGF0aW9uIHBhcnRpdGlvbik7CiBzdGF0aWMgdm9pZCBBVERldGFjaENoZWNrTm9Gb3Jl aWduS2V5UmVmcyhSZWxhdGlvbiBwYXJ0aXRpb24pOwogc3RhdGljIGNoYXIgR2V0QXR0cmlidXRl Q29tcHJlc3Npb24oT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpjb21wcmVzc2lvbik7CiBzdGF0 aWMgY2hhciBHZXRBdHRyaWJ1dGVTdG9yYWdlKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqc3Rv cmFnZW1vZGUpOwotCitzdGF0aWMgdm9pZCBBVEV4ZWNTZXRJbmRleFZpc2liaWxpdHkoUmVsYXRp b24gcmVsLCBib29sIHZpc2libGUpOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRGVmaW5lUmVsYXRpb24K QEAgLTQ3ODksNiArNDc4OSwxMSBAQCBBbHRlclRhYmxlR2V0TG9ja0xldmVsKExpc3QgKmNtZHMp CiAJCQkJY21kX2xvY2ttb2RlID0gU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrOwogCQkJCWJyZWFr OwogCisJCQljYXNlIEFUX1NldEluZGV4VmlzaWJsZToKKwkJCWNhc2UgQVRfU2V0SW5kZXhJbnZp c2libGU6CisJCQkJY21kX2xvY2ttb2RlID0gU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrOworCQkJ CWJyZWFrOworCiAJCQlkZWZhdWx0OgkJCS8qIG9vcHMgKi8KIAkJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIGFsdGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkJIChpbnQpIGNtZC0+c3VidHlw ZSk7CkBAIC01MjIyLDYgKzUyMjcsMTMgQEAgQVRQcmVwQ21kKExpc3QgKip3cXVldWUsIFJlbGF0 aW9uIHJlbCwgQWx0ZXJUYWJsZUNtZCAqY21kLAogCQkJLyogTm8gY29tbWFuZC1zcGVjaWZpYyBw cmVwIG5lZWRlZCAqLwogCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKIAkJCWJyZWFrOworCQljYXNl IEFUX1NldEluZGV4VmlzaWJsZToKKwkJY2FzZSBBVF9TZXRJbmRleEludmlzaWJsZToKKwkJCUFU U2ltcGxlUGVybWlzc2lvbnMoY21kLT5zdWJ0eXBlLCByZWwsIEFUVF9JTkRFWCB8IEFUVF9QQVJU SVRJT05FRF9JTkRFWCk7CisJCQlBVFNpbXBsZVJlY3Vyc2lvbih3cXVldWUsIHJlbCwgY21kLCB0 cnVlLCBsb2NrbW9kZSwgY29udGV4dCk7CisJCQkvKiBObyBjb21tYW5kLXNwZWNpZmljIHByZXAg bmVlZGVkICovCisJCQlwYXNzID0gQVRfUEFTU19NSVNDOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6 CQkJCS8qIG9vcHMgKi8KIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUg dHlwZTogJWQiLAogCQkJCSAoaW50KSBjbWQtPnN1YnR5cGUpOwpAQCAtNTYxNiw2ICs1NjI4LDEy IEBAIEFURXhlY0NtZChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsCiAJCWNh c2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6CiAJCQlhZGRyZXNzID0gQVRFeGVjRGV0YWNo UGFydGl0aW9uRmluYWxpemUocmVsLCAoKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZiktPm5hbWUp OwogCQkJYnJlYWs7CisJCWNhc2UgQVRfU2V0SW5kZXhWaXNpYmxlOgorCQkJCUFURXhlY1NldElu ZGV4VmlzaWJpbGl0eShyZWwsIHRydWUpOworCQkJCWJyZWFrOworCQljYXNlIEFUX1NldEluZGV4 SW52aXNpYmxlOgorCQkJCUFURXhlY1NldEluZGV4VmlzaWJpbGl0eShyZWwsIGZhbHNlKTsKKwkJ CQlicmVhazsKIAkJZGVmYXVsdDoJCQkJLyogb29wcyAqLwogCQkJZWxvZyhFUlJPUiwgInVucmVj b2duaXplZCBhbHRlciB0YWJsZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIGNtZC0+c3VidHlwZSk7 CkBAIC02NTEwLDYgKzY1MjgsOCBAQCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmluZyhBbHRlclRh YmxlVHlwZSBjbWR0eXBlKQogCQkJcmV0dXJuICJEUk9QIENPTFVNTiI7CiAJCWNhc2UgQVRfQWRk SW5kZXg6CiAJCWNhc2UgQVRfUmVBZGRJbmRleDoKKwkJY2FzZSBBVF9TZXRJbmRleFZpc2libGU6 CisJCWNhc2UgQVRfU2V0SW5kZXhJbnZpc2libGU6CiAJCQlyZXR1cm4gTlVMTDsJCS8qIG5vdCBy ZWFsIGdyYW1tYXIgKi8KIAkJY2FzZSBBVF9BZGRDb25zdHJhaW50OgogCQljYXNlIEFUX1JlQWRk Q29uc3RyYWludDoKQEAgLTIxMDUwLDMgKzIxMDcwLDQ3IEBAIEdldEF0dHJpYnV0ZVN0b3JhZ2Uo T2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpzdG9yYWdlbW9kZSkKIAogCXJldHVybiBjc3RvcmFn ZTsKIH0KKworLyoKKyAqIEFURXhlY1NldEluZGV4VmlzaWJpbGl0eQorICogUGVyZm9ybXMgYSBj YXRhbG9nIHVwZGF0ZSB0byBtYXJrIGFuIGluZGV4IGFzIHZpc2libGUgb3IgaW52aXNpYmxlIGlu IHBnX2luZGV4LgorICovCitzdGF0aWMgdm9pZAorQVRFeGVjU2V0SW5kZXhWaXNpYmlsaXR5KFJl bGF0aW9uIHJlbCwgYm9vbCB2aXNpYmxlKQoreworCU9pZAkJCWluZGV4T2lkID0gUmVsYXRpb25H ZXRSZWxpZChyZWwpOworCU9pZAkJCWhlYXBPaWQ7CisJUmVsYXRpb24JcGdfaW5kZXg7CisJUmVs YXRpb24JaGVhcFJlbDsKKwlIZWFwVHVwbGUJaW5kZXhUdXBsZTsKKwlGb3JtX3BnX2luZGV4CWlu ZGV4Rm9ybTsKKworCWhlYXBPaWQgPSBJbmRleEdldFJlbGF0aW9uKGluZGV4T2lkLCBmYWxzZSk7 CisJaGVhcFJlbCA9IHRhYmxlX29wZW4oaGVhcE9pZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlwZ19p bmRleCA9IHRhYmxlX29wZW4oSW5kZXhSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwor CWluZGV4VHVwbGUgPSBTZWFyY2hTeXNDYWNoZUNvcHkxKElOREVYUkVMSUQsIE9iamVjdElkR2V0 RGF0dW0oaW5kZXhPaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoaW5kZXhUdXBsZSkpCisJ CWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBpbmRleCAldSIsIGluZGV4T2lk KTsKKworCWluZGV4Rm9ybSA9IChGb3JtX3BnX2luZGV4KSBHRVRTVFJVQ1QoaW5kZXhUdXBsZSk7 CisJaWYgKGluZGV4Rm9ybS0+aW5kY2hlY2t4bWluKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCWVy cm1zZygiY2Fubm90IHVwZGF0ZSBpbmRleCB2aXNpYmlsaXR5IHdoaWxlIGluZGNoZWNreG1pbiBp cyB0cnVlIiksCisJCQkJZXJyaGludCgiV2FpdCBmb3IgYWxsIHRyYW5zYWN0aW9ucyB0aGF0IG1p Z2h0IHNlZSBpbmNvbnNpc3RlbnQgSE9UIGNoYWlucyB0byBjb21wbGV0ZSIpKSk7CisKKwlpZiAo aW5kZXhGb3JtLT5pbmRpc3Zpc2libGUgIT0gdmlzaWJsZSkKKwl7CisJCWluZGV4Rm9ybS0+aW5k aXN2aXNpYmxlID0gdmlzaWJsZTsKKwkJQ2F0YWxvZ1R1cGxlVXBkYXRlKHBnX2luZGV4LCAmaW5k ZXhUdXBsZS0+dF9zZWxmLCBpbmRleFR1cGxlKTsKKworCQlDYWNoZUludmFsaWRhdGVSZWxjYWNo ZShoZWFwUmVsKTsKKwkJSW52b2tlT2JqZWN0UG9zdEFsdGVySG9vayhJbmRleFJlbGF0aW9uSWQs IGluZGV4T2lkLCAwKTsKKwkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwl9CisKKwloZWFw X2ZyZWV0dXBsZShpbmRleFR1cGxlKTsKKwl0YWJsZV9jbG9zZShwZ19pbmRleCwgUm93RXhjbHVz aXZlTG9jayk7CisJdGFibGVfY2xvc2UoaGVhcFJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKK30KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYwppbmRleCA3MWFiYjAxZjY1Li4wYjA2ODJiNTA1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKKysrIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCkBAIC00Nyw3ICs0Nyw5IEBACiAj aW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAj aW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIK ICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9wbGFuY2FjaGUu aCIKICNpbmNsdWRlICJ1dGlscy9wYXJ0Y2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIK ICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCkBAIC01NSw2ICs1Nyw3IEBACiAKIC8qIEdVQyBw YXJhbWV0ZXIgKi8KIGludAkJCWNvbnN0cmFpbnRfZXhjbHVzaW9uID0gQ09OU1RSQUlOVF9FWENM VVNJT05fUEFSVElUSU9OOworYm9vbAkJdXNlX2ludmlzaWJsZV9pbmRleCA9IGZhbHNlOwogCiAv KiBIb29rIGZvciBwbHVnaW5zIHRvIGdldCBjb250cm9sIGluIGdldF9yZWxhdGlvbl9pbmZvKCkg Ki8KIGdldF9yZWxhdGlvbl9pbmZvX2hvb2tfdHlwZSBnZXRfcmVsYXRpb25faW5mb19ob29rID0g TlVMTDsKQEAgLTI1NCwxMyArMjU3LDEyIEBAIGdldF9yZWxhdGlvbl9pbmZvKFBsYW5uZXJJbmZv ICpyb290LCBPaWQgcmVsYXRpb25PYmplY3RJZCwgYm9vbCBpbmhwYXJlbnQsCiAJCQlpbmRleCA9 IGluZGV4UmVsYXRpb24tPnJkX2luZGV4OwogCiAJCQkvKgotCQkJICogSWdub3JlIGludmFsaWQg aW5kZXhlcywgc2luY2UgdGhleSBjYW4ndCBzYWZlbHkgYmUgdXNlZCBmb3IKLQkJCSAqIHF1ZXJp ZXMuICBOb3RlIHRoYXQgdGhpcyBpcyBPSyBiZWNhdXNlIHRoZSBkYXRhIHN0cnVjdHVyZSB3ZQot CQkJICogYXJlIGNvbnN0cnVjdGluZyBpcyBvbmx5IHVzZWQgYnkgdGhlIHBsYW5uZXIgLS0tIHRo ZSBleGVjdXRvcgotCQkJICogc3RpbGwgbmVlZHMgdG8gaW5zZXJ0IGludG8gImludmFsaWQiIGlu ZGV4ZXMsIGlmIHRoZXkncmUgbWFya2VkCi0JCQkgKiBpbmRpc3JlYWR5LgotCQkJICovCi0JCQlp ZiAoIWluZGV4LT5pbmRpc3ZhbGlkKQorCQkJICogU2tpcCBpbnZhbGlkIGluZGV4ZXMsIGFuZCBp bnZpc2libGUgaW5kZXhlcyB1bmxlc3MgdXNlX2ludmlzaWJsZV9pbmRleAorCQkJICogaXMgc2V0 LiBUaGlzIGlzIE9LIGJlY2F1c2UgdGhlIGRhdGEgc3RydWN0dXJlIHdlIGFyZSBjb25zdHJ1Y3Rp bmcgaXMKKwkJCSAqIG9ubHkgdXNlZCBieSB0aGUgcGxhbm5lciAtIHRoZSBleGVjdXRvciBzdGls bCBuZWVkcyB0byBpbnNlcnQgaW50bworCQkJICogdGhlc2UgaW5kZXhlcyBpZiB0aGV5J3JlIG1h cmtlZCBpbmRpc3JlYWR5LgorCQkJKi8KKwkJCWlmICghaW5kZXgtPmluZGlzdmFsaWQgfHwgKCFp bmRleC0+aW5kaXN2aXNpYmxlICYmICF1c2VfaW52aXNpYmxlX2luZGV4KSkKIAkJCXsKIAkJCQlp bmRleF9jbG9zZShpbmRleFJlbGF0aW9uLCBOb0xvY2spOwogCQkJCWNvbnRpbnVlOwpAQCAtMjYx MCwzICsyNjEyLDE4IEBAIHNldF9iYXNlcmVsX3BhcnRpdGlvbl9jb25zdHJhaW50KFJlbGF0aW9u IHJlbGF0aW9uLCBSZWxPcHRJbmZvICpyZWwpCiAJCXJlbC0+cGFydGl0aW9uX3F1YWwgPSBwYXJ0 Y29uc3RyOwogCX0KIH0KKworLyoKKyAqIGFzc2lnbl91c2VfaW52aXNpYmxlX2luZGV4CisgKiBH VUMgYXNzaWduX2hvb2sgZm9yICJ1c2VfaW52aXNpYmxlX2luZGV4IiBHVUMgdmFyaWFibGUuCisg KiBSZXNldHMgdGhlIHBsYW4gY2FjaGUgd2hlbiB0aGUgdmFsdWUgY2hhbmdlcy4KKyAqLwordm9p ZAorYXNzaWduX3VzZV9pbnZpc2libGVfaW5kZXgoYm9vbCBuZXd2YWwsIHZvaWQgKmV4dHJhKQor eworCWlmICh1c2VfaW52aXNpYmxlX2luZGV4ICE9IG5ld3ZhbCkKKwl7CisJCXVzZV9pbnZpc2li bGVfaW5kZXggPSBuZXd2YWw7CisJCVJlc2V0UGxhbkNhY2hlKCk7CisJfQorfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkK aW5kZXggZDdmOWMwMGM0MC4uNDc1ZWUyNjAzNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0zMjQsNyArMzI0 LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUs IExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxpdmFsPglhZGRfZHJvcCBvcHRf YXNjX2Rlc2Mgb3B0X251bGxzX29yZGVyCiAKICV0eXBlIDxub2RlPglhbHRlcl90YWJsZV9jbWQg YWx0ZXJfdHlwZV9jbWQgb3B0X2NvbGxhdGVfY2xhdXNlCi0JICAgcmVwbGljYV9pZGVudGl0eSBw YXJ0aXRpb25fY21kIGluZGV4X3BhcnRpdGlvbl9jbWQKKwkgICByZXBsaWNhX2lkZW50aXR5IHBh cnRpdGlvbl9jbWQgaW5kZXhfcGFydGl0aW9uX2NtZCBpbmRleF9hbHRlcl9jbWQKICV0eXBlIDxs aXN0PglhbHRlcl90YWJsZV9jbWRzIGFsdGVyX3R5cGVfY21kcwogJXR5cGUgPGxpc3Q+ICAgIGFs dGVyX2lkZW50aXR5X2NvbHVtbl9vcHRpb25fbGlzdAogJXR5cGUgPGRlZmVsdD4gIGFsdGVyX2lk ZW50aXR5X2NvbHVtbl9vcHRpb24KQEAgLTQ5MSw2ICs0OTEsNyBAQCBzdGF0aWMgTm9kZSAqbWFr ZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAq cXVlcnkpOwogJXR5cGUgPGJvb2xlYW4+IG9wdF91bmlxdWUgb3B0X3ZlcmJvc2Ugb3B0X2Z1bGwK ICV0eXBlIDxib29sZWFuPiBvcHRfZnJlZXplIG9wdF9hbmFseXplIG9wdF9kZWZhdWx0CiAldHlw ZSA8ZGVmZWx0PglvcHRfYmluYXJ5IGNvcHlfZGVsaW1pdGVyCisldHlwZSA8Ym9vbGVhbj4gIG9w dF9pbmRleF92aXNpYmlsaXR5CiAKICV0eXBlIDxib29sZWFuPiBjb3B5X2Zyb20gb3B0X3Byb2dy YW0KIApAQCAtNzMzLDcgKzczNCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1Nl bGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJSURFTlRJ VFlfUCBJRl9QIElMSUtFIElNTUVESUFURSBJTU1VVEFCTEUgSU1QTElDSVRfUCBJTVBPUlRfUCBJ Tl9QIElOQ0xVREUKIAlJTkNMVURJTkcgSU5DUkVNRU5UIElOREVOVCBJTkRFWCBJTkRFWEVTIElO SEVSSVQgSU5IRVJJVFMgSU5JVElBTExZIElOTElORV9QCiAJSU5ORVJfUCBJTk9VVCBJTlBVVF9Q IElOU0VOU0lUSVZFIElOU0VSVCBJTlNURUFEIElOVF9QIElOVEVHRVIKLQlJTlRFUlNFQ1QgSU5U RVJWQUwgSU5UTyBJTlZPS0VSIElTIElTTlVMTCBJU09MQVRJT04KKwlJTlRFUlNFQ1QgSU5URVJW QUwgSU5UTyBJTlZJU0lCTEVfUCBJTlZPS0VSIElTIElTTlVMTCBJU09MQVRJT04KIAogCUpPSU4g SlNPTiBKU09OX0FSUkFZIEpTT05fQVJSQVlBR0cgSlNPTl9FWElTVFMgSlNPTl9PQkpFQ1QgSlNP Tl9PQkpFQ1RBR0cKIAlKU09OX1FVRVJZIEpTT05fU0NBTEFSIEpTT05fU0VSSUFMSVpFIEpTT05f VEFCTEUgSlNPTl9WQUxVRQpAQCAtNzg0LDcgKzc4NSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVj dXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVy eSk7CiAJVU5MSVNURU4gVU5MT0dHRUQgVU5USUwgVVBEQVRFIFVTRVIgVVNJTkcKIAogCVZBQ1VV TSBWQUxJRCBWQUxJREFURSBWQUxJREFUT1IgVkFMVUVfUCBWQUxVRVMgVkFSQ0hBUiBWQVJJQURJ QyBWQVJZSU5HCi0JVkVSQk9TRSBWRVJTSU9OX1AgVklFVyBWSUVXUyBWT0xBVElMRQorCVZFUkJP U0UgVkVSU0lPTl9QIFZJRVcgVklFV1MgVklTSUJMRV9QIFZPTEFUSUxFCiAKIAlXSEVOIFdIRVJF IFdISVRFU1BBQ0VfUCBXSU5ET1cgV0lUSCBXSVRISU4gV0lUSE9VVCBXT1JLIFdSQVBQRVIgV1JJ VEUKIApAQCAtMjE1Nyw2ICsyMTU4LDI0IEBAIEFsdGVyVGFibGVTdG10OgogCQkJCQluLT5ub3dh aXQgPSAkMTM7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCXwgQUxURVIgSU5ERVgg cXVhbGlmaWVkX25hbWUgaW5kZXhfYWx0ZXJfY21kCisJCQkJeworCQkJCQlBbHRlclRhYmxlU3Rt dCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFibGVTdG10KTsKKwkJCQkJbi0+cmVsYXRpb24gPSAkMzsK KwkJCQkJbi0+Y21kcyA9IGxpc3RfbWFrZTEoJDQpOworCQkJCQluLT5vYmp0eXBlID0gT0JKRUNU X0lOREVYOworCQkJCQluLT5taXNzaW5nX29rID0gZmFsc2U7CisJCQkJCSQkID0gKE5vZGUgKikg bjsKKwkJCQl9CisJCXwgQUxURVIgSU5ERVggSUZfUCBFWElTVFMgcXVhbGlmaWVkX25hbWUgaW5k ZXhfYWx0ZXJfY21kCisJCQkJeworCQkJCQlBbHRlclRhYmxlU3RtdCAqbiA9IG1ha2VOb2RlKEFs dGVyVGFibGVTdG10KTsKKwkJCQkJbi0+cmVsYXRpb24gPSAkNTsKKwkJCQkJbi0+Y21kcyA9IGxp c3RfbWFrZTEoJDYpOworCQkJCQluLT5vYmp0eXBlID0gT0JKRUNUX0lOREVYOworCQkJCQluLT5t aXNzaW5nX29rID0gdHJ1ZTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KIAkJfAlBTFRF UiBJTkRFWCBxdWFsaWZpZWRfbmFtZSBhbHRlcl90YWJsZV9jbWRzCiAJCQkJewogCQkJCQlBbHRl clRhYmxlU3RtdCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFibGVTdG10KTsKQEAgLTIzODIsNiArMjQw MSwyMSBAQCBpbmRleF9wYXJ0aXRpb25fY21kOgogCQkJCX0KIAkJOwogCitpbmRleF9hbHRlcl9j bWQ6CisJCS8qIEFMVEVSIElOREVYIDxuYW1lPiBWSVNJQkxFfElOVklTSUJMRSAqLworCQlWSVNJ QkxFX1AKKwkJCXsKKwkJCQlBbHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNt ZCk7CisJCQkJbi0+c3VidHlwZSA9IEFUX1NldEluZGV4VmlzaWJsZTsKKwkJCQkkJCA9IChOb2Rl ICopIG47CisJCQl9CisJCXwgSU5WSVNJQkxFX1AKKwkJCXsKKwkJCQlBbHRlclRhYmxlQ21kICpu ID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJCQkJbi0+c3VidHlwZSA9IEFUX1NldEluZGV4 SW52aXNpYmxlOworCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCX0KKwkJOwogYWx0ZXJfdGFibGVf Y21kOgogCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IEFERCA8Y29sZGVmPiAqLwogCQkJQUREX1Ag Y29sdW1uRGVmCkBAIC04MTYwLDcgKzgxOTQsNyBAQCBkZWZhY2xfcHJpdmlsZWdlX3RhcmdldDoK IAogSW5kZXhTdG10OglDUkVBVEUgb3B0X3VuaXF1ZSBJTkRFWCBvcHRfY29uY3VycmVudGx5IG9w dF9zaW5nbGVfbmFtZQogCQkJT04gcmVsYXRpb25fZXhwciBhY2Nlc3NfbWV0aG9kX2NsYXVzZSAn KCcgaW5kZXhfcGFyYW1zICcpJwotCQkJb3B0X2luY2x1ZGUgb3B0X3VuaXF1ZV9udWxsX3RyZWF0 bWVudCBvcHRfcmVsb3B0aW9ucyBPcHRUYWJsZVNwYWNlIHdoZXJlX2NsYXVzZQorCQkJb3B0X2lu Y2x1ZGUgb3B0X3VuaXF1ZV9udWxsX3RyZWF0bWVudCBvcHRfcmVsb3B0aW9ucyBPcHRUYWJsZVNw YWNlIHdoZXJlX2NsYXVzZSBvcHRfaW5kZXhfdmlzaWJpbGl0eQogCQkJCXsKIAkJCQkJSW5kZXhT dG10ICpuID0gbWFrZU5vZGUoSW5kZXhTdG10KTsKIApAQCAtODE3NSw2ICs4MjA5LDcgQEAgSW5k ZXhTdG10OglDUkVBVEUgb3B0X3VuaXF1ZSBJTkRFWCBvcHRfY29uY3VycmVudGx5IG9wdF9zaW5n bGVfbmFtZQogCQkJCQluLT5vcHRpb25zID0gJDE0OwogCQkJCQluLT50YWJsZVNwYWNlID0gJDE1 OwogCQkJCQluLT53aGVyZUNsYXVzZSA9ICQxNjsKKwkJCQkJbi0+aXN2aXNpYmxlID0gJDE3Owog CQkJCQluLT5leGNsdWRlT3BOYW1lcyA9IE5JTDsKIAkJCQkJbi0+aWR4Y29tbWVudCA9IE5VTEw7 CiAJCQkJCW4tPmluZGV4T2lkID0gSW52YWxpZE9pZDsKQEAgLTgxOTIsNyArODIyNyw3IEBAIElu ZGV4U3RtdDoJQ1JFQVRFIG9wdF91bmlxdWUgSU5ERVggb3B0X2NvbmN1cnJlbnRseSBvcHRfc2lu Z2xlX25hbWUKIAkJCQl9CiAJCQl8IENSRUFURSBvcHRfdW5pcXVlIElOREVYIG9wdF9jb25jdXJy ZW50bHkgSUZfUCBOT1QgRVhJU1RTIG5hbWUKIAkJCU9OIHJlbGF0aW9uX2V4cHIgYWNjZXNzX21l dGhvZF9jbGF1c2UgJygnIGluZGV4X3BhcmFtcyAnKScKLQkJCW9wdF9pbmNsdWRlIG9wdF91bmlx dWVfbnVsbF90cmVhdG1lbnQgb3B0X3JlbG9wdGlvbnMgT3B0VGFibGVTcGFjZSB3aGVyZV9jbGF1 c2UKKwkJCW9wdF9pbmNsdWRlIG9wdF91bmlxdWVfbnVsbF90cmVhdG1lbnQgb3B0X3JlbG9wdGlv bnMgT3B0VGFibGVTcGFjZSB3aGVyZV9jbGF1c2Ugb3B0X2luZGV4X3Zpc2liaWxpdHkKIAkJCQl7 CiAJCQkJCUluZGV4U3RtdCAqbiA9IG1ha2VOb2RlKEluZGV4U3RtdCk7CiAKQEAgLTgyMDcsNiAr ODI0Miw3IEBAIEluZGV4U3RtdDoJQ1JFQVRFIG9wdF91bmlxdWUgSU5ERVggb3B0X2NvbmN1cnJl bnRseSBvcHRfc2luZ2xlX25hbWUKIAkJCQkJbi0+b3B0aW9ucyA9ICQxNzsKIAkJCQkJbi0+dGFi bGVTcGFjZSA9ICQxODsKIAkJCQkJbi0+d2hlcmVDbGF1c2UgPSAkMTk7CisJCQkJCW4tPmlzdmlz aWJsZSA9ICQyMDsKIAkJCQkJbi0+ZXhjbHVkZU9wTmFtZXMgPSBOSUw7CiAJCQkJCW4tPmlkeGNv bW1lbnQgPSBOVUxMOwogCQkJCQluLT5pbmRleE9pZCA9IEludmFsaWRPaWQ7CkBAIC04MjI5LDYg KzgyNjUsMTIgQEAgb3B0X3VuaXF1ZToKIAkJCXwgLypFTVBUWSovCQkJCQkJCQl7ICQkID0gZmFs c2U7IH0KIAkJOwogCitvcHRfaW5kZXhfdmlzaWJpbGl0eToKKwkJCVZJU0lCTEVfUCAgICAgICAg ICAgICAgICAgICAgICB7ICQkID0gdHJ1ZTsgfQorCQkJfCBJTlZJU0lCTEVfUCAgICAgICAgICAg ICAgICAgICB7ICQkID0gZmFsc2U7IH0KKwkJCXwgLypFTVBUWSovICAgICAgICAgICAgICAgICAJ eyAkJCA9IHRydWU7IH0KKwkJOworCiBhY2Nlc3NfbWV0aG9kX2NsYXVzZToKIAkJCVVTSU5HIG5h bWUJCQkJCQkJCXsgJCQgPSAkMjsgfQogCQkJfCAvKkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBERUZB VUxUX0lOREVYX1RZUEU7IH0KQEAgLTE3ODA2LDYgKzE3ODQ4LDcgQEAgdW5yZXNlcnZlZF9rZXl3 b3JkOgogCQkJfCBJTlNFTlNJVElWRQogCQkJfCBJTlNFUlQKIAkJCXwgSU5TVEVBRAorCQkJfCBJ TlZJU0lCTEVfUAogCQkJfCBJTlZPS0VSCiAJCQl8IElTT0xBVElPTgogCQkJfCBLRUVQCkBAIC0x Nzk5MCw2ICsxODAzMyw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgVkVSU0lPTl9QCiAJ CQl8IFZJRVcKIAkJCXwgVklFV1MKKwkJCXwJVklTSUJMRV9QCiAJCQl8IFZPTEFUSUxFCiAJCQl8 IFdISVRFU1BBQ0VfUAogCQkJfCBXSVRISU4KQEAgLTE4Mzk5LDYgKzE4NDQzLDcgQEAgYmFyZV9s YWJlbF9rZXl3b3JkOgogCQkJfCBJTlRfUAogCQkJfCBJTlRFR0VSCiAJCQl8IElOVEVSVkFMCisJ CQl8IElOVklTSUJMRV9QCiAJCQl8IElOVk9LRVIKIAkJCXwgSVMKIAkJCXwgSVNPTEFUSU9OCkBA IC0xODY0NSw2ICsxODY5MCw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgVkVSU0lPTl9Q CiAJCQl8IFZJRVcKIAkJCXwgVklFV1MKKwkJCXwgVklTSUJMRV9QCiAJCQl8IFZPTEFUSUxFCiAJ CQl8IFdIRU4KIAkJCXwgV0hJVEVTUEFDRV9QCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpp bmRleCBjYTAyOGQyYTY2Li45Y2Q4YTY1YjUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21k LmMKQEAgLTE3NDMsNiArMTc0Myw3IEBAIGdlbmVyYXRlQ2xvbmVkSW5kZXhTdG10KFJhbmdlVmFy ICpoZWFwUmVsLCBSZWxhdGlvbiBzb3VyY2VfaWR4LAogCWluZGV4LT5jb25jdXJyZW50ID0gZmFs c2U7CiAJaW5kZXgtPmlmX25vdF9leGlzdHMgPSBmYWxzZTsKIAlpbmRleC0+cmVzZXRfZGVmYXVs dF90YmxzcGMgPSBmYWxzZTsKKwlpbmRleC0+aXN2aXNpYmxlID0gaWR4cmVjLT5pbmRpc3Zpc2li bGU7CiAKIAkvKgogCSAqIFdlIGRvbid0IHRyeSB0byBwcmVzZXJ2ZSB0aGUgbmFtZSBvZiB0aGUg c291cmNlIGluZGV4OyBpbnN0ZWFkLCBqdXN0CkBAIC0yMzY0LDYgKzIzNjUsOCBAQCB0cmFuc2Zv cm1JbmRleENvbnN0cmFpbnQoQ29uc3RyYWludCAqY29uc3RyYWludCwgQ3JlYXRlU3RtdENvbnRl eHQgKmN4dCkKIAlpbmRleC0+Y29uY3VycmVudCA9IGZhbHNlOwogCWluZGV4LT5pZl9ub3RfZXhp c3RzID0gZmFsc2U7CiAJaW5kZXgtPnJlc2V0X2RlZmF1bHRfdGJsc3BjID0gY29uc3RyYWludC0+ cmVzZXRfZGVmYXVsdF90YmxzcGM7CisJLyogRW5zdXJlIGluZGV4ZXMgZm9yIGNvbnN0cmFpbnRz IGFyZSBjcmVhdGVkIGFzIHZpc2libGUgYnkgZGVmYXVsdCAqLworCWluZGV4LT5pc3Zpc2libGUg PSB0cnVlOwogCiAJLyoKIAkgKiBJZiBpdCdzIEFMVEVSIFRBQkxFIEFERCBDT05TVFJBSU5UIFVT SU5HIElOREVYLCBsb29rIHVwIHRoZSBpbmRleCBhbmQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMu YwppbmRleCA1NGRhZDk3NTU1Li5hNDY3ODBkZTg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGls cy5jCkBAIC0xNTYyLDYgKzE1NjIsMTAgQEAgcGdfZ2V0X2luZGV4ZGVmX3dvcmtlcihPaWQgaW5k ZXhyZWxpZCwgaW50IGNvbG5vLAogCQkJZWxzZQogCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1Ziwg IiBXSEVSRSAlcyIsIHN0cik7CiAJCX0KKworCQkvKiBBZGQgSU5WSVNJQkxFIGNsYXVzZSBpZiB0 aGUgaW5kZXggaXMgaW52aXNpYmxlICovCisJCWlmICghaWR4cmVjLT5pbmRpc3Zpc2libGUpCisJ CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCAiIElOVklTSUJMRSIpOwogCX0KIAogCS8q IENsZWFuIHVwICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNo ZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCA0MzIxOWE5NjI5 Li44YzA4NDYyMmViIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNo ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTIzMTEsNiAr MjMxMSw3IEBAIFJlbGF0aW9uUmVsb2FkSW5kZXhJbmZvKFJlbGF0aW9uIHJlbGF0aW9uKQogCQly ZWxhdGlvbi0+cmRfaW5kZXgtPmluZGlzcmVhZHkgPSBpbmRleC0+aW5kaXNyZWFkeTsKIAkJcmVs YXRpb24tPnJkX2luZGV4LT5pbmRpc2xpdmUgPSBpbmRleC0+aW5kaXNsaXZlOwogCQlyZWxhdGlv bi0+cmRfaW5kZXgtPmluZGlzcmVwbGlkZW50ID0gaW5kZXgtPmluZGlzcmVwbGlkZW50OworCQly ZWxhdGlvbi0+cmRfaW5kZXgtPmluZGlzdmlzaWJsZSA9IGluZGV4LT5pbmRpc3Zpc2libGU7CiAK IAkJLyogQ29weSB4bWluIHRvbywgYXMgdGhhdCBpcyBuZWVkZWQgdG8gbWFrZSBzZW5zZSBvZiBp bmRjaGVja3htaW4gKi8KIAkJSGVhcFR1cGxlSGVhZGVyU2V0WG1pbihyZWxhdGlvbi0+cmRfaW5k ZXh0dXBsZS0+dF9kYXRhLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf dGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCAwYmRm YzgzOTA3Li45Njk5Y2VlYmVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1 Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAt MjA5Niw2ICsyMDk2LDE3IEBAIHN0cnVjdCBjb25maWdfYm9vbCBDb25maWd1cmVOYW1lc0Jvb2xb XSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAogCisJeworCQl7InVzZV9pbnZpc2libGVfaW5k ZXgiLCBQR0NfVVNFUlNFVCwgUVVFUllfVFVOSU5HX09USEVSLAorCQkJZ2V0dGV4dF9ub29wKCJG b3JjZXMgdGhlIHBsYW5uZXIgdG8gY29uc2lkZXIgaW52aXNpYmxlIGluZGV4ZXMuIiksCisJCQlO VUxMLAorCQkJR1VDX05PVF9JTl9TQU1QTEUgfCBHVUNfRVhQTEFJTgorCQl9LAorCQkmdXNlX2lu dmlzaWJsZV9pbmRleCwKKwkJZmFsc2UsCisJCU5VTEwsIGFzc2lnbl91c2VfaW52aXNpYmxlX2lu ZGV4LCBOVUxMCisJfSwKKwogCS8qIEVuZC1vZi1saXN0IG1hcmtlciAqLwogCXsKIAkJe05VTEws IDAsIDAsIE5VTEwsIE5VTEx9LCBOVUxMLCBmYWxzZSwgTlVMTCwgTlVMTCwgTlVMTApkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5pbi5jCmluZGV4IDgxY2JmMTBhYTIuLjQzZWE4ZTU1ZmQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmluLmMKQEAgLTIzOTMsNyArMjM5Myw4IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBw YXR0ZXJuX2lkLAogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIklOREVYIiwgTWF0Y2hBbnkp KQogCQlDT01QTEVURV9XSVRIKCJBTFRFUiBDT0xVTU4iLCAiT1dORVIgVE8iLCAiUkVOQU1FIFRP IiwgIlNFVCIsCiAJCQkJCSAgIlJFU0VUIiwgIkFUVEFDSCBQQVJUSVRJT04iLAotCQkJCQkgICJE RVBFTkRTIE9OIEVYVEVOU0lPTiIsICJOTyBERVBFTkRTIE9OIEVYVEVOU0lPTiIpOworCQkJCQkg ICJERVBFTkRTIE9OIEVYVEVOU0lPTiIsICJOTyBERVBFTkRTIE9OIEVYVEVOU0lPTiIsCisJCQkJ CSAgIklOVklTSUJMRSIsICJWSVNJQkxFIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAi SU5ERVgiLCBNYXRjaEFueSwgIkFUVEFDSCIpKQogCQlDT01QTEVURV9XSVRIKCJQQVJUSVRJT04i KTsKIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJJTkRFWCIsIE1hdGNoQW55LCAiQVRUQUNI IiwgIlBBUlRJVElPTiIpKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5o IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCmluZGV4IDRkYWE4YmVmNWUuLmZmMGY5OTE2 ZGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAorKysgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL2luZGV4LmgKQEAgLTY1LDYgKzY1LDcgQEAgZXh0ZXJuIHZvaWQgaW5kZXhf Y2hlY2tfcHJpbWFyeV9rZXkoUmVsYXRpb24gaGVhcFJlbCwKICNkZWZpbmUJSU5ERVhfQ1JFQVRF X0lGX05PVF9FWElTVFMJCQkoMSA8PCA0KQogI2RlZmluZQlJTkRFWF9DUkVBVEVfUEFSVElUSU9O RUQJCQkoMSA8PCA1KQogI2RlZmluZSBJTkRFWF9DUkVBVEVfSU5WQUxJRAkJCQkoMSA8PCA2KQor I2RlZmluZSBJTkRFWF9DUkVBVEVfVklTSUJMRSAgICAgICAgKDEgPDwgNykKIAogZXh0ZXJuIE9p ZAlpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJIGNvbnN0IGNoYXIg KmluZGV4UmVsYXRpb25OYW1lLApAQCAtMTc1LDcgKzE3Niw2IEBAIGV4dGVybiB2b2lkIFJlc3Rv cmVSZWluZGV4U3RhdGUoY29uc3Qgdm9pZCAqcmVpbmRleHN0YXRlKTsKIAogZXh0ZXJuIHZvaWQg SW5kZXhTZXRQYXJlbnRJbmRleChSZWxhdGlvbiBwYXJ0aXRpb25JZHgsIE9pZCBwYXJlbnRPaWQp OwogCi0KIC8qCiAgKiBpdGVtcHRyX2VuY29kZSAtIEVuY29kZSBJdGVtUG9pbnRlciBhcyBpbnQ2 NC9pbnQ4CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19pbmRleC5oIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19pbmRleC5oCmluZGV4IDQzOTJiOWQyMjEuLmNmMWJlYTlj ODEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5kZXguaAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgQ0FUQUxPRyhwZ19p bmRleCwyNjEwLEluZGV4UmVsYXRpb25JZCkgQktJX1NDSEVNQV9NQUNSTwogCWJvb2wJCWluZGlz cmVhZHk7CQkvKiBpcyB0aGlzIGluZGV4IHJlYWR5IGZvciBpbnNlcnRzPyAqLwogCWJvb2wJCWlu ZGlzbGl2ZTsJCS8qIGlzIHRoaXMgaW5kZXggYWxpdmUgYXQgYWxsPyAqLwogCWJvb2wJCWluZGlz cmVwbGlkZW50OyAvKiBpcyB0aGlzIGluZGV4IHRoZSBpZGVudGl0eSBmb3IgcmVwbGljYXRpb24/ ICovCisJYm9vbAkJaW5kaXN2aXNpYmxlIEJLSV9ERUZBVUxUKHQpOwkvKiBpcyB0aGlzIGluZGV4 IHZpc2libGUgZm9yIHVzZSBieSBxdWVyaWVzPyAqLwogCiAJLyogdmFyaWFibGUtbGVuZ3RoIGZp ZWxkcyBzdGFydCBoZXJlLCBidXQgd2UgYWxsb3cgZGlyZWN0IGFjY2VzcyB0byBpbmRrZXkgKi8K IAlpbnQydmVjdG9yCWluZGtleSBCS0lfRk9SQ0VfTk9UX05VTEw7CS8qIGNvbHVtbiBudW1iZXJz IG9mIGluZGV4ZWQgY29scywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBmZmUxNTVlZTIwLi5l OTU1M2QwZjI0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysr IGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0yNDY3LDYgKzI0NjcsOCBAQCB0 eXBlZGVmIGVudW0gQWx0ZXJUYWJsZVR5cGUKIAlBVF9TZXRJZGVudGl0eSwJCQkJLyogU0VUIGlk ZW50aXR5IGNvbHVtbiBvcHRpb25zICovCiAJQVRfRHJvcElkZW50aXR5LAkJCS8qIERST1AgSURF TlRJVFkgKi8KIAlBVF9SZUFkZFN0YXRpc3RpY3MsCQkJLyogaW50ZXJuYWwgdG8gY29tbWFuZHMv dGFibGVjbWRzLmMgKi8KKwlBVF9TZXRJbmRleFZpc2libGUsCQkJCQkvKiBTZXQgSU5ERVggdmlz aWJsZSAqLworCUFUX1NldEluZGV4SW52aXNpYmxlLAkJCQkvKiBTZXQgSU5ERVggaW52aXNpYmxl ICovCiB9IEFsdGVyVGFibGVUeXBlOwogCiB0eXBlZGVmIHN0cnVjdCBSZXBsaWNhSWRlbnRpdHlT dG10CkBAIC0zNDQ5LDYgKzM0NTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFN0bXQKIAlib29s CQlpZl9ub3RfZXhpc3RzOwkvKiBqdXN0IGRvIG5vdGhpbmcgaWYgaW5kZXggYWxyZWFkeSBleGlz dHM/ICovCiAJYm9vbAkJcmVzZXRfZGVmYXVsdF90YmxzcGM7CS8qIHJlc2V0IGRlZmF1bHRfdGFi bGVzcGFjZSBwcmlvciB0bwogCQkJCQkJCQkJCSAqIGV4ZWN1dGluZyAqLworICBib29sCQlpc3Zp c2libGU7CQkvKiB0cnVlIGlmIFZJU0lCTEUgKGRlZmF1bHQpLCBmYWxzZSBpZiBJTlZJU0lCTEUg Ki8KIH0gSW5kZXhTdG10OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvb3B0aW1pemVyLmgKaW5kZXggYmNmOGVkNjQ1Yy4uOTllNDM1MDc2YSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGlt aXplci9vcHRpbWl6ZXIuaApAQCAtMjA1LDQgKzIwNSw5IEBAIGV4dGVybiBMaXN0ICpwdWxsX3Zh cl9jbGF1c2UoTm9kZSAqbm9kZSwgaW50IGZsYWdzKTsKIGV4dGVybiBOb2RlICpmbGF0dGVuX2pv aW5fYWxpYXNfdmFycyhQbGFubmVySW5mbyAqcm9vdCwgUXVlcnkgKnF1ZXJ5LCBOb2RlICpub2Rl KTsKIGV4dGVybiBOb2RlICpmbGF0dGVuX2dyb3VwX2V4cHJzKFBsYW5uZXJJbmZvICpyb290LCBR dWVyeSAqcXVlcnksIE5vZGUgKm5vZGUpOwogCisvKgorICogR1VDIHRvIHRlbGwgcGxhbm5lciB0 byBjb25zaWRlciBpbnZpc2libGUgaW5kZXhlcy4KKyAqLworZXh0ZXJuIGJvb2wgdXNlX2ludmlz aWJsZV9pbmRleDsKKwogI2VuZGlmCQkJCQkJCS8qIE9QVElNSVpFUl9IICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0 LmgKaW5kZXggY2YyOTE3YWQwNy4uMThiOTdhZWZiMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtMjI5 LDYgKzIyOSw3IEBAIFBHX0tFWVdPUkQoImludGVnZXIiLCBJTlRFR0VSLCBDT0xfTkFNRV9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiaW50ZXJzZWN0IiwgSU5URVJTRUNULCBSRVNF UlZFRF9LRVlXT1JELCBBU19MQUJFTCkKIFBHX0tFWVdPUkQoImludGVydmFsIiwgSU5URVJWQUws IENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJpbnRvIiwgSU5UTywg UkVTRVJWRURfS0VZV09SRCwgQVNfTEFCRUwpCitQR19LRVlXT1JEKCJpbnZpc2libGUiLCBJTlZJ U0lCTEVfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiaW52 b2tlciIsIElOVk9LRVIsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoImlzIiwgSVMsIFRZUEVfRlVOQ19OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlX T1JEKCJpc251bGwiLCBJU05VTEwsIFRZUEVfRlVOQ19OQU1FX0tFWVdPUkQsIEFTX0xBQkVMKQpA QCAtNDkxLDYgKzQ5Miw3IEBAIFBHX0tFWVdPUkQoInZlcmJvc2UiLCBWRVJCT1NFLCBUWVBFX0ZV TkNfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgidmVyc2lvbiIsIFZFUlNJ T05fUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgidmlldyIs IFZJRVcsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInZpZXdz IiwgVklFV1MsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInZp c2libGUiLCBWSVNJQkxFX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoInZvbGF0aWxlIiwgVk9MQVRJTEUsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoIndoZW4iLCBXSEVOLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgid2hlcmUiLCBXSEVSRSwgUkVTRVJWRURfS0VZV09SRCwgQVNfTEFCRUwp CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9ndWNfaG9va3MuaCBiL3NyYy9pbmNsdWRl L3V0aWxzL2d1Y19ob29rcy5oCmluZGV4IDg3OTk5MjE4ZDYuLjkwOWY5YjU3ZWQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3V0aWxzL2d1Y19ob29rcy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxz L2d1Y19ob29rcy5oCkBAIC0xNzQsNSArMTc0LDYgQEAgZXh0ZXJuIHZvaWQgYXNzaWduX3dhbF9z eW5jX21ldGhvZChpbnQgbmV3X3dhbF9zeW5jX21ldGhvZCwgdm9pZCAqZXh0cmEpOwogZXh0ZXJu IGJvb2wgY2hlY2tfc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMoY2hhciAqKm5ld3ZhbCwgdm9p ZCAqKmV4dHJhLAogCQkJCQkJCQkJCQkgR3VjU291cmNlIHNvdXJjZSk7CiBleHRlcm4gdm9pZCBh c3NpZ25fc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMoY29uc3QgY2hhciAqbmV3dmFsLCB2b2lk ICpleHRyYSk7CitleHRlcm4gdm9pZCBhc3NpZ25fdXNlX2ludmlzaWJsZV9pbmRleChib29sIG5l d3ZhbCwgdm9pZCAqZXh0cmEpOwogCiAjZW5kaWYJCQkJCQkJLyogR1VDX0hPT0tTX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX2luZGV4Lm91dAppbmRleCA4MDExYzE0MWJm Li42NjIwMWI4ODhiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0 ZV9pbmRleC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfaW5kZXgu b3V0CkBAIC0zMzMxLDYgKzMzMzEsNzExIEBAIEVSUk9SOiAgUkVJTkRFWCBTQ0hFTUEgY2Fubm90 IHJ1biBpbnNpZGUgYSB0cmFuc2FjdGlvbiBibG9jawogRU5EOwogLS0gY29uY3VycmVudGx5CiBS RUlOREVYIFNDSEVNQSBDT05DVVJSRU5UTFkgc2NoZW1hX3RvX3JlaW5kZXg7CistLSBUZXN0IGlu ZGV4IHZpc2liaWxpdHkgZnVuY3Rpb25hbGl0eQorQ1JFQVRFIFRBQkxFIGluZGV4X3Rlc3QoCisg ICAgaWQgSU5UIFBSSU1BUlkgS0VZLAorICAgIGRhdGEgVEVYVCwKKyAgICBudW0gSU5ULAorICAg IHZlY3RvciBJTlRbXSwKKyAgICByYW5nZSBJTlQ0UkFOR0UKKyk7CitJTlNFUlQgSU5UTyBpbmRl eF90ZXN0CitTRUxFQ1QKKyAgICBnLAorICAgICdkYXRhICcgfHwgZywKKyAgICBnICUgMTAwLAor ICAgIEFSUkFZW2csIGcrMSwgZysyXSwKKyAgICBpbnQ0cmFuZ2UoZywgZysxMCkKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDEwMDApIGc7CistLSBGdW5jdGlvbiBmb3IgdGVzdGluZworQ1JFQVRF IEZVTkNUSU9OIGdldF9kYXRhX2xlbmd0aCh0ZXh0KSBSRVRVUk5TIElOVCBBUyAkJAorICAgIFNF TEVDVCBsZW5ndGgoJDEpOworJCQgTEFOR1VBR0UgU1FMIElNTVVUQUJMRTsKKy0tIEhlbHBlciBm dW5jdGlvbiB0byBzaG93IGluZGV4IHN0YXR1cworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04g c2hvd19pbmRleF9zdGF0dXMoaW5kZXhfbmFtZSB0ZXh0KQorUkVUVVJOUyBUQUJMRSAoCisgICAg aW5kZXhyZWxpZCByZWdjbGFzcywKKyAgICBpbmRpc3ZhbGlkIGJvb2xlYW4sCisgICAgaW5kaXNy ZWFkeSBib29sZWFuLAorICAgIGluZGlzbGl2ZSBib29sZWFuLAorICAgIGluZGlzdmlzaWJsZSBi b29sZWFuCispIEFTICQkCitCRUdJTgorICAgIFJFVFVSTiBRVUVSWSBFWEVDVVRFIGZvcm1hdCgn CisgICAgICAgIFNFTEVDVCBpbmRleHJlbGlkOjpyZWdjbGFzcywgaW5kaXN2YWxpZCwgaW5kaXNy ZWFkeSwgaW5kaXNsaXZlLCBpbmRpc3Zpc2libGUKKyAgICAgICAgRlJPTSBwZ19pbmRleAorICAg ICAgICBXSEVSRSBpbmRleHJlbGlkID0gJUw6OnJlZ2NsYXNzJywgaW5kZXhfbmFtZSk7CitFTkQ7 CiskJCBMQU5HVUFHRSBwbHBnc3FsOworLS0gQ3JlYXRlIGFuZCB0ZXN0IGVhY2ggaW5kZXggdHlw ZQorLS0gMS4gQmFzaWMgc2luZ2xlLWNvbHVtbiBpbmRleAorQ1JFQVRFIElOREVYIGlkeF9zaW5n bGUgT04gaW5kZXhfdGVzdChkYXRhKTsKK1NFTEVDVCBzaG93X2luZGV4X3N0YXR1cygnaWR4X3Np bmdsZScpOworICBzaG93X2luZGV4X3N0YXR1cyAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IChpZHhfc2luZ2xlLHQsdCx0LHQpCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VM RUNUICogRlJPTSBpbmRleF90ZXN0IFdIRVJFIGRhdGEgPSAnZGF0YSA1MDAnOworICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQml0bWFwIEhlYXAgU2NhbiBvbiBpbmRl eF90ZXN0CisgICBSZWNoZWNrIENvbmQ6IChkYXRhID0gJ2RhdGEgNTAwJzo6dGV4dCkKKyAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBpZHhfc2luZ2xlCisgICAgICAgICBJbmRleCBDb25kOiAo ZGF0YSA9ICdkYXRhIDUwMCc6OnRleHQpCisoNCByb3dzKQorCitBTFRFUiBJTkRFWCBpZHhfc2lu Z2xlIElOVklTSUJMRTsKK1NFTEVDVCBzaG93X2luZGV4X3N0YXR1cygnaWR4X3NpbmdsZScpOwor ICBzaG93X2luZGV4X3N0YXR1cyAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIChpZHhfc2lu Z2xlLHQsdCx0LGYpCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJP TSBpbmRleF90ZXN0IFdIRVJFIGRhdGEgPSAnZGF0YSA1MDAnOworICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFNlcSBTY2FuIG9uIGluZGV4X3Rlc3QKKyAgIEZpbHRlcjogKGRhdGEgPSAnZGF0YSA1MDAn Ojp0ZXh0KQorKDIgcm93cykKKworQUxURVIgSU5ERVggaWR4X3NpbmdsZSBWSVNJQkxFOworU0VM RUNUIHNob3dfaW5kZXhfc3RhdHVzKCdpZHhfc2luZ2xlJyk7CisgIHNob3dfaW5kZXhfc3RhdHVz ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKGlkeF9zaW5nbGUsdCx0LHQsdCkKKygxIHJv dykKKworLS0gMi4gTXVsdGktY29sdW1uIGluZGV4CitDUkVBVEUgSU5ERVggaWR4X211bHRpIE9O IGluZGV4X3Rlc3QobnVtLCBkYXRhKTsKK1NFTEVDVCBzaG93X2luZGV4X3N0YXR1cygnaWR4X211 bHRpJyk7CisgIHNob3dfaW5kZXhfc3RhdHVzICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIChp ZHhfbXVsdGksdCx0LHQsdCkKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1Qg KiBGUk9NIGluZGV4X3Rlc3QgV0hFUkUgbnVtID0gNTAgQU5EIGRhdGEgPiAnZGF0YSA1MDAnOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24gaW5kZXhfdGVzdAorICAgUmVj aGVjayBDb25kOiAoKG51bSA9IDUwKSBBTkQgKGRhdGEgPiAnZGF0YSA1MDAnOjp0ZXh0KSkKKyAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBpZHhfbXVsdGkKKyAgICAgICAgIEluZGV4IENvbmQ6 ICgobnVtID0gNTApIEFORCAoZGF0YSA+ICdkYXRhIDUwMCc6OnRleHQpKQorKDQgcm93cykKKwor QUxURVIgSU5ERVggaWR4X211bHRpIElOVklTSUJMRTsKK1NFTEVDVCBzaG93X2luZGV4X3N0YXR1 cygnaWR4X211bHRpJyk7CisgIHNob3dfaW5kZXhfc3RhdHVzICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIChpZHhfbXVsdGksdCx0LHQsZikKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZG KSBTRUxFQ1QgKiBGUk9NIGluZGV4X3Rlc3QgV0hFUkUgbnVtID0gNTAgQU5EIGRhdGEgPiAnZGF0 YSA1MDAnOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBTZXEgU2NhbiBvbiBpbmRleF90ZXN0CisgICBGaWx0ZXI6ICgoZGF0YSA+ICdkYXRh IDUwMCc6OnRleHQpIEFORCAobnVtID0gNTApKQorKDIgcm93cykKKworQUxURVIgSU5ERVggaWR4 X211bHRpIFZJU0lCTEU7CitTRUxFQ1Qgc2hvd19pbmRleF9zdGF0dXMoJ2lkeF9tdWx0aScpOwor ICBzaG93X2luZGV4X3N0YXR1cyAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoaWR4X211bHRp LHQsdCx0LHQpCisoMSByb3cpCisKKy0tIDMuIFBhcnRpYWwgaW5kZXgKK0NSRUFURSBJTkRFWCBp ZHhfcGFydGlhbCBPTiBpbmRleF90ZXN0KG51bSkgV0hFUkUgbnVtIDwgNTA7CitTRUxFQ1Qgc2hv d19pbmRleF9zdGF0dXMoJ2lkeF9wYXJ0aWFsJyk7CisgICBzaG93X2luZGV4X3N0YXR1cyAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoaWR4X3BhcnRpYWwsdCx0LHQsdCkKKygxIHJvdykK KworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGluZGV4X3Rlc3QgV0hFUkUgbnVt ID0gMjU7CisgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQml0bWFwIEhlYXAgU2NhbiBvbiBp bmRleF90ZXN0CisgICBSZWNoZWNrIENvbmQ6IChudW0gPSAyNSkKKyAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiBpZHhfcGFydGlhbAorICAgICAgICAgSW5kZXggQ29uZDogKG51bSA9IDI1KQor KDQgcm93cykKKworQUxURVIgSU5ERVggaWR4X3BhcnRpYWwgSU5WSVNJQkxFOworU0VMRUNUIHNo b3dfaW5kZXhfc3RhdHVzKCdpZHhfcGFydGlhbCcpOworICAgc2hvd19pbmRleF9zdGF0dXMgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKGlkeF9wYXJ0aWFsLHQsdCx0LGYpCisoMSByb3cp CisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBpbmRleF90ZXN0IFdIRVJFIG51 bSA9IDI1OworICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQml0bWFwIEhlYXAgU2NhbiBvbiBpbmRl eF90ZXN0CisgICBSZWNoZWNrIENvbmQ6IChudW0gPSAyNSkKKyAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiBpZHhfbXVsdGkKKyAgICAgICAgIEluZGV4IENvbmQ6IChudW0gPSAyNSkKKyg0IHJv d3MpCisKK0FMVEVSIElOREVYIGlkeF9wYXJ0aWFsIFZJU0lCTEU7CitTRUxFQ1Qgc2hvd19pbmRl eF9zdGF0dXMoJ2lkeF9wYXJ0aWFsJyk7CisgICBzaG93X2luZGV4X3N0YXR1cyAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAoaWR4X3BhcnRpYWwsdCx0LHQsdCkKKygxIHJvdykKKworLS0g NC4gRXhwcmVzc2lvbiBpbmRleAorQ1JFQVRFIElOREVYIGlkeF9leHByZXNzaW9uIE9OIGluZGV4 X3Rlc3QoKGxvd2VyKGRhdGEpKSk7CitTRUxFQ1Qgc2hvd19pbmRleF9zdGF0dXMoJ2lkeF9leHBy ZXNzaW9uJyk7CisgICAgc2hvd19pbmRleF9zdGF0dXMgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAoaWR4X2V4cHJlc3Npb24sdCx0LHQsdCkKKygxIHJvdykKKworRVhQTEFJTiAo Q09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGluZGV4X3Rlc3QgV0hFUkUgbG93ZXIoZGF0YSkgPSAn ZGF0YSA1MDAnOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9uIGluZGV4X3Rlc3QKKyAgIFJlY2hlY2sgQ29u ZDogKGxvd2VyKGRhdGEpID0gJ2RhdGEgNTAwJzo6dGV4dCkKKyAgIC0+ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiBpZHhfZXhwcmVzc2lvbgorICAgICAgICAgSW5kZXggQ29uZDogKGxvd2VyKGRhdGEp ID0gJ2RhdGEgNTAwJzo6dGV4dCkKKyg0IHJvd3MpCisKK0FMVEVSIElOREVYIGlkeF9leHByZXNz aW9uIElOVklTSUJMRTsKK1NFTEVDVCBzaG93X2luZGV4X3N0YXR1cygnaWR4X2V4cHJlc3Npb24n KTsKKyAgICBzaG93X2luZGV4X3N0YXR1cyAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIChpZHhfZXhwcmVzc2lvbix0LHQsdCxmKQorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBP RkYpIFNFTEVDVCAqIEZST00gaW5kZXhfdGVzdCBXSEVSRSBsb3dlcihkYXRhKSA9ICdkYXRhIDUw MCc7CisgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTZXEgU2NhbiBvbiBpbmRl eF90ZXN0CisgICBGaWx0ZXI6IChsb3dlcihkYXRhKSA9ICdkYXRhIDUwMCc6OnRleHQpCisoMiBy b3dzKQorCitBTFRFUiBJTkRFWCBpZHhfZXhwcmVzc2lvbiBWSVNJQkxFOworU0VMRUNUIHNob3df aW5kZXhfc3RhdHVzKCdpZHhfZXhwcmVzc2lvbicpOworICAgIHNob3dfaW5kZXhfc3RhdHVzICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKGlkeF9leHByZXNzaW9uLHQsdCx0LHQp CisoMSByb3cpCisKKy0tIDUuIEdJTiBpbmRleAorQ1JFQVRFIElOREVYIGlkeF9naW4gT04gaW5k ZXhfdGVzdCBVU0lORyBnaW4odmVjdG9yKTsKK1NFTEVDVCBzaG93X2luZGV4X3N0YXR1cygnaWR4 X2dpbicpOworIHNob3dfaW5kZXhfc3RhdHVzIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIChpZHhf Z2luLHQsdCx0LHQpCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJP TSBpbmRleF90ZXN0IFdIRVJFIHZlY3RvciBAPiBBUlJBWVs1MDBdOworICAgICAgICAgICAgICAg ICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24g aW5kZXhfdGVzdAorICAgUmVjaGVjayBDb25kOiAodmVjdG9yIEA+ICd7NTAwfSc6OmludGVnZXJb XSkKKyAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBpZHhfZ2luCisgICAgICAgICBJbmRleCBD b25kOiAodmVjdG9yIEA+ICd7NTAwfSc6OmludGVnZXJbXSkKKyg0IHJvd3MpCisKK0FMVEVSIElO REVYIGlkeF9naW4gSU5WSVNJQkxFOworU0VMRUNUIHNob3dfaW5kZXhfc3RhdHVzKCdpZHhfZ2lu Jyk7Cisgc2hvd19pbmRleF9zdGF0dXMgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgKGlkeF9naW4s dCx0LHQsZikKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGlu ZGV4X3Rlc3QgV0hFUkUgdmVjdG9yIEA+IEFSUkFZWzUwMF07CisgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIGluZGV4X3Rlc3QKKyAgIEZpbHRlcjogKHZlY3RvciBA PiAnezUwMH0nOjppbnRlZ2VyW10pCisoMiByb3dzKQorCitBTFRFUiBJTkRFWCBpZHhfZ2luIFZJ U0lCTEU7CitTRUxFQ1Qgc2hvd19pbmRleF9zdGF0dXMoJ2lkeF9naW4nKTsKKyBzaG93X2luZGV4 X3N0YXR1cyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoaWR4X2dpbix0LHQsdCx0KQorKDEgcm93 KQorCistLSA2LiBHaVNUIGluZGV4CitDUkVBVEUgSU5ERVggaWR4X2dpc3QgT04gaW5kZXhfdGVz dCBVU0lORyBnaXN0KHJhbmdlKTsKK1NFTEVDVCBzaG93X2luZGV4X3N0YXR1cygnaWR4X2dpc3Qn KTsKKyBzaG93X2luZGV4X3N0YXR1cyAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorIChpZHhfZ2lz dCx0LHQsdCx0KQorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00g aW5kZXhfdGVzdCBXSEVSRSByYW5nZSAmJiBpbnQ0cmFuZ2UoMTAwLCAxMTApOworICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEJpdG1hcCBI ZWFwIFNjYW4gb24gaW5kZXhfdGVzdAorICAgUmVjaGVjayBDb25kOiAocmFuZ2UgJiYgJ1sxMDAs MTEwKSc6OmludDRyYW5nZSkKKyAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBpZHhfZ2lzdAor ICAgICAgICAgSW5kZXggQ29uZDogKHJhbmdlICYmICdbMTAwLDExMCknOjppbnQ0cmFuZ2UpCiso NCByb3dzKQorCitBTFRFUiBJTkRFWCBpZHhfZ2lzdCBJTlZJU0lCTEU7CitTRUxFQ1Qgc2hvd19p bmRleF9zdGF0dXMoJ2lkeF9naXN0Jyk7Cisgc2hvd19pbmRleF9zdGF0dXMgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAoaWR4X2dpc3QsdCx0LHQsZikKKygxIHJvdykKKworRVhQTEFJTiAoQ09T VFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGluZGV4X3Rlc3QgV0hFUkUgcmFuZ2UgJiYgaW50NHJhbmdl KDEwMCwgMTEwKTsKKyAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNj YW4gb24gaW5kZXhfdGVzdAorICAgRmlsdGVyOiAocmFuZ2UgJiYgJ1sxMDAsMTEwKSc6OmludDRy YW5nZSkKKygyIHJvd3MpCisKK0FMVEVSIElOREVYIGlkeF9naXN0IFZJU0lCTEU7CitTRUxFQ1Qg c2hvd19pbmRleF9zdGF0dXMoJ2lkeF9naXN0Jyk7Cisgc2hvd19pbmRleF9zdGF0dXMgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAoaWR4X2dpc3QsdCx0LHQsdCkKKygxIHJvdykKKworLS0gNy4g Q292ZXJpbmcgaW5kZXgKK0NSRUFURSBJTkRFWCBpZHhfY292ZXJpbmcgT04gaW5kZXhfdGVzdChu dW0pIElOQ0xVREUgKGRhdGEpOworU0VMRUNUIHNob3dfaW5kZXhfc3RhdHVzKCdpZHhfY292ZXJp bmcnKTsKKyAgIHNob3dfaW5kZXhfc3RhdHVzICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKGlkeF9jb3ZlcmluZyx0LHQsdCx0KQorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYp IFNFTEVDVCBudW0sIGRhdGEgRlJPTSBpbmRleF90ZXN0IFdIRVJFIG51bSA9IDUwOworICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQml0bWFwIEhlYXAgU2NhbiBvbiBpbmRleF90ZXN0Cisg ICBSZWNoZWNrIENvbmQ6IChudW0gPSA1MCkKKyAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBp ZHhfY292ZXJpbmcKKyAgICAgICAgIEluZGV4IENvbmQ6IChudW0gPSA1MCkKKyg0IHJvd3MpCisK K0FMVEVSIElOREVYIGlkeF9jb3ZlcmluZyBJTlZJU0lCTEU7CitTRUxFQ1Qgc2hvd19pbmRleF9z dGF0dXMoJ2lkeF9jb3ZlcmluZycpOworICAgc2hvd19pbmRleF9zdGF0dXMgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAoaWR4X2NvdmVyaW5nLHQsdCx0LGYpCisoMSByb3cpCisKK0VY UExBSU4gKENPU1RTIE9GRikgU0VMRUNUIG51bSwgZGF0YSBGUk9NIGluZGV4X3Rlc3QgV0hFUkUg bnVtID0gNTA7CisgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9uIGlu ZGV4X3Rlc3QKKyAgIFJlY2hlY2sgQ29uZDogKG51bSA9IDUwKQorICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIGlkeF9tdWx0aQorICAgICAgICAgSW5kZXggQ29uZDogKG51bSA9IDUwKQorKDQg cm93cykKKworQUxURVIgSU5ERVggaWR4X2NvdmVyaW5nIFZJU0lCTEU7CitTRUxFQ1Qgc2hvd19p bmRleF9zdGF0dXMoJ2lkeF9jb3ZlcmluZycpOworICAgc2hvd19pbmRleF9zdGF0dXMgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoaWR4X2NvdmVyaW5nLHQsdCx0LHQpCisoMSByb3cp CisKKy0tIDguIFVuaXF1ZSBpbmRleAorQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdW5pcXVlIE9O IGluZGV4X3Rlc3QoaWQsIGRhdGEpOworU0VMRUNUIHNob3dfaW5kZXhfc3RhdHVzKCdpZHhfdW5p cXVlJyk7CisgIHNob3dfaW5kZXhfc3RhdHVzICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KGlkeF91bmlxdWUsdCx0LHQsdCkKKygxIHJvdykKKworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxF Q1QgKiBGUk9NIGluZGV4X3Rlc3QgV0hFUkUgaWQgPSA1MDAgQU5EIGRhdGEgPSAnZGF0YSA1MDAn OworICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgaWR4X3VuaXF1ZSBvbiBpbmRleF90ZXN0CisgICBJ bmRleCBDb25kOiAoKGlkID0gNTAwKSBBTkQgKGRhdGEgPSAnZGF0YSA1MDAnOjp0ZXh0KSkKKygy IHJvd3MpCisKK0FMVEVSIElOREVYIGlkeF91bmlxdWUgSU5WSVNJQkxFOworU0VMRUNUIHNob3df aW5kZXhfc3RhdHVzKCdpZHhfdW5pcXVlJyk7CisgIHNob3dfaW5kZXhfc3RhdHVzICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKGlkeF91bmlxdWUsdCx0LHQsZikKKygxIHJvdykKKworRVhQ TEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGluZGV4X3Rlc3QgV0hFUkUgaWQgPSA1MDAg QU5EIGRhdGEgPSAnZGF0YSA1MDAnOworICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIGluZGV4X3Rlc3RfcGtleSBvbiBpbmRleF90ZXN0 CisgICBJbmRleCBDb25kOiAoaWQgPSA1MDApCisgICBGaWx0ZXI6IChkYXRhID0gJ2RhdGEgNTAw Jzo6dGV4dCkKKygzIHJvd3MpCisKK0FMVEVSIElOREVYIGlkeF91bmlxdWUgVklTSUJMRTsKK1NF TEVDVCBzaG93X2luZGV4X3N0YXR1cygnaWR4X3VuaXF1ZScpOworICBzaG93X2luZGV4X3N0YXR1 cyAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIChpZHhfdW5pcXVlLHQsdCx0LHQpCisoMSBy b3cpCisKKy0tIDkuIEZ1bmN0aW9uLWJhc2VkIGluZGV4CitDUkVBVEUgSU5ERVggaWR4X2Z1bmMg T04gaW5kZXhfdGVzdChnZXRfZGF0YV9sZW5ndGgoZGF0YSkpOworU0VMRUNUIHNob3dfaW5kZXhf c3RhdHVzKCdpZHhfZnVuYycpOworIHNob3dfaW5kZXhfc3RhdHVzICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKGlkeF9mdW5jLHQsdCx0LHQpCisoMSByb3cpCisKK0VYUExBSU4gKENPU1RTIE9G RikgU0VMRUNUICogRlJPTSBpbmRleF90ZXN0IFdIRVJFIGdldF9kYXRhX2xlbmd0aChkYXRhKSA9 IDEwOworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQml0bWFwIEhlYXAgU2NhbiBvbiBp bmRleF90ZXN0CisgICBSZWNoZWNrIENvbmQ6IChsZW5ndGgoZGF0YSkgPSAxMCkKKyAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiBpZHhfZnVuYworICAgICAgICAgSW5kZXggQ29uZDogKGxlbmd0 aChkYXRhKSA9IDEwKQorKDQgcm93cykKKworQUxURVIgSU5ERVggaWR4X2Z1bmMgSU5WSVNJQkxF OworU0VMRUNUIHNob3dfaW5kZXhfc3RhdHVzKCdpZHhfZnVuYycpOworIHNob3dfaW5kZXhfc3Rh dHVzICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKGlkeF9mdW5jLHQsdCx0LGYpCisoMSByb3cp CisKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBpbmRleF90ZXN0IFdIRVJFIGdl dF9kYXRhX2xlbmd0aChkYXRhKSA9IDEwOworICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIGluZGV4X3Rl c3QKKyAgIEZpbHRlcjogKGxlbmd0aChkYXRhKSA9IDEwKQorKDIgcm93cykKKworQUxURVIgSU5E RVggaWR4X2Z1bmMgVklTSUJMRTsKK1NFTEVDVCBzaG93X2luZGV4X3N0YXR1cygnaWR4X2Z1bmMn KTsKKyBzaG93X2luZGV4X3N0YXR1cyAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorIChpZHhfZnVu Yyx0LHQsdCx0KQorKDEgcm93KQorCistLSAxMC4gSm9pbiBpbmRleAorQ1JFQVRFIFRBQkxFIGpv aW5fdGVzdCAoaWQgSU5UIFBSSU1BUlkgS0VZLCByZWZfaWQgSU5UKTsKK0lOU0VSVCBJTlRPIGpv aW5fdGVzdCBTRUxFQ1QgZywgZyAlIDEwMCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBn OworQ1JFQVRFIElOREVYIGlkeF9qb2luIE9OIGpvaW5fdGVzdChyZWZfaWQpOworU0VMRUNUIHNo b3dfaW5kZXhfc3RhdHVzKCdpZHhfam9pbicpOworIHNob3dfaW5kZXhfc3RhdHVzICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKGlkeF9qb2luLHQsdCx0LHQpCisoMSByb3cpCisKK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCBqdC5pZCwgaXQuZGF0YQorRlJPTSBqb2luX3Rlc3QganQKK0pP SU4gaW5kZXhfdGVzdCBpdCBPTiBqdC5yZWZfaWQgPSBpdC5udW0KK1dIRVJFIGp0LmlkIEJFVFdF RU4gMTAwIEFORCAyMDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEhhc2ggSm9pbgorICAgSGFzaCBDb25k OiAoaXQubnVtID0ganQucmVmX2lkKQorICAgLT4gIFNlcSBTY2FuIG9uIGluZGV4X3Rlc3QgaXQK KyAgIC0+ICBIYXNoCisgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBqb2luX3Rlc3Qg anQKKyAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKChpZCA+PSAxMDApIEFORCAoaWQgPD0g MjAwKSkKKyAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBqb2luX3Rlc3Rf cGtleQorICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKChpZCA+PSAxMDApIEFORCAo aWQgPD0gMjAwKSkKKyg4IHJvd3MpCisKKy0tIFNldCBhbGwgaW5kZXhlcyB0byBpbnZpc2libGUg dG8gZm9yY2Ugc2VxIHNjYW4KK0FMVEVSIElOREVYIGlkeF9qb2luIElOVklTSUJMRTsKK0FMVEVS IElOREVYIGpvaW5fdGVzdF9wa2V5IElOVklTSUJMRTsKK1NFTEVDVCBzaG93X2luZGV4X3N0YXR1 cygnaWR4X2pvaW4nKTsKKyBzaG93X2luZGV4X3N0YXR1cyAgCistLS0tLS0tLS0tLS0tLS0tLS0t LQorIChpZHhfam9pbix0LHQsdCxmKQorKDEgcm93KQorCitTRUxFQ1Qgc2hvd19pbmRleF9zdGF0 dXMoJ2pvaW5fdGVzdF9wa2V5Jyk7CisgICAgc2hvd19pbmRleF9zdGF0dXMgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoam9pbl90ZXN0X3BrZXksdCx0LHQsZikKKygxIHJvdykK KworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGp0LmlkLCBpdC5kYXRhCitGUk9NIGpvaW5f dGVzdCBqdAorSk9JTiBpbmRleF90ZXN0IGl0IE9OIGp0LnJlZl9pZCA9IGl0Lm51bQorV0hFUkUg anQuaWQgQkVUV0VFTiAxMDAgQU5EIDIwMDsKKyAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEhhc2ggSm9pbgorICAgSGFzaCBDb25kOiAoaXQubnVt ID0ganQucmVmX2lkKQorICAgLT4gIFNlcSBTY2FuIG9uIGluZGV4X3Rlc3QgaXQKKyAgIC0+ICBI YXNoCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gam9pbl90ZXN0IGp0CisgICAgICAgICAgICAg ICBGaWx0ZXI6ICgoaWQgPj0gMTAwKSBBTkQgKGlkIDw9IDIwMCkpCisoNiByb3dzKQorCitBTFRF UiBJTkRFWCBpZHhfam9pbiBWSVNJQkxFOworQUxURVIgSU5ERVggam9pbl90ZXN0X3BrZXkgVklT SUJMRTsKK1NFTEVDVCBzaG93X2luZGV4X3N0YXR1cygnaWR4X2pvaW4nKTsKKyBzaG93X2luZGV4 X3N0YXR1cyAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorIChpZHhfam9pbix0LHQsdCx0KQorKDEg cm93KQorCitTRUxFQ1Qgc2hvd19pbmRleF9zdGF0dXMoJ2pvaW5fdGVzdF9wa2V5Jyk7CisgICAg c2hvd19pbmRleF9zdGF0dXMgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAoam9p bl90ZXN0X3BrZXksdCx0LHQsdCkKKygxIHJvdykKKworLS0gVGVzdCBSRUlOREVYIENPTkNVUlJF TlRMWQorUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgaWR4X2pvaW47CitTRUxFQ1Qgc2hvd19p bmRleF9zdGF0dXMoJ2lkeF9qb2luJyk7Cisgc2hvd19pbmRleF9zdGF0dXMgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAoaWR4X2pvaW4sdCx0LHQsdCkKKygxIHJvdykKKworQUxURVIgSU5ERVgg aWR4X2pvaW4gSU5WSVNJQkxFOworU0VMRUNUIHNob3dfaW5kZXhfc3RhdHVzKCdpZHhfam9pbicp OworIHNob3dfaW5kZXhfc3RhdHVzICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKGlkeF9qb2lu LHQsdCx0LGYpCisoMSByb3cpCisKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGlkeF9qb2lu OworU0VMRUNUIHNob3dfaW5kZXhfc3RhdHVzKCdpZHhfam9pbicpOworIHNob3dfaW5kZXhfc3Rh dHVzICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKGlkeF9qb2luLHQsdCx0LGYpCisoMSByb3cp CisKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoJ2lkeF9qb2luJzo6cmVnY2xhc3MpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfaW5kZXhkZWYgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENS RUFURSBJTkRFWCBpZHhfam9pbiBPTiBzY2hlbWFfdG9fcmVpbmRleC5qb2luX3Rlc3QgVVNJTkcg YnRyZWUgKHJlZl9pZCkgSU5WSVNJQkxFCisoMSByb3cpCisKK0FMVEVSIElOREVYIGlkeF9qb2lu IFZJU0lCTEU7CitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKCdpZHhfam9pbic6OnJlZ2NsYXNzKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9pbmRleGRlZiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIElOREVYIGlk eF9qb2luIE9OIHNjaGVtYV90b19yZWluZGV4LmpvaW5fdGVzdCBVU0lORyBidHJlZSAocmVmX2lk KQorKDEgcm93KQorCistLSBUZXN0IGluZGV4IHZpc2liaWxpdHkgd2l0aCBpbmRjaGVja3htaW4g YmVpbmcgdHJ1ZQorQ1JFQVRFIFRBQkxFIGluZGNoZWNreG1pbl90ZXN0KGlkIGludCBQUklNQVJZ IEtFWSk7CitJTlNFUlQgSU5UTyBpbmRjaGVja3htaW5fdGVzdCBWQUxVRVMgKDEpLCAoMiksICgz KTsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4X2NoZWNreG1pbiBPTiBpbmRjaGVja3ht aW5fdGVzdChpZCk7CitCRUdJTjsKKy0tIFNpbXVsYXRlIGluZGNoZWNreG1pbiBiZWluZyB0cnVl CitVUERBVEUgcGdfaW5kZXggU0VUIGluZGNoZWNreG1pbiA9IHRydWUgV0hFUkUgaW5kZXhyZWxp ZCA9ICdpZHhfY2hlY2t4bWluJzo6cmVnY2xhc3M7CitBTFRFUiBJTkRFWCBpZHhfY2hlY2t4bWlu IElOVklTSUJMRTsgIC0tIGV4cGVjdCBmYWlsCitFUlJPUjogIGNhbm5vdCB1cGRhdGUgaW5kZXgg dmlzaWJpbGl0eSB3aGlsZSBpbmRjaGVja3htaW4gaXMgdHJ1ZQorSElOVDogIFdhaXQgZm9yIGFs bCB0cmFuc2FjdGlvbnMgdGhhdCBtaWdodCBzZWUgaW5jb25zaXN0ZW50IEhPVCBjaGFpbnMgdG8g Y29tcGxldGUKK1JPTExCQUNLOworLS0gVGVzdCBwcmVwYXJlZCBzdGF0ZW1lbnRzIHdpdGggaW5k ZXggdmlzaWJpbGl0eQorQ1JFQVRFIFRBQkxFIHByZXBfaWR4X3Rlc3QgKGlkIGludCwgZGF0YSB0 ZXh0KTsKK0NSRUFURSBJTkRFWCBwcmVwX2lkeDEgT04gcHJlcF9pZHhfdGVzdChkYXRhKTsKK0lO U0VSVCBJTlRPIHByZXBfaWR4X3Rlc3QgU0VMRUNUIGcsICdkYXRhICcgfHwgZyBGUk9NIGdlbmVy YXRlX3NlcmllcygxLDEwMCkgZzsKKy0tIFRlc3Qgd2l0aCB2aXNpYmxlIGluZGV4CitQUkVQQVJF IGlkeF9wbGFuIEFTIFNFTEVDVCAqIEZST00gcHJlcF9pZHhfdGVzdCBXSEVSRSBkYXRhID0gJDE7 CitFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgaWR4X3BsYW4oJ2RhdGEgMScpOworICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9uIHByZXBf aWR4X3Rlc3QKKyAgIFJlY2hlY2sgQ29uZDogKGRhdGEgPSAnZGF0YSAxJzo6dGV4dCkKKyAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBwcmVwX2lkeDEKKyAgICAgICAgIEluZGV4IENvbmQ6IChk YXRhID0gJ2RhdGEgMSc6OnRleHQpCisoNCByb3dzKQorCitFWEVDVVRFIGlkeF9wbGFuKCdkYXRh IDEnKTsKKyBpZCB8ICBkYXRhICAKKy0tLS0rLS0tLS0tLS0KKyAgMSB8IGRhdGEgMQorKDEgcm93 KQorCistLSBUZXN0IHdpdGggaW52aXNpYmxlIGluZGV4CitBTFRFUiBJTkRFWCBwcmVwX2lkeDEg SU5WSVNJQkxFOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIGlkeF9wbGFuKCdkYXRhIDEn KTsKKyAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIHByZXBfaWR4X3Rlc3QKKyAgIEZpbHRl cjogKGRhdGEgPSAnZGF0YSAxJzo6dGV4dCkKKygyIHJvd3MpCisKK0VYRUNVVEUgaWR4X3BsYW4o J2RhdGEgMScpOworIGlkIHwgIGRhdGEgIAorLS0tLSstLS0tLS0tLQorICAxIHwgZGF0YSAxCiso MSByb3cpCisKKy0tIFRlc3Qgd2l0aCB1c2VfaW52aXNpYmxlX2luZGV4CitTRVQgdXNlX2ludmlz aWJsZV9pbmRleCBUTyBvbjsKK0VYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBpZHhfcGxhbign ZGF0YSAxJyk7CisgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEJpdG1hcCBI ZWFwIFNjYW4gb24gcHJlcF9pZHhfdGVzdAorICAgUmVjaGVjayBDb25kOiAoZGF0YSA9ICdkYXRh IDEnOjp0ZXh0KQorICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIHByZXBfaWR4MQorICAgICAg ICAgSW5kZXggQ29uZDogKGRhdGEgPSAnZGF0YSAxJzo6dGV4dCkKKyg0IHJvd3MpCisKK0VYRUNV VEUgaWR4X3BsYW4oJ2RhdGEgMScpOworIGlkIHwgIGRhdGEgIAorLS0tLSstLS0tLS0tLQorICAx IHwgZGF0YSAxCisoMSByb3cpCisKK1NFVCB1c2VfaW52aXNpYmxlX2luZGV4IFRPIG9mZjsKKy0t IEFzc2VydCBwbGFuIGNhY2hlIGlzIHJlc2V0IGFuZCBpbmRleCBpcyBub3QgdXNlZAorRVhQTEFJ TiAoQ09TVFMgT0ZGKSBFWEVDVVRFIGlkeF9wbGFuKCdkYXRhIDEnKTsKKyAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFNlcSBTY2FuIG9uIHByZXBfaWR4X3Rlc3QKKyAgIEZpbHRlcjogKGRhdGEgPSAnZGF0YSAx Jzo6dGV4dCkKKygyIHJvd3MpCisKKy0tIE1ha2UgaW5kZXggdmlzaWJsZSBhbmQgdGVzdCBhZ2Fp bgorQUxURVIgSU5ERVggcHJlcF9pZHgxIFZJU0lCTEU7CitFWFBMQUlOIChDT1NUUyBPRkYpIEVY RUNVVEUgaWR4X3BsYW4oJ2RhdGEgMScpOworICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9uIHByZXBfaWR4X3Rlc3QKKyAgIFJlY2hlY2sgQ29u ZDogKGRhdGEgPSAnZGF0YSAxJzo6dGV4dCkKKyAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBw cmVwX2lkeDEKKyAgICAgICAgIEluZGV4IENvbmQ6IChkYXRhID0gJ2RhdGEgMSc6OnRleHQpCiso NCByb3dzKQorCitFWEVDVVRFIGlkeF9wbGFuKCdkYXRhIDEnKTsKKyBpZCB8ICBkYXRhICAKKy0t LS0rLS0tLS0tLS0KKyAgMSB8IGRhdGEgMQorKDEgcm93KQorCistLSBUZXN0IGluZGV4IHZpc2li aWxpdHkgd2l0aCBwYXJ0aXRpb25lZCB0YWJsZXMKK0NSRUFURSBUQUJMRSBwYXJ0X3RibChpZCBp bnQsIGRhdGEgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdFKGlkKTsKK0NSRUFURSBUQUJMRSBwYXJ0 MSBQQVJUSVRJT04gT0YgcGFydF90YmwgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTAwKTsKK0NS RUFURSBUQUJMRSBwYXJ0MiBQQVJUSVRJT04gT0YgcGFydF90YmwgRk9SIFZBTFVFUyBGUk9NICgx MDApIFRPICgyMDApOworSU5TRVJUIElOVE8gcGFydF90YmwKK1NFTEVDVCBnLCAnZGF0YSAnIHx8 IGcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDE5OSkgZzsKK0NSRUFURSBJTkRFWCBpZHhfcGFy dF90YmwgT04gcGFydF90YmwoZGF0YSk7CitTRUxFQ1QgYy5yZWxuYW1lLCBpLmluZGlzdmlzaWJs ZQorRlJPTSBwZ19pbmRleCBpCitKT0lOIHBnX2NsYXNzIGMgT04gaS5pbmRleHJlbGlkID0gYy5v aWQKK1dIRVJFIGMucmVsbmFtZSBMSUtFICdpZHhfcGFydF90YmwlJworT1JERVIgQlkgYy5yZWxu YW1lOworICAgcmVsbmFtZSAgICB8IGluZGlzdmlzaWJsZSAKKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tCisgaWR4X3BhcnRfdGJsIHwgdAorKDEgcm93KQorCistLSBGb3JjZSB1c2Ugb2Yg aW5kZXhlcyB0byBhdm9pZCBmbGFreSB0ZXN0IHJlc3VsdHMKK1NFVCBlbmFibGVfc2Vxc2NhbiA9 IG9mZjsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gcGFydF90YmwgV0hFUkUg ZGF0YSA9ICdkYXRhIDUwJzsKKyAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFwcGVuZAorICAgLT4gIEluZGV4IFNjYW4gdXNp bmcgcGFydDFfZGF0YV9pZHggb24gcGFydDEgcGFydF90YmxfMQorICAgICAgICAgSW5kZXggQ29u ZDogKGRhdGEgPSAnZGF0YSA1MCc6OnRleHQpCisgICAtPiAgSW5kZXggU2NhbiB1c2luZyBwYXJ0 Ml9kYXRhX2lkeCBvbiBwYXJ0MiBwYXJ0X3RibF8yCisgICAgICAgICBJbmRleCBDb25kOiAoZGF0 YSA9ICdkYXRhIDUwJzo6dGV4dCkKKyg1IHJvd3MpCisKK0FMVEVSIElOREVYIGlkeF9wYXJ0X3Ri bCBJTlZJU0lCTEU7CitTRUxFQ1QgYy5yZWxuYW1lLCBpLmluZGlzdmlzaWJsZQorRlJPTSBwZ19p bmRleCBpCitKT0lOIHBnX2NsYXNzIGMgT04gaS5pbmRleHJlbGlkID0gYy5vaWQKK1dIRVJFIGMu cmVsbmFtZSBMSUtFICdpZHhfcGFydF90YmwlJworT1JERVIgQlkgYy5yZWxuYW1lOworICAgcmVs bmFtZSAgICB8IGluZGlzdmlzaWJsZSAKKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisg aWR4X3BhcnRfdGJsIHwgZgorKDEgcm93KQorCistLSBDaGVjayBxdWVyeSBwbGFuIGFmdGVyIHNl dHRpbmcgaW52aXNpYmxlIChzaG91bGQgdXNlIHNlcSBzY2FuKQorRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUICogRlJPTSBwYXJ0X3RibCBXSEVSRSBkYXRhID0gJ2RhdGEgNTAnOworICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBwYXJ0 MSBwYXJ0X3RibF8xCisgICAgICAgICBEaXNhYmxlZDogdHJ1ZQorICAgICAgICAgRmlsdGVyOiAo ZGF0YSA9ICdkYXRhIDUwJzo6dGV4dCkKKyAgIC0+ICBTZXEgU2NhbiBvbiBwYXJ0MiBwYXJ0X3Ri bF8yCisgICAgICAgICBEaXNhYmxlZDogdHJ1ZQorICAgICAgICAgRmlsdGVyOiAoZGF0YSA9ICdk YXRhIDUwJzo6dGV4dCkKKyg3IHJvd3MpCisKK1NFVCB1c2VfaW52aXNpYmxlX2luZGV4IFRPIG9u OworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSBwYXJ0X3RibCBXSEVSRSBkYXRh ID0gJ2RhdGEgNTAnOworICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICAtPiAgSW5kZXggU2NhbiB1c2luZyBw YXJ0MV9kYXRhX2lkeCBvbiBwYXJ0MSBwYXJ0X3RibF8xCisgICAgICAgICBJbmRleCBDb25kOiAo ZGF0YSA9ICdkYXRhIDUwJzo6dGV4dCkKKyAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIHBhcnQyX2Rh dGFfaWR4IG9uIHBhcnQyIHBhcnRfdGJsXzIKKyAgICAgICAgIEluZGV4IENvbmQ6IChkYXRhID0g J2RhdGEgNTAnOjp0ZXh0KQorKDUgcm93cykKKworU0VUIHVzZV9pbnZpc2libGVfaW5kZXggVE8g b2ZmOworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSBwYXJ0X3RibCBXSEVSRSBk YXRhID0gJ2RhdGEgNTAnOworICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQK KyAgIC0+ICBTZXEgU2NhbiBvbiBwYXJ0MSBwYXJ0X3RibF8xCisgICAgICAgICBEaXNhYmxlZDog dHJ1ZQorICAgICAgICAgRmlsdGVyOiAoZGF0YSA9ICdkYXRhIDUwJzo6dGV4dCkKKyAgIC0+ICBT ZXEgU2NhbiBvbiBwYXJ0MiBwYXJ0X3RibF8yCisgICAgICAgICBEaXNhYmxlZDogdHJ1ZQorICAg ICAgICAgRmlsdGVyOiAoZGF0YSA9ICdkYXRhIDUwJzo6dGV4dCkKKyg3IHJvd3MpCisKK0FMVEVS IElOREVYIGlkeF9wYXJ0X3RibCBWSVNJQkxFOworU0VMRUNUIGMucmVsbmFtZSwgaS5pbmRpc3Zp c2libGUKK0ZST00gcGdfaW5kZXggaQorSk9JTiBwZ19jbGFzcyBjIE9OIGkuaW5kZXhyZWxpZCA9 IGMub2lkCitXSEVSRSBjLnJlbG5hbWUgTElLRSAnaWR4X3BhcnRfdGJsJScKK09SREVSIEJZIGMu cmVsbmFtZTsKKyAgIHJlbG5hbWUgICAgfCBpbmRpc3Zpc2libGUgCistLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLQorIGlkeF9wYXJ0X3RibCB8IHQKKygxIHJvdykKKworRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUICogRlJPTSBwYXJ0X3RibCBXSEVSRSBkYXRhID0gJ2RhdGEgNTAnOwor ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQXBwZW5kCisgICAtPiAgSW5kZXggU2NhbiB1c2luZyBwYXJ0MV9kYXRhX2lkeCBv biBwYXJ0MSBwYXJ0X3RibF8xCisgICAgICAgICBJbmRleCBDb25kOiAoZGF0YSA9ICdkYXRhIDUw Jzo6dGV4dCkKKyAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIHBhcnQyX2RhdGFfaWR4IG9uIHBhcnQy IHBhcnRfdGJsXzIKKyAgICAgICAgIEluZGV4IENvbmQ6IChkYXRhID0gJ2RhdGEgNTAnOjp0ZXh0 KQorKDUgcm93cykKKworU0VUIGVuYWJsZV9zZXFzY2FuID0gb247CistLSBUZXN0IFJFSU5ERVgg bWFpbnRhaW5zIHZpc2liaWxpdHkgc2V0dGluZworQUxURVIgSU5ERVggaWR4X3BhcnRfdGJsIElO VklTSUJMRTsKK1JFSU5ERVggSU5ERVggaWR4X3BhcnRfdGJsOworU0VMRUNUIGMucmVsbmFtZSwg aS5pbmRpc3Zpc2libGUKK0ZST00gcGdfaW5kZXggaQorSk9JTiBwZ19jbGFzcyBjIE9OIGkuaW5k ZXhyZWxpZCA9IGMub2lkCitXSEVSRSBjLnJlbG5hbWUgTElLRSAnaWR4X3BhcnRfdGJsJScKK09S REVSIEJZIGMucmVsbmFtZTsKKyAgIHJlbG5hbWUgICAgfCBpbmRpc3Zpc2libGUgCistLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIGlkeF9wYXJ0X3RibCB8IGYKKygxIHJvdykKKworLS0g Q2xlYW4gdXAKK0RST1AgVEFCTEUgaW5kZXhfdGVzdDsKK0RST1AgVEFCTEUgam9pbl90ZXN0Owor RFJPUCBGVU5DVElPTiBnZXRfZGF0YV9sZW5ndGg7CitEUk9QIEZVTkNUSU9OIHNob3dfaW5kZXhf c3RhdHVzOworRFJPUCBUQUJMRSBpbmRjaGVja3htaW5fdGVzdCBDQVNDQURFOworREVBTExPQ0FU RSBpZHhfcGxhbjsKK0RST1AgVEFCTEUgcHJlcF9pZHhfdGVzdDsKK0RST1AgVEFCTEUgcGFydF90 YmwgQ0FTQ0FERTsKIC0tIEZhaWx1cmUgZm9yIHVuYXV0aG9yaXplZCB1c2VyCiBDUkVBVEUgUk9M RSByZWdyZXNzX3JlaW5kZXh1c2VyIE5PTE9HSU47CiBTRVQgU0VTU0lPTiBST0xFIHJlZ3Jlc3Nf cmVpbmRleHVzZXI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfaW5k ZXguc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX2luZGV4LnNxbAppbmRleCAwNjhj NjZiOTVhLi4yZTYyOTNlZGEwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVh dGVfaW5kZXguc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9pbmRleC5zcWwK QEAgLTE0MTUsNiArMTQxNSwyOTcgQEAgRU5EOwogLS0gY29uY3VycmVudGx5CiBSRUlOREVYIFND SEVNQSBDT05DVVJSRU5UTFkgc2NoZW1hX3RvX3JlaW5kZXg7CiAKKy0tIFRlc3QgaW5kZXggdmlz aWJpbGl0eSBmdW5jdGlvbmFsaXR5CisKK0NSRUFURSBUQUJMRSBpbmRleF90ZXN0KAorICAgIGlk IElOVCBQUklNQVJZIEtFWSwKKyAgICBkYXRhIFRFWFQsCisgICAgbnVtIElOVCwKKyAgICB2ZWN0 b3IgSU5UW10sCisgICAgcmFuZ2UgSU5UNFJBTkdFCispOworCitJTlNFUlQgSU5UTyBpbmRleF90 ZXN0CitTRUxFQ1QKKyAgICBnLAorICAgICdkYXRhICcgfHwgZywKKyAgICBnICUgMTAwLAorICAg IEFSUkFZW2csIGcrMSwgZysyXSwKKyAgICBpbnQ0cmFuZ2UoZywgZysxMCkKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDEwMDApIGc7CisKKy0tIEZ1bmN0aW9uIGZvciB0ZXN0aW5nCitDUkVBVEUg RlVOQ1RJT04gZ2V0X2RhdGFfbGVuZ3RoKHRleHQpIFJFVFVSTlMgSU5UIEFTICQkCisgICAgU0VM RUNUIGxlbmd0aCgkMSk7CiskJCBMQU5HVUFHRSBTUUwgSU1NVVRBQkxFOworCistLSBIZWxwZXIg ZnVuY3Rpb24gdG8gc2hvdyBpbmRleCBzdGF0dXMKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9O IHNob3dfaW5kZXhfc3RhdHVzKGluZGV4X25hbWUgdGV4dCkKK1JFVFVSTlMgVEFCTEUgKAorICAg IGluZGV4cmVsaWQgcmVnY2xhc3MsCisgICAgaW5kaXN2YWxpZCBib29sZWFuLAorICAgIGluZGlz cmVhZHkgYm9vbGVhbiwKKyAgICBpbmRpc2xpdmUgYm9vbGVhbiwKKyAgICBpbmRpc3Zpc2libGUg Ym9vbGVhbgorKSBBUyAkJAorQkVHSU4KKyAgICBSRVRVUk4gUVVFUlkgRVhFQ1VURSBmb3JtYXQo JworICAgICAgICBTRUxFQ1QgaW5kZXhyZWxpZDo6cmVnY2xhc3MsIGluZGlzdmFsaWQsIGluZGlz cmVhZHksIGluZGlzbGl2ZSwgaW5kaXN2aXNpYmxlCisgICAgICAgIEZST00gcGdfaW5kZXgKKyAg ICAgICAgV0hFUkUgaW5kZXhyZWxpZCA9ICVMOjpyZWdjbGFzcycsIGluZGV4X25hbWUpOworRU5E OworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworLS0gQ3JlYXRlIGFuZCB0ZXN0IGVhY2ggaW5kZXgg dHlwZQorLS0gMS4gQmFzaWMgc2luZ2xlLWNvbHVtbiBpbmRleAorQ1JFQVRFIElOREVYIGlkeF9z aW5nbGUgT04gaW5kZXhfdGVzdChkYXRhKTsKK1NFTEVDVCBzaG93X2luZGV4X3N0YXR1cygnaWR4 X3NpbmdsZScpOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGluZGV4X3Rlc3Qg V0hFUkUgZGF0YSA9ICdkYXRhIDUwMCc7CitBTFRFUiBJTkRFWCBpZHhfc2luZ2xlIElOVklTSUJM RTsKK1NFTEVDVCBzaG93X2luZGV4X3N0YXR1cygnaWR4X3NpbmdsZScpOworRVhQTEFJTiAoQ09T VFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGluZGV4X3Rlc3QgV0hFUkUgZGF0YSA9ICdkYXRhIDUwMCc7 CitBTFRFUiBJTkRFWCBpZHhfc2luZ2xlIFZJU0lCTEU7CitTRUxFQ1Qgc2hvd19pbmRleF9zdGF0 dXMoJ2lkeF9zaW5nbGUnKTsKKworLS0gMi4gTXVsdGktY29sdW1uIGluZGV4CitDUkVBVEUgSU5E RVggaWR4X211bHRpIE9OIGluZGV4X3Rlc3QobnVtLCBkYXRhKTsKK1NFTEVDVCBzaG93X2luZGV4 X3N0YXR1cygnaWR4X211bHRpJyk7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00g aW5kZXhfdGVzdCBXSEVSRSBudW0gPSA1MCBBTkQgZGF0YSA+ICdkYXRhIDUwMCc7CitBTFRFUiBJ TkRFWCBpZHhfbXVsdGkgSU5WSVNJQkxFOworU0VMRUNUIHNob3dfaW5kZXhfc3RhdHVzKCdpZHhf bXVsdGknKTsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBpbmRleF90ZXN0IFdI RVJFIG51bSA9IDUwIEFORCBkYXRhID4gJ2RhdGEgNTAwJzsKK0FMVEVSIElOREVYIGlkeF9tdWx0 aSBWSVNJQkxFOworU0VMRUNUIHNob3dfaW5kZXhfc3RhdHVzKCdpZHhfbXVsdGknKTsKKworLS0g My4gUGFydGlhbCBpbmRleAorQ1JFQVRFIElOREVYIGlkeF9wYXJ0aWFsIE9OIGluZGV4X3Rlc3Qo bnVtKSBXSEVSRSBudW0gPCA1MDsKK1NFTEVDVCBzaG93X2luZGV4X3N0YXR1cygnaWR4X3BhcnRp YWwnKTsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBpbmRleF90ZXN0IFdIRVJF IG51bSA9IDI1OworQUxURVIgSU5ERVggaWR4X3BhcnRpYWwgSU5WSVNJQkxFOworU0VMRUNUIHNo b3dfaW5kZXhfc3RhdHVzKCdpZHhfcGFydGlhbCcpOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxF Q1QgKiBGUk9NIGluZGV4X3Rlc3QgV0hFUkUgbnVtID0gMjU7CitBTFRFUiBJTkRFWCBpZHhfcGFy dGlhbCBWSVNJQkxFOworU0VMRUNUIHNob3dfaW5kZXhfc3RhdHVzKCdpZHhfcGFydGlhbCcpOwor CistLSA0LiBFeHByZXNzaW9uIGluZGV4CitDUkVBVEUgSU5ERVggaWR4X2V4cHJlc3Npb24gT04g aW5kZXhfdGVzdCgobG93ZXIoZGF0YSkpKTsKK1NFTEVDVCBzaG93X2luZGV4X3N0YXR1cygnaWR4 X2V4cHJlc3Npb24nKTsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBpbmRleF90 ZXN0IFdIRVJFIGxvd2VyKGRhdGEpID0gJ2RhdGEgNTAwJzsKK0FMVEVSIElOREVYIGlkeF9leHBy ZXNzaW9uIElOVklTSUJMRTsKK1NFTEVDVCBzaG93X2luZGV4X3N0YXR1cygnaWR4X2V4cHJlc3Np b24nKTsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBpbmRleF90ZXN0IFdIRVJF IGxvd2VyKGRhdGEpID0gJ2RhdGEgNTAwJzsKK0FMVEVSIElOREVYIGlkeF9leHByZXNzaW9uIFZJ U0lCTEU7CitTRUxFQ1Qgc2hvd19pbmRleF9zdGF0dXMoJ2lkeF9leHByZXNzaW9uJyk7CisKKy0t IDUuIEdJTiBpbmRleAorQ1JFQVRFIElOREVYIGlkeF9naW4gT04gaW5kZXhfdGVzdCBVU0lORyBn aW4odmVjdG9yKTsKK1NFTEVDVCBzaG93X2luZGV4X3N0YXR1cygnaWR4X2dpbicpOworRVhQTEFJ TiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGluZGV4X3Rlc3QgV0hFUkUgdmVjdG9yIEA+IEFS UkFZWzUwMF07CitBTFRFUiBJTkRFWCBpZHhfZ2luIElOVklTSUJMRTsKK1NFTEVDVCBzaG93X2lu ZGV4X3N0YXR1cygnaWR4X2dpbicpOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9N IGluZGV4X3Rlc3QgV0hFUkUgdmVjdG9yIEA+IEFSUkFZWzUwMF07CitBTFRFUiBJTkRFWCBpZHhf Z2luIFZJU0lCTEU7CitTRUxFQ1Qgc2hvd19pbmRleF9zdGF0dXMoJ2lkeF9naW4nKTsKKworLS0g Ni4gR2lTVCBpbmRleAorQ1JFQVRFIElOREVYIGlkeF9naXN0IE9OIGluZGV4X3Rlc3QgVVNJTkcg Z2lzdChyYW5nZSk7CitTRUxFQ1Qgc2hvd19pbmRleF9zdGF0dXMoJ2lkeF9naXN0Jyk7CitFWFBM QUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gaW5kZXhfdGVzdCBXSEVSRSByYW5nZSAmJiBp bnQ0cmFuZ2UoMTAwLCAxMTApOworQUxURVIgSU5ERVggaWR4X2dpc3QgSU5WSVNJQkxFOworU0VM RUNUIHNob3dfaW5kZXhfc3RhdHVzKCdpZHhfZ2lzdCcpOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBT RUxFQ1QgKiBGUk9NIGluZGV4X3Rlc3QgV0hFUkUgcmFuZ2UgJiYgaW50NHJhbmdlKDEwMCwgMTEw KTsKK0FMVEVSIElOREVYIGlkeF9naXN0IFZJU0lCTEU7CitTRUxFQ1Qgc2hvd19pbmRleF9zdGF0 dXMoJ2lkeF9naXN0Jyk7CisKKy0tIDcuIENvdmVyaW5nIGluZGV4CitDUkVBVEUgSU5ERVggaWR4 X2NvdmVyaW5nIE9OIGluZGV4X3Rlc3QobnVtKSBJTkNMVURFIChkYXRhKTsKK1NFTEVDVCBzaG93 X2luZGV4X3N0YXR1cygnaWR4X2NvdmVyaW5nJyk7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVD VCBudW0sIGRhdGEgRlJPTSBpbmRleF90ZXN0IFdIRVJFIG51bSA9IDUwOworQUxURVIgSU5ERVgg aWR4X2NvdmVyaW5nIElOVklTSUJMRTsKK1NFTEVDVCBzaG93X2luZGV4X3N0YXR1cygnaWR4X2Nv dmVyaW5nJyk7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBudW0sIGRhdGEgRlJPTSBpbmRl eF90ZXN0IFdIRVJFIG51bSA9IDUwOworQUxURVIgSU5ERVggaWR4X2NvdmVyaW5nIFZJU0lCTEU7 CitTRUxFQ1Qgc2hvd19pbmRleF9zdGF0dXMoJ2lkeF9jb3ZlcmluZycpOworCistLSA4LiBVbmlx dWUgaW5kZXgKK0NSRUFURSBVTklRVUUgSU5ERVggaWR4X3VuaXF1ZSBPTiBpbmRleF90ZXN0KGlk LCBkYXRhKTsKK1NFTEVDVCBzaG93X2luZGV4X3N0YXR1cygnaWR4X3VuaXF1ZScpOworRVhQTEFJ TiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGluZGV4X3Rlc3QgV0hFUkUgaWQgPSA1MDAgQU5E IGRhdGEgPSAnZGF0YSA1MDAnOworQUxURVIgSU5ERVggaWR4X3VuaXF1ZSBJTlZJU0lCTEU7CitT RUxFQ1Qgc2hvd19pbmRleF9zdGF0dXMoJ2lkeF91bmlxdWUnKTsKK0VYUExBSU4gKENPU1RTIE9G RikgU0VMRUNUICogRlJPTSBpbmRleF90ZXN0IFdIRVJFIGlkID0gNTAwIEFORCBkYXRhID0gJ2Rh dGEgNTAwJzsKK0FMVEVSIElOREVYIGlkeF91bmlxdWUgVklTSUJMRTsKK1NFTEVDVCBzaG93X2lu ZGV4X3N0YXR1cygnaWR4X3VuaXF1ZScpOworCistLSA5LiBGdW5jdGlvbi1iYXNlZCBpbmRleAor Q1JFQVRFIElOREVYIGlkeF9mdW5jIE9OIGluZGV4X3Rlc3QoZ2V0X2RhdGFfbGVuZ3RoKGRhdGEp KTsKK1NFTEVDVCBzaG93X2luZGV4X3N0YXR1cygnaWR4X2Z1bmMnKTsKK0VYUExBSU4gKENPU1RT IE9GRikgU0VMRUNUICogRlJPTSBpbmRleF90ZXN0IFdIRVJFIGdldF9kYXRhX2xlbmd0aChkYXRh KSA9IDEwOworQUxURVIgSU5ERVggaWR4X2Z1bmMgSU5WSVNJQkxFOworU0VMRUNUIHNob3dfaW5k ZXhfc3RhdHVzKCdpZHhfZnVuYycpOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9N IGluZGV4X3Rlc3QgV0hFUkUgZ2V0X2RhdGFfbGVuZ3RoKGRhdGEpID0gMTA7CitBTFRFUiBJTkRF WCBpZHhfZnVuYyBWSVNJQkxFOworU0VMRUNUIHNob3dfaW5kZXhfc3RhdHVzKCdpZHhfZnVuYycp OworCistLSAxMC4gSm9pbiBpbmRleAorQ1JFQVRFIFRBQkxFIGpvaW5fdGVzdCAoaWQgSU5UIFBS SU1BUlkgS0VZLCByZWZfaWQgSU5UKTsKK0lOU0VSVCBJTlRPIGpvaW5fdGVzdCBTRUxFQ1QgZywg ZyAlIDEwMCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBnOworQ1JFQVRFIElOREVYIGlk eF9qb2luIE9OIGpvaW5fdGVzdChyZWZfaWQpOworU0VMRUNUIHNob3dfaW5kZXhfc3RhdHVzKCdp ZHhfam9pbicpOworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QganQuaWQsIGl0LmRhdGEK K0ZST00gam9pbl90ZXN0IGp0CitKT0lOIGluZGV4X3Rlc3QgaXQgT04ganQucmVmX2lkID0gaXQu bnVtCitXSEVSRSBqdC5pZCBCRVRXRUVOIDEwMCBBTkQgMjAwOworCistLSBTZXQgYWxsIGluZGV4 ZXMgdG8gaW52aXNpYmxlIHRvIGZvcmNlIHNlcSBzY2FuCitBTFRFUiBJTkRFWCBpZHhfam9pbiBJ TlZJU0lCTEU7CitBTFRFUiBJTkRFWCBqb2luX3Rlc3RfcGtleSBJTlZJU0lCTEU7CitTRUxFQ1Qg c2hvd19pbmRleF9zdGF0dXMoJ2lkeF9qb2luJyk7CitTRUxFQ1Qgc2hvd19pbmRleF9zdGF0dXMo J2pvaW5fdGVzdF9wa2V5Jyk7CisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBqdC5pZCwg aXQuZGF0YQorRlJPTSBqb2luX3Rlc3QganQKK0pPSU4gaW5kZXhfdGVzdCBpdCBPTiBqdC5yZWZf aWQgPSBpdC5udW0KK1dIRVJFIGp0LmlkIEJFVFdFRU4gMTAwIEFORCAyMDA7CisKK0FMVEVSIElO REVYIGlkeF9qb2luIFZJU0lCTEU7CitBTFRFUiBJTkRFWCBqb2luX3Rlc3RfcGtleSBWSVNJQkxF OworU0VMRUNUIHNob3dfaW5kZXhfc3RhdHVzKCdpZHhfam9pbicpOworU0VMRUNUIHNob3dfaW5k ZXhfc3RhdHVzKCdqb2luX3Rlc3RfcGtleScpOworCistLSBUZXN0IFJFSU5ERVggQ09OQ1VSUkVO VExZCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBpZHhfam9pbjsKK1NFTEVDVCBzaG93X2lu ZGV4X3N0YXR1cygnaWR4X2pvaW4nKTsKKworQUxURVIgSU5ERVggaWR4X2pvaW4gSU5WSVNJQkxF OworU0VMRUNUIHNob3dfaW5kZXhfc3RhdHVzKCdpZHhfam9pbicpOworUkVJTkRFWCBJTkRFWCBD T05DVVJSRU5UTFkgaWR4X2pvaW47CitTRUxFQ1Qgc2hvd19pbmRleF9zdGF0dXMoJ2lkeF9qb2lu Jyk7CisKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoJ2lkeF9qb2luJzo6cmVnY2xhc3MpOworQUxU RVIgSU5ERVggaWR4X2pvaW4gVklTSUJMRTsKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoJ2lkeF9q b2luJzo6cmVnY2xhc3MpOworCistLSBUZXN0IGluZGV4IHZpc2liaWxpdHkgd2l0aCBpbmRjaGVj a3htaW4gYmVpbmcgdHJ1ZQorCitDUkVBVEUgVEFCTEUgaW5kY2hlY2t4bWluX3Rlc3QoaWQgaW50 IFBSSU1BUlkgS0VZKTsKK0lOU0VSVCBJTlRPIGluZGNoZWNreG1pbl90ZXN0IFZBTFVFUyAoMSks ICgyKSwgKDMpOworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHhfY2hlY2t4bWluIE9OIGlu ZGNoZWNreG1pbl90ZXN0KGlkKTsKK0JFR0lOOworLS0gU2ltdWxhdGUgaW5kY2hlY2t4bWluIGJl aW5nIHRydWUKK1VQREFURSBwZ19pbmRleCBTRVQgaW5kY2hlY2t4bWluID0gdHJ1ZSBXSEVSRSBp bmRleHJlbGlkID0gJ2lkeF9jaGVja3htaW4nOjpyZWdjbGFzczsKK0FMVEVSIElOREVYIGlkeF9j aGVja3htaW4gSU5WSVNJQkxFOyAgLS0gZXhwZWN0IGZhaWwKK1JPTExCQUNLOworCistLSBUZXN0 IHByZXBhcmVkIHN0YXRlbWVudHMgd2l0aCBpbmRleCB2aXNpYmlsaXR5CitDUkVBVEUgVEFCTEUg cHJlcF9pZHhfdGVzdCAoaWQgaW50LCBkYXRhIHRleHQpOworQ1JFQVRFIElOREVYIHByZXBfaWR4 MSBPTiBwcmVwX2lkeF90ZXN0KGRhdGEpOworSU5TRVJUIElOVE8gcHJlcF9pZHhfdGVzdCBTRUxF Q1QgZywgJ2RhdGEgJyB8fCBnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKSBnOworCistLSBU ZXN0IHdpdGggdmlzaWJsZSBpbmRleAorUFJFUEFSRSBpZHhfcGxhbiBBUyBTRUxFQ1QgKiBGUk9N IHByZXBfaWR4X3Rlc3QgV0hFUkUgZGF0YSA9ICQxOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVD VVRFIGlkeF9wbGFuKCdkYXRhIDEnKTsKK0VYRUNVVEUgaWR4X3BsYW4oJ2RhdGEgMScpOworCist LSBUZXN0IHdpdGggaW52aXNpYmxlIGluZGV4CitBTFRFUiBJTkRFWCBwcmVwX2lkeDEgSU5WSVNJ QkxFOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIGlkeF9wbGFuKCdkYXRhIDEnKTsKK0VY RUNVVEUgaWR4X3BsYW4oJ2RhdGEgMScpOworCistLSBUZXN0IHdpdGggdXNlX2ludmlzaWJsZV9p bmRleAorU0VUIHVzZV9pbnZpc2libGVfaW5kZXggVE8gb247CitFWFBMQUlOIChDT1NUUyBPRkYp IEVYRUNVVEUgaWR4X3BsYW4oJ2RhdGEgMScpOworRVhFQ1VURSBpZHhfcGxhbignZGF0YSAxJyk7 CitTRVQgdXNlX2ludmlzaWJsZV9pbmRleCBUTyBvZmY7CistLSBBc3NlcnQgcGxhbiBjYWNoZSBp cyByZXNldCBhbmQgaW5kZXggaXMgbm90IHVzZWQKK0VYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VU RSBpZHhfcGxhbignZGF0YSAxJyk7CisKKy0tIE1ha2UgaW5kZXggdmlzaWJsZSBhbmQgdGVzdCBh Z2FpbgorQUxURVIgSU5ERVggcHJlcF9pZHgxIFZJU0lCTEU7CitFWFBMQUlOIChDT1NUUyBPRkYp IEVYRUNVVEUgaWR4X3BsYW4oJ2RhdGEgMScpOworRVhFQ1VURSBpZHhfcGxhbignZGF0YSAxJyk7 CisKKy0tIFRlc3QgaW5kZXggdmlzaWJpbGl0eSB3aXRoIHBhcnRpdGlvbmVkIHRhYmxlcworQ1JF QVRFIFRBQkxFIHBhcnRfdGJsKGlkIGludCwgZGF0YSB0ZXh0KSBQQVJUSVRJT04gQlkgUkFOR0Uo aWQpOworQ1JFQVRFIFRBQkxFIHBhcnQxIFBBUlRJVElPTiBPRiBwYXJ0X3RibCBGT1IgVkFMVUVT IEZST00gKDEpIFRPICgxMDApOworQ1JFQVRFIFRBQkxFIHBhcnQyIFBBUlRJVElPTiBPRiBwYXJ0 X3RibCBGT1IgVkFMVUVTIEZST00gKDEwMCkgVE8gKDIwMCk7CisKK0lOU0VSVCBJTlRPIHBhcnRf dGJsCitTRUxFQ1QgZywgJ2RhdGEgJyB8fCBnCitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxOTkp IGc7CisKK0NSRUFURSBJTkRFWCBpZHhfcGFydF90YmwgT04gcGFydF90YmwoZGF0YSk7CisKK1NF TEVDVCBjLnJlbG5hbWUsIGkuaW5kaXN2aXNpYmxlCitGUk9NIHBnX2luZGV4IGkKK0pPSU4gcGdf Y2xhc3MgYyBPTiBpLmluZGV4cmVsaWQgPSBjLm9pZAorV0hFUkUgYy5yZWxuYW1lIExJS0UgJ2lk eF9wYXJ0X3RibCUnCitPUkRFUiBCWSBjLnJlbG5hbWU7CisKKy0tIEZvcmNlIHVzZSBvZiBpbmRl eGVzIHRvIGF2b2lkIGZsYWt5IHRlc3QgcmVzdWx0cworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2Zm OworCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHBhcnRfdGJsIFdIRVJFIGRh dGEgPSAnZGF0YSA1MCc7CisKK0FMVEVSIElOREVYIGlkeF9wYXJ0X3RibCBJTlZJU0lCTEU7CisK K1NFTEVDVCBjLnJlbG5hbWUsIGkuaW5kaXN2aXNpYmxlCitGUk9NIHBnX2luZGV4IGkKK0pPSU4g cGdfY2xhc3MgYyBPTiBpLmluZGV4cmVsaWQgPSBjLm9pZAorV0hFUkUgYy5yZWxuYW1lIExJS0Ug J2lkeF9wYXJ0X3RibCUnCitPUkRFUiBCWSBjLnJlbG5hbWU7CisKKy0tIENoZWNrIHF1ZXJ5IHBs YW4gYWZ0ZXIgc2V0dGluZyBpbnZpc2libGUgKHNob3VsZCB1c2Ugc2VxIHNjYW4pCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHBhcnRfdGJsIFdIRVJFIGRhdGEgPSAnZGF0YSA1 MCc7CisKK1NFVCB1c2VfaW52aXNpYmxlX2luZGV4IFRPIG9uOworCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgKiBGUk9NIHBhcnRfdGJsIFdIRVJFIGRhdGEgPSAnZGF0YSA1MCc7CisKK1NF VCB1c2VfaW52aXNpYmxlX2luZGV4IFRPIG9mZjsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUICogRlJPTSBwYXJ0X3RibCBXSEVSRSBkYXRhID0gJ2RhdGEgNTAnOworCitBTFRFUiBJTkRF WCBpZHhfcGFydF90YmwgVklTSUJMRTsKKworU0VMRUNUIGMucmVsbmFtZSwgaS5pbmRpc3Zpc2li bGUKK0ZST00gcGdfaW5kZXggaQorSk9JTiBwZ19jbGFzcyBjIE9OIGkuaW5kZXhyZWxpZCA9IGMu b2lkCitXSEVSRSBjLnJlbG5hbWUgTElLRSAnaWR4X3BhcnRfdGJsJScKK09SREVSIEJZIGMucmVs bmFtZTsKKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSBwYXJ0X3RibCBXSEVS RSBkYXRhID0gJ2RhdGEgNTAnOworCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvbjsKKworLS0gVGVz dCBSRUlOREVYIG1haW50YWlucyB2aXNpYmlsaXR5IHNldHRpbmcKK0FMVEVSIElOREVYIGlkeF9w YXJ0X3RibCBJTlZJU0lCTEU7CitSRUlOREVYIElOREVYIGlkeF9wYXJ0X3RibDsKKworU0VMRUNU IGMucmVsbmFtZSwgaS5pbmRpc3Zpc2libGUKK0ZST00gcGdfaW5kZXggaQorSk9JTiBwZ19jbGFz cyBjIE9OIGkuaW5kZXhyZWxpZCA9IGMub2lkCitXSEVSRSBjLnJlbG5hbWUgTElLRSAnaWR4X3Bh cnRfdGJsJScKK09SREVSIEJZIGMucmVsbmFtZTsKKworLS0gQ2xlYW4gdXAKK0RST1AgVEFCTEUg aW5kZXhfdGVzdDsKK0RST1AgVEFCTEUgam9pbl90ZXN0OworRFJPUCBGVU5DVElPTiBnZXRfZGF0 YV9sZW5ndGg7CitEUk9QIEZVTkNUSU9OIHNob3dfaW5kZXhfc3RhdHVzOworRFJPUCBUQUJMRSBp bmRjaGVja3htaW5fdGVzdCBDQVNDQURFOworREVBTExPQ0FURSBpZHhfcGxhbjsKK0RST1AgVEFC TEUgcHJlcF9pZHhfdGVzdDsKK0RST1AgVEFCTEUgcGFydF90YmwgQ0FTQ0FERTsKKwogLS0gRmFp bHVyZSBmb3IgdW5hdXRob3JpemVkIHVzZXIKIENSRUFURSBST0xFIHJlZ3Jlc3NfcmVpbmRleHVz ZXIgTk9MT0dJTjsKIFNFVCBTRVNTSU9OIFJPTEUgcmVncmVzc19yZWluZGV4dXNlcjsKLS0gCjIu MzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --00000000000080f35b062d0fb45f--