From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 118159 invoked by alias); 10 Sep 2018 15:04:41 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 118132 invoked by uid 89); 10 Sep 2018 15:04:40 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-10.5 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=obtained, 5106, thr X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 10 Sep 2018 15:04:35 +0000 Received: from svr-orw-mbx-02.mgc.mentorg.com ([147.34.90.202]) by relay1.mentorg.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-SHA384:256) id 1fzNjt-0002wO-AE from ChungLin_Tang@mentor.com ; Mon, 10 Sep 2018 08:04:33 -0700 Received: from [0.0.0.0] (147.34.91.1) by svr-orw-mbx-02.mgc.mentorg.com (147.34.90.202) with Microsoft SMTP Server (TLS) id 15.0.1320.4; Mon, 10 Sep 2018 08:04:29 -0700 Reply-To: From: Chung-Lin Tang Subject: [PATCH, OpenACC 2.5, libgomp] Add *_async versions of runtime library API functions To: , Jakub Jelinek , Cesar Philippidis Message-ID: <4f2750a1-9935-6629-b7fd-ce6280f902c0@mentor.com> Date: Mon, 10 Sep 2018 15:04:00 -0000 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------164931A91D3794544BD25FCC" X-SW-Source: 2018-09/txt/msg00508.txt.bz2 --------------164931A91D3794544BD25FCC Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Content-length: 4811 This patch adds *_async versions of several OpenACC runtime library API functions, which is to allow execution of a function asynchronously on particular async stream, an addition to the standard since 2.5. Specifically, these functions: acc_copyin_async acc_copyout_async acc_copyout_finalize_async acc_create_async acc_delete_async acc_delete_finalize_async acc_memcpy_from_device_async acc_memcpy_to_device_async acc_update_device_async acc_update_self_async which have an additional 'int async' argument in additional from the non-async version. libgomp tested with offloading with no regressions, is this okay for trunk? Thanks, Chung-Lin 2018-09-10 Chung-Lin Tang libgomp/ * oacc-mem.c (memcpy_tofrom_device): New function, combined from acc_memcpy_to/from_device functions, now with async parameter. (acc_memcpy_to_device): Modify to use memcpy_tofrom_device. (acc_memcpy_from_device): Likewise. (acc_memcpy_to_device_async): New API function. (acc_memcpy_from_device_async): Likewise. (present_create_copy): Add async parameter and async setting/unsetting. (acc_create): Adjust present_create_copy call. (acc_copyin): Likewise. (acc_present_or_create): Likewise. (acc_present_or_copyin): Likewise. (acc_create_async): New API function. (acc_copyin_async): New API function. (delete_copyout): Add async parameter and async setting/unsetting. (acc_delete): Adjust delete_copyout call. (acc_copyout): Likewise. (acc_delete_async): New API function. (acc_copyout_async): Likewise. (update_dev_host): Add async parameter and async setting/unsetting. (acc_update_device): Adjust update_dev_host call. (acc_update_self): Likewise. (acc_update_device_async): New API function. (acc_update_self_async): Likewise. * openacc.h (acc_copyin_async): Declare new API function. (acc_create_async): Likewise. (acc_copyout_async): Likewise. (acc_delete_async): Likewise. (acc_update_device_async): Likewise. (acc_update_self_async): Likewise. (acc_memcpy_to_device_async): Likewise. (acc_memcpy_from_device_async): Likewise. * openacc_lib.h (acc_copyin_async_32_h): New subroutine. (acc_copyin_async_64_h): New subroutine. (acc_copyin_async_array_h): New subroutine. (acc_create_async_32_h): New subroutine. (acc_create_async_64_h): New subroutine. (acc_create_async_array_h): New subroutine. (acc_copyout_async_32_h): New subroutine. (acc_copyout_async_64_h): New subroutine. (acc_copyout_async_array_h): New subroutine. (acc_delete_async_32_h): New subroutine. (acc_delete_async_64_h): New subroutine. (acc_delete_async_array_h): New subroutine. (acc_update_device_async_32_h): New subroutine. (acc_update_device_async_64_h): New subroutine. (acc_update_device_async_array_h): New subroutine. (acc_update_self_async_32_h): New subroutine. (acc_update_self_async_64_h): New subroutine. (acc_update_self_async_array_h): New subroutine. * openacc.f90 (acc_copyin_async_32_h): New subroutine. (acc_copyin_async_64_h): New subroutine. (acc_copyin_async_array_h): New subroutine. (acc_create_async_32_h): New subroutine. (acc_create_async_64_h): New subroutine. (acc_create_async_array_h): New subroutine. (acc_copyout_async_32_h): New subroutine. (acc_copyout_async_64_h): New subroutine. (acc_copyout_async_array_h): New subroutine. (acc_delete_async_32_h): New subroutine. (acc_delete_async_64_h): New subroutine. (acc_delete_async_array_h): New subroutine. (acc_update_device_async_32_h): New subroutine. (acc_update_device_async_64_h): New subroutine. (acc_update_device_async_array_h): New subroutine. (acc_update_self_async_32_h): New subroutine. (acc_update_self_async_64_h): New subroutine. (acc_update_self_async_array_h): New subroutine. * libgomp.map (OACC_2.5): Add acc_copyin_async*, acc_copyout_async*, acc_copyout_finalize_async*, acc_create_async*, acc_delete_async*, acc_delete_finalize_async*, acc_memcpy_from_device_async*, acc_memcpy_to_device_async*, acc_update_device_async*, and acc_update_self_async* entries. * testsuite/libgomp.oacc-c-c++-common/lib-94.c: New test. * testsuite/libgomp.oacc-c-c++-common/lib-95.c: New test. * testsuite/libgomp.oacc-fortran/lib-16.f90: New test. --------------164931A91D3794544BD25FCC Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="async_api.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="async_api.patch" Content-length: 49642 SW5kZXg6IGxpYmdvbXAvbGliZ29tcC5tYXAKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gbGliZ29tcC9saWJnb21wLm1hcAkocmV2aXNpb24gMjY0MTky KQorKysgbGliZ29tcC9saWJnb21wLm1hcAkod29ya2luZyBjb3B5KQpAQCAt Mzg4LDE0ICszODgsNDggQEAgT0FDQ18yLjAuMSB7CiAKIE9BQ0NfMi41IHsK ICAgZ2xvYmFsOgorCWFjY19jb3B5aW5fYXN5bmM7CisJYWNjX2NvcHlpbl9h c3luY18zMl9oXzsKKwlhY2NfY29weWluX2FzeW5jXzY0X2hfOworCWFjY19j b3B5aW5fYXN5bmNfYXJyYXlfaF87CisJYWNjX2NvcHlvdXRfYXN5bmM7CisJ YWNjX2NvcHlvdXRfYXN5bmNfMzJfaF87CisJYWNjX2NvcHlvdXRfYXN5bmNf NjRfaF87CisJYWNjX2NvcHlvdXRfYXN5bmNfYXJyYXlfaF87CiAJYWNjX2Nv cHlvdXRfZmluYWxpemU7CiAJYWNjX2NvcHlvdXRfZmluYWxpemVfMzJfaF87 CiAJYWNjX2NvcHlvdXRfZmluYWxpemVfNjRfaF87CiAJYWNjX2NvcHlvdXRf ZmluYWxpemVfYXJyYXlfaF87CisJYWNjX2NvcHlvdXRfZmluYWxpemVfYXN5 bmM7CisJYWNjX2NvcHlvdXRfZmluYWxpemVfYXN5bmNfMzJfaF87CisJYWNj X2NvcHlvdXRfZmluYWxpemVfYXN5bmNfNjRfaF87CisJYWNjX2NvcHlvdXRf ZmluYWxpemVfYXN5bmNfYXJyYXlfaF87CisJYWNjX2NyZWF0ZV9hc3luYzsK KwlhY2NfY3JlYXRlX2FzeW5jXzMyX2hfOworCWFjY19jcmVhdGVfYXN5bmNf NjRfaF87CisJYWNjX2NyZWF0ZV9hc3luY19hcnJheV9oXzsKKwlhY2NfZGVs ZXRlX2FzeW5jOworCWFjY19kZWxldGVfYXN5bmNfMzJfaF87CisJYWNjX2Rl bGV0ZV9hc3luY182NF9oXzsKKwlhY2NfZGVsZXRlX2FzeW5jX2FycmF5X2hf OwogCWFjY19kZWxldGVfZmluYWxpemU7CiAJYWNjX2RlbGV0ZV9maW5hbGl6 ZV8zMl9oXzsKIAlhY2NfZGVsZXRlX2ZpbmFsaXplXzY0X2hfOwogCWFjY19k ZWxldGVfZmluYWxpemVfYXJyYXlfaF87CisJYWNjX2RlbGV0ZV9maW5hbGl6 ZV9hc3luYzsKKwlhY2NfZGVsZXRlX2ZpbmFsaXplX2FzeW5jXzMyX2hfOwor CWFjY19kZWxldGVfZmluYWxpemVfYXN5bmNfNjRfaF87CisJYWNjX2RlbGV0 ZV9maW5hbGl6ZV9hc3luY19hcnJheV9oXzsKKwlhY2NfbWVtY3B5X2Zyb21f ZGV2aWNlX2FzeW5jOworCWFjY19tZW1jcHlfdG9fZGV2aWNlX2FzeW5jOwor CWFjY191cGRhdGVfZGV2aWNlX2FzeW5jOworCWFjY191cGRhdGVfZGV2aWNl X2FzeW5jXzMyX2hfOworCWFjY191cGRhdGVfZGV2aWNlX2FzeW5jXzY0X2hf OworCWFjY191cGRhdGVfZGV2aWNlX2FzeW5jX2FycmF5X2hfOworCWFjY191 cGRhdGVfc2VsZl9hc3luYzsKKwlhY2NfdXBkYXRlX3NlbGZfYXN5bmNfMzJf aF87CisJYWNjX3VwZGF0ZV9zZWxmX2FzeW5jXzY0X2hfOworCWFjY191cGRh dGVfc2VsZl9hc3luY19hcnJheV9oXzsKIH0gT0FDQ18yLjAuMTsKIAogR09B Q0NfMi4wIHsKSW5kZXg6IGxpYmdvbXAvb2FjYy1tZW0uYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBsaWJnb21wL29hY2MtbWVtLmMJKHJldmlzaW9u IDI2NDE5MikKKysrIGxpYmdvbXAvb2FjYy1tZW0uYwkod29ya2luZyBjb3B5 KQpAQCAtMTUzLDggKzE1Myw5IEBAIGFjY19mcmVlICh2b2lkICpkKQogICAg IGdvbXBfZmF0YWwgKCJlcnJvciBpbiBmcmVlaW5nIGRldmljZSBtZW1vcnkg aW4gJXMiLCBfX0ZVTkNUSU9OX18pOwogfQogCi12b2lkCi1hY2NfbWVtY3B5 X3RvX2RldmljZSAodm9pZCAqZCwgdm9pZCAqaCwgc2l6ZV90IHMpCitzdGF0 aWMgdm9pZAorbWVtY3B5X3RvZnJvbV9kZXZpY2UgKGJvb2wgZnJvbSwgdm9p ZCAqZCwgdm9pZCAqaCwgc2l6ZV90IHMsIGludCBhc3luYywKKwkJICAgICAg Y29uc3QgY2hhciAqbGliZm5uYW1lKQogewogICAvKiBObyBuZWVkIHRvIGNh bGwgbGF6eSBvcGVuIGhlcmUsIGFzIHRoZSBkZXZpY2UgcG9pbnRlciBtdXN0 IGhhdmUKICAgICAgYmVlbiBvYnRhaW5lZCBmcm9tIGEgcm91dGluZSB0aGF0 IGRpZCB0aGF0LiAgKi8KQEAgLTE2NCwzMSArMTY1LDQ5IEBAIGFjY19mcmVl ICh2b2lkICpkKQogCiAgIGlmICh0aHItPmRldi0+Y2FwYWJpbGl0aWVzICYg R09NUF9PRkZMT0FEX0NBUF9TSEFSRURfTUVNKQogICAgIHsKLSAgICAgIG1l bW1vdmUgKGQsIGgsIHMpOworICAgICAgaWYgKGZyb20pCisJbWVtbW92ZSAo aCwgZCwgcyk7CisgICAgICBlbHNlCisJbWVtbW92ZSAoZCwgaCwgcyk7CiAg ICAgICByZXR1cm47CiAgICAgfQogCi0gIGlmICghdGhyLT5kZXYtPmhvc3Qy ZGV2X2Z1bmMgKHRoci0+ZGV2LT50YXJnZXRfaWQsIGQsIGgsIHMpKQotICAg IGdvbXBfZmF0YWwgKCJlcnJvciBpbiAlcyIsIF9fRlVOQ1RJT05fXyk7Cisg IGlmIChhc3luYyA+IGFjY19hc3luY19zeW5jKQorICAgIHRoci0+ZGV2LT5v cGVuYWNjLmFzeW5jX3NldF9hc3luY19mdW5jIChhc3luYyk7CisKKyAgYm9v bCByZXQgPSAoZnJvbQorCSAgICAgID8gdGhyLT5kZXYtPmRldjJob3N0X2Z1 bmMgKHRoci0+ZGV2LT50YXJnZXRfaWQsIGgsIGQsIHMpCisJICAgICAgOiB0 aHItPmRldi0+aG9zdDJkZXZfZnVuYyAodGhyLT5kZXYtPnRhcmdldF9pZCwg ZCwgaCwgcykpOworCisgIGlmIChhc3luYyA+IGFjY19hc3luY19zeW5jKQor ICAgIHRoci0+ZGV2LT5vcGVuYWNjLmFzeW5jX3NldF9hc3luY19mdW5jIChh Y2NfYXN5bmNfc3luYyk7CisKKyAgaWYgKCFyZXQpCisgICAgZ29tcF9mYXRh bCAoImVycm9yIGluICVzIiwgbGliZm5uYW1lKTsKIH0KIAogdm9pZAotYWNj X21lbWNweV9mcm9tX2RldmljZSAodm9pZCAqaCwgdm9pZCAqZCwgc2l6ZV90 IHMpCithY2NfbWVtY3B5X3RvX2RldmljZSAodm9pZCAqZCwgdm9pZCAqaCwg c2l6ZV90IHMpCiB7Ci0gIC8qIE5vIG5lZWQgdG8gY2FsbCBsYXp5IG9wZW4g aGVyZSwgYXMgdGhlIGRldmljZSBwb2ludGVyIG11c3QgaGF2ZQotICAgICBi ZWVuIG9idGFpbmVkIGZyb20gYSByb3V0aW5lIHRoYXQgZGlkIHRoYXQuICAq LwotICBzdHJ1Y3QgZ29hY2NfdGhyZWFkICp0aHIgPSBnb2FjY190aHJlYWQg KCk7CisgIG1lbWNweV90b2Zyb21fZGV2aWNlIChmYWxzZSwgZCwgaCwgcywg YWNjX2FzeW5jX3N5bmMsIF9fRlVOQ1RJT05fXyk7Cit9CiAKLSAgYXNzZXJ0 ICh0aHIgJiYgdGhyLT5kZXYpOwordm9pZAorYWNjX21lbWNweV90b19kZXZp Y2VfYXN5bmMgKHZvaWQgKmQsIHZvaWQgKmgsIHNpemVfdCBzLCBpbnQgYXN5 bmMpCit7CisgIG1lbWNweV90b2Zyb21fZGV2aWNlIChmYWxzZSwgZCwgaCwg cywgYXN5bmMsIF9fRlVOQ1RJT05fXyk7Cit9CiAKLSAgaWYgKHRoci0+ZGV2 LT5jYXBhYmlsaXRpZXMgJiBHT01QX09GRkxPQURfQ0FQX1NIQVJFRF9NRU0p Ci0gICAgewotICAgICAgbWVtbW92ZSAoaCwgZCwgcyk7Ci0gICAgICByZXR1 cm47Ci0gICAgfQordm9pZAorYWNjX21lbWNweV9mcm9tX2RldmljZSAodm9p ZCAqaCwgdm9pZCAqZCwgc2l6ZV90IHMpCit7CisgIG1lbWNweV90b2Zyb21f ZGV2aWNlICh0cnVlLCBkLCBoLCBzLCBhY2NfYXN5bmNfc3luYywgX19GVU5D VElPTl9fKTsKK30KIAotICBpZiAoIXRoci0+ZGV2LT5kZXYyaG9zdF9mdW5j ICh0aHItPmRldi0+dGFyZ2V0X2lkLCBoLCBkLCBzKSkKLSAgICBnb21wX2Zh dGFsICgiZXJyb3IgaW4gJXMiLCBfX0ZVTkNUSU9OX18pOwordm9pZAorYWNj X21lbWNweV9mcm9tX2RldmljZV9hc3luYyAodm9pZCAqaCwgdm9pZCAqZCwg c2l6ZV90IHMsIGludCBhc3luYykKK3sKKyAgbWVtY3B5X3RvZnJvbV9kZXZp Y2UgKHRydWUsIGQsIGgsIHMsIGFzeW5jLCBfX0ZVTkNUSU9OX18pOwogfQog CiAvKiBSZXR1cm4gdGhlIGRldmljZSBwb2ludGVyIHRoYXQgY29ycmVzcG9u ZHMgdG8gaG9zdCBkYXRhIEguICBPciBOVUxMCkBAIC00MjgsNyArNDQ3LDcg QEAgYWNjX3VubWFwX2RhdGEgKHZvaWQgKmgpCiAjZGVmaW5lIEZMQUdfQ09Q WSAoMSA8PCAyKQogCiBzdGF0aWMgdm9pZCAqCi1wcmVzZW50X2NyZWF0ZV9j b3B5ICh1bnNpZ25lZCBmLCB2b2lkICpoLCBzaXplX3QgcykKK3ByZXNlbnRf Y3JlYXRlX2NvcHkgKHVuc2lnbmVkIGYsIHZvaWQgKmgsIHNpemVfdCBzLCBp bnQgYXN5bmMpCiB7CiAgIHZvaWQgKmQ7CiAgIHNwbGF5X3RyZWVfa2V5IG47 CkBAIC00OTAsMTEgKzUwOSwxNyBAQCBzdGF0aWMgdm9pZCAqCiAKICAgICAg IGdvbXBfbXV0ZXhfdW5sb2NrICgmYWNjX2Rldi0+bG9jayk7CiAKKyAgICAg IGlmIChhc3luYyA+IGFjY19hc3luY19zeW5jKQorCWFjY19kZXYtPm9wZW5h Y2MuYXN5bmNfc2V0X2FzeW5jX2Z1bmMgKGFzeW5jKTsKKwogICAgICAgdGd0 ID0gZ29tcF9tYXBfdmFycyAoYWNjX2RldiwgbWFwbnVtLCAmaG9zdGFkZHJz LCBOVUxMLCAmcywgJmtpbmRzLCB0cnVlLAogCQkJICAgR09NUF9NQVBfVkFS U19PUEVOQUNDKTsKICAgICAgIC8qIEluaXRpYWxpemUgZHluYW1pYyByZWZj b3VudC4gICovCiAgICAgICB0Z3QtPmxpc3RbMF0ua2V5LT5keW5hbWljX3Jl ZmNvdW50ID0gMTsKIAorICAgICAgaWYgKGFzeW5jID4gYWNjX2FzeW5jX3N5 bmMpCisJYWNjX2Rldi0+b3BlbmFjYy5hc3luY19zZXRfYXN5bmNfZnVuYyAo YWNjX2FzeW5jX3N5bmMpOworCiAgICAgICBnb21wX211dGV4X2xvY2sgKCZh Y2NfZGV2LT5sb2NrKTsKIAogICAgICAgZCA9IHRndC0+dG9fZnJlZTsKQEAg LTUxMCwxOSArNTM1LDMyIEBAIHN0YXRpYyB2b2lkICoKIHZvaWQgKgogYWNj X2NyZWF0ZSAodm9pZCAqaCwgc2l6ZV90IHMpCiB7Ci0gIHJldHVybiBwcmVz ZW50X2NyZWF0ZV9jb3B5IChGTEFHX1BSRVNFTlQgfCBGTEFHX0NSRUFURSwg aCwgcyk7CisgIHJldHVybiBwcmVzZW50X2NyZWF0ZV9jb3B5IChGTEFHX1BS RVNFTlQgfCBGTEFHX0NSRUFURSwgaCwgcywgYWNjX2FzeW5jX3N5bmMpOwog fQogCit2b2lkCithY2NfY3JlYXRlX2FzeW5jICh2b2lkICpoLCBzaXplX3Qg cywgaW50IGFzeW5jKQoreworICBwcmVzZW50X2NyZWF0ZV9jb3B5IChGTEFH X1BSRVNFTlQgfCBGTEFHX0NSRUFURSwgaCwgcywgYXN5bmMpOworfQorCiB2 b2lkICoKIGFjY19jb3B5aW4gKHZvaWQgKmgsIHNpemVfdCBzKQogewotICBy ZXR1cm4gcHJlc2VudF9jcmVhdGVfY29weSAoRkxBR19QUkVTRU5UIHwgRkxB R19DUkVBVEUgfCBGTEFHX0NPUFksIGgsIHMpOworICByZXR1cm4gcHJlc2Vu dF9jcmVhdGVfY29weSAoRkxBR19QUkVTRU5UIHwgRkxBR19DUkVBVEUgfCBG TEFHX0NPUFksIGgsIHMsCisJCQkgICAgICBhY2NfYXN5bmNfc3luYyk7CiB9 CiAKK3ZvaWQKK2FjY19jb3B5aW5fYXN5bmMgKHZvaWQgKmgsIHNpemVfdCBz LCBpbnQgYXN5bmMpCit7CisgIHByZXNlbnRfY3JlYXRlX2NvcHkgKEZMQUdf UFJFU0VOVCB8IEZMQUdfQ1JFQVRFIHwgRkxBR19DT1BZLCBoLCBzLCBhc3lu Yyk7Cit9CisKIHZvaWQgKgogYWNjX3ByZXNlbnRfb3JfY3JlYXRlICh2b2lk ICpoLCBzaXplX3QgcykKIHsKLSAgcmV0dXJuIHByZXNlbnRfY3JlYXRlX2Nv cHkgKEZMQUdfUFJFU0VOVCB8IEZMQUdfQ1JFQVRFLCBoLCBzKTsKKyAgcmV0 dXJuIHByZXNlbnRfY3JlYXRlX2NvcHkgKEZMQUdfUFJFU0VOVCB8IEZMQUdf Q1JFQVRFLCBoLCBzLCBhY2NfYXN5bmNfc3luYyk7CiB9CiAKIC8qIGFjY19w Y3JlYXRlIGlzIGFjY19wcmVzZW50X29yX2NyZWF0ZSBieSBhIGRpZmZlcmVu dCBuYW1lLiAgKi8KQEAgLTUzOSw3ICs1NzcsOCBAQCBhY2NfcGNyZWF0ZSAo dm9pZCAqaCwgc2l6ZV90IHMpCiB2b2lkICoKIGFjY19wcmVzZW50X29yX2Nv cHlpbiAodm9pZCAqaCwgc2l6ZV90IHMpCiB7Ci0gIHJldHVybiBwcmVzZW50 X2NyZWF0ZV9jb3B5IChGTEFHX1BSRVNFTlQgfCBGTEFHX0NSRUFURSB8IEZM QUdfQ09QWSwgaCwgcyk7CisgIHJldHVybiBwcmVzZW50X2NyZWF0ZV9jb3B5 IChGTEFHX1BSRVNFTlQgfCBGTEFHX0NSRUFURSB8IEZMQUdfQ09QWSwgaCwg cywKKwkJCSAgICAgIGFjY19hc3luY19zeW5jKTsKIH0KIAogLyogYWNjX3Bj b3B5aW4gaXMgYWNjX3ByZXNlbnRfb3JfY29weWluIGJ5IGEgZGlmZmVyZW50 IG5hbWUuICAqLwpAQCAtNTU3LDcgKzU5Niw3IEBAIGFjY19wY29weWluICh2 b2lkICpoLCBzaXplX3QgcykKICNkZWZpbmUgRkxBR19GSU5BTElaRSAoMSA8 PCAxKQogCiBzdGF0aWMgdm9pZAotZGVsZXRlX2NvcHlvdXQgKHVuc2lnbmVk IGYsIHZvaWQgKmgsIHNpemVfdCBzLCBjb25zdCBjaGFyICpsaWJmbm5hbWUp CitkZWxldGVfY29weW91dCAodW5zaWduZWQgZiwgdm9pZCAqaCwgc2l6ZV90 IHMsIGludCBhc3luYywgY29uc3QgY2hhciAqbGliZm5uYW1lKQogewogICBz aXplX3QgaG9zdF9zaXplOwogICBzcGxheV90cmVlX2tleSBuOwpAQCAtNjMz LDcgKzY3MiwxMyBAQCBzdGF0aWMgdm9pZAogCX0KIAogICAgICAgaWYgKGYg JiBGTEFHX0NPUFlPVVQpCi0JYWNjX2Rldi0+ZGV2Mmhvc3RfZnVuYyAoYWNj X2Rldi0+dGFyZ2V0X2lkLCBoLCBkLCBzKTsKKwl7CisJICBpZiAoYXN5bmMg PiBhY2NfYXN5bmNfc3luYykKKwkgICAgYWNjX2Rldi0+b3BlbmFjYy5hc3lu Y19zZXRfYXN5bmNfZnVuYyAoYXN5bmMpOworCSAgYWNjX2Rldi0+ZGV2Mmhv c3RfZnVuYyAoYWNjX2Rldi0+dGFyZ2V0X2lkLCBoLCBkLCBzKTsKKwkgIGlm IChhc3luYyA+IGFjY19hc3luY19zeW5jKQorCSAgICBhY2NfZGV2LT5vcGVu YWNjLmFzeW5jX3NldF9hc3luY19mdW5jIChhY2NfYXN5bmNfc3luYyk7CisJ fQogCiAgICAgICBnb21wX3JlbW92ZV92YXIgKGFjY19kZXYsIG4pOwogICAg IH0KQEAgLTY0NCw0MSArNjg5LDU0IEBAIHN0YXRpYyB2b2lkCiB2b2lkCiBh Y2NfZGVsZXRlICh2b2lkICpoICwgc2l6ZV90IHMpCiB7Ci0gIGRlbGV0ZV9j b3B5b3V0ICgwLCBoLCBzLCBfX0ZVTkNUSU9OX18pOworICBkZWxldGVfY29w eW91dCAoMCwgaCwgcywgYWNjX2FzeW5jX3N5bmMsIF9fRlVOQ1RJT05fXyk7 CiB9CiAKIHZvaWQKK2FjY19kZWxldGVfYXN5bmMgKHZvaWQgKmggLCBzaXpl X3QgcywgaW50IGFzeW5jKQoreworICBkZWxldGVfY29weW91dCAoMCwgaCwg cywgYXN5bmMsIF9fRlVOQ1RJT05fXyk7Cit9CisKK3ZvaWQKIGFjY19kZWxl dGVfZmluYWxpemUgKHZvaWQgKmggLCBzaXplX3QgcykKIHsKLSAgZGVsZXRl X2NvcHlvdXQgKEZMQUdfRklOQUxJWkUsIGgsIHMsIF9fRlVOQ1RJT05fXyk7 CisgIGRlbGV0ZV9jb3B5b3V0IChGTEFHX0ZJTkFMSVpFLCBoLCBzLCBhY2Nf YXN5bmNfc3luYywgX19GVU5DVElPTl9fKTsKIH0KIAogdm9pZAogYWNjX2Rl bGV0ZV9maW5hbGl6ZV9hc3luYyAodm9pZCAqaCAsIHNpemVfdCBzLCBpbnQg YXN5bmMpCiB7Ci0gIGRlbGV0ZV9jb3B5b3V0IChGTEFHX0ZJTkFMSVpFLCBo LCBzLCBfX0ZVTkNUSU9OX18pOworICBkZWxldGVfY29weW91dCAoRkxBR19G SU5BTElaRSwgaCwgcywgYXN5bmMsIF9fRlVOQ1RJT05fXyk7CiB9CiAKIHZv aWQKIGFjY19jb3B5b3V0ICh2b2lkICpoLCBzaXplX3QgcykKIHsKLSAgZGVs ZXRlX2NvcHlvdXQgKEZMQUdfQ09QWU9VVCwgaCwgcywgX19GVU5DVElPTl9f KTsKKyAgZGVsZXRlX2NvcHlvdXQgKEZMQUdfQ09QWU9VVCwgaCwgcywgYWNj X2FzeW5jX3N5bmMsIF9fRlVOQ1RJT05fXyk7CiB9CiAKIHZvaWQKK2FjY19j b3B5b3V0X2FzeW5jICh2b2lkICpoLCBzaXplX3QgcywgaW50IGFzeW5jKQor eworICBkZWxldGVfY29weW91dCAoRkxBR19DT1BZT1VULCBoLCBzLCBhc3lu YywgX19GVU5DVElPTl9fKTsKK30KKwordm9pZAogYWNjX2NvcHlvdXRfZmlu YWxpemUgKHZvaWQgKmgsIHNpemVfdCBzKQogewotICBkZWxldGVfY29weW91 dCAoRkxBR19DT1BZT1VUIHwgRkxBR19GSU5BTElaRSwgaCwgcywgX19GVU5D VElPTl9fKTsKKyAgZGVsZXRlX2NvcHlvdXQgKEZMQUdfQ09QWU9VVCB8IEZM QUdfRklOQUxJWkUsIGgsIHMsIGFjY19hc3luY19zeW5jLAorCQkgIF9fRlVO Q1RJT05fXyk7CiB9CiAKIHZvaWQKIGFjY19jb3B5b3V0X2ZpbmFsaXplX2Fz eW5jICh2b2lkICpoLCBzaXplX3QgcywgaW50IGFzeW5jKQogewotICBkZWxl dGVfY29weW91dCAoRkxBR19DT1BZT1VUIHwgRkxBR19GSU5BTElaRSwgaCwg cywgX19GVU5DVElPTl9fKTsKKyAgZGVsZXRlX2NvcHlvdXQgKEZMQUdfQ09Q WU9VVCB8IEZMQUdfRklOQUxJWkUsIGgsIHMsIGFzeW5jLCBfX0ZVTkNUSU9O X18pOwogfQogCiBzdGF0aWMgdm9pZAotdXBkYXRlX2Rldl9ob3N0IChpbnQg aXNfZGV2LCB2b2lkICpoLCBzaXplX3QgcykKK3VwZGF0ZV9kZXZfaG9zdCAo aW50IGlzX2Rldiwgdm9pZCAqaCwgc2l6ZV90IHMsIGludCBhc3luYykKIHsK ICAgc3BsYXlfdHJlZV9rZXkgbjsKICAgdm9pZCAqZDsKQEAgLTcwNCwxMSAr NzYyLDE3IEBAIHN0YXRpYyB2b2lkCiAgIGQgPSAodm9pZCAqKSAobi0+dGd0 LT50Z3Rfc3RhcnQgKyBuLT50Z3Rfb2Zmc2V0CiAJCSsgKHVpbnRwdHJfdCkg aCAtIG4tPmhvc3Rfc3RhcnQpOwogCisgIGlmIChhc3luYyA+IGFjY19hc3lu Y19zeW5jKQorICAgIGFjY19kZXYtPm9wZW5hY2MuYXN5bmNfc2V0X2FzeW5j X2Z1bmMgKGFzeW5jKTsKKwogICBpZiAoaXNfZGV2KQogICAgIGFjY19kZXYt Pmhvc3QyZGV2X2Z1bmMgKGFjY19kZXYtPnRhcmdldF9pZCwgZCwgaCwgcyk7 CiAgIGVsc2UKICAgICBhY2NfZGV2LT5kZXYyaG9zdF9mdW5jIChhY2NfZGV2 LT50YXJnZXRfaWQsIGgsIGQsIHMpOwogCisgIGlmIChhc3luYyA+IGFjY19h c3luY19zeW5jKQorICAgIGFjY19kZXYtPm9wZW5hY2MuYXN5bmNfc2V0X2Fz eW5jX2Z1bmMgKGFjY19hc3luY19zeW5jKTsKKwogICBnb21wX211dGV4X3Vu bG9jayAoJmFjY19kZXYtPmxvY2spOwogfQogCkBAIC03MTUsMTYgKzc3OSwy OCBAQCBzdGF0aWMgdm9pZAogdm9pZAogYWNjX3VwZGF0ZV9kZXZpY2UgKHZv aWQgKmgsIHNpemVfdCBzKQogewotICB1cGRhdGVfZGV2X2hvc3QgKDEsIGgs IHMpOworICB1cGRhdGVfZGV2X2hvc3QgKDEsIGgsIHMsIGFjY19hc3luY19z eW5jKTsKIH0KIAogdm9pZAorYWNjX3VwZGF0ZV9kZXZpY2VfYXN5bmMgKHZv aWQgKmgsIHNpemVfdCBzLCBpbnQgYXN5bmMpCit7CisgIHVwZGF0ZV9kZXZf aG9zdCAoMSwgaCwgcywgYXN5bmMpOworfQorCit2b2lkCiBhY2NfdXBkYXRl X3NlbGYgKHZvaWQgKmgsIHNpemVfdCBzKQogewotICB1cGRhdGVfZGV2X2hv c3QgKDAsIGgsIHMpOworICB1cGRhdGVfZGV2X2hvc3QgKDAsIGgsIHMsIGFj Y19hc3luY19zeW5jKTsKIH0KIAogdm9pZAorYWNjX3VwZGF0ZV9zZWxmX2Fz eW5jICh2b2lkICpoLCBzaXplX3QgcywgaW50IGFzeW5jKQoreworICB1cGRh dGVfZGV2X2hvc3QgKDAsIGgsIHMsIGFzeW5jKTsKK30KKwordm9pZAogZ29t cF9hY2NfaW5zZXJ0X3BvaW50ZXIgKHNpemVfdCBtYXBudW0sIHZvaWQgKipo b3N0YWRkcnMsIHNpemVfdCAqc2l6ZXMsCiAJCQkgdm9pZCAqa2luZHMpCiB7 CkluZGV4OiBsaWJnb21wL29wZW5hY2MuZjkwCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGxpYmdvbXAvb3BlbmFjYy5mOTAJKHJldmlzaW9uIDI2NDE5 MikKKysrIGxpYmdvbXAvb3BlbmFjYy5mOTAJKHdvcmtpbmcgY29weSkKQEAg LTMzMiw2ICszMzIsMTUwIEBAIG1vZHVsZSBvcGVuYWNjX2ludGVybmFsCiAg ICAgICBsb2dpY2FsIGFjY19pc19wcmVzZW50X2FycmF5X2gKICAgICAgIHR5 cGUgKCopLCBkaW1lbnNpb24gKC4uKSwgY29udGlndW91cyA6OiBhCiAgICAg ZW5kIGZ1bmN0aW9uCisKKyAgICBzdWJyb3V0aW5lIGFjY19jb3B5aW5fYXN5 bmNfMzJfaCAoYSwgbGVuLCBhc3luYykKKyAgICAgIHVzZSBpc29fY19iaW5k aW5nLCBvbmx5OiBjX2ludDMyX3QKKyAgICAgIHVzZSBvcGVuYWNjX2tpbmRz LCBvbmx5OiBhY2NfaGFuZGxlX2tpbmQKKyAgICAgICFHQ0MkIEFUVFJJQlVU RVMgTk9fQVJHX0NIRUNLIDo6IGEKKyAgICAgIHR5cGUgKCopLCBkaW1lbnNp b24gKCopIDo6IGEKKyAgICAgIGludGVnZXIgKGNfaW50MzJfdCkgbGVuCisg ICAgICBpbnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQpIGFzeW5jCisgICAgZW5k IHN1YnJvdXRpbmUKKworICAgIHN1YnJvdXRpbmUgYWNjX2NvcHlpbl9hc3lu Y182NF9oIChhLCBsZW4sIGFzeW5jKQorICAgICAgdXNlIGlzb19jX2JpbmRp bmcsIG9ubHk6IGNfaW50NjRfdAorICAgICAgdXNlIG9wZW5hY2Nfa2luZHMs IG9ubHk6IGFjY19oYW5kbGVfa2luZAorICAgICAgIUdDQyQgQVRUUklCVVRF UyBOT19BUkdfQ0hFQ0sgOjogYQorICAgICAgdHlwZSAoKiksIGRpbWVuc2lv biAoKikgOjogYQorICAgICAgaW50ZWdlciAoY19pbnQ2NF90KSBsZW4KKyAg ICAgIGludGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMKKyAgICBlbmQg c3Vicm91dGluZQorCisgICAgc3Vicm91dGluZSBhY2NfY29weWluX2FzeW5j X2FycmF5X2ggKGEsIGFzeW5jKQorICAgICAgdXNlIG9wZW5hY2Nfa2luZHMs IG9ubHk6IGFjY19oYW5kbGVfa2luZAorICAgICAgdHlwZSAoKiksIGRpbWVu c2lvbiAoLi4pLCBjb250aWd1b3VzIDo6IGEKKyAgICAgIGludGVnZXIgKGFj Y19oYW5kbGVfa2luZCkgYXN5bmMKKyAgICBlbmQgc3Vicm91dGluZQorCisg ICAgc3Vicm91dGluZSBhY2NfY3JlYXRlX2FzeW5jXzMyX2ggKGEsIGxlbiwg YXN5bmMpCisgICAgICB1c2UgaXNvX2NfYmluZGluZywgb25seTogY19pbnQz Ml90CisgICAgICB1c2Ugb3BlbmFjY19raW5kcywgb25seTogYWNjX2hhbmRs ZV9raW5kCisgICAgICAhR0NDJCBBVFRSSUJVVEVTIE5PX0FSR19DSEVDSyA6 OiBhCisgICAgICB0eXBlICgqKSwgZGltZW5zaW9uICgqKSA6OiBhCisgICAg ICBpbnRlZ2VyIChjX2ludDMyX3QpIGxlbgorICAgICAgaW50ZWdlciAoYWNj X2hhbmRsZV9raW5kKSBhc3luYworICAgIGVuZCBzdWJyb3V0aW5lCisKKyAg ICBzdWJyb3V0aW5lIGFjY19jcmVhdGVfYXN5bmNfNjRfaCAoYSwgbGVuLCBh c3luYykKKyAgICAgIHVzZSBpc29fY19iaW5kaW5nLCBvbmx5OiBjX2ludDY0 X3QKKyAgICAgIHVzZSBvcGVuYWNjX2tpbmRzLCBvbmx5OiBhY2NfaGFuZGxl X2tpbmQKKyAgICAgICFHQ0MkIEFUVFJJQlVURVMgTk9fQVJHX0NIRUNLIDo6 IGEKKyAgICAgIHR5cGUgKCopLCBkaW1lbnNpb24gKCopIDo6IGEKKyAgICAg IGludGVnZXIgKGNfaW50NjRfdCkgbGVuCisgICAgICBpbnRlZ2VyIChhY2Nf aGFuZGxlX2tpbmQpIGFzeW5jCisgICAgZW5kIHN1YnJvdXRpbmUKKworICAg IHN1YnJvdXRpbmUgYWNjX2NyZWF0ZV9hc3luY19hcnJheV9oIChhLCBhc3lu YykKKyAgICAgIHVzZSBvcGVuYWNjX2tpbmRzLCBvbmx5OiBhY2NfaGFuZGxl X2tpbmQKKyAgICAgIHR5cGUgKCopLCBkaW1lbnNpb24gKC4uKSwgY29udGln dW91cyA6OiBhCisgICAgICBpbnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQpIGFz eW5jCisgICAgZW5kIHN1YnJvdXRpbmUKKworICAgIHN1YnJvdXRpbmUgYWNj X2NvcHlvdXRfYXN5bmNfMzJfaCAoYSwgbGVuLCBhc3luYykKKyAgICAgIHVz ZSBpc29fY19iaW5kaW5nLCBvbmx5OiBjX2ludDMyX3QKKyAgICAgIHVzZSBv cGVuYWNjX2tpbmRzLCBvbmx5OiBhY2NfaGFuZGxlX2tpbmQKKyAgICAgICFH Q0MkIEFUVFJJQlVURVMgTk9fQVJHX0NIRUNLIDo6IGEKKyAgICAgIHR5cGUg KCopLCBkaW1lbnNpb24gKCopIDo6IGEKKyAgICAgIGludGVnZXIgKGNfaW50 MzJfdCkgbGVuCisgICAgICBpbnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQpIGFz eW5jCisgICAgZW5kIHN1YnJvdXRpbmUKKworICAgIHN1YnJvdXRpbmUgYWNj X2NvcHlvdXRfYXN5bmNfNjRfaCAoYSwgbGVuLCBhc3luYykKKyAgICAgIHVz ZSBpc29fY19iaW5kaW5nLCBvbmx5OiBjX2ludDY0X3QKKyAgICAgIHVzZSBv cGVuYWNjX2tpbmRzLCBvbmx5OiBhY2NfaGFuZGxlX2tpbmQKKyAgICAgICFH Q0MkIEFUVFJJQlVURVMgTk9fQVJHX0NIRUNLIDo6IGEKKyAgICAgIHR5cGUg KCopLCBkaW1lbnNpb24gKCopIDo6IGEKKyAgICAgIGludGVnZXIgKGNfaW50 NjRfdCkgbGVuCisgICAgICBpbnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQpIGFz eW5jCisgICAgZW5kIHN1YnJvdXRpbmUKKworICAgIHN1YnJvdXRpbmUgYWNj X2NvcHlvdXRfYXN5bmNfYXJyYXlfaCAoYSwgYXN5bmMpCisgICAgICB1c2Ug b3BlbmFjY19raW5kcywgb25seTogYWNjX2hhbmRsZV9raW5kCisgICAgICB0 eXBlICgqKSwgZGltZW5zaW9uICguLiksIGNvbnRpZ3VvdXMgOjogYQorICAg ICAgaW50ZWdlciAoYWNjX2hhbmRsZV9raW5kKSBhc3luYworICAgIGVuZCBz dWJyb3V0aW5lCisKKyAgICBzdWJyb3V0aW5lIGFjY19kZWxldGVfYXN5bmNf MzJfaCAoYSwgbGVuLCBhc3luYykKKyAgICAgIHVzZSBpc29fY19iaW5kaW5n LCBvbmx5OiBjX2ludDMyX3QKKyAgICAgIHVzZSBvcGVuYWNjX2tpbmRzLCBv bmx5OiBhY2NfaGFuZGxlX2tpbmQKKyAgICAgICFHQ0MkIEFUVFJJQlVURVMg Tk9fQVJHX0NIRUNLIDo6IGEKKyAgICAgIHR5cGUgKCopLCBkaW1lbnNpb24g KCopIDo6IGEKKyAgICAgIGludGVnZXIgKGNfaW50MzJfdCkgbGVuCisgICAg ICBpbnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQpIGFzeW5jCisgICAgZW5kIHN1 YnJvdXRpbmUKKworICAgIHN1YnJvdXRpbmUgYWNjX2RlbGV0ZV9hc3luY182 NF9oIChhLCBsZW4sIGFzeW5jKQorICAgICAgdXNlIGlzb19jX2JpbmRpbmcs IG9ubHk6IGNfaW50NjRfdAorICAgICAgdXNlIG9wZW5hY2Nfa2luZHMsIG9u bHk6IGFjY19oYW5kbGVfa2luZAorICAgICAgIUdDQyQgQVRUUklCVVRFUyBO T19BUkdfQ0hFQ0sgOjogYQorICAgICAgdHlwZSAoKiksIGRpbWVuc2lvbiAo KikgOjogYQorICAgICAgaW50ZWdlciAoY19pbnQ2NF90KSBsZW4KKyAgICAg IGludGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMKKyAgICBlbmQgc3Vi cm91dGluZQorCisgICAgc3Vicm91dGluZSBhY2NfZGVsZXRlX2FzeW5jX2Fy cmF5X2ggKGEsIGFzeW5jKQorICAgICAgdXNlIG9wZW5hY2Nfa2luZHMsIG9u bHk6IGFjY19oYW5kbGVfa2luZAorICAgICAgdHlwZSAoKiksIGRpbWVuc2lv biAoLi4pLCBjb250aWd1b3VzIDo6IGEKKyAgICAgIGludGVnZXIgKGFjY19o YW5kbGVfa2luZCkgYXN5bmMKKyAgICBlbmQgc3Vicm91dGluZQorCisgICAg c3Vicm91dGluZSBhY2NfdXBkYXRlX2RldmljZV9hc3luY18zMl9oIChhLCBs ZW4sIGFzeW5jKQorICAgICAgdXNlIGlzb19jX2JpbmRpbmcsIG9ubHk6IGNf aW50MzJfdAorICAgICAgdXNlIG9wZW5hY2Nfa2luZHMsIG9ubHk6IGFjY19o YW5kbGVfa2luZAorICAgICAgIUdDQyQgQVRUUklCVVRFUyBOT19BUkdfQ0hF Q0sgOjogYQorICAgICAgdHlwZSAoKiksIGRpbWVuc2lvbiAoKikgOjogYQor ICAgICAgaW50ZWdlciAoY19pbnQzMl90KSBsZW4KKyAgICAgIGludGVnZXIg KGFjY19oYW5kbGVfa2luZCkgYXN5bmMKKyAgICBlbmQgc3Vicm91dGluZQor CisgICAgc3Vicm91dGluZSBhY2NfdXBkYXRlX2RldmljZV9hc3luY182NF9o IChhLCBsZW4sIGFzeW5jKQorICAgICAgdXNlIGlzb19jX2JpbmRpbmcsIG9u bHk6IGNfaW50NjRfdAorICAgICAgdXNlIG9wZW5hY2Nfa2luZHMsIG9ubHk6 IGFjY19oYW5kbGVfa2luZAorICAgICAgIUdDQyQgQVRUUklCVVRFUyBOT19B UkdfQ0hFQ0sgOjogYQorICAgICAgdHlwZSAoKiksIGRpbWVuc2lvbiAoKikg OjogYQorICAgICAgaW50ZWdlciAoY19pbnQ2NF90KSBsZW4KKyAgICAgIGlu dGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMKKyAgICBlbmQgc3Vicm91 dGluZQorCisgICAgc3Vicm91dGluZSBhY2NfdXBkYXRlX2RldmljZV9hc3lu Y19hcnJheV9oIChhLCBhc3luYykKKyAgICAgIHVzZSBvcGVuYWNjX2tpbmRz LCBvbmx5OiBhY2NfaGFuZGxlX2tpbmQKKyAgICAgIHR5cGUgKCopLCBkaW1l bnNpb24gKC4uKSwgY29udGlndW91cyA6OiBhCisgICAgICBpbnRlZ2VyIChh Y2NfaGFuZGxlX2tpbmQpIGFzeW5jCisgICAgZW5kIHN1YnJvdXRpbmUKKwor ICAgIHN1YnJvdXRpbmUgYWNjX3VwZGF0ZV9zZWxmX2FzeW5jXzMyX2ggKGEs IGxlbiwgYXN5bmMpCisgICAgICB1c2UgaXNvX2NfYmluZGluZywgb25seTog Y19pbnQzMl90CisgICAgICB1c2Ugb3BlbmFjY19raW5kcywgb25seTogYWNj X2hhbmRsZV9raW5kCisgICAgICAhR0NDJCBBVFRSSUJVVEVTIE5PX0FSR19D SEVDSyA6OiBhCisgICAgICB0eXBlICgqKSwgZGltZW5zaW9uICgqKSA6OiBh CisgICAgICBpbnRlZ2VyIChjX2ludDMyX3QpIGxlbgorICAgICAgaW50ZWdl ciAoYWNjX2hhbmRsZV9raW5kKSBhc3luYworICAgIGVuZCBzdWJyb3V0aW5l CisKKyAgICBzdWJyb3V0aW5lIGFjY191cGRhdGVfc2VsZl9hc3luY182NF9o IChhLCBsZW4sIGFzeW5jKQorICAgICAgdXNlIGlzb19jX2JpbmRpbmcsIG9u bHk6IGNfaW50NjRfdAorICAgICAgdXNlIG9wZW5hY2Nfa2luZHMsIG9ubHk6 IGFjY19oYW5kbGVfa2luZAorICAgICAgIUdDQyQgQVRUUklCVVRFUyBOT19B UkdfQ0hFQ0sgOjogYQorICAgICAgdHlwZSAoKiksIGRpbWVuc2lvbiAoKikg OjogYQorICAgICAgaW50ZWdlciAoY19pbnQ2NF90KSBsZW4KKyAgICAgIGlu dGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMKKyAgICBlbmQgc3Vicm91 dGluZQorCisgICAgc3Vicm91dGluZSBhY2NfdXBkYXRlX3NlbGZfYXN5bmNf YXJyYXlfaCAoYSwgYXN5bmMpCisgICAgICB1c2Ugb3BlbmFjY19raW5kcywg b25seTogYWNjX2hhbmRsZV9raW5kCisgICAgICB0eXBlICgqKSwgZGltZW5z aW9uICguLiksIGNvbnRpZ3VvdXMgOjogYQorICAgICAgaW50ZWdlciAoYWNj X2hhbmRsZV9raW5kKSBhc3luYworICAgIGVuZCBzdWJyb3V0aW5lCiAgIGVu ZCBpbnRlcmZhY2UKIAogICBpbnRlcmZhY2UKQEAgLTUxMCw2ICs2NTQsNjAg QEAgbW9kdWxlIG9wZW5hY2NfaW50ZXJuYWwKICAgICAgIHR5cGUgKCopLCBk aW1lbnNpb24gKCopIDo6IGEKICAgICAgIGludGVnZXIgKGNfc2l6ZV90KSwg dmFsdWUgOjogbGVuCiAgICAgZW5kIGZ1bmN0aW9uCisKKyAgICBzdWJyb3V0 aW5lIGFjY19jb3B5aW5fYXN5bmNfbCAoYSwgbGVuLCBhc3luYykgJgorICAg ICAgICBiaW5kIChDLCBuYW1lID0gImFjY19jb3B5aW5fYXN5bmMiKQorICAg ICAgdXNlIGlzb19jX2JpbmRpbmcsIG9ubHk6IGNfc2l6ZV90LCBjX2ludAor ICAgICAgIUdDQyQgQVRUUklCVVRFUyBOT19BUkdfQ0hFQ0sgOjogYQorICAg ICAgdHlwZSAoKiksIGRpbWVuc2lvbiAoKikgOjogYQorICAgICAgaW50ZWdl ciAoY19zaXplX3QpLCB2YWx1ZSA6OiBsZW4KKyAgICAgIGludGVnZXIgKGNf aW50KSwgdmFsdWUgOjogYXN5bmMKKyAgICBlbmQgc3Vicm91dGluZQorCisg ICAgc3Vicm91dGluZSBhY2NfY3JlYXRlX2FzeW5jX2wgKGEsIGxlbiwgYXN5 bmMpICYKKyAgICAgICAgYmluZCAoQywgbmFtZSA9ICJhY2NfY3JlYXRlX2Fz eW5jIikKKyAgICAgIHVzZSBpc29fY19iaW5kaW5nLCBvbmx5OiBjX3NpemVf dCwgY19pbnQKKyAgICAgICFHQ0MkIEFUVFJJQlVURVMgTk9fQVJHX0NIRUNL IDo6IGEKKyAgICAgIHR5cGUgKCopLCBkaW1lbnNpb24gKCopIDo6IGEKKyAg ICAgIGludGVnZXIgKGNfc2l6ZV90KSwgdmFsdWUgOjogbGVuCisgICAgICBp bnRlZ2VyIChjX2ludCksIHZhbHVlIDo6IGFzeW5jCisgICAgZW5kIHN1YnJv dXRpbmUKKworICAgIHN1YnJvdXRpbmUgYWNjX2NvcHlvdXRfYXN5bmNfbCAo YSwgbGVuLCBhc3luYykgJgorICAgICAgICBiaW5kIChDLCBuYW1lID0gImFj Y19jb3B5b3V0X2FzeW5jIikKKyAgICAgIHVzZSBpc29fY19iaW5kaW5nLCBv bmx5OiBjX3NpemVfdCwgY19pbnQKKyAgICAgICFHQ0MkIEFUVFJJQlVURVMg Tk9fQVJHX0NIRUNLIDo6IGEKKyAgICAgIHR5cGUgKCopLCBkaW1lbnNpb24g KCopIDo6IGEKKyAgICAgIGludGVnZXIgKGNfc2l6ZV90KSwgdmFsdWUgOjog bGVuCisgICAgICBpbnRlZ2VyIChjX2ludCksIHZhbHVlIDo6IGFzeW5jCisg ICAgZW5kIHN1YnJvdXRpbmUKKworICAgIHN1YnJvdXRpbmUgYWNjX2RlbGV0 ZV9hc3luY19sIChhLCBsZW4sIGFzeW5jKSAmCisgICAgICAgIGJpbmQgKEMs IG5hbWUgPSAiYWNjX2RlbGV0ZV9hc3luYyIpCisgICAgICB1c2UgaXNvX2Nf YmluZGluZywgb25seTogY19zaXplX3QsIGNfaW50CisgICAgICAhR0NDJCBB VFRSSUJVVEVTIE5PX0FSR19DSEVDSyA6OiBhCisgICAgICB0eXBlICgqKSwg ZGltZW5zaW9uICgqKSA6OiBhCisgICAgICBpbnRlZ2VyIChjX3NpemVfdCks IHZhbHVlIDo6IGxlbgorICAgICAgaW50ZWdlciAoY19pbnQpLCB2YWx1ZSA6 OiBhc3luYworICAgIGVuZCBzdWJyb3V0aW5lCisKKyAgICBzdWJyb3V0aW5l IGFjY191cGRhdGVfZGV2aWNlX2FzeW5jX2wgKGEsIGxlbiwgYXN5bmMpICYK KyAgICAgICAgYmluZCAoQywgbmFtZSA9ICJhY2NfdXBkYXRlX2RldmljZV9h c3luYyIpCisgICAgICB1c2UgaXNvX2NfYmluZGluZywgb25seTogY19zaXpl X3QsIGNfaW50CisgICAgICAhR0NDJCBBVFRSSUJVVEVTIE5PX0FSR19DSEVD SyA6OiBhCisgICAgICB0eXBlICgqKSwgZGltZW5zaW9uICgqKSA6OiBhCisg ICAgICBpbnRlZ2VyIChjX3NpemVfdCksIHZhbHVlIDo6IGxlbgorICAgICAg aW50ZWdlciAoY19pbnQpLCB2YWx1ZSA6OiBhc3luYworICAgIGVuZCBzdWJy b3V0aW5lCisKKyAgICBzdWJyb3V0aW5lIGFjY191cGRhdGVfc2VsZl9hc3lu Y19sIChhLCBsZW4sIGFzeW5jKSAmCisgICAgICAgIGJpbmQgKEMsIG5hbWUg PSAiYWNjX3VwZGF0ZV9zZWxmX2FzeW5jIikKKyAgICAgIHVzZSBpc29fY19i aW5kaW5nLCBvbmx5OiBjX3NpemVfdCwgY19pbnQKKyAgICAgICFHQ0MkIEFU VFJJQlVURVMgTk9fQVJHX0NIRUNLIDo6IGEKKyAgICAgIHR5cGUgKCopLCBk aW1lbnNpb24gKCopIDo6IGEKKyAgICAgIGludGVnZXIgKGNfc2l6ZV90KSwg dmFsdWUgOjogbGVuCisgICAgICBpbnRlZ2VyIChjX2ludCksIHZhbHVlIDo6 IGFzeW5jCisgICAgZW5kIHN1YnJvdXRpbmUKICAgZW5kIGludGVyZmFjZQog ZW5kIG1vZHVsZQogCkBAIC01MjksNiArNzI3LDggQEAgbW9kdWxlIG9wZW5h Y2MKICAgcHVibGljIDo6IGFjY19jb3B5aW4sIGFjY19wcmVzZW50X29yX2Nv cHlpbiwgYWNjX3Bjb3B5aW4sIGFjY19jcmVhdGUKICAgcHVibGljIDo6IGFj Y19wcmVzZW50X29yX2NyZWF0ZSwgYWNjX3BjcmVhdGUsIGFjY19jb3B5b3V0 LCBhY2NfZGVsZXRlCiAgIHB1YmxpYyA6OiBhY2NfdXBkYXRlX2RldmljZSwg YWNjX3VwZGF0ZV9zZWxmLCBhY2NfaXNfcHJlc2VudAorICBwdWJsaWMgOjog YWNjX2NvcHlpbl9hc3luYywgYWNjX2NyZWF0ZV9hc3luYywgYWNjX2NvcHlv dXRfYXN5bmMKKyAgcHVibGljIDo6IGFjY19kZWxldGVfYXN5bmMsIGFjY191 cGRhdGVfZGV2aWNlX2FzeW5jLCBhY2NfdXBkYXRlX3NlbGZfYXN5bmMKIAog ICBpbnRlZ2VyLCBwYXJhbWV0ZXIgOjogb3BlbmFjY192ZXJzaW9uID0gMjAx MzA2CiAKQEAgLTY5NCw2ICs4OTQsNDIgQEAgbW9kdWxlIG9wZW5hY2MKICAg ISBhY2NfbWVtY3B5X3RvX2RldmljZTogT25seSBhdmFpbGFibGUgaW4gQy9D KysKICAgISBhY2NfbWVtY3B5X2Zyb21fZGV2aWNlOiBPbmx5IGF2YWlsYWJs ZSBpbiBDL0MrKwogCisgIGludGVyZmFjZSBhY2NfY29weWluX2FzeW5jCisg ICAgcHJvY2VkdXJlIDo6IGFjY19jb3B5aW5fYXN5bmNfMzJfaAorICAgIHBy b2NlZHVyZSA6OiBhY2NfY29weWluX2FzeW5jXzY0X2gKKyAgICBwcm9jZWR1 cmUgOjogYWNjX2NvcHlpbl9hc3luY19hcnJheV9oCisgIGVuZCBpbnRlcmZh Y2UKKworICBpbnRlcmZhY2UgYWNjX2NyZWF0ZV9hc3luYworICAgIHByb2Nl ZHVyZSA6OiBhY2NfY3JlYXRlX2FzeW5jXzMyX2gKKyAgICBwcm9jZWR1cmUg OjogYWNjX2NyZWF0ZV9hc3luY182NF9oCisgICAgcHJvY2VkdXJlIDo6IGFj Y19jcmVhdGVfYXN5bmNfYXJyYXlfaAorICBlbmQgaW50ZXJmYWNlCisKKyAg aW50ZXJmYWNlIGFjY19jb3B5b3V0X2FzeW5jCisgICAgcHJvY2VkdXJlIDo6 IGFjY19jb3B5b3V0X2FzeW5jXzMyX2gKKyAgICBwcm9jZWR1cmUgOjogYWNj X2NvcHlvdXRfYXN5bmNfNjRfaAorICAgIHByb2NlZHVyZSA6OiBhY2NfY29w eW91dF9hc3luY19hcnJheV9oCisgIGVuZCBpbnRlcmZhY2UKKworICBpbnRl cmZhY2UgYWNjX2RlbGV0ZV9hc3luYworICAgIHByb2NlZHVyZSA6OiBhY2Nf ZGVsZXRlX2FzeW5jXzMyX2gKKyAgICBwcm9jZWR1cmUgOjogYWNjX2RlbGV0 ZV9hc3luY182NF9oCisgICAgcHJvY2VkdXJlIDo6IGFjY19kZWxldGVfYXN5 bmNfYXJyYXlfaAorICBlbmQgaW50ZXJmYWNlCisKKyAgaW50ZXJmYWNlIGFj Y191cGRhdGVfZGV2aWNlX2FzeW5jCisgICAgcHJvY2VkdXJlIDo6IGFjY191 cGRhdGVfZGV2aWNlX2FzeW5jXzMyX2gKKyAgICBwcm9jZWR1cmUgOjogYWNj X3VwZGF0ZV9kZXZpY2VfYXN5bmNfNjRfaAorICAgIHByb2NlZHVyZSA6OiBh Y2NfdXBkYXRlX2RldmljZV9hc3luY19hcnJheV9oCisgIGVuZCBpbnRlcmZh Y2UKKworICBpbnRlcmZhY2UgYWNjX3VwZGF0ZV9zZWxmX2FzeW5jCisgICAg cHJvY2VkdXJlIDo6IGFjY191cGRhdGVfc2VsZl9hc3luY18zMl9oCisgICAg cHJvY2VkdXJlIDo6IGFjY191cGRhdGVfc2VsZl9hc3luY182NF9oCisgICAg cHJvY2VkdXJlIDo6IGFjY191cGRhdGVfc2VsZl9hc3luY19hcnJheV9oCisg IGVuZCBpbnRlcmZhY2UKKwogZW5kIG1vZHVsZQogCiBmdW5jdGlvbiBhY2Nf Z2V0X251bV9kZXZpY2VzX2ggKGQpCkBAIC0xMDc4LDMgKzEzMTQsMTg5IEBA IGZ1bmN0aW9uIGFjY19pc19wcmVzZW50X2FycmF5X2ggKGEpCiAgIHR5cGUg KCopLCBkaW1lbnNpb24gKC4uKSwgY29udGlndW91cyA6OiBhCiAgIGFjY19p c19wcmVzZW50X2FycmF5X2ggPSBhY2NfaXNfcHJlc2VudF9sIChhLCBzaXpl b2YgKGEpKSA9PSAxCiBlbmQgZnVuY3Rpb24KKworc3Vicm91dGluZSBhY2Nf Y29weWluX2FzeW5jXzMyX2ggKGEsIGxlbiwgYXN5bmMpCisgIHVzZSBpc29f Y19iaW5kaW5nLCBvbmx5OiBjX2ludDMyX3QsIGNfc2l6ZV90LCBjX2ludAor ICB1c2Ugb3BlbmFjY19pbnRlcm5hbCwgb25seTogYWNjX2NvcHlpbl9hc3lu Y19sCisgIHVzZSBvcGVuYWNjX2tpbmRzLCBvbmx5OiBhY2NfaGFuZGxlX2tp bmQKKyAgIUdDQyQgQVRUUklCVVRFUyBOT19BUkdfQ0hFQ0sgOjogYQorICB0 eXBlICgqKSwgZGltZW5zaW9uICgqKSA6OiBhCisgIGludGVnZXIgKGNfaW50 MzJfdCkgbGVuCisgIGludGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMK KyAgY2FsbCBhY2NfY29weWluX2FzeW5jX2wgKGEsIGludCAobGVuLCBraW5k ID0gY19zaXplX3QpLCBpbnQgKGFzeW5jLCBraW5kID0gY19pbnQpKQorZW5k IHN1YnJvdXRpbmUKKworc3Vicm91dGluZSBhY2NfY29weWluX2FzeW5jXzY0 X2ggKGEsIGxlbiwgYXN5bmMpCisgIHVzZSBpc29fY19iaW5kaW5nLCBvbmx5 OiBjX2ludDY0X3QsIGNfc2l6ZV90LCBjX2ludAorICB1c2Ugb3BlbmFjY19p bnRlcm5hbCwgb25seTogYWNjX2NvcHlpbl9hc3luY19sCisgIHVzZSBvcGVu YWNjX2tpbmRzLCBvbmx5OiBhY2NfaGFuZGxlX2tpbmQKKyAgIUdDQyQgQVRU UklCVVRFUyBOT19BUkdfQ0hFQ0sgOjogYQorICB0eXBlICgqKSwgZGltZW5z aW9uICgqKSA6OiBhCisgIGludGVnZXIgKGNfaW50NjRfdCkgbGVuCisgIGlu dGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMKKyAgY2FsbCBhY2NfY29w eWluX2FzeW5jX2wgKGEsIGludCAobGVuLCBraW5kID0gY19zaXplX3QpLCBp bnQgKGFzeW5jLCBraW5kID0gY19pbnQpKQorZW5kIHN1YnJvdXRpbmUKKwor c3Vicm91dGluZSBhY2NfY29weWluX2FzeW5jX2FycmF5X2ggKGEsIGFzeW5j KQorICB1c2UgaXNvX2NfYmluZGluZywgb25seTogY19pbnQKKyAgdXNlIG9w ZW5hY2NfaW50ZXJuYWwsIG9ubHk6IGFjY19jb3B5aW5fYXN5bmNfbAorICB1 c2Ugb3BlbmFjY19raW5kcywgb25seTogYWNjX2hhbmRsZV9raW5kCisgIHR5 cGUgKCopLCBkaW1lbnNpb24gKC4uKSwgY29udGlndW91cyA6OiBhCisgIGlu dGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMKKyAgY2FsbCBhY2NfY29w eWluX2FzeW5jX2wgKGEsIHNpemVvZiAoYSksIGludCAoYXN5bmMsIGtpbmQg PSBjX2ludCkpCitlbmQgc3Vicm91dGluZQorCitzdWJyb3V0aW5lIGFjY19j cmVhdGVfYXN5bmNfMzJfaCAoYSwgbGVuLCBhc3luYykKKyAgdXNlIGlzb19j X2JpbmRpbmcsIG9ubHk6IGNfaW50MzJfdCwgY19zaXplX3QsIGNfaW50Cisg IHVzZSBvcGVuYWNjX2ludGVybmFsLCBvbmx5OiBhY2NfY3JlYXRlX2FzeW5j X2wKKyAgdXNlIG9wZW5hY2Nfa2luZHMsIG9ubHk6IGFjY19oYW5kbGVfa2lu ZAorICAhR0NDJCBBVFRSSUJVVEVTIE5PX0FSR19DSEVDSyA6OiBhCisgIHR5 cGUgKCopLCBkaW1lbnNpb24gKCopIDo6IGEKKyAgaW50ZWdlciAoY19pbnQz Ml90KSBsZW4KKyAgaW50ZWdlciAoYWNjX2hhbmRsZV9raW5kKSBhc3luYwor ICBjYWxsIGFjY19jcmVhdGVfYXN5bmNfbCAoYSwgaW50IChsZW4sIGtpbmQg PSBjX3NpemVfdCksIGludCAoYXN5bmMsIGtpbmQgPSBjX2ludCkpCitlbmQg c3Vicm91dGluZQorCitzdWJyb3V0aW5lIGFjY19jcmVhdGVfYXN5bmNfNjRf aCAoYSwgbGVuLCBhc3luYykKKyAgdXNlIGlzb19jX2JpbmRpbmcsIG9ubHk6 IGNfaW50NjRfdCwgY19zaXplX3QsIGNfaW50CisgIHVzZSBvcGVuYWNjX2lu dGVybmFsLCBvbmx5OiBhY2NfY3JlYXRlX2FzeW5jX2wKKyAgdXNlIG9wZW5h Y2Nfa2luZHMsIG9ubHk6IGFjY19oYW5kbGVfa2luZAorICAhR0NDJCBBVFRS SUJVVEVTIE5PX0FSR19DSEVDSyA6OiBhCisgIHR5cGUgKCopLCBkaW1lbnNp b24gKCopIDo6IGEKKyAgaW50ZWdlciAoY19pbnQ2NF90KSBsZW4KKyAgaW50 ZWdlciAoYWNjX2hhbmRsZV9raW5kKSBhc3luYworICBjYWxsIGFjY19jcmVh dGVfYXN5bmNfbCAoYSwgaW50IChsZW4sIGtpbmQgPSBjX3NpemVfdCksIGlu dCAoYXN5bmMsIGtpbmQgPSBjX2ludCkpCitlbmQgc3Vicm91dGluZQorCitz dWJyb3V0aW5lIGFjY19jcmVhdGVfYXN5bmNfYXJyYXlfaCAoYSwgYXN5bmMp CisgIHVzZSBpc29fY19iaW5kaW5nLCBvbmx5OiBjX2ludAorICB1c2Ugb3Bl bmFjY19pbnRlcm5hbCwgb25seTogYWNjX2NyZWF0ZV9hc3luY19sCisgIHVz ZSBvcGVuYWNjX2tpbmRzLCBvbmx5OiBhY2NfaGFuZGxlX2tpbmQKKyAgdHlw ZSAoKiksIGRpbWVuc2lvbiAoLi4pLCBjb250aWd1b3VzIDo6IGEKKyAgaW50 ZWdlciAoYWNjX2hhbmRsZV9raW5kKSBhc3luYworICBjYWxsIGFjY19jcmVh dGVfYXN5bmNfbCAoYSwgc2l6ZW9mIChhKSwgaW50IChhc3luYywga2luZCA9 IGNfaW50KSkKK2VuZCBzdWJyb3V0aW5lCisKK3N1YnJvdXRpbmUgYWNjX2Nv cHlvdXRfYXN5bmNfMzJfaCAoYSwgbGVuLCBhc3luYykKKyAgdXNlIGlzb19j X2JpbmRpbmcsIG9ubHk6IGNfaW50MzJfdCwgY19zaXplX3QsIGNfaW50Cisg IHVzZSBvcGVuYWNjX2ludGVybmFsLCBvbmx5OiBhY2NfY29weW91dF9hc3lu Y19sCisgIHVzZSBvcGVuYWNjX2tpbmRzLCBvbmx5OiBhY2NfaGFuZGxlX2tp bmQKKyAgIUdDQyQgQVRUUklCVVRFUyBOT19BUkdfQ0hFQ0sgOjogYQorICB0 eXBlICgqKSwgZGltZW5zaW9uICgqKSA6OiBhCisgIGludGVnZXIgKGNfaW50 MzJfdCkgbGVuCisgIGludGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMK KyAgY2FsbCBhY2NfY29weW91dF9hc3luY19sIChhLCBpbnQgKGxlbiwga2lu ZCA9IGNfc2l6ZV90KSwgaW50IChhc3luYywga2luZCA9IGNfaW50KSkKK2Vu ZCBzdWJyb3V0aW5lCisKK3N1YnJvdXRpbmUgYWNjX2NvcHlvdXRfYXN5bmNf NjRfaCAoYSwgbGVuLCBhc3luYykKKyAgdXNlIGlzb19jX2JpbmRpbmcsIG9u bHk6IGNfaW50NjRfdCwgY19zaXplX3QsIGNfaW50CisgIHVzZSBvcGVuYWNj X2ludGVybmFsLCBvbmx5OiBhY2NfY29weW91dF9hc3luY19sCisgIHVzZSBv cGVuYWNjX2tpbmRzLCBvbmx5OiBhY2NfaGFuZGxlX2tpbmQKKyAgIUdDQyQg QVRUUklCVVRFUyBOT19BUkdfQ0hFQ0sgOjogYQorICB0eXBlICgqKSwgZGlt ZW5zaW9uICgqKSA6OiBhCisgIGludGVnZXIgKGNfaW50NjRfdCkgbGVuCisg IGludGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMKKyAgY2FsbCBhY2Nf Y29weW91dF9hc3luY19sIChhLCBpbnQgKGxlbiwga2luZCA9IGNfc2l6ZV90 KSwgaW50IChhc3luYywga2luZCA9IGNfaW50KSkKK2VuZCBzdWJyb3V0aW5l CisKK3N1YnJvdXRpbmUgYWNjX2NvcHlvdXRfYXN5bmNfYXJyYXlfaCAoYSwg YXN5bmMpCisgIHVzZSBpc29fY19iaW5kaW5nLCBvbmx5OiBjX2ludAorICB1 c2Ugb3BlbmFjY19pbnRlcm5hbCwgb25seTogYWNjX2NvcHlvdXRfYXN5bmNf bAorICB1c2Ugb3BlbmFjY19raW5kcywgb25seTogYWNjX2hhbmRsZV9raW5k CisgIHR5cGUgKCopLCBkaW1lbnNpb24gKC4uKSwgY29udGlndW91cyA6OiBh CisgIGludGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMKKyAgY2FsbCBh Y2NfY29weW91dF9hc3luY19sIChhLCBzaXplb2YgKGEpLCBpbnQgKGFzeW5j LCBraW5kID0gY19pbnQpKQorZW5kIHN1YnJvdXRpbmUKKworc3Vicm91dGlu ZSBhY2NfZGVsZXRlX2FzeW5jXzMyX2ggKGEsIGxlbiwgYXN5bmMpCisgIHVz ZSBpc29fY19iaW5kaW5nLCBvbmx5OiBjX2ludDMyX3QsIGNfc2l6ZV90LCBj X2ludAorICB1c2Ugb3BlbmFjY19pbnRlcm5hbCwgb25seTogYWNjX2RlbGV0 ZV9hc3luY19sCisgIHVzZSBvcGVuYWNjX2tpbmRzLCBvbmx5OiBhY2NfaGFu ZGxlX2tpbmQKKyAgIUdDQyQgQVRUUklCVVRFUyBOT19BUkdfQ0hFQ0sgOjog YQorICB0eXBlICgqKSwgZGltZW5zaW9uICgqKSA6OiBhCisgIGludGVnZXIg KGNfaW50MzJfdCkgbGVuCisgIGludGVnZXIgKGFjY19oYW5kbGVfa2luZCkg YXN5bmMKKyAgY2FsbCBhY2NfZGVsZXRlX2FzeW5jX2wgKGEsIGludCAobGVu LCBraW5kID0gY19zaXplX3QpLCBpbnQgKGFzeW5jLCBraW5kID0gY19pbnQp KQorZW5kIHN1YnJvdXRpbmUKKworc3Vicm91dGluZSBhY2NfZGVsZXRlX2Fz eW5jXzY0X2ggKGEsIGxlbiwgYXN5bmMpCisgIHVzZSBpc29fY19iaW5kaW5n LCBvbmx5OiBjX2ludDY0X3QsIGNfc2l6ZV90LCBjX2ludAorICB1c2Ugb3Bl bmFjY19pbnRlcm5hbCwgb25seTogYWNjX2RlbGV0ZV9hc3luY19sCisgIHVz ZSBvcGVuYWNjX2tpbmRzLCBvbmx5OiBhY2NfaGFuZGxlX2tpbmQKKyAgIUdD QyQgQVRUUklCVVRFUyBOT19BUkdfQ0hFQ0sgOjogYQorICB0eXBlICgqKSwg ZGltZW5zaW9uICgqKSA6OiBhCisgIGludGVnZXIgKGNfaW50NjRfdCkgbGVu CisgIGludGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMKKyAgY2FsbCBh Y2NfZGVsZXRlX2FzeW5jX2wgKGEsIGludCAobGVuLCBraW5kID0gY19zaXpl X3QpLCBpbnQgKGFzeW5jLCBraW5kID0gY19pbnQpKQorZW5kIHN1YnJvdXRp bmUKKworc3Vicm91dGluZSBhY2NfZGVsZXRlX2FzeW5jX2FycmF5X2ggKGEs IGFzeW5jKQorICB1c2UgaXNvX2NfYmluZGluZywgb25seTogY19pbnQKKyAg dXNlIG9wZW5hY2NfaW50ZXJuYWwsIG9ubHk6IGFjY19kZWxldGVfYXN5bmNf bAorICB1c2Ugb3BlbmFjY19raW5kcywgb25seTogYWNjX2hhbmRsZV9raW5k CisgIHR5cGUgKCopLCBkaW1lbnNpb24gKC4uKSwgY29udGlndW91cyA6OiBh CisgIGludGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMKKyAgY2FsbCBh Y2NfZGVsZXRlX2FzeW5jX2wgKGEsIHNpemVvZiAoYSksIGludCAoYXN5bmMs IGtpbmQgPSBjX2ludCkpCitlbmQgc3Vicm91dGluZQorCitzdWJyb3V0aW5l IGFjY191cGRhdGVfZGV2aWNlX2FzeW5jXzMyX2ggKGEsIGxlbiwgYXN5bmMp CisgIHVzZSBpc29fY19iaW5kaW5nLCBvbmx5OiBjX2ludDMyX3QsIGNfc2l6 ZV90LCBjX2ludAorICB1c2Ugb3BlbmFjY19pbnRlcm5hbCwgb25seTogYWNj X3VwZGF0ZV9kZXZpY2VfYXN5bmNfbAorICB1c2Ugb3BlbmFjY19raW5kcywg b25seTogYWNjX2hhbmRsZV9raW5kCisgICFHQ0MkIEFUVFJJQlVURVMgTk9f QVJHX0NIRUNLIDo6IGEKKyAgdHlwZSAoKiksIGRpbWVuc2lvbiAoKikgOjog YQorICBpbnRlZ2VyIChjX2ludDMyX3QpIGxlbgorICBpbnRlZ2VyIChhY2Nf aGFuZGxlX2tpbmQpIGFzeW5jCisgIGNhbGwgYWNjX3VwZGF0ZV9kZXZpY2Vf YXN5bmNfbCAoYSwgaW50IChsZW4sIGtpbmQgPSBjX3NpemVfdCksIGludCAo YXN5bmMsIGtpbmQgPSBjX2ludCkpCitlbmQgc3Vicm91dGluZQorCitzdWJy b3V0aW5lIGFjY191cGRhdGVfZGV2aWNlX2FzeW5jXzY0X2ggKGEsIGxlbiwg YXN5bmMpCisgIHVzZSBpc29fY19iaW5kaW5nLCBvbmx5OiBjX2ludDY0X3Qs IGNfc2l6ZV90LCBjX2ludAorICB1c2Ugb3BlbmFjY19pbnRlcm5hbCwgb25s eTogYWNjX3VwZGF0ZV9kZXZpY2VfYXN5bmNfbAorICB1c2Ugb3BlbmFjY19r aW5kcywgb25seTogYWNjX2hhbmRsZV9raW5kCisgICFHQ0MkIEFUVFJJQlVU RVMgTk9fQVJHX0NIRUNLIDo6IGEKKyAgdHlwZSAoKiksIGRpbWVuc2lvbiAo KikgOjogYQorICBpbnRlZ2VyIChjX2ludDY0X3QpIGxlbgorICBpbnRlZ2Vy IChhY2NfaGFuZGxlX2tpbmQpIGFzeW5jCisgIGNhbGwgYWNjX3VwZGF0ZV9k ZXZpY2VfYXN5bmNfbCAoYSwgaW50IChsZW4sIGtpbmQgPSBjX3NpemVfdCks IGludCAoYXN5bmMsIGtpbmQgPSBjX2ludCkpCitlbmQgc3Vicm91dGluZQor CitzdWJyb3V0aW5lIGFjY191cGRhdGVfZGV2aWNlX2FzeW5jX2FycmF5X2gg KGEsIGFzeW5jKQorICB1c2UgaXNvX2NfYmluZGluZywgb25seTogY19pbnQK KyAgdXNlIG9wZW5hY2NfaW50ZXJuYWwsIG9ubHk6IGFjY191cGRhdGVfZGV2 aWNlX2FzeW5jX2wKKyAgdXNlIG9wZW5hY2Nfa2luZHMsIG9ubHk6IGFjY19o YW5kbGVfa2luZAorICB0eXBlICgqKSwgZGltZW5zaW9uICguLiksIGNvbnRp Z3VvdXMgOjogYQorICBpbnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQpIGFzeW5j CisgIGNhbGwgYWNjX3VwZGF0ZV9kZXZpY2VfYXN5bmNfbCAoYSwgc2l6ZW9m IChhKSwgaW50IChhc3luYywga2luZCA9IGNfaW50KSkKK2VuZCBzdWJyb3V0 aW5lCisKK3N1YnJvdXRpbmUgYWNjX3VwZGF0ZV9zZWxmX2FzeW5jXzMyX2gg KGEsIGxlbiwgYXN5bmMpCisgIHVzZSBpc29fY19iaW5kaW5nLCBvbmx5OiBj X2ludDMyX3QsIGNfc2l6ZV90LCBjX2ludAorICB1c2Ugb3BlbmFjY19pbnRl cm5hbCwgb25seTogYWNjX3VwZGF0ZV9zZWxmX2FzeW5jX2wKKyAgdXNlIG9w ZW5hY2Nfa2luZHMsIG9ubHk6IGFjY19oYW5kbGVfa2luZAorICAhR0NDJCBB VFRSSUJVVEVTIE5PX0FSR19DSEVDSyA6OiBhCisgIHR5cGUgKCopLCBkaW1l bnNpb24gKCopIDo6IGEKKyAgaW50ZWdlciAoY19pbnQzMl90KSBsZW4KKyAg aW50ZWdlciAoYWNjX2hhbmRsZV9raW5kKSBhc3luYworICBjYWxsIGFjY191 cGRhdGVfc2VsZl9hc3luY19sIChhLCBpbnQgKGxlbiwga2luZCA9IGNfc2l6 ZV90KSwgaW50IChhc3luYywga2luZCA9IGNfaW50KSkKK2VuZCBzdWJyb3V0 aW5lCisKK3N1YnJvdXRpbmUgYWNjX3VwZGF0ZV9zZWxmX2FzeW5jXzY0X2gg KGEsIGxlbiwgYXN5bmMpCisgIHVzZSBpc29fY19iaW5kaW5nLCBvbmx5OiBj X2ludDY0X3QsIGNfc2l6ZV90LCBjX2ludAorICB1c2Ugb3BlbmFjY19pbnRl cm5hbCwgb25seTogYWNjX3VwZGF0ZV9zZWxmX2FzeW5jX2wKKyAgdXNlIG9w ZW5hY2Nfa2luZHMsIG9ubHk6IGFjY19oYW5kbGVfa2luZAorICAhR0NDJCBB VFRSSUJVVEVTIE5PX0FSR19DSEVDSyA6OiBhCisgIHR5cGUgKCopLCBkaW1l bnNpb24gKCopIDo6IGEKKyAgaW50ZWdlciAoY19pbnQ2NF90KSBsZW4KKyAg aW50ZWdlciAoYWNjX2hhbmRsZV9raW5kKSBhc3luYworICBjYWxsIGFjY191 cGRhdGVfc2VsZl9hc3luY19sIChhLCBpbnQgKGxlbiwga2luZCA9IGNfc2l6 ZV90KSwgaW50IChhc3luYywga2luZCA9IGNfaW50KSkKK2VuZCBzdWJyb3V0 aW5lCisKK3N1YnJvdXRpbmUgYWNjX3VwZGF0ZV9zZWxmX2FzeW5jX2FycmF5 X2ggKGEsIGFzeW5jKQorICB1c2UgaXNvX2NfYmluZGluZywgb25seTogY19p bnQKKyAgdXNlIG9wZW5hY2NfaW50ZXJuYWwsIG9ubHk6IGFjY191cGRhdGVf c2VsZl9hc3luY19sCisgIHVzZSBvcGVuYWNjX2tpbmRzLCBvbmx5OiBhY2Nf aGFuZGxlX2tpbmQKKyAgdHlwZSAoKiksIGRpbWVuc2lvbiAoLi4pLCBjb250 aWd1b3VzIDo6IGEKKyAgaW50ZWdlciAoYWNjX2hhbmRsZV9raW5kKSBhc3lu YworICBjYWxsIGFjY191cGRhdGVfc2VsZl9hc3luY19sIChhLCBzaXplb2Yg KGEpLCBpbnQgKGFzeW5jLCBraW5kID0gY19pbnQpKQorZW5kIHN1YnJvdXRp bmUKSW5kZXg6IGxpYmdvbXAvb3BlbmFjYy5oCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGxpYmdvbXAvb3BlbmFjYy5oCShyZXZpc2lvbiAyNjQxOTIp CisrKyBsaWJnb21wL29wZW5hY2MuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1 LDYgKzExNSwxNiBAQCB2b2lkIGFjY19jb3B5b3V0X2ZpbmFsaXplX2FzeW5j ICh2b2lkICosIHNpemVfdCwgaQogdm9pZCBhY2NfZGVsZXRlX2ZpbmFsaXpl ICh2b2lkICosIHNpemVfdCkgX19HT0FDQ19OT1RIUk9XOwogdm9pZCBhY2Nf ZGVsZXRlX2ZpbmFsaXplX2FzeW5jICh2b2lkICosIHNpemVfdCwgaW50KSBf X0dPQUNDX05PVEhST1c7CiAKKy8qIEFzeW5jIGZ1bmN0aW9ucywgc3BlY2lm aWVkIGluIE9wZW5BQ0MgMi41LiAgKi8KK3ZvaWQgYWNjX2NvcHlpbl9hc3lu YyAodm9pZCAqLCBzaXplX3QsIGludCkgX19HT0FDQ19OT1RIUk9XOwordm9p ZCBhY2NfY3JlYXRlX2FzeW5jICh2b2lkICosIHNpemVfdCwgaW50KSBfX0dP QUNDX05PVEhST1c7Cit2b2lkIGFjY19jb3B5b3V0X2FzeW5jICh2b2lkICos IHNpemVfdCwgaW50KSBfX0dPQUNDX05PVEhST1c7Cit2b2lkIGFjY19kZWxl dGVfYXN5bmMgKHZvaWQgKiwgc2l6ZV90LCBpbnQpIF9fR09BQ0NfTk9USFJP VzsKK3ZvaWQgYWNjX3VwZGF0ZV9kZXZpY2VfYXN5bmMgKHZvaWQgKiwgc2l6 ZV90LCBpbnQpIF9fR09BQ0NfTk9USFJPVzsKK3ZvaWQgYWNjX3VwZGF0ZV9z ZWxmX2FzeW5jICh2b2lkICosIHNpemVfdCwgaW50KSBfX0dPQUNDX05PVEhS T1c7Cit2b2lkIGFjY19tZW1jcHlfdG9fZGV2aWNlX2FzeW5jICh2b2lkICos IHZvaWQgKiwgc2l6ZV90LCBpbnQpIF9fR09BQ0NfTk9USFJPVzsKK3ZvaWQg YWNjX21lbWNweV9mcm9tX2RldmljZV9hc3luYyAodm9pZCAqLCB2b2lkICos IHNpemVfdCwgaW50KSBfX0dPQUNDX05PVEhST1c7CisKIC8qIENVREEtc3Bl Y2lmaWMgcm91dGluZXMuICAqLwogdm9pZCAqYWNjX2dldF9jdXJyZW50X2N1 ZGFfZGV2aWNlICh2b2lkKSBfX0dPQUNDX05PVEhST1c7CiB2b2lkICphY2Nf Z2V0X2N1cnJlbnRfY3VkYV9jb250ZXh0ICh2b2lkKSBfX0dPQUNDX05PVEhS T1c7CkluZGV4OiBsaWJnb21wL29wZW5hY2NfbGliLmgKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gbGliZ29tcC9vcGVuYWNjX2xpYi5oCShyZXZpc2lv biAyNjQxOTIpCisrKyBsaWJnb21wL29wZW5hY2NfbGliLmgJKHdvcmtpbmcg Y29weSkKQEAgLTQwMywzICs0MDMsMTU5IEBACiAKICAgICAgICEgYWNjX21l bWNweV90b19kZXZpY2U6IE9ubHkgYXZhaWxhYmxlIGluIEMvQysrCiAgICAg ICAhIGFjY19tZW1jcHlfZnJvbV9kZXZpY2U6IE9ubHkgYXZhaWxhYmxlIGlu IEMvQysrCisKKyAgICAgIGludGVyZmFjZSBhY2NfY29weWluX2FzeW5jCisg ICAgICAgIHN1YnJvdXRpbmUgYWNjX2NvcHlpbl9hc3luY18zMl9oIChhLCBs ZW4sIGFzeW5jKQorICAgICAgICAgIHVzZSBpc29fY19iaW5kaW5nLCBvbmx5 OiBjX2ludDMyX3QKKyAgICAgICAgICBpbXBvcnQgYWNjX2hhbmRsZV9raW5k CisgICAgICAgICAgIUdDQyQgQVRUUklCVVRFUyBOT19BUkdfQ0hFQ0sgOjog YQorICAgICAgICAgIHR5cGUgKCopLCBkaW1lbnNpb24gKCopIDo6IGEKKyAg ICAgICAgICBpbnRlZ2VyIChjX2ludDMyX3QpIGxlbgorICAgICAgICAgIGlu dGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMKKyAgICAgICAgZW5kIHN1 YnJvdXRpbmUKKworICAgICAgICBzdWJyb3V0aW5lIGFjY19jb3B5aW5fYXN5 bmNfNjRfaCAoYSwgbGVuLCBhc3luYykKKyAgICAgICAgICB1c2UgaXNvX2Nf YmluZGluZywgb25seTogY19pbnQ2NF90CisgICAgICAgICAgaW1wb3J0IGFj Y19oYW5kbGVfa2luZAorICAgICAgICAgICFHQ0MkIEFUVFJJQlVURVMgTk9f QVJHX0NIRUNLIDo6IGEKKyAgICAgICAgICB0eXBlICgqKSwgZGltZW5zaW9u ICgqKSA6OiBhCisgICAgICAgICAgaW50ZWdlciAoY19pbnQ2NF90KSBsZW4K KyAgICAgICAgICBpbnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQpIGFzeW5jCisg ICAgICAgIGVuZCBzdWJyb3V0aW5lCisKKyAgICAgICAgc3Vicm91dGluZSBh Y2NfY29weWluX2FzeW5jX2FycmF5X2ggKGEsIGFzeW5jXykKKyAgICAgICAg ICBpbXBvcnQgYWNjX2hhbmRsZV9raW5kCisgICAgICAgICAgdHlwZSAoKiks IGRpbWVuc2lvbiAoLi4pLCBjb250aWd1b3VzIDo6IGEKKyAgICAgICAgICBp bnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQpIGFzeW5jXworICAgICAgICBlbmQg c3Vicm91dGluZQorICAgICAgZW5kIGludGVyZmFjZQorCisgICAgICBpbnRl cmZhY2UgYWNjX2NyZWF0ZV9hc3luYworICAgICAgICBzdWJyb3V0aW5lIGFj Y19jcmVhdGVfYXN5bmNfMzJfaCAoYSwgbGVuLCBhc3luYykKKyAgICAgICAg ICB1c2UgaXNvX2NfYmluZGluZywgb25seTogY19pbnQzMl90CisgICAgICAg ICAgaW1wb3J0IGFjY19oYW5kbGVfa2luZAorICAgICAgICAgICFHQ0MkIEFU VFJJQlVURVMgTk9fQVJHX0NIRUNLIDo6IGEKKyAgICAgICAgICB0eXBlICgq KSwgZGltZW5zaW9uICgqKSA6OiBhCisgICAgICAgICAgaW50ZWdlciAoY19p bnQzMl90KSBsZW4KKyAgICAgICAgICBpbnRlZ2VyIChhY2NfaGFuZGxlX2tp bmQpIGFzeW5jCisgICAgICAgIGVuZCBzdWJyb3V0aW5lCisKKyAgICAgICAg c3Vicm91dGluZSBhY2NfY3JlYXRlX2FzeW5jXzY0X2ggKGEsIGxlbiwgYXN5 bmMpCisgICAgICAgICAgdXNlIGlzb19jX2JpbmRpbmcsIG9ubHk6IGNfaW50 NjRfdAorICAgICAgICAgIGltcG9ydCBhY2NfaGFuZGxlX2tpbmQKKyAgICAg ICAgICAhR0NDJCBBVFRSSUJVVEVTIE5PX0FSR19DSEVDSyA6OiBhCisgICAg ICAgICAgdHlwZSAoKiksIGRpbWVuc2lvbiAoKikgOjogYQorICAgICAgICAg IGludGVnZXIgKGNfaW50NjRfdCkgbGVuCisgICAgICAgICAgaW50ZWdlciAo YWNjX2hhbmRsZV9raW5kKSBhc3luYworICAgICAgICBlbmQgc3Vicm91dGlu ZQorCisgICAgICAgIHN1YnJvdXRpbmUgYWNjX2NyZWF0ZV9hc3luY19hcnJh eV9oIChhLCBhc3luY18pCisgICAgICAgICAgaW1wb3J0IGFjY19oYW5kbGVf a2luZAorICAgICAgICAgIHR5cGUgKCopLCBkaW1lbnNpb24gKC4uKSwgY29u dGlndW91cyA6OiBhCisgICAgICAgICAgaW50ZWdlciAoYWNjX2hhbmRsZV9r aW5kKSBhc3luY18KKyAgICAgICAgZW5kIHN1YnJvdXRpbmUKKyAgICAgIGVu ZCBpbnRlcmZhY2UKKworICAgICAgaW50ZXJmYWNlIGFjY19jb3B5b3V0X2Fz eW5jCisgICAgICAgIHN1YnJvdXRpbmUgYWNjX2NvcHlvdXRfYXN5bmNfMzJf aCAoYSwgbGVuLCBhc3luYykKKyAgICAgICAgICB1c2UgaXNvX2NfYmluZGlu Zywgb25seTogY19pbnQzMl90CisgICAgICAgICAgaW1wb3J0IGFjY19oYW5k bGVfa2luZAorICAgICAgICAgICFHQ0MkIEFUVFJJQlVURVMgTk9fQVJHX0NI RUNLIDo6IGEKKyAgICAgICAgICB0eXBlICgqKSwgZGltZW5zaW9uICgqKSA6 OiBhCisgICAgICAgICAgaW50ZWdlciAoY19pbnQzMl90KSBsZW4KKyAgICAg ICAgICBpbnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQpIGFzeW5jCisgICAgICAg IGVuZCBzdWJyb3V0aW5lCisKKyAgICAgICAgc3Vicm91dGluZSBhY2NfY29w eW91dF9hc3luY182NF9oIChhLCBsZW4sIGFzeW5jKQorICAgICAgICAgIHVz ZSBpc29fY19iaW5kaW5nLCBvbmx5OiBjX2ludDY0X3QKKyAgICAgICAgICBp bXBvcnQgYWNjX2hhbmRsZV9raW5kCisgICAgICAgICAgIUdDQyQgQVRUUklC VVRFUyBOT19BUkdfQ0hFQ0sgOjogYQorICAgICAgICAgIHR5cGUgKCopLCBk aW1lbnNpb24gKCopIDo6IGEKKyAgICAgICAgICBpbnRlZ2VyIChjX2ludDY0 X3QpIGxlbgorICAgICAgICAgIGludGVnZXIgKGFjY19oYW5kbGVfa2luZCkg YXN5bmMKKyAgICAgICAgZW5kIHN1YnJvdXRpbmUKKworICAgICAgICBzdWJy b3V0aW5lIGFjY19jb3B5b3V0X2FzeW5jX2FycmF5X2ggKGEsIGFzeW5jXykK KyAgICAgICAgICBpbXBvcnQgYWNjX2hhbmRsZV9raW5kCisgICAgICAgICAg dHlwZSAoKiksIGRpbWVuc2lvbiAoLi4pLCBjb250aWd1b3VzIDo6IGEKKyAg ICAgICAgICBpbnRlZ2VyIChhY2NfaGFuZGxlX2tpbmQpIGFzeW5jXworICAg ICAgICBlbmQgc3Vicm91dGluZQorICAgICAgZW5kIGludGVyZmFjZQorCisg ICAgICBpbnRlcmZhY2UgYWNjX2RlbGV0ZV9hc3luYworICAgICAgICBzdWJy b3V0aW5lIGFjY19kZWxldGVfYXN5bmNfMzJfaCAoYSwgbGVuLCBhc3luYykK KyAgICAgICAgICB1c2UgaXNvX2NfYmluZGluZywgb25seTogY19pbnQzMl90 CisgICAgICAgICAgaW1wb3J0IGFjY19oYW5kbGVfa2luZAorICAgICAgICAg ICFHQ0MkIEFUVFJJQlVURVMgTk9fQVJHX0NIRUNLIDo6IGEKKyAgICAgICAg ICB0eXBlICgqKSwgZGltZW5zaW9uICgqKSA6OiBhCisgICAgICAgICAgaW50 ZWdlciAoY19pbnQzMl90KSBsZW4KKyAgICAgICAgICBpbnRlZ2VyIChhY2Nf aGFuZGxlX2tpbmQpIGFzeW5jCisgICAgICAgIGVuZCBzdWJyb3V0aW5lCisK KyAgICAgICAgc3Vicm91dGluZSBhY2NfZGVsZXRlX2FzeW5jXzY0X2ggKGEs IGxlbiwgYXN5bmMpCisgICAgICAgICAgdXNlIGlzb19jX2JpbmRpbmcsIG9u bHk6IGNfaW50NjRfdAorICAgICAgICAgIGltcG9ydCBhY2NfaGFuZGxlX2tp bmQKKyAgICAgICAgICAhR0NDJCBBVFRSSUJVVEVTIE5PX0FSR19DSEVDSyA6 OiBhCisgICAgICAgICAgdHlwZSAoKiksIGRpbWVuc2lvbiAoKikgOjogYQor ICAgICAgICAgIGludGVnZXIgKGNfaW50NjRfdCkgbGVuCisgICAgICAgICAg aW50ZWdlciAoYWNjX2hhbmRsZV9raW5kKSBhc3luYworICAgICAgICBlbmQg c3Vicm91dGluZQorCisgICAgICAgIHN1YnJvdXRpbmUgYWNjX2RlbGV0ZV9h c3luY19hcnJheV9oIChhLCBhc3luY18pCisgICAgICAgICAgaW1wb3J0IGFj Y19oYW5kbGVfa2luZAorICAgICAgICAgIHR5cGUgKCopLCBkaW1lbnNpb24g KC4uKSwgY29udGlndW91cyA6OiBhCisgICAgICAgICAgaW50ZWdlciAoYWNj X2hhbmRsZV9raW5kKSBhc3luY18KKyAgICAgICAgZW5kIHN1YnJvdXRpbmUK KyAgICAgIGVuZCBpbnRlcmZhY2UKKworICAgICAgaW50ZXJmYWNlIGFjY191 cGRhdGVfZGV2aWNlX2FzeW5jCisgICAgICAgIHN1YnJvdXRpbmUgYWNjX3Vw ZGF0ZV9kZXZpY2VfYXN5bmNfMzJfaCAoYSwgbGVuLCBhc3luYykKKyAgICAg ICAgICB1c2UgaXNvX2NfYmluZGluZywgb25seTogY19pbnQzMl90CisgICAg ICAgICAgaW1wb3J0IGFjY19oYW5kbGVfa2luZAorICAgICAgICAgICFHQ0Mk IEFUVFJJQlVURVMgTk9fQVJHX0NIRUNLIDo6IGEKKyAgICAgICAgICB0eXBl ICgqKSwgZGltZW5zaW9uICgqKSA6OiBhCisgICAgICAgICAgaW50ZWdlciAo Y19pbnQzMl90KSBsZW4KKyAgICAgICAgICBpbnRlZ2VyIChhY2NfaGFuZGxl X2tpbmQpIGFzeW5jCisgICAgICAgIGVuZCBzdWJyb3V0aW5lCisKKyAgICAg ICAgc3Vicm91dGluZSBhY2NfdXBkYXRlX2RldmljZV9hc3luY182NF9oIChh LCBsZW4sIGFzeW5jKQorICAgICAgICAgIHVzZSBpc29fY19iaW5kaW5nLCBv bmx5OiBjX2ludDY0X3QKKyAgICAgICAgICBpbXBvcnQgYWNjX2hhbmRsZV9r aW5kCisgICAgICAgICAgIUdDQyQgQVRUUklCVVRFUyBOT19BUkdfQ0hFQ0sg OjogYQorICAgICAgICAgIHR5cGUgKCopLCBkaW1lbnNpb24gKCopIDo6IGEK KyAgICAgICAgICBpbnRlZ2VyIChjX2ludDY0X3QpIGxlbgorICAgICAgICAg IGludGVnZXIgKGFjY19oYW5kbGVfa2luZCkgYXN5bmMKKyAgICAgICAgZW5k IHN1YnJvdXRpbmUKKworICAgICAgICBzdWJyb3V0aW5lIGFjY191cGRhdGVf ZGV2aWNlX2FzeW5jX2FycmF5X2ggKGEsIGFzeW5jXykKKyAgICAgICAgICBp bXBvcnQgYWNjX2hhbmRsZV9raW5kCisgICAgICAgICAgdHlwZSAoKiksIGRp bWVuc2lvbiAoLi4pLCBjb250aWd1b3VzIDo6IGEKKyAgICAgICAgICBpbnRl Z2VyIChhY2NfaGFuZGxlX2tpbmQpIGFzeW5jXworICAgICAgICBlbmQgc3Vi cm91dGluZQorICAgICAgZW5kIGludGVyZmFjZQorCisgICAgICBpbnRlcmZh Y2UgYWNjX3VwZGF0ZV9zZWxmX2FzeW5jCisgICAgICAgIHN1YnJvdXRpbmUg YWNjX3VwZGF0ZV9zZWxmX2FzeW5jXzMyX2ggKGEsIGxlbiwgYXN5bmMpCisg ICAgICAgICAgdXNlIGlzb19jX2JpbmRpbmcsIG9ubHk6IGNfaW50MzJfdAor ICAgICAgICAgIGltcG9ydCBhY2NfaGFuZGxlX2tpbmQKKyAgICAgICAgICAh R0NDJCBBVFRSSUJVVEVTIE5PX0FSR19DSEVDSyA6OiBhCisgICAgICAgICAg dHlwZSAoKiksIGRpbWVuc2lvbiAoKikgOjogYQorICAgICAgICAgIGludGVn ZXIgKGNfaW50MzJfdCkgbGVuCisgICAgICAgICAgaW50ZWdlciAoYWNjX2hh bmRsZV9raW5kKSBhc3luYworICAgICAgICBlbmQgc3Vicm91dGluZQorCisg ICAgICAgIHN1YnJvdXRpbmUgYWNjX3VwZGF0ZV9zZWxmX2FzeW5jXzY0X2gg KGEsIGxlbiwgYXN5bmMpCisgICAgICAgICAgdXNlIGlzb19jX2JpbmRpbmcs IG9ubHk6IGNfaW50NjRfdAorICAgICAgICAgIGltcG9ydCBhY2NfaGFuZGxl X2tpbmQKKyAgICAgICAgICAhR0NDJCBBVFRSSUJVVEVTIE5PX0FSR19DSEVD SyA6OiBhCisgICAgICAgICAgdHlwZSAoKiksIGRpbWVuc2lvbiAoKikgOjog YQorICAgICAgICAgIGludGVnZXIgKGNfaW50NjRfdCkgbGVuCisgICAgICAg ICAgaW50ZWdlciAoYWNjX2hhbmRsZV9raW5kKSBhc3luYworICAgICAgICBl bmQgc3Vicm91dGluZQorCisgICAgICAgIHN1YnJvdXRpbmUgYWNjX3VwZGF0 ZV9zZWxmX2FzeW5jX2FycmF5X2ggKGEsIGFzeW5jXykKKyAgICAgICAgICBp bXBvcnQgYWNjX2hhbmRsZV9raW5kCisgICAgICAgICAgdHlwZSAoKiksIGRp bWVuc2lvbiAoLi4pLCBjb250aWd1b3VzIDo6IGEKKyAgICAgICAgICBpbnRl Z2VyIChhY2NfaGFuZGxlX2tpbmQpIGFzeW5jXworICAgICAgICBlbmQgc3Vi cm91dGluZQorICAgICAgZW5kIGludGVyZmFjZQpJbmRleDogbGliZ29tcC90 ZXN0c3VpdGUvbGliZ29tcC5vYWNjLWMtYysrLWNvbW1vbi9saWItOTQuYwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWJnb21wL3Rlc3RzdWl0ZS9s aWJnb21wLm9hY2MtYy1jKystY29tbW9uL2xpYi05NC5jCShub25leGlzdGVu dCkKKysrIGxpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAub2FjYy1jLWMrKy1j b21tb24vbGliLTk0LmMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MiBA QAorLyogeyBkZy1kbyBydW4gfSAqLworLyogeyBkZy1za2lwLWlmICIiIHsg Ki0qLSogfSB7ICIqIiB9IHsgIi1EQUNDX01FTV9TSEFSRUQ9MCIgfSB9ICov CisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4K KyNpbmNsdWRlIDxvcGVuYWNjLmg+CisKK2ludAorbWFpbiAoaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQoreworICBjb25zdCBpbnQgTiA9IDI1NjsKKyAgaW50 IGk7CisgIGludCBhc3luYyA9IDg7CisgIHVuc2lnbmVkIGNoYXIgKmg7CisK KyAgaCA9ICh1bnNpZ25lZCBjaGFyICopIG1hbGxvYyAoTik7CisKKyAgZm9y IChpID0gMDsgaSA8IE47IGkrKykKKyAgICB7CisgICAgICBoW2ldID0gaTsK KyAgICB9CisKKyAgYWNjX2NvcHlpbl9hc3luYyAoaCwgTiwgYXN5bmMpOwor CisgIG1lbXNldCAoaCwgMCwgTik7CisKKyAgYWNjX3dhaXQgKGFzeW5jKTsK KworICBhY2NfY29weW91dF9hc3luYyAoaCwgTiwgYXN5bmMgKyAxKTsKKwor ICBhY2Nfd2FpdCAoYXN5bmMgKyAxKTsKKworICBmb3IgKGkgPSAwOyBpIDwg TjsgaSsrKQorICAgIHsKKyAgICAgIGlmIChoW2ldICE9IGkpCisJYWJvcnQg KCk7CisgICAgfQorCisgIGZyZWUgKGgpOworCisgIHJldHVybiAwOworfQpJ bmRleDogbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5vYWNjLWMtYysrLWNv bW1vbi9saWItOTUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWJn b21wL3Rlc3RzdWl0ZS9saWJnb21wLm9hY2MtYy1jKystY29tbW9uL2xpYi05 NS5jCShub25leGlzdGVudCkKKysrIGxpYmdvbXAvdGVzdHN1aXRlL2xpYmdv bXAub2FjYy1jLWMrKy1jb21tb24vbGliLTk1LmMJKHdvcmtpbmcgY29weSkK QEAgLTAsMCArMSw0NSBAQAorLyogeyBkZy1kbyBydW4gfSAqLworLyogeyBk Zy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICIqIiB9IHsgIi1EQUNDX01FTV9T SEFSRUQ9MCIgfSB9ICovCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNs dWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxvcGVuYWNjLmg+CisKK2ludAor bWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICBjb25zdCBpbnQg TiA9IDI1NjsKKyAgaW50IGksIHEgPSA1OworICB1bnNpZ25lZCBjaGFyICpo LCAqZzsKKyAgdm9pZCAqZDsKKworICBoID0gKHVuc2lnbmVkIGNoYXIgKikg bWFsbG9jIChOKTsKKyAgZyA9ICh1bnNpZ25lZCBjaGFyICopIG1hbGxvYyAo Tik7CisgIGZvciAoaSA9IDA7IGkgPCBOOyBpKyspCisgICAgeworICAgICAg Z1tpXSA9IGk7CisgICAgfQorCisgIGFjY19jcmVhdGVfYXN5bmMgKGgsIE4s IHEpOworCisgIGFjY19tZW1jcHlfdG9fZGV2aWNlX2FzeW5jIChhY2NfZGV2 aWNlcHRyIChoKSwgZywgTiwgcSk7CisgIG1lbXNldCAoJmhbMF0sIDAsIE4p OworCisgIGFjY193YWl0IChxKTsKKworICBhY2NfdXBkYXRlX3NlbGZfYXN5 bmMgKGgsIE4sIHEgKyAxKTsKKyAgYWNjX2RlbGV0ZV9hc3luYyAoaCwgTiwg cSArIDEpOworCisgIGFjY193YWl0IChxICsgMSk7CisKKyAgZm9yIChpID0g MDsgaSA8IE47IGkrKykKKyAgICB7CisgICAgICBpZiAoaFtpXSAhPSBpKQor CWFib3J0ICgpOworICAgIH0KKworICBmcmVlIChoKTsKKyAgZnJlZSAoZyk7 CisKKyAgcmV0dXJuIDA7Cit9CkluZGV4OiBsaWJnb21wL3Rlc3RzdWl0ZS9s aWJnb21wLm9hY2MtZm9ydHJhbi9saWItMTYuZjkwCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIGxpYmdvbXAvdGVzdHN1aXRlL2xpYmdvbXAub2FjYy1m b3J0cmFuL2xpYi0xNi5mOTAJKG5vbmV4aXN0ZW50KQorKysgbGliZ29tcC90 ZXN0c3VpdGUvbGliZ29tcC5vYWNjLWZvcnRyYW4vbGliLTE2LmY5MAkod29y a2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACishIHsgZGctZG8gcnVuIH0K KyEgeyBkZy1za2lwLWlmICIiIHsgKi0qLSogfSB7ICIqIiB9IHsgIi1EQUND X01FTV9TSEFSRUQ9MCIgfSB9CisKK3Byb2dyYW0gbWFpbgorICB1c2Ugb3Bl bmFjYworICBpbXBsaWNpdCBub25lCisKKyAgaW50ZWdlciwgcGFyYW1ldGVy IDo6IE4gPSAyNTYKKyAgaW50ZWdlciwgYWxsb2NhdGFibGUgOjogaCg6KQor ICBpbnRlZ2VyIDo6IGkKKyAgaW50ZWdlciA6OiBhc3luYyA9IDUKKworICBh bGxvY2F0ZSAoaChOKSkKKworICBkbyBpID0gMSwgTgorICAgIGgoaSkgPSBp CisgIGVuZCBkbyAKKworICBjYWxsIGFjY19jb3B5aW4gKGgpCisKKyAgZG8g aSA9IDEsIE4KKyAgICBoKGkpID0gaSArIGkKKyAgZW5kIGRvIAorCisgIGNh bGwgYWNjX3VwZGF0ZV9kZXZpY2VfYXN5bmMgKGgsIHNpemVvZiAoaCksIGFz eW5jKQorCisgIGlmIChhY2NfaXNfcHJlc2VudCAoaCkgLm5lcXYuIC5UUlVF LikgY2FsbCBhYm9ydAorCisgIGgoOikgPSAwCisKKyAgY2FsbCBhY2NfY29w eW91dF9hc3luYyAoaCwgc2l6ZW9mIChoKSwgYXN5bmMpCisKKyAgY2FsbCBh Y2Nfd2FpdCAoYXN5bmMpCisKKyAgZG8gaSA9IDEsIE4KKyAgICBpZiAoaChp KSAvPSBpICsgaSkgY2FsbCBhYm9ydAorICBlbmQgZG8gCisKKyAgY2FsbCBh Y2NfY29weWluIChoLCBzaXplb2YgKGgpKQorCisgIGgoOikgPSAwCisKKyAg Y2FsbCBhY2NfdXBkYXRlX3NlbGZfYXN5bmMgKGgsIHNpemVvZiAoaCksIGFz eW5jKQorICAKKyAgaWYgKGFjY19pc19wcmVzZW50IChoKSAubmVxdi4gLlRS VUUuKSBjYWxsIGFib3J0CisKKyAgZG8gaSA9IDEsIE4KKyAgICBpZiAoaChp KSAvPSBpICsgaSkgY2FsbCBhYm9ydAorICBlbmQgZG8gCisKKyAgY2FsbCBh Y2NfZGVsZXRlX2FzeW5jIChoLCBhc3luYykKKworICBjYWxsIGFjY193YWl0 IChhc3luYykKKworICBpZiAoYWNjX2lzX3ByZXNlbnQgKGgpIC5uZXF2LiAu RkFMU0UuKSBjYWxsIGFib3J0CisgIAorZW5kIHByb2dyYW0K --------------164931A91D3794544BD25FCC--