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 1rSlOw-00FlRO-HA for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Jan 2024 22:07:20 +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 1rSlOv-00949h-Jm for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Jan 2024 22:07:17 +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 1rSlOt-00949V-UQ for pgsql-hackers@lists.postgresql.org; Wed, 24 Jan 2024 22:07:17 +0000 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rSlOf-003CH6-SG for pgsql-hackers@lists.postgresql.org; Wed, 24 Jan 2024 22:07:14 +0000 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-1d71b62fa87so879115ad.0 for ; Wed, 24 Jan 2024 14:07:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20230601.gappssmtp.com; s=20230601; t=1706134020; x=1706738820; darn=lists.postgresql.org; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=kShdHX2MfiW5q9q/NehJ8+IlCvLwpemcT5RskWKRbak=; b=hwHGSujVvUcKK5XkygFOh+xesdYMX5BRMQKnjQP96EM92oD70RcPYRDUIPlbQv+twS Uwm6CXQlSIunItMw0RVsSUmNYpPJniaikSjJEYX9LlcPVbbbemS3Xi3WHN2nDZGqhmo3 T41muRUX848MVXegLyFwtlrtoZV8kuqmqti8E5QcDOesGj3oef7U2mG4LuQ0wRN/tFvT KqsWabvXqo7gmScfJqvZ41Nwcr0DynPZBPtExkD+E6SIdXf00N1OZbPE/VEDiklHLA72 FciqUIubZo1boo+ClY/Nu7fqDLzSka4rCeyLfSc1JqfAqxVZrfRnnyW3D1cCF99s5zUV UsPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706134020; x=1706738820; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=kShdHX2MfiW5q9q/NehJ8+IlCvLwpemcT5RskWKRbak=; b=IWSMAumhKP3QTdEE7f0sXmNk1CEVqsLSp46nSj3pWf69zHuN61gBlyjs4JWoI80ROW pCHnt9ugKSl2BII9pkDByKHYpnJw2ttO734K1Esip3234N9NvDcGlsJyz7JVk9rQjWjL h12PRCPy3+Bk1LbpY/G0/9pgWI6AYEObzDpKxejT/CsvE4vW7YyE6hAx+tsmDL5AkguS M0INg86jdtwvbCyUX9a+s1Z2+MKZ/3C5EEvLb5NFzlbztAie45i48QRYmx8pGbpBCTCz 0HhVuDOLtIOVeGx/jKWuAGqw8OIt8c/aLcmPuXOTLCkCRh87M0Ds7dUPaJsrszxdn1bN BHcQ== X-Gm-Message-State: AOJu0Yx8a+M7vqZdy5A89MOS1WTw91qBiioxkXe6pXJuRumIhbcylVOv ws24+R6xgVK7TK73BZHmWkKOagzBHDG/C9p/GiU2X3kvjrB1N+a9UDHVokOz4Yc= X-Google-Smtp-Source: AGHT+IEKLeAT1licJNm8QpRPvV5uDZvlJYj59lKN13dJMqd11RCRHMK+dLhjn5UjWSZpK0yuwe26Ug== X-Received: by 2002:a17:903:230a:b0:1d7:45f9:e6ba with SMTP id d10-20020a170903230a00b001d745f9e6bamr392366plh.14.1706134019563; Wed, 24 Jan 2024 14:06:59 -0800 (PST) Received: from [192.168.2.139] ([50.53.98.191]) by smtp.googlemail.com with ESMTPSA id b1-20020a170902b60100b001d7915fc630sm586341pls.307.2024.01.24.14.06.56 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 24 Jan 2024 14:06:58 -0800 (PST) Content-Type: multipart/mixed; boundary="------------4ZTQGZiKJvMMlo81itiM0iLZ" Message-ID: <113f5e25-4455-4bdb-98ec-56275705cc4e@illuminatedcomputing.com> Date: Wed, 24 Jan 2024 14:06:56 -0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: SQL:2011 application time Content-Language: en-US To: Peter Eisentraut , jian he Cc: PostgreSQL Hackers References: <2d9740ad-3bb7-473c-8441-344351caa8ee@illuminatedcomputing.com> <596fefdd-6202-4228-b7c6-f240b1cbe06e@eisentraut.org> <35400587-6865-4a2c-9ea4-4761669478ea@eisentraut.org> <71b45adb-b496-4e58-b134-0a091014e63f@illuminatedcomputing.com> <7be8724a-5c25-46d7-8325-1bd8be6fa523@eisentraut.org> <0af6a323-f026-4cd9-adf1-941038cd00de@illuminatedcomputing.com> <88518c81-dcdc-4c5b-9200-146b74a520ab@eisentraut.org> From: Paul Jungwirth In-Reply-To: <88518c81-dcdc-4c5b-9200-146b74a520ab@eisentraut.org> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------4ZTQGZiKJvMMlo81itiM0iLZ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 1/24/24 08:32, Peter Eisentraut wrote: > On 18.01.24 04:59, Paul Jungwirth wrote: >> Here are new patches consolidating feedback from several emails. > > I have committed 0001 and 0002 (the primary key support). Thanks Peter! I noticed the comment on gist_stratnum_btree was out-of-date, so here is a tiny patch correcting it. Also the remaining patches with some updates: I fixed the dependency issues with PERIODs and their (hidden) GENERATED range columns. This has been causing test failures and bugging me since I reordered the patches at PgCon, so I'm glad to finally clean it up. The PERIOD should have an INTERNAL dependency on the range column, but then when you dropped the table the dependency code thought the whole table was part of the INTERNAL dependency, so the drop would fail. The PERIOD patch here fixes the dependency logic. (I guess this is the first time a column has been an internal dependency of something.) I also fixed an error message when you try to change the type of a start/end column used by a PERIOD. Previously the error message would complain about the GENERATED column, not the PERIOD, which seems confusing. In fact it was non-deterministic, depending on which pg_depend record the index returned first. On 12/6/23 05:22, jian he wrote: > tring to the following TODO: > // TODO: Need to save context->mtstate->mt_transition_capture? (See > comment on ExecInsert) > > but failed. > I also attached the trial, and also added the related test. > > You can also use the test to check portion update with insert trigger > with "referencing old table as old_table new table as new_table" > situation. Thank you for the very helpful test case here. I fixed the issue of not passing along the transition table. But there is still more work to do here I think: - The AFTER INSERT FOR EACH ROW triggers have *both* leftover rows in the NEW table. Now the docs do say that for AFTER triggers, a named transition table can see all the changes from the *statement* (although that seems pretty weird to me), but the inserts are two *separate* statements. I think the SQL:2011 standard is fairly clear about that. So each time the trigger fires we should still get just one row in the transition table. - The AFTER INSERT FOR EACH STATEMENT triggers never fire. That happens outside ExecInsert (in ExecModifyTable). In fact there is a bunch of stuff in ExecModifyTable that maybe we need to do when we insert leftovers. Do we even need a separate exec node, perhaps wrapping ExecModifyTable? I'm not sure that would give us the correct trigger ordering for the triggers on the implicit insert statement(s) vs the explicit update/delete statement, so maybe it does all need to be part of the single node. But still I think we need to be more careful about memory, especially the per-tuple context. I'll keep working on that, but at least in this round of patches the transition tables aren't missing completely. My plan is still to replace the 'p' amoppurpose operators with just support functions. I want to do that next, although as Peter requested I'll also start focusing more narrowly on the foreign key patches. Rebased to 46a0cd4cef. Yours, -- Paul ~{:-) pj@illuminatedcomputing.com --------------4ZTQGZiKJvMMlo81itiM0iLZ Content-Type: text/x-patch; charset=UTF-8; name="v24-0001-Fix-comment-on-gist_stratnum_btree.patch" Content-Disposition: attachment; filename="v24-0001-Fix-comment-on-gist_stratnum_btree.patch" Content-Transfer-Encoding: base64 RnJvbSAyOTgzMmE3MjRiZjAzODQ4NDJiZmU2OGQ3YzVmMTdmZmFiNDA2NTljIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFdlZCwgMjQgSmFuIDIwMjQgMTI6NTY6MzIgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyNCAxLzddIEZpeCBjb21tZW50IG9uIGdpc3Rfc3RyYXRu dW1fYnRyZWUKCldlIGdpdmUgcmVzdWx0cyBmb3IgPCwgPD0sID0sID49LCBhbmQgPiwgbm90 IGp1c3QgPS4gQmVjYXVzZSB3aHkgbm90PwotLS0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJl ZV9naXN0LmMgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lzdC5j IGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QuYwppbmRleCBjNGZjMDk0YzY1Mi4u NWZkNGNjZTI3ZDAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0 LmMKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QuYwpAQCAtNTUsNyArNTUs NyBAQCBnYnRfZGVjb21wcmVzcyhQR19GVU5DVElPTl9BUkdTKQogfQogCiAvKgotICogUmV0 dXJucyB0aGUgYnRyZWUgbnVtYmVyIGZvciBlcXVhbHMsIG90aGVyd2lzZSBpbnZhbGlkLgor ICogUmV0dXJucyB0aGUgYnRyZWUgbnVtYmVyIGZvciBzdXBwb3J0ZWQgb3BlcmF0b3JzLCBv dGhlcndpc2UgaW52YWxpZC4KICAqLwogRGF0dW0KIGdpc3Rfc3RyYXRudW1fYnRyZWUoUEdf RlVOQ1RJT05fQVJHUykKLS0gCjIuNDIuMAoK --------------4ZTQGZiKJvMMlo81itiM0iLZ Content-Type: text/x-patch; charset=UTF-8; name="v24-0002-Add-GiST-referencedagg-support-func.patch" Content-Disposition: attachment; filename="v24-0002-Add-GiST-referencedagg-support-func.patch" Content-Transfer-Encoding: base64 RnJvbSA5M2FhZDZjNzE1YzEwYzhmZDNmZTQ0YTczZGM4ZGY4NzgzYjgzNTFjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjkgRGVjIDIwMjMgMTQ6MzY6MjcgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyNCAyLzddIEFkZCBHaVNUIHJlZmVyZW5jZWRhZ2cgc3Vw cG9ydCBmdW5jCgpUaGlzIGlzIHRoZSB0aGlydGVlbnRoIHN1cHBvcnQgZnVuY3Rpb24gYW5k IGxldHMgdXMgaW1wbGVtZW50IHRlbXBvcmFsCmZvcmVpZ24ga2V5cyB3aXRob3V0IGhhcmRj b2RpbmcgdGhlIHJhbmdlX2FnZyBmdW5jdGlvbi4gVGhlIHN1cHBvcnQKZnVuY3Rpb24gc2hv dWxkIGJlIGFuIGFnZ3JlZ2F0ZSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgdHlwZSBtYXRjaGlu ZyB0aGUKZm9yZWlnbiBrZXkncyBQRVJJT0QgZWxlbWVudCBhbmQgcmV0dXJucyBhIHR5cGUg dGhhdCBjYW4gYXBwZWFyIG9uIHRoZQpyaWdodGhhbmQgc2lkZSBvZiBhIENvbnRhaW5lZEJ5 IG9wZXJhdG9yLCBzbyB0aGF0IGZvciBleGFtcGxlIHdlIGNhbiBzYXkKYGZrcGVyaW9kIDxA IHJhbmdlX2FnZyhwa3BlcmlvZClgLgotLS0KIGRvYy9zcmMvc2dtbC9naXN0LnNnbWwgICAg ICAgICAgICAgICAgIHwgMTEyICsrKysrKysrKysrKysrKysrKysrKysrKysKIGRvYy9zcmMv c2dtbC94aW5kZXguc2dtbCAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYyB8ICAgNyArLQogc3JjL2JhY2tlbmQvYWNjZXNz L2luZGV4L2FtdmFsaWRhdGUuYyAgfCAgIDggKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0 LmggICAgICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJv Yy5kYXQgICAgICB8ICAgNiArKwogNiBmaWxlcyBjaGFuZ2VkLCAxMzggaW5zZXJ0aW9ucygr KSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZ2lzdC5zZ21s IGIvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbAppbmRleCA4YTE5ZjE1NmQ4My4uNWExOTViOTY1 NTEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9naXN0LnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL2dpc3Quc2dtbApAQCAtMzAwLDYgKzMwMCwxMCBAQCBDUkVBVEUgSU5ERVggT04gbXlf dGFibGUgVVNJTkcgR0lTVCAobXlfaW5ldF9jb2x1bW4gaW5ldF9vcHMpOwogICAgPGZpbGVu YW1lPnNyYy9pbmNsdWRlL2FjY2Vzcy9zdHJhdG51bS5oPC9maWxlbmFtZT4pIGludG8gc3Ry YXRlZ3kgbnVtYmVycwogICAgdXNlZCBieSB0aGUgb3BlcmF0b3IgY2xhc3MuICBUaGlzIGxl dHMgdGhlIGNvcmUgY29kZSBsb29rIHVwIG9wZXJhdG9ycyBmb3IKICAgIHRlbXBvcmFsIGNv bnN0cmFpbnQgaW5kZXhlcy4KKyAgIFRoZSBvcHRpb25hbCB0aGlydGVlbnRoIG1ldGhvZCA8 ZnVuY3Rpb24+cmVmZXJlbmNlZGFnZzwvZnVuY3Rpb24+IGlzIHVzZWQgYnkKKyAgIHRlbXBv cmFsIGZvcmVpZ24ga2V5cyB0byBjb21iaW5lZCByZWZlcmVuY2VkIHJvd3Mgd2l0aCB0aGUg c2FtZQorICAgbm9uLTxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IGludG8g b25lIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+CisgICBzcGFuIHRvIGNv bXBhcmUgYWdhaW5zdCByZWZlcmVuY2luZyByb3dzLgogIDwvcGFyYT4KIAogIDx2YXJpYWJs ZWxpc3Q+CkBAIC0xMjQ0LDYgKzEyNDgsMTE0IEBAIG15X3N0cmF0bnVtKFBHX0ZVTkNUSU9O X0FSR1MpCiAgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0 ZW50cnk+CisgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgPHRlcm0+PGZ1bmN0aW9uPnJlZmVy ZW5jZWRhZ2c8L2Z1bmN0aW9uPjwvdGVybT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBh cmE+CisgICAgICAgQW4gYWdncmVnYXRlIGZ1bmN0aW9uLiBHaXZlbiB2YWx1ZXMgb2YgdGhp cyBvcGNsYXNzLAorICAgICAgIGl0IHJldHVybnMgYSB2YWx1ZSBjb21iaW5pbmcgdGhlbSBh bGwuIFRoZSByZXR1cm4gdmFsdWUKKyAgICAgICBuZWVkIG5vdCBiZSB0aGUgc2FtZSB0eXBl IGFzIHRoZSBpbnB1dCwgYnV0IGl0IG11c3QgYmUgYQorICAgICAgIHR5cGUgdGhhdCBjYW4g YXBwZWFyIG9uIHRoZSByaWdodCBoYW5kIHNpZGUgb2YgdGhlICJjb250YWluZWQgYnkiCisg ICAgICAgb3BlcmF0b3IuIEZvciBleGFtcGxlIHRoZSBidWlsdC1pbiA8bGl0ZXJhbD5yYW5n ZV9vcHM8L2xpdGVyYWw+CisgICAgICAgb3BjbGFzcyB1c2VzIDxsaXRlcmFsPnJhbmdlX2Fn ZzwvbGl0ZXJhbD4gaGVyZSwgc28gdGhhdCBmb3JlaWduCisgICAgICAga2V5cyBjYW4gY2hl Y2sgPGxpdGVyYWw+ZmtwZXJpb2QgQD4gcmFuZ2VfYWdnKHBrcGVyaW9kKTwvbGl0ZXJhbD4u CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGlzIGlzIHVzZWQgZm9y IHRlbXBvcmFsIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzLgorICAgICAgIElmIHlvdSBvbWl0 IHRoaXMgc3VwcG9ydCBmdW5jdGlvbiwgeW91ciB0eXBlIGNhbm5vdCBiZSB1c2VkCisgICAg ICAgYXMgdGhlIDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4gcGFydCBvZiBhIGZvcmVpZ24g a2V5LgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgPGFjcm9u eW0+U1FMPC9hY3JvbnltPiBkZWNsYXJhdGlvbiBvZiB0aGUgZnVuY3Rpb24gbXVzdCBsb29r IGxpa2UKKyAgICAgICB0aGlzICh1c2luZyA8bGl0ZXJhbD5teV9yYW5nZV9hZ2c8L2xpdGVy YWw+IGFzIGFuIGV4YW1wbGUpOgorCis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgT1IgUkVQ TEFDRSBGVU5DVElPTiBteV9yYW5nZV9hZ2dfdHJhbnNmbihpbnRlcm5hbCwgYW55cmFuZ2Up CitSRVRVUk5TIGludGVybmFsCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBT VFJJQ1Q7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIG15X3JhbmdlX2FnZ19maW5h bGZuKGludGVybmFsLCBhbnlyYW5nZSkKK1JFVFVSTlMgYW55bXVsdGlyYW5nZQorQVMgJ01P RFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgU1RSSUNUOworCitDUkVBVEUgQUdHUkVHQVRF IG15X3JhbmdlX2FnZyhhbnlyYW5nZSkgeworICBTRlVOQyA9IG15X3JhbmdlX2FnZ190cmFu c2ZuLAorICBTVFlQRSA9IGludGVybmFsLAorICBGSU5BTEZVTkMgPSBteV9yYW5nZV9hZ2df ZmluYWxmbgorfTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8L3BhcmE+CisKKyAgICAg ICA8cGFyYT4KKyAgICAgICAgVGhlIG1hdGNoaW5nIGNvZGUgaW4gdGhlIEMgbW9kdWxlIGNv dWxkIHRoZW4gZm9sbG93IHRoaXMgZXhhbXBsZToKKworPHByb2dyYW1saXN0aW5nPgorRGF0 dW0KK215X3JhbmdlX2FnZ190cmFuc2ZuKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisgICAgTWVt b3J5Q29udGV4dCAgICBhZ2dDb250ZXh0OworICAgIE9pZCAgICAgICAgICAgICAgcm5ndHlw b2lkOworICAgIEFycmF5QnVpbGRTdGF0ZSAqc3RhdGU7CisKKyAgICBpZiAoIUFnZ0NoZWNr Q2FsbENvbnRleHQoZmNpbmZvLCAmYW1wO2FnZ0NvbnRleHQpKQorICAgICAgICBlbG9nKEVS Uk9SLCAicmFuZ2VfYWdnX3RyYW5zZm4gY2FsbGVkIGluIG5vbi1hZ2dyZWdhdGUgY29udGV4 dCIpOworCisgICAgcm5ndHlwb2lkID0gZ2V0X2ZuX2V4cHJfYXJndHlwZShmY2luZm8tJmd0 O2ZsaW5mbywgMSk7CisgICAgaWYgKCF0eXBlX2lzX3JhbmdlKHJuZ3R5cG9pZCkpCisgICAg ICAgIGVsb2coRVJST1IsICJyYW5nZV9hZ2cgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIHJhbmdl Iik7CisKKyAgICBpZiAoUEdfQVJHSVNOVUxMKDApKQorICAgICAgICBzdGF0ZSA9IGluaXRB cnJheVJlc3VsdChybmd0eXBvaWQsIGFnZ0NvbnRleHQsIGZhbHNlKTsKKyAgICBlbHNlCisg ICAgICAgIHN0YXRlID0gKEFycmF5QnVpbGRTdGF0ZSAqKSBQR19HRVRBUkdfUE9JTlRFUigw KTsKKworICAgIC8qIHNraXAgTlVMTHMgKi8KKyAgICBpZiAoIVBHX0FSR0lTTlVMTCgxKSkK KyAgICAgICAgYWNjdW1BcnJheVJlc3VsdChzdGF0ZSwgUEdfR0VUQVJHX0RBVFVNKDEpLCBm YWxzZSwgcm5ndHlwb2lkLCBhZ2dDb250ZXh0KTsKKworICAgIFBHX1JFVFVSTl9QT0lOVEVS KHN0YXRlKTsKK30KKworRGF0dW0KK215X3JhbmdlX2FnZ19maW5hbGZuKFBHX0ZVTkNUSU9O X0FSR1MpCit7CisgICAgTWVtb3J5Q29udGV4dCAgICBhZ2dDb250ZXh0OworICAgIE9pZCAg ICAgICAgICAgICAgbWx0cm5ndHlwb2lkOworICAgIFR5cGVDYWNoZUVudHJ5ICAqdHlwY2Fj aGU7CisgICAgQXJyYXlCdWlsZFN0YXRlICpzdGF0ZTsKKyAgICBpbnQzMiAgICAgICAgICAg IHJhbmdlX2NvdW50OworICAgIFJhbmdlVHlwZSAgICAgICoqcmFuZ2VzOworICAgIGludCAg ICAgICAgICAgICAgaTsKKworICAgIGlmICghQWdnQ2hlY2tDYWxsQ29udGV4dChmY2luZm8s ICZhbXA7YWdnQ29udGV4dCkpCisgICAgICAgIGVsb2coRVJST1IsICJyYW5nZV9hZ2dfZmlu YWxmbiBjYWxsZWQgaW4gbm9uLWFnZ3JlZ2F0ZSBjb250ZXh0Iik7CisKKyAgICBzdGF0ZSA9 IFBHX0FSR0lTTlVMTCgwKSA/IE5VTEwgOiAoQXJyYXlCdWlsZFN0YXRlICopIFBHX0dFVEFS R19QT0lOVEVSKDApOworICAgIGlmIChzdGF0ZSA9PSBOVUxMKQorICAgICAgICAvKiBUaGlz IHNob3VsZG4ndCBiZSBwb3NzaWJsZSwgYnV0IGp1c3QgaW4gY2FzZS4uLi4gKi8KKyAgICAg ICAgUEdfUkVUVVJOX05VTEwoKTsKKworICAgIC8qIEFsc28gcmV0dXJuIE5VTEwgaWYgd2Ug aGFkIHplcm8gaW5wdXRzLCBsaWtlIG90aGVyIGFnZ3JlZ2F0ZXMgKi8KKyAgICByYW5nZV9j b3VudCA9IHN0YXRlLSZndDtuZWxlbXM7CisgICAgaWYgKHJhbmdlX2NvdW50ID09IDApCisg ICAgICAgIFBHX1JFVFVSTl9OVUxMKCk7CisKKyAgICBtbHRybmd0eXBvaWQgPSBnZXRfZm5f ZXhwcl9yZXR0eXBlKGZjaW5mby0mZ3Q7ZmxpbmZvKTsKKyAgICB0eXBjYWNoZSA9IG11bHRp cmFuZ2VfZ2V0X3R5cGNhY2hlKGZjaW5mbywgbWx0cm5ndHlwb2lkKTsKKworICAgIHJhbmdl cyA9IHBhbGxvYzAocmFuZ2VfY291bnQgKiBzaXplb2YoUmFuZ2VUeXBlICopKTsKKyAgICBm b3IgKGkgPSAwOyBpICZsdDsgcmFuZ2VfY291bnQ7IGkrKykKKyAgICAgICAgcmFuZ2VzW2ld ID0gRGF0dW1HZXRSYW5nZVR5cGVQKHN0YXRlLSZndDtkdmFsdWVzW2ldKTsKKworICAgIFBH X1JFVFVSTl9NVUxUSVJBTkdFX1AobWFrZV9tdWx0aXJhbmdlKG1sdHJuZ3R5cG9pZCwgdHlw Y2FjaGUtJmd0O3JuZ3R5cGUsIHJhbmdlX2NvdW50LCByYW5nZXMpKTsKK30KKzwvcHJvZ3Jh bWxpc3Rpbmc+CisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJs aXN0ZW50cnk+CiAgIDwvdmFyaWFibGVsaXN0PgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3hpbmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3hpbmRleC5zZ21sCmlu ZGV4IDNhMTlkYWIxNWUwLi45M2RmMTM2ZWJhMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3hpbmRleC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC94aW5kZXguc2dtbApAQCAtNTA4LDcg KzUwOCw3IEBACiAgICA8L3RhYmxlPgogCiAgIDxwYXJhPgotICAgR2lTVCBpbmRleGVzIGhh dmUgdHdlbHZlIHN1cHBvcnQgZnVuY3Rpb25zLCBzZXZlbiBvZiB3aGljaCBhcmUgb3B0aW9u YWwsCisgICBHaVNUIGluZGV4ZXMgaGF2ZSB0aGlydGVlbiBzdXBwb3J0IGZ1bmN0aW9ucywg ZWlnaHQgb2Ygd2hpY2ggYXJlIG9wdGlvbmFsLAogICAgYXMgc2hvd24gaW4gPHhyZWYgbGlu a2VuZD0ieGluZGV4LWdpc3Qtc3VwcG9ydC10YWJsZSIvPi4KICAgIChGb3IgbW9yZSBpbmZv cm1hdGlvbiBzZWUgPHhyZWYgbGlua2VuZD0iZ2lzdCIvPi4pCiAgIDwvcGFyYT4KQEAgLTU5 Niw2ICs1OTYsMTIgQEAKICAgICAgICAgdXNlZCBieSB0aGUgb3BlcmF0b3IgY2xhc3MgKG9w dGlvbmFsKTwvZW50cnk+CiAgICAgICAgPGVudHJ5PjEyPC9lbnRyeT4KICAgICAgIDwvcm93 PgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnk+PGZ1bmN0aW9uPnJlZmVyZW5jZWRhZ2c8 L2Z1bmN0aW9uPjwvZW50cnk+CisgICAgICAgPGVudHJ5PmFnZ3JlZ2F0ZXMgcmVmZXJlbmNl ZCByb3dzJyA8bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPgorICAgICAgICBw YXJ0PC9lbnRyeT4KKyAgICAgICA8ZW50cnk+MTM8L2VudHJ5PgorICAgICAgPC9yb3c+CiAg ICAgIDwvdGJvZHk+CiAgICAgPC90Z3JvdXA+CiAgICA8L3RhYmxlPgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZhbGlkYXRlLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYwppbmRleCA2OThlMDFlZDJmNy4uNGJkMmU1MzFk NzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R2YWxpZGF0ZS5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R2YWxpZGF0ZS5jCkBAIC0xNTEs NiArMTUxLDExIEBAIGdpc3R2YWxpZGF0ZShPaWQgb3BjbGFzc29pZCkKIAkJCQlvayA9IGNo ZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgSU5UMk9JRCwgdHJ1ZSwK IAkJCQkJCQkJCQkJMSwgMSwgSU5UMk9JRCk7CiAJCQkJYnJlYWs7CisJCQljYXNlIEdJU1Rf UkVGRVJFTkNFRF9BR0dfUFJPQzoKKwkJCQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUo cHJvY2Zvcm0tPmFtcHJvYywgSW52YWxpZE9pZCwgZmFsc2UsCisJCQkJCQkJCQkJCSAgIDEs IDEsIG9wY2ludHlwZSk7CisJCQkJLy8gVE9ETzogbXVzdCBiZSBhZ2dyZWdhdGUKKwkJCQli cmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJZXJlcG9ydChJTkZPLAogCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKQEAgLTI3Miw3ICsyNzcsNyBA QCBnaXN0dmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpCiAJCWlmIChpID09IEdJU1RfRElTVEFO Q0VfUFJPQyB8fCBpID09IEdJU1RfRkVUQ0hfUFJPQyB8fAogCQkJaSA9PSBHSVNUX0NPTVBS RVNTX1BST0MgfHwgaSA9PSBHSVNUX0RFQ09NUFJFU1NfUFJPQyB8fAogCQkJaSA9PSBHSVNU X09QVElPTlNfUFJPQyB8fCBpID09IEdJU1RfU09SVFNVUFBPUlRfUFJPQyB8fAotCQkJaSA9 PSBHSVNUX1NUUkFUTlVNX1BST0MpCisJCQlpID09IEdJU1RfU1RSQVROVU1fUFJPQyB8fCBp ID09IEdJU1RfUkVGRVJFTkNFRF9BR0dfUFJPQykKIAkJCWNvbnRpbnVlOwkJCS8qIG9wdGlv bmFsIG1ldGhvZHMgKi8KIAkJZXJlcG9ydChJTkZPLAogCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaW5kZXgvYW12YWxpZGF0ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2Ft dmFsaWRhdGUuYwppbmRleCAzMmJiNDc3ZjMyOC4uNzE2MzhjYjQwMWIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9hbXZhbGlkYXRlLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2luZGV4L2FtdmFsaWRhdGUuYwpAQCAtMTQ2LDcgKzE0Niw4IEBAIGlkZW50 aWZ5X29wZmFtaWx5X2dyb3VwcyhDYXRDTGlzdCAqb3BybGlzdCwgQ2F0Q0xpc3QgKnByb2Ns aXN0KQogICoKICAqIFRoZSAiLi4uIiByZXByZXNlbnRzIG1heGFyZ3MgYXJndW1lbnQtdHlw ZSBPSURzLiAgSWYgImV4YWN0IiBpcyB0cnVlLCB0aGV5CiAgKiBtdXN0IG1hdGNoIHRoZSBm dW5jdGlvbiBhcmcgdHlwZXMgZXhhY3RseSwgZWxzZSBvbmx5IGJpbmFyeS1jb2VyY2libHku Ci0gKiBJbiBhbnkgY2FzZSB0aGUgZnVuY3Rpb24gcmVzdWx0IHR5cGUgbXVzdCBtYXRjaCBy ZXN0eXBlIGV4YWN0bHkuCisgKiBJbiBhbnkgY2FzZSB0aGUgZnVuY3Rpb24gcmVzdWx0IHR5 cGUgbXVzdCBtYXRjaCByZXN0eXBlIGV4YWN0bHksCisgKiB1bmxlc3MgaXQgaXMgSW52YWxp ZE9pZC4KICAqLwogYm9vbAogY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShPaWQgZnVuY2lkLCBP aWQgcmVzdHlwZSwgYm9vbCBleGFjdCwKQEAgLTE2Myw4ICsxNjQsOSBAQCBjaGVja19hbXBy b2Nfc2lnbmF0dXJlKE9pZCBmdW5jaWQsIE9pZCByZXN0eXBlLCBib29sIGV4YWN0LAogCQll bG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgZnVuY3Rpb24gJXUiLCBmdW5j aWQpOwogCXByb2Nmb3JtID0gKEZvcm1fcGdfcHJvYykgR0VUU1RSVUNUKHRwKTsKIAotCWlm IChwcm9jZm9ybS0+cHJvcmV0dHlwZSAhPSByZXN0eXBlIHx8IHByb2Nmb3JtLT5wcm9yZXRz ZXQgfHwKLQkJcHJvY2Zvcm0tPnByb25hcmdzIDwgbWluYXJncyB8fCBwcm9jZm9ybS0+cHJv bmFyZ3MgPiBtYXhhcmdzKQorCWlmICgocHJvY2Zvcm0tPnByb3JldHR5cGUgIT0gcmVzdHlw ZSAmJiBPaWRJc1ZhbGlkKHJlc3R5cGUpKQorCQl8fCBwcm9jZm9ybS0+cHJvcmV0c2V0IHx8 IHByb2Nmb3JtLT5wcm9uYXJncyA8IG1pbmFyZ3MKKwkJfHwgcHJvY2Zvcm0tPnByb25hcmdz ID4gbWF4YXJncykKIAkJcmVzdWx0ID0gZmFsc2U7CiAKIAl2YV9zdGFydChhcCwgbWF4YXJn cyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdC5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2dpc3QuaAppbmRleCAyMmRkMDRjMTQxOC4uNjQxNjc3ZTE5MWMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL2dpc3QuaApAQCAtNDAsNyArNDAsOCBAQAogI2RlZmluZSBHSVNUX09QVElPTlNfUFJP QwkJCQkxMAogI2RlZmluZSBHSVNUX1NPUlRTVVBQT1JUX1BST0MJCQkxMQogI2RlZmluZSBH SVNUX1NUUkFUTlVNX1BST0MJCQkJMTIKLSNkZWZpbmUgR0lTVE5Qcm9jcwkJCQkJMTIKKyNk ZWZpbmUgR0lTVF9SRUZFUkVOQ0VEX0FHR19QUk9DCQkxMworI2RlZmluZSBHSVNUTlByb2Nz CQkJCQkxMwogCiAvKgogICogUGFnZSBvcGFxdWUgZGF0YSBpbiBhIEdpU1QgaW5kZXggcGFn ZS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdAppbmRleCAzNTI1NThjMWYwNi4uMWQz ZDVmY2Y0ZDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRh dAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5kYXQKQEAgLTYxMCw2ICs2 MTAsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2dpc3QvcmFuZ2Vfb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ2FueXJhbmdlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnlyYW5nZScs IGFtcHJvY251bSA9PiAnMTInLAogICBhbXByb2MgPT4gJ2dpc3Rfc3RyYXRudW1faWRlbnRp dHknIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnYW55cmFuZ2UnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2FueXJhbmdlJywg YW1wcm9jbnVtID0+ICcxMycsCisgIGFtcHJvYyA9PiAncmFuZ2VfYWdnKGFueXJhbmdlKScg fSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L25ldHdvcmtfb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ2luZXQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2NudW0g PT4gJzEnLAogICBhbXByb2MgPT4gJ2luZXRfZ2lzdF9jb25zaXN0ZW50JyB9LApAQCAtNjUw LDYgKzY1Myw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycs IGFtcHJvY2xlZnR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywKICAgYW1wcm9jcmlnaHR0eXBl ID0+ICdhbnltdWx0aXJhbmdlJywgYW1wcm9jbnVtID0+ICcxMicsCiAgIGFtcHJvYyA9PiAn Z2lzdF9zdHJhdG51bV9pZGVudGl0eScgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L211 bHRpcmFuZ2Vfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLAorICBh bXByb2NyaWdodHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLCBhbXByb2NudW0gPT4gJzEzJywK KyAgYW1wcm9jID0+ICdyYW5nZV9hZ2coYW55bXVsdGlyYW5nZSknIH0sCiAKICMgZ2luCiB7 IGFtcHJvY2ZhbWlseSA9PiAnZ2luL2FycmF5X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdh bnlhcnJheScsCi0tIAoyLjQyLjAKCg== --------------4ZTQGZiKJvMMlo81itiM0iLZ Content-Type: text/x-patch; charset=UTF-8; name="v24-0003-Add-temporal-FOREIGN-KEYs.patch" Content-Disposition: attachment; filename="v24-0003-Add-temporal-FOREIGN-KEYs.patch" Content-Transfer-Encoding: base64 RnJvbSA3ODAxMTkzMjMyNDMxZDBlZDdkN2Q0YTFkNzFiNGUyZWQ5NDk5NTBkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFN1biwgMjcgSnVuIDIwMjEgMTI6NTg6NTEgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYyNCAzLzddIEFkZCB0ZW1wb3JhbCBGT1JFSUdOIEtFWXMK Ci0gQWRkZWQgYmlzb24gc3VwcG9ydCBmb3IgdGVtcG9yYWwgRk9SRUlHTiBLRVlzLiBUaGV5 IHNob3VsZCBoYXZlIGEKICByYW5nZSBjb2x1bW4gZm9yIHRoZSB0ZW1wb3JhbCBjb21wb25l bnQuCi0gQWRkZWQgdGVtcG9yYWwgdHJpZ2dlciBmdW5jdGlvbnMgYWtpbiB0byBleGlzdGlu ZyBSSSB0cmlnZ2VyCiAgZnVuY3Rpb25zLgotIERvbid0IHlldCBzdXBwb3J0IE9OIHtVUERB VEUsREVMRVRFfSB7Q0FTQ0FERSxTRVQgTlVMTCxTRVQgREVGQVVMVH0uCi0gQWRkZWQgcGdf ZHVtcCBzdXBwb3J0LgotIFNob3cgdGhlIGNvcnJlY3Qgc3ludGF4IGluIHBzcWwgXGQgb3V0 cHV0IGZvciBmb3JlaWduIGtleXMuCi0gQWRkZWQgdGVzdHMgYW5kIGRvY3VtZW50YXRpb24u Ci0tLQogLi4uL2J0cmVlX2dpc3QvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgIHwg IDQ4ICsKIGNvbnRyaWIvYnRyZWVfZ2lzdC9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgICB8 ICAyOCArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sICAgICAgICAgICAg fCAgNDggKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICAg ICB8ICA1MSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAg ICAgIHwgOTE2ICsrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVu Y3MuYyAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRm dW5jcy5jICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55ICAgICAgICAgICAgICAgICAgICAgfCAgMzcgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9yaV90cmlnZ2Vycy5jICAgICAgICAgICB8IDQwNCArKysrKysrLQogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgIDE5ICstCiBzcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyAgICAgICAgICAgfCAgMzEgKwogc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmggICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgMjQgKwogc3JjL2lu Y2x1ZGUvY29tbWFuZHMvZGVmcmVtLmggICAgICAgICAgICAgICAgIHwgICA3ICstCiBzcmMv aW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaCAgICAgICAgICAgICAgfCAgIDMgKwogc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgICA2ICsKIHNy Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwog Li4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgICAgIHwgNTYxICsr KysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCAg ICAgfCA1MzUgKysrKysrKysrKwogMjAgZmlsZXMgY2hhbmdlZCwgMjM0OSBpbnNlcnRpb25z KCspLCAzODMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0 L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0IGIvY29udHJpYi9idHJlZV9naXN0L2V4 cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CmluZGV4IGJlNTJjNTIyZTg5Li42ZDRhY2Ex ZDZkNSAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVkL3dpdGhvdXRf b3ZlcmxhcHMub3V0CisrKyBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9leHBlY3RlZC93aXRob3V0 X292ZXJsYXBzLm91dApAQCAtNDIsMyArNDIsNTEgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUwogICAoMSwgJ1syMDAwLTA2LTAxLDIwMDEtMDEtMDEpJyk7CiBFUlJPUjog IGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAi dGVtcG9yYWxfcm5nX3BrIgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPSgxLCBbMDYt MDEtMjAwMCwwMS0wMS0yMDAxKSkgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcga2V5IChpZCwg dmFsaWRfYXQpPSgxLCBbMDEtMDEtMjAwMCwwMS0wMS0yMDAxKSkuCistLSBGb3JlaWduIGtl eQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorICBpZCBpbnRlZ2VyLAor ICB2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIHBhcmVudF9pZCBpbnRlZ2VyLAorICBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKSwKKyAgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2Zr IEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKyAgICBSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitcZCB0ZW1wb3Jh bF9ma19ybmcycm5nCisgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVtcG9yYWxfZmtfcm5n MnJuZyIKKyAgQ29sdW1uICAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8 IERlZmF1bHQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLQorIGlkICAgICAgICB8IGludGVnZXIgICB8ICAgICAgICAgICB8IG5v dCBudWxsIHwgCisgdmFsaWRfYXQgIHwgZGF0ZXJhbmdlIHwgICAgICAgICAgIHwgbm90IG51 bGwgfCAKKyBwYXJlbnRfaWQgfCBpbnRlZ2VyICAgfCAgICAgICAgICAgfCAgICAgICAgICB8 IAorSW5kZXhlczoKKyAgICAidGVtcG9yYWxfZmtfcm5nMnJuZ19wayIgUFJJTUFSWSBLRVkg KGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorRm9yZWlnbi1rZXkgY29uc3RyYWlu dHM6CisgICAgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIEZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkgUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcoaWQsIFBFUklP RCB2YWxpZF9hdCkKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBw Z19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfZmtfcm5nMnJuZ19mayc7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRl ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkgUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcoaWQsIFBFUklPRCB2YWxpZF9hdCkKKygx IHJvdykKKworLS0gb2theQorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxV RVMKKyAgKDEsICdbMjAwMC0wMS0wMSwyMDAxLTAxLTAxKScsIDEpOworLS0gb2theSBzcGFu bmluZyB0d28gcGFyZW50IHJlY29yZHM6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcy cm5nIFZBTFVFUworICAoMiwgJ1syMDAwLTAxLTAxLDIwMDItMDEtMDEpJywgMSk7CistLSBr ZXkgaXMgbWlzc2luZworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMK KyAgKDMsICdbMjAwMC0wMS0wMSwyMDAxLTAxLTAxKScsIDMpOworRVJST1I6ICBpbnNlcnQg b3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIiB2aW9sYXRlcyBmb3Jl aWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIgorREVUQUlMOiAg S2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oMywgWzAxLTAxLTIwMDAsMDEtMDEtMjAwMSkp IGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9ybmciLgorLS0ga2V5IGV4dXN0 cyBidXQgaXMgb3V0c2lkZSByYW5nZQorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJu ZyBWQUxVRVMKKyAgKDQsICdbMjAwMS0wMS0wMSwyMDAyLTAxLTAxKScsIDIpOworRVJST1I6 ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIiB2aW9s YXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIgor REVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oMiwgWzAxLTAxLTIwMDEsMDEt MDEtMjAwMikpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9ybmciLgorLS0g a2V5IGV4dXN0cyBidXQgaXMgcGFydGx5IG91dHNpZGUgcmFuZ2UKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTCisgICg1LCAnWzIwMDAtMDEtMDEsMjAwMi0wMS0w MSknLCAyKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGVtcG9yYWxf Zmtfcm5nMnJuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxf Zmtfcm5nMnJuZ19mayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KDIs IFswMS0wMS0yMDAwLDAxLTAxLTIwMDIpKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAidGVt cG9yYWxfcm5nIi4KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9zcWwvd2l0aG91 dF9vdmVybGFwcy5zcWwgYi9jb250cmliL2J0cmVlX2dpc3Qvc3FsL3dpdGhvdXRfb3Zlcmxh cHMuc3FsCmluZGV4IDQzM2M2MDlhYjIyLi4wNDg0MTM1ZTc2NiAxMDA2NDQKLS0tIGEvY29u dHJpYi9idHJlZV9naXN0L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAorKysgYi9jb250cmli L2J0cmVlX2dpc3Qvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBAIC0yMywzICsyMywzMSBA QCBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTCiAtLSBzaG91bGQgZmFpbDoKIElO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMKICAgKDEsICdbMjAwMC0wNi0wMSwyMDAx LTAxLTAxKScpOworCistLSBGb3JlaWduIGtleQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmcgKAorICBpZCBpbnRlZ2VyLAorICB2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIHBh cmVudF9pZCBpbnRlZ2VyLAorICBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKyAgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKyAgICBSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklP RCB2YWxpZF9hdCkKKyk7CitcZCB0ZW1wb3JhbF9ma19ybmcycm5nCitTRUxFQ1QgcGdfZ2V0 X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9 ICd0ZW1wb3JhbF9ma19ybmcycm5nX2ZrJzsKKworLS0gb2theQorSU5TRVJUIElOVE8gdGVt cG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKDEsICdbMjAwMC0wMS0wMSwyMDAxLTAxLTAx KScsIDEpOworLS0gb2theSBzcGFubmluZyB0d28gcGFyZW50IHJlY29yZHM6CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUworICAoMiwgJ1syMDAwLTAxLTAxLDIw MDItMDEtMDEpJywgMSk7CistLSBrZXkgaXMgbWlzc2luZworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKDMsICdbMjAwMC0wMS0wMSwyMDAxLTAxLTAxKScs IDMpOworLS0ga2V5IGV4dXN0cyBidXQgaXMgb3V0c2lkZSByYW5nZQorSU5TRVJUIElOVE8g dGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKDQsICdbMjAwMS0wMS0wMSwyMDAyLTAx LTAxKScsIDIpOworLS0ga2V5IGV4dXN0cyBidXQgaXMgcGFydGx5IG91dHNpZGUgcmFuZ2UK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTCisgICg1LCAnWzIwMDAt MDEtMDEsMjAwMi0wMS0wMSknLCAyKTsKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21s CmluZGV4IDA3OWFmOTEyNmFkLi42OTA1Yjc1YmI1YyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV90YWJsZS5zZ21sCkBAIC04MSw3ICs4MSw3IEBAIENSRUFURSBbIFsgR0xPQkFMIHwgTE9D QUwgXSB7IFRFTVBPUkFSWSB8IFRFTVAgfSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1Qg RVhJCiAgIFVOSVFVRSBbIE5VTExTIFsgTk9UIF0gRElTVElOQ1QgXSAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBd IFssIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFj ZWFibGU+IFdJVEhPVVQgT1ZFUkxBUFMgXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAogICBQUklNQVJZIEtFWSAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFi bGU+IFssIC4uLiBdIFssIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+IFdJVEhPVVQgT1ZFUkxBUFMgXSApIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAogICBF WENMVURFIFsgVVNJTkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X21l dGhvZDwvcmVwbGFjZWFibGU+IF0gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ ZXhjbHVkZV9lbGVtZW50PC9yZXBsYWNlYWJsZT4gV0lUSCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+b3BlcmF0b3I8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4g WyBXSEVSRSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wcmVkaWNhdGU8L3Jl cGxhY2VhYmxlPiApIF0gfAotICBGT1JFSUdOIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgUkVGRVJF TkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2Vh YmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVw bGFjZWFibGU+IFssIC4uLiBdICkgXQorICBGT1JFSUdOIEtFWSAoIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFss IFBFUklPRCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2 YWw8L3JlcGxhY2VhYmxlPiBdICkgUkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklP RCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2YWw8L3Jl cGxhY2VhYmxlPiBdICkgXQogICAgIFsgTUFUQ0ggRlVMTCB8IE1BVENIIFBBUlRJQUwgfCBN QVRDSCBTSU1QTEUgXSBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUKIGNsYXNzPSJwYXJhbWV0 ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0gWyBPTiBVUERBVEUgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFj ZWFibGU+IF0gfQogWyBERUZFUlJBQkxFIHwgTk9UIERFRkVSUkFCTEUgXSBbIElOSVRJQUxM WSBERUZFUlJFRCB8IElOSVRJQUxMWSBJTU1FRElBVEUgXQpAQCAtMTE1MCw4ICsxMTUwLDgg QEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVy aWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNx bC1jcmVhdGV0YWJsZS1wYXJtcy1yZWZlcmVuY2VzIj4KICAgICA8dGVybT48bGl0ZXJhbD5S RUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVw bGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1u PC9yZXBsYWNlYWJsZT4gKSBdIFsgTUFUQ0ggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm1hdGNodHlwZTwvcmVwbGFjZWFibGU+IF0gWyBPTiBERUxFVEUgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0g WyBPTiBVUERBVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFs X2FjdGlvbjwvcmVwbGFjZWFibGU+IF08L2xpdGVyYWw+IChjb2x1bW4gY29uc3RyYWludCk8 L3Rlcm0+CiAKLSAgIDx0ZXJtPjxsaXRlcmFsPkZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g KQotICAgIFJFRkVSRU5DRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRh YmxlPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5y ZWZjb2x1bW48L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKyAgIDx0ZXJtPjxsaXRlcmFs PkZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9u YW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgUEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+IF0gKQorICAg IFJFRkVSRU5DRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRhYmxlPC9y ZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZjb2x1 bW48L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCBQRVJJT0QgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gXSApIF0KICAg ICBbIE1BVENIIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5tYXRjaHR5cGU8L3Jl cGxhY2VhYmxlPiBdCiAgICAgWyBPTiBERUxFVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0KICAgICBbIE9OIFVQ REFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9u PC9yZXBsYWNlYWJsZT4gXTwvbGl0ZXJhbD4KQEAgLTExNjIsMTEgKzExNjIsMjkgQEAgV0lU SCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0 ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgIFRoZXNlIGNsYXVzZXMgc3BlY2lmeSBh IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQsIHdoaWNoIHJlcXVpcmVzCiAgICAgICB0aGF0IGEg Z3JvdXAgb2Ygb25lIG9yIG1vcmUgY29sdW1ucyBvZiB0aGUgbmV3IHRhYmxlIG11c3Qgb25s eQogICAgICAgY29udGFpbiB2YWx1ZXMgdGhhdCBtYXRjaCB2YWx1ZXMgaW4gdGhlIHJlZmVy ZW5jZWQKLSAgICAgIGNvbHVtbihzKSBvZiBzb21lIHJvdyBvZiB0aGUgcmVmZXJlbmNlZCB0 YWJsZS4gIElmIHRoZSA8cmVwbGFjZWFibGUKKyAgICAgIGNvbHVtbihzKSBvZiBzb21lIHJv dyBvZiB0aGUgcmVmZXJlbmNlZCB0YWJsZS4KKyAgICAgIElmIHRoZSA8cmVwbGFjZWFibGUK ICAgICAgIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFibGU+IGxpc3Qg aXMgb21pdHRlZCwgdGhlCiAgICAgICBwcmltYXJ5IGtleSBvZiB0aGUgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRhYmxlPC9yZXBsYWNlYWJsZT4KICAgICAgIGlzIHVz ZWQuICBUaGUgcmVmZXJlbmNlZCBjb2x1bW5zIG11c3QgYmUgdGhlIGNvbHVtbnMgb2YgYSBu b24tZGVmZXJyYWJsZQotICAgICAgdW5pcXVlIG9yIHByaW1hcnkga2V5IGNvbnN0cmFpbnQg aW4gdGhlIHJlZmVyZW5jZWQgdGFibGUuICBUaGUgdXNlcgorICAgICAgdW5pcXVlIG9yIHBy aW1hcnkga2V5IGNvbnN0cmFpbnQgaW4gdGhlIHJlZmVyZW5jZWQgdGFibGUuCisgICAgIDwv cGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIElmIHRoZSBsYXN0IGNvbHVtbiBpcyBtYXJr ZWQgd2l0aCA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+LAorICAgICAgaXQgbXVzdCBiZSBh IHBlcmlvZCBvciByYW5nZSBjb2x1bW4sIGFuZCB0aGUgcmVmZXJlbmNlZCB0YWJsZQorICAg ICAgbXVzdCBoYXZlIGEgdGVtcG9yYWwgcHJpbWFyeSBrZXkuCisgICAgICBUaGUgbm9uLTxs aXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4gY29sdW1ucyBhcmUgdHJlYXRlZCBub3JtYWxseQor ICAgICAgKGFuZCB0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSBvZiB0aGVtKSwKKyAgICAg IGJ1dCB0aGUgPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiBjb2x1bW4gaXMgbm90IGNvbXBh cmVkIGZvciBlcXVhbGl0eS4KKyAgICAgIEluc3RlYWQgdGhlIGNvbnN0cmFpbnQgaXMgY29u c2lkZXJlZCBzYXRpc2ZpZWQKKyAgICAgIGlmIHRoZSByZWZlcmVuY2VkIHRhYmxlIGhhcyBt YXRjaGluZyByZWNvcmRzIHdob3NlIGNvbWJpbmVkIHJhbmdlcyBjb21wbGV0ZWx5IGNvdmVy CisgICAgICB0aGUgcmVmZXJlbmNpbmcgcmVjb3JkLgorICAgICAgSW4gb3RoZXIgd29yZHMs IHRoZSByZWZlcmVuY2UgbXVzdCBoYXZlIGEgcmVmZXJlbnQgZm9yIGl0cyBlbnRpcmUgZHVy YXRpb24uCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIFRoZSB1c2VyCiAg ICAgICBtdXN0IGhhdmUgPGxpdGVyYWw+UkVGRVJFTkNFUzwvbGl0ZXJhbD4gcGVybWlzc2lv biBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZQogICAgICAgKGVpdGhlciB0aGUgd2hvbGUgdGFi bGUsIG9yIHRoZSBzcGVjaWZpYyByZWZlcmVuY2VkIGNvbHVtbnMpLiAgVGhlCiAgICAgICBh ZGRpdGlvbiBvZiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgcmVxdWlyZXMgYQpAQCAtMTI0 MCw2ICsxMjU4LDEyIEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICAgICAg dmFsdWVzIG9mIHRoZSByZWZlcmVuY2luZyBjb2x1bW4ocykgdG8gdGhlIG5ldyB2YWx1ZXMg b2YgdGhlCiAgICAgICAgICAgcmVmZXJlbmNlZCBjb2x1bW5zLCByZXNwZWN0aXZlbHkuCiAg ICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIEluIGEgdGVt cG9yYWwgZm9yZWlnbiBrZXksIHRoZSBkZWxldGUvdXBkYXRlIHdpbGwgdXNlCisgICAgICAg ICAgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IHNlbWFudGljcyB0byBjb25z dHJhaW4gdGhlCisgICAgICAgICAgZWZmZWN0IHRvIHRoZSBib3VuZHMgYmVpbmcgZGVsZXRl ZC91cGRhdGVkIGluIHRoZSByZWZlcmVuY2VkIHJvdy4KKyAgICAgICAgIDwvcGFyYT4KICAg ICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAtMTI1MSw2 ICsxMjc1LDEzIEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICAgICAgcmVm ZXJlbmNpbmcgY29sdW1ucywgdG8gbnVsbC4gQSBzdWJzZXQgb2YgY29sdW1ucyBjYW4gb25s eSBiZQogICAgICAgICAgIHNwZWNpZmllZCBmb3IgPGxpdGVyYWw+T04gREVMRVRFPC9saXRl cmFsPiBhY3Rpb25zLgogICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICA8cGFyYT4KKyAg ICAgICAgICBJbiBhIHRlbXBvcmFsIGZvcmVpZ24ga2V5LCB0aGUgY2hhbmdlIHdpbGwgdXNl IDxsaXRlcmFsPkZPUiBQT1JUSU9OCisgICAgICAgICAgT0Y8L2xpdGVyYWw+IHNlbWFudGlj cyB0byBjb25zdHJhaW4gdGhlIGVmZmVjdCB0byB0aGUgYm91bmRzIGJlaW5nCisgICAgICAg ICAgZGVsZXRlZC91cGRhdGVkIGluIHRoZSByZWZlcmVuY2VkIHJvdy4gVGhlIGNvbHVtbiBt YWtlZCB3aXRoCisgICAgICAgICAgPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiB3aWxsIG5v dCBiZSBzZXQgdG8gbnVsbC4KKyAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRl bT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAtMTI2NCw2ICsxMjk1LDEzIEBAIFdJ VEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xp dGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICAgICAgKFRoZXJlIG11c3QgYmUgYSBy b3cgaW4gdGhlIHJlZmVyZW5jZWQgdGFibGUgbWF0Y2hpbmcgdGhlIGRlZmF1bHQKICAgICAg ICAgICB2YWx1ZXMsIGlmIHRoZXkgYXJlIG5vdCBudWxsLCBvciB0aGUgb3BlcmF0aW9uIHdp bGwgZmFpbC4pCiAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgIDxwYXJhPgorICAgICAg ICAgIEluIGEgdGVtcG9yYWwgZm9yZWlnbiBrZXksIHRoZSBjaGFuZ2Ugd2lsbCB1c2UgPGxp dGVyYWw+Rk9SIFBPUlRJT04KKyAgICAgICAgICBPRjwvbGl0ZXJhbD4gc2VtYW50aWNzIHRv IGNvbnN0cmFpbiB0aGUgZWZmZWN0IHRvIHRoZSBib3VuZHMgYmVpbmcKKyAgICAgICAgICBk ZWxldGVkL3VwZGF0ZWQgaW4gdGhlIHJlZmVyZW5jZWQgcm93LiBUaGUgY29sdW1uIG1hcmtl ZCB3aXRoCisgICAgICAgICAgPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiB3aXRoIG5vdCBi ZSBzZXQgdG8gYSBkZWZhdWx0IHZhbHVlLgorICAgICAgICAgPC9wYXJhPgogICAgICAgICA8 L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgPC92YXJpYWJsZWxp c3Q+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IDdhODc2MjZmNWYwLi40N2E1 YzE5Y2UxYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTIxNzUsMTQgKzIx NzUsMjUgQEAgQ29tcHV0ZUluZGV4QXR0cnMoSW5kZXhJbmZvICppbmRleEluZm8sCiAJCWVs c2UgaWYgKGlzd2l0aG91dG92ZXJsYXBzKQogCQl7CiAJCQlTdHJhdGVneU51bWJlciBzdHJh dDsKKwkJCWNoYXIJICAgKm9wbmFtZTsKIAkJCU9pZAkJCW9waWQ7CiAKIAkJCWlmIChhdHRu ID09IG5rZXljb2xzIC0gMSkKKwkJCXsKIAkJCQlzdHJhdCA9IFJUT3ZlcmxhcFN0cmF0ZWd5 TnVtYmVyOworCQkJCW9wbmFtZSA9ICJvdmVybGFwcyI7CisJCQl9CiAJCQllbHNlCisJCQl7 CiAJCQkJc3RyYXQgPSBSVEVxdWFsU3RyYXRlZ3lOdW1iZXI7Ci0JCQlHZXRPcGVyYXRvckZy b21XZWxsS25vd25TdHJhdGVneShvcGNsYXNzT2lkc1thdHRuXSwgYXR0dHlwZSwKLQkJCQkJ CQkJCQkJICZvcGlkLCAmc3RyYXQpOworCQkJCW9wbmFtZSA9ICJlcXVhbHMiOworCQkJfQor CQkJR2V0T3BlcmF0b3JGcm9tV2VsbEtub3duU3RyYXRlZ3kob3BjbGFzc09pZHNbYXR0bl0s CisJCQkJCQkJCQkJCSBJbnZhbGlkT2lkLAorCQkJCQkJCQkJCQkgb3BuYW1lLAorCQkJCQkJ CQkJCQkgIldJVEhPVVQgT1ZFUkxBUFMgY29uc3RyYWludCIsCisJCQkJCQkJCQkJCSAmb3Bp ZCwKKwkJCQkJCQkJCQkJICZzdHJhdCk7CiAJCQlpbmRleEluZm8tPmlpX0V4Y2x1c2lvbk9w c1thdHRuXSA9IG9waWQ7CiAJCQlpbmRleEluZm8tPmlpX0V4Y2x1c2lvblByb2NzW2F0dG5d ID0gZ2V0X29wY29kZShvcGlkKTsKIAkJCWluZGV4SW5mby0+aWlfRXhjbHVzaW9uU3RyYXRz W2F0dG5dID0gc3RyYXQ7CkBAIC0yNDIxLDcgKzI0MzIsOSBAQCBHZXREZWZhdWx0T3BDbGFz cyhPaWQgdHlwZV9pZCwgT2lkIGFtX2lkKQogICogR2V0T3BlcmF0b3JGcm9tV2VsbEtub3du U3RyYXRlZ3kKICAqCiAgKiBvcGNsYXNzIC0gdGhlIG9wY2xhc3MgdG8gdXNlCi0gKiBhdHR0 eXBlIC0gdGhlIHR5cGUgdG8gYXNrIGFib3V0CisgKiByaHN0eXBlIC0gdGhlIHR5cGUgZm9y IHRoZSByaWdodC1oYW5kIHNpZGUKKyAqIG9wbmFtZSAtIHVzZWQgdG8gYnVpbGQgZXJyb3Ig bWVzc2FnZXMKKyAqIGNvbnRleHQgLSB1c2VkIHRvIGJ1aWxkIGVycm9yIG1lc3NhZ2VzCiAg KiBvcGlkIC0gaG9sZHMgdGhlIG9wZXJhdG9yIHdlIGZvdW5kCiAgKiBzdHJhdCAtIGhvbGRz IHRoZSBpbnB1dCBhbmQgb3V0cHV0IHN0cmF0ZWd5IG51bWJlcgogICoKQEAgLTI0MzQsMTQg KzI0NDcsMjAgQEAgR2V0RGVmYXVsdE9wQ2xhc3MoT2lkIHR5cGVfaWQsIE9pZCBhbV9pZCkK ICAqIEludmFsaWRTdHJhdGVneS4KICAqLwogdm9pZAotR2V0T3BlcmF0b3JGcm9tV2VsbEtu b3duU3RyYXRlZ3koT2lkIG9wY2xhc3MsIE9pZCBhdHR0eXBlLAotCQkJCQkJCQkgT2lkICpv cGlkLCBTdHJhdGVneU51bWJlciAqc3RyYXQpCitHZXRPcGVyYXRvckZyb21XZWxsS25vd25T dHJhdGVneShPaWQgb3BjbGFzcywKKwkJCQkJCQkJIE9pZCByaHN0eXBlLAorCQkJCQkJCQkg Y29uc3QgY2hhciAqb3BuYW1lLAorCQkJCQkJCQkgY29uc3QgY2hhciAqY29udGV4dCwKKwkJ CQkJCQkJIE9pZCAqb3BpZCwKKwkJCQkJCQkJIFN0cmF0ZWd5TnVtYmVyICpzdHJhdCkKIHsK IAlPaWQJCQlvcGZhbWlseTsKIAlPaWQJCQlvcGNpbnR5cGU7CiAJU3RyYXRlZ3lOdW1iZXIg aW5zdHJhdCA9ICpzdHJhdDsKIAotCUFzc2VydChpbnN0cmF0ID09IFJURXF1YWxTdHJhdGVn eU51bWJlciB8fCBpbnN0cmF0ID09IFJUT3ZlcmxhcFN0cmF0ZWd5TnVtYmVyKTsKKwlBc3Nl cnQoaW5zdHJhdCA9PSBSVEVxdWFsU3RyYXRlZ3lOdW1iZXIgfHwKKwkJICAgaW5zdHJhdCA9 PSBSVE92ZXJsYXBTdHJhdGVneU51bWJlciB8fAorCQkgICBpbnN0cmF0ID09IFJUQ29udGFp bmVkQnlTdHJhdGVneU51bWJlcik7CiAKIAkqb3BpZCA9IEludmFsaWRPaWQ7CiAKQEAgLTI0 NjQsMTYgKzI0ODMsMjAgQEAgR2V0T3BlcmF0b3JGcm9tV2VsbEtub3duU3RyYXRlZ3koT2lk IG9wY2xhc3MsIE9pZCBhdHR0eXBlLAogCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQllcnJj b2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCi0JCQkJCWluc3RyYXQgPT0gUlRFcXVh bFN0cmF0ZWd5TnVtYmVyID8KLQkJCQkJZXJybXNnKCJjb3VsZCBub3QgaWRlbnRpZnkgYW4g ZXF1YWxpdHkgb3BlcmF0b3IgZm9yIHR5cGUgJXMiLCBmb3JtYXRfdHlwZV9iZShhdHR0eXBl KSkgOgotCQkJCQllcnJtc2coImNvdWxkIG5vdCBpZGVudGlmeSBhbiBvdmVybGFwcyBvcGVy YXRvciBmb3IgdHlwZSAlcyIsIGZvcm1hdF90eXBlX2JlKGF0dHR5cGUpKSwKKwkJCQkJZXJy bXNnKCJjb3VsZCBub3QgaWRlbnRpZnkgYSAlcyBvcGVyYXRvciBmb3IgdHlwZSAlcyBmb3Ig JXMiLCBvcG5hbWUsIGZvcm1hdF90eXBlX2JlKG9wY2ludHlwZSksIGNvbnRleHQpLAogCQkJ CQllcnJkZXRhaWwoIkNvdWxkIG5vdCB0cmFuc2xhdGUgc3RyYXRlZ3kgbnVtYmVyICVkIGZv ciBvcGVyYXRvciBjbGFzcyBcIiVzXCIgZm9yIGFjY2VzcyBtZXRob2QgXCIlc1wiLiIsCi0J CQkJCQkJICBpbnN0cmF0LCBOYW1lU3RyKCgoRm9ybV9wZ19vcGNsYXNzKSBHRVRTVFJVQ1Qo dHVwbGUpKS0+b3BjbmFtZSksICJnaXN0IikpOwotCisJCQkJCQkgaW5zdHJhdCwgTmFtZVN0 cigoKEZvcm1fcGdfb3BjbGFzcykgR0VUU1RSVUNUKHR1cGxlKSktPm9wY25hbWUpLCAiZ2lz dCIpKTsKIAkJCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CiAJCX0KIAotCQkqb3BpZCA9IGdl dF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgb3BjaW50eXBlLCAqc3Ry YXQpOworCQkvKgorCQkgKiBXZSBwYXJhbWV0ZXJpemUgcmhzdHlwZSBzbyBmb3JlaWduIGtl eXMgY2FuIGFzayBmb3IgYSA8QCBvcGVyYXRvcgorCQkgKiB3aG9zZSByaHMgbWF0Y2hlcyB0 aGUgYWdncmVnYXRlIGZ1bmN0aW9uLiBGb3IgZXhhbXBsZSByYW5nZV9hZ2cKKwkJICogcmV0 dXJucyBhbnltdWx0aXJhbmdlLgorCQkgKi8KKwkJaWYgKCFPaWRJc1ZhbGlkKHJoc3R5cGUp KQorCQkJcmhzdHlwZSA9IG9wY2ludHlwZTsKKwkJKm9waWQgPSBnZXRfb3BmYW1pbHlfbWVt YmVyKG9wZmFtaWx5LCBvcGNpbnR5cGUsIHJoc3R5cGUsICpzdHJhdCk7CiAJfQogCiAJaWYg KCFPaWRJc1ZhbGlkKCpvcGlkKSkKQEAgLTI0ODYsOSArMjUwOSw3IEBAIEdldE9wZXJhdG9y RnJvbVdlbGxLbm93blN0cmF0ZWd5KE9pZCBvcGNsYXNzLCBPaWQgYXR0dHlwZSwKIAogCQll cmVwb3J0KEVSUk9SLAogCQkJCWVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwK LQkJCQlpbnN0cmF0ID09IFJURXF1YWxTdHJhdGVneU51bWJlciA/Ci0JCQkJZXJybXNnKCJj b3VsZCBub3QgaWRlbnRpZnkgYW4gZXF1YWxpdHkgb3BlcmF0b3IgZm9yIHR5cGUgJXMiLCBm b3JtYXRfdHlwZV9iZShhdHR0eXBlKSkgOgotCQkJCWVycm1zZygiY291bGQgbm90IGlkZW50 aWZ5IGFuIG92ZXJsYXBzIG9wZXJhdG9yIGZvciB0eXBlICVzIiwgZm9ybWF0X3R5cGVfYmUo YXR0dHlwZSkpLAorCQkJCWVycm1zZygiY291bGQgbm90IGlkZW50aWZ5IGFuICVzIG9wZXJh dG9yIGZvciB0eXBlICVzIGZvciAlcyIsIG9wbmFtZSwgZm9ybWF0X3R5cGVfYmUob3BjaW50 eXBlKSwgY29udGV4dCksCiAJCQkJZXJyZGV0YWlsKCJUaGVyZSBpcyBubyBzdWl0YWJsZSBv cGVyYXRvciBpbiBvcGVyYXRvciBmYW1pbHkgXCIlc1wiIGZvciBhY2Nlc3MgbWV0aG9kIFwi JXNcIi4iLAogCQkJCQkJICBOYW1lU3RyKCgoRm9ybV9wZ19vcGZhbWlseSkgR0VUU1RSVUNU KHR1cGxlKSktPm9wZm5hbWUpLCAiZ2lzdCIpKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jCmluZGV4IGVjZWFjZDRlYmMzLi5iOGQzYTAwZTRhYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9h dHRtYXAuaCIKICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3Mv Z2lzdC5oIgogI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKICNpbmNsdWRlICJhY2Nlc3Mv aGVhcGFtX3hsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCkBAIC0yMTIs OCArMjEzLDExIEBAIHR5cGVkZWYgc3RydWN0IE5ld0NvbnN0cmFpbnQKIAlDb25zdHJUeXBl CWNvbnR5cGU7CQkvKiBDSEVDSyBvciBGT1JFSUdOICovCiAJT2lkCQkJcmVmcmVsaWQ7CQkv KiBQSyByZWwsIGlmIEZPUkVJR04gKi8KIAlPaWQJCQlyZWZpbmRpZDsJCS8qIE9JRCBvZiBQ SydzIGluZGV4LCBpZiBGT1JFSUdOICovCisJYm9vbAkJY29ud2l0aHBlcmlvZDsJLyogV2hl dGhlciB0aGUgbmV3IEZPUkVJR04gS0VZIHVzZXMgUEVSSU9EICovCiAJT2lkCQkJY29uaWQ7 CQkJLyogT0lEIG9mIHBnX2NvbnN0cmFpbnQgZW50cnksIGlmIEZPUkVJR04gKi8KIAlOb2Rl CSAgICpxdWFsOwkJCS8qIENoZWNrIGV4cHIgb3IgQ09OU1RSX0ZPUkVJR04gQ29uc3RyYWlu dCAqLworCU9pZAkJICAgKm9wZXJvaWRzOwkJLyogb3BlciBvaWRzIGZvciBGT1JFSUdOIEtF WSB3aXRoIFBFUklPRCAqLworCU9pZAkJICAgKnByb2NvaWRzOwkJLyogcHJvYyBvaWRzIGZv ciBGT1JFSUdOIEtFWSB3aXRoIFBFUklPRCAqLwogCUV4cHJTdGF0ZSAgKnF1YWxzdGF0ZTsJ CS8qIEV4ZWN1dGlvbiBzdGF0ZSBmb3IgQ0hFQ0sgZXhwciAqLwogfSBOZXdDb25zdHJhaW50 OwogCkBAIC0zODQsMTcgKzM4OCwyMCBAQCBzdGF0aWMgaW50CXRyYW5zZm9ybUNvbHVtbk5h bWVMaXN0KE9pZCByZWxJZCwgTGlzdCAqY29sTGlzdCwKIAkJCQkJCQkJCWludDE2ICphdHRu dW1zLCBPaWQgKmF0dHR5cGlkcyk7CiBzdGF0aWMgaW50CXRyYW5zZm9ybUZrZXlHZXRQcmlt YXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4T2lkLAogCQkJCQkJCQkJICAgTGlz dCAqKmF0dG5hbWVsaXN0LAorCQkJCQkJCQkJICAgTm9kZSAqKnBrX3BlcmlvZCwKIAkJCQkJ CQkJCSAgIGludDE2ICphdHRudW1zLCBPaWQgKmF0dHR5cGlkcywKKwkJCQkJCQkJCSAgIGlu dDE2ICpwZXJpb2RhdHRudW1zLCBPaWQgKnBlcmlvZGF0dHR5cGlkcywKIAkJCQkJCQkJCSAg IE9pZCAqb3BjbGFzc2VzKTsKIHN0YXRpYyBPaWQJdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMo UmVsYXRpb24gcGtyZWwsCiAJCQkJCQkJCQlpbnQgbnVtYXR0cnMsIGludDE2ICphdHRudW1z LAorCQkJCQkJCQkJYm9vbCBpc190ZW1wb3JhbCwgaW50MTYgcGVyaW9kYXR0bnVtLAogCQkJ CQkJCQkJT2lkICpvcGNsYXNzZXMpOwogc3RhdGljIHZvaWQgY2hlY2tGa2V5UGVybWlzc2lv bnMoUmVsYXRpb24gcmVsLCBpbnQxNiAqYXR0bnVtcywgaW50IG5hdHRzKTsKIHN0YXRpYyBD b2VyY2lvblBhdGhUeXBlIGZpbmRGa2V5Q2FzdChPaWQgdGFyZ2V0VHlwZUlkLCBPaWQgc291 cmNlVHlwZUlkLAogCQkJCQkJCQkJIE9pZCAqZnVuY2lkKTsKIHN0YXRpYyB2b2lkIHZhbGlk YXRlRm9yZWlnbktleUNvbnN0cmFpbnQoY2hhciAqY29ubmFtZSwKIAkJCQkJCQkJCQkgUmVs YXRpb24gcmVsLCBSZWxhdGlvbiBwa3JlbCwKLQkJCQkJCQkJCQkgT2lkIHBraW5kT2lkLCBP aWQgY29uc3RyYWludE9pZCk7CisJCQkJCQkJCQkJIE9pZCBwa2luZE9pZCwgT2lkIGNvbnN0 cmFpbnRPaWQsIGJvb2wgdGVtcG9yYWwpOwogc3RhdGljIHZvaWQgQVRDb250cm9sbGVyKEFs dGVyVGFibGVTdG10ICpwYXJzZXRyZWUsCiAJCQkJCQkgUmVsYXRpb24gcmVsLCBMaXN0ICpj bWRzLCBib29sIHJlY3Vyc2UsIExPQ0tNT0RFIGxvY2ttb2RlLAogCQkJCQkJIEFsdGVyVGFi bGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CkBAIC01MDcsNyArNTE0LDggQEAgc3RhdGlj IE9iamVjdEFkZHJlc3MgYWRkRmtSZWN1cnNlUmVmZXJlbmNlZChMaXN0ICoqd3F1ZXVlLCBD b25zdHJhaW50ICpma2NvbnN0cmEKIAkJCQkJCQkJCQkJT2lkICpwZmVxb3BlcmF0b3JzLCBP aWQgKnBwZXFvcGVyYXRvcnMsIE9pZCAqZmZlcW9wZXJhdG9ycywKIAkJCQkJCQkJCQkJaW50 IG51bWZrZGVsc2V0Y29scywgaW50MTYgKmZrZGVsc2V0Y29scywKIAkJCQkJCQkJCQkJYm9v bCBvbGRfY2hlY2tfb2ssCi0JCQkJCQkJCQkJCU9pZCBwYXJlbnREZWxUcmlnZ2VyLCBPaWQg cGFyZW50VXBkVHJpZ2dlcik7CisJCQkJCQkJCQkJCU9pZCBwYXJlbnREZWxUcmlnZ2VyLCBP aWQgcGFyZW50VXBkVHJpZ2dlciwKKwkJCQkJCQkJCQkJYm9vbCBpc190ZW1wb3JhbCk7CiBz dGF0aWMgdm9pZCB2YWxpZGF0ZUZrT25EZWxldGVTZXRDb2x1bW5zKGludCBudW1ma3MsIGNv bnN0IGludDE2ICpma2F0dG51bXMsCiAJCQkJCQkJCQkJIGludCBudW1ma3NldGNvbHMsIGNv bnN0IGludDE2ICpma3NldGNvbHNhdHRudW1zLAogCQkJCQkJCQkJCSBMaXN0ICpma3NldGNv bHMpOwpAQCAtNTE3LDcgKzUyNSw5IEBAIHN0YXRpYyB2b2lkIGFkZEZrUmVjdXJzZVJlZmVy ZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwKIAkJCQkJ CQkJCU9pZCAqcGZlcW9wZXJhdG9ycywgT2lkICpwcGVxb3BlcmF0b3JzLCBPaWQgKmZmZXFv cGVyYXRvcnMsCiAJCQkJCQkJCQlpbnQgbnVtZmtkZWxzZXRjb2xzLCBpbnQxNiAqZmtkZWxz ZXRjb2xzLAogCQkJCQkJCQkJYm9vbCBvbGRfY2hlY2tfb2ssIExPQ0tNT0RFIGxvY2ttb2Rl LAotCQkJCQkJCQkJT2lkIHBhcmVudEluc1RyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2Vy KTsKKwkJCQkJCQkJCU9pZCBwYXJlbnRJbnNUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dl ciwKKwkJCQkJCQkJCWJvb2wgaXNfdGVtcG9yYWwpOworCiBzdGF0aWMgdm9pZCBDbG9uZUZv cmVpZ25LZXlDb25zdHJhaW50cyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBwYXJlbnRSZWws CiAJCQkJCQkJCQkgICBSZWxhdGlvbiBwYXJ0aXRpb25SZWwpOwogc3RhdGljIHZvaWQgQ2xv bmVGa1JlZmVyZW5jZWQoUmVsYXRpb24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0aXRpb25S ZWwpOwpAQCAtNTQ5LDYgKzU1OSwxMiBAQCBzdGF0aWMgdm9pZCBHZXRGb3JlaWduS2V5Q2hl Y2tUcmlnZ2VycyhSZWxhdGlvbiB0cmlncmVsLAogCQkJCQkJCQkJICAgT2lkIGNvbm9pZCwg T2lkIGNvbmZyZWxpZCwgT2lkIGNvbnJlbGlkLAogCQkJCQkJCQkJICAgT2lkICppbnNlcnRU cmlnZ2VyT2lkLAogCQkJCQkJCQkJICAgT2lkICp1cGRhdGVUcmlnZ2VyT2lkKTsKK3N0YXRp YyB2b2lkIEZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMoQ29uc3RyYWludCAqZmtjb25zdHJh aW50LAorCQkJCQlBbHRlcmVkVGFibGVJbmZvICp0YWIsIGludCBpLCBpbnQxNiAqZmthdHRu dW0sCisJCQkJCWJvb2wgKm9sZF9jaGVja19vaywgTGlzdENlbGwgKipvbGRfcGZlcW9wX2l0 ZW0sCisJCQkJCU9pZCBwa3R5cGUsIE9pZCBma3R5cGUsIE9pZCBvcGNsYXNzLAorCQkJCQli b29sIGlzX3RlbXBvcmFsLCBib29sIGZvcl9vdmVybGFwcywKKwkJCQkJT2lkICpwZmVxb3BP dXQsIE9pZCAqcHBlcW9wT3V0LCBPaWQgKmZmZXFvcE91dCk7CiBzdGF0aWMgdm9pZCBBVEV4 ZWNEcm9wQ29uc3RyYWludChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbnN0ck5hbWUs CiAJCQkJCQkJCSBEcm9wQmVoYXZpb3IgYmVoYXZpb3IsIGJvb2wgcmVjdXJzZSwKIAkJCQkJ CQkJIGJvb2wgbWlzc2luZ19vaywgTE9DS01PREUgbG9ja21vZGUpOwpAQCAtNTkzMSw3ICs1 OTQ3LDggQEAgQVRSZXdyaXRlVGFibGVzKEFsdGVyVGFibGVTdG10ICpwYXJzZXRyZWUsIExp c3QgKip3cXVldWUsIExPQ0tNT0RFIGxvY2ttb2RlLAogCiAJCQkJdmFsaWRhdGVGb3JlaWdu S2V5Q29uc3RyYWludChma2NvbnN0cmFpbnQtPmNvbm5hbWUsIHJlbCwgcmVmcmVsLAogCQkJ CQkJCQkJCQkgY29uLT5yZWZpbmRpZCwKLQkJCQkJCQkJCQkJIGNvbi0+Y29uaWQpOworCQkJ CQkJCQkJCQkgY29uLT5jb25pZCwKKwkJCQkJCQkJCQkJIGNvbi0+Y29ud2l0aHBlcmlvZCk7 CiAKIAkJCQkvKgogCQkJCSAqIE5vIG5lZWQgdG8gbWFyayB0aGUgY29uc3RyYWludCByb3cg YXMgdmFsaWRhdGVkLCB3ZSBkaWQKQEAgLTk3NzQsNiArOTc5MSwxMyBAQCBBVEFkZEZvcmVp Z25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwg UmVsYXRpb24gcmVsLAogCU9pZAkJCXBwZXFvcGVyYXRvcnNbSU5ERVhfTUFYX0tFWVNdID0g ezB9OwogCU9pZAkJCWZmZXFvcGVyYXRvcnNbSU5ERVhfTUFYX0tFWVNdID0gezB9OwogCWlu dDE2CQlma2RlbHNldGNvbHNbSU5ERVhfTUFYX0tFWVNdID0gezB9OworCWJvb2wJCWlzX3Rl bXBvcmFsOworCWludDE2CQlwa3BlcmlvZGF0dG51bSA9IDA7CisJaW50MTYJCWZrcGVyaW9k YXR0bnVtID0gMDsKKwlPaWQJCQlwa3BlcmlvZHR5cG9pZCA9IDA7CisJT2lkCQkJZmtwZXJp b2R0eXBvaWQgPSAwOworCU9pZAkJCXBlcmlvZG9wZXJvaWQ7CisJT2lkCQkJcGVyaW9kcHJv Y29pZDsKIAlpbnQJCQlpOwogCWludAkJCW51bWZrcywKIAkJCQludW1wa3MsCkBAIC05ODY4 LDYgKzk4OTIsMTcgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVl LCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAludW1ma3MgPSB0cmFu c2Zvcm1Db2x1bW5OYW1lTGlzdChSZWxhdGlvbkdldFJlbGlkKHJlbCksCiAJCQkJCQkJCQkg Zmtjb25zdHJhaW50LT5ma19hdHRycywKIAkJCQkJCQkJCSBma2F0dG51bSwgZmt0eXBvaWQp OworCWlzX3RlbXBvcmFsID0gKGZrY29uc3RyYWludC0+cGtfcGVyaW9kIHx8IGZrY29uc3Ry YWludC0+ZmtfcGVyaW9kKTsKKwlpZiAoaXNfdGVtcG9yYWwpCisJeworCQlpZiAoIWZrY29u c3RyYWludC0+ZmtfcGVyaW9kKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlZBTElEX0ZPUkVJR05fS0VZKSwKKwkJCQkJZXJybXNnKCJmb3JlaWduIGtl eSB1c2VzIFBFUklPRCBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSBidXQgbm90IHRoZSByZWZl cmVuY2luZyB0YWJsZSIpKSk7CisJCXRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9u R2V0UmVsaWQocmVsKSwKKwkJCQkJCQkgIGxpc3RfbWFrZTEoZmtjb25zdHJhaW50LT5ma19w ZXJpb2QpLAorCQkJCQkJCSAgJmZrcGVyaW9kYXR0bnVtLCAmZmtwZXJpb2R0eXBvaWQpOwor CX0KIAogCW51bWZrZGVsc2V0Y29scyA9IHRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0 aW9uR2V0UmVsaWQocmVsKSwKIAkJCQkJCQkJCQkJICBma2NvbnN0cmFpbnQtPmZrX2RlbF9z ZXRfY29scywKQEAgLTk4ODYsMTYgKzk5MjEsMzggQEAgQVRBZGRGb3JlaWduS2V5Q29uc3Ry YWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJl bCwKIAl7CiAJCW51bXBrcyA9IHRyYW5zZm9ybUZrZXlHZXRQcmltYXJ5S2V5KHBrcmVsLCAm aW5kZXhPaWQsCiAJCQkJCQkJCQkJCSZma2NvbnN0cmFpbnQtPnBrX2F0dHJzLAorCQkJCQkJ CQkJCQkmZmtjb25zdHJhaW50LT5wa19wZXJpb2QsCiAJCQkJCQkJCQkJCXBrYXR0bnVtLCBw a3R5cG9pZCwKKwkJCQkJCQkJCQkJJnBrcGVyaW9kYXR0bnVtLCAmcGtwZXJpb2R0eXBvaWQs CiAJCQkJCQkJCQkJCW9wY2xhc3Nlcyk7CisKKwkJLyogSWYgdGhlIHByaW1hcnkga2V5IHVz ZXMgV0lUSE9VVCBPVkVSTEFQUywgdGhlIGZrIG11c3QgdXNlIFBFUklPRCAqLworCQlpZiAo cGtwZXJpb2RhdHRudW0gJiYgIWZrcGVyaW9kYXR0bnVtKQorCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0ZPUkVJR05fS0VZKSwKKwkJCQkJZXJy bXNnKCJmb3JlaWduIGtleSB1c2VzIFBFUklPRCBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSBi dXQgbm90IHRoZSByZWZlcmVuY2luZyB0YWJsZSIpKSk7CiAJfQogCWVsc2UKIAl7CiAJCW51 bXBrcyA9IHRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVsaWQocGtyZWwp LAogCQkJCQkJCQkJCSBma2NvbnN0cmFpbnQtPnBrX2F0dHJzLAogCQkJCQkJCQkJCSBwa2F0 dG51bSwgcGt0eXBvaWQpOworCQlpZiAoaXNfdGVtcG9yYWwpCisJCXsKKwkJCS8qIFNpbmNl IHdlIGdvdCBwa19hdHRycywgd2Ugc2hvdWxkIGhhdmUgcGtfcGVyaW9kIHRvby4gKi8KKwkJ CWlmICghZmtjb25zdHJhaW50LT5wa19wZXJpb2QpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GT1JFSUdOX0tFWSksCisJCQkJCQllcnJt c2coImZvcmVpZ24ga2V5IHVzZXMgUEVSSU9EIG9uIHRoZSByZWZlcmVuY2luZyB0YWJsZSBi dXQgbm90IHRoZSByZWZlcmVuY2VkIHRhYmxlIikpKTsKKworCQkJdHJhbnNmb3JtQ29sdW1u TmFtZUxpc3QoUmVsYXRpb25HZXRSZWxpZChwa3JlbCksCisJCQkJCQkJCQlsaXN0X21ha2Ux KGZrY29uc3RyYWludC0+cGtfcGVyaW9kKSwKKwkJCQkJCQkJCSZwa3BlcmlvZGF0dG51bSwg JnBrcGVyaW9kdHlwb2lkKTsKKwkJfQorCiAJCS8qIExvb2sgZm9yIGFuIGluZGV4IG1hdGNo aW5nIHRoZSBjb2x1bW4gbGlzdCAqLwogCQlpbmRleE9pZCA9IHRyYW5zZm9ybUZrZXlDaGVj a0F0dHJzKHBrcmVsLCBudW1wa3MsIHBrYXR0bnVtLAorCQkJCQkJCQkJCSAgIGlzX3RlbXBv cmFsLCBwa3BlcmlvZGF0dG51bSwKIAkJCQkJCQkJCQkgICBvcGNsYXNzZXMpOwogCX0KIApA QCAtOTkwNCwzNCArOTk2MSw2IEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAq KndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJICovCiAJ Y2hlY2tGa2V5UGVybWlzc2lvbnMocGtyZWwsIHBrYXR0bnVtLCBudW1wa3MpOwogCi0JLyoK LQkgKiBDaGVjayBzb21lIHRoaW5ncyBmb3IgZ2VuZXJhdGVkIGNvbHVtbnMuCi0JICovCi0J Zm9yIChpID0gMDsgaSA8IG51bWZrczsgaSsrKQotCXsKLQkJY2hhcgkJYXR0Z2VuZXJhdGVk ID0gVHVwbGVEZXNjQXR0cihSZWxhdGlvbkdldERlc2NyKHJlbCksIGZrYXR0bnVtW2ldIC0g MSktPmF0dGdlbmVyYXRlZDsKLQotCQlpZiAoYXR0Z2VuZXJhdGVkKQotCQl7Ci0JCQkvKgot CQkJICogQ2hlY2sgcmVzdHJpY3Rpb25zIG9uIFVQREFURS9ERUxFVEUgYWN0aW9ucywgcGVy IFNRTCBzdGFuZGFyZAotCQkJICovCi0JCQlpZiAoZmtjb25zdHJhaW50LT5ma191cGRfYWN0 aW9uID09IEZLQ09OU1RSX0FDVElPTl9TRVROVUxMIHx8Ci0JCQkJZmtjb25zdHJhaW50LT5m a191cGRfYWN0aW9uID09IEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxUIHx8Ci0JCQkJZmtj b25zdHJhaW50LT5ma191cGRfYWN0aW9uID09IEZLQ09OU1RSX0FDVElPTl9DQVNDQURFKQot CQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCi0JCQkJCQkgZXJybXNnKCJpbnZhbGlkICVzIGFjdGlvbiBmb3IgZm9yZWlnbiBrZXkg Y29uc3RyYWludCBjb250YWluaW5nIGdlbmVyYXRlZCBjb2x1bW4iLAotCQkJCQkJCQkiT04g VVBEQVRFIikpKTsKLQkJCWlmIChma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24gPT0gRktD T05TVFJfQUNUSU9OX1NFVE5VTEwgfHwKLQkJCQlma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rp b24gPT0gRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQpCi0JCQkJZXJlcG9ydChFUlJPUiwK LQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKLQkJCQkJCSBlcnJtc2co ImludmFsaWQgJXMgYWN0aW9uIGZvciBmb3JlaWduIGtleSBjb25zdHJhaW50IGNvbnRhaW5p bmcgZ2VuZXJhdGVkIGNvbHVtbiIsCi0JCQkJCQkJCSJPTiBERUxFVEUiKSkpOwotCQl9Ci0J fQotCiAJLyoKIAkgKiBMb29rIHVwIHRoZSBlcXVhbGl0eSBvcGVyYXRvcnMgdG8gdXNlIGlu IHRoZSBjb25zdHJhaW50LgogCSAqCkBAIC05OTU0LDE4OSArOTk4Myw2OCBAQCBBVEFkZEZv cmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRh YiwgUmVsYXRpb24gcmVsLAogCiAJZm9yIChpID0gMDsgaSA8IG51bXBrczsgaSsrKQogCXsK LQkJT2lkCQkJcGt0eXBlID0gcGt0eXBvaWRbaV07Ci0JCU9pZAkJCWZrdHlwZSA9IGZrdHlw b2lkW2ldOwotCQlPaWQJCQlma3R5cGVkOwotCQlIZWFwVHVwbGUJY2xhX2h0OwotCQlGb3Jt X3BnX29wY2xhc3MgY2xhX3R1cDsKLQkJT2lkCQkJYW1pZDsKLQkJT2lkCQkJb3BmYW1pbHk7 Ci0JCU9pZAkJCW9wY2ludHlwZTsKLQkJT2lkCQkJcGZlcW9wOwotCQlPaWQJCQlwcGVxb3A7 Ci0JCU9pZAkJCWZmZXFvcDsKLQkJaW50MTYJCWVxc3RyYXRlZ3k7Ci0JCU9pZAkJCXBmZXFv cF9yaWdodDsKLQotCQkvKiBXZSBuZWVkIHNldmVyYWwgZmllbGRzIG91dCBvZiB0aGUgcGdf b3BjbGFzcyBlbnRyeSAqLwotCQljbGFfaHQgPSBTZWFyY2hTeXNDYWNoZTEoQ0xBT0lELCBP YmplY3RJZEdldERhdHVtKG9wY2xhc3Nlc1tpXSkpOwotCQlpZiAoIUhlYXBUdXBsZUlzVmFs aWQoY2xhX2h0KSkKLQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBv cGNsYXNzICV1Iiwgb3BjbGFzc2VzW2ldKTsKLQkJY2xhX3R1cCA9IChGb3JtX3BnX29wY2xh c3MpIEdFVFNUUlVDVChjbGFfaHQpOwotCQlhbWlkID0gY2xhX3R1cC0+b3BjbWV0aG9kOwot CQlvcGZhbWlseSA9IGNsYV90dXAtPm9wY2ZhbWlseTsKLQkJb3BjaW50eXBlID0gY2xhX3R1 cC0+b3BjaW50eXBlOwotCQlSZWxlYXNlU3lzQ2FjaGUoY2xhX2h0KTsKLQotCQkvKgotCQkg KiBDaGVjayBpdCdzIGEgYnRyZWU7IGN1cnJlbnRseSB0aGlzIGNhbiBuZXZlciBmYWlsIHNp bmNlIG5vIG90aGVyCi0JCSAqIGluZGV4IEFNcyBzdXBwb3J0IHVuaXF1ZSBpbmRleGVzLiAg SWYgd2UgZXZlciBkaWQgaGF2ZSBvdGhlciB0eXBlcwotCQkgKiBvZiB1bmlxdWUgaW5kZXhl cywgd2UnZCBuZWVkIGEgd2F5IHRvIGRldGVybWluZSB3aGljaCBvcGVyYXRvcgotCQkgKiBz dHJhdGVneSBudW1iZXIgaXMgZXF1YWxpdHkuICAoSXMgaXQgcmVhc29uYWJsZSB0byBpbnNp c3QgdGhhdAotCQkgKiBldmVyeSBzdWNoIGluZGV4IEFNIHVzZSBidHJlZSdzIG51bWJlciBm b3IgZXF1YWxpdHk/KQotCQkgKi8KLQkJaWYgKGFtaWQgIT0gQlRSRUVfQU1fT0lEKQotCQkJ ZWxvZyhFUlJPUiwgIm9ubHkgYi10cmVlIGluZGV4ZXMgYXJlIHN1cHBvcnRlZCBmb3IgZm9y ZWlnbiBrZXlzIik7Ci0JCWVxc3RyYXRlZ3kgPSBCVEVxdWFsU3RyYXRlZ3lOdW1iZXI7Ci0K LQkJLyoKLQkJICogVGhlcmUgaGFkIGJldHRlciBiZSBhIHByaW1hcnkgZXF1YWxpdHkgb3Bl cmF0b3IgZm9yIHRoZSBpbmRleC4KLQkJICogV2UnbGwgdXNlIGl0IGZvciBQSyA9IFBLIGNv bXBhcmlzb25zLgotCQkgKi8KLQkJcHBlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZh bWlseSwgb3BjaW50eXBlLCBvcGNpbnR5cGUsCi0JCQkJCQkJCQkgZXFzdHJhdGVneSk7Ci0K LQkJaWYgKCFPaWRJc1ZhbGlkKHBwZXFvcCkpCi0JCQllbG9nKEVSUk9SLCAibWlzc2luZyBv cGVyYXRvciAlZCgldSwldSkgaW4gb3BmYW1pbHkgJXUiLAotCQkJCSBlcXN0cmF0ZWd5LCBv cGNpbnR5cGUsIG9wY2ludHlwZSwgb3BmYW1pbHkpOwotCi0JCS8qCi0JCSAqIEFyZSB0aGVy ZSBlcXVhbGl0eSBvcGVyYXRvcnMgdGhhdCB0YWtlIGV4YWN0bHkgdGhlIEZLIHR5cGU/IEFz c3VtZQotCQkgKiB3ZSBzaG91bGQgbG9vayB0aHJvdWdoIGFueSBkb21haW4gaGVyZS4KLQkJ ICovCi0JCWZrdHlwZWQgPSBnZXRCYXNlVHlwZShma3R5cGUpOworCQlGaW5kRktDb21wYXJp c29uT3BlcmF0b3JzKAorCQkJCWZrY29uc3RyYWludCwgdGFiLCBpLCBma2F0dG51bSwKKwkJ CQkmb2xkX2NoZWNrX29rLCAmb2xkX3BmZXFvcF9pdGVtLAorCQkJCXBrdHlwb2lkW2ldLCBm a3R5cG9pZFtpXSwgb3BjbGFzc2VzW2ldLAorCQkJCWlzX3RlbXBvcmFsLCBmYWxzZSwKKwkJ CQkmcGZlcW9wZXJhdG9yc1tpXSwgJnBwZXFvcGVyYXRvcnNbaV0sICZmZmVxb3BlcmF0b3Jz W2ldKTsKKwl9CisJaWYgKGlzX3RlbXBvcmFsKSB7CisJCXBrYXR0bnVtW251bXBrc10gPSBw a3BlcmlvZGF0dG51bTsKKwkJcGt0eXBvaWRbbnVtcGtzXSA9IHBrcGVyaW9kdHlwb2lkOwor CQlma2F0dG51bVtudW1wa3NdID0gZmtwZXJpb2RhdHRudW07CisJCWZrdHlwb2lkW251bXBr c10gPSBma3BlcmlvZHR5cG9pZDsKIAotCQlwZmVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVy KG9wZmFtaWx5LCBvcGNpbnR5cGUsIGZrdHlwZWQsCi0JCQkJCQkJCQkgZXFzdHJhdGVneSk7 Ci0JCWlmIChPaWRJc1ZhbGlkKHBmZXFvcCkpCi0JCXsKLQkJCXBmZXFvcF9yaWdodCA9IGZr dHlwZWQ7Ci0JCQlmZmVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBma3R5 cGVkLCBma3R5cGVkLAotCQkJCQkJCQkJCSBlcXN0cmF0ZWd5KTsKLQkJfQotCQllbHNlCi0J CXsKLQkJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KLQkJCXBmZXFvcF9yaWdodCA9IElu dmFsaWRPaWQ7Ci0JCQlmZmVxb3AgPSBJbnZhbGlkT2lkOwotCQl9CisJCUZpbmRGS0NvbXBh cmlzb25PcGVyYXRvcnMoCisJCQkJZmtjb25zdHJhaW50LCB0YWIsIG51bXBrcywgZmthdHRu dW0sCisJCQkJJm9sZF9jaGVja19vaywgJm9sZF9wZmVxb3BfaXRlbSwKKwkJCQlwa3Blcmlv ZHR5cG9pZCwgZmtwZXJpb2R0eXBvaWQsIG9wY2xhc3Nlc1tudW1wa3NdLAorCQkJCWlzX3Rl bXBvcmFsLCB0cnVlLAorCQkJCSZwZmVxb3BlcmF0b3JzW251bXBrc10sICZwcGVxb3BlcmF0 b3JzW251bXBrc10sICZmZmVxb3BlcmF0b3JzW251bXBrc10pOworCQludW1ma3MgKz0gMTsK KwkJbnVtcGtzICs9IDE7CisJfQogCi0JCWlmICghKE9pZElzVmFsaWQocGZlcW9wKSAmJiBP aWRJc1ZhbGlkKGZmZXFvcCkpKQotCQl7Ci0JCQkvKgotCQkJICogT3RoZXJ3aXNlLCBsb29r IGZvciBhbiBpbXBsaWNpdCBjYXN0IGZyb20gdGhlIEZLIHR5cGUgdG8gdGhlCi0JCQkgKiBv cGNpbnR5cGUsIGFuZCBpZiBmb3VuZCwgdXNlIHRoZSBwcmltYXJ5IGVxdWFsaXR5IG9wZXJh dG9yLgotCQkJICogVGhpcyBpcyBhIGJpdCB0cmlja3kgYmVjYXVzZSBvcGNpbnR5cGUgbWln aHQgYmUgYSBwb2x5bW9ycGhpYwotCQkJICogdHlwZSBzdWNoIGFzIEFOWUFSUkFZIG9yIEFO WUVOVU07IHNvIHdoYXQgd2UgaGF2ZSB0byB0ZXN0IGlzCi0JCQkgKiB3aGV0aGVyIHRoZSB0 d28gYWN0dWFsIGNvbHVtbiB0eXBlcyBjYW4gYmUgY29uY3VycmVudGx5IGNhc3QgdG8KLQkJ CSAqIHRoYXQgdHlwZS4gIChPdGhlcndpc2UsIHdlJ2QgZmFpbCB0byByZWplY3QgY29tYmlu YXRpb25zIHN1Y2gKLQkJCSAqIGFzIGludFtdIGFuZCBwb2ludFtdLikKLQkJCSAqLwotCQkJ T2lkCQkJaW5wdXRfdHlwZWlkc1syXTsKLQkJCU9pZAkJCXRhcmdldF90eXBlaWRzWzJdOwot Ci0JCQlpbnB1dF90eXBlaWRzWzBdID0gcGt0eXBlOwotCQkJaW5wdXRfdHlwZWlkc1sxXSA9 IGZrdHlwZTsKLQkJCXRhcmdldF90eXBlaWRzWzBdID0gb3BjaW50eXBlOwotCQkJdGFyZ2V0 X3R5cGVpZHNbMV0gPSBvcGNpbnR5cGU7Ci0JCQlpZiAoY2FuX2NvZXJjZV90eXBlKDIsIGlu cHV0X3R5cGVpZHMsIHRhcmdldF90eXBlaWRzLAotCQkJCQkJCQlDT0VSQ0lPTl9JTVBMSUNJ VCkpCi0JCQl7Ci0JCQkJcGZlcW9wID0gZmZlcW9wID0gcHBlcW9wOwotCQkJCXBmZXFvcF9y aWdodCA9IG9wY2ludHlwZTsKLQkJCX0KLQkJfQorCS8qCisJICogQ2hlY2sgc29tZSB0aGlu Z3MgZm9yIGdlbmVyYXRlZCBjb2x1bW5zLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBudW1m a3M7IGkrKykKKwl7CisJCWNoYXIJCWF0dGdlbmVyYXRlZCA9IFR1cGxlRGVzY0F0dHIoUmVs YXRpb25HZXREZXNjcihyZWwpLCBma2F0dG51bVtpXSAtIDEpLT5hdHRnZW5lcmF0ZWQ7CiAK LQkJaWYgKCEoT2lkSXNWYWxpZChwZmVxb3ApICYmIE9pZElzVmFsaWQoZmZlcW9wKSkpCi0J CQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01B VENIKSwKLQkJCQkJIGVycm1zZygiZm9yZWlnbiBrZXkgY29uc3RyYWludCBcIiVzXCIgY2Fu bm90IGJlIGltcGxlbWVudGVkIiwKLQkJCQkJCQlma2NvbnN0cmFpbnQtPmNvbm5hbWUpLAot CQkJCQkgZXJyZGV0YWlsKCJLZXkgY29sdW1ucyBcIiVzXCIgYW5kIFwiJXNcIiAiCi0JCQkJ CQkJICAgImFyZSBvZiBpbmNvbXBhdGlibGUgdHlwZXM6ICVzIGFuZCAlcy4iLAotCQkJCQkJ CSAgIHN0clZhbChsaXN0X250aChma2NvbnN0cmFpbnQtPmZrX2F0dHJzLCBpKSksCi0JCQkJ CQkJICAgc3RyVmFsKGxpc3RfbnRoKGZrY29uc3RyYWludC0+cGtfYXR0cnMsIGkpKSwKLQkJ CQkJCQkgICBmb3JtYXRfdHlwZV9iZShma3R5cGUpLAotCQkJCQkJCSAgIGZvcm1hdF90eXBl X2JlKHBrdHlwZSkpKSk7Ci0KLQkJaWYgKG9sZF9jaGVja19vaykKLQkJewotCQkJLyoKLQkJ CSAqIFdoZW4gYSBwZmVxb3AgY2hhbmdlcywgcmV2YWxpZGF0ZSB0aGUgY29uc3RyYWludC4g IFdlIGNvdWxkCi0JCQkgKiBwZXJtaXQgaW50cmEtb3BmYW1pbHkgY2hhbmdlcywgYnV0IHRo YXQgYWRkcyBzdWJ0bGUgY29tcGxleGl0eQotCQkJICogd2l0aG91dCBhbnkgY29uY3JldGUg YmVuZWZpdCBmb3IgY29yZSB0eXBlcy4gIFdlIG5lZWQgbm90Ci0JCQkgKiBhc3Nlc3MgcHBl cW9wIG9yIGZmZXFvcCwgd2hpY2ggUklfSW5pdGlhbF9DaGVjaygpIGRvZXMgbm90IHVzZS4K LQkJCSAqLwotCQkJb2xkX2NoZWNrX29rID0gKHBmZXFvcCA9PSBsZmlyc3Rfb2lkKG9sZF9w ZmVxb3BfaXRlbSkpOwotCQkJb2xkX3BmZXFvcF9pdGVtID0gbG5leHQoZmtjb25zdHJhaW50 LT5vbGRfY29ucGZlcW9wLAotCQkJCQkJCQkJb2xkX3BmZXFvcF9pdGVtKTsKLQkJfQotCQlp ZiAob2xkX2NoZWNrX29rKQorCQlpZiAoYXR0Z2VuZXJhdGVkKQogCQl7Ci0JCQlPaWQJCQlv bGRfZmt0eXBlOwotCQkJT2lkCQkJbmV3X2ZrdHlwZTsKLQkJCUNvZXJjaW9uUGF0aFR5cGUg b2xkX3BhdGh0eXBlOwotCQkJQ29lcmNpb25QYXRoVHlwZSBuZXdfcGF0aHR5cGU7Ci0JCQlP aWQJCQlvbGRfY2FzdGZ1bmM7Ci0JCQlPaWQJCQluZXdfY2FzdGZ1bmM7Ci0JCQlGb3JtX3Bn X2F0dHJpYnV0ZSBhdHRyID0gVHVwbGVEZXNjQXR0cih0YWItPm9sZERlc2MsCi0JCQkJCQkJ CQkJCQkgICBma2F0dG51bVtpXSAtIDEpOwotCiAJCQkvKgotCQkJICogSWRlbnRpZnkgY29l cmNpb24gcGF0aHdheXMgZnJvbSBlYWNoIG9mIHRoZSBvbGQgYW5kIG5ldyBGSy1zaWRlCi0J CQkgKiBjb2x1bW4gdHlwZXMgdG8gdGhlIHJpZ2h0IChmb3JlaWduKSBvcGVyYW5kIHR5cGUg b2YgdGhlIHBmZXFvcC4KLQkJCSAqIFdlIG1heSBhc3N1bWUgdGhhdCBwZ19jb25zdHJhaW50 LmNvbmtleSBpcyBub3QgY2hhbmdpbmcuCi0JCQkgKi8KLQkJCW9sZF9ma3R5cGUgPSBhdHRy LT5hdHR0eXBpZDsKLQkJCW5ld19ma3R5cGUgPSBma3R5cGU7Ci0JCQlvbGRfcGF0aHR5cGUg PSBmaW5kRmtleUNhc3QocGZlcW9wX3JpZ2h0LCBvbGRfZmt0eXBlLAotCQkJCQkJCQkJCSZv bGRfY2FzdGZ1bmMpOwotCQkJbmV3X3BhdGh0eXBlID0gZmluZEZrZXlDYXN0KHBmZXFvcF9y aWdodCwgbmV3X2ZrdHlwZSwKLQkJCQkJCQkJCQkmbmV3X2Nhc3RmdW5jKTsKLQotCQkJLyoK LQkJCSAqIFVwb24gYSBjaGFuZ2UgdG8gdGhlIGNhc3QgZnJvbSB0aGUgRksgY29sdW1uIHRv IGl0cyBwZmVxb3AKLQkJCSAqIG9wZXJhbmQsIHJldmFsaWRhdGUgdGhlIGNvbnN0cmFpbnQu ICBGb3IgdGhpcyBldmFsdWF0aW9uLCBhCi0JCQkgKiBiaW5hcnkgY29lcmNpb24gY2FzdCBp cyBlcXVpdmFsZW50IHRvIG5vIGNhc3QgYXQgYWxsLiAgV2hpbGUKLQkJCSAqIHR5cGUgaW1w bGVtZW50b3JzIHNob3VsZCBkZXNpZ24gaW1wbGljaXQgY2FzdHMgd2l0aCBhbiBleWUKLQkJ CSAqIHRvd2FyZCBjb25zaXN0ZW5jeSBvZiBvcGVyYXRpb25zIGxpa2UgZXF1YWxpdHksIHdl IGNhbm5vdAotCQkJICogYXNzdW1lIGhlcmUgdGhhdCB0aGV5IGhhdmUgZG9uZSBzby4KLQkJ CSAqCi0JCQkgKiBBIGZ1bmN0aW9uIHdpdGggYSBwb2x5bW9ycGhpYyBhcmd1bWVudCBjb3Vs ZCBjaGFuZ2UgYmVoYXZpb3IKLQkJCSAqIGFyYml0cmFyaWx5IGluIHJlc3BvbnNlIHRvIGdl dF9mbl9leHByX2FyZ3R5cGUoKS4gIFRoZXJlZm9yZSwKLQkJCSAqIHdoZW4gdGhlIGNhc3Qg ZGVzdGluYXRpb24gaXMgcG9seW1vcnBoaWMsIHdlIG9ubHkgYXZvaWQKLQkJCSAqIHJldmFs aWRhdGlvbiBpZiB0aGUgaW5wdXQgdHlwZSBoYXMgbm90IGNoYW5nZWQgYXQgYWxsLiAgR2l2 ZW4KLQkJCSAqIGp1c3QgdGhlIGNvcmUgZGF0YSB0eXBlcyBhbmQgb3BlcmF0b3IgY2xhc3Nl cywgdGhpcyByZXF1aXJlbWVudAotCQkJICogcHJldmVudHMgbm8gd291bGQtYmUgb3B0aW1p emF0aW9ucy4KLQkJCSAqCi0JCQkgKiBJZiB0aGUgY2FzdCBjb252ZXJ0cyBmcm9tIGEgYmFz ZSB0eXBlIHRvIGEgZG9tYWluIHRoZXJlb24sIHRoZW4KLQkJCSAqIHRoYXQgZG9tYWluIHR5 cGUgbXVzdCBiZSB0aGUgb3BjaW50eXBlIG9mIHRoZSB1bmlxdWUgaW5kZXguCi0JCQkgKiBO ZWNlc3NhcmlseSwgdGhlIHByaW1hcnkga2V5IGNvbHVtbiBtdXN0IHRoZW4gYmUgb2YgdGhl IGRvbWFpbgotCQkJICogdHlwZS4gIFNpbmNlIHRoZSBjb25zdHJhaW50IHdhcyBwcmV2aW91 c2x5IHZhbGlkLCBhbGwgdmFsdWVzIG9uCi0JCQkgKiB0aGUgZm9yZWlnbiBzaWRlIG5lY2Vz c2FyaWx5IGV4aXN0IG9uIHRoZSBwcmltYXJ5IHNpZGUgYW5kIGluCi0JCQkgKiB0dXJuIGNv bmZvcm0gdG8gdGhlIGRvbWFpbi4gIENvbnNlcXVlbnRseSwgd2UgbmVlZCBub3QgdHJlYXQK LQkJCSAqIGRvbWFpbnMgc3BlY2lhbGx5IGhlcmUuCi0JCQkgKgotCQkJICogU2luY2Ugd2Ug cmVxdWlyZSB0aGF0IGFsbCBjb2xsYXRpb25zIHNoYXJlIHRoZSBzYW1lIG5vdGlvbiBvZgot CQkJICogZXF1YWxpdHkgKHdoaWNoIHRoZXkgZG8sIGJlY2F1c2UgdGV4dGVxIHJlZHVjZXMg dG8gYml0d2lzZQotCQkJICogZXF1YWxpdHkpLCB3ZSBkb24ndCBjb21wYXJlIGNvbGxhdGlv biBoZXJlLgotCQkJICoKLQkJCSAqIFdlIG5lZWQgbm90IGRpcmVjdGx5IGNvbnNpZGVyIHRo ZSBQSyB0eXBlLiAgSXQncyBuZWNlc3NhcmlseQotCQkJICogYmluYXJ5IGNvZXJjaWJsZSB0 byB0aGUgb3BjaW50eXBlIG9mIHRoZSB1bmlxdWUgaW5kZXggY29sdW1uLAotCQkJICogYW5k IHJpX3RyaWdnZXJzLmMgd2lsbCBvbmx5IGRlYWwgd2l0aCBQSyBkYXR1bXMgaW4gdGVybXMg b2YKLQkJCSAqIHRoYXQgb3BjaW50eXBlLiAgQ2hhbmdpbmcgdGhlIG9wY2ludHlwZSBhbHNv IGNoYW5nZXMgcGZlcW9wLgorCQkJICogQ2hlY2sgcmVzdHJpY3Rpb25zIG9uIFVQREFURS9E RUxFVEUgYWN0aW9ucywgcGVyIFNRTCBzdGFuZGFyZAogCQkJICovCi0JCQlvbGRfY2hlY2tf b2sgPSAobmV3X3BhdGh0eXBlID09IG9sZF9wYXRodHlwZSAmJgotCQkJCQkJCW5ld19jYXN0 ZnVuYyA9PSBvbGRfY2FzdGZ1bmMgJiYKLQkJCQkJCQkoIUlzUG9seW1vcnBoaWNUeXBlKHBm ZXFvcF9yaWdodCkgfHwKLQkJCQkJCQkgbmV3X2ZrdHlwZSA9PSBvbGRfZmt0eXBlKSk7CisJ CQlpZiAoZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uID09IEZLQ09OU1RSX0FDVElPTl9T RVROVUxMIHx8CisJCQkJZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uID09IEZLQ09OU1RS X0FDVElPTl9TRVRERUZBVUxUIHx8CisJCQkJZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9u ID09IEZLQ09OU1RSX0FDVElPTl9DQVNDQURFKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkgZXJybXNnKCJpbnZh bGlkICVzIGFjdGlvbiBmb3IgZm9yZWlnbiBrZXkgY29uc3RyYWludCBjb250YWluaW5nIGdl bmVyYXRlZCBjb2x1bW4iLAorCQkJCQkJCQkiT04gVVBEQVRFIikpKTsKKwkJCWlmIChma2Nv bnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24gPT0gRktDT05TVFJfQUNUSU9OX1NFVE5VTEwgfHwK KwkJCQlma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24gPT0gRktDT05TVFJfQUNUSU9OX1NF VERFRkFVTFQpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImludmFsaWQgJXMgYWN0aW9uIGZvciBm b3JlaWduIGtleSBjb25zdHJhaW50IGNvbnRhaW5pbmcgZ2VuZXJhdGVkIGNvbHVtbiIsCisJ CQkJCQkJCSJPTiBERUxFVEUiKSkpOwogCQl9Ci0KLQkJcGZlcW9wZXJhdG9yc1tpXSA9IHBm ZXFvcDsKLQkJcHBlcW9wZXJhdG9yc1tpXSA9IHBwZXFvcDsKLQkJZmZlcW9wZXJhdG9yc1tp XSA9IGZmZXFvcDsKIAl9CiAKKwkvKgorCSAqIEZvciBGS3Mgd2l0aCBQRVJJT0Qgd2UgbmVl ZCBhbiBvcGVyYXRvciBhbmQgYWdncmVnYXRlIGZ1bmN0aW9uCisJICogdG8gY2hlY2sgd2hl dGhlciB0aGUgcmVmZXJlbmNpbmcgcm93J3MgcmFuZ2UgaXMgY29udGFpbmVkCisJICogYnkg dGhlIGFnZ3JlZ2F0ZWQgcmFuZ2VzIG9mIHRoZSByZWZlcmVuY2VkIHJvdyhzKS4KKwkgKiBG b3IgcmFuZ2V0eXBlcyB0aGlzIGlzIGZrLnBlcmlvZGF0dCA8QCByYW5nZV9hZ2cocGsucGVy aW9kYXR0KS4KKwkgKiBGS3Mgd2lsbCBsb29rIHRoZXNlIHVwIGF0ICJydW50aW1lIiwgYnV0 IHdlIHNob3VsZCBtYWtlIHN1cmUKKwkgKiB0aGUgbG9va3VwIHdvcmtzIGhlcmUuCisJICov CisJaWYgKGlzX3RlbXBvcmFsKQorCQlGaW5kRktQZXJpb2RPcGVyc0FuZFByb2NzKG9wY2xh c3Nlc1tudW1wa3MgLSAxXSwgJnBlcmlvZG9wZXJvaWQsICZwZXJpb2Rwcm9jb2lkKTsKKwog CS8qCiAJICogQ3JlYXRlIGFsbCB0aGUgY29uc3RyYWludCBhbmQgdHJpZ2dlciBvYmplY3Rz LCByZWN1cnNpbmcgdG8gcGFydGl0aW9ucwogCSAqIGFzIG5lY2Vzc2FyeS4gIEZpcnN0IGhh bmRsZSB0aGUgcmVmZXJlbmNlZCBzaWRlLgpAQCAtMTAxNTMsNyArMTAwNjEsOCBAQCBBVEFk ZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8g KnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJIG51bWZrZGVsc2V0Y29scywKIAkJCQkJ CQkJCSBma2RlbHNldGNvbHMsCiAJCQkJCQkJCQkgb2xkX2NoZWNrX29rLAotCQkJCQkJCQkJ IEludmFsaWRPaWQsIEludmFsaWRPaWQpOworCQkJCQkJCQkJIEludmFsaWRPaWQsIEludmFs aWRPaWQsCisJCQkJCQkJCQkgaXNfdGVtcG9yYWwpOwogCiAJLyogTm93IGhhbmRsZSB0aGUg cmVmZXJlbmNpbmcgc2lkZS4gKi8KIAlhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyh3cXVldWUs IGZrY29uc3RyYWludCwgcmVsLCBwa3JlbCwKQEAgLTEwMTY5LDcgKzEwMDc4LDggQEAgQVRB ZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZv ICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQlma2RlbHNldGNvbHMsCiAJCQkJCQkJb2xk X2NoZWNrX29rLAogCQkJCQkJCWxvY2ttb2RlLAotCQkJCQkJCUludmFsaWRPaWQsIEludmFs aWRPaWQpOworCQkJCQkJCUludmFsaWRPaWQsIEludmFsaWRPaWQsCisJCQkJCQkJaXNfdGVt cG9yYWwpOwogCiAJLyoKIAkgKiBEb25lLiAgQ2xvc2UgcGsgdGFibGUsIGJ1dCBrZWVwIGxv Y2sgdW50aWwgd2UndmUgY29tbWl0dGVkLgpAQCAtMTAyNTQsNyArMTAxNjQsOCBAQCBhZGRG a1JlY3Vyc2VSZWZlcmVuY2VkKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3Ry YWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkgICBPaWQgKnBwZXFvcGVyYXRvcnMsIE9pZCAq ZmZlcW9wZXJhdG9ycywKIAkJCQkJICAgaW50IG51bWZrZGVsc2V0Y29scywgaW50MTYgKmZr ZGVsc2V0Y29scywKIAkJCQkJICAgYm9vbCBvbGRfY2hlY2tfb2ssCi0JCQkJCSAgIE9pZCBw YXJlbnREZWxUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlcikKKwkJCQkJICAgT2lkIHBh cmVudERlbFRyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyLAorCQkJCQkgICBib29sIGlz X3RlbXBvcmFsKQogewogCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKIAlPaWQJCQljb25zdHJP aWQ7CkBAIC0xMDM0MCw3ICsxMDI1MSw3IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jZWQoTGlz dCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJ CQkJCQkJCQkgIGNvbmlzbG9jYWwsCS8qIGlzbG9jYWwgKi8KIAkJCQkJCQkJCSAgY29uaW5o Y291bnQsCS8qIGluaGNvdW50ICovCiAJCQkJCQkJCQkgIGNvbm5vaW5oZXJpdCwgLyogY29u Tm9Jbmhlcml0ICovCi0JCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25XaXRob3V0T3ZlcmxhcHMg Ki8KKwkJCQkJCQkJCSAgaXNfdGVtcG9yYWwsCS8qIGNvbldpdGhvdXRPdmVybGFwcyAqLwog CQkJCQkJCQkJICBmYWxzZSk7CS8qIGlzX2ludGVybmFsICovCiAKIAlPYmplY3RBZGRyZXNz U2V0KGFkZHJlc3MsIENvbnN0cmFpbnRSZWxhdGlvbklkLCBjb25zdHJPaWQpOwpAQCAtMTA0 MTYsNyArMTAzMjcsOCBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2VkKExpc3QgKip3cXVldWUs IENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkgICBw ZmVxb3BlcmF0b3JzLCBwcGVxb3BlcmF0b3JzLCBmZmVxb3BlcmF0b3JzLAogCQkJCQkJCQkg ICBudW1ma2RlbHNldGNvbHMsIGZrZGVsc2V0Y29scywKIAkJCQkJCQkJICAgb2xkX2NoZWNr X29rLAotCQkJCQkJCQkgICBkZWxldGVUcmlnZ2VyT2lkLCB1cGRhdGVUcmlnZ2VyT2lkKTsK KwkJCQkJCQkJICAgZGVsZXRlVHJpZ2dlck9pZCwgdXBkYXRlVHJpZ2dlck9pZCwKKwkJCQkJ CQkJICAgaXNfdGVtcG9yYWwpOwogCiAJCQkvKiBEb25lIC0tIGNsZWFuIHVwIChidXQga2Vl cCB0aGUgbG9jaykgKi8KIAkJCXRhYmxlX2Nsb3NlKHBhcnRSZWwsIE5vTG9jayk7CkBAIC0x MDQ3NCw3ICsxMDM4Niw4IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVl dWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkJT2lk ICpwZmVxb3BlcmF0b3JzLCBPaWQgKnBwZXFvcGVyYXRvcnMsIE9pZCAqZmZlcW9wZXJhdG9y cywKIAkJCQkJCWludCBudW1ma2RlbHNldGNvbHMsIGludDE2ICpma2RlbHNldGNvbHMsCiAJ CQkJCQlib29sIG9sZF9jaGVja19vaywgTE9DS01PREUgbG9ja21vZGUsCi0JCQkJCQlPaWQg cGFyZW50SW5zVHJpZ2dlciwgT2lkIHBhcmVudFVwZFRyaWdnZXIpCisJCQkJCQlPaWQgcGFy ZW50SW5zVHJpZ2dlciwgT2lkIHBhcmVudFVwZFRyaWdnZXIsCisJCQkJCQlib29sIGlzX3Rl bXBvcmFsKQogewogCU9pZAkJCWluc2VydFRyaWdnZXJPaWQsCiAJCQkJdXBkYXRlVHJpZ2dl ck9pZDsKQEAgLTEwNTIyLDYgKzEwNDM1LDcgQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmco TGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWws CiAJCQluZXdjb24tPnJlZnJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChwa3JlbCk7CiAJCQlu ZXdjb24tPnJlZmluZGlkID0gaW5kZXhPaWQ7CiAJCQluZXdjb24tPmNvbmlkID0gcGFyZW50 Q29uc3RyOworCQkJbmV3Y29uLT5jb253aXRocGVyaW9kID0gZmtjb25zdHJhaW50LT5ma19w ZXJpb2QgIT0gTlVMTDsKIAkJCW5ld2Nvbi0+cXVhbCA9IChOb2RlICopIGZrY29uc3RyYWlu dDsKIAogCQkJdGFiLT5jb25zdHJhaW50cyA9IGxhcHBlbmQodGFiLT5jb25zdHJhaW50cywg bmV3Y29uKTsKQEAgLTEwNjM5LDcgKzEwNTUzLDcgQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNp bmcoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiBy ZWwsCiAJCQkJCQkJCQkgIGZhbHNlLAogCQkJCQkJCQkJICAxLAogCQkJCQkJCQkJICBmYWxz ZSwKLQkJCQkJCQkJCSAgZmFsc2UsCS8qIGNvbldpdGhvdXRPdmVybGFwcyAqLworCQkJCQkJ CQkJICBpc190ZW1wb3JhbCwJLyogY29uV2l0aG91dE92ZXJsYXBzICovCiAJCQkJCQkJCQkg IGZhbHNlKTsKIAogCQkJLyoKQEAgLTEwNjcwLDcgKzEwNTg0LDggQEAgYWRkRmtSZWN1cnNl UmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBS ZWxhdGlvbiByZWwsCiAJCQkJCQkJCQlvbGRfY2hlY2tfb2ssCiAJCQkJCQkJCQlsb2NrbW9k ZSwKIAkJCQkJCQkJCWluc2VydFRyaWdnZXJPaWQsCi0JCQkJCQkJCQl1cGRhdGVUcmlnZ2Vy T2lkKTsKKwkJCQkJCQkJCXVwZGF0ZVRyaWdnZXJPaWQsCisJCQkJCQkJCQlpc190ZW1wb3Jh bCk7CiAKIAkJCXRhYmxlX2Nsb3NlKHBhcnRpdGlvbiwgTm9Mb2NrKTsKIAkJfQpAQCAtMTA5 MDYsNyArMTA4MjEsOCBAQCBDbG9uZUZrUmVmZXJlbmNlZChSZWxhdGlvbiBwYXJlbnRSZWws IFJlbGF0aW9uIHBhcnRpdGlvblJlbCkKIAkJCQkJCQkgICBjb25mZGVsc2V0Y29scywKIAkJ CQkJCQkgICB0cnVlLAogCQkJCQkJCSAgIGRlbGV0ZVRyaWdnZXJPaWQsCi0JCQkJCQkJICAg dXBkYXRlVHJpZ2dlck9pZCk7CisJCQkJCQkJICAgdXBkYXRlVHJpZ2dlck9pZCwKKwkJCQkJ CQkgICBjb25zdHJGb3JtLT5jb253aXRob3V0b3ZlcmxhcHMpOwogCiAJCXRhYmxlX2Nsb3Nl KGZrUmVsLCBOb0xvY2spOwogCQlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOwpAQCAtMTA5OTks NiArMTA5MTUsNyBAQCBDbG9uZUZrUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgUmVsYXRp b24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0UmVsKQogCQlMaXN0Q2VsbCAgICpsYzsKIAkJ T2lkCQkJaW5zZXJ0VHJpZ2dlck9pZCwKIAkJCQkJdXBkYXRlVHJpZ2dlck9pZDsKKwkJYm9v bAkJaXNfdGVtcG9yYWw7CiAKIAkJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoQ09OU1RST0lE LCBPYmplY3RJZEdldERhdHVtKHBhcmVudENvbnN0ck9pZCkpOwogCQlpZiAoIUhlYXBUdXBs ZUlzVmFsaWQodHVwbGUpKQpAQCAtMTExMTQsNiArMTEwMzEsNyBAQCBDbG9uZUZrUmVmZXJl bmNpbmcoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0 UmVsKQogCQkJZmtjb25zdHJhaW50LT5jb25uYW1lID0gcHN0cmR1cChOYW1lU3RyKGNvbnN0 ckZvcm0tPmNvbm5hbWUpKTsKIAogCQlpbmRleE9pZCA9IGNvbnN0ckZvcm0tPmNvbmluZGlk OworCQlpc190ZW1wb3JhbCA9IGNvbnN0ckZvcm0tPmNvbndpdGhvdXRvdmVybGFwczsKIAkJ Y29uc3RyT2lkID0KIAkJCUNyZWF0ZUNvbnN0cmFpbnRFbnRyeShma2NvbnN0cmFpbnQtPmNv bm5hbWUsCiAJCQkJCQkJCSAgY29uc3RyRm9ybS0+Y29ubmFtZXNwYWNlLApAQCAtMTExNDUs NyArMTEwNjMsNyBAQCBDbG9uZUZrUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgUmVsYXRp b24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0UmVsKQogCQkJCQkJCQkgIGZhbHNlLAkvKiBp c2xvY2FsICovCiAJCQkJCQkJCSAgMSwJLyogaW5oY291bnQgKi8KIAkJCQkJCQkJICBmYWxz ZSwJLyogY29uTm9Jbmhlcml0ICovCi0JCQkJCQkJCSAgZmFsc2UsCS8qIGNvbldpdGhvdXRP dmVybGFwcyAqLworCQkJCQkJCQkgIGlzX3RlbXBvcmFsLAkvKiBjb25XaXRob3V0T3Zlcmxh cHMgKi8KIAkJCQkJCQkJICB0cnVlKTsKIAogCQkvKiBTZXQgdXAgcGFydGl0aW9uIGRlcGVu ZGVuY2llcyBmb3IgdGhlIG5ldyBjb25zdHJhaW50ICovCkBAIC0xMTE3OSwxMyArMTEwOTcs MzAwIEBAIENsb25lRmtSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBwYXJl bnRSZWwsIFJlbGF0aW9uIHBhcnRSZWwpCiAJCQkJCQkJCWZhbHNlLAkvKiBubyBvbGQgY2hl Y2sgZXhpc3RzICovCiAJCQkJCQkJCUFjY2Vzc0V4Y2x1c2l2ZUxvY2ssCiAJCQkJCQkJCWlu c2VydFRyaWdnZXJPaWQsCi0JCQkJCQkJCXVwZGF0ZVRyaWdnZXJPaWQpOworCQkJCQkJCQl1 cGRhdGVUcmlnZ2VyT2lkLAorCQkJCQkJCQlpc190ZW1wb3JhbCk7CiAJCXRhYmxlX2Nsb3Nl KHBrcmVsLCBOb0xvY2spOwogCX0KIAogCXRhYmxlX2Nsb3NlKHRyaWdyZWwsIFJvd0V4Y2x1 c2l2ZUxvY2spOwogfQogCitzdGF0aWMgdm9pZAorRmluZEZLQ29tcGFyaXNvbk9wZXJhdG9y cyhDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsCisJCUFsdGVyZWRUYWJsZUluZm8gKnRhYiwK KwkJaW50IGksCisJCWludDE2ICpma2F0dG51bSwKKwkJYm9vbCAqb2xkX2NoZWNrX29rLAor CQlMaXN0Q2VsbCAqKm9sZF9wZmVxb3BfaXRlbSwKKwkJT2lkIHBrdHlwZSwgT2lkIGZrdHlw ZSwgT2lkIG9wY2xhc3MsCisJCWJvb2wgaXNfdGVtcG9yYWwsIGJvb2wgZm9yX292ZXJsYXBz LAorCQlPaWQgKnBmZXFvcE91dCwgT2lkICpwcGVxb3BPdXQsIE9pZCAqZmZlcW9wT3V0KQor eworCU9pZAkJCWZrdHlwZWQ7CisJSGVhcFR1cGxlCWNsYV9odDsKKwlGb3JtX3BnX29wY2xh c3MgY2xhX3R1cDsKKwlPaWQJCQlhbWlkOworCU9pZAkJCW9wZmFtaWx5OworCU9pZAkJCW9w Y2ludHlwZTsKKwlPaWQJCQlwZmVxb3A7CisJT2lkCQkJcHBlcW9wOworCU9pZAkJCWZmZXFv cDsKKwlTdHJhdGVneU51bWJlcglydHN0cmF0ZWd5OworCWludDE2CQllcXN0cmF0ZWd5Owor CU9pZAkJCXBmZXFvcF9yaWdodDsKKwljaGFyCSAgICpzdHJhdG5hbWU7CisKKwkvKiBXZSBu ZWVkIHNldmVyYWwgZmllbGRzIG91dCBvZiB0aGUgcGdfb3BjbGFzcyBlbnRyeSAqLworCWNs YV9odCA9IFNlYXJjaFN5c0NhY2hlMShDTEFPSUQsIE9iamVjdElkR2V0RGF0dW0ob3BjbGFz cykpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChjbGFfaHQpKQorCQllbG9nKEVSUk9SLCAi Y2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3BjbGFzcyAldSIsIG9wY2xhc3MpOworCWNsYV90 dXAgPSAoRm9ybV9wZ19vcGNsYXNzKSBHRVRTVFJVQ1QoY2xhX2h0KTsKKwlhbWlkID0gY2xh X3R1cC0+b3BjbWV0aG9kOworCW9wZmFtaWx5ID0gY2xhX3R1cC0+b3BjZmFtaWx5OworCW9w Y2ludHlwZSA9IGNsYV90dXAtPm9wY2ludHlwZTsKKwlSZWxlYXNlU3lzQ2FjaGUoY2xhX2h0 KTsKKworCWlmIChpc190ZW1wb3JhbCkKKwl7CisJCWlmIChhbWlkICE9IEdJU1RfQU1fT0lE KQorCQkJZWxvZyhFUlJPUiwgIm9ubHkgR2lTVCBpbmRleGVzIGFyZSBzdXBwb3J0ZWQgZm9y IHRlbXBvcmFsIGZvcmVpZ24ga2V5cyIpOworCQkvKgorCQkgKiBGb3IgdGhlIG5vbi1vdmVy bGFwcyBwYXJ0cywgd2Ugd2FudCBlaXRoZXIgUlRFcXVhbFN0cmF0ZWd5TnVtYmVyICh3aXRo b3V0IGJ0cmVlX2dpc3QpCisJCSAqIG9yIEJURXF1YWxTdHJhdGVneU51bWJlciAod2l0aCBi dHJlZV9naXN0KS4gV2UnbGwgdHJ5IHRoZSBsYXR0ZXIgZmlyc3QuCisJCSAqLworCQlpZiAo Zm9yX292ZXJsYXBzKQorCQl7CisJCQlzdHJhdG5hbWUgPSAib3ZlcmxhcHMiOworCQkJcnRz dHJhdGVneSA9IFJUT3ZlcmxhcFN0cmF0ZWd5TnVtYmVyOworCQl9CisJCWVsc2UKKwkJewor CQkJc3RyYXRuYW1lID0gImVxdWFsaXR5IjsKKwkJCXJ0c3RyYXRlZ3kgPSBSVEVxdWFsU3Ry YXRlZ3lOdW1iZXI7CisJCX0KKwkJZXFzdHJhdGVneSA9IEdpc3RUcmFuc2xhdGVTdHJhdG51 bShvcGNsYXNzLCBydHN0cmF0ZWd5KTsKKwkJaWYgKGVxc3RyYXRlZ3kgPT0gSW52YWxpZFN0 cmF0ZWd5KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRF RklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygibm8gJXMgb3BlcmF0b3IgZm91bmQgZm9y IGZvcmVpZ24ga2V5Iiwgc3RyYXRuYW1lKSwKKwkJCQkJIGVycmRldGFpbCgiQ291bGQgbm90 IHRyYW5zbGF0ZSBzdHJhdGVneSBudW1iZXIgJWQgZm9yIG9wY2xhc3MgJWQuIiwKKwkJCQkJ CSBydHN0cmF0ZWd5LCBvcGNsYXNzKSwKKwkJCQkJIGVycmhpbnQoIkRlZmluZSBhIHN0cmF0 bnVtIHN1cHBvcnQgZnVuY3Rpb24gZm9yIHlvdXIgR2lTVCBvcGNsYXNzLiIpKSk7CisJfQor CWVsc2UKKwl7CisJCS8qCisJCSAqIENoZWNrIGl0J3MgYSBidHJlZTsgY3VycmVudGx5IHRo aXMgY2FuIG5ldmVyIGZhaWwgc2luY2Ugbm8gb3RoZXIKKwkJICogaW5kZXggQU1zIHN1cHBv cnQgdW5pcXVlIGluZGV4ZXMuICBJZiB3ZSBldmVyIGRpZCBoYXZlIG90aGVyIHR5cGVzCisJ CSAqIG9mIHVuaXF1ZSBpbmRleGVzLCB3ZSdkIG5lZWQgYSB3YXkgdG8gZGV0ZXJtaW5lIHdo aWNoIG9wZXJhdG9yCisJCSAqIHN0cmF0ZWd5IG51bWJlciBpcyBlcXVhbGl0eS4gIChJcyBp dCByZWFzb25hYmxlIHRvIGluc2lzdCB0aGF0CisJCSAqIGV2ZXJ5IHN1Y2ggaW5kZXggQU0g dXNlIGJ0cmVlJ3MgbnVtYmVyIGZvciBlcXVhbGl0eT8pCisJCSAqLworCQlpZiAoYW1pZCAh PSBCVFJFRV9BTV9PSUQpCisJCQllbG9nKEVSUk9SLCAib25seSBiLXRyZWUgaW5kZXhlcyBh cmUgc3VwcG9ydGVkIGZvciBmb3JlaWduIGtleXMiKTsKKwkJZXFzdHJhdGVneSA9IEJURXF1 YWxTdHJhdGVneU51bWJlcjsKKwl9CisKKwkvKgorCSAqIFRoZXJlIGhhZCBiZXR0ZXIgYmUg YSBwcmltYXJ5IGVxdWFsaXR5IG9wZXJhdG9yIGZvciB0aGUgaW5kZXguCisJICogV2UnbGwg dXNlIGl0IGZvciBQSyA9IFBLIGNvbXBhcmlzb25zLgorCSAqLworCXBwZXFvcCA9IGdldF9v cGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgb3BjaW50eXBlLAorCQkJCQkJ CQkgZXFzdHJhdGVneSk7CisKKwlpZiAoIU9pZElzVmFsaWQocHBlcW9wKSkKKwkJZWxvZyhF UlJPUiwgIm1pc3Npbmcgb3BlcmF0b3IgJWQoJXUsJXUpIGluIG9wZmFtaWx5ICV1IiwKKwkJ CSBlcXN0cmF0ZWd5LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwgb3BmYW1pbHkpOworCisJLyoK KwkgKiBBcmUgdGhlcmUgZXF1YWxpdHkgb3BlcmF0b3JzIHRoYXQgdGFrZSBleGFjdGx5IHRo ZSBGSyB0eXBlPyBBc3N1bWUKKwkgKiB3ZSBzaG91bGQgbG9vayB0aHJvdWdoIGFueSBkb21h aW4gaGVyZS4KKwkgKi8KKwlma3R5cGVkID0gZ2V0QmFzZVR5cGUoZmt0eXBlKTsKKworCXBm ZXFvcCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgZmt0eXBl ZCwKKwkJCQkJCQkJIGVxc3RyYXRlZ3kpOworCWlmIChPaWRJc1ZhbGlkKHBmZXFvcCkpCisJ eworCQlwZmVxb3BfcmlnaHQgPSBma3R5cGVkOworCQlmZmVxb3AgPSBnZXRfb3BmYW1pbHlf bWVtYmVyKG9wZmFtaWx5LCBma3R5cGVkLCBma3R5cGVkLAorCQkJCQkJCQkJIGVxc3RyYXRl Z3kpOworCX0KKwllbHNlCisJeworCQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJCXBm ZXFvcF9yaWdodCA9IEludmFsaWRPaWQ7CisJCWZmZXFvcCA9IEludmFsaWRPaWQ7CisJfQor CisJaWYgKCEoT2lkSXNWYWxpZChwZmVxb3ApICYmIE9pZElzVmFsaWQoZmZlcW9wKSkpCisJ eworCQkvKgorCQkgKiBPdGhlcndpc2UsIGxvb2sgZm9yIGFuIGltcGxpY2l0IGNhc3QgZnJv bSB0aGUgRksgdHlwZSB0byB0aGUKKwkJICogb3BjaW50eXBlLCBhbmQgaWYgZm91bmQsIHVz ZSB0aGUgcHJpbWFyeSBlcXVhbGl0eSBvcGVyYXRvci4KKwkJICogVGhpcyBpcyBhIGJpdCB0 cmlja3kgYmVjYXVzZSBvcGNpbnR5cGUgbWlnaHQgYmUgYSBwb2x5bW9ycGhpYworCQkgKiB0 eXBlIHN1Y2ggYXMgQU5ZQVJSQVkgb3IgQU5ZRU5VTTsgc28gd2hhdCB3ZSBoYXZlIHRvIHRl c3QgaXMKKwkJICogd2hldGhlciB0aGUgdHdvIGFjdHVhbCBjb2x1bW4gdHlwZXMgY2FuIGJl IGNvbmN1cnJlbnRseSBjYXN0IHRvCisJCSAqIHRoYXQgdHlwZS4gIChPdGhlcndpc2UsIHdl J2QgZmFpbCB0byByZWplY3QgY29tYmluYXRpb25zIHN1Y2gKKwkJICogYXMgaW50W10gYW5k IHBvaW50W10uKQorCQkgKi8KKwkJT2lkCQkJaW5wdXRfdHlwZWlkc1syXTsKKwkJT2lkCQkJ dGFyZ2V0X3R5cGVpZHNbMl07CisKKwkJaW5wdXRfdHlwZWlkc1swXSA9IHBrdHlwZTsKKwkJ aW5wdXRfdHlwZWlkc1sxXSA9IGZrdHlwZTsKKwkJdGFyZ2V0X3R5cGVpZHNbMF0gPSBvcGNp bnR5cGU7CisJCXRhcmdldF90eXBlaWRzWzFdID0gb3BjaW50eXBlOworCQlpZiAoY2FuX2Nv ZXJjZV90eXBlKDIsIGlucHV0X3R5cGVpZHMsIHRhcmdldF90eXBlaWRzLAorCQkJCQkJCUNP RVJDSU9OX0lNUExJQ0lUKSkKKwkJeworCQkJcGZlcW9wID0gZmZlcW9wID0gcHBlcW9wOwor CQkJcGZlcW9wX3JpZ2h0ID0gb3BjaW50eXBlOworCQl9CisJfQorCisJaWYgKCEoT2lkSXNW YWxpZChwZmVxb3ApICYmIE9pZElzVmFsaWQoZmZlcW9wKSkpCisJeworCQljaGFyICpma2F0 dHJfbmFtZTsKKwkJY2hhciAqcGthdHRyX25hbWU7CisKKwkJaWYgKGZvcl9vdmVybGFwcykK KwkJeworCQkJZmthdHRyX25hbWUgPSBzdHJWYWwoZmtjb25zdHJhaW50LT5ma19wZXJpb2Qp OworCQkJcGthdHRyX25hbWUgPSBzdHJWYWwoZmtjb25zdHJhaW50LT5wa19wZXJpb2QpOwor CQl9CisJCWVsc2UKKwkJeworCQkJZmthdHRyX25hbWUgPSBzdHJWYWwobGlzdF9udGgoZmtj b25zdHJhaW50LT5ma19hdHRycywgaSkpOworCQkJcGthdHRyX25hbWUgPSBzdHJWYWwobGlz dF9udGgoZmtjb25zdHJhaW50LT5wa19hdHRycywgaSkpOworCQl9CisKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkg ZXJybXNnKCJmb3JlaWduIGtleSBjb25zdHJhaW50IFwiJXNcIiBjYW5ub3QgYmUgaW1wbGVt ZW50ZWQiLAorCQkJCQkJZmtjb25zdHJhaW50LT5jb25uYW1lKSwKKwkJCQkgZXJyZGV0YWls KCJLZXkgY29sdW1ucyBcIiVzXCIgYW5kIFwiJXNcIiAiCisJCQkJCQkgICAiYXJlIG9mIGlu Y29tcGF0aWJsZSB0eXBlczogJXMgYW5kICVzLiIsCisJCQkJCQkgICBma2F0dHJfbmFtZSwK KwkJCQkJCSAgIHBrYXR0cl9uYW1lLAorCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUoZmt0eXBl KSwKKwkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKHBrdHlwZSkpKSk7CisJfQorCisJaWYgKCpv bGRfY2hlY2tfb2spCisJeworCQkvKgorCQkgKiBXaGVuIGEgcGZlcW9wIGNoYW5nZXMsIHJl dmFsaWRhdGUgdGhlIGNvbnN0cmFpbnQuICBXZSBjb3VsZAorCQkgKiBwZXJtaXQgaW50cmEt b3BmYW1pbHkgY2hhbmdlcywgYnV0IHRoYXQgYWRkcyBzdWJ0bGUgY29tcGxleGl0eQorCQkg KiB3aXRob3V0IGFueSBjb25jcmV0ZSBiZW5lZml0IGZvciBjb3JlIHR5cGVzLiAgV2UgbmVl ZCBub3QKKwkJICogYXNzZXNzIHBwZXFvcCBvciBmZmVxb3AsIHdoaWNoIFJJX0luaXRpYWxf Q2hlY2soKSBkb2VzIG5vdCB1c2UuCisJCSAqLworCQkqb2xkX2NoZWNrX29rID0gKHBmZXFv cCA9PSBsZmlyc3Rfb2lkKCpvbGRfcGZlcW9wX2l0ZW0pKTsKKwkJKm9sZF9wZmVxb3BfaXRl bSA9IGxuZXh0KGZrY29uc3RyYWludC0+b2xkX2NvbnBmZXFvcCwKKwkJCQkJCQkJKm9sZF9w ZmVxb3BfaXRlbSk7CisJfQorCWlmICgqb2xkX2NoZWNrX29rKQorCXsKKwkJT2lkCQkJb2xk X2ZrdHlwZTsKKwkJT2lkCQkJbmV3X2ZrdHlwZTsKKwkJQ29lcmNpb25QYXRoVHlwZSBvbGRf cGF0aHR5cGU7CisJCUNvZXJjaW9uUGF0aFR5cGUgbmV3X3BhdGh0eXBlOworCQlPaWQJCQlv bGRfY2FzdGZ1bmM7CisJCU9pZAkJCW5ld19jYXN0ZnVuYzsKKwkJRm9ybV9wZ19hdHRyaWJ1 dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodGFiLT5vbGREZXNjLAorCQkJCQkJCQkJCQkgICBm a2F0dG51bVtpXSAtIDEpOworCisJCS8qCisJCSAqIElkZW50aWZ5IGNvZXJjaW9uIHBhdGh3 YXlzIGZyb20gZWFjaCBvZiB0aGUgb2xkIGFuZCBuZXcgRkstc2lkZQorCQkgKiBjb2x1bW4g dHlwZXMgdG8gdGhlIHJpZ2h0IChmb3JlaWduKSBvcGVyYW5kIHR5cGUgb2YgdGhlIHBmZXFv cC4KKwkJICogV2UgbWF5IGFzc3VtZSB0aGF0IHBnX2NvbnN0cmFpbnQuY29ua2V5IGlzIG5v dCBjaGFuZ2luZy4KKwkJICovCisJCW9sZF9ma3R5cGUgPSBhdHRyLT5hdHR0eXBpZDsKKwkJ bmV3X2ZrdHlwZSA9IGZrdHlwZTsKKwkJb2xkX3BhdGh0eXBlID0gZmluZEZrZXlDYXN0KHBm ZXFvcF9yaWdodCwgb2xkX2ZrdHlwZSwKKwkJCQkJCQkJCSZvbGRfY2FzdGZ1bmMpOworCQlu ZXdfcGF0aHR5cGUgPSBmaW5kRmtleUNhc3QocGZlcW9wX3JpZ2h0LCBuZXdfZmt0eXBlLAor CQkJCQkJCQkJJm5ld19jYXN0ZnVuYyk7CisKKwkJLyoKKwkJICogVXBvbiBhIGNoYW5nZSB0 byB0aGUgY2FzdCBmcm9tIHRoZSBGSyBjb2x1bW4gdG8gaXRzIHBmZXFvcAorCQkgKiBvcGVy YW5kLCByZXZhbGlkYXRlIHRoZSBjb25zdHJhaW50LiAgRm9yIHRoaXMgZXZhbHVhdGlvbiwg YQorCQkgKiBiaW5hcnkgY29lcmNpb24gY2FzdCBpcyBlcXVpdmFsZW50IHRvIG5vIGNhc3Qg YXQgYWxsLiAgV2hpbGUKKwkJICogdHlwZSBpbXBsZW1lbnRvcnMgc2hvdWxkIGRlc2lnbiBp bXBsaWNpdCBjYXN0cyB3aXRoIGFuIGV5ZQorCQkgKiB0b3dhcmQgY29uc2lzdGVuY3kgb2Yg b3BlcmF0aW9ucyBsaWtlIGVxdWFsaXR5LCB3ZSBjYW5ub3QKKwkJICogYXNzdW1lIGhlcmUg dGhhdCB0aGV5IGhhdmUgZG9uZSBzby4KKwkJICoKKwkJICogQSBmdW5jdGlvbiB3aXRoIGEg cG9seW1vcnBoaWMgYXJndW1lbnQgY291bGQgY2hhbmdlIGJlaGF2aW9yCisJCSAqIGFyYml0 cmFyaWx5IGluIHJlc3BvbnNlIHRvIGdldF9mbl9leHByX2FyZ3R5cGUoKS4gIFRoZXJlZm9y ZSwKKwkJICogd2hlbiB0aGUgY2FzdCBkZXN0aW5hdGlvbiBpcyBwb2x5bW9ycGhpYywgd2Ug b25seSBhdm9pZAorCQkgKiByZXZhbGlkYXRpb24gaWYgdGhlIGlucHV0IHR5cGUgaGFzIG5v dCBjaGFuZ2VkIGF0IGFsbC4gIEdpdmVuCisJCSAqIGp1c3QgdGhlIGNvcmUgZGF0YSB0eXBl cyBhbmQgb3BlcmF0b3IgY2xhc3NlcywgdGhpcyByZXF1aXJlbWVudAorCQkgKiBwcmV2ZW50 cyBubyB3b3VsZC1iZSBvcHRpbWl6YXRpb25zLgorCQkgKgorCQkgKiBJZiB0aGUgY2FzdCBj b252ZXJ0cyBmcm9tIGEgYmFzZSB0eXBlIHRvIGEgZG9tYWluIHRoZXJlb24sIHRoZW4KKwkJ ICogdGhhdCBkb21haW4gdHlwZSBtdXN0IGJlIHRoZSBvcGNpbnR5cGUgb2YgdGhlIHVuaXF1 ZSBpbmRleC4KKwkJICogTmVjZXNzYXJpbHksIHRoZSBwcmltYXJ5IGtleSBjb2x1bW4gbXVz dCB0aGVuIGJlIG9mIHRoZSBkb21haW4KKwkJICogdHlwZS4gIFNpbmNlIHRoZSBjb25zdHJh aW50IHdhcyBwcmV2aW91c2x5IHZhbGlkLCBhbGwgdmFsdWVzIG9uCisJCSAqIHRoZSBmb3Jl aWduIHNpZGUgbmVjZXNzYXJpbHkgZXhpc3Qgb24gdGhlIHByaW1hcnkgc2lkZSBhbmQgaW4K KwkJICogdHVybiBjb25mb3JtIHRvIHRoZSBkb21haW4uICBDb25zZXF1ZW50bHksIHdlIG5l ZWQgbm90IHRyZWF0CisJCSAqIGRvbWFpbnMgc3BlY2lhbGx5IGhlcmUuCisJCSAqCisJCSAq IFNpbmNlIHdlIHJlcXVpcmUgdGhhdCBhbGwgY29sbGF0aW9ucyBzaGFyZSB0aGUgc2FtZSBu b3Rpb24gb2YKKwkJICogZXF1YWxpdHkgKHdoaWNoIHRoZXkgZG8sIGJlY2F1c2UgdGV4dGVx IHJlZHVjZXMgdG8gYml0d2lzZQorCQkgKiBlcXVhbGl0eSksIHdlIGRvbid0IGNvbXBhcmUg Y29sbGF0aW9uIGhlcmUuCisJCSAqCisJCSAqIFdlIG5lZWQgbm90IGRpcmVjdGx5IGNvbnNp ZGVyIHRoZSBQSyB0eXBlLiAgSXQncyBuZWNlc3NhcmlseQorCQkgKiBiaW5hcnkgY29lcmNp YmxlIHRvIHRoZSBvcGNpbnR5cGUgb2YgdGhlIHVuaXF1ZSBpbmRleCBjb2x1bW4sCisJCSAq IGFuZCByaV90cmlnZ2Vycy5jIHdpbGwgb25seSBkZWFsIHdpdGggUEsgZGF0dW1zIGluIHRl cm1zIG9mCisJCSAqIHRoYXQgb3BjaW50eXBlLiAgQ2hhbmdpbmcgdGhlIG9wY2ludHlwZSBh bHNvIGNoYW5nZXMgcGZlcW9wLgorCQkgKi8KKwkJKm9sZF9jaGVja19vayA9IChuZXdfcGF0 aHR5cGUgPT0gb2xkX3BhdGh0eXBlICYmCisJCQkJCQluZXdfY2FzdGZ1bmMgPT0gb2xkX2Nh c3RmdW5jICYmCisJCQkJCQkoIUlzUG9seW1vcnBoaWNUeXBlKHBmZXFvcF9yaWdodCkgfHwK KwkJCQkJCSBuZXdfZmt0eXBlID09IG9sZF9ma3R5cGUpKTsKKworCX0KKworCSpwZmVxb3BP dXQgPSBwZmVxb3A7CisJKnBwZXFvcE91dCA9IHBwZXFvcDsKKwkqZmZlcW9wT3V0ID0gZmZl cW9wOworfQorCisvKgorICogRmluZEZrUGVyaW9kT3BlcnNBbmRQcm9jcyAtCisgKgorICog TG9va3MgdXAgdGhlIG9wZXIgYW5kIHByb2Mgb2lkcyBmb3IgY29uZmtwZXJpb2RvcGVyb2lk cyBhbmQgY29uZmtwZXJpb2Rwcm9jb2lkcy4KKyAqIFRoZXNlIGFyZSB1c2VkIGJ5IGZvcmVp Z24ga2V5cyB3aXRoIGEgUEVSSU9EIGVsZW1lbnQuCisgKi8KK3ZvaWQKK0ZpbmRGS1Blcmlv ZE9wZXJzQW5kUHJvY3MoT2lkIG9wY2xhc3MsCisJCQkJCQkgIE9pZCAqcGVyaW9kb3Blcm9p ZCwKKwkJCQkJCSAgT2lkICpwZXJpb2Rwcm9jb2lkKQoreworCU9pZAlvcGZhbWlseTsKKwlP aWQJb3BjaW50eXBlOworCU9pZAlhZ2dyZXR0eXBlOworCU9pZAlmdW5jaWQgPSBJbnZhbGlk T2lkOworCVN0cmF0ZWd5TnVtYmVyIHN0cmF0ID0gUlRDb250YWluZWRCeVN0cmF0ZWd5TnVt YmVyOworCisJLyogRmlyc3QgbG9vayB1cCB0aGUgc3VwcG9ydCBwcm9jIGZvciBhZ2dyZWdh dGlvbi4gKi8KKwlpZiAoZ2V0X29wY2xhc3Nfb3BmYW1pbHlfYW5kX2lucHV0X3R5cGUob3Bj bGFzcywgJm9wZmFtaWx5LCAmb3BjaW50eXBlKSkKKwkJZnVuY2lkID0gZ2V0X29wZmFtaWx5 X3Byb2Mob3BmYW1pbHksIG9wY2ludHlwZSwgb3BjaW50eXBlLCBHSVNUX1JFRkVSRU5DRURf QUdHX1BST0MpOworCisJaWYgKCFPaWRJc1ZhbGlkKGZ1bmNpZCkpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkgZXJy bXNnKCJubyBzdXBwb3J0IGZ1bmMgJXUgZm91bmQgZm9yIEZPUkVJR04gS0VZIGNvbnN0cmFp bnQiLCBHSVNUX1JFRkVSRU5DRURfQUdHX1BST0MpLAorCQkJCSBlcnJoaW50KCJEZWZpbmUg YSByZWZlcmVuY2VkYWdnIHN1cHBvcnQgZnVuY3Rpb24gZm9yIHlvdXIgR2lTVCBvcGNsYXNz LiIpKSk7CisKKwkqcGVyaW9kcHJvY29pZCA9IGZ1bmNpZDsKKworCS8qIExvb2sgdXAgdGhl IGZ1bmN0aW9uJ3MgcmV0dHlwZS4gKi8KKwlhZ2dyZXR0eXBlID0gZ2V0X2Z1bmNfcmV0dHlw ZShmdW5jaWQpOworCisJLyoKKwkgKiBOb3cgbG9vayB1cCB0aGUgQ29udGFpbmVkQnkgb3Bl cmF0b3IuCisJICogSXRzIGxlZnQgYXJnIG11c3QgYmUgdGhlIHR5cGUgb2YgdGhlIGNvbHVt biAob3IgcmF0aGVyIG9mIHRoZSBvcGNsYXNzKS4KKwkgKiBJdHMgcmlnaHQgYXJnIG11c3Qg bWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIHRoZSBzdXBwb3J0IHByb2MuCisJICovCisJR2V0 T3BlcmF0b3JGcm9tV2VsbEtub3duU3RyYXRlZ3kob3BjbGFzcywKKwkJCQkJCQkJCSBhZ2dy ZXR0eXBlLAorCQkJCQkJCQkJICJjb250YWluZWQgYnkiLAorCQkJCQkJCQkJICJGT1JFSUdO IEtFWSBjb25zdHJhaW50IiwKKwkJCQkJCQkJCSBwZXJpb2RvcGVyb2lkLAorCQkJCQkJCQkJ ICZzdHJhdCk7Cit9CisKIC8qCiAgKiBXaGVuIHRoZSBwYXJlbnQgb2YgYSBwYXJ0aXRpb24g cmVjZWl2ZXMgW3RoZSByZWZlcmVuY2luZyBzaWRlIG9mXSBhIGZvcmVpZ24KICAqIGtleSwg d2UgbXVzdCBwcm9wYWdhdGUgdGhhdCBmb3JlaWduIGtleSB0byB0aGUgcGFydGl0aW9uLiAg SG93ZXZlciwgdGhlCkBAIC0xMTY4Myw3ICsxMTg4OCwxMSBAQCBBVEV4ZWNBbHRlckNvbnN0 clJlY3Vyc2UoQ29uc3RyYWludCAqY21kY29uLCBSZWxhdGlvbiBjb25yZWwsIFJlbGF0aW9u IHRncmVsLAogCQkJaWYgKHRnZm9ybS0+dGdmb2lkICE9IEZfUklfRktFWV9OT0FDVElPTl9E RUwgJiYKIAkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1JJX0ZLRVlfTk9BQ1RJT05fVVBEICYm CiAJCQkJdGdmb3JtLT50Z2ZvaWQgIT0gRl9SSV9GS0VZX0NIRUNLX0lOUyAmJgotCQkJCXRn Zm9ybS0+dGdmb2lkICE9IEZfUklfRktFWV9DSEVDS19VUEQpCisJCQkJdGdmb3JtLT50Z2Zv aWQgIT0gRl9SSV9GS0VZX0NIRUNLX1VQRCAmJgorCQkJCXRnZm9ybS0+dGdmb2lkICE9IEZf VFJJX0ZLRVlfTk9BQ1RJT05fREVMICYmCisJCQkJdGdmb3JtLT50Z2ZvaWQgIT0gRl9UUklf RktFWV9OT0FDVElPTl9VUEQgJiYKKwkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1RSSV9GS0VZ X0NIRUNLX0lOUyAmJgorCQkJCXRnZm9ybS0+dGdmb2lkICE9IEZfVFJJX0ZLRVlfQ0hFQ0tf VVBEKQogCQkJCWNvbnRpbnVlOwogCiAJCQl0Z0NvcHlUdXBsZSA9IGhlYXBfY29weXR1cGxl KHRndHVwbGUpOwpAQCAtMTE5MzAsNyArMTIxMzksNiBAQCBBVEV4ZWNWYWxpZGF0ZUNvbnN0 cmFpbnQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBjaGFyICpjb25zdHJOYW1lLAog CXJldHVybiBhZGRyZXNzOwogfQogCi0KIC8qCiAgKiB0cmFuc2Zvcm1Db2x1bW5OYW1lTGlz dCAtIHRyYW5zZm9ybSBsaXN0IG9mIGNvbHVtbiBuYW1lcwogICoKQEAgLTExOTk2LDcgKzEy MjA0LDkgQEAgdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoT2lkIHJlbElkLCBMaXN0ICpjb2xM aXN0LAogc3RhdGljIGludAogdHJhbnNmb3JtRmtleUdldFByaW1hcnlLZXkoUmVsYXRpb24g cGtyZWwsIE9pZCAqaW5kZXhPaWQsCiAJCQkJCQkgICBMaXN0ICoqYXR0bmFtZWxpc3QsCisJ CQkJCQkgICBOb2RlICoqcGtfcGVyaW9kLAogCQkJCQkJICAgaW50MTYgKmF0dG51bXMsIE9p ZCAqYXR0dHlwaWRzLAorCQkJCQkJICAgaW50MTYgKnBlcmlvZGF0dG51bXMsIE9pZCAqcGVy aW9kYXR0dHlwaWRzLAogCQkJCQkJICAgT2lkICpvcGNsYXNzZXMpCiB7CiAJTGlzdAkgICAq aW5kZXhvaWRsaXN0OwpAQCAtMTIwNjEsMzYgKzEyMjcxLDU1IEBAIHRyYW5zZm9ybUZrZXlH ZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4T2lkLAogCiAJLyoKIAkg KiBOb3cgYnVpbGQgdGhlIGxpc3Qgb2YgUEsgYXR0cmlidXRlcyBmcm9tIHRoZSBpbmRrZXkg ZGVmaW5pdGlvbiAod2UKLQkgKiBhc3N1bWUgYSBwcmltYXJ5IGtleSBjYW5ub3QgaGF2ZSBl eHByZXNzaW9uYWwgZWxlbWVudHMpCisJICogYXNzdW1lIGEgcHJpbWFyeSBrZXkgY2Fubm90 IGhhdmUgZXhwcmVzc2lvbmFsIGVsZW1lbnRzLCB1bmxlc3MgaXQKKwkgKiBoYXMgYSBQRVJJ T0QpCiAJICovCiAJKmF0dG5hbWVsaXN0ID0gTklMOwogCWZvciAoaSA9IDA7IGkgPCBpbmRl eFN0cnVjdC0+aW5kbmtleWF0dHM7IGkrKykKIAl7CiAJCWludAkJCXBrYXR0bm8gPSBpbmRl eFN0cnVjdC0+aW5ka2V5LnZhbHVlc1tpXTsKIAotCQlhdHRudW1zW2ldID0gcGthdHRubzsK LQkJYXR0dHlwaWRzW2ldID0gYXR0bnVtVHlwZUlkKHBrcmVsLCBwa2F0dG5vKTsKLQkJb3Bj bGFzc2VzW2ldID0gaW5kY2xhc3MtPnZhbHVlc1tpXTsKLQkJKmF0dG5hbWVsaXN0ID0gbGFw cGVuZCgqYXR0bmFtZWxpc3QsCi0JCQkJCQkJICAgbWFrZVN0cmluZyhwc3RyZHVwKE5hbWVT dHIoKmF0dG51bUF0dE5hbWUocGtyZWwsIHBrYXR0bm8pKSkpKTsKKwkJaWYgKGkgPT0gaW5k ZXhTdHJ1Y3QtPmluZG5rZXlhdHRzIC0gMSAmJiBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNp b24pCisJCXsKKwkJCS8qIHdlIGhhdmUgYSByYW5nZSAqLworCQkJLyogVGhlIGNhbGxlciB3 aWxsIHNldCBhdHRudW1zW2ldICovCisJCQlwZXJpb2RhdHRudW1zWzBdID0gcGthdHRubzsK KwkJCXBlcmlvZGF0dHR5cGlkc1swXSA9IGF0dG51bVR5cGVJZChwa3JlbCwgcGthdHRubyk7 CisJCQlvcGNsYXNzZXNbaV0gPSBpbmRjbGFzcy0+dmFsdWVzW2ldOworCisJCQlBc3NlcnQo KnBrX3BlcmlvZCA9PSBOVUxMKTsKKwkJCSpwa19wZXJpb2QgPSAoTm9kZSAqKSBtYWtlU3Ry aW5nKHBzdHJkdXAoTmFtZVN0cigqYXR0bnVtQXR0TmFtZShwa3JlbCwgcGthdHRubykpKSk7 CisJCX0KKwkJZWxzZQorCQl7CisJCQlhdHRudW1zW2ldID0gcGthdHRubzsKKwkJCWF0dHR5 cGlkc1tpXSA9IGF0dG51bVR5cGVJZChwa3JlbCwgcGthdHRubyk7CisJCQlvcGNsYXNzZXNb aV0gPSBpbmRjbGFzcy0+dmFsdWVzW2ldOworCQkJKmF0dG5hbWVsaXN0ID0gbGFwcGVuZCgq YXR0bmFtZWxpc3QsCisJCQkJCQkJCSAgbWFrZVN0cmluZyhwc3RyZHVwKE5hbWVTdHIoKmF0 dG51bUF0dE5hbWUocGtyZWwsIHBrYXR0bm8pKSkpKTsKKwkJfQogCX0KIAogCVJlbGVhc2VT eXNDYWNoZShpbmRleFR1cGxlKTsKIAotCXJldHVybiBpOworCWlmIChpbmRleFN0cnVjdC0+ aW5kaXNleGNsdXNpb24pIHJldHVybiBpIC0gMTsKKwllbHNlIHJldHVybiBpOwogfQogCiAv KgogICogdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMgLQogICoKICAqCU1ha2Ugc3VyZSB0aGF0 IHRoZSBhdHRyaWJ1dGVzIG9mIGEgcmVmZXJlbmNlZCB0YWJsZSBiZWxvbmcgdG8gYSB1bmlx dWUKLSAqCShvciBwcmltYXJ5IGtleSkgY29uc3RyYWludC4gIFJldHVybiB0aGUgT0lEIG9m IHRoZSBpbmRleCBzdXBwb3J0aW5nCi0gKgl0aGUgY29uc3RyYWludCwgYXMgd2VsbCBhcyB0 aGUgb3BjbGFzc2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5kZXgKKyAqCShvciBwcmltYXJ5 IGtleSkgY29uc3RyYWludC4gIE9yIGlmIHRoaXMgaXMgYSB0ZW1wb3JhbCBmb3JlaWduIGtl eQorICoJdGhlIHByaW1hcnkga2V5IHNob3VsZCBiZSBhbiBleGNsdXNpb24gY29uc3RyYWlu dCBpbnN0ZWFkLgorICoJUmV0dXJuIHRoZSBPSUQgb2YgdGhlIGluZGV4IHN1cHBvcnRpbmcg dGhlIGNvbnN0cmFpbnQsCisgKglhcyB3ZWxsIGFzIHRoZSBvcGNsYXNzZXMgYXNzb2NpYXRl ZCB3aXRoIHRoZSBpbmRleAogICoJY29sdW1ucy4KICAqLwogc3RhdGljIE9pZAogdHJhbnNm b3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCQkJCQlpbnQgbnVtYXR0cnMs IGludDE2ICphdHRudW1zLAorCQkJCQkJYm9vbCBpc190ZW1wb3JhbCwgaW50MTYgcGVyaW9k YXR0bnVtLAogCQkJCQkJT2lkICpvcGNsYXNzZXMpIC8qIG91dHB1dCBwYXJhbWV0ZXIgKi8K IHsKIAlPaWQJCQlpbmRleG9pZCA9IEludmFsaWRPaWQ7CkBAIC0xMjExNyw2ICsxMjM0Niwx MCBAQCB0cmFuc2Zvcm1Ga2V5Q2hlY2tBdHRycyhSZWxhdGlvbiBwa3JlbCwKIAkJCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GT1JFSUdOX0tFWSksCiAJCQkJCQkgZXJybXNnKCJm b3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBtdXN0IG5vdCBjb250YWluIGR1 cGxpY2F0ZXMiKSkpOwogCQl9CisJCWlmIChpc190ZW1wb3JhbCAmJiBhdHRudW1zW2ldID09 IHBlcmlvZGF0dG51bSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9GT1JFSUdOX0tFWSksCisJCQkJCSBlcnJtc2coImZvcmVpZ24ga2V5IHJl ZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlcyIpKSk7 CiAJfQogCiAJLyoKQEAgLTEyMTM4LDEyICsxMjM3MSwxNiBAQCB0cmFuc2Zvcm1Ga2V5Q2hl Y2tBdHRycyhSZWxhdGlvbiBwa3JlbCwKIAkJaW5kZXhTdHJ1Y3QgPSAoRm9ybV9wZ19pbmRl eCkgR0VUU1RSVUNUKGluZGV4VHVwbGUpOwogCiAJCS8qCi0JCSAqIE11c3QgaGF2ZSB0aGUg cmlnaHQgbnVtYmVyIG9mIGNvbHVtbnM7IG11c3QgYmUgdW5pcXVlIGFuZCBub3QgYQotCQkg KiBwYXJ0aWFsIGluZGV4OyBmb3JnZXQgaXQgaWYgdGhlcmUgYXJlIGFueSBleHByZXNzaW9u cywgdG9vLiBJbnZhbGlkCi0JCSAqIGluZGV4ZXMgYXJlIG91dCBhcyB3ZWxsLgorCQkgKiBN dXN0IGhhdmUgdGhlIHJpZ2h0IG51bWJlciBvZiBjb2x1bW5zOyBtdXN0IGJlIHVuaXF1ZQor CQkgKiAob3IgaWYgdGVtcG9yYWwgdGhlbiBleGNsdXNpb24gaW5zdGVhZCkgYW5kIG5vdCBh CisJCSAqIHBhcnRpYWwgaW5kZXg7IGZvcmdldCBpdCBpZiB0aGVyZSBhcmUgYW55IGV4cHJl c3Npb25zLCB0b28uCisJCSAqIEludmFsaWQgaW5kZXhlcyBhcmUgb3V0IGFzIHdlbGwuCiAJ CSAqLwotCQlpZiAoaW5kZXhTdHJ1Y3QtPmluZG5rZXlhdHRzID09IG51bWF0dHJzICYmCi0J CQlpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUgJiYKKwkJaWYgKChpc190ZW1wb3JhbAorCQkJ ICA/IChpbmRleFN0cnVjdC0+aW5kbmtleWF0dHMgPT0gbnVtYXR0cnMgKyAxICYmCisJCQkJ IGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbikKKwkJCSAgOiAoaW5kZXhTdHJ1Y3QtPmlu ZG5rZXlhdHRzID09IG51bWF0dHJzICYmCisJCQkJIGluZGV4U3RydWN0LT5pbmRpc3VuaXF1 ZSkpICYmCiAJCQlpbmRleFN0cnVjdC0+aW5kaXN2YWxpZCAmJgogCQkJaGVhcF9hdHRpc251 bGwoaW5kZXhUdXBsZSwgQW51bV9wZ19pbmRleF9pbmRwcmVkLCBOVUxMKSAmJgogCQkJaGVh cF9hdHRpc251bGwoaW5kZXhUdXBsZSwgQW51bV9wZ19pbmRleF9pbmRleHBycywgTlVMTCkp CkBAIC0xMjE4MSw2ICsxMjQxOCwxOSBAQCB0cmFuc2Zvcm1Ga2V5Q2hlY2tBdHRycyhSZWxh dGlvbiBwa3JlbCwKIAkJCQlpZiAoIWZvdW5kKQogCQkJCQlicmVhazsKIAkJCX0KKwkJCWlm IChmb3VuZCAmJiBpc190ZW1wb3JhbCkKKwkJCXsKKwkJCQlmb3VuZCA9IGZhbHNlOworCQkJ CWZvciAoaiA9IDA7IGogPCBudW1hdHRycyArIDE7IGorKykKKwkJCQl7CisJCQkJCWlmIChw ZXJpb2RhdHRudW0gPT0gaW5kZXhTdHJ1Y3QtPmluZGtleS52YWx1ZXNbal0pCisJCQkJCXsK KwkJCQkJCW9wY2xhc3Nlc1tudW1hdHRyc10gPSBpbmRjbGFzcy0+dmFsdWVzW2pdOworCQkJ CQkJZm91bmQgPSB0cnVlOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQl9CiAK IAkJCS8qCiAJCQkgKiBSZWZ1c2UgdG8gdXNlIGEgZGVmZXJyYWJsZSB1bmlxdWUvcHJpbWFy eSBrZXkuICBUaGlzIGlzIHBlciBTUUwKQEAgLTEyMjkwLDcgKzEyNTQwLDggQEAgdmFsaWRh dGVGb3JlaWduS2V5Q29uc3RyYWludChjaGFyICpjb25uYW1lLAogCQkJCQkJCSBSZWxhdGlv biByZWwsCiAJCQkJCQkJIFJlbGF0aW9uIHBrcmVsLAogCQkJCQkJCSBPaWQgcGtpbmRPaWQs Ci0JCQkJCQkJIE9pZCBjb25zdHJhaW50T2lkKQorCQkJCQkJCSBPaWQgY29uc3RyYWludE9p ZCwKKwkJCQkJCQkgYm9vbCB0ZW1wb3JhbCkKIHsKIAlUdXBsZVRhYmxlU2xvdCAqc2xvdDsK IAlUYWJsZVNjYW5EZXNjIHNjYW47CkBAIC0xMjMxOSw4ICsxMjU3MCwxMCBAQCB2YWxpZGF0 ZUZvcmVpZ25LZXlDb25zdHJhaW50KGNoYXIgKmNvbm5hbWUsCiAJLyoKIAkgKiBTZWUgaWYg d2UgY2FuIGRvIGl0IHdpdGggYSBzaW5nbGUgTEVGVCBKT0lOIHF1ZXJ5LiAgQSBmYWxzZSBy ZXN1bHQKIAkgKiBpbmRpY2F0ZXMgd2UgbXVzdCBwcm9jZWVkIHdpdGggdGhlIGZpcmUtdGhl LXRyaWdnZXIgbWV0aG9kLgorCSAqIFdlIGNhbid0IGRvIGEgTEVGVCBKT0lOIGZvciB0ZW1w b3JhbCBGS3MgeWV0LAorCSAqIGJ1dCB3ZSBjYW4gb25jZSB3ZSBzdXBwb3J0IHRlbXBvcmFs IGxlZnQgam9pbnMuCiAJICovCi0JaWYgKFJJX0luaXRpYWxfQ2hlY2soJnRyaWcsIHJlbCwg cGtyZWwpKQorCWlmICghdGVtcG9yYWwgJiYgUklfSW5pdGlhbF9DaGVjaygmdHJpZywgcmVs LCBwa3JlbCkpCiAJCXJldHVybjsKIAogCS8qCkBAIC0xMjM4OSw2ICsxMjY0Miw3IEBAIENy ZWF0ZUZLQ2hlY2tUcmlnZ2VyKE9pZCBteVJlbE9pZCwgT2lkIHJlZlJlbE9pZCwgQ29uc3Ry YWludCAqZmtjb25zdHJhaW50LAogewogCU9iamVjdEFkZHJlc3MgdHJpZ0FkZHJlc3M7CiAJ Q3JlYXRlVHJpZ1N0bXQgKmZrX3RyaWdnZXI7CisJYm9vbCBpc190ZW1wb3JhbCA9IGZrY29u c3RyYWludC0+ZmtfcGVyaW9kOwogCiAJLyoKIAkgKiBOb3RlOiBmb3IgYSBzZWxmLXJlZmVy ZW50aWFsIEZLIChyZWZlcmVuY2luZyBhbmQgcmVmZXJlbmNlZCB0YWJsZXMgYXJlCkBAIC0x MjQwOCwxMiArMTI2NjIsMTggQEAgQ3JlYXRlRktDaGVja1RyaWdnZXIoT2lkIG15UmVsT2lk LCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsCiAJLyogRWl0aGVy IE9OIElOU0VSVCBvciBPTiBVUERBVEUgKi8KIAlpZiAob25faW5zZXJ0KQogCXsKLQkJZmtf dHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jaGVja19pbnMi KTsKKwkJaWYgKGlzX3RlbXBvcmFsKQorCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0 ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfY2hlY2tfaW5zIik7CisJCWVsc2UKKwkJCWZrX3RyaWdn ZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfY2hlY2tfaW5zIik7CiAJ CWZrX3RyaWdnZXItPmV2ZW50cyA9IFRSSUdHRVJfVFlQRV9JTlNFUlQ7CiAJfQogCWVsc2UK IAl7Ci0JCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlf Y2hlY2tfdXBkIik7CisJCWlmIChpc190ZW1wb3JhbCkKKwkJCWZrX3RyaWdnZXItPmZ1bmNu YW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2NoZWNrX3VwZCIpOworCQllbHNlCisJ CQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2NoZWNr X3VwZCIpOwogCQlma190cmlnZ2VyLT5ldmVudHMgPSBUUklHR0VSX1RZUEVfVVBEQVRFOwog CX0KIApAQCAtMTI0NzEsMzcgKzEyNzMxLDY4IEBAIGNyZWF0ZUZvcmVpZ25LZXlBY3Rpb25U cmlnZ2VycyhSZWxhdGlvbiByZWwsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZrY29u c3RyCiAJZmtfdHJpZ2dlci0+d2hlbkNsYXVzZSA9IE5VTEw7CiAJZmtfdHJpZ2dlci0+dHJh bnNpdGlvblJlbHMgPSBOSUw7CiAJZmtfdHJpZ2dlci0+Y29uc3RycmVsID0gTlVMTDsKLQlz d2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbikKKwlpZiAoZmtjb25zdHJhaW50 LT5ma19wZXJpb2QgIT0gTlVMTCkKIAl7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX05PQUNU SU9OOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVmZXJy YWJsZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZrY29uc3RyYWludC0+aW5p dGRlZmVycmVkOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgi UklfRktleV9ub2FjdGlvbl9kZWwiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FD VElPTl9SRVNUUklDVDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJ CWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVu Y25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9yZXN0cmljdF9kZWwiKTsKLQkJCWJy ZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgotCQkJZmtfdHJpZ2dlci0+ ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFs c2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5 X2Nhc2NhZGVfZGVsIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VU TlVMTDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZrX3RyaWdn ZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBT eXN0ZW1GdW5jTmFtZSgiUklfRktleV9zZXRudWxsX2RlbCIpOwotCQkJYnJlYWs7Ci0JCWNh c2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJh YmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJ CWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0ZGVm YXVsdF9kZWwiKTsKLQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJZWxvZyhFUlJPUiwgInVu cmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLAotCQkJCSAoaW50KSBma2NvbnN0cmFp bnQtPmZrX2RlbF9hY3Rpb24pOwotCQkJYnJlYWs7CisJCS8qIFRlbXBvcmFsIGZvcmVpZ24g a2V5cyAqLworCQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbikKKwkJewor CQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJT046CisJCQkJZmtfdHJpZ2dlci0+ZGVm ZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVmZXJyYWJsZTsKKwkJCQlma190cmlnZ2VyLT5p bml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsKKwkJCQlma190cmln Z2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktleV9ub2FjdGlvbl9kZWwi KTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1JFU1RSSUNUOgorCQkJ CWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0 ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1 bmNOYW1lKCJUUklfRktleV9yZXN0cmljdF9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWNhc2Ug RktDT05TVFJfQUNUSU9OX0NBU0NBREU6CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRO VUxMOgorCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUREVGQVVMVDoKKwkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAorCQkJCQkJIGVycm1zZygiYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZv cmVpZ24ga2V5cyIpKSk7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJS T1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKKwkJCQkJIChpbnQpIGZr Y29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbik7CisJCQkJYnJlYWs7CisJCX0KKwl9CisJZWxz ZQorCXsKKwkJc3dpdGNoIChma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24pCisJCXsKKwkJ CWNhc2UgRktDT05TVFJfQUNUSU9OX05PQUNUSU9OOgorCQkJCWZrX3RyaWdnZXItPmRlZmVy cmFibGUgPSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7CisJCQkJZmtfdHJpZ2dlci0+aW5p dGRlZmVycmVkID0gZmtjb25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7CisJCQkJZmtfdHJpZ2dl ci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9ub2FjdGlvbl9kZWwiKTsK KwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1JFU1RSSUNUOgorCQkJCWZr X3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVm ZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNO YW1lKCJSSV9GS2V5X3Jlc3RyaWN0X2RlbCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NP TlNUUl9BQ1RJT05fQ0FTQ0FERToKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFs c2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJp Z2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jYXNjYWRlX2RlbCIp OworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVMTDoKKwkJCQlm a190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRl ZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5j TmFtZSgiUklfRktleV9zZXRudWxsX2RlbCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NP TlNUUl9BQ1RJT05fU0VUREVGQVVMVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0g ZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtf dHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9zZXRkZWZhdWx0 X2RlbCIpOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIEZLIGFjdGlvbiB0eXBlOiAlZCIsCisJCQkJCSAoaW50KSBma2NvbnN0cmFp bnQtPmZrX2RlbF9hY3Rpb24pOworCQkJCWJyZWFrOworCQl9CiAJfQogCiAJdHJpZ0FkZHJl c3MgPSBDcmVhdGVUcmlnZ2VyKGZrX3RyaWdnZXIsIE5VTEwsIHJlZlJlbE9pZCwKQEAgLTEy NTMxLDM3ICsxMjgyMiw2OCBAQCBjcmVhdGVGb3JlaWduS2V5QWN0aW9uVHJpZ2dlcnMoUmVs YXRpb24gcmVsLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0cgogCWZrX3Ry aWdnZXItPndoZW5DbGF1c2UgPSBOVUxMOwogCWZrX3RyaWdnZXItPnRyYW5zaXRpb25SZWxz ID0gTklMOwogCWZrX3RyaWdnZXItPmNvbnN0cnJlbCA9IE5VTEw7Ci0Jc3dpdGNoIChma2Nv bnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pCisJaWYgKGZrY29uc3RyYWludC0+ZmtfcGVyaW9k ICE9IE5VTEwpCiAJewotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9OT0FDVElPTjoKLQkJCWZr X3RyaWdnZXItPmRlZmVycmFibGUgPSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7Ci0JCQlm a190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsK LQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfbm9h Y3Rpb25fdXBkIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVTVFJJ Q1Q6Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2Vy LT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lz dGVtRnVuY05hbWUoIlJJX0ZLZXlfcmVzdHJpY3RfdXBkIik7Ci0JCQlicmVhazsKLQkJY2Fz ZSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FERToKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUg PSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtf dHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jYXNjYWRlX3Vw ZCIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6Ci0JCQlm a190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVm ZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05h bWUoIlJJX0ZLZXlfc2V0bnVsbF91cGQiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RS X0FDVElPTl9TRVRERUZBVUxUOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNl OwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7Ci0JCQlma190cmlnZ2Vy LT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldGRlZmF1bHRfdXBkIik7 Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQg RksgYWN0aW9uIHR5cGU6ICVkIiwKLQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma191cGRf YWN0aW9uKTsKLQkJCWJyZWFrOworCQkvKiBUZW1wb3JhbCBmb3JlaWduIGtleXMgKi8KKwkJ c3dpdGNoIChma2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pCisJCXsKKwkJCWNhc2UgRktD T05TVFJfQUNUSU9OX05PQUNUSU9OOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBm a2NvbnN0cmFpbnQtPmRlZmVycmFibGU7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVk ID0gZmtjb25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25h bWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfbm9hY3Rpb25fdXBkIik7CisJCQkJYnJl YWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9SRVNUUklDVDoKKwkJCQlma190cmlnZ2Vy LT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0g ZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJ X0ZLZXlfcmVzdHJpY3RfdXBkIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FD VElPTl9DQVNDQURFOgorCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVMTDoKKwkJCWNh c2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBl cnJtc2coImFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMi KSkpOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5yZWNv Z25pemVkIEZLIGFjdGlvbiB0eXBlOiAlZCIsCisJCQkJCSAoaW50KSBma2NvbnN0cmFpbnQt PmZrX3VwZF9hY3Rpb24pOworCQkJCWJyZWFrOworCQl9CisJfQorCWVsc2UKKwl7CisJCXN3 aXRjaCAoZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uKQorCQl7CisJCQljYXNlIEZLQ09O U1RSX0FDVElPTl9OT0FDVElPTjoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmtj b25zdHJhaW50LT5kZWZlcnJhYmxlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9 IGZrY29uc3RyYWludC0+aW5pdGRlZmVycmVkOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1l ID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfbm9hY3Rpb25fdXBkIik7CisJCQkJYnJlYWs7 CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9SRVNUUklDVDoKKwkJCQlma190cmlnZ2VyLT5k ZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFs c2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktl eV9yZXN0cmljdF91cGQiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9O X0NBU0NBREU6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZr X3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNu YW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfY2FzY2FkZV91cGQiKTsKKwkJCQlicmVh azsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6CisJCQkJZmtfdHJpZ2dlci0+ ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZh bHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZL ZXlfc2V0bnVsbF91cGQiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9O X1NFVERFRkFVTFQ6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJ CWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1 bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQiKTsKKwkJ CQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBG SyBhY3Rpb24gdHlwZTogJWQiLAorCQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma191cGRf YWN0aW9uKTsKKwkJCQlicmVhazsKKwkJfQogCX0KIAogCXRyaWdBZGRyZXNzID0gQ3JlYXRl VHJpZ2dlcihma190cmlnZ2VyLCBOVUxMLCByZWZSZWxPaWQsCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3Mu YwppbmRleCAwM2Y2N2I2ODUwNi4uMmFkZWU2ZDVkYjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL25vZGVzL291dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3Mu YwpAQCAtNzk0LDcgKzc5NCw5IEBAIF9vdXRDb25zdHJhaW50KFN0cmluZ0luZm8gc3RyLCBj b25zdCBDb25zdHJhaW50ICpub2RlKQogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhzdHIs ICJGT1JFSUdOX0tFWSIpOwogCQkJV1JJVEVfTk9ERV9GSUVMRChwa3RhYmxlKTsKIAkJCVdS SVRFX05PREVfRklFTEQoZmtfYXR0cnMpOworCQkJV1JJVEVfTk9ERV9GSUVMRChma19wZXJp b2QpOwogCQkJV1JJVEVfTk9ERV9GSUVMRChwa19hdHRycyk7CisJCQlXUklURV9OT0RFX0ZJ RUxEKHBrX3BlcmlvZCk7CiAJCQlXUklURV9DSEFSX0ZJRUxEKGZrX21hdGNodHlwZSk7CiAJ CQlXUklURV9DSEFSX0ZJRUxEKGZrX3VwZF9hY3Rpb24pOwogCQkJV1JJVEVfQ0hBUl9GSUVM RChma19kZWxfYWN0aW9uKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRm dW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKaW5kZXggY2ZiNTUyZmRl NzQuLmJmZjgzNWI0YzE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVu Y3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwpAQCAtNDYyLDcgKzQ2 Miw5IEBAIF9yZWFkQ29uc3RyYWludCh2b2lkKQogCQljYXNlIENPTlNUUl9GT1JFSUdOOgog CQkJUkVBRF9OT0RFX0ZJRUxEKHBrdGFibGUpOwogCQkJUkVBRF9OT0RFX0ZJRUxEKGZrX2F0 dHJzKTsKKwkJCVJFQURfTk9ERV9GSUVMRChma19wZXJpb2QpOwogCQkJUkVBRF9OT0RFX0ZJ RUxEKHBrX2F0dHJzKTsKKwkJCVJFQURfTk9ERV9GSUVMRChwa19wZXJpb2QpOwogCQkJUkVB RF9DSEFSX0ZJRUxEKGZrX21hdGNodHlwZSk7CiAJCQlSRUFEX0NIQVJfRklFTEQoZmtfdXBk X2FjdGlvbik7CiAJCQlSRUFEX0NIQVJfRklFTEQoZmtfZGVsX2FjdGlvbik7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQppbmRleCAxMzBmN2ZjN2MzZi4uYTExODIwNDJiODYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpA QCAtNTIyLDEyICs1MjIsMTMgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2Vs ZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJCQkg U2V0UmVzZXRDbGF1c2UgRnVuY3Rpb25TZXRSZXNldENsYXVzZQogCiAldHlwZSA8bm9kZT4J VGFibGVFbGVtZW50IFR5cGVkVGFibGVFbGVtZW50IENvbnN0cmFpbnRFbGVtIFRhYmxlRnVu Y0VsZW1lbnQKLSV0eXBlIDxub2RlPgljb2x1bW5EZWYgY29sdW1uT3B0aW9ucworJXR5cGUg PG5vZGU+CWNvbHVtbkRlZiBjb2x1bW5PcHRpb25zIG9wdGlvbmFsUGVyaW9kTmFtZQogJXR5 cGUgPGRlZmVsdD4JZGVmX2VsZW0gcmVsb3B0aW9uX2VsZW0gb2xkX2FnZ3JfZWxlbSBvcGVy YXRvcl9kZWZfZWxlbQogJXR5cGUgPG5vZGU+CWRlZl9hcmcgY29sdW1uRWxlbSB3aGVyZV9j bGF1c2Ugd2hlcmVfb3JfY3VycmVudF9jbGF1c2UKIAkJCQlhX2V4cHIgYl9leHByIGNfZXhw ciBBZXhwckNvbnN0IGluZGlyZWN0aW9uX2VsIG9wdF9zbGljZV9ib3VuZAogCQkJCWNvbHVt bnJlZiBpbl9leHByIGhhdmluZ19jbGF1c2UgZnVuY190YWJsZSB4bWx0YWJsZSBhcnJheV9l eHByCiAJCQkJT3B0V2hlcmVDbGF1c2Ugb3BlcmF0b3JfZGVmX2FyZworJXR5cGUgPGxpc3Q+ CW9wdF9jb2x1bW5fYW5kX3BlcmlvZF9saXN0CiAldHlwZSA8bGlzdD4Jcm93c2Zyb21faXRl bSByb3dzZnJvbV9saXN0IG9wdF9jb2xfZGVmX2xpc3QKICV0eXBlIDxib29sZWFuPiBvcHRf b3JkaW5hbGl0eSBvcHRfd2l0aG91dF9vdmVybGFwcwogJXR5cGUgPGxpc3Q+CUV4Y2x1c2lv bkNvbnN0cmFpbnRMaXN0IEV4Y2x1c2lvbkNvbnN0cmFpbnRFbGVtCkBAIC03NDUsNyArNzQ2 LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5h bWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlPVkVSIE9WRVJMQVBTIE9WRVJM QVkgT1ZFUlJJRElORyBPV05FRCBPV05FUgogCiAJUEFSQUxMRUwgUEFSQU1FVEVSIFBBUlNF UiBQQVJUSUFMIFBBUlRJVElPTiBQQVNTSU5HIFBBU1NXT1JECi0JUExBQ0lORyBQTEFOUyBQ T0xJQ1kKKwlQRVJJT0QgUExBQ0lORyBQTEFOUyBQT0xJQ1kKIAlQT1NJVElPTiBQUkVDRURJ TkcgUFJFQ0lTSU9OIFBSRVNFUlZFIFBSRVBBUkUgUFJFUEFSRUQgUFJJTUFSWQogCVBSSU9S IFBSSVZJTEVHRVMgUFJPQ0VEVVJBTCBQUk9DRURVUkUgUFJPQ0VEVVJFUyBQUk9HUkFNIFBV QkxJQ0FUSU9OCiAKQEAgLTQyMjIsMjEgKzQyMjMsMjMgQEAgQ29uc3RyYWludEVsZW06CiAJ CQkJCQkJCSAgIE5VTEwsIHl5c2Nhbm5lcik7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJ CQl9Ci0JCQl8IEZPUkVJR04gS0VZICcoJyBjb2x1bW5MaXN0ICcpJyBSRUZFUkVOQ0VTIHF1 YWxpZmllZF9uYW1lCi0JCQkJb3B0X2NvbHVtbl9saXN0IGtleV9tYXRjaCBrZXlfYWN0aW9u cyBDb25zdHJhaW50QXR0cmlidXRlU3BlYworCQkJfCBGT1JFSUdOIEtFWSAnKCcgY29sdW1u TGlzdCBvcHRpb25hbFBlcmlvZE5hbWUgJyknIFJFRkVSRU5DRVMgcXVhbGlmaWVkX25hbWUK KwkJCQlvcHRfY29sdW1uX2FuZF9wZXJpb2RfbGlzdCBrZXlfbWF0Y2gga2V5X2FjdGlvbnMg Q29uc3RyYWludEF0dHJpYnV0ZVNwZWMKIAkJCQl7CiAJCQkJCUNvbnN0cmFpbnQgKm4gPSBt YWtlTm9kZShDb25zdHJhaW50KTsKIAogCQkJCQluLT5jb250eXBlID0gQ09OU1RSX0ZPUkVJ R047CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7Ci0JCQkJCW4tPnBrdGFibGUgPSAkNzsKKwkJ CQkJbi0+cGt0YWJsZSA9ICQ4OwogCQkJCQluLT5ma19hdHRycyA9ICQ0OwotCQkJCQluLT5w a19hdHRycyA9ICQ4OwotCQkJCQluLT5ma19tYXRjaHR5cGUgPSAkOTsKLQkJCQkJbi0+Zmtf dXBkX2FjdGlvbiA9ICgkMTApLT51cGRhdGVBY3Rpb24tPmFjdGlvbjsKLQkJCQkJbi0+Zmtf ZGVsX2FjdGlvbiA9ICgkMTApLT5kZWxldGVBY3Rpb24tPmFjdGlvbjsKLQkJCQkJbi0+Zmtf ZGVsX3NldF9jb2xzID0gKCQxMCktPmRlbGV0ZUFjdGlvbi0+Y29sczsKLQkJCQkJcHJvY2Vz c0NBU2JpdHMoJDExLCBAMTEsICJGT1JFSUdOIEtFWSIsCisJCQkJCW4tPmZrX3BlcmlvZCA9 ICQ1OworCQkJCQluLT5wa19hdHRycyA9IGxpbml0aWFsKCQ5KTsKKwkJCQkJbi0+cGtfcGVy aW9kID0gbHNlY29uZCgkOSk7CisJCQkJCW4tPmZrX21hdGNodHlwZSA9ICQxMDsKKwkJCQkJ bi0+ZmtfdXBkX2FjdGlvbiA9ICgkMTEpLT51cGRhdGVBY3Rpb24tPmFjdGlvbjsKKwkJCQkJ bi0+ZmtfZGVsX2FjdGlvbiA9ICgkMTEpLT5kZWxldGVBY3Rpb24tPmFjdGlvbjsKKwkJCQkJ bi0+ZmtfZGVsX3NldF9jb2xzID0gKCQxMSktPmRlbGV0ZUFjdGlvbi0+Y29sczsKKwkJCQkJ cHJvY2Vzc0NBU2JpdHMoJDEyLCBAMTIsICJGT1JFSUdOIEtFWSIsCiAJCQkJCQkJCSAgICZu LT5kZWZlcnJhYmxlLCAmbi0+aW5pdGRlZmVycmVkLAogCQkJCQkJCQkgICAmbi0+c2tpcF92 YWxpZGF0aW9uLCBOVUxMLAogCQkJCQkJCQkgICB5eXNjYW5uZXIpOwpAQCAtNDI2NCw2ICs0 MjY3LDE2IEBAIGNvbHVtbkxpc3Q6CiAJCQl8IGNvbHVtbkxpc3QgJywnIGNvbHVtbkVsZW0J CQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQogCQk7CiAKK29wdGlvbmFsUGVyaW9kTmFt ZToKKwkJCScsJyBQRVJJT0QgY29sdW1uRWxlbSB7ICQkID0gJDM7IH0KKwkJCXwgLypFTVBU WSovICAgICAgICAgICAgICAgeyAkJCA9IE5VTEw7IH0KKwk7CisKK29wdF9jb2x1bW5fYW5k X3BlcmlvZF9saXN0OgorCQkJJygnIGNvbHVtbkxpc3Qgb3B0aW9uYWxQZXJpb2ROYW1lICcp JwkJCXsgJCQgPSBsaXN0X21ha2UyKCQyLCAkMyk7IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJ CQl7ICQkID0gbGlzdF9tYWtlMihOSUwsIE5VTEwpOyB9CisJCTsKKwogY29sdW1uRWxlbTog Q29sSWQKIAkJCQl7CiAJCQkJCSQkID0gKE5vZGUgKikgbWFrZVN0cmluZygkMSk7CkBAIC0x NzYxOCw2ICsxNzYzMSw3IEBAIHJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IE9OTFkKIAkJCXwg T1IKIAkJCXwgT1JERVIKKwkJCXwgUEVSSU9ECiAJCQl8IFBMQUNJTkcKIAkJCXwgUFJJTUFS WQogCQkJfCBSRUZFUkVOQ0VTCkBAIC0xNzkyNyw2ICsxNzk0MSw3IEBAIGJhcmVfbGFiZWxf a2V5d29yZDoKIAkJCXwgUEFSVElUSU9OCiAJCQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dPUkQK KwkJCXwgUEVSSU9ECiAJCQl8IFBMQUNJTkcKIAkJCXwgUExBTlMKIAkJCXwgUE9MSUNZCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4IDcwOGQ5YzhlZmM5Li4wZGFk ZjJhY2IyZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJz LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKQEAgLTMxLDcg KzMxLDkgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxhdGlvbi5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfY29uc3RyYWludC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0 b3IuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3JhbmdlLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ190eXBlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVjbWRzLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgi CiAjaW5jbHVkZSAiZXhlY3V0b3Ivc3BpLmgiCkBAIC00OCw2ICs1MCw3IEBACiAjaW5jbHVk ZSAidXRpbHMvaW52YWwuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNs dWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3JhbmdldHlwZXMuaCIK ICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9ybHMuaCIKICNpbmNs dWRlICJ1dGlscy9ydWxldXRpbHMuaCIKQEAgLTExOCwxMiArMTIxLDE1IEBAIHR5cGVkZWYg c3RydWN0IFJJX0NvbnN0cmFpbnRJbmZvCiAJaW50MTYJCWNvbmZkZWxzZXRjb2xzW1JJX01B WF9OVU1LRVlTXTsgLyogYXR0bnVtcyBvZiBjb2xzIHRvIHNldCBvbgogCQkJCQkJCQkJCQkJ ICogZGVsZXRlICovCiAJY2hhcgkJY29uZm1hdGNodHlwZTsJLyogZm9yZWlnbiBrZXkncyBt YXRjaCB0eXBlICovCisJYm9vbAkJdGVtcG9yYWw7CQkvKiBpZiB0aGUgZm9yZWlnbiBrZXkg aXMgdGVtcG9yYWwgKi8KIAlpbnQJCQlua2V5czsJCQkvKiBudW1iZXIgb2Yga2V5IGNvbHVt bnMgKi8KIAlpbnQxNgkJcGtfYXR0bnVtc1tSSV9NQVhfTlVNS0VZU107IC8qIGF0dG51bXMg b2YgcmVmZXJlbmNlZCBjb2xzICovCiAJaW50MTYJCWZrX2F0dG51bXNbUklfTUFYX05VTUtF WVNdOyAvKiBhdHRudW1zIG9mIHJlZmVyZW5jaW5nIGNvbHMgKi8KIAlPaWQJCQlwZl9lcV9v cHJzW1JJX01BWF9OVU1LRVlTXTsgLyogZXF1YWxpdHkgb3BlcmF0b3JzIChQSyA9IEZLKSAq LwogCU9pZAkJCXBwX2VxX29wcnNbUklfTUFYX05VTUtFWVNdOyAvKiBlcXVhbGl0eSBvcGVy YXRvcnMgKFBLID0gUEspICovCiAJT2lkCQkJZmZfZXFfb3Byc1tSSV9NQVhfTlVNS0VZU107 IC8qIGVxdWFsaXR5IG9wZXJhdG9ycyAoRksgPSBGSykgKi8KKwlPaWQJCQlwZXJpb2RfY29u dGFpbmVkX2J5X29wZXI7CS8qIG9wZXJhdG9yIGZvciBQRVJPSUQgU1FMICovCisJT2lkCQkJ cGVyaW9kX3JlZmVyZW5jZWRfYWdnX3Byb2M7CS8qIHByb2MgZm9yIFBFUklPRCBTUUwgKi8K IAlkbGlzdF9ub2RlCXZhbGlkX2xpbms7CQkvKiBMaW5rIGluIGxpc3Qgb2YgdmFsaWQgZW50 cmllcyAqLwogfSBSSV9Db25zdHJhaW50SW5mbzsKIApAQCAtMjAwLDggKzIwNiw5IEBAIHN0 YXRpYyBpbnQJcmlfTnVsbENoZWNrKFR1cGxlRGVzYyB0dXBEZXNjLCBUdXBsZVRhYmxlU2xv dCAqc2xvdCwKIHN0YXRpYyB2b2lkIHJpX0J1aWxkUXVlcnlLZXkoUklfUXVlcnlLZXkgKmtl eSwKIAkJCQkJCQkgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAkJCQkJCQkg aW50MzIgY29uc3RyX3F1ZXJ5bm8pOwotc3RhdGljIGJvb2wgcmlfS2V5c0VxdWFsKFJlbGF0 aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFibGVTbG90ICpuZXdz bG90LAorc3RhdGljIGJvb2wgcmlfS2V5c1N0YWJsZShSZWxhdGlvbiByZWwsIFR1cGxlVGFi bGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwKIAkJCQkJCSBjb25z dCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLCBib29sIHJlbF9pc19wayk7CitzdGF0aWMg Ym9vbCByaV9SYW5nZUF0dHJpYnV0ZU5lZWRzQ2hlY2soYm9vbCByZWxfaXNfcGssIERhdHVt IG9sZHZhbHVlLCBEYXR1bSBuZXd2YWx1ZSk7CiBzdGF0aWMgYm9vbCByaV9BdHRyaWJ1dGVz RXF1YWwoT2lkIGVxX29wciwgT2lkIHR5cGVpZCwKIAkJCQkJCQkgICBEYXR1bSBvbGR2YWx1 ZSwgRGF0dW0gbmV3dmFsdWUpOwogCkBAIC0yMzEsNiArMjM4LDggQEAgc3RhdGljIHZvaWQg cmlfUmVwb3J0VmlvbGF0aW9uKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJ CQkJCQkJICAgUmVsYXRpb24gcGtfcmVsLCBSZWxhdGlvbiBma19yZWwsCiAJCQkJCQkJICAg VHVwbGVUYWJsZVNsb3QgKnZpb2xhdG9yc2xvdCwgVHVwbGVEZXNjIHR1cGRlc2MsCiAJCQkJ CQkJICAgaW50IHF1ZXJ5bm8sIGJvb2wgcGFydGdvbmUpIHBnX2F0dHJpYnV0ZV9ub3JldHVy bigpOworc3RhdGljIHZvaWQgbG9va3VwVFJJT3BlckFuZFByb2MoY29uc3QgUklfQ29uc3Ry YWludEluZm8gKnJpaW5mbywKKwkJCQkJCQkJIGNoYXIgKipvcG5hbWUsIGNoYXIgKiphZ2du YW1lKTsKIAogCiAvKgpAQCAtMzYxLDI2ICszNzAsNTggQEAgUklfRktleV9jaGVjayhUcmln Z2VyRGF0YSAqdHJpZ2RhdGEpCiAKIAkJLyogLS0tLS0tLS0tLQogCQkgKiBUaGUgcXVlcnkg c3RyaW5nIGJ1aWx0IGlzCi0JCSAqCVNFTEVDVCAxIEZST00gW09OTFldIDxwa3RhYmxlPiB4 IFdIRVJFIHBrYXR0MSA9ICQxIFtBTkQgLi4uXQotCQkgKgkJICAgRk9SIEtFWSBTSEFSRSBP RiB4CisJCSAqCVNFTEVDVCAxCisJCSAqCUZST00gW09OTFldIDxwa3RhYmxlPiB4IFdIRVJF IHBrYXR0MSA9ICQxIFtBTkQgLi4uXQorCQkgKglGT1IgS0VZIFNIQVJFIE9GIHgKIAkJICog VGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2YgdGhlCiAJ CSAqIGNvcnJlc3BvbmRpbmcgRksgYXR0cmlidXRlcy4KKwkJICoKKwkJICogQnV0IGZvciB0 ZW1wb3JhbCBGS3Mgd2UgbmVlZCB0byBtYWtlIHN1cmUKKwkJICogdGhlIEZLJ3MgcmFuZ2Ug aXMgY29tcGxldGVseSBjb3ZlcmVkLgorCQkgKiBTbyB3ZSB1c2UgdGhpcyBxdWVyeSBpbnN0 ZWFkOgorCQkgKiAgU0VMRUNUIDEKKwkJICoJRlJPTQkoCisJCSAqCQlTRUxFQ1QgcGtwZXJp b2RhdHQgQVMgcgorCQkgKgkJRlJPTSAgIFtPTkxZXSBwa3RhYmxlIHgKKwkJICoJCVdIRVJF ICBwa2F0dDEgPSAkMSBbQU5EIC4uLl0KKwkJICoJCUFORCAgICBwa3BlcmlvZGF0dCAmJiAk bgorCQkgKgkJRk9SIEtFWSBTSEFSRSBPRiB4CisJCSAqCSkgeDEKKwkJICogIEhBVklORyAk biA8QCByYW5nZV9hZ2coeDEucikKKwkJICogTm90ZSBpZiBGT1IgS0VZIFNIQVJFIGV2ZXIg YWxsb3dzIEdST1VQIEJZIGFuZCBIQVZJTkcKKwkJICogd2UgY2FuIG1ha2UgdGhpcyBhIGJp dCBzaW1wbGVyLgogCQkgKiAtLS0tLS0tLS0tCiAJCSAqLwogCQlpbml0U3RyaW5nSW5mbygm cXVlcnlidWYpOwogCQlwa19vbmx5ID0gcGtfcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVM S0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CiAJCQkiIiA6ICJPTkxZICI7CiAJCXF1b3RlUmVs YXRpb25OYW1lKHBrcmVsbmFtZSwgcGtfcmVsKTsKLQkJYXBwZW5kU3RyaW5nSW5mbygmcXVl cnlidWYsICJTRUxFQ1QgMSBGUk9NICVzJXMgeCIsCi0JCQkJCQkgcGtfb25seSwgcGtyZWxu YW1lKTsKKwkJaWYgKHJpaW5mby0+dGVtcG9yYWwpCisJCXsKKwkJCXF1b3RlT25lTmFtZShh dHRuYW1lLAorCQkJCQlSSUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbcmlp bmZvLT5ua2V5cyAtIDFdKSk7CisKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLAor CQkJCQkiU0VMRUNUIDEgRlJPTSAoU0VMRUNUICVzIEFTIHIgRlJPTSAlcyVzIHgiLAorCQkJ CQlhdHRuYW1lLCBwa19vbmx5LCBwa3JlbG5hbWUpOworCQl9CisJCWVsc2UKKwkJeworCQkJ YXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJTRUxFQ1QgMSBGUk9NICVzJXMgeCIsCisJ CQkJCQkJIHBrX29ubHksIHBrcmVsbmFtZSk7CisJCX0KIAkJcXVlcnlzZXAgPSAiV0hFUkUi OwogCQlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKIAkJewotCQkJ T2lkCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tp XSk7Ci0JCQlPaWQJCQlma190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5ma19h dHRudW1zW2ldKTsKKwkJCU9pZAlwa190eXBlOworCQkJT2lkCWZrX3R5cGU7CiAKKwkJCXBr X3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOwogCQkJ cXVvdGVPbmVOYW1lKGF0dG5hbWUsCiAJCQkJCQkgUklBdHROYW1lKHBrX3JlbCwgcmlpbmZv LT5wa19hdHRudW1zW2ldKSk7CisKKwkJCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCBy aWluZm8tPmZrX2F0dG51bXNbaV0pOworCiAJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIs IGkgKyAxKTsKIAkJCXJpX0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHF1ZXJ5c2VwLAogCQkJ CQkJCWF0dG5hbWUsIHBrX3R5cGUsCkBAIC0zOTAsNiArNDMxLDE1IEBAIFJJX0ZLZXlfY2hl Y2soVHJpZ2dlckRhdGEgKnRyaWdkYXRhKQogCQkJcXVlcnlvaWRzW2ldID0gZmtfdHlwZTsK IAkJfQogCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZxdWVyeWJ1ZiwgIiBGT1IgS0VZIFNI QVJFIE9GIHgiKTsKKwkJaWYgKHJpaW5mby0+dGVtcG9yYWwpCisJCXsKKwkJCWNoYXIgKm9w bmFtZTsKKwkJCWNoYXIgKmFnZ25hbWU7CisJCQlsb29rdXBUUklPcGVyQW5kUHJvYyhyaWlu Zm8sICZvcG5hbWUsICZhZ2duYW1lKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVm LCAiKSB4MSBIQVZJTkcgJCVkICVzICVzKHgxLnIpIiwgcmlpbmZvLT5ua2V5cywgb3BuYW1l LCBhZ2duYW1lKTsKKwkJCXBmcmVlKG9wbmFtZSk7CisJCQlwZnJlZShhZ2duYW1lKTsKKwkJ fQogCiAJCS8qIFByZXBhcmUgYW5kIHNhdmUgdGhlIHBsYW4gKi8KIAkJcXBsYW4gPSByaV9Q bGFuQ2hlY2socXVlcnlidWYuZGF0YSwgcmlpbmZvLT5ua2V5cywgcXVlcnlvaWRzLApAQCAt NDk3LDIxICs1NDcsNDkgQEAgcmlfQ2hlY2tfUGtfTWF0Y2goUmVsYXRpb24gcGtfcmVsLCBS ZWxhdGlvbiBma19yZWwsCiAJCSAqCQkgICBGT1IgS0VZIFNIQVJFIE9GIHgKIAkJICogVGhl IHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2YgdGhlCiAJCSAq IFBLIGF0dHJpYnV0ZXMgdGhlbXNlbHZlcy4KKwkJICogQnV0IGZvciB0ZW1wb3JhbCBGS3Mg d2UgbmVlZCB0byBtYWtlIHN1cmUKKwkJICogdGhlIEZLJ3MgcmFuZ2UgaXMgY29tcGxldGVs eSBjb3ZlcmVkLgorCQkgKiBTbyB3ZSB1c2UgdGhpcyBxdWVyeSBpbnN0ZWFkOgorCQkgKiAg U0VMRUNUIDEKKwkJICogIEZST00gICAgKAorCQkgKgkgIFNFTEVDVCBwa3BlcmlvZGF0dCBB UyByCisJCSAqCSAgRlJPTSAgIFtPTkxZXSBwa3RhYmxlIHgKKwkJICoJICBXSEVSRSAgcGth dHQxID0gJDEgW0FORCAuLi5dCisJCSAqCSAgQU5EICAgIHBrcGVyaW9kYXR0ICYmICRuCisJ CSAqCSAgRk9SIEtFWSBTSEFSRSBPRiB4CisJCSAqICApIHgxCisJCSAqICBIQVZJTkcgJG4g PEAgcmFuZ2VfYWdnKHgxLnIpCisJCSAqIE5vdGUgaWYgRk9SIEtFWSBTSEFSRSBldmVyIGFs bG93cyBHUk9VUCBCWSBhbmQgSEFWSU5HCisJCSAqIHdlIGNhbiBtYWtlIHRoaXMgYSBiaXQg c2ltcGxlci4KIAkJICogLS0tLS0tLS0tLQogCQkgKi8KIAkJaW5pdFN0cmluZ0luZm8oJnF1 ZXJ5YnVmKTsKIAkJcGtfb25seSA9IHBrX3JlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJ TkRfUEFSVElUSU9ORURfVEFCTEUgPwogCQkJIiIgOiAiT05MWSAiOwogCQlxdW90ZVJlbGF0 aW9uTmFtZShwa3JlbG5hbWUsIHBrX3JlbCk7Ci0JCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5 YnVmLCAiU0VMRUNUIDEgRlJPTSAlcyVzIHgiLAotCQkJCQkJIHBrX29ubHksIHBrcmVsbmFt ZSk7CisJCWlmIChyaWluZm8tPnRlbXBvcmFsKQorCQl7CisJCQlxdW90ZU9uZU5hbWUoYXR0 bmFtZSwgUklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5mby0+bmtl eXMgLSAxXSkpOworCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwKKwkJCQkJIlNF TEVDVCAxIEZST00gKFNFTEVDVCAlcyBBUyByIEZST00gJXMlcyB4IiwKKwkJCQkJYXR0bmFt ZSwgcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWFwcGVuZFN0 cmluZ0luZm8oJnF1ZXJ5YnVmLCAiU0VMRUNUIDEgRlJPTSAlcyVzIHgiLAorCQkJCQlwa19v bmx5LCBwa3JlbG5hbWUpOworCQl9CisKIAkJcXVlcnlzZXAgPSAiV0hFUkUiOwogCQlmb3Ig KGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKIAkJewotCQkJT2lkCQkJcGtf dHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQlP aWQJCXBrX3R5cGU7CiAKKwkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8t PnBrX2F0dG51bXNbaV0pOwogCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsCiAJCQkJCQkgUklB dHROYW1lKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKSk7CisKIAkJCXNwcmludGYo cGFyYW1uYW1lLCAiJCVkIiwgaSArIDEpOwogCQkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1 ZiwgcXVlcnlzZXAsCiAJCQkJCQkJYXR0bmFtZSwgcGtfdHlwZSwKQEAgLTUyMSw2ICs1OTks MTUgQEAgcmlfQ2hlY2tfUGtfTWF0Y2goUmVsYXRpb24gcGtfcmVsLCBSZWxhdGlvbiBma19y ZWwsCiAJCQlxdWVyeW9pZHNbaV0gPSBwa190eXBlOwogCQl9CiAJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoJnF1ZXJ5YnVmLCAiIEZPUiBLRVkgU0hBUkUgT0YgeCIpOworCQlpZiAocmlp bmZvLT50ZW1wb3JhbCkKKwkJeworCQkJY2hhciAqb3BuYW1lOworCQkJY2hhciAqYWdnbmFt ZTsKKwkJCWxvb2t1cFRSSU9wZXJBbmRQcm9jKHJpaW5mbywgJm9wbmFtZSwgJmFnZ25hbWUp OworCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICIpIHgxIEhBVklORyAkJWQgJXMg JXMoeDEucikiLCByaWluZm8tPm5rZXlzLCBvcG5hbWUsIGFnZ25hbWUpOworCQkJcGZyZWUo b3BuYW1lKTsKKwkJCXBmcmVlKGFnZ25hbWUpOworCQl9CiAKIAkJLyogUHJlcGFyZSBhbmQg c2F2ZSB0aGUgcGxhbiAqLwogCQlxcGxhbiA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRh LCByaWluZm8tPm5rZXlzLCBxdWVyeW9pZHMsCkBAIC02OTUsMTAgKzc4MiwxNiBAQCByaV9y ZXN0cmljdChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfbm9fYWN0aW9uKQogCQlx dWVyeXNlcCA9ICJXSEVSRSI7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5 czsgaSsrKQogCQl7Ci0JCQlPaWQJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlp bmZvLT5wa19hdHRudW1zW2ldKTsKLQkJCU9pZAkJCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtf cmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOwotCQkJT2lkCQkJcGtfY29sbCA9IFJJQXR0 Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKLQkJCU9pZAkJCWZr X2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7 CisJCQlPaWQJCXBrX3R5cGU7CisJCQlPaWQJCWZrX3R5cGU7CisJCQlPaWQJCXBrX2NvbGw7 CisJCQlPaWQJCWZrX2NvbGw7CisKKwkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCBy aWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJcGtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKHBr X3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKworCQkJZmtfdHlwZSA9IFJJQXR0VHlw ZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCQlma19jb2xsID0gUklBdHRD b2xsYXRpb24oZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOwogCiAJCQlxdW90ZU9u ZU5hbWUoYXR0bmFtZSwKIAkJCQkJCSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0 dG51bXNbaV0pKTsKQEAgLTEyMTMsNiArMTMwNiwxMjYgQEAgcmlfc2V0KFRyaWdnZXJEYXRh ICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50IHRna2luZCkKIAl9CiB9CiAKKy8q IC0tLS0tLS0tLS0KKyAqIFRSSV9GS2V5X2NoZWNrX2lucyAtCisgKgorICoJQ2hlY2sgdGVt cG9yYWwgZm9yZWlnbiBrZXkgZXhpc3RlbmNlIGF0IGluc2VydCBldmVudCBvbiBGSyB0YWJs ZS4KKyAqIC0tLS0tLS0tLS0KKyAqLworRGF0dW0KK1RSSV9GS2V5X2NoZWNrX2lucyhQR19G VU5DVElPTl9BUkdTKQoreworCS8qCisJICogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQg dHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4KKwkgKi8KKwlyaV9D aGVja1RyaWdnZXIoZmNpbmZvLCAiUklfRktleV9jaGVja19pbnMiLCBSSV9UUklHVFlQRV9J TlNFUlQpOworCisJLyoKKwkgKiBTaGFyZSBjb2RlIHdpdGggVVBEQVRFIGNhc2UuCisJICov CisJcmV0dXJuIFJJX0ZLZXlfY2hlY2soKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4 dCk7Cit9CisKKworLyogLS0tLS0tLS0tLQorICogVFJJX0ZLZXlfY2hlY2tfdXBkIC0KKyAq CisgKglDaGVjayB0ZW1wb3JhbCBmb3JlaWduIGtleSBleGlzdGVuY2UgYXQgdXBkYXRlIGV2 ZW50IG9uIEZLIHRhYmxlLgorICogLS0tLS0tLS0tLQorICovCitEYXR1bQorVFJJX0ZLZXlf Y2hlY2tfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyoKKwkgKiBDaGVjayB0aGF0IHRo aXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50 LgorCSAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJSSV9GS2V5X2NoZWNrX3VwZCIs IFJJX1RSSUdUWVBFX1VQREFURSk7CisKKwkvKgorCSAqIFNoYXJlIGNvZGUgd2l0aCBJTlNF UlQgY2FzZS4KKwkgKi8KKwlyZXR1cm4gUklfRktleV9jaGVjaygoVHJpZ2dlckRhdGEgKikg ZmNpbmZvLT5jb250ZXh0KTsKK30KKworCisvKiAtLS0tLS0tLS0tCisgKiBUUklfRktleV9u b2FjdGlvbl9kZWwgLQorICoKKyAqCUdpdmUgYW4gZXJyb3IgYW5kIHJvbGwgYmFjayB0aGUg Y3VycmVudCB0cmFuc2FjdGlvbiBpZiB0aGUKKyAqCWRlbGV0ZSBoYXMgcmVzdWx0ZWQgaW4g YSB2aW9sYXRpb24gb2YgdGhlIGdpdmVuIHRlbXBvcmFsCisgKglyZWZlcmVudGlhbCBpbnRl Z3JpdHkgY29uc3RyYWludC4KKyAqIC0tLS0tLS0tLS0KKyAqLworRGF0dW0KK1RSSV9GS2V5 X25vYWN0aW9uX2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCS8qCisJICogQ2hlY2sgdGhh dCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBl dmVudC4KKwkgKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfbm9hY3Rp b25fZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCS8qCisJICogU2hhcmUgY29kZSB3 aXRoIFJFU1RSSUNUL1VQREFURSBjYXNlcy4KKwkgKi8KKwlyZXR1cm4gcmlfcmVzdHJpY3Qo KFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgdHJ1ZSk7Cit9CisKKy8qCisgKiBU UklfRktleV9yZXN0cmljdF9kZWwgLQorICoKKyAqIFJlc3RyaWN0IGRlbGV0ZSBmcm9tIFBL IHRhYmxlIHRvIHJvd3MgdW5yZWZlcmVuY2VkIGJ5IGZvcmVpZ24ga2V5LgorICoKKyAqIFRo ZSBTUUwgc3RhbmRhcmQgaW50ZW5kcyB0aGF0IHRoaXMgcmVmZXJlbnRpYWwgYWN0aW9uIG9j Y3VyIGV4YWN0bHkgd2hlbgorICogdGhlIGRlbGV0ZSBpcyBwZXJmb3JtZWQsIHJhdGhlciB0 aGFuIGFmdGVyLiAgVGhpcyBhcHBlYXJzIHRvIGJlCisgKiB0aGUgb25seSBkaWZmZXJlbmNl IGJldHdlZW4gIk5PIEFDVElPTiIgYW5kICJSRVNUUklDVCIuICBJbiBQb3N0Z3JlcworICog d2Ugc3RpbGwgaW1wbGVtZW50IHRoaXMgYXMgYW4gQUZURVIgdHJpZ2dlciwgYnV0IGl0J3Mg bm9uLWRlZmVycmFibGUuCisgKi8KK0RhdHVtCitUUklfRktleV9yZXN0cmljdF9kZWwoUEdf RlVOQ1RJT05fQVJHUykKK3sKKwkvKiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmln Z2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50LiAqLworCXJpX0NoZWNrVHJp Z2dlcihmY2luZm8sICJUUklfRktleV9yZXN0cmljdF9kZWwiLCBSSV9UUklHVFlQRV9ERUxF VEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIE5PIEFDVElPTi9VUERBVEUgY2FzZXMuICov CisJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQs IGZhbHNlKTsKK30KKworLyoKKyAqIFRSSV9GS2V5X25vYWN0aW9uX3VwZCAtCisgKgorICog R2l2ZSBhbiBlcnJvciBhbmQgcm9sbCBiYWNrIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIGlm IHRoZQorICogdXBkYXRlIGhhcyByZXN1bHRlZCBpbiBhIHZpb2xhdGlvbiBvZiB0aGUgZ2l2 ZW4gcmVmZXJlbnRpYWwKKyAqIGludGVncml0eSBjb25zdHJhaW50LgorICovCitEYXR1bQor VFJJX0ZLZXlfbm9hY3Rpb25fdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sg dGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFu ZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfbm9hY3Rp b25fdXBkIiwgUklfVFJJR1RZUEVfVVBEQVRFKTsKKworCS8qIFNoYXJlIGNvZGUgd2l0aCBS RVNUUklDVC9ERUxFVEUgY2FzZXMuICovCisJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2Vy RGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIHRydWUpOworfQorCisvKgorICogVFJJX0ZLZXlf cmVzdHJpY3RfdXBkIC0KKyAqCisgKiBSZXN0cmljdCB1cGRhdGUgb2YgUEsgdG8gcm93cyB1 bnJlZmVyZW5jZWQgYnkgZm9yZWlnbiBrZXkuCisgKgorICogVGhlIFNRTCBzdGFuZGFyZCBp bnRlbmRzIHRoYXQgdGhpcyByZWZlcmVudGlhbCBhY3Rpb24gb2NjdXIgZXhhY3RseSB3aGVu CisgKiB0aGUgdXBkYXRlIGlzIHBlcmZvcm1lZCwgcmF0aGVyIHRoYW4gYWZ0ZXIuICBUaGlz IGFwcGVhcnMgdG8gYmUKKyAqIHRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiAiTk8gQUNU SU9OIiBhbmQgIlJFU1RSSUNUIi4gIEluIFBvc3RncmVzCisgKiB3ZSBzdGlsbCBpbXBsZW1l bnQgdGhpcyBhcyBhbiBBRlRFUiB0cmlnZ2VyLCBidXQgaXQncyBub24tZGVmZXJyYWJsZS4K KyAqLworRGF0dW0KK1RSSV9GS2V5X3Jlc3RyaWN0X3VwZChQR19GVU5DVElPTl9BUkdTKQor eworCS8qIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUg cmlnaHQgdGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRS SV9GS2V5X3Jlc3RyaWN0X3VwZCIsIFJJX1RSSUdUWVBFX1VQREFURSk7CisKKwkvKiBTaGFy ZSBjb2RlIHdpdGggTk8gQUNUSU9OL0RFTEVURSBjYXNlcy4gKi8KKwlyZXR1cm4gcmlfcmVz dHJpY3QoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgZmFsc2UpOworfQogCiAv KgogICogUklfRktleV9wa191cGRfY2hlY2tfcmVxdWlyZWQgLQpAQCAtMTI0MSw3ICsxNDU0 LDcgQEAgUklfRktleV9wa191cGRfY2hlY2tfcmVxdWlyZWQoVHJpZ2dlciAqdHJpZ2dlciwg UmVsYXRpb24gcGtfcmVsLAogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBJZiBhbGwgb2xkIGFu ZCBuZXcga2V5IHZhbHVlcyBhcmUgZXF1YWwsIG5vIGNoZWNrIGlzIG5lZWRlZCAqLwotCWlm IChuZXdzbG90ICYmIHJpX0tleXNFcXVhbChwa19yZWwsIG9sZHNsb3QsIG5ld3Nsb3QsIHJp aW5mbywgdHJ1ZSkpCisJaWYgKG5ld3Nsb3QgJiYgcmlfS2V5c1N0YWJsZShwa19yZWwsIG9s ZHNsb3QsIG5ld3Nsb3QsIHJpaW5mbywgdHJ1ZSkpCiAJCXJldHVybiBmYWxzZTsKIAogCS8q IEVsc2Ugd2UgbmVlZCB0byBmaXJlIHRoZSB0cmlnZ2VyLiAqLwpAQCAtMTM0MCw3ICsxNTUz LDcgQEAgUklfRktleV9ma191cGRfY2hlY2tfcmVxdWlyZWQoVHJpZ2dlciAqdHJpZ2dlciwg UmVsYXRpb24gZmtfcmVsLAogCQlyZXR1cm4gdHJ1ZTsKIAogCS8qIElmIGFsbCBvbGQgYW5k IG5ldyBrZXkgdmFsdWVzIGFyZSBlcXVhbCwgbm8gY2hlY2sgaXMgbmVlZGVkICovCi0JaWYg KHJpX0tleXNFcXVhbChma19yZWwsIG9sZHNsb3QsIG5ld3Nsb3QsIHJpaW5mbywgZmFsc2Up KQorCWlmIChyaV9LZXlzU3RhYmxlKGZrX3JlbCwgb2xkc2xvdCwgbmV3c2xvdCwgcmlpbmZv LCBmYWxzZSkpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qIEVsc2Ugd2UgbmVlZCB0byBmaXJl IHRoZSB0cmlnZ2VyLiAqLwpAQCAtMTQ4OCwxNSArMTcwMSwxNyBAQCBSSV9Jbml0aWFsX0No ZWNrKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9uIGZrX3JlbCwgUmVsYXRpb24gcGtfcmVs KQogCXNlcCA9ICIoIjsKIAlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkr KykKIAl7Ci0JCU9pZAkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBr X2F0dG51bXNbaV0pOwotCQlPaWQJCQlma190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlp bmZvLT5ma19hdHRudW1zW2ldKTsKLQkJT2lkCQkJcGtfY29sbCA9IFJJQXR0Q29sbGF0aW9u KHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKLQkJT2lkCQkJZmtfY29sbCA9IFJJ QXR0Q29sbGF0aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJT2lkCXBr X3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQlP aWQJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7 CisJCU9pZAlwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBrX2F0 dG51bXNbaV0pOworCQlPaWQJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZrX3JlbCwgcmlp bmZvLT5ma19hdHRudW1zW2ldKTsKIAogCQlxdW90ZU9uZU5hbWUocGthdHRuYW1lICsgMywK IAkJCQkJIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSkpOworCiAJ CXF1b3RlT25lTmFtZShma2F0dG5hbWUgKyAzLAogCQkJCQkgUklBdHROYW1lKGZrX3JlbCwg cmlpbmZvLT5ma19hdHRudW1zW2ldKSk7CisKIAkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1 Ziwgc2VwLAogCQkJCQkJcGthdHRuYW1lLCBwa190eXBlLAogCQkJCQkJcmlpbmZvLT5wZl9l cV9vcHJzW2ldLApAQCAtMjEzNyw2ICsyMzUyLDcgQEAgcmlfTG9hZENvbnN0cmFpbnRJbmZv KE9pZCBjb25zdHJhaW50T2lkKQogCXJpaW5mbyA9IChSSV9Db25zdHJhaW50SW5mbyAqKSBo YXNoX3NlYXJjaChyaV9jb25zdHJhaW50X2NhY2hlLAogCQkJCQkJCQkJCQkgICAmY29uc3Ry YWludE9pZCwKIAkJCQkJCQkJCQkJICAgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwogCWlmICgh Zm91bmQpCiAJCXJpaW5mby0+dmFsaWQgPSBmYWxzZTsKIAllbHNlIGlmIChyaWluZm8tPnZh bGlkKQpAQCAtMjE3MSw2ICsyMzg3LDcgQEAgcmlfTG9hZENvbnN0cmFpbnRJbmZvKE9pZCBj b25zdHJhaW50T2lkKQogCXJpaW5mby0+Y29uZnVwZHR5cGUgPSBjb25Gb3JtLT5jb25mdXBk dHlwZTsKIAlyaWluZm8tPmNvbmZkZWx0eXBlID0gY29uRm9ybS0+Y29uZmRlbHR5cGU7CiAJ cmlpbmZvLT5jb25mbWF0Y2h0eXBlID0gY29uRm9ybS0+Y29uZm1hdGNodHlwZTsKKwlyaWlu Zm8tPnRlbXBvcmFsID0gY29uRm9ybS0+Y29ud2l0aG91dG92ZXJsYXBzOwogCiAJRGVjb25z dHJ1Y3RGa0NvbnN0cmFpbnRSb3codHVwLAogCQkJCQkJCSAgICZyaWluZm8tPm5rZXlzLApA QCAtMjE4Miw2ICsyMzk5LDE4IEBAIHJpX0xvYWRDb25zdHJhaW50SW5mbyhPaWQgY29uc3Ry YWludE9pZCkKIAkJCQkJCQkgICAmcmlpbmZvLT5uZGVsc2V0Y29scywKIAkJCQkJCQkgICBy aWluZm8tPmNvbmZkZWxzZXRjb2xzKTsKIAorCS8qCisJICogRm9yIHRlbXBvcmFsIEZLcywg Z2V0IHRoZSBvcGVyYXRvciBhbmQgYWdncmVnYXRlIGZ1bmN0aW9uIHdlIG5lZWQuCisJICog V2UgYXNrIHRoZSBvcGNsYXNzIG9mIHRoZSBQSyBlbGVtZW50IGZvciB0aGlzLgorCSAqIFRo aXMgYWxsIGdldHMgY2FjaGVkIChhcyBkb2VzIHRoZSBnZW5lcmF0ZWQgcGxhbiksCisJICog c28gdGhlcmUncyBubyBwZXJmb3JtYW5jZSBpc3N1ZS4KKwkgKi8KKwlpZiAocmlpbmZvLT50 ZW1wb3JhbCkKKwl7CisJCU9pZAlvcGNsYXNzID0gZ2V0X2luZGV4X2NvbHVtbl9vcGNsYXNz KGNvbkZvcm0tPmNvbmluZGlkLCByaWluZm8tPm5rZXlzKTsKKwkJRmluZEZLUGVyaW9kT3Bl cnNBbmRQcm9jcyhvcGNsYXNzLCAmcmlpbmZvLT5wZXJpb2RfY29udGFpbmVkX2J5X29wZXIs ICZyaWluZm8tPnBlcmlvZF9yZWZlcmVuY2VkX2FnZ19wcm9jKTsKKwl9CisKIAlSZWxlYXNl U3lzQ2FjaGUodHVwKTsKIAogCS8qCkBAIC0yNzkxLDkgKzMwMjAsMTIgQEAgcmlfSGFzaFBy ZXBhcmVkUGxhbihSSV9RdWVyeUtleSAqa2V5LCBTUElQbGFuUHRyIHBsYW4pCiAKIAogLyoK LSAqIHJpX0tleXNFcXVhbCAtCisgKiByaV9LZXlzU3RhYmxlIC0KICAqCi0gKiBDaGVjayBp ZiBhbGwga2V5IHZhbHVlcyBpbiBPTEQgYW5kIE5FVyBhcmUgZXF1YWwuCisgKiBDaGVjayBp ZiBhbGwga2V5IHZhbHVlcyBpbiBPTEQgYW5kIE5FVyBhcmUgImVxdWl2YWxlbnQiOgorICog Rm9yIG5vcm1hbCBGS3Mgd2UgY2hlY2sgZm9yIGVxdWFsaXR5LgorICogRm9yIHRlbXBvcmFs IEZLcyB3ZSBjaGVjayB0aGF0IHRoZSBQSyBzaWRlIGlzIGEgc3VwZXJzZXQgb2YgaXRzIG9s ZCB2YWx1ZSwKKyAqIG9yIHRoZSBGSyBzaWRlIGlzIGEgc3Vic2V0LgogICoKICAqIE5vdGU6 IGF0IHNvbWUgcG9pbnQgd2UgbWlnaHQgd2lzaCB0byByZWRlZmluZSB0aGlzIGFzIGNoZWNr aW5nIGZvcgogICogIklTIE5PVCBESVNUSU5DVCIgcmF0aGVyIHRoYW4gIj0iLCB0aGF0IGlz LCBhbGxvdyB0d28gbnVsbHMgdG8gYmUKQEAgLTI4MDEsNyArMzAzMyw3IEBAIHJpX0hhc2hQ cmVwYXJlZFBsYW4oUklfUXVlcnlLZXkgKmtleSwgU1BJUGxhblB0ciBwbGFuKQogICogcHJl dmlvdXNseSBmb3VuZCBhdCBsZWFzdCBvbmUgb2YgdGhlIHJvd3MgdG8gY29udGFpbiBubyBu dWxscy4KICAqLwogc3RhdGljIGJvb2wKLXJpX0tleXNFcXVhbChSZWxhdGlvbiByZWwsIFR1 cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwKK3JpX0tl eXNTdGFibGUoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwgVHVwbGVU YWJsZVNsb3QgKm5ld3Nsb3QsCiAJCQkgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5m bywgYm9vbCByZWxfaXNfcGspCiB7CiAJY29uc3QgaW50MTYgKmF0dG51bXM7CkBAIC0yODM0 LDM1ICszMDY2LDg2IEBAIHJpX0tleXNFcXVhbChSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVT bG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwKIAogCQlpZiAocmVsX2lz X3BrKQogCQl7Ci0JCQkvKgotCQkJICogSWYgd2UgYXJlIGxvb2tpbmcgYXQgdGhlIFBLIHRh YmxlLCB0aGVuIGRvIGEgYnl0ZXdpc2UKLQkJCSAqIGNvbXBhcmlzb24uICBXZSBtdXN0IHBy b3BhZ2F0ZSBQSyBjaGFuZ2VzIGlmIHRoZSB2YWx1ZSBpcwotCQkJICogY2hhbmdlZCB0byBv bmUgdGhhdCAibG9va3MiIGRpZmZlcmVudCBidXQgd291bGQgY29tcGFyZSBhcwotCQkJICog ZXF1YWwgdXNpbmcgdGhlIGVxdWFsaXR5IG9wZXJhdG9yLiAgVGhpcyBvbmx5IG1ha2VzIGEK LQkJCSAqIGRpZmZlcmVuY2UgZm9yIE9OIFVQREFURSBDQVNDQURFLCBidXQgZm9yIGNvbnNp c3RlbmN5IHdlIHRyZWF0Ci0JCQkgKiBhbGwgY2hhbmdlcyB0byB0aGUgUEsgdGhlIHNhbWUu Ci0JCQkgKi8KLQkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIob2xk c2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvciwgYXR0bnVtc1tpXSAtIDEpOworCQkJaWYgKHJp aW5mby0+dGVtcG9yYWwgJiYgaSA9PSByaWluZm8tPm5rZXlzIC0gMSkKKwkJCXsKKwkJCQlp ZiAocmlfUmFuZ2VBdHRyaWJ1dGVOZWVkc0NoZWNrKHRydWUsIG9sZHZhbHVlLCBuZXd2YWx1 ZSkpCisJCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQkvKgor CQkJCSAqIElmIHdlIGFyZSBsb29raW5nIGF0IHRoZSBQSyB0YWJsZSwgdGhlbiBkbyBhIGJ5 dGV3aXNlCisJCQkJICogY29tcGFyaXNvbi4gIFdlIG11c3QgcHJvcGFnYXRlIFBLIGNoYW5n ZXMgaWYgdGhlIHZhbHVlIGlzCisJCQkJICogY2hhbmdlZCB0byBvbmUgdGhhdCAibG9va3Mi IGRpZmZlcmVudCBidXQgd291bGQgY29tcGFyZSBhcworCQkJCSAqIGVxdWFsIHVzaW5nIHRo ZSBlcXVhbGl0eSBvcGVyYXRvci4gIFRoaXMgb25seSBtYWtlcyBhCisJCQkJICogZGlmZmVy ZW5jZSBmb3IgT04gVVBEQVRFIENBU0NBREUsIGJ1dCBmb3IgY29uc2lzdGVuY3kgd2UgdHJl YXQKKwkJCQkgKiBhbGwgY2hhbmdlcyB0byB0aGUgUEsgdGhlIHNhbWUuCisJCQkJICovCisJ CQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNjQXR0cihvbGRzbG90LT50dHNf dHVwbGVEZXNjcmlwdG9yLCBhdHRudW1zW2ldIC0gMSk7CiAKLQkJCWlmICghZGF0dW1faW1h Z2VfZXEob2xkdmFsdWUsIG5ld3ZhbHVlLCBhdHQtPmF0dGJ5dmFsLCBhdHQtPmF0dGxlbikp Ci0JCQkJcmV0dXJuIGZhbHNlOworCQkJCWlmICghZGF0dW1faW1hZ2VfZXEob2xkdmFsdWUs IG5ld3ZhbHVlLCBhdHQtPmF0dGJ5dmFsLCBhdHQtPmF0dGxlbikpCisJCQkJCXJldHVybiBm YWxzZTsKKwkJCX0KIAkJfQogCQllbHNlCiAJCXsKLQkJCS8qCi0JCQkgKiBGb3IgdGhlIEZL IHRhYmxlLCBjb21wYXJlIHdpdGggdGhlIGFwcHJvcHJpYXRlIGVxdWFsaXR5Ci0JCQkgKiBv cGVyYXRvci4gIENoYW5nZXMgdGhhdCBjb21wYXJlIGVxdWFsIHdpbGwgc3RpbGwgc2F0aXNm eSB0aGUKLQkJCSAqIGNvbnN0cmFpbnQgYWZ0ZXIgdGhlIHVwZGF0ZS4KLQkJCSAqLwotCQkJ aWYgKCFyaV9BdHRyaWJ1dGVzRXF1YWwocmlpbmZvLT5mZl9lcV9vcHJzW2ldLCBSSUF0dFR5 cGUocmVsLCBhdHRudW1zW2ldKSwKLQkJCQkJCQkJCW9sZHZhbHVlLCBuZXd2YWx1ZSkpCi0J CQkJcmV0dXJuIGZhbHNlOworCQkJaWYgKHJpaW5mby0+dGVtcG9yYWwgJiYgaSA9PSByaWlu Zm8tPm5rZXlzIC0gMSkKKwkJCXsKKwkJCQlpZiAocmlfUmFuZ2VBdHRyaWJ1dGVOZWVkc0No ZWNrKGZhbHNlLCBvbGR2YWx1ZSwgbmV3dmFsdWUpKQorCQkJCQlyZXR1cm4gZmFsc2U7CisJ CQl9CisJCQllbHNlCisJCQl7CisJCQkJLyoKKwkJCQkgKiBGb3IgdGhlIEZLIHRhYmxlLCBj b21wYXJlIHdpdGggdGhlIGFwcHJvcHJpYXRlIGVxdWFsaXR5CisJCQkJICogb3BlcmF0b3Iu ICBDaGFuZ2VzIHRoYXQgY29tcGFyZSBlcXVhbCB3aWxsIHN0aWxsIHNhdGlzZnkgdGhlCisJ CQkJICogY29uc3RyYWludCBhZnRlciB0aGUgdXBkYXRlLgorCQkJCSAqLworCQkJCWlmICgh cmlfQXR0cmlidXRlc0VxdWFsKHJpaW5mby0+ZmZfZXFfb3Byc1tpXSwgUklBdHRUeXBlKHJl bCwgYXR0bnVtc1tpXSksCisJCQkJCQkJCQkJb2xkdmFsdWUsIG5ld3ZhbHVlKSkKKwkJCQkJ cmV0dXJuIGZhbHNlOworCQkJfQogCQl9CiAJfQogCiAJcmV0dXJuIHRydWU7CiB9CiAKKy8q CisgKiByaV9SYW5nZUF0dHJpYnV0ZU5lZWRzQ2hlY2sgLQorICoKKyAqIENvbXBhcmUgb2xk IGFuZCBuZXcgdmFsdWVzLCBhbmQgcmV0dXJuIHRydWUgaWYgd2UgbmVlZCB0byBjaGVjayB0 aGUgRksuCisgKgorICogTkI6IHdlIGhhdmUgYWxyZWFkeSBjaGVja2VkIHRoYXQgbmVpdGhl ciB2YWx1ZSBpcyBudWxsLgorICovCitzdGF0aWMgYm9vbAorcmlfUmFuZ2VBdHRyaWJ1dGVO ZWVkc0NoZWNrKGJvb2wgcmVsX2lzX3BrLCBEYXR1bSBvbGR2YWx1ZSwgRGF0dW0gbmV3dmFs dWUpCit7CisJUmFuZ2VUeXBlICpvbGRyYW5nZSwgKm5ld3JhbmdlOworCU9pZCBvbGRybmd0 eXBlLCBuZXdybmd0eXBlOworCVR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZTsKKworCW9sZHJh bmdlID0gRGF0dW1HZXRSYW5nZVR5cGVQKG9sZHZhbHVlKTsKKwluZXdyYW5nZSA9IERhdHVt R2V0UmFuZ2VUeXBlUChuZXd2YWx1ZSk7CisJb2xkcm5ndHlwZSA9IFJhbmdlVHlwZUdldE9p ZChvbGRyYW5nZSk7CisJbmV3cm5ndHlwZSA9IFJhbmdlVHlwZUdldE9pZChuZXdyYW5nZSk7 CisKKwlpZiAob2xkcm5ndHlwZSAhPSBuZXdybmd0eXBlKQorCQllbG9nKEVSUk9SLCAicmFu Z2UgdHlwZXMgYXJlIGluY29uc2lzdGVudCIpOworCisJdHlwY2FjaGUgPSBsb29rdXBfdHlw ZV9jYWNoZShvbGRybmd0eXBlLCBUWVBFQ0FDSEVfUkFOR0VfSU5GTyk7CisJaWYgKHR5cGNh Y2hlLT5ybmdlbGVtdHlwZSA9PSBOVUxMKQorCQllbG9nKEVSUk9SLCAidHlwZSAldSBpcyBu b3QgYSByYW5nZSB0eXBlIiwgb2xkcm5ndHlwZSk7CisKKwlpZiAocmVsX2lzX3BrKQorCQkv KiBJZiB0aGUgUEsncyByYW5nZSBzaHJ1bmssIGEgY29uZmxpY3QgaXMgcG9zc2libGUuICov CisJCXJldHVybiAhcmFuZ2VfZXFfaW50ZXJuYWwodHlwY2FjaGUsIG9sZHJhbmdlLCBuZXdy YW5nZSkgJiYKKwkJCSFyYW5nZV9jb250YWluc19pbnRlcm5hbCh0eXBjYWNoZSwgbmV3cmFu Z2UsIG9sZHJhbmdlKTsKKwllbHNlCisJCS8qIElmIHRoZSBGSydzIHJhbmdlIGdyZXcsIGEg Y29uZmxpY3QgaXMgcG9zc2libGUuICovCisJCXJldHVybiAhcmFuZ2VfZXFfaW50ZXJuYWwo dHlwY2FjaGUsIG9sZHJhbmdlLCBuZXdyYW5nZSkgJiYKKwkJCXJhbmdlX2NvbnRhaW5zX2lu dGVybmFsKHR5cGNhY2hlLCBuZXdyYW5nZSwgb2xkcmFuZ2UpOworfQogCiAvKgogICogcmlf QXR0cmlidXRlc0VxdWFsIC0KQEAgLTMwMjEsMTIgKzMzMDQsNDkgQEAgUklfRktleV90cmln Z2VyX3R5cGUoT2lkIHRnZm9pZCkKIAkJY2FzZSBGX1JJX0ZLRVlfU0VUREVGQVVMVF9VUEQ6 CiAJCWNhc2UgRl9SSV9GS0VZX05PQUNUSU9OX0RFTDoKIAkJY2FzZSBGX1JJX0ZLRVlfTk9B Q1RJT05fVVBEOgorCQljYXNlIEZfVFJJX0ZLRVlfUkVTVFJJQ1RfREVMOgorCQljYXNlIEZf VFJJX0ZLRVlfUkVTVFJJQ1RfVVBEOgorCQljYXNlIEZfVFJJX0ZLRVlfTk9BQ1RJT05fREVM OgorCQljYXNlIEZfVFJJX0ZLRVlfTk9BQ1RJT05fVVBEOgogCQkJcmV0dXJuIFJJX1RSSUdH RVJfUEs7CiAKIAkJY2FzZSBGX1JJX0ZLRVlfQ0hFQ0tfSU5TOgogCQljYXNlIEZfUklfRktF WV9DSEVDS19VUEQ6CisJCWNhc2UgRl9UUklfRktFWV9DSEVDS19JTlM6CisJCWNhc2UgRl9U UklfRktFWV9DSEVDS19VUEQ6CiAJCQlyZXR1cm4gUklfVFJJR0dFUl9GSzsKIAl9CiAKIAly ZXR1cm4gUklfVFJJR0dFUl9OT05FOwogfQorCisvKgorICogbG9va3VwVFJJT3BlckFuZFBy b2MgLQorICoKKyAqIEdldHMgdGhlIG5hbWVzIG9mIHRoZSBvcGVyYXRvciBhbmQgYWdncmVn YXRlIGZ1bmN0aW9uCisgKiB1c2VkIHRvIGJ1aWxkIHRoZSBTUUwgZm9yIFRSSSBjb25zdHJh aW50cy4KKyAqIFJhaXNlcyBhbiBlcnJvciBpZiBlaXRoZXIgaXMgbm90IGZvdW5kLgorICov CitzdGF0aWMgdm9pZAorbG9va3VwVFJJT3BlckFuZFByb2MoY29uc3QgUklfQ29uc3RyYWlu dEluZm8gKnJpaW5mbywgY2hhciAqKm9wbmFtZSwgY2hhciAqKmFnZ25hbWUpCit7CisJT2lk CW9pZDsKKworCW9pZCA9IHJpaW5mby0+cGVyaW9kX2NvbnRhaW5lZF9ieV9vcGVyOworCWlm ICghT2lkSXNWYWxpZChvaWQpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJIGVycm1zZygibm8gQ29udGFpbmVkQnkg b3BlcmF0b3IgZm9yIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgXCIlc1wiIiwKKwkJCQkJCU5h bWVTdHIocmlpbmZvLT5jb25uYW1lKSksCisJCQkJIGVycmhpbnQoIllvdSBtdXN0IHVzZSBh biBvcGVyYXRvciBjbGFzcyB3aXRoIGEgbWF0Y2hpbmcgQ29udGFpbmVkQnkgb3BlcmF0b3Iu IikpKTsKKwkqb3BuYW1lID0gZ2V0X29wbmFtZShvaWQpOworCisJb2lkID0gcmlpbmZvLT5w ZXJpb2RfcmVmZXJlbmNlZF9hZ2dfcHJvYzsKKwlpZiAoIU9pZElzVmFsaWQob2lkKSkKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1Qp LAorCQkJCSBlcnJtc2coIm5vIHJlZmVyZW5jZWRhZ2cgc3VwcG9ydCBmdW5jdGlvbiBmb3Ig Zm9yZWlnbiBrZXkgY29uc3RyYWludCBcIiVzXCIiLAorCQkJCQkJTmFtZVN0cihyaWluZm8t PmNvbm5hbWUpKSwKKwkJCQkgZXJyaGludCgiWW91IG11c3QgdXNlIGFuIG9wZXJhdG9yIGNs YXNzIHdpdGggYSByZWZlcmVuY2VkYWdnIHN1cHBvcnQgZnVuY3Rpb24uIikpKTsKKwkqYWdn bmFtZSA9IGdldF9mdW5jX25hbWVfYW5kX25hbWVzcGFjZShvaWQpOworfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IGI2MjVmNDcxYTg0Li5lODk2YmQyYmVjNyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMzM5LDcgKzMzOSw3IEBAIHN0YXRp YyBjaGFyICpwZ19nZXRfdmlld2RlZl93b3JrZXIoT2lkIHZpZXdvaWQsCiAJCQkJCQkJCSAg IGludCBwcmV0dHlGbGFncywgaW50IHdyYXBDb2x1bW4pOwogc3RhdGljIGNoYXIgKnBnX2dl dF90cmlnZ2VyZGVmX3dvcmtlcihPaWQgdHJpZ2lkLCBib29sIHByZXR0eSk7CiBzdGF0aWMg aW50CWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0dW0gY29sdW1uX2luZGV4X2Fy cmF5LCBPaWQgcmVsSWQsCi0JCQkJCQkJCQkJIFN0cmluZ0luZm8gYnVmKTsKKwkJCQkJCQkJ CQkgYm9vbCB3aXRoUGVyaW9kLCBTdHJpbmdJbmZvIGJ1Zik7CiBzdGF0aWMgY2hhciAqcGdf Z2V0X3J1bGVkZWZfd29ya2VyKE9pZCBydWxlb2lkLCBpbnQgcHJldHR5RmxhZ3MpOwogc3Rh dGljIGNoYXIgKnBnX2dldF9pbmRleGRlZl93b3JrZXIoT2lkIGluZGV4cmVsaWQsIGludCBj b2xubywKIAkJCQkJCQkJCWNvbnN0IE9pZCAqZXhjbHVkZU9wcywKQEAgLTIyNDcsNyArMjI0 Nyw5IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBi b29sIGZ1bGxDb21tYW5kLAogCQkJCXZhbCA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoQ09O U1RST0lELCB0dXAsCiAJCQkJCQkJCQkJCSBBbnVtX3BnX2NvbnN0cmFpbnRfY29ua2V5KTsK IAotCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25y ZWxpZCwgJmJ1Zik7CisJCQkJLyogSWYgaXQgaXMgYSB0ZW1wb3JhbCBmb3JlaWduIGtleSB0 aGVuIGl0IHVzZXMgUEVSSU9ELiAqLworCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJy YXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwKKwkJCQkJCQkJCQkJIGNvbkZvcm0tPmNvbndp dGhvdXRvdmVybGFwcywgJmJ1Zik7CiAKIAkJCQkvKiBhZGQgZm9yZWlnbiByZWxhdGlvbiBu YW1lICovCiAJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiKSBSRUZFUkVOQ0VTICVzKCIs CkBAIC0yMjU4LDcgKzIyNjAsOCBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lk IGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQl2YWwgPSBTeXNDYWNoZUdl dEF0dHJOb3ROdWxsKENPTlNUUk9JRCwgdHVwLAogCQkJCQkJCQkJCQkgQW51bV9wZ19jb25z dHJhaW50X2NvbmZrZXkpOwogCi0JCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2 YWwsIGNvbkZvcm0tPmNvbmZyZWxpZCwgJmJ1Zik7CisJCQkJZGVjb21waWxlX2NvbHVtbl9p bmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbmZyZWxpZCwKKwkJCQkJCQkJCQkJIGNvbkZv cm0tPmNvbndpdGhvdXRvdmVybGFwcywgJmJ1Zik7CiAKIAkJCQlhcHBlbmRTdHJpbmdJbmZv Q2hhcigmYnVmLCAnKScpOwogCkBAIC0yMzQ0LDcgKzIzNDcsNyBAQCBwZ19nZXRfY29uc3Ry YWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJ CQlpZiAoIWlzbnVsbCkKIAkJCQl7CiAJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1 ZiwgIiAoIik7Ci0JCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25G b3JtLT5jb25yZWxpZCwgJmJ1Zik7CisJCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJy YXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgZmFsc2UsICZidWYpOwogCQkJCQlhcHBlbmRT dHJpbmdJbmZvQ2hhcigmYnVmLCAnKScpOwogCQkJCX0KIApAQCAtMjM3OSw3ICsyMzgyLDcg QEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wg ZnVsbENvbW1hbmQsCiAJCQkJdmFsID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChDT05TVFJP SUQsIHR1cCwKIAkJCQkJCQkJCQkJIEFudW1fcGdfY29uc3RyYWludF9jb25rZXkpOwogCi0J CQkJa2V5YXR0cyA9IGRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3Jt LT5jb25yZWxpZCwgJmJ1Zik7CisJCQkJa2V5YXR0cyA9IGRlY29tcGlsZV9jb2x1bW5faW5k ZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgZmFsc2UsICZidWYpOwogCQkJCWlm IChjb25Gb3JtLT5jb253aXRob3V0b3ZlcmxhcHMpCiAJCQkJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmJ1ZiwgIiBXSVRIT1VUIE9WRVJMQVBTIik7CiAKQEAgLTI1NzcsNyArMjU4MCw3 IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29s IGZ1bGxDb21tYW5kLAogICovCiBzdGF0aWMgaW50CiBkZWNvbXBpbGVfY29sdW1uX2luZGV4 X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lkIHJlbElkLAotCQkJCQkJCSBT dHJpbmdJbmZvIGJ1ZikKKwkJCQkJCQkgYm9vbCB3aXRoUGVyaW9kLCBTdHJpbmdJbmZvIGJ1 ZikKIHsKIAlEYXR1bQkgICAqa2V5czsKIAlpbnQJCQluS2V5czsKQEAgLTI1OTYsNyArMjU5 OSw5IEBAIGRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0dW0gY29sdW1uX2luZGV4 X2FycmF5LCBPaWQgcmVsSWQsCiAJCWlmIChqID09IDApCiAJCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKGJ1ZiwgcXVvdGVfaWRlbnRpZmllcihjb2xOYW1lKSk7CiAJCWVsc2UKLQkJCWFw cGVuZFN0cmluZ0luZm8oYnVmLCAiLCAlcyIsIHF1b3RlX2lkZW50aWZpZXIoY29sTmFtZSkp OworCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsICVzJXMiLAorCQkJCQkJCSAod2l0aFBl cmlvZCAmJiBqID09IG5LZXlzIC0gMSkgPyAiUEVSSU9EICIgOiAiIiwKKwkJCQkJCQkgcXVv dGVfaWRlbnRpZmllcihjb2xOYW1lKSk7CiAJfQogCiAJcmV0dXJuIG5LZXlzOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwppbmRleCBmNzMwYWEyNmM0Ny4uNmNkMTRkNGJk MTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC0xNjAwLDYgKzE2 MDAsMzcgQEAgZ2V0X2Z1bmNfbmFtZShPaWQgZnVuY2lkKQogCQlyZXR1cm4gTlVMTDsKIH0K IAorLyoKKyAqIGdldF9mdW5jX25hbWVfYW5kX25hbWVzcGFjZQorICoJICByZXR1cm5zIHRo ZSBzY2hlbWEtcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGdpdmVu IGZ1bmNpZAorICoKKyAqIE5vdGU6IHJldHVybnMgYSBwYWxsb2MnZCBjb3B5IG9mIHRoZSBz dHJpbmcsIG9yIE5VTEwgaWYgbm8gc3VjaCBmdW5jdGlvbi4KKyAqLworY2hhciAqCitnZXRf ZnVuY19uYW1lX2FuZF9uYW1lc3BhY2UoT2lkIGZ1bmNpZCkKK3sKKwlIZWFwVHVwbGUJdHA7 CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hlMShQUk9DT0lELCBPYmplY3RJZEdldERhdHVtKGZ1 bmNpZCkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwl7CisJCUZvcm1fcGdfcHJv YyBmdW5jdHVwID0gKEZvcm1fcGdfcHJvYykgR0VUU1RSVUNUKHRwKTsKKwkJY2hhcgkgICAq bmFtZXNwID0gZ2V0X25hbWVzcGFjZV9uYW1lKGZ1bmN0dXAtPnByb25hbWVzcGFjZSk7CisJ CWNoYXIJICAgKmZ1bmMgPSBOYW1lU3RyKGZ1bmN0dXAtPnByb25hbWUpOworCQljaGFyCSAg ICpyZXN1bHQ7CisJCWludAkJCWxlbiA9IHN0cmxlbihuYW1lc3ApICsgc3RybGVuKGZ1bmMp ICsgMjsKKworCQlyZXN1bHQgPSBwYWxsb2MobGVuICogc2l6ZW9mKGNoYXIpKTsKKwkJc25w cmludGYocmVzdWx0LCBsZW4sICIlcy4lcyIsIG5hbWVzcCwgZnVuYyk7CisKKwkJcGZyZWUo bmFtZXNwKTsKKwkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwkJcmV0dXJuIHJlc3VsdDsKKwl9 CisJZWxzZQorCQlyZXR1cm4gTlVMTDsKK30KKwogLyoKICAqIGdldF9mdW5jX25hbWVzcGFj ZQogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5o IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmgKaW5kZXggMDFlNmJjMjFj ZDEuLmQ1NjNlMGJkODYxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Nv bnN0cmFpbnQuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaApA QCAtMTI3LDE5ICsxMjcsMTkgQEAgQ0FUQUxPRyhwZ19jb25zdHJhaW50LDI2MDYsQ29uc3Ry YWludFJlbGF0aW9uSWQpCiAJaW50MTYJCWNvbmZrZXlbMV07CiAKIAkvKgotCSAqIElmIGEg Zm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBQSyA9IEZLIGVxdWFsaXR5IG9wZXJhdG9y cyBmb3IgZWFjaAorCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBQSyA9 IEZLIGNvbXBhcmlzb24gb3BlcmF0b3JzIGZvciBlYWNoCiAJICogY29sdW1uIG9mIHRoZSBj b25zdHJhaW50CiAJICovCiAJT2lkCQkJY29ucGZlcW9wWzFdIEJLSV9MT09LVVAocGdfb3Bl cmF0b3IpOwogCiAJLyoKLQkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUg UEsgPSBQSyBlcXVhbGl0eSBvcGVyYXRvcnMgZm9yIGVhY2gKKwkgKiBJZiBhIGZvcmVpZ24g a2V5LCB0aGUgT0lEcyBvZiB0aGUgUEsgPSBQSyBjb21wYXJpc29uIG9wZXJhdG9ycyBmb3Ig ZWFjaAogCSAqIGNvbHVtbiBvZiB0aGUgY29uc3RyYWludCAoaS5lLiwgZXF1YWxpdHkgZm9y IHRoZSByZWZlcmVuY2VkIGNvbHVtbnMpCiAJICovCiAJT2lkCQkJY29ucHBlcW9wWzFdIEJL SV9MT09LVVAocGdfb3BlcmF0b3IpOwogCiAJLyoKLQkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0 aGUgT0lEcyBvZiB0aGUgRksgPSBGSyBlcXVhbGl0eSBvcGVyYXRvcnMgZm9yIGVhY2gKKwkg KiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUgRksgPSBGSyBjb21wYXJpc29u IG9wZXJhdG9ycyBmb3IgZWFjaAogCSAqIGNvbHVtbiBvZiB0aGUgY29uc3RyYWludCAoaS5l LiwgZXF1YWxpdHkgZm9yIHRoZSByZWZlcmVuY2luZyBjb2x1bW5zKQogCSAqLwogCU9pZAkJ CWNvbmZmZXFvcFsxXSBCS0lfTE9PS1VQKHBnX29wZXJhdG9yKTsKQEAgLTE4Myw3ICsxODMs NyBAQCBNQUtFX1NZU0NBQ0hFKENPTlNUUk9JRCwgcGdfY29uc3RyYWludF9vaWRfaW5kZXgs IDE2KTsKIAogLyogY29ua2V5IGNhbiBjb250YWluIHplcm8gKEludmFsaWRBdHRyTnVtYmVy KSBpZiBhIHdob2xlLXJvdyBWYXIgaXMgdXNlZCAqLwogREVDTEFSRV9BUlJBWV9GT1JFSUdO X0tFWV9PUFQoKGNvbnJlbGlkLCBjb25rZXkpLCBwZ19hdHRyaWJ1dGUsIChhdHRyZWxpZCwg YXR0bnVtKSk7Ci1ERUNMQVJFX0FSUkFZX0ZPUkVJR05fS0VZKChjb25mcmVsaWQsIGNvbmZr ZXkpLCBwZ19hdHRyaWJ1dGUsIChhdHRyZWxpZCwgYXR0bnVtKSk7CitERUNMQVJFX0FSUkFZ X0ZPUkVJR05fS0VZX09QVCgoY29uZnJlbGlkLCBjb25ma2V5KSwgcGdfYXR0cmlidXRlLCAo YXR0cmVsaWQsIGF0dG51bSkpOwogCiAjaWZkZWYgRVhQT1NFX1RPX0NMSUVOVF9DT0RFCiAK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IGU0MTE1Y2QwODQwLi45ZDk0MmNjNDE5 MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0zOTQ1LDYgKzM5NDUsMzAgQEAK ICAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAogICBwcm9z cmMgPT4gJ1JJX0ZLZXlfbm9hY3Rpb25fdXBkJyB9LAogCisjIFRlbXBvcmFsIHJlZmVyZW50 aWFsIGludGVncml0eSBjb25zdHJhaW50IHRyaWdnZXJzCit7IG9pZCA9PiAnNjEyMicsIGRl c2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgRk9SRUlHTiBLRVkgLi4u IFJFRkVSRU5DRVMnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9jaGVja19pbnMnLCBwcm92 b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBl cyA9PiAnJywgcHJvc3JjID0+ICdUUklfRktleV9jaGVja19pbnMnIH0sCit7IG9pZCA9PiAn NjEyMycsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgRk9SRUlH TiBLRVkgLi4uIFJFRkVSRU5DRVMnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9jaGVja191 cGQnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBw cm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdUUklfRktleV9jaGVja191cGQnIH0sCit7 IG9pZCA9PiAnNjEyNicsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3Jp dHkgT04gREVMRVRFIFJFU1RSSUNUJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfcmVzdHJp Y3RfZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICd0cmlnZ2Vy JywgcHJvYXJndHlwZXMgPT4gJycsCisgIHByb3NyYyA9PiAnVFJJX0ZLZXlfcmVzdHJpY3Rf ZGVsJyB9LAoreyBvaWQgPT4gJzYxMjcnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRp YWwgaW50ZWdyaXR5IE9OIFVQREFURSBSRVNUUklDVCcsCisgIHByb25hbWUgPT4gJ1RSSV9G S2V5X3Jlc3RyaWN0X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9 PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9GS2V5 X3Jlc3RyaWN0X3VwZCcgfSwKK3sgb2lkID0+ICc2MTMyJywgZGVzY3IgPT4gJ3RlbXBvcmFs IHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxFVEUgTk8gQUNUSU9OJywKKyAgcHJvbmFt ZSA9PiAnVFJJX0ZLZXlfbm9hY3Rpb25fZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBw cm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCisgIHByb3NyYyA9 PiAnVFJJX0ZLZXlfbm9hY3Rpb25fZGVsJyB9LAoreyBvaWQgPT4gJzYxMzMnLCBkZXNjciA9 PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIFVQREFURSBOTyBBQ1RJT04n LAorICBwcm9uYW1lID0+ICdUUklfRktleV9ub2FjdGlvbl91cGQnLCBwcm92b2xhdGlsZSA9 PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywK KyAgcHJvc3JjID0+ICdUUklfRktleV9ub2FjdGlvbl91cGQnIH0sCisKIHsgb2lkID0+ICcx NjY2JywKICAgcHJvbmFtZSA9PiAndmFyYml0ZXEnLCBwcm9sZWFrcHJvb2YgPT4gJ3QnLCBw cm9yZXR0eXBlID0+ICdib29sJywKICAgcHJvYXJndHlwZXMgPT4gJ3ZhcmJpdCB2YXJiaXQn LCBwcm9zcmMgPT4gJ2JpdGVxJyB9LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvZGVmcmVtLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaAppbmRleCAwYzUz ZDY3ZDNlZS4uYmFlZWE0MzllZTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRz L2RlZnJlbS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCkBAIC01MCw4 ICs1MCwxMSBAQCBleHRlcm4gYm9vbCBDaGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQs CiBleHRlcm4gT2lkCUdldERlZmF1bHRPcENsYXNzKE9pZCB0eXBlX2lkLCBPaWQgYW1faWQp OwogZXh0ZXJuIE9pZAlSZXNvbHZlT3BDbGFzcyhjb25zdCBMaXN0ICpvcGNsYXNzLCBPaWQg YXR0clR5cGUsCiAJCQkJCQkgICBjb25zdCBjaGFyICphY2Nlc3NNZXRob2ROYW1lLCBPaWQg YWNjZXNzTWV0aG9kSWQpOwotZXh0ZXJuIHZvaWQgR2V0T3BlcmF0b3JGcm9tV2VsbEtub3du U3RyYXRlZ3koT2lkIG9wY2xhc3MsIE9pZCBhdHR0eXBlLAotCQkJCQkJCQkJCQkgT2lkICpv cGlkLCBTdHJhdGVneU51bWJlciAqc3RyYXQpOworZXh0ZXJuIHZvaWQgR2V0T3BlcmF0b3JG cm9tV2VsbEtub3duU3RyYXRlZ3koT2lkIG9wY2xhc3MsIE9pZCByaHN0eXBlLAorCQkJCQkJ CQkJCQkgY29uc3QgY2hhciAqb3BuYW1lLAorCQkJCQkJCQkJCQkgY29uc3QgY2hhciAqY29u dGV4dCwKKwkJCQkJCQkJCQkJIE9pZCAqb3BpZCwKKwkJCQkJCQkJCQkJIFN0cmF0ZWd5TnVt YmVyICpzdHJhdCk7CiAKIC8qIGNvbW1hbmRzL2Z1bmN0aW9uY21kcy5jICovCiBleHRlcm4g T2JqZWN0QWRkcmVzcyBDcmVhdGVGdW5jdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0 ZUZ1bmN0aW9uU3RtdCAqc3RtdCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5k cy90YWJsZWNtZHMuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oCmluZGV4 IDYwZDliOGY1YjVmLi45Njc2OTQ3MmJiYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29t bWFuZHMvdGFibGVjbWRzLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRz LmgKQEAgLTEwNSw1ICsxMDUsOCBAQCBleHRlcm4gdm9pZCBSYW5nZVZhckNhbGxiYWNrT3du c1JlbGF0aW9uKGNvbnN0IFJhbmdlVmFyICpyZWxhdGlvbiwKIAkJCQkJCQkJCQkgT2lkIHJl bElkLCBPaWQgb2xkUmVsSWQsIHZvaWQgKmFyZyk7CiBleHRlcm4gYm9vbCBQYXJ0Q29uc3Ry YWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQoUmVsYXRpb24gc2NhbnJlbCwKIAkJCQkJCQkJ CQkJCSBMaXN0ICpwYXJ0Q29uc3RyYWludCk7CitleHRlcm4gdm9pZCBGaW5kRktQZXJpb2RP cGVyc0FuZFByb2NzKE9pZCBvcGNsYXNzLAorCQkJCQkJCQkJICBPaWQgKnBlcmlvZG9wZXJv aWQsCisJCQkJCQkJCQkgIE9pZCAqcGVyaW9kcHJvY29pZCk7CiAKICNlbmRpZgkJCQkJCQkv KiBUQUJMRUNNRFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDQ3NmQ1NWRk MjQwLi44ZjRmOGNlNmE3NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMjU2NCw2 ICsyNTY0LDEwIEBAIHR5cGVkZWYgZW51bSBDb25zdHJUeXBlCQkJLyogdHlwZXMgb2YgY29u c3RyYWludHMgKi8KICNkZWZpbmUgRktDT05TVFJfTUFUQ0hfUEFSVElBTAkJJ3AnCiAjZGVm aW5lIEZLQ09OU1RSX01BVENIX1NJTVBMRQkJJ3MnCiAKKy8qIEZvcmVpZ24ga2V5IHdpdGgg UEVSSU9EIHBvc2l0aW9ucyAqLworI2RlZmluZSBGS0NPTlNUUl9QRVJJT0RfT1BfQ09OVEFJ TkVEX0JZCTAKKyNkZWZpbmUgRktDT05TVFJfUEVSSU9EX1BST0NfUkVGRVJFTkNFRF9BR0cg MAorCiB0eXBlZGVmIHN0cnVjdCBDb25zdHJhaW50CiB7CiAJcGdfbm9kZV9hdHRyKGN1c3Rv bV9yZWFkX3dyaXRlKQpAQCAtMjYxMCw3ICsyNjE0LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29u c3RyYWludAogCS8qIEZpZWxkcyB1c2VkIGZvciBGT1JFSUdOIEtFWSBjb25zdHJhaW50czog Ki8KIAlSYW5nZVZhciAgICpwa3RhYmxlOwkJLyogUHJpbWFyeSBrZXkgdGFibGUgKi8KIAlM aXN0CSAgICpma19hdHRyczsJCS8qIEF0dHJpYnV0ZXMgb2YgZm9yZWlnbiBrZXkgKi8KKwlO b2RlCSAgICpma19wZXJpb2Q7CQkvKiBTdHJpbmcgbm9kZSBuYW1pbmcgUGVyaW9kIG9yIHJh bmdlIGNvbHVtbiAqLwogCUxpc3QJICAgKnBrX2F0dHJzOwkJLyogQ29ycmVzcG9uZGluZyBh dHRycyBpbiBQSyB0YWJsZSAqLworCU5vZGUJICAgKnBrX3BlcmlvZDsJCS8qIFN0cmluZyBu b2RlIG5hbWluZyBQZXJpb2Qgb3IgcmFuZ2UgY29sdW1uICovCiAJY2hhcgkJZmtfbWF0Y2h0 eXBlOwkvKiBGVUxMLCBQQVJUSUFMLCBTSU1QTEUgKi8KIAljaGFyCQlma191cGRfYWN0aW9u OwkvKiBPTiBVUERBVEUgYWN0aW9uICovCiAJY2hhcgkJZmtfZGVsX2FjdGlvbjsJLyogT04g REVMRVRFIGFjdGlvbiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlz dC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDIzMzFhY2FjMDkxLi4x ZDNmN2JkMzdmMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisr KyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtMzI2LDYgKzMyNiw3IEBAIFBH X0tFWVdPUkQoInBhcnRpYWwiLCBQQVJUSUFMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJwYXJ0aXRpb24iLCBQQVJUSVRJT04sIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhc3NpbmciLCBQQVNTSU5HLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzd29yZCIs IFBBU1NXT1JELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JE KCJwZXJpb2QiLCBQRVJJT0QsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJwbGFjaW5nIiwgUExBQ0lORywgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoInBsYW5zIiwgUExBTlMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoInBvbGljeSIsIFBPTElDWSwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2Nh Y2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAppbmRleCBlNGEyMDBiMDBl Yy4uMTMzOTM4MmY5MWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNo ZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCkBAIC0xMTksNiArMTE5 LDcgQEAgZXh0ZXJuIE9pZAlnZXRfbmVnYXRvcihPaWQgb3Bubyk7CiBleHRlcm4gUmVnUHJv Y2VkdXJlIGdldF9vcHJyZXN0KE9pZCBvcG5vKTsKIGV4dGVybiBSZWdQcm9jZWR1cmUgZ2V0 X29wcmpvaW4oT2lkIG9wbm8pOwogZXh0ZXJuIGNoYXIgKmdldF9mdW5jX25hbWUoT2lkIGZ1 bmNpZCk7CitleHRlcm4gY2hhciAqZ2V0X2Z1bmNfbmFtZV9hbmRfbmFtZXNwYWNlKE9pZCBm dW5jaWQpOwogZXh0ZXJuIE9pZAlnZXRfZnVuY19uYW1lc3BhY2UoT2lkIGZ1bmNpZCk7CiBl eHRlcm4gT2lkCWdldF9mdW5jX3JldHR5cGUoT2lkIGZ1bmNpZCk7CiBleHRlcm4gaW50CWdl dF9mdW5jX25hcmdzKE9pZCBmdW5jaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKaW5kZXggNzI2ZTk0MTAyYmYuLmM2MzM3Mzhj MmViIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3Zl cmxhcHMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVy bGFwcy5vdXQKQEAgLTM5MywzICszOTMsNTY0IEBAIFNFTEVDVCAqIEZST00gdHAyIE9SREVS IEJZIGlkLCB2YWxpZF9hdDsKICgxIHJvdykKIAogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZDsKKy0tCistLSB0ZXN0IEZLIGRlcGVuZGVuY2llcworLS0KKy0tIGNhbid0IGRy b3AgYSByYW5nZSByZWZlcmVuY2VkIGJ5IGFuIEZLLCB1bmxlc3Mgd2l0aCBDQVNDQURFCitD UkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNy YW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9p ZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1B UlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbDMgKGlkLCBQRVJJT0QgdmFsaWRfYXQp CispOworQUxURVIgVEFCTEUgdGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX2F0OworRVJS T1I6ICBjYW5ub3QgZHJvcCBjb2x1bW4gdmFsaWRfYXQgb2YgdGFibGUgdGVtcG9yYWwzIGJl Y2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIGNvbnN0cmFpbnQg dGVtcG9yYWxfZmtfcm5nMnJuZ19mayBvbiB0YWJsZSB0ZW1wb3JhbF9ma19ybmcycm5nIGRl cGVuZHMgb24gY29sdW1uIHZhbGlkX2F0IG9mIHRhYmxlIHRlbXBvcmFsMworSElOVDogIFVz ZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmplY3RzIHRvby4K K0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBEUk9QIENPTFVNTiB2YWxpZF9hdCBDQVNDQURFOwor Tk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byBjb25zdHJhaW50IHRlbXBvcmFsX2ZrX3JuZzJy bmdfZmsgb24gdGFibGUgdGVtcG9yYWxfZmtfcm5nMnJuZworRFJPUCBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CistLQorLS0gdGVzdCBGT1JF SUdOIEtFWSwgcmFuZ2UgcmVmZXJlbmNlcyByYW5nZQorLS0KKy0tIENhbid0IGNyZWF0ZSBh IEZLIHdpdGggYSBtaXNtYXRjaGVkIHJhbmdlIHR5cGUKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgaW50NHJhbmdlLAor CXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X3BrMiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNP TlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazIgRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBF UklPRCB2YWxpZF9hdCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRl bXBvcmFsX2ZrX3JuZzJybmdfZmsyIiBjYW5ub3QgYmUgaW1wbGVtZW50ZWQKK0RFVEFJTDog IEtleSBjb2x1bW5zICJ2YWxpZF9hdCIgYW5kICJ2YWxpZF9hdCIgYXJlIG9mIGluY29tcGF0 aWJsZSB0eXBlczogaW50NHJhbmdlIGFuZCB0c3JhbmdlLgorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAor CXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJ T0QgdmFsaWRfYXQpCispOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nOworLS0g d2l0aCBtaXNtYXRjaGVkIFBFUklPRCBjb2x1bW5zOgorLS0gKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KSBSRUZFUkVOQ0VTIChpZCwgdmFsaWRfYXQpCitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2Us CisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJy bmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIHZh bGlkX2F0KQorKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgdXNlcyBQRVJJT0Qgb24gdGhlIHJl ZmVyZW5jaW5nIHRhYmxlIGJ1dCBub3QgdGhlIHJlZmVyZW5jZWQgdGFibGUKKy0tIChwYXJl bnRfaWQsIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorQ1JF QVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxp ZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04g S0VZIChwYXJlbnRfaWQsIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAo aWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHVzZXMgUEVS SU9EIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlIGJ1dCBub3QgdGhlIHJlZmVyZW5jaW5nIHRh YmxlCistLSAocGFyZW50X2lkLCB2YWxpZF9hdCkgUkVGRVJFTkNFUyBbaW1wbGljaXRdCitD UkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZh bGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5n CispOworRVJST1I6ICBmb3JlaWduIGtleSB1c2VzIFBFUklPRCBvbiB0aGUgcmVmZXJlbmNl ZCB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVuY2luZyB0YWJsZQorLS0gKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIChpZCkKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlw YXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCkKKyk7CitF UlJPUjogIGZvcmVpZ24ga2V5IHVzZXMgUEVSSU9EIG9uIHRoZSByZWZlcmVuY2luZyB0YWJs ZSBidXQgbm90IHRoZSByZWZlcmVuY2VkIHRhYmxlCistLSAocGFyZW50X2lkKSBSRUZFUkVO Q0VTIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9p ZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1B UlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQpCisJCVJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK0VSUk9SOiAg Zm9yZWlnbiBrZXkgdXNlcyBQRVJJT0Qgb24gdGhlIHJlZmVyZW5jZWQgdGFibGUgYnV0IG5v dCB0aGUgcmVmZXJlbmNpbmcgdGFibGUKKy0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJl ZmVyZW5jZWQgdGFibGU6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJ aWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5n ZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlk LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQor CQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworKTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZzsKKy0tIHNob3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5j ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBp bnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgcGFyZW50X2lkKQorCQlS RUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCBpZCkKKyk7CitFUlJPUjogIGZv cmVpZ24ga2V5IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11c3Qgbm90IGNvbnRhaW4gZHVw bGljYXRlcworLS0gVHdvIHNjYWxhciBjb2x1bW5zCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxf ZmsyX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBh cmVudF9pZDEgaW50NHJhbmdlLAorCXBhcmVudF9pZDIgaW50NHJhbmdlLAorCUNPTlNUUkFJ TlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2Zr IEZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQp CisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMiAoaWQxLCBpZDIsIFBFUklPRCB2YWxpZF9h dCkKKyk7CitcZCB0ZW1wb3JhbF9mazJfcm5nMnJuZworICAgICAgICAgICBUYWJsZSAicHVi bGljLnRlbXBvcmFsX2ZrMl9ybmcycm5nIgorICAgQ29sdW1uICAgfCAgIFR5cGUgICAgfCBD b2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZCAgICAgICAgIHwgaW50 NHJhbmdlIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyB2YWxpZF9hdCAgIHwgdHNyYW5n ZSAgIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyBwYXJlbnRfaWQxIHwgaW50NHJhbmdl IHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBwYXJlbnRfaWQyIHwgaW50NHJhbmdlIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX2ZrMl9y bmcycm5nX3BrIiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp CitGb3JlaWduLWtleSBjb25zdHJhaW50czoKKyAgICAidGVtcG9yYWxfZmsyX3JuZzJybmdf ZmsiIEZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRf YXQpIFJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMihpZDEsIGlkMiwgUEVSSU9EIHZhbGlkX2F0 KQorCitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nOworLS0KKy0tIHRlc3QgQUxU RVIgVEFCTEUgQUREIENPTlNUUkFJTlQKKy0tCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50 X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJ TUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19y bmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQor CVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KTsKKy0tIFR3 byBzY2FsYXIgY29sdW1uczoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZyAo CisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkMSBpbnQ0 cmFuZ2UsCisJcGFyZW50X2lkMiBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9m azJfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpCispOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKwlBREQgQ09OU1RS QUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQx LCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9y bmcyIChpZDEsIGlkMiwgUEVSSU9EIHZhbGlkX2F0KTsKK1xkIHRlbXBvcmFsX2ZrMl9ybmcy cm5nCisgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVtcG9yYWxfZmsyX3JuZzJybmciCisg ICBDb2x1bW4gICB8ICAgVHlwZSAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVs dCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLQorIGlkICAgICAgICAgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCBub3QgbnVs bCB8IAorIHZhbGlkX2F0ICAgfCB0c3JhbmdlICAgfCAgICAgICAgICAgfCBub3QgbnVsbCB8 IAorIHBhcmVudF9pZDEgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCAgICAgICAgICB8IAor IHBhcmVudF9pZDIgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5k ZXhlczoKKyAgICAidGVtcG9yYWxfZmsyX3JuZzJybmdfcGsiIFBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKK0ZvcmVpZ24ta2V5IGNvbnN0cmFpbnRzOgor ICAgICJ0ZW1wb3JhbF9mazJfcm5nMnJuZ19mayIgRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEs IHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9hdCkgUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcy KGlkMSwgaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisKKy0tIHdpdGggaW5mZXJyZWQgUEsgb24g dGhlIHJlZmVyZW5jZWQgdGFibGUsIGFuZCB3cm9uZyBjb2x1bW4gdHlwZToKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cm5nMnJuZ19maywKKwlBTFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQRSBkYXRlcmFuZ2UgVVNJ TkcgZGF0ZXJhbmdlKGxvd2VyKHZhbGlkX2F0KTo6ZGF0ZSwgdXBwZXIodmFsaWRfYXQpOjpk YXRlKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworRVJST1I6ICBmb3Jl aWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBjYW5ub3QgYmUg aW1wbGVtZW50ZWQKK0RFVEFJTDogIEtleSBjb2x1bW5zICJ2YWxpZF9hdCIgYW5kICJ2YWxp ZF9hdCIgYXJlIG9mIGluY29tcGF0aWJsZSB0eXBlczogZGF0ZXJhbmdlIGFuZCB0c3Jhbmdl LgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFMVEVSIENPTFVNTiB2YWxp ZF9hdCBUWVBFIHRzcmFuZ2UgVVNJTkcgdHNyYW5nZShsb3dlcih2YWxpZF9hdCksIHVwcGVy KHZhbGlkX2F0KSk7CistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRh YmxlOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJ T0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CistLSBzaG91bGQgZmFp bCBiZWNhdXNlIG9mIGR1cGxpY2F0ZSByZWZlcmVuY2VkIGNvbHVtbnM6CitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19mazIKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgcGFyZW50X2lkKQor CVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIGlkKTsKK0VSUk9SOiAgZm9y ZWlnbiBrZXkgcmVmZXJlbmNlZC1jb2x1bW5zIGxpc3QgbXVzdCBub3QgY29udGFpbiBkdXBs aWNhdGVzCistLQorLS0gdGVzdCB3aXRoIHJvd3MgYWxyZWFkeQorLS0KK0RFTEVURSBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmc7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0w MS0wMicsICcyMDE4LTAyLTAxJyksICdbMSwxXScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxf Zmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlG T1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0 ZW1wb3JhbF9ybmc7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ma19ybmcycm5nIFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcy MDE4LTA0LTAxJyksICdbMSwxXScpOworLS0gc2hvdWxkIGZhaWw6CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJu Z19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZF UkVOQ0VTIHRlbXBvcmFsX3JuZzsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJs ZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWlu dCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2 YWxpZF9hdCk9KFsxLDIpLCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIg MDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAidGVtcG9yYWxf cm5nIi4KKy0tIG9rYXkgYWdhaW46CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5n OworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CistLQorLS0gdGVzdCBwZ19n ZXRfY29uc3RyYWludGRlZgorLS0KK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQp IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX2ZrX3JuZzJy bmdfZmsnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2NvbnN0 cmFpbnRkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJ T0QgdmFsaWRfYXQpIFJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nKGlkLCBQRVJJT0QgdmFsaWRf YXQpCisoMSByb3cpCisKKy0tCistLSB0ZXN0IEZLIGNoaWxkIGluc2VydHMKKy0tCitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgn MjAxOC0wMS0wMicsICcyMDE4LTAyLTAxJyksICdbMSwxXScpOworLS0gc2hvdWxkIGZhaWw6 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syLDJdJywgdHNy YW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAxJyksICdbMSwxXScpOworRVJST1I6ICBp bnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIiB2aW9sYXRl cyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIgorREVU QUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oWzEsMiksIFsiVHVlIEphbiAwMiAw MDowMDowMCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4IikpIGlzIG5vdCBwcmVz ZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9ybmciLgorLS0gbm93IGl0IHNob3VsZCB3b3JrOgor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAx OC0wMi0wMycsICcyMDE4LTAzLTAzJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5n MnJuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0w MScpLCAnWzEsMV0nKTsKKy0tCistLSB0ZXN0IEZLIGNoaWxkIHVwZGF0ZXMKKy0tCitVUERB VEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAx LTAyJywgJzIwMTgtMDMtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBzaG91bGQgZmFp bDoKK1VQREFURSB0ZW1wb3JhbF9ma19ybmcycm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTgtMDEtMDInLCAnMjAxOC0wNS0wMScpIFdIRVJFIGlkID0gJ1sxLDFdJzsKK0VSUk9S OiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIgdmlv bGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIK K0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KFsxLDIpLCBbIlR1ZSBKYW4g MDIgMDA6MDA6MDAgMjAxOCIsIlR1ZSBNYXkgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBub3Qg cHJlc2VudCBpbiB0YWJsZSAidGVtcG9yYWxfcm5nIi4KK1VQREFURSB0ZW1wb3JhbF9ma19y bmcycm5nIFNFVCBwYXJlbnRfaWQgPSAnWzgsOF0nIFdIRVJFIGlkID0gJ1sxLDFdJzsKK0VS Uk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIg dmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19m ayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KFs4LDkpLCBbIlR1ZSBK YW4gMDIgMDA6MDA6MDAgMjAxOCIsIlRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBu b3QgcHJlc2VudCBpbiB0YWJsZSAidGVtcG9yYWxfcm5nIi4KKy0tIEFMVEVSIEZLIERFRkVS UkFCTEUKK0JFR0lOOworICBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTCisgICAg KCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKSwKKyAgICAo J1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworICBJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUworICAgICgnWzMsM10nLCB0c3Jh bmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CisgIEFMVEVSIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKyAgICBBTFRFUiBDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJybmdfZmsKKyAgICBERUZFUlJBQkxFIElOSVRJQUxMWSBERUZFUlJFRDsKKyAg REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsgLS1zaG91bGQg bm90IGZhaWwgeWV0LgorQ09NTUlUOyAtLSBzaG91bGQgZmFpbCBoZXJlLgorRVJST1I6ICB1 cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0 ZW1wb3JhbF9ma19ybmcycm5nIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2 KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIw MTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcy cm5nIi4KKy0tCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIE5PIEFDVElPTgorLS0KKy0t IGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24n dCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHRlbXBv cmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDIt MDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRz IGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUg cmFuZ2UgaXNuJ3Q6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUs NV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQREFU RSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMi0wMScsICcy MDE2LTAzLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgZmFp bHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBT RVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorV0hF UkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1w b3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2Zr X3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgorREVUQUlMOiAg S2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgi LCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9t IHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KKy0tIGNoYW5naW5nIHRoZSBzY2FsYXIg cGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s3LDddJworV0hF UkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1w b3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2Zr X3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgorREVUQUlMOiAg S2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgi LCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9t IHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmpl Y3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKK1VQREFU RSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcy MDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZS T00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVM RVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tCistLSB0ZXN0 IEZLIHBhcmVudCB1cGRhdGVzIFJFU1RSSUNUCistLQorQUxURVIgVEFCTEUgdGVtcG9yYWxf Zmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOwor QUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7 CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQg aXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb NSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK1VQREFURSB0 ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2 LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNj ZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2Ug dGhlIHJhbmdlIGlzbid0OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0w My0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMs M10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitV UERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDItMDEn LCAnMjAxNi0wMy0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIHVwZGF0ZSB0aGF0 IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB0ZW1wb3JhbF9y bmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykK K1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAi dGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJ TDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAy MDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQg ZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSBjaGFuZ2luZyB0aGUgc2Nh bGFyIHBhcnQgZmFpbHM6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3XScK K1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAi dGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJ TDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAy MDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQg ZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSB0aGVuIGRlbGV0ZSB0aGUg b2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgor REVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitV UERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEn LCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLQorLS0g dGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJT04KKy0tCitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdf Zms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQg dGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKKy0tIGEgUEsgZGVsZXRl IHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2Vk OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5n IFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgZXZl biB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5n ZSBpc24ndDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0w My0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMs M10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyBkZWxl dGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworRVJST1I6ICB1cGRhdGUgb3IgZGVs ZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19y bmcycm5nIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJNb24gSmFu IDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3Rp bGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KKy0tIHRo ZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxl dGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1szLDNdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7 CistLQorLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBSRVNUUklDVAorLS0KK0FMVEVSIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cm5nMnJuZ19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJT04gREVM RVRFIFJFU1RSSUNUOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQg c3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNh dXNlIHRoZSByYW5nZSBpc24ndDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMg KCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDIt MDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcg VkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwg J1s1LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOwor LS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworRVJST1I6ICB1 cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0 ZW1wb3JhbF9ma19ybmcycm5nIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2 KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIw MTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcy cm5nIi4KKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUg c2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJyk7CistLQorLS0gdGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKKy0t CistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzQs NF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJu Z19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJF RkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBD QVNDQURFOworRVJST1I6ICBhY3Rpb24gbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9y ZWlnbiBrZXlzCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzksOV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZB TFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb OSw5XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlk X2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUgU0VUIE5VTEwg T04gVVBEQVRFIFNFVCBOVUxMOworRVJST1I6ICBhY3Rpb24gbm90IHN1cHBvcnRlZCBmb3Ig dGVtcG9yYWwgZm9yZWlnbiBrZXlzCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBE RUZBVUxUCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWy0xLC0xXScsIHRz cmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1sxMiwxMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTIsMTJdJyk7CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9ma19ybmcycm5nCisgIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFV TFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2Zr LAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBL RVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFs X3JuZworCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZBVUxUOwor RVJST1I6ICBhY3Rpb24gbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlz CistLSBGSyBiZXR3ZWVuIHBhcnRpdGlvbmVkIHRhYmxlcworQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVy YW5nZSwKKyAgbmFtZSB0ZXh0LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF9y bmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKSBQ QVJUSVRJT04gQlkgTElTVCAoaWQpOworQ1JFQVRFIFRBQkxFIHRwMSBwYXJ0aXRpb24gT0Yg dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMywz XScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7CitDUkVBVEUgVEFC TEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVF UyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAn WzEyLDEyXScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVF UworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEnKSwg J29uZScpLAorICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAtMDMt MDEnKSwgJ29uZScpLAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIw MTAtMDEtMDEnKSwgJ3R3bycpOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisJ cGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsg Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKykgUEFS VElUSU9OIEJZIExJU1QgKGlkKTsKK0NSRUFURSBUQUJMRSB0ZmtwMSBwYXJ0aXRpb24gT0Yg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgnWzEsMV0n LCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzExLDExXScpOworQ1JF QVRFIFRBQkxFIHRma3AyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScsICdbNCw0XScsICdbNiw2XScsICdbOCw4 XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKKy0tIHBhcnRpdGlvbmVkIEZLIGNoaWxkIGlu c2VydHMKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFM VUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xNScp LCAnWzEsMV0nKSwKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMS0wMS0wMScsICcyMDAy LTAxLTAxJyksICdbMiwyXScpLAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAx JywgJzIwMDAtMDItMTUnKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTCisgICgnWzMsM10n LCBkYXRlcmFuZ2UoJzIwMTAtMDEtMDEnLCAnMjAxMC0wMi0xNScpLCAnWzEsMV0nKTsKK0VS Uk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGZrcDEiIHZpb2xhdGVzIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsi CitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMSwyKSwgWzAxLTAxLTIw MTAsMDItMTUtMjAxMCkpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmciLgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyBWQUxVRVMKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAw LTAyLTE1JyksICdbMywzXScpOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxl ICJ0ZmtwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZ19mayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxp ZF9hdCk9KFszLDQpLCBbMDEtMDEtMjAwMCwwMi0xNS0yMDAwKSkgaXMgbm90IHByZXNlbnQg aW4gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyIuCistLSBwYXJ0aXRpb25lZCBG SyBjaGlsZCB1cGRhdGVzCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xMycp IFdIRVJFIGlkID0gJ1syLDJdJzsKKy0tIG1vdmUgYSByb3cgZnJvbSB0aGUgZmlyc3QgcGFy dGl0aW9uIHRvIHRoZSBzZWNvbmQKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIFNFVCBpZCA9ICdbNCw0XScgV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gbW92ZSBh IHJvdyBmcm9tIHRoZSBzZWNvbmQgcGFydGl0aW9uIHRvIHRoZSBmaXJzdAorVVBEQVRFIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgU0VUIGlkID0gJ1sxLDFdJyBXSEVSRSBp ZCA9ICdbNCw0XSc7CistLSBzaG91bGQgZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScs ICcyMDAwLTA0LTAxJykgV0hFUkUgaWQgPSAnWzEsMV0nOworRVJST1I6ICBjb25mbGljdGlu ZyBrZXkgdmFsdWUgdmlvbGF0ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgInRma3AxX3BrZXki CitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFsxLDIpLCBbMDEtMDEtMjAwMCwwNC0w MS0yMDAwKSkgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcga2V5IChpZCwgdmFsaWRfYXQpPShb MSwyKSwgWzAxLTAxLTIwMDAsMDQtMDEtMjAwMCkpLgorLS0gcGFydGl0aW9uZWQgRksgcGFy ZW50IHVwZGF0ZXMgTk8gQUNUSU9OCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0w Mi0wMScpKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0 ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSBXSEVSRSBpZCA9ICdb NSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgn WzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10n LCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQ REFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdl KCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorICBXSEVSRSBpZCA9ICdbNSw1XScgQU5E IHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0t IHNob3VsZCBmYWlsOgorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFs aWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCisgIFdIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0cDEi IHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwg WzAxLTAxLTIwMTgsMDItMDEtMjAxOCkpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJs ZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIuCistLSBjbGVhbiB1cDoKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50 X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBX SEVSRSBpZCA9ICdbNSw1XSc7CistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBO TyBBQ1RJT04KK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMg KCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0 ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdl KCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBzaG91bGQg ZmFpbDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgt MDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9s YXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nX3BhcmVudF9pZF9ma2V5IiBvbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFswMS0w MS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgorLS0gY2xlYW4gdXA6CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9 ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUg aWQgPSAnWzUsNV0nOworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJ Q1QKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKKwlEUk9Q IENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mazsKK0FMVEVS IFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlO VCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nCisJT04gREVMRVRFIFJFU1RSSUNUOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE2LTAxLTAx JywgJzIwMTYtMDItMDEnKSk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNF VCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykgV0hF UkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVF UyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1 LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9 IGRhdGVyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKKyAgV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAz LTAxJyk7CistLSBzaG91bGQgZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEn KQorICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0 YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5IiBvbiB0YWJsZSAidGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0 KT0oWzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVuY2Vk IGZyb20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgorLS0gY2xl YW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdI RVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50 IGRlbGV0ZXMgUkVTVFJJQ1QKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1 LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7Cist LSBzaG91bGQgZmFpbDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAi dHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5IiBvbiB0YWJsZSAidGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUs NiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20g dGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgorLS0gcGFydGl0aW9u ZWQgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQorQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZworCQlPTiBE RUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKK0VSUk9SOiAgYWN0aW9uIG5vdCBz dXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gcGFydGl0aW9uZWQgRksg cGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQorLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0 ZXMgU0VUIE5VTEwKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19m aywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2Zr CisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJF TkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9O IFVQREFURSBTRVQgTlVMTDsKK0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRl bXBvcmFsIGZvcmVpZ24ga2V5cworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMg U0VUIE5VTEwKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxU CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisgIEFMVEVS IENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RS QUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJB SU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZworCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBE RUZBVUxUOworRVJST1I6ICBhY3Rpb24gbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9y ZWlnbiBrZXlzCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVM VAorRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nOworRFJPUCBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmc7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3dpdGhvdXRfb3ZlcmxhcHMuc3FsCmluZGV4IGM4ZThhYjk5NGEwLi42NDFjZGQ1YjE5ZiAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKQEAgLTI4 OCwzICsyODgsNTM4IEBAIFNFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JE RVIgQlkgaWQsIHZhbGlkX2F0OwogU0VMRUNUICogRlJPTSB0cDEgT1JERVIgQlkgaWQsIHZh bGlkX2F0OwogU0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogRFJP UCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKKworLS0KKy0tIHRlc3QgRksgZGVwZW5k ZW5jaWVzCistLQorCistLSBjYW4ndCBkcm9wIGEgcmFuZ2UgcmVmZXJlbmNlZCBieSBhbiBG SywgdW5sZXNzIHdpdGggQ0FTQ0FERQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQg aW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbDNf cGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0NS RUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFs aWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdO IEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9y YWwzIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBE Uk9QIENPTFVNTiB2YWxpZF9hdDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBEUk9QIENPTFVN TiB2YWxpZF9hdCBDQVNDQURFOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nOwor RFJPUCBUQUJMRSB0ZW1wb3JhbDM7CisKKy0tCistLSB0ZXN0IEZPUkVJR04gS0VZLCByYW5n ZSByZWZlcmVuY2VzIHJhbmdlCistLQorCistLSBDYW4ndCBjcmVhdGUgYSBGSyB3aXRoIGEg bWlzbWF0Y2hlZCByYW5nZSB0eXBlCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGludDRyYW5nZSwKKwlwYXJlbnRfaWQg aW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wazIgUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfZmsyIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRf YXQpCispOworCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50 NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxp ZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJy bmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZF UkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitEUk9QIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7CisKKy0tIHdpdGggbWlzbWF0Y2hlZCBQRVJJT0Qg Y29sdW1uczoKKy0tIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkgUkVGRVJFTkNFUyAo aWQsIHZhbGlkX2F0KQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlk IGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2Us CisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19y bmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJ UkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCB2YWxpZF9hdCkKKyk7CistLSAocGFyZW50 X2lkLCB2YWxpZF9hdCkgUkVGRVJFTkNFUyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKK0NSRUFU RSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtF WSAocGFyZW50X2lkLCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlk LCBQRVJJT0QgdmFsaWRfYXQpCispOworLS0gKHBhcmVudF9pZCwgdmFsaWRfYXQpIFJFRkVS RU5DRVMgW2ltcGxpY2l0XQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAor CWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFu Z2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIHZhbGlkX2F0KQorCQlSRUZF UkVOQ0VTIHRlbXBvcmFsX3JuZworKTsKKy0tIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkgUkVGRVJFTkNFUyAoaWQpCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAo CisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRy YW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkg KGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0 KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQpCispOworLS0gKHBhcmVudF9pZCkg UkVGRVJFTkNFUyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlw YXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkKQor CQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CisK Ky0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGU6CitDUkVBVEUg VEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0 IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZworKTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZzsKKworLS0gc2hvdWxkIGZh aWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0 c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChw YXJlbnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5n IChpZCwgUEVSSU9EIGlkKQorKTsKKworLS0gVHdvIHNjYWxhciBjb2x1bW5zCitDUkVBVEUg VEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9h dCB0c3JhbmdlLAorCXBhcmVudF9pZDEgaW50NHJhbmdlLAorCXBhcmVudF9pZDIgaW50NHJh bmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkg KGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFs X2ZrMl9ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQ RVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMiAoaWQxLCBpZDIs IFBFUklPRCB2YWxpZF9hdCkKKyk7CitcZCB0ZW1wb3JhbF9mazJfcm5nMnJuZworRFJPUCBU QUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZzsKKworLS0KKy0tIHRlc3QgQUxURVIgVEFCTEUg QUREIENPTlNUUkFJTlQKKy0tCisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50 NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgdGVt cG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdf ZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJF TkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpOworLS0gVHdvIHNjYWxh ciBjb2x1bW5zOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nICgKKwlpZCBp bnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQxIGludDRyYW5nZSwK KwlwYXJlbnRfaWQyIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcy cm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7 CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrMl9ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVu dF9pZDIsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIgKGlk MSwgaWQyLCBQRVJJT0QgdmFsaWRfYXQpOworXGQgdGVtcG9yYWxfZmsyX3JuZzJybmcKKwor LS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSwgYW5kIHdyb25n IGNvbHVtbiB0eXBlOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1Ag Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAorCUFMVEVSIENPTFVNTiB2YWxp ZF9hdCBUWVBFIGRhdGVyYW5nZSBVU0lORyBkYXRlcmFuZ2UobG93ZXIodmFsaWRfYXQpOjpk YXRlLCB1cHBlcih2YWxpZF9hdCk6OmRhdGUpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JF SUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1w b3JhbF9ybmc7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUxURVIgQ09M VU1OIHZhbGlkX2F0IFRZUEUgdHNyYW5nZSBVU0lORyB0c3JhbmdlKGxvd2VyKHZhbGlkX2F0 KSwgdXBwZXIodmFsaWRfYXQpKTsKKworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVm ZXJlbmNlZCB0YWJsZToKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQg Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworCist LSBzaG91bGQgZmFpbCBiZWNhdXNlIG9mIGR1cGxpY2F0ZSByZWZlcmVuY2VkIGNvbHVtbnM6 CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19mazIKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg cGFyZW50X2lkKQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIGlkKTsK KworLS0KKy0tIHRlc3Qgd2l0aCByb3dzIGFscmVhZHkKKy0tCisKK0RFTEVURSBGUk9NIHRl bXBvcmFsX2ZrX3JuZzJybmc7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJ RFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMS0w MicsICcyMDE4LTAyLTAxJyksICdbMSwxXScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JF SUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1w b3JhbF9ybmc7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m a19ybmcycm5nIFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4 LTA0LTAxJyksICdbMSwxXScpOworLS0gc2hvdWxkIGZhaWw6CitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m aworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZzsKKy0tIG9rYXkgYWdhaW46CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ma19ybmcycm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CisKKy0t CistLSB0ZXN0IHBnX2dldF9jb25zdHJhaW50ZGVmCistLQorCitTRUxFQ1QgcGdfZ2V0X2Nv bnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrJzsKKworLS0KKy0tIHRlc3QgRksgY2hpbGQgaW5zZXJ0 cworLS0KKworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMSwx XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKKy0t IHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMg KCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEsMV0n KTsKKy0tIG5vdyBpdCBzaG91bGQgd29yazoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDItMDMnLCAnMjAxOC0wMy0wMycpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CisKKy0tCistLSB0 ZXN0IEZLIGNoaWxkIHVwZGF0ZXMKKy0tCisKK1VQREFURSB0ZW1wb3JhbF9ma19ybmcycm5n IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMy0wMScpIFdI RVJFIGlkID0gJ1sxLDFdJzsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHRlbXBvcmFsX2Zr X3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA1 LTAxJykgV0hFUkUgaWQgPSAnWzEsMV0nOworVVBEQVRFIHRlbXBvcmFsX2ZrX3JuZzJybmcg U0VUIHBhcmVudF9pZCA9ICdbOCw4XScgV0hFUkUgaWQgPSAnWzEsMV0nOworCistLSBBTFRF UiBGSyBERUZFUlJBQkxFCisKK0JFR0lOOworICBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcg VkFMVUVTCisgICAgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpKSwKKyAgICAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAx JykpOworICBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUworICAgICgn WzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7 CisgIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKyAgICBBTFRFUiBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKyAgICBERUZFUlJBQkxFIElOSVRJQUxMWSBE RUZFUlJFRDsKKworICBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUs NV0nOyAtLXNob3VsZCBub3QgZmFpbCB5ZXQuCitDT01NSVQ7IC0tIHNob3VsZCBmYWlsIGhl cmUuCisKKy0tCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIE5PIEFDVElPTgorLS0KKwor LS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlz bid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUs NV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitVUERBVEUgdGVt cG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0w Mi0wMScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2Vl ZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRo ZSByYW5nZSBpc24ndDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdb NSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNd JywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworVVBE QVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAyLTAxJywg JzIwMTYtMDMtMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFu Z2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyB1cGRhdGUgdGhhdCBm YWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgdGVtcG9yYWxfcm5n IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJyk7CistLSBjaGFuZ2luZyB0aGUgc2NhbGFyIHBhcnQgZmFpbHM6CitV UERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3XScKK1dIRVJFIGlkID0gJ1s1LDVd JyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsK Ky0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQ SyB1cGRhdGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1szLDNdJzsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVd JyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsK Ky0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBw YXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlk ID0gJ1s1LDVdJzsKKworLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJQ1QK Ky0tCisKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3Ju ZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9y YWxfcm5nCisJT04gREVMRVRFIFJFU1RSSUNUOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNj ZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKSk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9 IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpIFdIRVJFIGlkID0gJ1s1LDVd JzsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVy aWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgt MDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0 c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScs ICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0w My0wMScpOworLS0gYSBQSyB1cGRhdGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJl ZmVyZW5jZWQ6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjaGFu Z2luZyB0aGUgc2NhbGFyIHBhcnQgZmFpbHM6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBp ZCA9ICdbNyw3XScKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmpl Y3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKK1VQREFU RSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcy MDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZS T00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVM RVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tCistLSB0ZXN0 IEZLIHBhcmVudCBkZWxldGVzIE5PIEFDVElPTgorLS0KK0FMVEVSIFRBQkxFIHRlbXBvcmFs X2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworLS0gYSBQSyBkZWxldGUgdGhh dCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hF UkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBldmVuIHRo b3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlz bid0OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIGRlbGV0ZSB0 aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0 aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRF IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworCistLQorLS0gdGVzdCBGSyBw YXJlbnQgZGVsZXRlcyBSRVNUUklDVAorLS0KKworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hF UkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBldmVuIHRo b3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlz bid0OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIGRlbGV0ZSB0 aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0 aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRF IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworCistLQorLS0gdGVzdCBPTiBV UERBVEUvREVMRVRFIG9wdGlvbnMKKy0tCisKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMg Q0FTQ0FERQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJy bmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKKwlBREQgQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04g REVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7CisKKy0tIHRlc3QgRksgcGFyZW50 IHVwZGF0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb OSw5XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s5LDldJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmss CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxf cm5nCisJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CisKKy0tIHRl c3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbLTEsLTFdJywgdHNyYW5nZShudWxsLCBudWxsKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcg VkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwg J1sxMiwxMl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKyAgQUxURVIg Q09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisJRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxf Zmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJCU9OIERFTEVURSBTRVQgREVGQVVM VCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CisKKy0tIEZLIGJldHdlZW4gcGFydGl0aW9uZWQg dGFibGVzCisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKAorCWlk IGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4dCwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKK0NS RUFURSBUQUJMRSB0cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBG T1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzks OV0nLCAnWzExLDExXScpOworQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScsICdbNCw0XScsICdb Niw2XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgn MjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwKKyAgKCdbMSwxXScsIGRhdGVy YW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUnKSwKKyAgKCdbMiwyXScs IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICd0d28nKTsKKworQ1JF QVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgKAorCWlkIGludDRy YW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlD T05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKK0NS RUFURSBUQUJMRSB0ZmtwMSBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcs N10nLCAnWzksOV0nLCAnWzExLDExXScpOworQ1JFQVRFIFRBQkxFIHRma3AyIHBhcnRpdGlv biBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdb MiwyXScsICdbNCw0XScsICdbNiw2XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0n KTsKKworLS0gcGFydGl0aW9uZWQgRksgY2hpbGQgaW5zZXJ0cworCitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUworICAoJ1sxLDFdJywgZGF0 ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMTUnKSwgJ1sxLDFdJyksCisgICgnWzEs MV0nLCBkYXRlcmFuZ2UoJzIwMDEtMDEtMDEnLCAnMjAwMi0wMS0wMScpLCAnWzIsMl0nKSwK KyAgKCdbMiwyXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdb MSwxXScpOworLS0gc2hvdWxkIGZhaWw6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nIFZBTFVFUworICAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDEwLTAx LTAxJywgJzIwMTAtMDItMTUnKSwgJ1sxLDFdJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUworICAoJ1szLDNdJywgZGF0ZXJhbmdlKCcy MDAwLTAxLTAxJywgJzIwMDAtMDItMTUnKSwgJ1szLDNdJyk7CisKKy0tIHBhcnRpdGlvbmVk IEZLIGNoaWxkIHVwZGF0ZXMKKworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDIt MTMnKSBXSEVSRSBpZCA9ICdbMiwyXSc7CistLSBtb3ZlIGEgcm93IGZyb20gdGhlIGZpcnN0 IHBhcnRpdGlvbiB0byB0aGUgc2Vjb25kCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyBTRVQgaWQgPSAnWzQsNF0nIFdIRVJFIGlkID0gJ1sxLDFdJzsKKy0tIG1v dmUgYSByb3cgZnJvbSB0aGUgc2Vjb25kIHBhcnRpdGlvbiB0byB0aGUgZmlyc3QKK1VQREFU RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCBpZCA9ICdbMSwxXScgV0hF UkUgaWQgPSAnWzQsNF0nOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMDAtMDEt MDEnLCAnMjAwMC0wNC0wMScpIFdIRVJFIGlkID0gJ1sxLDFdJzsKKworLS0gcGFydGl0aW9u ZWQgRksgcGFyZW50IHVwZGF0ZXMgTk8gQUNUSU9OCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxNi0wMS0w MScsICcyMDE2LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBT RVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpIFdI RVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxV RVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdb NSw1XScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQg PSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScpCisgIFdIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0w My0wMScpOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAx JykKKyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVd JzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdb NSw1XSc7CisKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIE5PIEFDVElPTgor CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0n LCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgn MjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0w MS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRl cmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7 CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tIHBhcnRpdGlvbmVk IEZLIHBhcmVudCB1cGRhdGVzIFJFU1RSSUNUCisKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZ19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQor CVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJT04gREVMRVRFIFJFU1RS SUNUOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1 LDVdJywgZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSk7CitVUERBVEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdl KCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4 LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMi0wMScsICcy MDE2LTAzLTAxJykKKyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVy YW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBzaG91bGQgZmFpbDoKK1VQ REFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdl KCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorICBXSEVSRSBpZCA9ICdbNSw1XScgQU5E IHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0t IGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKworLS0gcGFydGl0aW9uZWQgRksg cGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIw MTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFM VUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgn WzMsM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0n KTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdb NSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMt MDEnKTsKKy0tIHNob3VsZCBmYWlsOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQg dXBkYXRlcyBDQVNDQURFCisKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJ UkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKKwkJT04gREVMRVRFIENBU0NB REUgT04gVVBEQVRFIENBU0NBREU7CisKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxl dGVzIENBU0NBREUKKworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VUIE5V TEwKKworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCURS T1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAorCUFE RCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKKwkJRk9S RUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZworCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRF IFNFVCBOVUxMOworCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgTlVM TAorCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVGQVVMVAorCitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisgIEFMVEVSIENP TFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlO VCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZworCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZB VUxUOworCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAor CitEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmc7CitEUk9QIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZzsKLS0gCjIuNDIuMAoK --------------4ZTQGZiKJvMMlo81itiM0iLZ Content-Type: text/x-patch; charset=UTF-8; name="v24-0004-Add-multi-range_without_portion-proc-operator.patch" Content-Disposition: attachment; filename*0="v24-0004-Add-multi-range_without_portion-proc-operator.patch" Content-Transfer-Encoding: base64 RnJvbSBkNDA4YmQwNTYxYmVjMDliM2QzZTIyN2FlYjgxMGY1NjQzYzMxY2Q1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgMzAgRGVjIDIwMjMgMjM6MTA6NTkgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyNCA0LzddIEFkZCB7bXVsdGksfXJhbmdlX3dpdGhvdXRf cG9ydGlvbiBwcm9jICYgb3BlcmF0b3IKClRoZXNlIHJldHVybiBhbiBhcnJheSBvZiB0aGVp ciBpbnB1dCB0eXBlIGFyZSB3b3JrIGxpa2UgbWludXMgYnV0IGRvbid0CmZhaWwgb24gc3Bs aXRzLiBUaGV5IG5ldmVyIGNvbnRhaW4gZW1wdHkgZWxlbWVudHMuIFdlIHdpbGwgdXNlIHRo aXMgdG8Kc3VwcG9ydCBGT1IgUE9SVElPTiBPRi4KLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxv Z3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9tdWx0aXJhbmdldHlwZXMuYyAgICAgICB8ICA0OSArKysrKysrCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jICAgICAgICAgICAgfCAxMjQgKysrKysrKysrKysr KysrKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZXJhdG9yLmRhdCAgICAgICAgICAg fCAgIDYgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAg IHwgICA2ICsKIHNyYy9pbmNsdWRlL3V0aWxzL3JhbmdldHlwZXMuaCAgICAgICAgICAgICAg ICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL211bHRpcmFuZ2V0eXBlcy5v dXQgfCAxMjEgKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cmFuZ2V0eXBlcy5vdXQgICAgICB8ICA1NCArKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9z cWwvbXVsdGlyYW5nZXR5cGVzLnNxbCAgICAgIHwgIDIyICsrKysKIHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3JhbmdldHlwZXMuc3FsICAgICAgICAgICB8ICAxMCArKwogMTAgZmlsZXMgY2hh bmdlZCwgMzk1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21s CmluZGV4IDE2Yjk0NDYxYjJjLi4wY2E0ZWQ2YzJmOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAg LTg2NSw3ICs4NjUsNyBAQAogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAg VGhlIEItdHJlZSBvcGVyYXRvciBmYW1pbHkgdGhpcyBlbnRyeSBzb3J0cyBhY2NvcmRpbmcg dG8sIGlmIGFuCi0gICAgICAgb3JkZXJpbmcgb3BlcmF0b3I7IHplcm8gaWYgYSBzZWFyY2gg b3BlcmF0b3IKKyAgICAgICBvcmRlcmluZyBvcGVyYXRvcjsgemVybyBpZiBhIHNlYXJjaCBv cGVyYXRvciBvciBwb3J0aW9uIG9wZXJhdG9yCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAg ICAgPC9yb3c+CiAgICAgPC90Ym9keT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9tdWx0aXJhbmdldHlwZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tdWx0aXJh bmdldHlwZXMuYwppbmRleCBmODJlNmY0MmQ5OC4uYjcwNWFlZTZiZTUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9tdWx0aXJhbmdldHlwZXMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvbXVsdGlyYW5nZXR5cGVzLmMKQEAgLTEyMjYsNiArMTIyNiw1NSBA QCBtdWx0aXJhbmdlX21pbnVzX2ludGVybmFsKE9pZCBtbHRybmd0eXBvaWQsIFR5cGVDYWNo ZUVudHJ5ICpyYW5nZXR5cCwKIAlyZXR1cm4gbWFrZV9tdWx0aXJhbmdlKG1sdHJuZ3R5cG9p ZCwgcmFuZ2V0eXAsIHJhbmdlX2NvdW50MywgcmFuZ2VzMyk7CiB9CiAKKy8qCisgKiBtdWx0 aXJhbmdlIG1pbnVzIGJ1dCByZXR1cm5pbmcgYW4gYXJyYXkgb2Ygb25lLAorICogb3IgemVy byBpZiB0aGUgcmVzdWx0IHdvdWxkIGJlIGVtcHR5LgorICovCisKK0RhdHVtCittdWx0aXJh bmdlX3dpdGhvdXRfcG9ydGlvbihQR19GVU5DVElPTl9BUkdTKQoreworCU11bHRpcmFuZ2VU eXBlICptcjEgPSBQR19HRVRBUkdfTVVMVElSQU5HRV9QKDApOworCU11bHRpcmFuZ2VUeXBl ICptcjIgPSBQR19HRVRBUkdfTVVMVElSQU5HRV9QKDEpOworCU9pZAkJCW1sdHJuZ3R5cG9p ZCA9IE11bHRpcmFuZ2VUeXBlR2V0T2lkKG1yMSk7CisJVHlwZUNhY2hlRW50cnkgKnR5cGNh Y2hlOworCVR5cGVDYWNoZUVudHJ5ICpyYW5nZXR5cDsKKwlpbnQzMgkJcmFuZ2VfY291bnQx OworCWludDMyCQlyYW5nZV9jb3VudDI7CisJUmFuZ2VUeXBlICoqcmFuZ2VzMTsKKwlSYW5n ZVR5cGUgKipyYW5nZXMyOworCU11bHRpcmFuZ2VUeXBlICptcjsKKwlEYXR1bQlkYXR1bXNb MV07CisJQXJyYXlUeXBlICpyZXQ7CisKKwl0eXBjYWNoZSA9IG11bHRpcmFuZ2VfZ2V0X3R5 cGNhY2hlKGZjaW5mbywgbWx0cm5ndHlwb2lkKTsKKwlyYW5nZXR5cCA9IHR5cGNhY2hlLT5y bmd0eXBlOworCisJaWYgKE11bHRpcmFuZ2VJc0VtcHR5KG1yMSkgfHwgTXVsdGlyYW5nZUlz RW1wdHkobXIyKSkKKwkJbXIgPSBtcjE7CisJZWxzZQorCXsKKwkJbXVsdGlyYW5nZV9kZXNl cmlhbGl6ZSh0eXBjYWNoZS0+cm5ndHlwZSwgbXIxLCAmcmFuZ2VfY291bnQxLCAmcmFuZ2Vz MSk7CisJCW11bHRpcmFuZ2VfZGVzZXJpYWxpemUodHlwY2FjaGUtPnJuZ3R5cGUsIG1yMiwg JnJhbmdlX2NvdW50MiwgJnJhbmdlczIpOworCisJCW1yID0gbXVsdGlyYW5nZV9taW51c19p bnRlcm5hbChtbHRybmd0eXBvaWQsCisJCQkJCQkJCQkgICByYW5nZXR5cCwKKwkJCQkJCQkJ CSAgIHJhbmdlX2NvdW50MSwKKwkJCQkJCQkJCSAgIHJhbmdlczEsCisJCQkJCQkJCQkgICBy YW5nZV9jb3VudDIsCisJCQkJCQkJCQkgICByYW5nZXMyKTsKKwl9CisKKwlpZiAoTXVsdGly YW5nZUlzRW1wdHkobXIpKQorCQlQR19SRVRVUk5fQVJSQVlUWVBFX1AoY29uc3RydWN0X2Vt cHR5X2FycmF5KHR5cGNhY2hlLT50eXBlX2lkKSk7CisJZWxzZQorCXsKKwkJZGF0dW1zWzBd ID0gTXVsdGlyYW5nZVR5cGVQR2V0RGF0dW0obXIpOworCQlyZXQgPSBjb25zdHJ1Y3RfYXJy YXkoZGF0dW1zLCAxLCB0eXBjYWNoZS0+dHlwZV9pZCwgdHlwY2FjaGUtPnR5cGxlbiwgdHlw Y2FjaGUtPnR5cGJ5dmFsLCB0eXBjYWNoZS0+dHlwYWxpZ24pOworCQlQR19SRVRVUk5fQVJS QVlUWVBFX1AocmV0KTsKKwl9Cit9CisKIC8qIG11bHRpcmFuZ2UgaW50ZXJzZWN0aW9uICov CiBEYXR1bQogbXVsdGlyYW5nZV9pbnRlcnNlY3QoUEdfRlVOQ1RJT05fQVJHUykKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jCmluZGV4IDJkOTRhNmI4Nzc0Li41YTNhMGExZTE4 YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jCkBAIC0zOSw2ICszOSw3IEBA CiAjaW5jbHVkZSAib3B0aW1pemVyL2NsYXVzZXMuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIv Y29zdC5oIgogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKKyNpbmNsdWRlICJ1 dGlscy9hcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAi dXRpbHMvZGF0ZS5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgpAQCAtMTIxMyw2 ICsxMjE0LDEyOSBAQCByYW5nZV9zcGxpdF9pbnRlcm5hbChUeXBlQ2FjaGVFbnRyeSAqdHlw Y2FjaGUsIGNvbnN0IFJhbmdlVHlwZSAqcjEsIGNvbnN0IFJhbmdlVAogCXJldHVybiBmYWxz ZTsKIH0KIAorLyogc3VidHJhY3Rpb24gYnV0IHJldHVybmluZyBhbiBhcnJheSB0byBhY2Nv bW1vZGF0ZSBzcGxpdHMgKi8KK0RhdHVtCityYW5nZV93aXRob3V0X3BvcnRpb24oUEdfRlVO Q1RJT05fQVJHUykKK3sKKwlSYW5nZVR5cGUgICpyMSA9IFBHX0dFVEFSR19SQU5HRV9QKDAp OworCVJhbmdlVHlwZSAgKnIyID0gUEdfR0VUQVJHX1JBTkdFX1AoMSk7CisJUmFuZ2VUeXBl ICAqcnNbMl07CisJaW50CQkJbjsKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGU7CisKKwkv KiBEaWZmZXJlbnQgdHlwZXMgc2hvdWxkIGJlIHByZXZlbnRlZCBieSBBTllSQU5HRSBtYXRj aGluZyBydWxlcyAqLworCWlmIChSYW5nZVR5cGVHZXRPaWQocjEpICE9IFJhbmdlVHlwZUdl dE9pZChyMikpCisJCWVsb2coRVJST1IsICJyYW5nZSB0eXBlcyBkbyBub3QgbWF0Y2giKTsK KworCXR5cGNhY2hlID0gcmFuZ2VfZ2V0X3R5cGNhY2hlKGZjaW5mbywgUmFuZ2VUeXBlR2V0 T2lkKHIxKSk7CisKKwlyYW5nZV93aXRob3V0X3BvcnRpb25faW50ZXJuYWwodHlwY2FjaGUs IHIxLCByMiwgcnMsICZuKTsKKworCWlmIChuID09IDApCisJCVBHX1JFVFVSTl9BUlJBWVRZ UEVfUChjb25zdHJ1Y3RfZW1wdHlfYXJyYXkodHlwY2FjaGUtPnR5cGVfaWQpKTsKKwllbHNl CisJeworCQlEYXR1bQkJeHNbMl07CisJCWludAkJCWk7CisJCUFycmF5VHlwZQkqcmV0Owor CisJCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspCisJCQl4c1tpXSA9IFJhbmdlVHlwZVBHZXRE YXR1bShyc1tpXSk7CisKKwkJcmV0ID0gY29uc3RydWN0X2FycmF5KHhzLCBuLCB0eXBjYWNo ZS0+dHlwZV9pZCwgdHlwY2FjaGUtPnR5cGxlbiwgdHlwY2FjaGUtPnR5cGJ5dmFsLCB0eXBj YWNoZS0+dHlwYWxpZ24pOworCQlQR19SRVRVUk5fQVJSQVlUWVBFX1AocmV0KTsKKwl9Cit9 CisKKy8qCisgKiByYW5nZV93aXRob3V0X3BvcnRpb25faW50ZXJuYWwgLSBTZXRzIG91dHB1 dHMgYW5kIG91dHB1dG4gdG8gdGhlIHJhbmdlcworICogcmVtYWluaW5nIGFuZCB0aGVpciBj b3VudCAocmVzcGVjdGl2ZWx5KSBhZnRlciBzdWJ0cmFjdGluZyByMiBmcm9tIHIxLgorICog VGhlIGFycmF5IHNob3VsZCBuZXZlciBjb250YWluIGVtcHR5IHJhbmdlcy4KKyAqIFRoZSBv dXRwdXRzIHdpbGwgYmUgb3JkZXJlZC4gV2UgZXhwZWN0IHRoYXQgb3V0cHV0cyBpcyBhbiBh cnJheSBvZgorICogUmFuZ2VUeXBlIHBvaW50ZXJzLCBhbHJlYWR5IGFsbG9jYXRlZCB3aXRo IHR3byBzbG90cy4KKyAqLwordm9pZAorcmFuZ2Vfd2l0aG91dF9wb3J0aW9uX2ludGVybmFs KFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwgUmFuZ2VUeXBlICpyMSwKKwkJCQkJCQkgICBS YW5nZVR5cGUgKnIyLCBSYW5nZVR5cGUgKipvdXRwdXRzLCBpbnQgKm91dHB1dG4pCit7CisJ aW50CQkJY21wX2wxbDIsCisJCQkJY21wX2wxdTIsCisJCQkJY21wX3UxbDIsCisJCQkJY21w X3UxdTI7CisJUmFuZ2VCb3VuZAlsb3dlcjEsCisJCQkJbG93ZXIyOworCVJhbmdlQm91bmQJ dXBwZXIxLAorCQkJCXVwcGVyMjsKKwlib29sCQllbXB0eTEsCisJCQkJZW1wdHkyOworCisJ cmFuZ2VfZGVzZXJpYWxpemUodHlwY2FjaGUsIHIxLCAmbG93ZXIxLCAmdXBwZXIxLCAmZW1w dHkxKTsKKwlyYW5nZV9kZXNlcmlhbGl6ZSh0eXBjYWNoZSwgcjIsICZsb3dlcjIsICZ1cHBl cjIsICZlbXB0eTIpOworCisJaWYgKGVtcHR5MSkKKwl7CisJCS8qIGlmIHIxIGlzIGVtcHR5 IHRoZW4gcjEgLSByMiBpcyBlbXB0eSwgc28gcmV0dXJuIHplcm8gcmVzdWx0cyAqLworCQkq b3V0cHV0biA9IDA7CisJCXJldHVybjsKKwl9CisJZWxzZSBpZiAoZW1wdHkyKQorCXsKKwkJ LyogcjIgaXMgZW1wdHkgc28gdGhlIHJlc3VsdCBpcyBqdXN0IHIxICh3aGljaCB3ZSBrbm93 IGlzIG5vdCBlbXB0eSkgKi8KKwkJb3V0cHV0c1swXSA9IHIxOworCQkqb3V0cHV0biA9IDE7 CisJCXJldHVybjsKKwl9CisKKwkvKgorCSAqIFVzZSB0aGUgc2FtZSBsb2dpYyBhcyByYW5n ZV9taW51c19pbnRlcm5hbCwKKwkgKiBidXQgc3VwcG9ydCB0aGUgc3BsaXQgY2FzZQorCSAq LworCWNtcF9sMWwyID0gcmFuZ2VfY21wX2JvdW5kcyh0eXBjYWNoZSwgJmxvd2VyMSwgJmxv d2VyMik7CisJY21wX2wxdTIgPSByYW5nZV9jbXBfYm91bmRzKHR5cGNhY2hlLCAmbG93ZXIx LCAmdXBwZXIyKTsKKwljbXBfdTFsMiA9IHJhbmdlX2NtcF9ib3VuZHModHlwY2FjaGUsICZ1 cHBlcjEsICZsb3dlcjIpOworCWNtcF91MXUyID0gcmFuZ2VfY21wX2JvdW5kcyh0eXBjYWNo ZSwgJnVwcGVyMSwgJnVwcGVyMik7CisKKwlpZiAoY21wX2wxbDIgPCAwICYmIGNtcF91MXUy ID4gMCkKKwl7CisJCWxvd2VyMi5pbmNsdXNpdmUgPSAhbG93ZXIyLmluY2x1c2l2ZTsKKwkJ bG93ZXIyLmxvd2VyID0gZmFsc2U7CS8qIGl0IHdpbGwgYmVjb21lIHRoZSB1cHBlciBib3Vu ZCAqLworCQlvdXRwdXRzWzBdID0gbWFrZV9yYW5nZSh0eXBjYWNoZSwgJmxvd2VyMSwgJmxv d2VyMiwgZmFsc2UsIE5VTEwpOworCisJCXVwcGVyMi5pbmNsdXNpdmUgPSAhdXBwZXIyLmlu Y2x1c2l2ZTsKKwkJdXBwZXIyLmxvd2VyID0gdHJ1ZTsJLyogaXQgd2lsbCBiZWNvbWUgdGhl IGxvd2VyIGJvdW5kICovCisJCW91dHB1dHNbMV0gPSBtYWtlX3JhbmdlKHR5cGNhY2hlLCAm dXBwZXIyLCAmdXBwZXIxLCBmYWxzZSwgTlVMTCk7CisKKwkJKm91dHB1dG4gPSAyOworCX0K KwllbHNlIGlmIChjbXBfbDF1MiA+IDAgfHwgY21wX3UxbDIgPCAwKQorCXsKKwkJb3V0cHV0 c1swXSA9IHIxOworCQkqb3V0cHV0biA9IDE7CisJfQorCWVsc2UgaWYgKGNtcF9sMWwyID49 IDAgJiYgY21wX3UxdTIgPD0gMCkKKwl7CisJCSpvdXRwdXRuID0gMDsKKwl9CisJZWxzZSBp ZiAoY21wX2wxbDIgPD0gMCAmJiBjbXBfdTFsMiA+PSAwICYmIGNtcF91MXUyIDw9IDApCisJ eworCQlsb3dlcjIuaW5jbHVzaXZlID0gIWxvd2VyMi5pbmNsdXNpdmU7CisJCWxvd2VyMi5s b3dlciA9IGZhbHNlOwkvKiBpdCB3aWxsIGJlY29tZSB0aGUgdXBwZXIgYm91bmQgKi8KKwkJ b3V0cHV0c1swXSA9IG1ha2VfcmFuZ2UodHlwY2FjaGUsICZsb3dlcjEsICZsb3dlcjIsIGZh bHNlLCBOVUxMKTsKKwkJKm91dHB1dG4gPSAxOworCX0KKwllbHNlIGlmIChjbXBfbDFsMiA+ PSAwICYmIGNtcF91MXUyID49IDAgJiYgY21wX2wxdTIgPD0gMCkKKwl7CisJCXVwcGVyMi5p bmNsdXNpdmUgPSAhdXBwZXIyLmluY2x1c2l2ZTsKKwkJdXBwZXIyLmxvd2VyID0gdHJ1ZTsJ LyogaXQgd2lsbCBiZWNvbWUgdGhlIGxvd2VyIGJvdW5kICovCisJCW91dHB1dHNbMF0gPSBt YWtlX3JhbmdlKHR5cGNhY2hlLCAmdXBwZXIyLCAmdXBwZXIxLCBmYWxzZSwgTlVMTCk7CisJ CSpvdXRwdXRuID0gMTsKKwl9CisJZWxzZQorCXsKKwkJZWxvZyhFUlJPUiwgInVuZXhwZWN0 ZWQgY2FzZSBpbiByYW5nZV93aXRob3V0X3BvcnRpb24iKTsKKwl9Cit9CisKIC8qIHJhbmdl IC0+IHJhbmdlIGFnZ3JlZ2F0ZSBmdW5jdGlvbnMgKi8KIAogRGF0dW0KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BlcmF0b3IuZGF0IGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19vcGVyYXRvci5kYXQKaW5kZXggMGU3NTExZGRlMWMuLmQyMjZjODRhYWIzIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZXJhdG9yLmRhdAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX29wZXJhdG9yLmRhdApAQCAtMzQ1Nyw1ICszNDU3LDEx IEBACiAgIG9wcnJlc3VsdCA9PiAnYm9vbCcsIG9wcmNvbSA9PiAnPDwoYW55bXVsdGlyYW5n ZSxhbnltdWx0aXJhbmdlKScsCiAgIG9wcmNvZGUgPT4gJ211bHRpcmFuZ2VfYWZ0ZXJfbXVs dGlyYW5nZScsIG9wcnJlc3QgPT4gJ211bHRpcmFuZ2VzZWwnLAogICBvcHJqb2luID0+ICdz Y2FsYXJndGpvaW5zZWwnIH0sCit7IG9pZCA9PiAnODQwOScsIGRlc2NyID0+ICdyYW5nZSB3 aXRob3V0IHBvcnRpb24nLAorICBvcHJuYW1lID0+ICdALScsIG9wcmxlZnQgPT4gJ2FueXJh bmdlJywgb3BycmlnaHQgPT4gJ2FueXJhbmdlJywKKyAgb3BycmVzdWx0ID0+ICdhbnlhcnJh eScsIG9wcmNvZGUgPT4gJ3JhbmdlX3dpdGhvdXRfcG9ydGlvbicgfSwKK3sgb2lkID0+ICc4 NDA3JywgZGVzY3IgPT4gJ211bHRpcmFuZ2Ugd2l0aG91dCBwb3J0aW9uJywKKyAgb3BybmFt ZSA9PiAnQC0nLCBvcHJsZWZ0ID0+ICdhbnltdWx0aXJhbmdlJywgb3BycmlnaHQgPT4gJ2Fu eW11bHRpcmFuZ2UnLAorICBvcHJyZXN1bHQgPT4gJ2FueWFycmF5Jywgb3ByY29kZSA9PiAn bXVsdGlyYW5nZV93aXRob3V0X3BvcnRpb24nIH0sCiAKIF0KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CmluZGV4IDlkOTQyY2M0MTkxLi43YzExYjc2Nzc1OCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CkBAIC0xMDU4Miw2ICsxMDU4Miw5IEBACiB7IG9pZCA9PiAnMzg2OScs CiAgIHByb25hbWUgPT4gJ3JhbmdlX21pbnVzJywgcHJvcmV0dHlwZSA9PiAnYW55cmFuZ2Un LAogICBwcm9hcmd0eXBlcyA9PiAnYW55cmFuZ2UgYW55cmFuZ2UnLCBwcm9zcmMgPT4gJ3Jh bmdlX21pbnVzJyB9LAoreyBvaWQgPT4gJzg0MDgnLAorICBwcm9uYW1lID0+ICdyYW5nZV93 aXRob3V0X3BvcnRpb24nLCBwcm9yZXR0eXBlID0+ICdhbnlhcnJheScsCisgIHByb2FyZ3R5 cGVzID0+ICdhbnlyYW5nZSBhbnlyYW5nZScsIHByb3NyYyA9PiAncmFuZ2Vfd2l0aG91dF9w b3J0aW9uJyB9LAogeyBvaWQgPT4gJzM4NzAnLCBkZXNjciA9PiAnbGVzcy1lcXVhbC1ncmVh dGVyJywKICAgcHJvbmFtZSA9PiAncmFuZ2VfY21wJywgcHJvcmV0dHlwZSA9PiAnaW50NCcs CiAgIHByb2FyZ3R5cGVzID0+ICdhbnlyYW5nZSBhbnlyYW5nZScsIHByb3NyYyA9PiAncmFu Z2VfY21wJyB9LApAQCAtMTA4NjksNiArMTA4NzIsOSBAQAogeyBvaWQgPT4gJzQyNzEnLAog ICBwcm9uYW1lID0+ICdtdWx0aXJhbmdlX21pbnVzJywgcHJvcmV0dHlwZSA9PiAnYW55bXVs dGlyYW5nZScsCiAgIHByb2FyZ3R5cGVzID0+ICdhbnltdWx0aXJhbmdlIGFueW11bHRpcmFu Z2UnLCBwcm9zcmMgPT4gJ211bHRpcmFuZ2VfbWludXMnIH0sCit7IG9pZCA9PiAnODQwNics CisgIHByb25hbWUgPT4gJ211bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uJywgcHJvcmV0dHlw ZSA9PiAnYW55YXJyYXknLAorICBwcm9hcmd0eXBlcyA9PiAnYW55bXVsdGlyYW5nZSBhbnlt dWx0aXJhbmdlJywgcHJvc3JjID0+ICdtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbicgfSwK IHsgb2lkID0+ICc0MjcyJywKICAgcHJvbmFtZSA9PiAnbXVsdGlyYW5nZV9pbnRlcnNlY3Qn LCBwcm9yZXR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywKICAgcHJvYXJndHlwZXMgPT4gJ2Fu eW11bHRpcmFuZ2UgYW55bXVsdGlyYW5nZScsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91 dGlscy9yYW5nZXR5cGVzLmggYi9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmgKaW5k ZXggMmI1NzQ4NzNjZWYuLmUxYjI1NmI2NWY0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91 dGlscy9yYW5nZXR5cGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmFuZ2V0eXBlcy5o CkBAIC0xNjQsNSArMTY0LDcgQEAgZXh0ZXJuIFJhbmdlVHlwZSAqbWFrZV9lbXB0eV9yYW5n ZShUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUpOwogZXh0ZXJuIGJvb2wgcmFuZ2Vfc3BsaXRf aW50ZXJuYWwoVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlLCBjb25zdCBSYW5nZVR5cGUgKnIx LAogCQkJCQkJCQkgY29uc3QgUmFuZ2VUeXBlICpyMiwgUmFuZ2VUeXBlICoqb3V0cHV0MSwK IAkJCQkJCQkJIFJhbmdlVHlwZSAqKm91dHB1dDIpOworZXh0ZXJuIHZvaWQgcmFuZ2Vfd2l0 aG91dF9wb3J0aW9uX2ludGVybmFsKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwgUmFuZ2VU eXBlICpyMSwKKwkJCQkJCQkJCVJhbmdlVHlwZSAqcjIsIFJhbmdlVHlwZSAqKm91dHB1dHMs IGludCAqb3V0cHV0bik7CiAKICNlbmRpZgkJCQkJCQkvKiBSQU5HRVRZUEVTX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbXVsdGlyYW5nZXR5cGVzLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbXVsdGlyYW5nZXR5cGVzLm91dAppbmRl eCA5ODA4NTg3NTMyYy4uYTQxYTg2NWNjMWQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvbXVsdGlyYW5nZXR5cGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL211bHRpcmFuZ2V0eXBlcy5vdXQKQEAgLTIyMDAsNiArMjIwMCwxMjcgQEAg U0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSwgbnVtcmFuZ2UoNCw1KSkgLSBu dW1tdWx0aXJhbmdlKG51bXJhbmdlKC0yLDAKICB7WzEsMiksWzQsNSl9CiAoMSByb3cpCiAK Ky0tIHdpdGhvdXRfcG9ydGlvbgorU0VMRUNUIG51bW11bHRpcmFuZ2UoKSBALSBudW1tdWx0 aXJhbmdlKCk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisge30KKygxIHJvdykKKworU0VM RUNUIG51bW11bHRpcmFuZ2UoKSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikpOwor ID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHt9CisoMSByb3cpCisKK1NFTEVDVCBudW1tdWx0 aXJhbmdlKG51bXJhbmdlKDEsMikpIEAtIG51bW11bHRpcmFuZ2UoKTsKKyAgP2NvbHVtbj8g ICAKKy0tLS0tLS0tLS0tLS0KKyB7IntbMSwyKX0ifQorKDEgcm93KQorCitTRUxFQ1QgbnVt bXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSgzLDQpKSBALSBudW1tdWx0aXJh bmdlKCk7CisgICAgID9jb2x1bW4/ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJ7 WzEsMiksWzMsNCl9In0KKygxIHJvdykKKworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFu Z2UoMSwyKSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpKTsKKyA/Y29sdW1uPyAK Ky0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1y YW5nZSgxLDIpKSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDIsNCkpOworICA/Y29sdW1u PyAgIAorLS0tLS0tLS0tLS0tLQorIHsie1sxLDIpfSJ9CisoMSByb3cpCisKK1NFTEVDVCBu dW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2Uo Myw0KSk7CisgID9jb2x1bW4/ICAgCistLS0tLS0tLS0tLS0tCisgeyJ7WzEsMil9In0KKygx IHJvdykKKworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSw0KSkgQC0gbnVtbXVs dGlyYW5nZShudW1yYW5nZSgxLDIpKTsKKyAgP2NvbHVtbj8gICAKKy0tLS0tLS0tLS0tLS0K KyB7IntbMiw0KX0ifQorKDEgcm93KQorCitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5n ZSgxLDQpKSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDIsMykpOworICAgICA/Y29sdW1u PyAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsie1sxLDIpLFszLDQpfSJ9CisoMSBy b3cpCisKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsNCkpIEAtIG51bW11bHRp cmFuZ2UobnVtcmFuZ2UoMCw4KSk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisge30KKygx IHJvdykKKworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSw0KSkgQC0gbnVtbXVs dGlyYW5nZShudW1yYW5nZSgwLDIpKTsKKyAgP2NvbHVtbj8gICAKKy0tLS0tLS0tLS0tLS0K KyB7IntbMiw0KX0ifQorKDEgcm93KQorCitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5n ZSgxLDgpKSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDAsMiksIG51bXJhbmdlKDMsNCkp OworICAgICA/Y29sdW1uPyAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsie1syLDMp LFs0LDgpfSJ9CisoMSByb3cpCisKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEs OCkpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMiwzKSwgbnVtcmFuZ2UoNSxudWxsKSk7 CisgICAgID9jb2x1bW4/ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJ7WzEsMiks WzMsNSl9In0KKygxIHJvdykKKworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwy KSwgbnVtcmFuZ2UoNCw1KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgtMiwwKSk7Cisg ICAgID9jb2x1bW4/ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJ7WzEsMiksWzQs NSl9In0KKygxIHJvdykKKworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSwg bnVtcmFuZ2UoNCw1KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgyLDQpKTsKKyAgICAg P2NvbHVtbj8gICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7IntbMSwyKSxbNCw1KX0i fQorKDEgcm93KQorCitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1y YW5nZSg0LDUpKSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDMsNSkpOworICA/Y29sdW1u PyAgIAorLS0tLS0tLS0tLS0tLQorIHsie1sxLDIpfSJ9CisoMSByb3cpCisKK1NFTEVDVCBu dW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkpIEAtIG51bW11bHRp cmFuZ2UobnVtcmFuZ2UoMCw5KSk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisge30KKygx IHJvdykKKworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwzKSwgbnVtcmFuZ2Uo NCw1KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgyLDkpKTsKKyAgP2NvbHVtbj8gICAK Ky0tLS0tLS0tLS0tLS0KKyB7IntbMSwyKX0ifQorKDEgcm93KQorCitTRUxFQ1QgbnVtbXVs dGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSBALSBudW1tdWx0aXJhbmdl KG51bXJhbmdlKDgsOSkpOworICAgICA/Y29sdW1uPyAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLQorIHsie1sxLDIpLFs0LDUpfSJ9CisoMSByb3cpCisKK1NFTEVDVCBudW1tdWx0aXJh bmdlKG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkpIEAtIG51bW11bHRpcmFuZ2UobnVt cmFuZ2UoLTIsMCksIG51bXJhbmdlKDgsOSkpOworICAgICA/Y29sdW1uPyAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLQorIHsie1sxLDIpLFs0LDUpfSJ9CisoMSByb3cpCisKIC0tIGlu dGVyc2VjdGlvbgogU0VMRUNUIG51bW11bHRpcmFuZ2UoKSAqIG51bW11bHRpcmFuZ2UoKTsK ICA/Y29sdW1uPyAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcmFu Z2V0eXBlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3JhbmdldHlwZXMub3V0 CmluZGV4IGE3Y2MyMjBiZjBkLi5hMjk4OWJiMDkxOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9yYW5nZXR5cGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3JhbmdldHlwZXMub3V0CkBAIC00ODEsNiArNDgxLDYwIEBAIHNlbGVjdCBy YW5nZV9taW51cyhudW1yYW5nZSgxMC4xLDEyLjIsJ1tdJyksIG51bXJhbmdlKDAuMCwxMjAu MiwnKF0nKSk7CiAgZW1wdHkKICgxIHJvdykKIAorc2VsZWN0ICdlbXB0eSc6Om51bXJhbmdl IEAtIG51bXJhbmdlKDIuMCwgMy4wKTsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB7fQor KDEgcm93KQorCitzZWxlY3QgbnVtcmFuZ2UoMS4xLCAyLjIpIEAtICdlbXB0eSc6Om51bXJh bmdlOworICAgP2NvbHVtbj8gICAgCistLS0tLS0tLS0tLS0tLS0KKyB7IlsxLjEsMi4yKSJ9 CisoMSByb3cpCisKK3NlbGVjdCBudW1yYW5nZSgxLjEsIDIuMikgQC0gbnVtcmFuZ2UoMi4w LCAzLjApOworICAgP2NvbHVtbj8gICAgCistLS0tLS0tLS0tLS0tLS0KKyB7IlsxLjEsMi4w KSJ9CisoMSByb3cpCisKK3NlbGVjdCBudW1yYW5nZSgxLjEsIDIuMikgQC0gbnVtcmFuZ2Uo Mi4yLCAzLjApOworICAgP2NvbHVtbj8gICAgCistLS0tLS0tLS0tLS0tLS0KKyB7IlsxLjEs Mi4yKSJ9CisoMSByb3cpCisKK3NlbGVjdCBudW1yYW5nZSgxLjEsIDIuMiwnW10nKSBALSBu dW1yYW5nZSgyLjAsIDMuMCk7CisgICA/Y29sdW1uPyAgICAKKy0tLS0tLS0tLS0tLS0tLQor IHsiWzEuMSwyLjApIn0KKygxIHJvdykKKworc2VsZWN0IG51bXJhbmdlKDEuMCwgMy4wKSBA LSBudW1yYW5nZSgxLjUsIDIuMCk7CisgICAgICAgICA/Y29sdW1uPyAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsiWzEuMCwxLjUpIiwiWzIuMCwzLjApIn0K KygxIHJvdykKKworc2VsZWN0IHJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1yYW5nZSgxMC4x LDEyLjIsJ1tdJyksIG51bXJhbmdlKDExMC4wLDEyMC4yLCcoXScpKTsKKyByYW5nZV93aXRo b3V0X3BvcnRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsiWzEwLjEsMTIuMl0i fQorKDEgcm93KQorCitzZWxlY3QgcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bXJhbmdlKDEw LjEsMTIuMiwnW10nKSwgbnVtcmFuZ2UoMC4wLDEyMC4yLCcoXScpKTsKKyByYW5nZV93aXRo b3V0X3BvcnRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHt9CisoMSByb3cpCisK K3NlbGVjdCByYW5nZV93aXRob3V0X3BvcnRpb24obnVtcmFuZ2UoMS4wLDMuMCwnW10nKSwg bnVtcmFuZ2UoMS41LDIuMCwnKF0nKSk7CisgICByYW5nZV93aXRob3V0X3BvcnRpb24gICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHsiWzEuMCwxLjVdIiwiKDIuMCwzLjBd In0KKygxIHJvdykKKwogc2VsZWN0IG51bXJhbmdlKDQuNSwgNS41LCAnW10nKSAmJiBudW1y YW5nZSg1LjUsIDYuNSk7CiAgP2NvbHVtbj8gCiAtLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9tdWx0aXJhbmdldHlwZXMuc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvbXVsdGlyYW5nZXR5cGVzLnNxbAppbmRleCBjYWRmMzEyMDMxZi4uYWE2ZjIw ZDhhZGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL211bHRpcmFuZ2V0eXBl cy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbXVsdGlyYW5nZXR5cGVzLnNxbApA QCAtNDE0LDYgKzQxNCwyOCBAQCBTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDMp LCBudW1yYW5nZSg0LDUpKSAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMiw5KQogU0VMRUNU IG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSwgbnVtcmFuZ2UoNCw1KSkgLSBudW1tdWx0 aXJhbmdlKG51bXJhbmdlKDgsOSkpOwogU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2Uo MSwyKSwgbnVtcmFuZ2UoNCw1KSkgLSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKC0yLDApLCBu dW1yYW5nZSg4LDkpKTsKIAorLS0gd2l0aG91dF9wb3J0aW9uCitTRUxFQ1QgbnVtbXVsdGly YW5nZSgpIEAtIG51bW11bHRpcmFuZ2UoKTsKK1NFTEVDVCBudW1tdWx0aXJhbmdlKCkgQC0g bnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpKTsKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51 bXJhbmdlKDEsMikpIEAtIG51bW11bHRpcmFuZ2UoKTsKK1NFTEVDVCBudW1tdWx0aXJhbmdl KG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDMsNCkpIEAtIG51bW11bHRpcmFuZ2UoKTsKK1NF TEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikpIEAtIG51bW11bHRpcmFuZ2UobnVt cmFuZ2UoMSwyKSk7CitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpKSBALSBu dW1tdWx0aXJhbmdlKG51bXJhbmdlKDIsNCkpOworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVt cmFuZ2UoMSwyKSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgzLDQpKTsKK1NFTEVDVCBu dW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsNCkpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2Uo MSwyKSk7CitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDQpKSBALSBudW1tdWx0 aXJhbmdlKG51bXJhbmdlKDIsMykpOworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2Uo MSw0KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgwLDgpKTsKK1NFTEVDVCBudW1tdWx0 aXJhbmdlKG51bXJhbmdlKDEsNCkpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMCwyKSk7 CitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDgpKSBALSBudW1tdWx0aXJhbmdl KG51bXJhbmdlKDAsMiksIG51bXJhbmdlKDMsNCkpOworU0VMRUNUIG51bW11bHRpcmFuZ2Uo bnVtcmFuZ2UoMSw4KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgyLDMpLCBudW1yYW5n ZSg1LG51bGwpKTsKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMiksIG51bXJh bmdlKDQsNSkpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoLTIsMCkpOworU0VMRUNUIG51 bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSwgbnVtcmFuZ2UoNCw1KSkgQC0gbnVtbXVsdGly YW5nZShudW1yYW5nZSgyLDQpKTsKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEs MiksIG51bXJhbmdlKDQsNSkpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMyw1KSk7CitT RUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSBALSBu dW1tdWx0aXJhbmdlKG51bXJhbmdlKDAsOSkpOworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVt cmFuZ2UoMSwzKSwgbnVtcmFuZ2UoNCw1KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgy LDkpKTsKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDQs NSkpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoOCw5KSk7CitTRUxFQ1QgbnVtbXVsdGly YW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSBALSBudW1tdWx0aXJhbmdlKG51 bXJhbmdlKC0yLDApLCBudW1yYW5nZSg4LDkpKTsKKwogLS0gaW50ZXJzZWN0aW9uCiBTRUxF Q1QgbnVtbXVsdGlyYW5nZSgpICogbnVtbXVsdGlyYW5nZSgpOwogU0VMRUNUIG51bW11bHRp cmFuZ2UoKSAqIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSk7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9yYW5nZXR5cGVzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3JhbmdldHlwZXMuc3FsCmluZGV4IGE1ZWNkZjUzNzJmLi4xODk2YzdjNzUzOSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcmFuZ2V0eXBlcy5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcmFuZ2V0eXBlcy5zcWwKQEAgLTEwNyw2ICsxMDcsMTYgQEAg c2VsZWN0IG51bXJhbmdlKDEuMSwgMi4yLCdbXScpIC0gbnVtcmFuZ2UoMi4wLCAzLjApOwog c2VsZWN0IHJhbmdlX21pbnVzKG51bXJhbmdlKDEwLjEsMTIuMiwnW10nKSwgbnVtcmFuZ2Uo MTEwLjAsMTIwLjIsJyhdJykpOwogc2VsZWN0IHJhbmdlX21pbnVzKG51bXJhbmdlKDEwLjEs MTIuMiwnW10nKSwgbnVtcmFuZ2UoMC4wLDEyMC4yLCcoXScpKTsKIAorc2VsZWN0ICdlbXB0 eSc6Om51bXJhbmdlIEAtIG51bXJhbmdlKDIuMCwgMy4wKTsKK3NlbGVjdCBudW1yYW5nZSgx LjEsIDIuMikgQC0gJ2VtcHR5Jzo6bnVtcmFuZ2U7CitzZWxlY3QgbnVtcmFuZ2UoMS4xLCAy LjIpIEAtIG51bXJhbmdlKDIuMCwgMy4wKTsKK3NlbGVjdCBudW1yYW5nZSgxLjEsIDIuMikg QC0gbnVtcmFuZ2UoMi4yLCAzLjApOworc2VsZWN0IG51bXJhbmdlKDEuMSwgMi4yLCdbXScp IEAtIG51bXJhbmdlKDIuMCwgMy4wKTsKK3NlbGVjdCBudW1yYW5nZSgxLjAsIDMuMCkgQC0g bnVtcmFuZ2UoMS41LCAyLjApOworc2VsZWN0IHJhbmdlX3dpdGhvdXRfcG9ydGlvbihudW1y YW5nZSgxMC4xLDEyLjIsJ1tdJyksIG51bXJhbmdlKDExMC4wLDEyMC4yLCcoXScpKTsKK3Nl bGVjdCByYW5nZV93aXRob3V0X3BvcnRpb24obnVtcmFuZ2UoMTAuMSwxMi4yLCdbXScpLCBu dW1yYW5nZSgwLjAsMTIwLjIsJyhdJykpOworc2VsZWN0IHJhbmdlX3dpdGhvdXRfcG9ydGlv bihudW1yYW5nZSgxLjAsMy4wLCdbXScpLCBudW1yYW5nZSgxLjUsMi4wLCcoXScpKTsKKwog c2VsZWN0IG51bXJhbmdlKDQuNSwgNS41LCAnW10nKSAmJiBudW1yYW5nZSg1LjUsIDYuNSk7 CiBzZWxlY3QgbnVtcmFuZ2UoMS4wLCAyLjApIDw8IG51bXJhbmdlKDMuMCwgNC4wKTsKIHNl bGVjdCBudW1yYW5nZSgxLjAsIDMuMCwnW10nKSA8PCBudW1yYW5nZSgzLjAsIDQuMCwnW10n KTsKLS0gCjIuNDIuMAoK --------------4ZTQGZiKJvMMlo81itiM0iLZ Content-Type: text/x-patch; charset=UTF-8; name="v24-0005-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Disposition: attachment; filename="v24-0005-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Transfer-Encoding: base64 RnJvbSA4ZDhlOTJiOGYwZTMwNzk4NThiMjUxMGU4Mjk1ZWU2OWQyZjZmYWNhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjUgSnVuIDIwMjEgMTg6NTQ6MzUgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYyNCA1LzddIEFkZCBVUERBVEUvREVMRVRFIEZPUiBQT1JU SU9OIE9GCgotIEFkZGVkIGJpc29uIHN1cHBvcnQgZm9yIEZPUiBQT1JUSU9OIE9GIHN5bnRh eC4gVGhlIGJvdW5kcyBtdXN0IGJlCiAgY29uc3RhbnQsIHNvIHdlIGZvcmJpZCBjb2x1bW4g cmVmZXJlbmNlcywgc3VicXVlcmllcywgZXRjLiBCdXQgd2UKICBwZXJtaXQgdGhlIG1hZ2lj IFVOQk9VTkRFRCBrZXl3b3JkIGFzIHRoZSBGUk9NIG9yIHRoZSBUTyAob3IgYm90aCkKICB0 byBwZXJmb3JtIGFuIHVuYm91bmRlZCB1cGRhdGUvZGVsZXRlLiBXZSBhbHNvIGFjY2VwdCBm dW5jdGlvbnMgbGlrZQogIE5PVygpLgotIEFkZGVkIGxvZ2ljIHRvIGV4ZWN1dG9yIHRvIGlu c2VydCBuZXcgcm93cyBmb3IgdGhlICJsZWZ0b3ZlciIgcGFydCBvZgogIGEgcmVjb3JkIHRv dWNoZWQgYnkgYSBGT1IgUE9SVElPTiBPRiBxdWVyeS4KLSBBZGRlZCB0Z190ZW1wb3JhbCBk ZXNjcmlwdG9yIHRvIHRoZSBUcmlnZ2VyRGF0YSBzdHJ1Y3QgdGhhdCB3ZSBwYXNzIHRvCiAg dHJpZ2dlciBmdW5jdGlvbnMuIE91ciB0cmlnZ2VycyB1c2UgdGhpcyB0byBsZWFybiB3aGF0 IGJvdW5kcyB3ZXJlCiAgZ2l2ZW4gaW4gdGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVzZS4KLSBE b2N1bWVudGVkIEZPUiBQT1JUSU9OIE9GLgotIERvY3VtZW50ZWQgdGdfdGVtcG9yYWwgc3Ry dWN0LgotIEFkZGVkIHRlc3RzLgotLS0KIC4uLi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9z dGdyZXNfZmR3Lm91dCAgICB8ICAgNSArCiBjb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9z dGdyZXNfZmR3LnNxbCAgICAgfCAgIDQgKwogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwg ICAgICAgICAgICAgICAgICAgIHwgIDE5ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2RlbGV0ZS5z Z21sICAgICAgICAgICAgICAgICAgfCAgNjkgKysKIGRvYy9zcmMvc2dtbC9yZWYvdXBkYXRl LnNnbWwgICAgICAgICAgICAgICAgICB8ICA4NyArKysKIGRvYy9zcmMvc2dtbC90cmlnZ2Vy LnNnbWwgICAgICAgICAgICAgICAgICAgICB8ICA2MCArLQogc3JjL2JhY2tlbmQvYWNjZXNz L2dpc3QvZ2lzdHZhbGlkYXRlLmMgICAgICAgIHwgIDM5ICstCiBzcmMvYmFja2VuZC9jb21t YW5kcy9pbmRleGNtZHMuYyAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9j b21tYW5kcy90cmlnZ2VyLmMgICAgICAgICAgICAgICAgfCAgNDkgKysKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyAgICAgICAgfCAyNzQgKysrKysrKy0KIHNy Yy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAgICAgICAgICAgICB8ICAyNCArCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgICAgICAgfCAgIDggKy0K IHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAgICAgICAgICB8ICAgMSAr CiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jICAgICAgICAgfCAgIDQg Ky0KIHNyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgICAgICAgICAgICAgICAgICB8IDIw OSArKysrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAg ICB8ICA1NiArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jICAgICAgICAgICAg ICAgIHwgIDEwICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMgICAgICAg ICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAgICAg ICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyAgICAgICAg ICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5jICAgICAg ICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5j ICAgICAgICAgIHwgIDQwICsrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMu YyAgICAgICAgICAgfCAgNzQgKysKIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNo ZS5jICAgICAgICAgICB8ICA1MyArKwogc3JjL2luY2x1ZGUvYWNjZXNzL3N0cmF0bnVtLmgg ICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Ftb3Au ZGF0ICAgICAgICAgICAgICAgfCAgMTUgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbW9w LmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdn ZXIuaCAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaCAgICAgICAgICAgICAgICAgfCAgMjYgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oICAgICAgICAgICAgICAgIHwgIDQ2ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRo bm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGxh bm5vZGVzLmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3By aW1ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAyNiArCiBzcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvcGF0aG5vZGUuaCAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL3BhcnNl ci9hbmFseXplLmggICAgICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvcGFy c2VyL2t3bGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3Bh cnNlci9wYXJzZV9ub2RlLmggICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91 dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQgIHwgNjUyICsrKysrKysrKysrKysr KysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dCAgICAgIHwg ICA2ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0ICAgICAg fCAgMTggKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0 IHwgIDMyICsKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0ICAg ICB8IDE0NCArKystCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAg ICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNx bCAgICAgICB8IDUwMiArKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvb3By X3Nhbml0eS5zcWwgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3By aXZpbGVnZXMuc3FsICAgICAgICAgICB8ICAxOCArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC91 cGRhdGFibGVfdmlld3Muc3FsICAgICAgfCAgMTQgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwv d2l0aG91dF9vdmVybGFwcy5zcWwgICAgIHwgIDkzICsrLQogNTEgZmlsZXMgY2hhbmdlZCwg MjY0NiBpbnNlcnRpb25zKCspLCA3MiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNxbAoK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zk dy5vdXQgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0 CmluZGV4IGI1YTM4YWViMjE0Li5kNzQ5ZTE0OWU1ZSAxMDA2NDQKLS0tIGEvY29udHJpYi9w b3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAorKysgYi9jb250cmliL3Bv c3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBAIC02MjkzLDYgKzYyOTMs MTEgQEAgREVMRVRFIEZST00gZnQyCiAKIERFTEVURSBGUk9NIGZ0MiBXSEVSRSBmdDIuYzEg PiAyMDAwOwogQUxURVIgU0VSVkVSIGxvb3BiYWNrIE9QVElPTlMgKEFERCBleHRlbnNpb25z ICdwb3N0Z3Jlc19mZHcnKTsKKy0tIFRlc3QgVVBEQVRFL0RFTEVURSB3aXRoIEZPUiBQT1JU SU9OIE9GCitVUERBVEUgZnQyIEZPUiBQT1JUSU9OIE9GIGMzIEZST00gJ2EnIFRPICdiJyBT RVQgYzEgPSAxOworRVJST1I6ICBmb3JlaWduIHRhYmxlcyBkb24ndCBzdXBwb3J0IEZPUiBQ T1JUSU9OIE9GCitERUxFVEUgRlJPTSBmdDIgRk9SIFBPUlRJT04gT0YgYzMgRlJPTSAnYScg VE8gJ2InOworRVJST1I6ICBmb3JlaWduIHRhYmxlcyBkb24ndCBzdXBwb3J0IEZPUiBQT1JU SU9OIE9GCiAtLSBUZXN0IHRoYXQgdHJpZ2dlciBvbiByZW1vdGUgdGFibGUgd29ya3MgYXMg ZXhwZWN0ZWQKIENSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OICJTIDEiLkZfQlJUUklHKCkg UkVUVVJOUyB0cmlnZ2VyIEFTICQkCiBCRUdJTgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0 Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9z cWwvcG9zdGdyZXNfZmR3LnNxbAppbmRleCBmNDEwYzNkYjRlNi4uMGE5MWRkY2NkZDQgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCisr KyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsCkBAIC0xNTQ2 LDYgKzE1NDYsMTAgQEAgREVMRVRFIEZST00gZnQyCiBERUxFVEUgRlJPTSBmdDIgV0hFUkUg ZnQyLmMxID4gMjAwMDsKIEFMVEVSIFNFUlZFUiBsb29wYmFjayBPUFRJT05TIChBREQgZXh0 ZW5zaW9ucyAncG9zdGdyZXNfZmR3Jyk7CiAKKy0tIFRlc3QgVVBEQVRFL0RFTEVURSB3aXRo IEZPUiBQT1JUSU9OIE9GCitVUERBVEUgZnQyIEZPUiBQT1JUSU9OIE9GIGMzIEZST00gJ2En IFRPICdiJyBTRVQgYzEgPSAxOworREVMRVRFIEZST00gZnQyIEZPUiBQT1JUSU9OIE9GIGMz IEZST00gJ2EnIFRPICdiJzsKKwogLS0gVGVzdCB0aGF0IHRyaWdnZXIgb24gcmVtb3RlIHRh YmxlIHdvcmtzIGFzIGV4cGVjdGVkCiBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiAiUyAx Ii5GX0JSVFJJRygpIFJFVFVSTlMgdHJpZ2dlciBBUyAkJAogQkVHSU4KZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNn bWwKaW5kZXggMGNhNGVkNmMyZjguLjFhYzhiNzRmZTNkIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApA QCAtNzU3LDEyICs3NTcsMTQgQEAKICAgIFRoZSBjYXRhbG9nIDxzdHJ1Y3RuYW1lPnBnX2Ft b3A8L3N0cnVjdG5hbWU+IHN0b3JlcyBpbmZvcm1hdGlvbiBhYm91dAogICAgb3BlcmF0b3Jz IGFzc29jaWF0ZWQgd2l0aCBhY2Nlc3MgbWV0aG9kIG9wZXJhdG9yIGZhbWlsaWVzLiAgVGhl cmUgaXMgb25lCiAgICByb3cgZm9yIGVhY2ggb3BlcmF0b3IgdGhhdCBpcyBhIG1lbWJlciBv ZiBhbiBvcGVyYXRvciBmYW1pbHkuICBBIGZhbWlseQotICAgbWVtYmVyIGNhbiBiZSBlaXRo ZXIgYSA8Zmlyc3R0ZXJtPnNlYXJjaDwvZmlyc3R0ZXJtPiBvcGVyYXRvciBvciBhbgotICAg PGZpcnN0dGVybT5vcmRlcmluZzwvZmlyc3R0ZXJtPiBvcGVyYXRvci4gIEFuIG9wZXJhdG9y Ci0gICBjYW4gYXBwZWFyIGluIG1vcmUgdGhhbiBvbmUgZmFtaWx5LCBidXQgY2Fubm90IGFw cGVhciBpbiBtb3JlIHRoYW4gb25lCi0gICBzZWFyY2ggcG9zaXRpb24gbm9yIG1vcmUgdGhh biBvbmUgb3JkZXJpbmcgcG9zaXRpb24gd2l0aGluIGEgZmFtaWx5LgotICAgKEl0IGlzIGFs bG93ZWQsIHRob3VnaCB1bmxpa2VseSwgZm9yIGFuIG9wZXJhdG9yIHRvIGJlIHVzZWQgZm9y IGJvdGgKLSAgIHNlYXJjaCBhbmQgb3JkZXJpbmcgcHVycG9zZXMuKQorICAgbWVtYmVyIGNh biBiZSBlaXRoZXIgYSA8Zmlyc3R0ZXJtPnNlYXJjaDwvZmlyc3R0ZXJtPiBvcGVyYXRvciwg YW4KKyAgIDxmaXJzdHRlcm0+b3JkZXJpbmc8L2ZpcnN0dGVybT4gb3BlcmF0b3IsIG9yIGEK KyAgIDxmaXJzdHRlcm0+cG9ydGlvbjwvZmlyc3R0ZXJtPiBvcGVyYXRvci4gQQorICAgPGZp cnN0dGVybT5wb3J0aW9uPC9maXJzdHRlcm0+IG9wZXJhdG9yIGlzIHVzZWQgZm9yIGNvbXB1 dGluZworICAgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IHJlc3VsdHMuIEFu IG9wZXJhdG9yIGNhbiBhcHBlYXIgaW4gbW9yZQorICAgdGhhbiBvbmUgZmFtaWx5LCBidXQg Y2Fubm90IGFwcGVhciBpbiBtb3JlIHRoYW4gb25lIHNlYXJjaCwgb3JkZXJpbmcsIG9yCisg ICBwb3J0aW9uIHBvc2l0aW9uIHdpdGhpbiBhIGZhbWlseS4gKEl0IGlzIGFsbG93ZWQsIHRo b3VnaCB1bmxpa2VseSwgZm9yIGFuCisgICBvcGVyYXRvciB0byBiZSB1c2VkIGZvciBtb3Jl IHRoYW4gb25lIHB1cnBvc2UuKQogICA8L3BhcmE+CiAKICAgPHRhYmxlPgpAQCAtODMzLDgg KzgzNSw5IEBACiAgICAgICAgPHN0cnVjdGZpZWxkPmFtb3BwdXJwb3NlPC9zdHJ1Y3RmaWVs ZD4gPHR5cGU+Y2hhcjwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAg ICAgIE9wZXJhdG9yIHB1cnBvc2UsIGVpdGhlciA8bGl0ZXJhbD5zPC9saXRlcmFsPiBmb3Ig c2VhcmNoIG9yCi0gICAgICAgPGxpdGVyYWw+bzwvbGl0ZXJhbD4gZm9yIG9yZGVyaW5nCisg ICAgICAgT3BlcmF0b3IgcHVycG9zZSwgZWl0aGVyIDxsaXRlcmFsPnM8L2xpdGVyYWw+IGZv ciBzZWFyY2gsCisgICAgICAgPGxpdGVyYWw+bzwvbGl0ZXJhbD4gZm9yIG9yZGVyaW5nLAor ICAgICAgIG9yIDxsaXRlcmFsPnA8L2xpdGVyYWw+IGZvciBwb3J0aW9uCiAgICAgICA8L3Bh cmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9y ZWYvZGVsZXRlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2RlbGV0ZS5zZ21sCmluZGV4IDFi ODFiNGU3ZDc0Li4xYzcyNzUzNDFlYSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9k ZWxldGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2RlbGV0ZS5zZ21sCkBAIC0yMyw2 ICsyMyw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogPHN5bm9wc2lzPgogWyBXSVRI IFsgUkVDVVJTSVZFIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPndpdGhfcXVl cnk8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0KIERFTEVURSBGUk9NIFsgT05MWSBdIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAq IF0gWyBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFsaWFzPC9yZXBs YWNlYWJsZT4gXQorICAgIFsgRk9SIFBPUlRJT04gT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gRlJPTSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RhcnRfdGltZTwvcmVwbGFjZWFibGU+IFRP IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lbmRfdGltZTwvcmVwbGFjZWFibGU+ IF0KICAgICBbIFVTSU5HIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5mcm9tX2l0 ZW08L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0KICAgICBbIFdIRVJFIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5jb25kaXRpb248L3JlcGxhY2VhYmxlPiB8IFdIRVJFIENVUlJF TlQgT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmN1cnNvcl9uYW1lPC9yZXBs YWNlYWJsZT4gXQogICAgIFsgUkVUVVJOSU5HICogfCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+b3V0cHV0X2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBbIFsgQVMgXSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3V0cHV0X25hbWU8L3JlcGxhY2VhYmxlPiBd IFssIC4uLl0gXQpAQCAtNTQsNiArNTUsMzkgQEAgREVMRVRFIEZST00gWyBPTkxZIF0gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBb ICoKICAgIGNpcmN1bXN0YW5jZXMuCiAgIDwvcGFyYT4KIAorICA8cGFyYT4KKyAgIElmIHRo ZSB0YWJsZSBoYXMgYSByYW5nZSBvciBtdWx0aXJhbmdlIGNvbHVtbiwKKyAgIHlvdSBtYXkg c3VwcGx5IGEgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IGNsYXVzZSwgYW5k IHlvdXIgZGVsZXRlIHdpbGwKKyAgIG9ubHkgYWZmZWN0IHJvd3MgdGhhdCBvdmVybGFwIHRo ZSBnaXZlbiBpbnRlcnZhbC4gRnVydGhlcm1vcmUsIGlmIGEgcm93J3Mgc3BhbgorICAgZXh0 ZW5kcyBvdXRzaWRlIHRoZSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gYm91 bmRzLCB0aGVuIHlvdXIgZGVsZXRlCisgICB3aWxsIG9ubHkgY2hhbmdlIHRoZSBzcGFuIHdp dGhpbiB0aG9zZSBib3VuZHMuIEluIGVmZmVjdCB5b3UgYXJlIGRlbGV0aW5nIGFueQorICAg bW9tZW50IHRhcmdldGVkIGJ5IDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBh bmQgbm8gbW9tZW50cyBvdXRzaWRlLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBTcGVj aWZpY2FsbHksIGFmdGVyIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4g ZGVsZXRlcyB0aGUgZXhpc3Rpbmcgcm93LAorICAgaXQgd2lsbCA8bGl0ZXJhbD5JTlNFUlQ8 L2xpdGVyYWw+CisgICBuZXcgcm93cyB3aG9zZSByYW5nZSBvciBzdGFydC9lbmQgY29sdW1u KHMpIHJlY2VpdmUgdGhlIHJlbWFpbmluZyBzcGFuIG91dHNpZGUKKyAgIHRoZSB0YXJnZXRl ZCBib3VuZHMsIGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsIHZhbHVlcyBpbiBvdGhlciBjb2x1 bW5zLgorICAgVGhlcmUgd2lsbCBiZSB6ZXJvIHRvIHR3byBpbnNlcnRlZCByZWNvcmRzLAor ICAgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG9yaWdpbmFsIHNwYW4gZXh0ZW5kZWQgYmVm b3JlIHRoZSB0YXJnZXRlZAorICAgPGxpdGVyYWw+RlJPTTwvbGl0ZXJhbD4sIGFmdGVyIHRo ZSB0YXJnZXRlZCA8bGl0ZXJhbD5UTzwvbGl0ZXJhbD4sIGJvdGgsIG9yIG5laXRoZXIuCisg IDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoZXNlIHNlY29uZGFyeSBpbnNlcnRzIGZpcmUg PGxpdGVyYWw+SU5TRVJUPC9saXRlcmFsPiB0cmlnZ2Vycy4gRmlyc3QKKyAgIDxsaXRlcmFs PkJFRk9SRSBERUxFVEU8L2xpdGVyYWw+IHRyaWdnZXJzIGZpcnN0LCB0aGVuCisgICA8bGl0 ZXJhbD5CRUZPUkUgSU5TRVJUPC9saXRlcmFsPiwgdGhlbiA8bGl0ZXJhbD5BRlRFUiBJTlNF UlQ8L2xpdGVyYWw+LAorICAgdGhlbiA8bGl0ZXJhbD5BRlRFUiBERUxFVEU8L2xpdGVyYWw+ LgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGVzZSBzZWNvbmRhcnkgaW5zZXJ0cyBk byBub3QgcmVxdWlyZSA8bGl0ZXJhbD5JTlNFUlQ8L2xpdGVyYWw+IHByaXZpbGVnZSBvbiB0 aGUgdGFibGUuCisgICBUaGlzIGlzIGJlY2F1c2UgY29uY2VwdHVhbGx5IG5vIG5ldyBpbmZv cm1hdGlvbiBoYXMgYmVlbiBhZGRlZC4gVGhlIGluc2VydGVkIHJvd3Mgb25seSBwcmVzZXJ2 ZQorICAgZXhpc3RpbmcgZGF0YSBhYm91dCB0aGUgdW50YXJnZXRlZCB0aW1lIHBlcmlvZC4g Tm90ZSB0aGlzIG1heSByZXN1bHQgaW4gdXNlcnMgZmlyaW5nIDxsaXRlcmFsPklOU0VSVDwv bGl0ZXJhbD4KKyAgIHRyaWdnZXJzIHdobyBkb24ndCBoYXZlIGluc2VydCBwcml2aWxlZ2Vz LCBzbyBiZSBjYXJlZnVsIGFib3V0IDxsaXRlcmFsPlNFQ1VSSVRZIERFRklORVI8L2xpdGVy YWw+IHRyaWdnZXIgZnVuY3Rpb25zIQorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBUaGUg b3B0aW9uYWwgPGxpdGVyYWw+UkVUVVJOSU5HPC9saXRlcmFsPiBjbGF1c2UgY2F1c2VzIDxj b21tYW5kPkRFTEVURTwvY29tbWFuZD4KICAgIHRvIGNvbXB1dGUgYW5kIHJldHVybiB2YWx1 ZShzKSBiYXNlZCBvbiBlYWNoIHJvdyBhY3R1YWxseSBkZWxldGVkLgpAQCAtMTE2LDYgKzE1 MCw0MSBAQCBERUxFVEUgRlJPTSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKgogICAgIDwvbGlzdGl0ZW0+CiAg ICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxh Y2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhl IHJhbmdlIGNvbHVtbiBvciBwZXJpb2QgdG8gdXNlIHdoZW4gcGVyZm9ybWluZyBhIHRlbXBv cmFsIGRlbGV0ZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+c3RhcnRfdGltZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAg IDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgZWFybGllc3QgdGltZSAoaW5j bHVzaXZlKSB0byBjaGFuZ2UgaW4gYSB0ZW1wb3JhbCBkZWxldGUuCisgICAgICBUaGlzIG11 c3QgYmUgYSB2YWx1ZSBtYXRjaGluZyB0aGUgYmFzZSB0eXBlIG9mIHRoZSByYW5nZSBvciBw ZXJpb2QgZnJvbQorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdl X29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4uIEEKKyAgICAgIDxsaXRlcmFsPk5VTEw8 L2xpdGVyYWw+IGhlcmUgaW5kaWNhdGVzIGEgZGVsZXRlIHdob3NlIGJlZ2lubmluZyBpcwor ICAgICAgdW5ib3VuZGVkIChhcyB3aXRoIHJhbmdlIHR5cGVzKS4KKyAgICAgPC9wYXJhPgor ICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRy eT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZW5kX3RpbWU8 L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAg ICAgVGhlIGxhdGVzdCB0aW1lIChleGNsdXNpdmUpIHRvIGNoYW5nZSBpbiBhIHRlbXBvcmFs IGRlbGV0ZS4KKyAgICAgIFRoaXMgbXVzdCBiZSBhIHZhbHVlIG1hdGNoaW5nIHRoZSBiYXNl IHR5cGUgb2YgdGhlIHJhbmdlIG9yIHBlcmlvZCBmcm9tCisgICAgICA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPi4g QQorICAgICAgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gaGVyZSBpbmRpY2F0ZXMgYSBkZWxl dGUgd2hvc2UgZW5kIGlzIHVuYm91bmRlZAorICAgICAgKGFzIHdpdGggcmFuZ2UgdHlwZXMp LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor CiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5mcm9tX2l0ZW08L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+ CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi91cGRhdGUuc2dtbAppbmRleCAyYWIyNGIwNTIzZS4uNzFhMDI2OTdmMmQgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvdXBkYXRlLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi91cGRhdGUuc2dtbApAQCAtMjMsNiArMjMsNyBAQCBQb3N0Z3JlU1FMIGRvY3Vt ZW50YXRpb24KIDxzeW5vcHNpcz4KIFsgV0lUSCBbIFJFQ1VSU0lWRSBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj53aXRoX3F1ZXJ5PC9yZXBsYWNlYWJsZT4gWywgLi4uXSBd CiBVUERBVEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxl X25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbIFsgQVMgXSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+YWxpYXM8L3JlcGxhY2VhYmxlPiBdCisgICAgWyBGT1IgUE9SVElPTiBP RiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8 L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Zm9yX3BvcnRp b25fb2ZfdGFyZ2V0PC9yZXBsYWNlYWJsZT4gXQogICAgIFNFVCB7IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ID0geyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IHwgREVG QVVMVCB9IHwKICAgICAgICAgICAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5j b2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSA9IFsgUk9XIF0gKCB7IDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gfCBE RUZBVUxUIH0gWywgLi4uXSApIHwKICAgICAgICAgICAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSA9ICggPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1Yi1TRUxFQ1Q8L3JlcGxhY2VhYmxlPiAp CkBAIC01MSw2ICs1Miw0MSBAQCBVUERBVEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbCiAgICBjaXJj dW1zdGFuY2VzLgogICA8L3BhcmE+CiAKKyAgPHBhcmE+CisgICBJZiB0aGUgdGFibGUgaGFz IGEgcmFuZ2Ugb3IgbXVsdGlyYW5nZSBjb2x1bW4sCisgICB5b3UgbWF5IHN1cHBseSBhIDxs aXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBjbGF1c2UsIGFuZCB5b3VyIHVwZGF0 ZSB3aWxsCisgICBvbmx5IGFmZmVjdCByb3dzIHRoYXQgb3ZlcmxhcCB0aGUgZ2l2ZW4gaW50 ZXJ2YWwuIEZ1cnRoZXJtb3JlLCBpZiBhIHJvdydzIHNwYW4KKyAgIGV4dGVuZHMgb3V0c2lk ZSB0aGUgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IGJvdW5kcywgdGhlbiB5 b3VyIHVwZGF0ZQorICAgd2lsbCBvbmx5IGNoYW5nZSB0aGUgc3BhbiB3aXRoaW4gdGhvc2Ug Ym91bmRzLiBJbiBlZmZlY3QgeW91IGFyZSB1cGRhdGluZyBhbnkKKyAgIG1vbWVudCB0YXJn ZXRlZCBieSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gYW5kIG5vIG1vbWVu dHMgb3V0c2lkZS4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgU3BlY2lmaWNhbGx5LCB3 aGVuIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gdXBkYXRlcyB0aGUg ZXhpc3Rpbmcgcm93LAorICAgaXQgd2lsbCBhbHNvIGNoYW5nZSB0aGUgcmFuZ2Ugb3Igc3Rh cnQvZW5kIGNvbHVtbihzKSBzbyB0aGF0IHRoZWlyIGludGVydmFsCisgICBubyBsb25nZXIg ZXh0ZW5kcyBiZXlvbmQgdGhlIHRhcmdldGVkIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9s aXRlcmFsPiBib3VuZHMuCisgICBUaGVuIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9k dWN0bmFtZT4gd2lsbCA8bGl0ZXJhbD5JTlNFUlQ8L2xpdGVyYWw+CisgICBuZXcgcm93cyB3 aG9zZSByYW5nZSBvciBzdGFydC9lbmQgY29sdW1uKHMpIHJlY2VpdmUgdGhlIHJlbWFpbmlu ZyBzcGFuIG91dHNpZGUKKyAgIHRoZSB0YXJnZXRlZCBib3VuZHMsIGNvbnRhaW5pbmcgdGhl IHVuLXVwZGF0ZWQgdmFsdWVzIGluIG90aGVyIGNvbHVtbnMuCisgICBUaGVyZSB3aWxsIGJl IHplcm8gdG8gdHdvIGluc2VydGVkIHJlY29yZHMsCisgICBkZXBlbmRpbmcgb24gd2hldGhl ciB0aGUgb3JpZ2luYWwgc3BhbiBleHRlbmRlZCBiZWZvcmUgdGhlIHRhcmdldGVkCisgICA8 bGl0ZXJhbD5GUk9NPC9saXRlcmFsPiwgYWZ0ZXIgdGhlIHRhcmdldGVkIDxsaXRlcmFsPlRP PC9saXRlcmFsPiwgYm90aCwgb3IgbmVpdGhlci4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgor ICAgVGhlc2Ugc2Vjb25kYXJ5IGluc2VydHMgZmlyZSA8bGl0ZXJhbD5JTlNFUlQ8L2xpdGVy YWw+IHRyaWdnZXJzLiBGaXJzdAorICAgPGxpdGVyYWw+QkVGT1JFIFVQREFURTwvbGl0ZXJh bD4gdHJpZ2dlcnMgZmlyc3QsIHRoZW4KKyAgIDxsaXRlcmFsPkJFRk9SRSBJTlNFUlQ8L2xp dGVyYWw+LCB0aGVuIDxsaXRlcmFsPkFGVEVSIElOU0VSVDwvbGl0ZXJhbD4sCisgICB0aGVu IDxsaXRlcmFsPkFGVEVSIFVQREFURTwvbGl0ZXJhbD4uCisgIDwvcGFyYT4KKworICA8cGFy YT4KKyAgIFRoZXNlIHNlY29uZGFyeSBpbnNlcnRzIGRvIG5vdCByZXF1aXJlIDxsaXRlcmFs PklOU0VSVDwvbGl0ZXJhbD4gcHJpdmlsZWdlIG9uIHRoZSB0YWJsZS4KKyAgIFRoaXMgaXMg YmVjYXVzZSBjb25jZXB0dWFsbHkgbm8gbmV3IGluZm9ybWF0aW9uIGhhcyBiZWVuIGFkZGVk LiBUaGUgaW5zZXJ0ZWQgcm93cyBvbmx5IHByZXNlcnZlCisgICBleGlzdGluZyBkYXRhIGFi b3V0IHRoZSB1bnRhcmdldGVkIHRpbWUgcGVyaW9kLiBOb3RlIHRoaXMgbWF5IHJlc3VsdCBp biB1c2VycyBmaXJpbmcgPGxpdGVyYWw+SU5TRVJUPC9saXRlcmFsPgorICAgdHJpZ2dlcnMg d2hvIGRvbid0IGhhdmUgaW5zZXJ0IHByaXZpbGVnZXMsIHNvIGJlIGNhcmVmdWwgYWJvdXQg PGxpdGVyYWw+U0VDVVJJVFkgREVGSU5FUjwvbGl0ZXJhbD4gdHJpZ2dlciBmdW5jdGlvbnMh CisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIFRoZSBvcHRpb25hbCA8bGl0ZXJhbD5SRVRV Uk5JTkc8L2xpdGVyYWw+IGNsYXVzZSBjYXVzZXMgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5k PgogICAgdG8gY29tcHV0ZSBhbmQgcmV0dXJuIHZhbHVlKHMpIGJhc2VkIG9uIGVhY2ggcm93 IGFjdHVhbGx5IHVwZGF0ZWQuCkBAIC0xMTQsNiArMTUwLDU3IEBAIFVQREFURSBbIE9OTFkg XSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFi bGU+IFsgKiBdIFsKICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAg IDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSByYW5nZSBjb2x1bW4gb3IgcGVyaW9k IHRvIHVzZSB3aGVuIHBlcmZvcm1pbmcgYSB0ZW1wb3JhbCB1cGRhdGUuCisgICAgIDwvcGFy YT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0 ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmZvcl9w b3J0aW9uX29mX3RhcmdldDwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4K KyAgICAgPHBhcmE+CisgICAgICBUaGUgaW50ZXJ2YWwgdG8gdXBkYXRlLiBJZiB5b3UgYXJl IHRhcmdldGluZyBhIHJhbmdlIGNvbHVtbiBvciA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+ LAorICAgICAgeW91IG1heSBnaXZlIHRoaXMgaW4gdGhlIGZvcm0gPGxpdGVyYWw+RlJPTTwv bGl0ZXJhbD4KKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF90 aW1lPC9yZXBsYWNlYWJsZT4gPGxpdGVyYWw+VE88L2xpdGVyYWw+CisgICAgICA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZW5kX3RpbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAg IE90aGVyd2lzZSB5b3UgbXVzdCB1c2UKKyAgICAgIDxsaXRlcmFsPig8L2xpdGVyYWw+PHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPjxs aXRlcmFsPik8L2xpdGVyYWw+CisgICAgICB3aGVyZSB0aGUgZXhwcmVzc2lvbiB5aWVsZHMg YSB2YWx1ZSBmb3IgdGhlIHNhbWUgdHlwZSBhcworICAgICAgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4uCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2 YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnN0YXJ0X3RpbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAg IDxwYXJhPgorICAgICAgVGhlIGVhcmxpZXN0IHRpbWUgKGluY2x1c2l2ZSkgdG8gY2hhbmdl IGluIGEgdGVtcG9yYWwgdXBkYXRlLgorICAgICAgVGhpcyBtdXN0IGJlIGEgdmFsdWUgbWF0 Y2hpbmcgdGhlIGJhc2UgdHlwZSBvZiB0aGUgcmFuZ2Ugb3IgcGVyaW9kIGZyb20KKyAgICAg IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2RfbmFtZTwv cmVwbGFjZWFibGU+LiBBCisgICAgICA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiBoZXJlIGlu ZGljYXRlcyBhbiB1cGRhdGUgd2hvc2UgYmVnaW5uaW5nIGlzCisgICAgICB1bmJvdW5kZWQg KGFzIHdpdGggcmFuZ2UgdHlwZXMpLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4K KyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lbmRfdGltZTwvcmVwbGFjZWFibGU+PC90 ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbGF0ZXN0IHRp bWUgKGV4Y2x1c2l2ZSkgdG8gY2hhbmdlIGluIGEgdGVtcG9yYWwgdXBkYXRlLgorICAgICAg VGhpcyBtdXN0IGJlIGEgdmFsdWUgbWF0Y2hpbmcgdGhlIGJhc2UgdHlwZSBvZiB0aGUgcmFu Z2Ugb3IgcGVyaW9kIGZyb20KKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+LiBBCisgICAgICA8bGl0ZXJh bD5OVUxMPC9saXRlcmFsPiBoZXJlIGluZGljYXRlcyBhbiB1cGRhdGUgd2hvc2UgZW5kIGlz IHVuYm91bmRlZAorICAgICAgKGFzIHdpdGggcmFuZ2UgdHlwZXMpLgorICAgICA8L3BhcmE+ CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVu dHJ5PgogICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC90cmlnZ2VyLnNnbWwgYi9kb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21s CmluZGV4IGE1MzkwZmY2NDQzLi41MzhhMWUwNzhkYyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3RyaWdnZXIuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21sCkBAIC01 MzUsMTcgKzUzNSwxOCBAQCBDQUxMRURfQVNfVFJJR0dFUihmY2luZm8pCiA8cHJvZ3JhbWxp c3Rpbmc+CiB0eXBlZGVmIHN0cnVjdCBUcmlnZ2VyRGF0YQogewotICAgIE5vZGVUYWcgICAg ICAgICAgdHlwZTsKLSAgICBUcmlnZ2VyRXZlbnQgICAgIHRnX2V2ZW50OwotICAgIFJlbGF0 aW9uICAgICAgICAgdGdfcmVsYXRpb247Ci0gICAgSGVhcFR1cGxlICAgICAgICB0Z190cmln dHVwbGU7Ci0gICAgSGVhcFR1cGxlICAgICAgICB0Z19uZXd0dXBsZTsKLSAgICBUcmlnZ2Vy ICAgICAgICAgKnRnX3RyaWdnZXI7Ci0gICAgVHVwbGVUYWJsZVNsb3QgICp0Z190cmlnc2xv dDsKLSAgICBUdXBsZVRhYmxlU2xvdCAgKnRnX25ld3Nsb3Q7Ci0gICAgVHVwbGVzdG9yZXN0 YXRlICp0Z19vbGR0YWJsZTsKLSAgICBUdXBsZXN0b3Jlc3RhdGUgKnRnX25ld3RhYmxlOwot ICAgIGNvbnN0IEJpdG1hcHNldCAqdGdfdXBkYXRlZGNvbHM7CisgICAgTm9kZVRhZyAgICAg ICAgICAgIHR5cGU7CisgICAgVHJpZ2dlckV2ZW50ICAgICAgIHRnX2V2ZW50OworICAgIFJl bGF0aW9uICAgICAgICAgICB0Z19yZWxhdGlvbjsKKyAgICBIZWFwVHVwbGUgICAgICAgICAg dGdfdHJpZ3R1cGxlOworICAgIEhlYXBUdXBsZSAgICAgICAgICB0Z19uZXd0dXBsZTsKKyAg ICBUcmlnZ2VyICAgICAgICAgICAqdGdfdHJpZ2dlcjsKKyAgICBUdXBsZVRhYmxlU2xvdCAg ICAqdGdfdHJpZ3Nsb3Q7CisgICAgVHVwbGVUYWJsZVNsb3QgICAgKnRnX25ld3Nsb3Q7Cisg ICAgVHVwbGVzdG9yZXN0YXRlICAgKnRnX29sZHRhYmxlOworICAgIFR1cGxlc3RvcmVzdGF0 ZSAgICp0Z19uZXd0YWJsZTsKKyAgICBjb25zdCBCaXRtYXBzZXQgICAqdGdfdXBkYXRlZGNv bHM7CisgICAgRm9yUG9ydGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFsOwogfSBUcmlnZ2VyRGF0 YTsKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAKQEAgLTgxMyw2ICs4MTQsNDMgQEAgdHlwZWRlZiBz dHJ1Y3QgVHJpZ2dlcgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAg IDwvdmFybGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48 c3RydWN0ZmllbGQ+dGdfdGVtcG9yYWw8L3N0cnVjdGZpZWxkPjwvdGVybT4KKyAgICAgIDxs aXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgU2V0IGZvciA8bGl0ZXJhbD5VUERB VEU8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5ERUxFVEU8L2xpdGVyYWw+IHF1ZXJpZXMKKyAg ICAgICAgdGhhdCB1c2UgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+LCBvdGhl cndpc2UgPHN5bWJvbD5OVUxMPC9zeW1ib2w+LgorICAgICAgICBDb250YWlucyBhIHBvaW50 ZXIgdG8gYSBzdHJ1Y3R1cmUgb2YgdHlwZQorICAgICAgICA8c3RydWN0bmFtZT5Gb3JQb3J0 aW9uT2ZTdGF0ZTwvc3RydWN0bmFtZT4sIGRlZmluZWQgaW4KKyAgICAgICAgPGZpbGVuYW1l Pm5vZGVzL2V4ZWNub2Rlcy5oPC9maWxlbmFtZT46CisKKzxwcm9ncmFtbGlzdGluZz4KK3R5 cGVkZWYgc3RydWN0IEZvclBvcnRpb25PZlN0YXRlCit7CisgICAgTm9kZVRhZyB0eXBlOwor CisgICAgY2hhciAgICpmcF9yYW5nZU5hbWU7ICAgICAgIC8qIHRoZSBjb2x1bW4vUEVSSU9E IG5hbWVkIGluIEZPUiBQT1JUSU9OIE9GICovCisgICAgT2lkICAgICBmcF9yYW5nZVR5cGU7 ICAgICAgIC8qIHRoZSB0eXBlIG9mIHRoZSBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9uICov CisgICAgYm9vbCAgICBmcF9oYXNQZXJpb2Q7ICAgICAgIC8qIHRydWUgaWZmIHRoaXMgaXMg YSBQRVJJT0Qgbm90IGEgcmFuZ2UgKi8KKyAgICBjaGFyICAgKmZwX3BlcmlvZFN0YXJ0TmFt ZTsgLyogdGhlIFBFUklPRCdzIHN0YXJ0IGNvbHVtbiAqLworICAgIGNoYXIgICAqZnBfcGVy aW9kRW5kTmFtZTsgICAvKiB0aGUgUEVSSU9EJ3MgZW5kIGNvbHVtbiAqLworICAgIERhdHVt ICAgZnBfdGFyZ2V0UmFuZ2U7ICAgICAvKiB0aGUgcmFuZ2UgZnJvbSBGT1IgUE9SVElPTiBP RiAqLworfSBGb3JQb3J0aW9uT2ZTdGF0ZTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgICAg ICB3aGVyZSA8c3RydWN0ZmllbGQ+ZnBfcmFuZ2VOYW1lPC9zdHJ1Y3RmaWVsZD4gaXMgdGhl IHBlcmlvZCBvciByYW5nZQorICAgICAgIGNvbHVtbiBuYW1lZCBpbiB0aGUgPGxpdGVyYWw+ Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IGNsYXVzZSwKKyAgICAgICA8c3RydWN0ZmllbGQ+ ZnBfcmFuZ2VUeXBlPC9zdHJ1Y3RmaWVsZD4gaXMgaXRzIHJhbmdlIHR5cGUsCisgICAgICAg PHN0cnVjdGZpZWxkPmZwX2hhc1BlcmlvZDwvc3RydWN0ZmllbGQ+IGluZGljYXRlcyB3aGV0 aGVyIGEgcGVyaW9kIHdhcyB1c2VkCisgICAgICAgb3IgYSByYW5nZSBjb2x1bW4sIDxzdHJ1 Y3RmaWVsZD5mcF9wZXJpb2RTdGFydE5hbWU8L3N0cnVjdGZpZWxkPiBhbmQKKyAgICAgICA8 c3RydWN0ZmllbGQ+ZnBfcGVyaW9kRW5kTmFtZTwvc3RydWN0ZmllbGQ+IGFyZSB0aGUgbmFt ZXMgb2YgdGhlIHBlcmlvZCdzCisgICAgICAgc3RhcnQgYW5kIGVuZCBjb2x1bW5zIChvciA8 c3ltYm9sPk5VTEw8L3N5bWJvbD4gaWYgYSByYW5nZSBjb2x1bW4gd2FzIHVzZWQpLAorICAg ICAgIGFuZCA8c3RydWN0ZmllbGQ+ZnBfdGFyZ2V0UmFuZ2U8L3N0cnVjdGZpZWxkPiBpcyBh IHJhbmdldHlwZSB2YWx1ZSBjcmVhdGVkCisgICAgICAgYnkgZXZhbHVhdGluZyB0aGUgPGxp dGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IGJvdW5kcy4KKyAgICAgICA8L3BhcmE+ CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICA8L3Zhcmlh YmxlbGlzdD4KICAgIDwvcGFyYT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2dpc3QvZ2lzdHZhbGlkYXRlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dmFs aWRhdGUuYwppbmRleCA0YmQyZTUzMWQ3MS4uOTdjMTM5YTEwZDMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R2YWxpZGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9naXN0L2dpc3R2YWxpZGF0ZS5jCkBAIC0xOTksNyArMTk5LDcgQEAgZ2lzdHZh bGlkYXRlKE9pZCBvcGNsYXNzb2lkKQogCQl9CiAKIAkJLyogR2lTVCBzdXBwb3J0cyBPUkRF UiBCWSBvcGVyYXRvcnMgKi8KLQkJaWYgKG9wcmZvcm0tPmFtb3BwdXJwb3NlICE9IEFNT1Bf U0VBUkNIKQorCQlpZiAob3ByZm9ybS0+YW1vcHB1cnBvc2UgPT0gQU1PUF9PUkRFUikKIAkJ ewogCQkJLyogLi4uIGJ1dCBtdXN0IGhhdmUgbWF0Y2hpbmcgZGlzdGFuY2UgcHJvYyAqLwog CQkJaWYgKCFPaWRJc1ZhbGlkKGdldF9vcGZhbWlseV9wcm9jKG9wZmFtaWx5b2lkLApAQCAt MjI2LDI0ICsyMjYsNDMgQEAgZ2lzdHZhbGlkYXRlKE9pZCBvcGNsYXNzb2lkKQogCQkJCXJl c3VsdCA9IGZhbHNlOwogCQkJfQogCQl9Ci0JCWVsc2UKKwkJZWxzZSBpZiAob3ByZm9ybS0+ YW1vcHB1cnBvc2UgPT0gQU1PUF9TRUFSQ0gpCiAJCXsKIAkJCS8qIFNlYXJjaCBvcGVyYXRv cnMgbXVzdCBhbHdheXMgcmV0dXJuIGJvb2wgKi8KIAkJCW9wX3JldHR5cGUgPSBCT09MT0lE OwogCQl9Ci0KLQkJLyogQ2hlY2sgb3BlcmF0b3Igc2lnbmF0dXJlICovCi0JCWlmICghY2hl Y2tfYW1vcF9zaWduYXR1cmUob3ByZm9ybS0+YW1vcG9wciwgb3BfcmV0dHlwZSwKLQkJCQkJ CQkJICBvcHJmb3JtLT5hbW9wbGVmdHR5cGUsCi0JCQkJCQkJCSAgb3ByZm9ybS0+YW1vcHJp Z2h0dHlwZSkpCisJCWVsc2UgaWYgKG9wcmZvcm0tPmFtb3BwdXJwb3NlID09IEFNT1BfUE9S VElPTikKIAkJeworCQkJLyogTm8gcmVzdHJpY3Rpb25zIG9uIFBPUlRJT04gKi8KKwkJCW9w X3JldHR5cGUgPSBJbnZhbGlkT2lkOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogTm90aGlu ZyBlbHNlIGl0IGNvdWxkIGJlICovCiAJCQllcmVwb3J0KElORk8sCiAJCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCi0JCQkJCSBlcnJtc2coIm9w ZXJhdG9yIGZhbWlseSBcIiVzXCIgb2YgYWNjZXNzIG1ldGhvZCAlcyBjb250YWlucyBvcGVy YXRvciAlcyB3aXRoIHdyb25nIHNpZ25hdHVyZSIsCi0JCQkJCQkJb3BmYW1pbHluYW1lLCAi Z2lzdCIsCi0JCQkJCQkJZm9ybWF0X29wZXJhdG9yKG9wcmZvcm0tPmFtb3BvcHIpKSkpOwor CQkJCQkgZXJybXNnKCJvcGVyYXRvciBmYW1pbHkgXCIlc1wiIG9mIGFjY2VzcyBtZXRob2Qg JXMgY29udGFpbnMgdW5rbm93biBwdXJwb3NlICVjIGZvciBvcGVyYXRvciAlcyIsCisJCQkJ CQkgb3BmYW1pbHluYW1lLCAiZ2lzdCIsIG9wcmZvcm0tPmFtb3BwdXJwb3NlLAorCQkJCQkJ IGZvcm1hdF9vcGVyYXRvcihvcHJmb3JtLT5hbW9wb3ByKSkpKTsKKwkJCW9wX3JldHR5cGUg PSBJbnZhbGlkT2lkOwogCQkJcmVzdWx0ID0gZmFsc2U7CiAJCX0KKworCQkvKiBDaGVjayBv cGVyYXRvciBzaWduYXR1cmUgKi8KKwkJaWYgKE9pZElzVmFsaWQob3BfcmV0dHlwZSkpCisJ CXsKKwkJCWlmICghY2hlY2tfYW1vcF9zaWduYXR1cmUob3ByZm9ybS0+YW1vcG9wciwgb3Bf cmV0dHlwZSwKKwkJCQkJCQkJCSAgb3ByZm9ybS0+YW1vcGxlZnR0eXBlLAorCQkJCQkJCQkJ ICBvcHJmb3JtLT5hbW9wcmlnaHR0eXBlKSkKKwkJCXsKKwkJCQllcmVwb3J0KElORk8sCisJ CQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJ CQkJIGVycm1zZygib3BlcmF0b3IgZmFtaWx5IFwiJXNcIiBvZiBhY2Nlc3MgbWV0aG9kICVz IGNvbnRhaW5zIG9wZXJhdG9yICVzIHdpdGggd3Jvbmcgc2lnbmF0dXJlIiwKKwkJCQkJCQkJ b3BmYW1pbHluYW1lLCAiZ2lzdCIsCisJCQkJCQkJCWZvcm1hdF9vcGVyYXRvcihvcHJmb3Jt LT5hbW9wb3ByKSkpKTsKKwkJCQlyZXN1bHQgPSBmYWxzZTsKKwkJCX0KKwkJfQogCX0KIAog CS8qIE5vdyBjaGVjayBmb3IgaW5jb25zaXN0ZW50IGdyb3VwcyBvZiBvcGVyYXRvcnMvZnVu Y3Rpb25zICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IDQ3YTVjMTljZTFi Li5mOWEwYmExZTg5NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhj bWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTI0NjAs NyArMjQ2MCw5IEBAIEdldE9wZXJhdG9yRnJvbVdlbGxLbm93blN0cmF0ZWd5KE9pZCBvcGNs YXNzLAogCiAJQXNzZXJ0KGluc3RyYXQgPT0gUlRFcXVhbFN0cmF0ZWd5TnVtYmVyIHx8CiAJ CSAgIGluc3RyYXQgPT0gUlRPdmVybGFwU3RyYXRlZ3lOdW1iZXIgfHwKLQkJICAgaW5zdHJh dCA9PSBSVENvbnRhaW5lZEJ5U3RyYXRlZ3lOdW1iZXIpOworCQkgICBpbnN0cmF0ID09IFJU Q29udGFpbmVkQnlTdHJhdGVneU51bWJlciB8fAorCQkgICBpbnN0cmF0ID09IFJUV2l0aG91 dFBvcnRpb25TdHJhdGVneU51bWJlciB8fAorCQkgICBpbnN0cmF0ID09IFJUSW50ZXJzZWN0 U3RyYXRlZ3lOdW1iZXIpOwogCiAJKm9waWQgPSBJbnZhbGlkT2lkOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3RhYmxlY21kcy5jCmluZGV4IGI4ZDNhMDBlNGFiLi4yZDM3MWZlZDQwZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTEyNjEzLDYgKzEyNjEzLDcgQEAgdmFsaWRh dGVGb3JlaWduS2V5Q29uc3RyYWludChjaGFyICpjb25uYW1lLAogCQl0cmlnZGF0YS50Z190 cmlndHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKHNsb3QsIGZhbHNlLCBOVUxMKTsK IAkJdHJpZ2RhdGEudGdfdHJpZ3Nsb3QgPSBzbG90OwogCQl0cmlnZGF0YS50Z190cmlnZ2Vy ID0gJnRyaWc7CisJCXRyaWdkYXRhLnRnX3RlbXBvcmFsID0gTlVMTDsKIAogCQlmY2luZm8t PmNvbnRleHQgPSAoTm9kZSAqKSAmdHJpZ2RhdGE7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIu YwppbmRleCBjMzQ0ZmYwOTQ0Mi4uMjdkNTBjZjUyZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmln Z2VyLmMKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNs dWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2J5dGVhLmgiCisjaW5j bHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2lu Y2x1ZGUgInV0aWxzL2d1Y19ob29rcy5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCkBA IC0yNjM4LDYgKzI2MzksNyBAQCBFeGVjQlNEZWxldGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0 ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbykKIAlMb2NUcmlnZ2VyRGF0YS50Z19ldmVudCA9 IFRSSUdHRVJfRVZFTlRfREVMRVRFIHwKIAkJVFJJR0dFUl9FVkVOVF9CRUZPUkU7CiAJTG9j VHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxpbmZvLT5yaV9SZWxhdGlvbkRlc2M7CisJ TG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSByZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2Y7 CiAJZm9yIChpID0gMDsgaSA8IHRyaWdkZXNjLT5udW10cmlnZ2VyczsgaSsrKQogCXsKIAkJ VHJpZ2dlciAgICAqdHJpZ2dlciA9ICZ0cmlnZGVzYy0+dHJpZ2dlcnNbaV07CkBAIC0yNzM3 LDYgKzI3MzksNyBAQCBFeGVjQlJEZWxldGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgRVBR U3RhdGUgKmVwcXN0YXRlLAogCQlUUklHR0VSX0VWRU5UX1JPVyB8CiAJCVRSSUdHRVJfRVZF TlRfQkVGT1JFOwogCUxvY1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsaW5mby0+cmlf UmVsYXRpb25EZXNjOworCUxvY1RyaWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVsaW5mby0+ cmlfZm9yUG9ydGlvbk9mOwogCWZvciAoaSA9IDA7IGkgPCB0cmlnZGVzYy0+bnVtdHJpZ2dl cnM7IGkrKykKIAl7CiAJCUhlYXBUdXBsZQluZXd0dXBsZTsKQEAgLTI4MjgsNiArMjgzMSw3 IEBAIEV4ZWNJUkRlbGV0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZv ICpyZWxpbmZvLAogCQlUUklHR0VSX0VWRU5UX1JPVyB8CiAJCVRSSUdHRVJfRVZFTlRfSU5T VEVBRDsKIAlMb2NUcmlnZ2VyRGF0YS50Z19yZWxhdGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0 aW9uRGVzYzsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2Zv clBvcnRpb25PZjsKIAogCUV4ZWNGb3JjZVN0b3JlSGVhcFR1cGxlKHRyaWd0dXBsZSwgc2xv dCwgZmFsc2UpOwogCkBAIC0yODkxLDYgKzI4OTUsNyBAQCBFeGVjQlNVcGRhdGVUcmlnZ2Vy cyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbykKIAkJVFJJR0dFUl9F VkVOVF9CRUZPUkU7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxpbmZvLT5y aV9SZWxhdGlvbkRlc2M7CiAJTG9jVHJpZ2dlckRhdGEudGdfdXBkYXRlZGNvbHMgPSB1cGRh dGVkQ29sczsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2Zv clBvcnRpb25PZjsKIAlmb3IgKGkgPSAwOyBpIDwgdHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBp KyspCiAJewogCQlUcmlnZ2VyICAgICp0cmlnZ2VyID0gJnRyaWdkZXNjLT50cmlnZ2Vyc1tp XTsKQEAgLTMwMjYsNiArMzAzMSw3IEBAIEV4ZWNCUlVwZGF0ZVRyaWdnZXJzKEVTdGF0ZSAq ZXN0YXRlLCBFUFFTdGF0ZSAqZXBxc3RhdGUsCiAJCVRSSUdHRVJfRVZFTlRfUk9XIHwKIAkJ VFJJR0dFUl9FVkVOVF9CRUZPUkU7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSBy ZWxpbmZvLT5yaV9SZWxhdGlvbkRlc2M7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwg PSByZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2Y7CiAJdXBkYXRlZENvbHMgPSBFeGVjR2V0QWxs VXBkYXRlZENvbHMocmVsaW5mbywgZXN0YXRlKTsKIAlMb2NUcmlnZ2VyRGF0YS50Z191cGRh dGVkY29scyA9IHVwZGF0ZWRDb2xzOwogCWZvciAoaSA9IDA7IGkgPCB0cmlnZGVzYy0+bnVt dHJpZ2dlcnM7IGkrKykKQEAgLTMxNzUsNiArMzE4MSw3IEBAIEV4ZWNJUlVwZGF0ZVRyaWdn ZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQlUUklHR0VS X0VWRU5UX1JPVyB8CiAJCVRSSUdHRVJfRVZFTlRfSU5TVEVBRDsKIAlMb2NUcmlnZ2VyRGF0 YS50Z19yZWxhdGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwlMb2NUcmlnZ2Vy RGF0YS50Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZjsKIAogCUV4ZWNG b3JjZVN0b3JlSGVhcFR1cGxlKHRyaWd0dXBsZSwgb2xkc2xvdCwgZmFsc2UpOwogCkBAIC0z NjQxLDYgKzM2NDgsNyBAQCB0eXBlZGVmIHN0cnVjdCBBZnRlclRyaWdnZXJTaGFyZWREYXRh CiAJT2lkCQkJYXRzX3Rnb2lkOwkJLyogdGhlIHRyaWdnZXIncyBJRCAqLwogCU9pZAkJCWF0 c19yZWxpZDsJCS8qIHRoZSByZWxhdGlvbiBpdCdzIG9uICovCiAJQ29tbWFuZElkCWF0c19m aXJpbmdfaWQ7CS8qIElEIGZvciBmaXJpbmcgY3ljbGUgKi8KKwlGb3JQb3J0aW9uT2ZTdGF0 ZSAqZm9yX3BvcnRpb25fb2Y7CS8qIHRoZSBGT1IgUE9SVElPTiBPRiBjbGF1c2UgKi8KIAlz dHJ1Y3QgQWZ0ZXJUcmlnZ2Vyc1RhYmxlRGF0YSAqYXRzX3RhYmxlOwkvKiB0cmFuc2l0aW9u IHRhYmxlIGFjY2VzcyAqLwogCUJpdG1hcHNldCAgKmF0c19tb2RpZmllZGNvbHM7CS8qIG1v ZGlmaWVkIGNvbHVtbnMgKi8KIH0gQWZ0ZXJUcmlnZ2VyU2hhcmVkRGF0YTsKQEAgLTM5MTQs NiArMzkyMiw3IEBAIHN0YXRpYyBTZXRDb25zdHJhaW50U3RhdGUgU2V0Q29uc3RyYWludFN0 YXRlQ3JlYXRlKGludCBudW1hbGxvYyk7CiBzdGF0aWMgU2V0Q29uc3RyYWludFN0YXRlIFNl dENvbnN0cmFpbnRTdGF0ZUNvcHkoU2V0Q29uc3RyYWludFN0YXRlIG9yaWdzdGF0ZSk7CiBz dGF0aWMgU2V0Q29uc3RyYWludFN0YXRlIFNldENvbnN0cmFpbnRTdGF0ZUFkZEl0ZW0oU2V0 Q29uc3RyYWludFN0YXRlIHN0YXRlLAogCQkJCQkJCQkJCQkJCU9pZCB0Z29pZCwgYm9vbCB0 Z2lzZGVmZXJyZWQpOworc3RhdGljIEZvclBvcnRpb25PZlN0YXRlICpDb3B5Rm9yUG9ydGlv bk9mU3RhdGUoRm9yUG9ydGlvbk9mU3RhdGUgKnNyYyk7CiBzdGF0aWMgdm9pZCBjYW5jZWxf cHJpb3Jfc3RtdF90cmlnZ2VycyhPaWQgcmVsaWQsIENtZFR5cGUgY21kVHlwZSwgaW50IHRn ZXZlbnQpOwogCiAKQEAgLTQxMjMsNiArNDEzMiw3IEBAIGFmdGVyVHJpZ2dlckFkZEV2ZW50 KEFmdGVyVHJpZ2dlckV2ZW50TGlzdCAqZXZlbnRzLAogCQkJbmV3c2hhcmVkLT5hdHNfcmVs aWQgPT0gZXZ0c2hhcmVkLT5hdHNfcmVsaWQgJiYKIAkJCW5ld3NoYXJlZC0+YXRzX2V2ZW50 ID09IGV2dHNoYXJlZC0+YXRzX2V2ZW50ICYmCiAJCQluZXdzaGFyZWQtPmF0c190YWJsZSA9 PSBldnRzaGFyZWQtPmF0c190YWJsZSAmJgorCQkJbmV3c2hhcmVkLT5mb3JfcG9ydGlvbl9v ZiA9PSBldnRzaGFyZWQtPmZvcl9wb3J0aW9uX29mICYmCiAJCQluZXdzaGFyZWQtPmF0c19m aXJpbmdfaWQgPT0gMCkKIAkJCWJyZWFrOwogCX0KQEAgLTQ0ODcsNiArNDQ5Nyw3IEBAIEFm dGVyVHJpZ2dlckV4ZWN1dGUoRVN0YXRlICplc3RhdGUsCiAJTG9jVHJpZ2dlckRhdGEudGdf cmVsYXRpb24gPSByZWw7CiAJaWYgKFRSSUdHRVJfRk9SX1VQREFURShMb2NUcmlnZ2VyRGF0 YS50Z190cmlnZ2VyLT50Z3R5cGUpKQogCQlMb2NUcmlnZ2VyRGF0YS50Z191cGRhdGVkY29s cyA9IGV2dHNoYXJlZC0+YXRzX21vZGlmaWVkY29sczsKKwlMb2NUcmlnZ2VyRGF0YS50Z190 ZW1wb3JhbCA9IGV2dHNoYXJlZC0+Zm9yX3BvcnRpb25fb2Y7CiAKIAlNZW1vcnlDb250ZXh0 UmVzZXQocGVyX3R1cGxlX2NvbnRleHQpOwogCkBAIC02MDIzLDYgKzYwMzQsNDMgQEAgQWZ0 ZXJUcmlnZ2VyUGVuZGluZ09uUmVsKE9pZCByZWxpZCkKIAlyZXR1cm4gZmFsc2U7CiB9CiAK Ky8qIC0tLS0tLS0tLS0KKyAqIEZvclBvcnRpb25PZlN0YXRlKCkKKyAqCisgKiBDb3B5cyBh IEZvclBvcnRpb25PZlN0YXRlIGludG8gdGhlIGN1cnJlbnQgbWVtb3J5IGNvbnRleHQuCisg Ki8KK3N0YXRpYyBGb3JQb3J0aW9uT2ZTdGF0ZSAqCitDb3B5Rm9yUG9ydGlvbk9mU3RhdGUo Rm9yUG9ydGlvbk9mU3RhdGUgKnNyYykKK3sKKwlGb3JQb3J0aW9uT2ZTdGF0ZSAqZHN0ID0g TlVMTDsKKwlpZiAoc3JjKSB7CisJCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCQlSYW5nZVR5 cGUgKnI7CisJCVR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZTsKKworCQkvKgorCQkgKiBOZWVk IHRvIGxpZnQgdGhlIEZPUiBQT1JUSU9OIE9GIGRldGFpbHMgaW50byBhIGhpZ2hlciBtZW1v cnkgY29udGV4dAorCQkgKiBiZWNhdXNlIGNhc2NhZGluZyBmb3JlaWduIGtleSB1cGRhdGUv ZGVsZXRlcyBjYW4gY2F1c2UgdHJpZ2dlcnMgdG8gZmlyZQorCQkgKiB0cmlnZ2VycywgYW5k IHRoZSBBZnRlclRyaWdnZXJFdmVudHMgd2lsbCBvdXRsaXZlIHRoZSBGUE8KKwkJICogZGV0 YWlscyBvZiB0aGUgb3JpZ2luYWwgcXVlcnkuCisJCSAqLworCQlvbGRjdHggPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oVG9wVHJhbnNhY3Rpb25Db250ZXh0KTsKKwkJZHN0ID0gbWFrZU5v ZGUoRm9yUG9ydGlvbk9mU3RhdGUpOworCQlkc3QtPmZwX3JhbmdlTmFtZSA9IHBzdHJkdXAo c3JjLT5mcF9yYW5nZU5hbWUpOworCQlkc3QtPmZwX3JhbmdlVHlwZSA9IHNyYy0+ZnBfcmFu Z2VUeXBlOworCQlkc3QtPmZwX2hhc1BlcmlvZCA9IHNyYy0+ZnBfaGFzUGVyaW9kOworCQlk c3QtPmZwX3JhbmdlQXR0bm8gPSBzcmMtPmZwX3JhbmdlQXR0bm87CisJCWRzdC0+ZnBfcGVy aW9kU3RhcnRBdHRubyA9IHNyYy0+ZnBfcGVyaW9kU3RhcnRBdHRubzsKKwkJZHN0LT5mcF9w ZXJpb2RFbmRBdHRubyA9IHNyYy0+ZnBfcGVyaW9kRW5kQXR0bm87CisKKwkJciA9IERhdHVt R2V0UmFuZ2VUeXBlUChzcmMtPmZwX3RhcmdldFJhbmdlKTsKKwkJdHlwY2FjaGUgPSBsb29r dXBfdHlwZV9jYWNoZShSYW5nZVR5cGVHZXRPaWQociksIFRZUEVDQUNIRV9SQU5HRV9JTkZP KTsKKwkJZHN0LT5mcF90YXJnZXRSYW5nZSA9IGRhdHVtQ29weShzcmMtPmZwX3RhcmdldFJh bmdlLCB0eXBjYWNoZS0+dHlwYnl2YWwsIHR5cGNhY2hlLT50eXBsZW4pOworCQlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwl9CisJcmV0dXJuIGRzdDsKK30KKwogLyogLS0t LS0tLS0tLQogICogQWZ0ZXJUcmlnZ2VyU2F2ZUV2ZW50KCkKICAqCkBAIC02NDM4LDYgKzY0 ODYsNyBAQCBBZnRlclRyaWdnZXJTYXZlRXZlbnQoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJl bEluZm8gKnJlbGluZm8sCiAJCWVsc2UKIAkJCW5ld19zaGFyZWQuYXRzX3RhYmxlID0gTlVM TDsKIAkJbmV3X3NoYXJlZC5hdHNfbW9kaWZpZWRjb2xzID0gYWZ0ZXJUcmlnZ2VyQ29weUJp dG1hcChtb2RpZmllZENvbHMpOworCQluZXdfc2hhcmVkLmZvcl9wb3J0aW9uX29mID0gQ29w eUZvclBvcnRpb25PZlN0YXRlKHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZik7CiAKIAkJYWZ0 ZXJUcmlnZ2VyQWRkRXZlbnQoJmFmdGVyVHJpZ2dlcnMucXVlcnlfc3RhY2tbYWZ0ZXJUcmln Z2Vycy5xdWVyeV9kZXB0aF0uZXZlbnRzLAogCQkJCQkJCSAmbmV3X2V2ZW50LCAmbmV3X3No YXJlZCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCAxM2E5YjdkYTgzYi4uYjJl YjViZGU3MzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtMTI3NCw2ICsxMjc0 LDcgQEAgSW5pdFJlc3VsdFJlbEluZm8oUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywK IAlyZXN1bHRSZWxJbmZvLT5yaV9wcm9qZWN0UmV0dXJuaW5nID0gTlVMTDsKIAlyZXN1bHRS ZWxJbmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4ZXMgPSBOSUw7CiAJcmVzdWx0UmVs SW5mby0+cmlfb25Db25mbGljdCA9IE5VTEw7CisJcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9y dGlvbk9mID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9SZXR1cm5pbmdTbG90ID0gTlVM TDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnT2xkU2xvdCA9IE5VTEw7CiAJcmVzdWx0UmVs SW5mby0+cmlfVHJpZ05ld1Nsb3QgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TW9kaWZ5VGFibGUuYwppbmRleCA5ZmM1YWJmZjhmMC4uZjEwZTRjNDY5YzIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC01OCw5ICs1OCwxMSBAQAog I2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKICNpbmNsdWRlICJzdG9yYWdl L2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgorI2luY2x1ZGUgInV0aWxz L2FycmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGls cy9kYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRp bHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAKIApAQCAtMTQxLDYg KzE0MywxMCBAQCBzdGF0aWMgYm9vbCBFeGVjT25Db25mbGljdFVwZGF0ZShNb2RpZnlUYWJs ZUNvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqZXhjbHVkZWRT bG90LAogCQkJCQkJCQkgYm9vbCBjYW5TZXRUYWcsCiAJCQkJCQkJCSBUdXBsZVRhYmxlU2xv dCAqKnJldHVybmluZyk7CitzdGF0aWMgdm9pZCBFeGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJz KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKKwkJCQkJCQkJCSAgRVN0YXRlICplc3Rh dGUsCisJCQkJCQkJCQkgIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCisJCQkJCQkJ CQkgIEl0ZW1Qb2ludGVyIHR1cGxlaWQpOwogc3RhdGljIFR1cGxlVGFibGVTbG90ICpFeGVj UHJlcGFyZVR1cGxlUm91dGluZyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAogCQkJCQkJ CQkJCQkgICBFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJCQkJCQkJICAgUGFydGl0aW9uVHVwbGVS b3V0aW5nICpwcm91dGUsCkBAIC0xNjAsNiArMTY2LDcgQEAgc3RhdGljIGJvb2wgRXhlY01l cmdlTWF0Y2hlZChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiBzdGF0aWMgdm9pZCBF eGVjTWVyZ2VOb3RNYXRjaGVkKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAkJCQkJ CQkJUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCQkJCQkJYm9vbCBjYW5TZXRU YWcpOworc3RhdGljIHZvaWQgRXhlY1NldHVwVHJhbnNpdGlvbkNhcHR1cmVTdGF0ZShNb2Rp ZnlUYWJsZVN0YXRlICptdHN0YXRlLCBFU3RhdGUgKmVzdGF0ZSk7CiAKIAogLyoKQEAgLTEy MDUsNiArMTIxMiwxNDMgQEAgRXhlY0luc2VydChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRl eHQsCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNGb3JQ b3J0aW9uT2ZMZWZ0b3ZlcnMKKyAqCisgKgkJSW5zZXJ0IHR1cGxlcyBmb3IgdGhlIHVudG91 Y2hlZCBwb3J0aW9uIG9mIGEgcm93IGluIGEgRk9SCisgKgkJUE9SVElPTiBPRiBVUERBVEUv REVMRVRFCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3N0YXRpYyB2b2lkCitFeGVjRm9yUG9ydGlv bk9mTGVmdG92ZXJzKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKKwkJCQkJCSAgRVN0 YXRlICplc3RhdGUsCisJCQkJCQkgIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCisJ CQkJCQkgIEl0ZW1Qb2ludGVyIHR1cGxlaWQpCit7CisJTW9kaWZ5VGFibGVTdGF0ZSAqbXRz dGF0ZSA9IGNvbnRleHQtPm10c3RhdGU7CisJTW9kaWZ5VGFibGUgKm5vZGUgPSAoTW9kaWZ5 VGFibGUgKikgbXRzdGF0ZS0+cHMucGxhbjsKKwlGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0 aW9uT2YgPSAoRm9yUG9ydGlvbk9mRXhwciAqKSBub2RlLT5mb3JQb3J0aW9uT2Y7CisJQXR0 ck51bWJlcglyYW5nZUF0dG5vOworCURhdHVtCW9sZFJhbmdlOworCURhdHVtCWFsbExlZnRv dmVyczsKKwlEYXR1bQkqbGVmdG92ZXJzOworCWludAkJbmxlZnRvdmVyczsKKwlib29sIGlz TnVsbCA9IGZhbHNlOworCVR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZTsKKwlGb3JQb3J0aW9u T2ZTdGF0ZSAqZnBvU3RhdGUgPSByZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2Y7CisJ VHVwbGVUYWJsZVNsb3QgKm9sZHR1cGxlU2xvdCA9IGZwb1N0YXRlLT5mcF9FeGlzdGluZzsK KwlUdXBsZVRhYmxlU2xvdCAqbGVmdG92ZXJTbG90ID0gZnBvU3RhdGUtPmZwX0xlZnRvdmVy OworCVR1cGxlQ29udmVyc2lvbk1hcCAqbWFwID0gTlVMTDsKKwlIZWFwVHVwbGUgb2xkdHVw bGUgPSBOVUxMOworCUNtZFR5cGUJb2xkT3BlcmF0aW9uOworCVRyYW5zaXRpb25DYXB0dXJl U3RhdGUgKm9sZFRjczsKKworCS8qCisJICogR2V0IHRoZSByYW5nZSBvZiB0aGUgb2xkIHBy ZS1VUERBVEUvREVMRVRFIHR1cGxlLAorCSAqIHNvIHdlIGNhbiBpbnRlcnNlY3QgaXQgd2l0 aCB0aGUgRk9SIFBPUlRJT04gT0YgdGFyZ2V0CisJICogYW5kIHNlZSBpZiB0aGVyZSBhcmUg YW55ICJsZWZ0b3ZlcnMiIHRvIGluc2VydC4KKwkgKgorCSAqIFdlIGhhdmUgYWxyZWFkeSBs b2NrZWQgdGhlIHR1cGxlIGluIEV4ZWNVcGRhdGUvRXhlY0RlbGV0ZQorCSAqIGFuZCBpdCBo YXMgcGFzc2VkIEV2YWxQbGFuUXVhbC4KKwkgKiBNYWtlIHN1cmUgd2UncmUgbG9va2luZyBh dCB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbi4KKwkgKiBPdGhlcndpc2UgY29uY3VycmVudCB1 cGRhdGVzIG9mIHRoZSBzYW1lIHR1cGxlIGluIFJFQUQgQ09NTUlUVEVECisJICogY291bGQg aW5zZXJ0IGNvbmZsaWN0aW5nICJsZWZ0b3ZlcnMiLgorCSAqLworCWlmICghdGFibGVfdHVw bGVfZmV0Y2hfcm93X3ZlcnNpb24ocmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLCB0 dXBsZWlkLCBTbmFwc2hvdEFueSwgb2xkdHVwbGVTbG90KSkKKwkJZWxvZyhFUlJPUiwgImZh aWxlZCB0byBmZXRjaCB0dXBsZSBmb3IgRk9SIFBPUlRJT04gT0YiKTsKKworCS8qCisJICog R2V0IHRoZSBvbGQgcmFuZ2Ugb2YgdGhlIHJlY29yZCBiZWluZyB1cGRhdGVkLgorCSAqIE11 c3QgcmVhZCB3aXRoIHRoZSBhdHRubyBvZiB0aGUgbGVhZiBwYXJ0aXRpb24gYmVpbmcgdXBk YXRlZAorCSAqLworCisJcmFuZ2VBdHRubyA9IGZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZh cmF0dG5vOworCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9Sb290UmVzdWx0UmVsSW5mbykKKwkJ bWFwID0gRXhlY0dldENoaWxkVG9Sb290TWFwKHJlc3VsdFJlbEluZm8pOworCWlmIChtYXAg IT0gTlVMTCkKKwkJcmFuZ2VBdHRubyA9IG1hcC0+YXR0ck1hcC0+YXR0bnVtc1tyYW5nZUF0 dG5vIC0gMV07CisJb2xkUmFuZ2UgPSBzbG90X2dldGF0dHIob2xkdHVwbGVTbG90LCByYW5n ZUF0dG5vLCAmaXNOdWxsKTsKKworCWlmIChpc051bGwpCisJCWVsb2coRVJST1IsICJmb3Vu ZCBhIE5VTEwgcmFuZ2UgaW4gYSB0ZW1wb3JhbCB0YWJsZSIpOworCisJLyoKKwkgKiBHZXQg dGhlIHJhbmdlJ3MgdHlwZSBjYWNoZSBlbnRyeS4gVGhpcyBpcyB3b3J0aCBjYWNoaW5nIGZv ciB0aGUgd2hvbGUgVVBEQVRFCisJICogYXMgcmFuZ2UgZnVuY3Rpb25zIGRvLgorCSAqLwor CisJdHlwY2FjaGUgPSBmcG9TdGF0ZS0+ZnBfbGVmdG92ZXJzdHlwY2FjaGU7CisJaWYgKHR5 cGNhY2hlID09IE5VTEwpCisJeworCQl0eXBjYWNoZSA9IGxvb2t1cF90eXBlX2NhY2hlKGZv clBvcnRpb25PZi0+cmFuZ2VUeXBlLCAwKTsKKwkJZnBvU3RhdGUtPmZwX2xlZnRvdmVyc3R5 cGNhY2hlID0gdHlwY2FjaGU7CisJfQorCisJLyogR2V0IHRoZSByYW5nZXMgdG8gdGhlIGxl ZnQvcmlnaHQgb2YgdGhlIHRhcmdldGVkIHJhbmdlLiAqLworCisJYWxsTGVmdG92ZXJzID0g T2lkRnVuY3Rpb25DYWxsMkNvbGwoZm9yUG9ydGlvbk9mLT53aXRob3V0UG9ydGlvblByb2Ms CisJCQkJCQkJCQkJSW52YWxpZE9pZCwgb2xkUmFuZ2UsIGZwb1N0YXRlLT5mcF90YXJnZXRS YW5nZSk7CisKKwlkZWNvbnN0cnVjdF9hcnJheShEYXR1bUdldEFycmF5VHlwZVAoYWxsTGVm dG92ZXJzKSwgdHlwY2FjaGUtPnR5cGVfaWQsIHR5cGNhY2hlLT50eXBsZW4sCisJCQkJCSAg dHlwY2FjaGUtPnR5cGJ5dmFsLCB0eXBjYWNoZS0+dHlwYWxpZ24sICZsZWZ0b3ZlcnMsIE5V TEwsICZubGVmdG92ZXJzKTsKKworCUFzc2VydChubGVmdG92ZXJzID49IDApOworCWlmIChu bGVmdG92ZXJzID4gMCkKKwl7CisJCWJvb2wgc2hvdWxkRnJlZSA9IGZhbHNlOworCQlpbnQg aTsKKworCQkvKgorCQkgKiBNYWtlIGEgY29weSBvZiB0aGUgcHJlLVVQREFURSByb3cuCisJ CSAqIFRoZW4gd2UnbGwgb3ZlcndyaXRlIHRoZSByYW5nZSBjb2x1bW4gYmVsb3cuCisJCSAq IENvbnZlcnQgb2xkdHVwbGUgdG8gdGhlIGJhc2UgdGFibGUncyBmb3JtYXQgaWYgbmVjZXNz YXJ5LgorCQkgKiBXZSBuZWVkIHRvIGluc2VydCBsZWZ0b3ZlcnMgdGhyb3VnaCB0aGUgcm9v dCBwYXJ0aXRpb24KKwkJICogc28gdGhleSBnZXQgcm91dGVkIGNvcnJlY3RseS4KKwkJICov CisJCWlmIChtYXAgIT0gTlVMTCkKKwkJCWxlZnRvdmVyU2xvdCA9IGV4ZWN1dGVfYXR0cl9t YXBfc2xvdChtYXAtPmF0dHJNYXAsCisJCQkJCQkJCQkJCQkgb2xkdHVwbGVTbG90LAorCQkJ CQkJCQkJCQkJIGxlZnRvdmVyU2xvdCk7CisJCWVsc2UKKwkJeworCQkJb2xkdHVwbGUgPSBF eGVjRmV0Y2hTbG90SGVhcFR1cGxlKG9sZHR1cGxlU2xvdCwgZmFsc2UsICZzaG91bGRGcmVl KTsKKwkJCUV4ZWNGb3JjZVN0b3JlSGVhcFR1cGxlKG9sZHR1cGxlLCBsZWZ0b3ZlclNsb3Qs IGZhbHNlKTsKKwkJfQorCisJCS8qIFNhdmUgc29tZSBtdHN0YXRlIHRoaW5ncyBzbyB3ZSBj YW4gcmVzdG9yZSB0aGVtIGJlbG93LiAqLworCQkvLyBUT0RPOiBEbyB3ZSBuZWVkIGEgbW9y ZSBzeXN0ZW1hdGljIHdheSBvZiBkb2luZyB0aGlzLAorCQkvLyBlLmcuIGEgbmV3IG10c3Rh dGUgb3IgZXZlbiBhIHNlcGFyYXRlIEZvclBvcnRpb25PZkxlZnRvdmVycyBub2RlPworCQlv bGRPcGVyYXRpb24gPSBtdHN0YXRlLT5vcGVyYXRpb247CisJCW10c3RhdGUtPm9wZXJhdGlv biA9IENNRF9JTlNFUlQ7CisJCW9sZFRjcyA9IG10c3RhdGUtPm10X3RyYW5zaXRpb25fY2Fw dHVyZTsKKworCQlmb3IgKGkgPSAwOyBpIDwgbmxlZnRvdmVyczsgaSsrKQorCQl7CisJCQkv KiBzdG9yZSB0aGUgbmV3IHJhbmdlICovCisJCQlsZWZ0b3ZlclNsb3QtPnR0c192YWx1ZXNb Zm9yUG9ydGlvbk9mLT5yYW5nZVZhci0+dmFyYXR0bm8gLSAxXSA9IGxlZnRvdmVyc1tpXTsK KwkJCWxlZnRvdmVyU2xvdC0+dHRzX2lzbnVsbFtmb3JQb3J0aW9uT2YtPnJhbmdlVmFyLT52 YXJhdHRubyAtIDFdID0gZmFsc2U7CisJCQlFeGVjTWF0ZXJpYWxpemVTbG90KGxlZnRvdmVy U2xvdCk7CisKKwkJCS8qCisJCQkgKiBJZiB0aGVyZSBhcmUgcGFydGl0aW9ucywgd2UgbXVz dCBpbnNlcnQgaW50byB0aGUgcm9vdCB0YWJsZSwKKwkJCSAqIHNvIHdlIGdldCB0dXBsZSBy b3V0aW5nLiBXZSBhbHJlYWR5IHNldCB1cCBsZWZ0b3ZlclNsb3QKKwkJCSAqIHdpdGggdGhl IHJvb3QgdHVwbGUgZGVzY3JpcHRvci4KKwkJCSAqLworCQkJaWYgKHJlc3VsdFJlbEluZm8t PnJpX1Jvb3RSZXN1bHRSZWxJbmZvKQorCQkJCXJlc3VsdFJlbEluZm8gPSByZXN1bHRSZWxJ bmZvLT5yaV9Sb290UmVzdWx0UmVsSW5mbzsKKworCQkJRXhlY1NldHVwVHJhbnNpdGlvbkNh cHR1cmVTdGF0ZShtdHN0YXRlLCBlc3RhdGUpOworCQkJRXhlY0luc2VydChjb250ZXh0LCBy ZXN1bHRSZWxJbmZvLCBsZWZ0b3ZlclNsb3QsIG5vZGUtPmNhblNldFRhZywgTlVMTCwgTlVM TCk7CisJCX0KKworCQltdHN0YXRlLT5vcGVyYXRpb24gPSBvbGRPcGVyYXRpb247CisJCW10 c3RhdGUtPm10X3RyYW5zaXRpb25fY2FwdHVyZSA9IG9sZFRjczsKKworCQlpZiAoc2hvdWxk RnJlZSkKKwkJCWhlYXBfZnJlZXR1cGxlKG9sZHR1cGxlKTsKKwl9Cit9CisKIC8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICAqCQlFeGVjQmF0Y2hJbnNlcnQKICAqCkBAIC0xMzU3LDcgKzE1MDEsOCBAQCBF eGVjRGVsZXRlQWN0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0UmVsSW5m byAqcmVzdWx0UmVsSW5mbywKICAqCiAgKiBDbG9zaW5nIHN0ZXBzIG9mIHR1cGxlIGRlbGV0 aW9uOyB0aGlzIGludm9rZXMgQUZURVIgRk9SIEVBQ0ggUk9XIHRyaWdnZXJzLAogICogaW5j bHVkaW5nIHRoZSBVUERBVEUgdHJpZ2dlcnMgaWYgdGhlIGRlbGV0aW9uIGlzIGJlaW5nIGRv bmUgYXMgcGFydCBvZiBhCi0gKiBjcm9zcy1wYXJ0aXRpb24gdHVwbGUgbW92ZS4KKyAqIGNy b3NzLXBhcnRpdGlvbiB0dXBsZSBtb3ZlLiBJdCBhbHNvIGluc2VydHMgbGVmdG92ZXJzIGZy b20gYSBGT1IgUE9SVElPTiBPRgorICogZGVsZXRlLgogICovCiBzdGF0aWMgdm9pZAogRXhl Y0RlbGV0ZUVwaWxvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbywKQEAgLTEzOTAsNiArMTUzNSwxMSBAQCBFeGVjRGVsZXRl RXBpbG9ndWUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1bHRSZWxJbmZvICpy ZXN1bHRSZWxJbmZvLAogCQlhcl9kZWxldGVfdHJpZ190Y3MgPSBOVUxMOwogCX0KIAorCS8q IENvbXB1dGUgbGVmdG92ZXJzIGluIEZPUiBQT1JUSU9OIE9GICovCisJLy8gVE9ETzogU2tp cCB0aGlzIGZvciBGRFcgZGVsZXRlcz8KKwlpZiAoKChNb2RpZnlUYWJsZSAqKSBjb250ZXh0 LT5tdHN0YXRlLT5wcy5wbGFuKS0+Zm9yUG9ydGlvbk9mKQorCQlFeGVjRm9yUG9ydGlvbk9m TGVmdG92ZXJzKGNvbnRleHQsIGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCk7CisK IAkvKiBBRlRFUiBST1cgREVMRVRFIFRyaWdnZXJzICovCiAJRXhlY0FSRGVsZXRlVHJpZ2dl cnMoZXN0YXRlLCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwKIAkJCQkJCSBh cl9kZWxldGVfdHJpZ190Y3MsIGNoYW5naW5nUGFydCk7CkBAIC0xNzcwLDcgKzE5MjAsMTEg QEAgRXhlY0Nyb3NzUGFydGl0aW9uVXBkYXRlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4 dCwKIAlpZiAocmVzdWx0UmVsSW5mbyA9PSBtdHN0YXRlLT5yb290UmVzdWx0UmVsSW5mbykK IAkJRXhlY1BhcnRpdGlvbkNoZWNrRW1pdEVycm9yKHJlc3VsdFJlbEluZm8sIHNsb3QsIGVz dGF0ZSk7CiAKLQkvKiBJbml0aWFsaXplIHR1cGxlIHJvdXRpbmcgaW5mbyBpZiBub3QgYWxy ZWFkeSBkb25lLiAqLworCS8qCisJICogSW5pdGlhbGl6ZSB0dXBsZSByb3V0aW5nIGluZm8g aWYgbm90IGFscmVhZHkgZG9uZS4KKwkgKiBOb3RlIHdoYXRldmVyIHdlIGRvIGhlcmUgbXVz dCBiZSBkb25lIGluIEV4ZWNJbml0TW9kaWZ5VGFibGUKKwkgKiBmb3IgRk9SIFBPUlRJT04g T0YgYXMgd2VsbC4KKwkgKi8KIAlpZiAobXRzdGF0ZS0+bXRfcGFydGl0aW9uX3R1cGxlX3Jv dXRpbmcgPT0gTlVMTCkKIAl7CiAJCVJlbGF0aW9uCXJvb3RSZWwgPSBtdHN0YXRlLT5yb290 UmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOwpAQCAtMjEzOSw2ICsyMjkzLDExIEBA IEV4ZWNVcGRhdGVFcGlsb2d1ZShNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsIFVwZGF0 ZUNvbnRleHQgKnVwZGF0ZUN4dCwKIAkJCQkJCQkJCQkJICAgTlVMTCwgTklMLAogCQkJCQkJ CQkJCQkgICAodXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzID09IFRVX1N1bW1hcml6aW5nKSk7 CiAKKwkvKiBDb21wdXRlIGxlZnRvdmVycyBpbiBGT1IgUE9SVElPTiBPRiAqLworCS8vIFRP RE86IFNraXAgdGhpcyBmb3IgRkRXIHVwZGF0ZXM/CisJaWYgKCgoTW9kaWZ5VGFibGUgKikg Y29udGV4dC0+bXRzdGF0ZS0+cHMucGxhbiktPmZvclBvcnRpb25PZikKKwkJRXhlY0ZvclBv cnRpb25PZkxlZnRvdmVycyhjb250ZXh0LCBjb250ZXh0LT5lc3RhdGUsIHJlc3VsdFJlbElu Zm8sIHR1cGxlaWQpOworCiAJLyogQUZURVIgUk9XIFVQREFURSBUcmlnZ2VycyAqLwogCUV4 ZWNBUlVwZGF0ZVRyaWdnZXJzKGNvbnRleHQtPmVzdGF0ZSwgcmVzdWx0UmVsSW5mbywKIAkJ CQkJCSBOVUxMLCBOVUxMLApAQCAtNDMwMyw2ICs0NDYyLDExNyBAQCBFeGVjSW5pdE1vZGlm eVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykK IAkJfQogCX0KIAorCS8qCisJICogSWYgbmVlZGVkLCBpbml0aWFsaXplIHRoZSB0YXJnZXQg cmFuZ2UgZm9yIEZPUiBQT1JUSU9OIE9GLgorCSAqLworCWlmIChub2RlLT5mb3JQb3J0aW9u T2YpCisJeworCQlUdXBsZURlc2MgdHVwRGVzYzsKKwkJRm9yUG9ydGlvbk9mRXhwciAqZm9y UG9ydGlvbk9mOworCQlEYXR1bQl0YXJnZXRSYW5nZTsKKwkJYm9vbAlpc051bGw7CisJCUV4 cHJDb250ZXh0ICplY29udGV4dDsKKwkJRXhwclN0YXRlICpleHByU3RhdGU7CisJCUZvclBv cnRpb25PZlN0YXRlICpmcG9TdGF0ZTsKKworCQlyZXN1bHRSZWxJbmZvID0gbXRzdGF0ZS0+ cmVzdWx0UmVsSW5mbzsKKwkJaWYgKHJlc3VsdFJlbEluZm8tPnJpX1Jvb3RSZXN1bHRSZWxJ bmZvKQorCQkJcmVzdWx0UmVsSW5mbyA9IHJlc3VsdFJlbEluZm8tPnJpX1Jvb3RSZXN1bHRS ZWxJbmZvOworCisJCXR1cERlc2MgPSByZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2Mt PnJkX2F0dDsKKwkJZm9yUG9ydGlvbk9mID0gKEZvclBvcnRpb25PZkV4cHIgKikgbm9kZS0+ Zm9yUG9ydGlvbk9mOworCisJCS8qIEV2YWwgdGhlIEZPUiBQT1JUSU9OIE9GIHRhcmdldCAq LworCQlpZiAobXRzdGF0ZS0+cHMucHNfRXhwckNvbnRleHQgPT0gTlVMTCkKKwkJCUV4ZWNB c3NpZ25FeHByQ29udGV4dChlc3RhdGUsICZtdHN0YXRlLT5wcyk7CisJCWVjb250ZXh0ID0g bXRzdGF0ZS0+cHMucHNfRXhwckNvbnRleHQ7CisKKwkJZXhwclN0YXRlID0gRXhlY1ByZXBh cmVFeHByKChFeHByICopIGZvclBvcnRpb25PZi0+dGFyZ2V0UmFuZ2UsIGVzdGF0ZSk7CisJ CXRhcmdldFJhbmdlID0gRXhlY0V2YWxFeHByKGV4cHJTdGF0ZSwgZWNvbnRleHQsICZpc051 bGwpOworCQlpZiAoaXNOdWxsKQorCQkJZWxvZyhFUlJPUiwgIkdvdCBhIE5VTEwgRk9SIFBP UlRJT04gT0YgdGFyZ2V0IHJhbmdlIik7CisKKwkJLyogQ3JlYXRlIHN0YXRlIGZvciBGT1Ig UE9SVElPTiBPRiBvcGVyYXRpb24gKi8KKworCQlmcG9TdGF0ZSA9IG1ha2VOb2RlKEZvclBv cnRpb25PZlN0YXRlKTsKKwkJZnBvU3RhdGUtPmZwX3JhbmdlTmFtZSA9IGZvclBvcnRpb25P Zi0+cmFuZ2VfbmFtZTsKKwkJZnBvU3RhdGUtPmZwX3JhbmdlVHlwZSA9IGZvclBvcnRpb25P Zi0+cmFuZ2VUeXBlOworCQlmcG9TdGF0ZS0+ZnBfcmFuZ2VBdHRubyA9IGZvclBvcnRpb25P Zi0+cmFuZ2VWYXItPnZhcmF0dG5vOworCQlmcG9TdGF0ZS0+ZnBfdGFyZ2V0UmFuZ2UgPSB0 YXJnZXRSYW5nZTsKKworCQkvKiBJbml0aWFsaXplIHNsb3QgZm9yIHRoZSBleGlzdGluZyB0 dXBsZSAqLworCisJCWZwb1N0YXRlLT5mcF9FeGlzdGluZyA9CisJCQl0YWJsZV9zbG90X2Ny ZWF0ZShyZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2MsCisJCQkJCQkJICAmbXRzdGF0 ZS0+cHMuc3RhdGUtPmVzX3R1cGxlVGFibGUpOworCisJCS8qIENyZWF0ZSB0aGUgdHVwbGUg c2xvdCBmb3IgSU5TRVJUaW5nIHRoZSBsZWZ0b3ZlcnMgKi8KKworCQlmcG9TdGF0ZS0+ZnBf TGVmdG92ZXIgPQorCQkJRXhlY0luaXRFeHRyYVR1cGxlU2xvdChtdHN0YXRlLT5wcy5zdGF0 ZSwgdHVwRGVzYywgJlRUU09wc1ZpcnR1YWwpOworCisJCS8qCisJCSAqIFdlIG11c3QgYXR0 YWNoIHRoZSBGb3JQb3J0aW9uT2ZTdGF0ZSB0byBhbGwgcmVzdWx0IHJlbHMsCisJCSAqIGlu IGNhc2Ugb2YgYSBjcm9zcy1wYXJ0aXRpb24gdXBkYXRlIG9yIHRyaWdnZXJzIGZpcmluZwor CQkgKiBvbiBwYXJ0aXRpb25zLgorCQkgKi8KKwkJZm9yIChpID0gMDsgaSA8IG5yZWxzOyBp KyspCisJCXsKKwkJCUZvclBvcnRpb25PZlN0YXRlCSpsZWFmU3RhdGU7CisJCQlyZXN1bHRS ZWxJbmZvID0gJm10c3RhdGUtPnJlc3VsdFJlbEluZm9baV07CisKKwkJCWxlYWZTdGF0ZSA9 IG1ha2VOb2RlKEZvclBvcnRpb25PZlN0YXRlKTsKKwkJCWxlYWZTdGF0ZS0+ZnBfcmFuZ2VO YW1lID0gZnBvU3RhdGUtPmZwX3JhbmdlTmFtZTsKKwkJCWxlYWZTdGF0ZS0+ZnBfcmFuZ2VU eXBlID0gZnBvU3RhdGUtPmZwX3JhbmdlVHlwZTsKKwkJCWxlYWZTdGF0ZS0+ZnBfcmFuZ2VB dHRubyA9IGZwb1N0YXRlLT5mcF9yYW5nZUF0dG5vOworCQkJbGVhZlN0YXRlLT5mcF90YXJn ZXRSYW5nZSA9IGZwb1N0YXRlLT5mcF90YXJnZXRSYW5nZTsKKwkJCWxlYWZTdGF0ZS0+ZnBf TGVmdG92ZXIgPSBmcG9TdGF0ZS0+ZnBfTGVmdG92ZXI7CisJCQkvKiBFYWNoIHBhcnRpdGlv biBuZWVkcyBhIHNsb3QgbWF0Y2hpbmcgaXRzIHR1cGxlIGRlc2NyaXB0b3IgKi8KKwkJCWxl YWZTdGF0ZS0+ZnBfRXhpc3RpbmcgPQorCQkJCXRhYmxlX3Nsb3RfY3JlYXRlKHJlc3VsdFJl bEluZm8tPnJpX1JlbGF0aW9uRGVzYywKKwkJCQkJCQkJICAmbXRzdGF0ZS0+cHMuc3RhdGUt PmVzX3R1cGxlVGFibGUpOworCisJCQlyZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2Yg PSBsZWFmU3RhdGU7CisJCX0KKworCQkvKiBNYWtlIHN1cmUgdGhlIHJvb3QgcmVsYXRpb24g aGFzIHRoZSBGT1IgUE9SVElPTiBPRiBjbGF1c2UgdG9vLiAqLworCQlpZiAobm9kZS0+cm9v dFJlbGF0aW9uID4gMCkKKwkJCW10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvLT5yaV9mb3JQ b3J0aW9uT2YgPSBmcG9TdGF0ZTsKKworCQlpZiAocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0g UkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSAmJgorCQkJCW10c3RhdGUtPm10X3BhcnRpdGlv bl90dXBsZV9yb3V0aW5nID09IE5VTEwpCisJCXsKKwkJCS8qCisJCQkgKiBXZSB3aWxsIG5l ZWQgdHVwbGUgcm91dGluZyB0byBpbnNlcnQgbGVmdG92ZXJzLgorCQkJICogU2luY2Ugd2Ug YXJlIGluaXRpYWxpemluZyB0aGluZ3MgYmVmb3JlIEV4ZWNDcm9zc1BhcnRpdGlvblVwZGF0 ZSBydW5zLAorCQkJICogd2UgbXVzdCBkbyBldmVyeXRoaW5nIGl0IG5lZWRzIGFzIHdlbGwu CisJCQkgKi8KKwkJCWlmIChtdHN0YXRlLT5tdF9wYXJ0aXRpb25fdHVwbGVfcm91dGluZyA9 PSBOVUxMKQorCQkJeworCQkJCVJlbGF0aW9uCXJvb3RSZWwgPSBtdHN0YXRlLT5yb290UmVz dWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOworCQkJCU1lbW9yeUNvbnRleHQgb2xkY3h0 OworCisJCQkJLyogVGhpbmdzIGJ1aWx0IGhlcmUgaGF2ZSB0byBsYXN0IGZvciB0aGUgcXVl cnkgZHVyYXRpb24uICovCisJCQkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVz dGF0ZS0+ZXNfcXVlcnlfY3h0KTsKKworCQkJCW10c3RhdGUtPm10X3BhcnRpdGlvbl90dXBs ZV9yb3V0aW5nID0KKwkJCQkJRXhlY1NldHVwUGFydGl0aW9uVHVwbGVSb3V0aW5nKGVzdGF0 ZSwgcm9vdFJlbCk7CisKKwkJCQkvKgorCQkJCSAqIEJlZm9yZSBhIHBhcnRpdGlvbidzIHR1 cGxlIGNhbiBiZSByZS1yb3V0ZWQsIGl0IG11c3QgZmlyc3QgYmUKKwkJCQkgKiBjb252ZXJ0 ZWQgdG8gdGhlIHJvb3QncyBmb3JtYXQsIHNvIHdlJ2xsIG5lZWQgYSBzbG90IGZvciBzdG9y aW5nCisJCQkJICogc3VjaCB0dXBsZXMuCisJCQkJICovCisJCQkJQXNzZXJ0KG10c3RhdGUt Pm10X3Jvb3RfdHVwbGVfc2xvdCA9PSBOVUxMKTsKKwkJCQltdHN0YXRlLT5tdF9yb290X3R1 cGxlX3Nsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShyb290UmVsLCBOVUxMKTsKKworCQkJCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCQkJfQorCQl9CisKKwkJLyogRG9uJ3Qg ZnJlZSB0aGUgRXhwckNvbnRleHQgaGVyZSBiZWNhdXNlIHRoZSByZXN1bHQgbXVzdCBsYXN0 IGZvciB0aGUgd2hvbGUgcXVlcnkgKi8KKwl9CisKIAkvKgogCSAqIElmIHdlIGhhdmUgYW55 IHNlY29uZGFyeSByZWxhdGlvbnMgaW4gYW4gVVBEQVRFIG9yIERFTEVURSwgdGhleSBuZWVk IHRvCiAJICogYmUgdHJlYXRlZCBsaWtlIG5vbi1sb2NrZWQgcmVsYXRpb25zIGluIFNFTEVD VCBGT1IgVVBEQVRFLCBpLmUuLCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVz L25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggZTFh NWJjN2U5NWQuLjZjMTk4NDRlMTdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9u b2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAtMjQ0 NCw2ICsyNDQ0LDE0IEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbChOb2RlICpub2Rl LAogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRfRm9yUG9y dGlvbk9mRXhwcjoKKwkJCXsKKwkJCQlGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2Yg PSAoRm9yUG9ydGlvbk9mRXhwciAqKSBub2RlOworCisJCQkJaWYgKFdBTEsoZm9yUG9ydGlv bk9mLT50YXJnZXRSYW5nZSkpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7 CiAJCWNhc2UgVF9QYXJ0aXRpb25QcnVuZVN0ZXBPcDoKIAkJCXsKIAkJCQlQYXJ0aXRpb25Q cnVuZVN0ZXBPcCAqb3BzdGVwID0gKFBhcnRpdGlvblBydW5lU3RlcE9wICopIG5vZGU7CkBA IC0yNTg0LDYgKzI1OTIsOCBAQCBxdWVyeV90cmVlX3dhbGtlcl9pbXBsKFF1ZXJ5ICpxdWVy eSwKIAkJcmV0dXJuIHRydWU7CiAJaWYgKFdBTEsocXVlcnktPm1lcmdlQWN0aW9uTGlzdCkp CiAJCXJldHVybiB0cnVlOworCWlmIChXQUxLKHF1ZXJ5LT5mb3JQb3J0aW9uT2YpKQorCQly ZXR1cm4gdHJ1ZTsKIAlpZiAoV0FMSyhxdWVyeS0+cmV0dXJuaW5nTGlzdCkpCiAJCXJldHVy biB0cnVlOwogCWlmIChXQUxLKHF1ZXJ5LT5qb2ludHJlZSkpCkBAIC0zNDMwLDYgKzM0NDAs MTkgQEAgZXhwcmVzc2lvbl90cmVlX211dGF0b3JfaW1wbChOb2RlICpub2RlLAogCQkJCXJl dHVybiAoTm9kZSAqKSBuZXdub2RlOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9Gb3JQ b3J0aW9uT2ZFeHByOgorCQkJeworCQkJCUZvclBvcnRpb25PZkV4cHIgKmZwbyA9IChGb3JQ b3J0aW9uT2ZFeHByICopIG5vZGU7CisJCQkJRm9yUG9ydGlvbk9mRXhwciAqbmV3bm9kZTsK KworCQkJCUZMQVRDT1BZKG5ld25vZGUsIGZwbywgRm9yUG9ydGlvbk9mRXhwcik7CisJCQkJ TVVUQVRFKG5ld25vZGUtPnJhbmdlVmFyLCBmcG8tPnJhbmdlVmFyLCBWYXIgKik7CisJCQkJ TVVUQVRFKG5ld25vZGUtPnRhcmdldFJhbmdlLCBmcG8tPnRhcmdldFJhbmdlLCBOb2RlICop OworCQkJCU1VVEFURShuZXdub2RlLT5yYW5nZVRhcmdldExpc3QsIGZwby0+cmFuZ2VUYXJn ZXRMaXN0LCBMaXN0ICopOworCisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CisJCQl9 CisJCQlicmVhazsKIAkJY2FzZSBUX1BhcnRpdGlvblBydW5lU3RlcE9wOgogCQkJewogCQkJ CVBhcnRpdGlvblBydW5lU3RlcE9wICpvcHN0ZXAgPSAoUGFydGl0aW9uUHJ1bmVTdGVwT3Ag Kikgbm9kZTsKQEAgLTM2MDgsNiArMzYzMSw3IEBAIHF1ZXJ5X3RyZWVfbXV0YXRvcl9pbXBs KFF1ZXJ5ICpxdWVyeSwKIAlNVVRBVEUocXVlcnktPndpdGhDaGVja09wdGlvbnMsIHF1ZXJ5 LT53aXRoQ2hlY2tPcHRpb25zLCBMaXN0ICopOwogCU1VVEFURShxdWVyeS0+b25Db25mbGlj dCwgcXVlcnktPm9uQ29uZmxpY3QsIE9uQ29uZmxpY3RFeHByICopOwogCU1VVEFURShxdWVy eS0+bWVyZ2VBY3Rpb25MaXN0LCBxdWVyeS0+bWVyZ2VBY3Rpb25MaXN0LCBMaXN0ICopOwor CU1VVEFURShxdWVyeS0+Zm9yUG9ydGlvbk9mLCBxdWVyeS0+Zm9yUG9ydGlvbk9mLCBGb3JQ b3J0aW9uT2ZFeHByICopOwogCU1VVEFURShxdWVyeS0+cmV0dXJuaW5nTGlzdCwgcXVlcnkt PnJldHVybmluZ0xpc3QsIExpc3QgKik7CiAJTVVUQVRFKHF1ZXJ5LT5qb2ludHJlZSwgcXVl cnktPmpvaW50cmVlLCBGcm9tRXhwciAqKTsKIAlNVVRBVEUocXVlcnktPnNldE9wZXJhdGlv bnMsIHF1ZXJ5LT5zZXRPcGVyYXRpb25zLCBOb2RlICopOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IGNhNjE5ZWFiOTQ0Li40MWY1ZjhkMmY3YiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCisr KyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMzExLDcg KzMxMSw4IEBAIHN0YXRpYyBNb2RpZnlUYWJsZSAqbWFrZV9tb2RpZnl0YWJsZShQbGFubmVy SW5mbyAqcm9vdCwgUGxhbiAqc3VicGxhbiwKIAkJCQkJCQkJCSBMaXN0ICp1cGRhdGVDb2xu b3NMaXN0cywKIAkJCQkJCQkJCSBMaXN0ICp3aXRoQ2hlY2tPcHRpb25MaXN0cywgTGlzdCAq cmV0dXJuaW5nTGlzdHMsCiAJCQkJCQkJCQkgTGlzdCAqcm93TWFya3MsIE9uQ29uZmxpY3RF eHByICpvbmNvbmZsaWN0LAotCQkJCQkJCQkJIExpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIGlu dCBlcHFQYXJhbSk7CisJCQkJCQkJCQkgTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgRm9yUG9y dGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mLAorCQkJCQkJCQkJIGludCBlcHFQYXJhbSk7CiBz dGF0aWMgR2F0aGVyTWVyZ2UgKmNyZWF0ZV9nYXRoZXJfbWVyZ2VfcGxhbihQbGFubmVySW5m byAqcm9vdCwKIAkJCQkJCQkJCQkJIEdhdGhlck1lcmdlUGF0aCAqYmVzdF9wYXRoKTsKIApA QCAtMjgzNSw2ICsyODM2LDcgQEAgY3JlYXRlX21vZGlmeXRhYmxlX3BsYW4oUGxhbm5lcklu Zm8gKnJvb3QsIE1vZGlmeVRhYmxlUGF0aCAqYmVzdF9wYXRoKQogCQkJCQkJCWJlc3RfcGF0 aC0+cm93TWFya3MsCiAJCQkJCQkJYmVzdF9wYXRoLT5vbmNvbmZsaWN0LAogCQkJCQkJCWJl c3RfcGF0aC0+bWVyZ2VBY3Rpb25MaXN0cywKKwkJCQkJCQliZXN0X3BhdGgtPmZvclBvcnRp b25PZiwKIAkJCQkJCQliZXN0X3BhdGgtPmVwcVBhcmFtKTsKIAogCWNvcHlfZ2VuZXJpY19w YXRoX2luZm8oJnBsYW4tPnBsYW4sICZiZXN0X3BhdGgtPnBhdGgpOwpAQCAtNzAwNSw3ICs3 MDA3LDggQEAgbWFrZV9tb2RpZnl0YWJsZShQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqc3Vi cGxhbiwKIAkJCQkgTGlzdCAqdXBkYXRlQ29sbm9zTGlzdHMsCiAJCQkJIExpc3QgKndpdGhD aGVja09wdGlvbkxpc3RzLCBMaXN0ICpyZXR1cm5pbmdMaXN0cywKIAkJCQkgTGlzdCAqcm93 TWFya3MsIE9uQ29uZmxpY3RFeHByICpvbmNvbmZsaWN0LAotCQkJCSBMaXN0ICptZXJnZUFj dGlvbkxpc3RzLCBpbnQgZXBxUGFyYW0pCisJCQkJIExpc3QgKm1lcmdlQWN0aW9uTGlzdHMs IEZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZiwKKwkJCQkgaW50IGVwcVBhcmFtKQog ewogCU1vZGlmeVRhYmxlICpub2RlID0gbWFrZU5vZGUoTW9kaWZ5VGFibGUpOwogCUxpc3QJ ICAgKmZkd19wcml2YXRlX2xpc3Q7CkBAIC03MDcxLDYgKzcwNzQsNyBAQCBtYWtlX21vZGlm eXRhYmxlKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpzdWJwbGFuLAogCQlub2RlLT5leGNs UmVsVGxpc3QgPSBvbmNvbmZsaWN0LT5leGNsUmVsVGxpc3Q7CiAJfQogCW5vZGUtPnVwZGF0 ZUNvbG5vc0xpc3RzID0gdXBkYXRlQ29sbm9zTGlzdHM7CisJbm9kZS0+Zm9yUG9ydGlvbk9m ID0gKE5vZGUgKikgZm9yUG9ydGlvbk9mOwogCW5vZGUtPndpdGhDaGVja09wdGlvbkxpc3Rz ID0gd2l0aENoZWNrT3B0aW9uTGlzdHM7CiAJbm9kZS0+cmV0dXJuaW5nTGlzdHMgPSByZXR1 cm5pbmdMaXN0czsKIAlub2RlLT5yb3dNYXJrcyA9IHJvd01hcmtzOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IDJlMjQ1OGIxMjg0Li45NDI1N2QwYzVhYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtMTk2Myw2ICsxOTYz LDcgQEAgZ3JvdXBpbmdfcGxhbm5lcihQbGFubmVySW5mbyAqcm9vdCwgZG91YmxlIHR1cGxl X2ZyYWN0aW9uKQogCQkJCQkJCQkJCXJvd01hcmtzLAogCQkJCQkJCQkJCXBhcnNlLT5vbkNv bmZsaWN0LAogCQkJCQkJCQkJCW1lcmdlQWN0aW9uTGlzdHMsCisJCQkJCQkJCQkJcGFyc2Ut PmZvclBvcnRpb25PZiwKIAkJCQkJCQkJCQlhc3NpZ25fc3BlY2lhbF9leGVjX3BhcmFtKHJv b3QpKTsKIAkJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9w YXRobm9kZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYwppbmRl eCA4ZGJmNzkwZTg5My4uMjJiZGUyMWEzNjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29w dGltaXplci91dGlsL3BhdGhub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0 aWwvcGF0aG5vZGUuYwpAQCAtMzcwOCw3ICszNzA4LDggQEAgY3JlYXRlX21vZGlmeXRhYmxl X3BhdGgoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCUxpc3Qg KnVwZGF0ZUNvbG5vc0xpc3RzLAogCQkJCQkJTGlzdCAqd2l0aENoZWNrT3B0aW9uTGlzdHMs IExpc3QgKnJldHVybmluZ0xpc3RzLAogCQkJCQkJTGlzdCAqcm93TWFya3MsIE9uQ29uZmxp Y3RFeHByICpvbmNvbmZsaWN0LAotCQkJCQkJTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgaW50 IGVwcVBhcmFtKQorCQkJCQkJTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgRm9yUG9ydGlvbk9m RXhwciAqZm9yUG9ydGlvbk9mLAorCQkJCQkJaW50IGVwcVBhcmFtKQogewogCU1vZGlmeVRh YmxlUGF0aCAqcGF0aG5vZGUgPSBtYWtlTm9kZShNb2RpZnlUYWJsZVBhdGgpOwogCkBAIC0z Nzc0LDYgKzM3NzUsNyBAQCBjcmVhdGVfbW9kaWZ5dGFibGVfcGF0aChQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCXBhdGhub2RlLT5yZXR1cm5pbmdMaXN0cyA9IHJl dHVybmluZ0xpc3RzOwogCXBhdGhub2RlLT5yb3dNYXJrcyA9IHJvd01hcmtzOwogCXBhdGhu b2RlLT5vbmNvbmZsaWN0ID0gb25jb25mbGljdDsKKwlwYXRobm9kZS0+Zm9yUG9ydGlvbk9m ID0gZm9yUG9ydGlvbk9mOwogCXBhdGhub2RlLT5lcHFQYXJhbSA9IGVwcVBhcmFtOwogCXBh dGhub2RlLT5tZXJnZUFjdGlvbkxpc3RzID0gbWVyZ2VBY3Rpb25MaXN0czsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9hbmFseXplLmMKaW5kZXggZGJkZjZiZjg5NjQuLjI2ODUxNGY4NTg2IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9hbmFseXplLmMKQEAgLTI0LDcgKzI0LDkgQEAKIAogI2luY2x1ZGUgInBvc3RncmVzLmgi CiAKKyNpbmNsdWRlICJhY2Nlc3Mvc3RyYXRudW0uaCIKICNpbmNsdWRlICJhY2Nlc3Mvc3lz YXR0ci5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfYW0uaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJj b21tYW5kcy9kZWZyZW0uaCIKQEAgLTQ3LDExICs0OSwxMyBAQAogI2luY2x1ZGUgInBhcnNl ci9wYXJzZV9yZWxhdGlvbi5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90YXJnZXQuaCIK ICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJz ZXIuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2V0cmVlLmgiCiAjaW5jbHVkZSAicmV3cml0 ZS9yZXdyaXRlTWFuaXAuaCIKICNpbmNsdWRlICJ1dGlscy9iYWNrZW5kX3N0YXR1cy5oIgog I2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCisj aW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAj aW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIApAQCAtNjAsMTAgKzY0LDE2IEBACiBwb3N0 X3BhcnNlX2FuYWx5emVfaG9va190eXBlIHBvc3RfcGFyc2VfYW5hbHl6ZV9ob29rID0gTlVM TDsKIAogc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1PcHRpb25hbFNlbGVjdEludG8oUGFyc2VT dGF0ZSAqcHN0YXRlLCBOb2RlICpwYXJzZVRyZWUpOworc3RhdGljIE5vZGUgKmFkZEZvclBv cnRpb25PZldoZXJlQ29uZGl0aW9ucyhRdWVyeSAqcXJ5LCBGb3JQb3J0aW9uT2ZDbGF1c2Ug KmZvclBvcnRpb25PZiwKKwkJCQkJCQkJCQkJTm9kZSAqd2hlcmVDbGF1c2UpOwogc3RhdGlj IFF1ZXJ5ICp0cmFuc2Zvcm1EZWxldGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVsZXRl U3RtdCAqc3RtdCk7CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybUluc2VydFN0bXQoUGFyc2VT dGF0ZSAqcHN0YXRlLCBJbnNlcnRTdG10ICpzdG10KTsKIHN0YXRpYyBPbkNvbmZsaWN0RXhw ciAqdHJhbnNmb3JtT25Db25mbGljdENsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJ CQkJCQkJCQkgT25Db25mbGljdENsYXVzZSAqb25Db25mbGljdENsYXVzZSk7CitzdGF0aWMg Rm9yUG9ydGlvbk9mRXhwciAqdHJhbnNmb3JtRm9yUG9ydGlvbk9mQ2xhdXNlKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKKwkJCQkJCQkJCQkJCQkgaW50IHJ0aW5kZXgsCisJCQkJCQkJCQkJCQkJ IEZvclBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mQ2xhdXNlLAorCQkJCQkJCQkJCQkJ CSBib29sIGlzVXBkYXRlKTsKIHN0YXRpYyBpbnQJY291bnRfcm93ZXhwcl9jb2x1bW5zKFBh cnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcik7CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9y bVNlbGVjdFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpzdG10KTsKIHN0 YXRpYyBRdWVyeSAqdHJhbnNmb3JtVmFsdWVzQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwg U2VsZWN0U3RtdCAqc3RtdCk7CkBAIC00NzksNiArNDg5LDIwIEBAIHN0bXRfcmVxdWlyZXNf cGFyc2VfYW5hbHlzaXMoUmF3U3RtdCAqcGFyc2VUcmVlKQogCXJldHVybiByZXN1bHQ7CiB9 CiAKK3N0YXRpYyBOb2RlICoKK2FkZEZvclBvcnRpb25PZldoZXJlQ29uZGl0aW9ucyhRdWVy eSAqcXJ5LCBGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvclBvcnRpb25PZiwgTm9kZSAqd2hlcmVD bGF1c2UpCit7CisJaWYgKGZvclBvcnRpb25PZikKKwl7CisJCWlmICh3aGVyZUNsYXVzZSkK KwkJCXJldHVybiAoTm9kZSAqKSBtYWtlQm9vbEV4cHIoQU5EX0VYUFIsIGxpc3RfbWFrZTIo cXJ5LT5mb3JQb3J0aW9uT2YtPm92ZXJsYXBzRXhwciwgd2hlcmVDbGF1c2UpLCAtMSk7CisJ CWVsc2UKKwkJCXJldHVybiBxcnktPmZvclBvcnRpb25PZi0+b3ZlcmxhcHNFeHByOworCX0K KwllbHNlCisJCXJldHVybiB3aGVyZUNsYXVzZTsKK30KKwogLyoKICAqIGFuYWx5emVfcmVx dWlyZXNfc25hcHNob3QKICAqCQlSZXR1cm5zIHRydWUgaWYgYSBzbmFwc2hvdCBtdXN0IGJl IHNldCBiZWZvcmUgZG9pbmcgcGFyc2UgYW5hbHlzaXMKQEAgLTUxMiw2ICs1MzYsNyBAQCB0 cmFuc2Zvcm1EZWxldGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVsZXRlU3RtdCAqc3Rt dCkKIHsKIAlRdWVyeQkgICAqcXJ5ID0gbWFrZU5vZGUoUXVlcnkpOwogCVBhcnNlTmFtZXNw YWNlSXRlbSAqbnNpdGVtOworCU5vZGUJICAgKndoZXJlQ2xhdXNlOwogCU5vZGUJICAgKnF1 YWw7CiAKIAlxcnktPmNvbW1hbmRUeXBlID0gQ01EX0RFTEVURTsKQEAgLTU1MCw3ICs1NzUs MTEgQEAgdHJhbnNmb3JtRGVsZXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIERlbGV0ZVN0 bXQgKnN0bXQpCiAJbnNpdGVtLT5wX2xhdGVyYWxfb25seSA9IGZhbHNlOwogCW5zaXRlbS0+ cF9sYXRlcmFsX29rID0gdHJ1ZTsKIAotCXF1YWwgPSB0cmFuc2Zvcm1XaGVyZUNsYXVzZShw c3RhdGUsIHN0bXQtPndoZXJlQ2xhdXNlLAorCWlmIChzdG10LT5mb3JQb3J0aW9uT2YpCisJ CXFyeS0+Zm9yUG9ydGlvbk9mID0gdHJhbnNmb3JtRm9yUG9ydGlvbk9mQ2xhdXNlKHBzdGF0 ZSwgcXJ5LT5yZXN1bHRSZWxhdGlvbiwgc3RtdC0+Zm9yUG9ydGlvbk9mLCBmYWxzZSk7CisK Kwl3aGVyZUNsYXVzZSA9IGFkZEZvclBvcnRpb25PZldoZXJlQ29uZGl0aW9ucyhxcnksIHN0 bXQtPmZvclBvcnRpb25PZiwgc3RtdC0+d2hlcmVDbGF1c2UpOworCXF1YWwgPSB0cmFuc2Zv cm1XaGVyZUNsYXVzZShwc3RhdGUsIHdoZXJlQ2xhdXNlLAogCQkJCQkJCQlFWFBSX0tJTkRf V0hFUkUsICJXSEVSRSIpOwogCiAJcXJ5LT5yZXR1cm5pbmdMaXN0ID0gdHJhbnNmb3JtUmV0 dXJuaW5nTGlzdChwc3RhdGUsIHN0bXQtPnJldHVybmluZ0xpc3QpOwpAQCAtMTE3Myw3ICsx MjAyLDcgQEAgdHJhbnNmb3JtT25Db25mbGljdENsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUs CiAJCSAqIE5vdyB0cmFuc2Zvcm0gdGhlIFVQREFURSBzdWJleHByZXNzaW9ucy4KIAkJICov CiAJCW9uQ29uZmxpY3RTZXQgPQotCQkJdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChwc3Rh dGUsIG9uQ29uZmxpY3RDbGF1c2UtPnRhcmdldExpc3QpOworCQkJdHJhbnNmb3JtVXBkYXRl VGFyZ2V0TGlzdChwc3RhdGUsIG9uQ29uZmxpY3RDbGF1c2UtPnRhcmdldExpc3QsIE5VTEwp OwogCiAJCW9uQ29uZmxpY3RXaGVyZSA9IHRyYW5zZm9ybVdoZXJlQ2xhdXNlKHBzdGF0ZSwK IAkJCQkJCQkJCQkJICAgb25Db25mbGljdENsYXVzZS0+d2hlcmVDbGF1c2UsCkBAIC0xMjAz LDYgKzEyMzIsMTU1IEBAIHRyYW5zZm9ybU9uQ29uZmxpY3RDbGF1c2UoUGFyc2VTdGF0ZSAq cHN0YXRlLAogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiB0cmFuc2Zvcm1Gb3JQb3J0 aW9uT2ZDbGF1c2UKKyAqCisgKgkgIFRyYW5zZm9ybXMgYSBGb3JQb3J0aW9uT2ZDbGF1c2Ug aW4gYW4gVVBEQVRFL0RFTEVURSBzdGF0ZW1lbnQuCisgKgorICoJICAtIExvb2sgdXAgdGhl IHJhbmdlL3BlcmlvZCByZXF1ZXN0ZWQuCisgKgkgIC0gQnVpbGQgYSBjb21wYXRpYmxlIHJh bmdlIHZhbHVlIGZyb20gdGhlIEZST00gYW5kIFRPIGV4cHJlc3Npb25zLgorICoJICAtIEJ1 aWxkIGFuICJvdmVybGFwcyIgZXhwcmVzc2lvbiBmb3IgZmlsdGVyaW5nLgorICoJICAtIEZv ciBVUERBVEVzLCBidWlsZCBhbiAiaW50ZXJzZWN0cyIgZXhwcmVzc2lvbiB0aGUgcmV3cml0 ZXIgY2FuIGFkZAorICoJCXRvIHRoZSB0YXJnZXRMaXN0IHRvIGNoYW5nZSB0aGUgdGVtcG9y YWwgYm91bmRzLgorICovCitzdGF0aWMgRm9yUG9ydGlvbk9mRXhwciAqCit0cmFuc2Zvcm1G b3JQb3J0aW9uT2ZDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJCQkJCWludCBydGlu ZGV4LAorCQkJCQkJCUZvclBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mLAorCQkJCQkJ CWJvb2wgaXNVcGRhdGUpCit7CisJUmVsYXRpb24gdGFyZ2V0cmVsID0gcHN0YXRlLT5wX3Rh cmdldF9yZWxhdGlvbjsKKwlSVEVQZXJtaXNzaW9uSW5mbyAqdGFyZ2V0X3Blcm1pbmZvID0g cHN0YXRlLT5wX3RhcmdldF9uc2l0ZW0tPnBfcGVybWluZm87CisJY2hhciAqcmFuZ2VfbmFt ZSA9IGZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZTsKKwljaGFyICpyYW5nZV90eXBlX25hbWVz cGFjZSA9IE5VTEw7CisJY2hhciAqcmFuZ2VfdHlwZV9uYW1lID0gTlVMTDsKKwlpbnQgcmFu Z2VfYXR0bm8gPSBJbnZhbGlkQXR0ck51bWJlcjsKKwlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRy OworCU9pZAlvcGNsYXNzOworCVN0cmF0ZWd5TnVtYmVyIHN0cmF0OworCU9pZAlvcGlkOwor CUZvclBvcnRpb25PZkV4cHIgKnJlc3VsdDsKKwlWYXIgKnJhbmdlVmFyOworCU5vZGUgKnRh cmdldEV4cHI7CisKKwkvKiBXZSBkb24ndCBzdXBwb3J0IEZPUiBQT1JUSU9OIE9GIEZEVyBx dWVyaWVzLiAqLworCWlmICh0YXJnZXRyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5E X0ZPUkVJR05fVEFCTEUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coImZvcmVpZ24gdGFibGVz IGRvbid0IHN1cHBvcnQgRk9SIFBPUlRJT04gT0YiKSkpOworCisJcmVzdWx0ID0gbWFrZU5v ZGUoRm9yUG9ydGlvbk9mRXhwcik7CisKKwkvKiBMb29rIHVwIHRoZSBGT1IgUE9SVElPTiBP RiBuYW1lIHJlcXVlc3RlZC4gKi8KKwlyYW5nZV9hdHRubyA9IGF0dG5hbWVBdHROdW0odGFy Z2V0cmVsLCByYW5nZV9uYW1lLCBmYWxzZSk7CisJaWYgKHJhbmdlX2F0dG5vID09IEludmFs aWRBdHRyTnVtYmVyKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf VU5ERUZJTkVEX0NPTFVNTiksCisJCQkJIGVycm1zZygiY29sdW1uIG9yIHBlcmlvZCBcIiVz XCIgb2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCXJhbmdlX25h bWUsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZm9yUG9ydGlvbk9mLT5sb2NhdGlvbikpKTsK KwlhdHRyID0gVHVwbGVEZXNjQXR0cih0YXJnZXRyZWwtPnJkX2F0dCwgcmFuZ2VfYXR0bm8g LSAxKTsKKworCS8qIE1ha2Ugc3VyZSBpdCdzIGEgcmFuZ2UgY29sdW1uICovCisJaWYgKCF0 eXBlX2lzX3JhbmdlKGF0dHItPmF0dHR5cGlkKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfQ09MVU1OX1JFRkVSRU5DRSksCisJCQkJIGVycm1z ZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgaXMgbm90IGEgcmFuZ2UgdHlw ZSIsCisJCQkJCQlyYW5nZV9uYW1lLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo dGFyZ2V0cmVsKSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGZvclBvcnRp b25PZi0+bG9jYXRpb24pKSk7CisKKwlyYW5nZVZhciA9IG1ha2VWYXIoCisJCQlydGluZGV4 LAorCQkJcmFuZ2VfYXR0bm8sCisJCQlhdHRyLT5hdHR0eXBpZCwKKwkJCWF0dHItPmF0dHR5 cG1vZCwKKwkJCWF0dHItPmF0dGNvbGxhdGlvbiwKKwkJCTApOworCXJhbmdlVmFyLT5sb2Nh dGlvbiA9IGZvclBvcnRpb25PZi0+bG9jYXRpb247CisJcmVzdWx0LT5yYW5nZVZhciA9IHJh bmdlVmFyOworCXJlc3VsdC0+cmFuZ2VUeXBlID0gYXR0ci0+YXR0dHlwaWQ7CisJaWYgKCFn ZXRfdHlwbmFtZV9hbmRfbmFtZXNwYWNlKGF0dHItPmF0dHR5cGlkLCAmcmFuZ2VfdHlwZV9u YW1lLCAmcmFuZ2VfdHlwZV9uYW1lc3BhY2UpKQorCQllbG9nKEVSUk9SLCAibWlzc2luZyBy YW5nZSB0eXBlICVkIiwgYXR0ci0+YXR0dHlwaWQpOworCisKKwlpZiAoZm9yUG9ydGlvbk9m LT50YXJnZXQpCisJCS8qCisJCSAqIFdlIHdlcmUgYWxyZWFkeSBnaXZlbiBhbiBleHByZXNz aW9uIGZvciB0aGUgdGFyZ2V0LAorCQkgKiBzbyB3ZSBkb24ndCBoYXZlIHRvIGJ1aWxkIGFu eXRoaW5nLgorCQkgKi8KKwkJdGFyZ2V0RXhwciA9IGZvclBvcnRpb25PZi0+dGFyZ2V0Owor CWVsc2UKKwl7CisJCS8qCisJCSAqIEJ1aWxkIGEgcmFuZ2UgZnJvbSB0aGUgRlJPTSAuLi4g VE8gLi4uLiBib3VuZHMuCisJCSAqIFRoaXMgc2hvdWxkIGdpdmUgYSBjb25zdGFudCByZXN1 bHQsIHNvIHdlIGFjY2VwdCBmdW5jdGlvbnMgbGlrZSBOT1coKQorCQkgKiBidXQgbm90IGNv bHVtbiByZWZlcmVuY2VzLCBzdWJxdWVyaWVzLCBldGMuCisJCSAqCisJCSAqIEl0IGFsc28g cGVybWl0cyBVTkJPVU5ERUQgaW4gZWl0aGVyIHBsYWNlLgorCQkgKi8KKwkJdGFyZ2V0RXhw ciA9IChOb2RlICopIG1ha2VGdW5jQ2FsbCgKKwkJCQlsaXN0X21ha2UyKG1ha2VTdHJpbmco cmFuZ2VfdHlwZV9uYW1lc3BhY2UpLCBtYWtlU3RyaW5nKHJhbmdlX3R5cGVfbmFtZSkpLAor CQkJCWxpc3RfbWFrZTIoZm9yUG9ydGlvbk9mLT50YXJnZXRfc3RhcnQsIGZvclBvcnRpb25P Zi0+dGFyZ2V0X2VuZCksCisJCQkJQ09FUkNFX0VYUExJQ0lUX0NBTEwsCisJCQkJZm9yUG9y dGlvbk9mLT5sb2NhdGlvbik7CisJfQorCXJlc3VsdC0+dGFyZ2V0UmFuZ2UgPSB0cmFuc2Zv cm1FeHByKHBzdGF0ZSwgdGFyZ2V0RXhwciwgRVhQUl9LSU5EX1VQREFURV9QT1JUSU9OKTsK KworCS8qCisJICogQnVpbGQgb3ZlcmxhcHNFeHByIHRvIHVzZSBpbiB0aGUgd2hlcmVDbGF1 c2UuCisJICogVGhpcyBtZWFucyB3ZSBvbmx5IGhpdCByb3dzIG1hdGNoaW5nIHRoZSBGUk9N ICYgVE8gYm91bmRzLgorCSAqIFdlIG11c3QgbG9vayB1cCB0aGUgb3ZlcmxhcHMgb3BlcmF0 b3IgKHVzdWFsbHkgIiYmIikuCisJICovCisJb3BjbGFzcyA9IEdldERlZmF1bHRPcENsYXNz KGF0dHItPmF0dHR5cGlkLCBHSVNUX0FNX09JRCk7CisJc3RyYXQgPSBSVE92ZXJsYXBTdHJh dGVneU51bWJlcjsKKwlHZXRPcGVyYXRvckZyb21XZWxsS25vd25TdHJhdGVneShvcGNsYXNz LCBJbnZhbGlkT2lkLCAib3ZlcmxhcHMiLCAiRk9SIFBPUlRJT04gT0YiLCAmb3BpZCwgJnN0 cmF0KTsKKwlyZXN1bHQtPm92ZXJsYXBzRXhwciA9IChOb2RlICopIG1ha2VTaW1wbGVBX0V4 cHIoQUVYUFJfT1AsIGdldF9vcG5hbWUob3BpZCksCisJCQkoTm9kZSAqKSBjb3B5T2JqZWN0 KHJhbmdlVmFyKSwgdGFyZ2V0RXhwciwKKwkJCWZvclBvcnRpb25PZi0+bG9jYXRpb24pOwor CisJLyoKKwkgKiBMb29rIHVwIHRoZSB3aXRob3V0UG9ydGlvbk9wZXIgc28gd2UgY2FuIGNv bXB1dGUgdGhlIGxlZnRvdmVycy4KKwkgKiBMZWZ0b3ZlcnMgd2lsbCBiZSBvbGRfcmFuZ2Ug QC0gdGFyZ2V0X3JhbmdlCisJICogKG9uZSBwZXIgZWxlbWVudCBvZiB0aGUgcmVzdWx0KS4K KwkgKi8KKwlzdHJhdCA9IFJUV2l0aG91dFBvcnRpb25TdHJhdGVneU51bWJlcjsKKwlHZXRP cGVyYXRvckZyb21XZWxsS25vd25TdHJhdGVneShvcGNsYXNzLCBJbnZhbGlkT2lkLCAid2l0 aG91dCBwb3J0aW9uIiwgIkZPUiBQT1JUSU9OIE9GIiwgJm9waWQsICZzdHJhdCk7CisJcmVz dWx0LT53aXRob3V0UG9ydGlvblByb2MgPSBnZXRfb3Bjb2RlKG9waWQpOworCisJaWYgKGlz VXBkYXRlKQorCXsKKwkJLyoKKwkJICogTm93IG1ha2Ugc3VyZSB3ZSB1cGRhdGUgdGhlIHN0 YXJ0L2VuZCB0aW1lIG9mIHRoZSByZWNvcmQuCisJCSAqIEZvciBhIHJhbmdlIGNvbCAocikg dGhpcyBpcyBgciA9IHIgKiB0YXJnZXRSYW5nZWAuCisJCSAqLworCQlFeHByICpyYW5nZVRM RUV4cHI7CisJCVRhcmdldEVudHJ5ICp0bGU7CisKKwkJc3RyYXQgPSBSVEludGVyc2VjdFN0 cmF0ZWd5TnVtYmVyOworCQlHZXRPcGVyYXRvckZyb21XZWxsS25vd25TdHJhdGVneShvcGNs YXNzLCBJbnZhbGlkT2lkLCAiaW50ZXJzZWN0cyIsICJGT1IgUE9SVElPTiBPRiIsICZvcGlk LCAmc3RyYXQpOworCQlyYW5nZVRMRUV4cHIgPSAoRXhwciAqKSBtYWtlU2ltcGxlQV9FeHBy KEFFWFBSX09QLCBnZXRfb3BuYW1lKG9waWQpLAorCQkJCShOb2RlICopIGNvcHlPYmplY3Qo cmFuZ2VWYXIpLCB0YXJnZXRFeHByLAorCQkJCWZvclBvcnRpb25PZi0+bG9jYXRpb24pOwor CQlyYW5nZVRMRUV4cHIgPSAoRXhwciAqKSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgKE5vZGUg KikgcmFuZ2VUTEVFeHByLCBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT04pOworCisJCS8qIE1h a2UgYSBUTEUgdG8gc2V0IHRoZSByYW5nZSBjb2x1bW4gKi8KKwkJcmVzdWx0LT5yYW5nZVRh cmdldExpc3QgPSBOSUw7CisJCXRsZSA9IG1ha2VUYXJnZXRFbnRyeShyYW5nZVRMRUV4cHIs IHJhbmdlX2F0dG5vLCByYW5nZV9uYW1lLCBmYWxzZSk7CisJCXJlc3VsdC0+cmFuZ2VUYXJn ZXRMaXN0ID0gbGFwcGVuZChyZXN1bHQtPnJhbmdlVGFyZ2V0TGlzdCwgdGxlKTsKKworCQkv KiBNYXJrIHRoZSByYW5nZSBjb2x1bW4gYXMgcmVxdWlyaW5nIHVwZGF0ZSBwZXJtaXNzaW9u cyAqLworCQl0YXJnZXRfcGVybWluZm8tPnVwZGF0ZWRDb2xzID0gYm1zX2FkZF9tZW1iZXIo dGFyZ2V0X3Blcm1pbmZvLT51cGRhdGVkQ29scywKKwkJCQkJCQkJCQkJCQkgIHJhbmdlX2F0 dG5vIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJfQorCWVsc2UK KwkJcmVzdWx0LT5yYW5nZVRhcmdldExpc3QgPSBOSUw7CisKKwlyZXN1bHQtPnJhbmdlX25h bWUgPSByYW5nZV9uYW1lOworCisJcmV0dXJuIHJlc3VsdDsKK30KIAogLyoKICAqIEJ1aWxk T25Db25mbGljdEV4Y2x1ZGVkVGFyZ2V0bGlzdApAQCAtMjQwOSw2ICsyNTg3LDcgQEAgdHJh bnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQp CiB7CiAJUXVlcnkJICAgKnFyeSA9IG1ha2VOb2RlKFF1ZXJ5KTsKIAlQYXJzZU5hbWVzcGFj ZUl0ZW0gKm5zaXRlbTsKKwlOb2RlCSAgICp3aGVyZUNsYXVzZTsKIAlOb2RlCSAgICpxdWFs OwogCiAJcXJ5LT5jb21tYW5kVHlwZSA9IENNRF9VUERBVEU7CkBAIC0yNDI2LDYgKzI2MDUs MTAgQEAgdHJhbnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0 bXQgKnN0bXQpCiAJCQkJCQkJCQkJIHN0bXQtPnJlbGF0aW9uLT5pbmgsCiAJCQkJCQkJCQkJ IHRydWUsCiAJCQkJCQkJCQkJIEFDTF9VUERBVEUpOworCisJaWYgKHN0bXQtPmZvclBvcnRp b25PZikKKwkJcXJ5LT5mb3JQb3J0aW9uT2YgPSB0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZDbGF1 c2UocHN0YXRlLCBxcnktPnJlc3VsdFJlbGF0aW9uLCBzdG10LT5mb3JQb3J0aW9uT2YsIHRy dWUpOworCiAJbnNpdGVtID0gcHN0YXRlLT5wX3RhcmdldF9uc2l0ZW07CiAKIAkvKiBzdWJx dWVyaWVzIGluIEZST00gY2Fubm90IGFjY2VzcyB0aGUgcmVzdWx0IHJlbGF0aW9uICovCkBA IC0yNDQyLDcgKzI2MjUsOCBAQCB0cmFuc2Zvcm1VcGRhdGVTdG10KFBhcnNlU3RhdGUgKnBz dGF0ZSwgVXBkYXRlU3RtdCAqc3RtdCkKIAluc2l0ZW0tPnBfbGF0ZXJhbF9vbmx5ID0gZmFs c2U7CiAJbnNpdGVtLT5wX2xhdGVyYWxfb2sgPSB0cnVlOwogCi0JcXVhbCA9IHRyYW5zZm9y bVdoZXJlQ2xhdXNlKHBzdGF0ZSwgc3RtdC0+d2hlcmVDbGF1c2UsCisJd2hlcmVDbGF1c2Ug PSBhZGRGb3JQb3J0aW9uT2ZXaGVyZUNvbmRpdGlvbnMocXJ5LCBzdG10LT5mb3JQb3J0aW9u T2YsIHN0bXQtPndoZXJlQ2xhdXNlKTsKKwlxdWFsID0gdHJhbnNmb3JtV2hlcmVDbGF1c2Uo cHN0YXRlLCB3aGVyZUNsYXVzZSwKIAkJCQkJCQkJRVhQUl9LSU5EX1dIRVJFLCAiV0hFUkUi KTsKIAogCXFyeS0+cmV0dXJuaW5nTGlzdCA9IHRyYW5zZm9ybVJldHVybmluZ0xpc3QocHN0 YXRlLCBzdG10LT5yZXR1cm5pbmdMaXN0KTsKQEAgLTI0NTEsNyArMjYzNSw3IEBAIHRyYW5z Zm9ybVVwZGF0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBVcGRhdGVTdG10ICpzdG10KQog CSAqIE5vdyB3ZSBhcmUgZG9uZSB3aXRoIFNFTEVDVC1saWtlIHByb2Nlc3NpbmcsIGFuZCBj YW4gZ2V0IG9uIHdpdGgKIAkgKiB0cmFuc2Zvcm1pbmcgdGhlIHRhcmdldCBsaXN0IHRvIG1h dGNoIHRoZSBVUERBVEUgdGFyZ2V0IGNvbHVtbnMuCiAJICovCi0JcXJ5LT50YXJnZXRMaXN0 ID0gdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChwc3RhdGUsIHN0bXQtPnRhcmdldExpc3Qp OworCXFyeS0+dGFyZ2V0TGlzdCA9IHRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QocHN0YXRl LCBzdG10LT50YXJnZXRMaXN0LCBxcnktPmZvclBvcnRpb25PZik7CiAKIAlxcnktPnJ0YWJs ZSA9IHBzdGF0ZS0+cF9ydGFibGU7CiAJcXJ5LT5ydGVwZXJtaW5mb3MgPSBwc3RhdGUtPnBf cnRlcGVybWluZm9zOwpAQCAtMjQ3MCw3ICsyNjU0LDcgQEAgdHJhbnNmb3JtVXBkYXRlU3Rt dChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiAgKgloYW5kbGUgU0VU IGNsYXVzZSBpbiBVUERBVEUvTUVSR0UvSU5TRVJUIC4uLiBPTiBDT05GTElDVCBVUERBVEUK ICAqLwogTGlzdCAqCi10cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KFBhcnNlU3RhdGUgKnBz dGF0ZSwgTGlzdCAqb3JpZ1RsaXN0KQordHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChQYXJz ZVN0YXRlICpwc3RhdGUsIExpc3QgKm9yaWdUbGlzdCwgRm9yUG9ydGlvbk9mRXhwciAqZm9y UG9ydGlvbk9mKQogewogCUxpc3QJICAgKnRsaXN0ID0gTklMOwogCVJURVBlcm1pc3Npb25J bmZvICp0YXJnZXRfcGVybWluZm87CkBAIC0yNTIzLDYgKzI3MDcsMjEgQEAgdHJhbnNmb3Jt VXBkYXRlVGFyZ2V0TGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9yaWdUbGlzdCkK IAkJCQkJIGVycmhpbnQoIlNFVCB0YXJnZXQgY29sdW1ucyBjYW5ub3QgYmUgcXVhbGlmaWVk IHdpdGggdGhlIHJlbGF0aW9uIG5hbWUuIikgOiAwLAogCQkJCQkgcGFyc2VyX2VycnBvc2l0 aW9uKHBzdGF0ZSwgb3JpZ1RhcmdldC0+bG9jYXRpb24pKSk7CiAKKwkJLyoKKwkJICogSWYg dGhpcyBpcyBhIEZPUiBQT1JUSU9OIE9GIHVwZGF0ZSwKKwkJICogZm9yYmlkIGRpcmVjdGx5 IHNldHRpbmcgdGhlIHJhbmdlIGNvbHVtbiwKKwkJICogc2luY2UgdGhhdCB3b3VsZCBjb25m bGljdCB3aXRoIHRoZSBpbXBsaWNpdCB1cGRhdGVzLgorCQkgKi8KKwkJaWYgKGZvclBvcnRp b25PZiAhPSBOVUxMKQorCQl7CisJCQlpZiAoYXR0cm5vID09IGZvclBvcnRpb25PZi0+cmFu Z2VWYXItPnZhcmF0dG5vKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShF UlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkgZXJybXNnKCJjYW4ndCBkaXJlY3RseSBh c3NpZ24gdG8gXCIlc1wiIGluIGEgRk9SIFBPUlRJT04gT0YgdXBkYXRlIiwKKwkJCQkJCQkJ b3JpZ1RhcmdldC0+bmFtZSksCisJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwg b3JpZ1RhcmdldC0+bG9jYXRpb24pKSk7CisJCX0KKwogCQl1cGRhdGVUYXJnZXRMaXN0RW50 cnkocHN0YXRlLCB0bGUsIG9yaWdUYXJnZXQtPm5hbWUsCiAJCQkJCQkJICBhdHRybm8sCiAJ CQkJCQkJICBvcmlnVGFyZ2V0LT5pbmRpcmVjdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGEx MTgyMDQyYjg2Li5jODViOGIwOTRlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0yNTgsNiArMjU4 LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5h bWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlSYW5nZVZhciAgICpyYW5nZTsK IAlJbnRvQ2xhdXNlICppbnRvOwogCVdpdGhDbGF1c2UgKndpdGg7CisJRm9yUG9ydGlvbk9m Q2xhdXNlICpmb3Jwb3J0aW9ub2Y7CiAJSW5mZXJDbGF1c2UJKmluZmVyOwogCU9uQ29uZmxp Y3RDbGF1c2UgKm9uY29uZmxpY3Q7CiAJQV9JbmRpY2VzICAqYWluZDsKQEAgLTU1MSw2ICs1 NTIsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVs bmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPHJhbmdlPglyZWxh dGlvbl9leHByCiAldHlwZSA8cmFuZ2U+CWV4dGVuZGVkX3JlbGF0aW9uX2V4cHIKICV0eXBl IDxyYW5nZT4JcmVsYXRpb25fZXhwcl9vcHRfYWxpYXMKKyV0eXBlIDxmb3Jwb3J0aW9ub2Y+ IGZvcl9wb3J0aW9uX29mX2NsYXVzZQogJXR5cGUgPG5vZGU+CXRhYmxlc2FtcGxlX2NsYXVz ZSBvcHRfcmVwZWF0YWJsZV9jbGF1c2UKICV0eXBlIDx0YXJnZXQ+CXRhcmdldF9lbCBzZXRf dGFyZ2V0IGluc2VydF9jb2x1bW5faXRlbQogCkBAIC03NDcsNyArNzQ5LDcgQEAgc3RhdGlj IE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFs aWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAogCVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFS VElBTCBQQVJUSVRJT04gUEFTU0lORyBQQVNTV09SRAogCVBFUklPRCBQTEFDSU5HIFBMQU5T IFBPTElDWQotCVBPU0lUSU9OIFBSRUNFRElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJFUEFS RSBQUkVQQVJFRCBQUklNQVJZCisJUE9SVElPTiBQT1NJVElPTiBQUkVDRURJTkcgUFJFQ0lT SU9OIFBSRVNFUlZFIFBSRVBBUkUgUFJFUEFSRUQgUFJJTUFSWQogCVBSSU9SIFBSSVZJTEVH RVMgUFJPQ0VEVVJBTCBQUk9DRURVUkUgUFJPQ0VEVVJFUyBQUk9HUkFNIFBVQkxJQ0FUSU9O CiAKIAlRVU9URQpAQCAtODY1LDYgKzg2NywxNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vy c2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVl cnkpOwogICoganNvbl9wcmVkaWNhdGVfdHlwZV9jb25zdHJhaW50IGFuZCBqc29uX2tleV91 bmlxdWVuZXNzX2NvbnN0cmFpbnRfb3B0CiAgKiBwcm9kdWN0aW9ucyAoc2VlIGNvbW1lbnRz IHRoZXJlKS4KICAqLworLyoKKyAqIFdlIG5lZWQgdG8gaGFuZGxlIHRoaXMgc2hpZnQvcmVk dWNlIGNvbmZsaWN0OgorICogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBJTlRFUlZB TCBZRUFSIFRPIE1PTlRIIFRPIGZvby4KKyAqIFRoaXMgaXMgYmFzaWNhbGx5IHRoZSBjbGFz c2ljICJkYW5nbGluZyBlbHNlIiBwcm9ibGVtLCBhbmQgd2Ugd2FudCBhCisgKiBzaW1pbGFy IHJlc29sdXRpb246IHRyZWF0IHRoZSBUTyBhcyBwYXJ0IG9mIHRoZSBJTlRFUlZBTCwgbm90 IGFzIHBhcnQgb2YKKyAqIHRoZSBGUk9NIC4uLiBUTyAuLi4uIFVzZXJzIGNhbiBhZGQgcGFy ZW50aGVzZXMgaWYgdGhhdCdzIGEgcHJvYmxlbS4KKyAqIFRPIGp1c3QgbmVlZHMgdG8gYmUg aGlnaGVyIHByZWNlZGVuY2UgdGhhbiBZRUFSX1AgZXRjLgorICogVE9ETzogSSBuZWVkIHRv IGZpZ3VyZSBvdXQgYSAlcHJlYyBzb2x1dGlvbiBiZWZvcmUgdGhpcyBnZXRzIGNvbW1pdHRl ZCEKKyAqLworJW5vbmFzc29jIFlFQVJfUCBNT05USF9QIERBWV9QIEhPVVJfUCBNSU5VVEVf UAorJW5vbmFzc29jIFRPCiAlbm9uYXNzb2MJVU5CT1VOREVECQkvKiBpZGVhbGx5IHdvdWxk IGhhdmUgc2FtZSBwcmVjZWRlbmNlIGFzIElERU5UICovCiAlbm9uYXNzb2MJSURFTlQgUEFS VElUSU9OIFJBTkdFIFJPV1MgR1JPVVBTIFBSRUNFRElORyBGT0xMT1dJTkcgQ1VCRSBST0xM VVAKIAkJCVNFVCBLRVlTIE9CSkVDVF9QIFNDQUxBUiBWQUxVRV9QIFdJVEggV0lUSE9VVApA QCAtMTIyMzEsMTQgKzEyMjQ0LDE2IEBAIHJldHVybmluZ19jbGF1c2U6CiAgKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCiAKIERlbGV0ZVN0bXQ6IG9wdF93aXRoX2NsYXVzZSBERUxFVEVf UCBGUk9NIHJlbGF0aW9uX2V4cHJfb3B0X2FsaWFzCisJCQlmb3JfcG9ydGlvbl9vZl9jbGF1 c2UKIAkJCXVzaW5nX2NsYXVzZSB3aGVyZV9vcl9jdXJyZW50X2NsYXVzZSByZXR1cm5pbmdf Y2xhdXNlCiAJCQkJewogCQkJCQlEZWxldGVTdG10ICpuID0gbWFrZU5vZGUoRGVsZXRlU3Rt dCk7CiAKIAkJCQkJbi0+cmVsYXRpb24gPSAkNDsKLQkJCQkJbi0+dXNpbmdDbGF1c2UgPSAk NTsKLQkJCQkJbi0+d2hlcmVDbGF1c2UgPSAkNjsKLQkJCQkJbi0+cmV0dXJuaW5nTGlzdCA9 ICQ3OworCQkJCQluLT5mb3JQb3J0aW9uT2YgPSAkNTsKKwkJCQkJbi0+dXNpbmdDbGF1c2Ug PSAkNjsKKwkJCQkJbi0+d2hlcmVDbGF1c2UgPSAkNzsKKwkJCQkJbi0+cmV0dXJuaW5nTGlz dCA9ICQ4OwogCQkJCQluLT53aXRoQ2xhdXNlID0gJDE7CiAJCQkJCSQkID0gKE5vZGUgKikg bjsKIAkJCQl9CkBAIC0xMjMwMSw2ICsxMjMxNiw3IEBAIG9wdF9ub3dhaXRfb3Jfc2tpcDoK ICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogVXBkYXRlU3RtdDogb3B0X3dpdGhfY2xh dXNlIFVQREFURSByZWxhdGlvbl9leHByX29wdF9hbGlhcworCQkJZm9yX3BvcnRpb25fb2Zf Y2xhdXNlCiAJCQlTRVQgc2V0X2NsYXVzZV9saXN0CiAJCQlmcm9tX2NsYXVzZQogCQkJd2hl cmVfb3JfY3VycmVudF9jbGF1c2UKQEAgLTEyMzA5LDEwICsxMjMyNSwxMSBAQCBVcGRhdGVT dG10OiBvcHRfd2l0aF9jbGF1c2UgVVBEQVRFIHJlbGF0aW9uX2V4cHJfb3B0X2FsaWFzCiAJ CQkJCVVwZGF0ZVN0bXQgKm4gPSBtYWtlTm9kZShVcGRhdGVTdG10KTsKIAogCQkJCQluLT5y ZWxhdGlvbiA9ICQzOwotCQkJCQluLT50YXJnZXRMaXN0ID0gJDU7Ci0JCQkJCW4tPmZyb21D bGF1c2UgPSAkNjsKLQkJCQkJbi0+d2hlcmVDbGF1c2UgPSAkNzsKLQkJCQkJbi0+cmV0dXJu aW5nTGlzdCA9ICQ4OworCQkJCQluLT5mb3JQb3J0aW9uT2YgPSAkNDsKKwkJCQkJbi0+dGFy Z2V0TGlzdCA9ICQ2OworCQkJCQluLT5mcm9tQ2xhdXNlID0gJDc7CisJCQkJCW4tPndoZXJl Q2xhdXNlID0gJDg7CisJCQkJCW4tPnJldHVybmluZ0xpc3QgPSAkOTsKIAkJCQkJbi0+d2l0 aENsYXVzZSA9ICQxOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQpAQCAtMTM3NDgs NiArMTM3NjUsMjcgQEAgcmVsYXRpb25fZXhwcl9vcHRfYWxpYXM6IHJlbGF0aW9uX2V4cHIJ CQkJCSVwcmVjIFVNSU5VUwogCQkJCX0KIAkJOwogCitmb3JfcG9ydGlvbl9vZl9jbGF1c2U6 CisJCQlGT1IgUE9SVElPTiBPRiBDb2xJZCAnKCcgYV9leHByICcpJworCQkJCXsKKwkJCQkJ Rm9yUG9ydGlvbk9mQ2xhdXNlICpuID0gbWFrZU5vZGUoRm9yUG9ydGlvbk9mQ2xhdXNlKTsK KwkJCQkJbi0+cmFuZ2VfbmFtZSA9ICQ0OworCQkJCQluLT5sb2NhdGlvbiA9IEA0OworCQkJ CQluLT50YXJnZXQgPSAkNjsKKwkJCQkJJCQgPSBuOworCQkJCX0KKwkJCXwgRk9SIFBPUlRJ T04gT0YgQ29sSWQgRlJPTSBhX2V4cHIgVE8gYV9leHByCisJCQkJeworCQkJCQlGb3JQb3J0 aW9uT2ZDbGF1c2UgKm4gPSBtYWtlTm9kZShGb3JQb3J0aW9uT2ZDbGF1c2UpOworCQkJCQlu LT5yYW5nZV9uYW1lID0gJDQ7CisJCQkJCW4tPmxvY2F0aW9uID0gQDQ7CisJCQkJCW4tPnRh cmdldF9zdGFydCA9ICQ2OworCQkJCQluLT50YXJnZXRfZW5kID0gJDg7CisJCQkJCSQkID0g bjsKKwkJCQl9CisJCQl8IC8qRU1QVFkqLwkJCQkJeyAkJCA9IE5VTEw7IH0KKwkJOworCiAv KgogICogVEFCTEVTQU1QTEUgZGVjb3JhdGlvbiBpbiBhIEZST00gaXRlbQogICovCkBAIC0x NzM0MSw2ICsxNzM3OSw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgUEFTU1dPUkQK IAkJCXwgUExBTlMKIAkJCXwgUE9MSUNZCisJCQl8IFBPUlRJT04KIAkJCXwgUFJFQ0VESU5H CiAJCQl8IFBSRVBBUkUKIAkJCXwgUFJFUEFSRUQKQEAgLTE3OTQ1LDYgKzE3OTg0LDcgQEAg YmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBQTEFDSU5HCiAJCQl8IFBMQU5TCiAJCQl8IFBP TElDWQorCQkJfCBQT1JUSU9OCiAJCQl8IFBPU0lUSU9OCiAJCQl8IFBSRUNFRElORwogCQkJ fCBQUkVQQVJFCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMg Yi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKaW5kZXggN2IyMTFhNzc0M2YuLjE1 YjVjMGRlZGMxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCkBAIC01NzQsNiArNTc0LDEz IEBAIGNoZWNrX2FnZ2xldmVsc19hbmRfY29uc3RyYWludHMoUGFyc2VTdGF0ZSAqcHN0YXRl LCBOb2RlICpleHByKQogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgogCQkJZXJya2lu ZCA9IHRydWU7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT046 CisJCQlpZiAoaXNBZ2cpCisJCQkJZXJyID0gXygiYWdncmVnYXRlIGZ1bmN0aW9ucyBhcmUg bm90IGFsbG93ZWQgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbnMiKTsKKwkJCWVsc2UK KwkJCQllcnIgPSBfKCJncm91cGluZyBvcGVyYXRpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBG T1IgUE9SVElPTiBPRiBleHByZXNzaW9ucyIpOworCisJCQlicmVhazsKIAogCQkJLyoKIAkJ CSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0 aGF0IHRoZQpAQCAtOTY0LDYgKzk3MSw5IEBAIHRyYW5zZm9ybVdpbmRvd0Z1bmNDYWxsKFBh cnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93RnVuYyAqd2Z1bmMsCiAJCWNhc2UgRVhQUl9LSU5E X0NZQ0xFX01BUks6CiAJCQllcnJraW5kID0gdHJ1ZTsKIAkJCWJyZWFrOworCQljYXNlIEVY UFJfS0lORF9VUERBVEVfUE9SVElPTjoKKwkJCWVyciA9IF8oIndpbmRvdyBmdW5jdGlvbnMg YXJlIG5vdCBhbGxvd2VkIGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb25zIik7CisJCQli cmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVs dDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2NvbGxhdGUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRl LmMKaW5kZXggNDQ1MjliYjQ5ZTYuLjE0ZmZiN2JhNjQ5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfY29sbGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9jb2xsYXRlLmMKQEAgLTQ4NCw2ICs0ODQsNyBAQCBhc3NpZ25fY29sbGF0aW9uc193 YWxrZXIoTm9kZSAqbm9kZSwgYXNzaWduX2NvbGxhdGlvbnNfY29udGV4dCAqY29udGV4dCkK IAkJY2FzZSBUX0pvaW5FeHByOgogCQljYXNlIFRfRnJvbUV4cHI6CiAJCWNhc2UgVF9PbkNv bmZsaWN0RXhwcjoKKwkJY2FzZSBUX0ZvclBvcnRpb25PZkV4cHI6CiAJCWNhc2UgVF9Tb3J0 R3JvdXBDbGF1c2U6CiAJCWNhc2UgVF9NZXJnZUFjdGlvbjoKIAkJCSh2b2lkKSBleHByZXNz aW9uX3RyZWVfd2Fsa2VyKG5vZGUsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCA5 MzAwYzdiOWFiYy4uZjNjNDlkZTgwOTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpA QCAtNTY2LDYgKzU2Niw5IEBAIHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3Rh dGUsIENvbHVtblJlZiAqY3JlZikKIAkJY2FzZSBFWFBSX0tJTkRfUEFSVElUSU9OX0JPVU5E OgogCQkJZXJyID0gXygiY2Fubm90IHVzZSBjb2x1bW4gcmVmZXJlbmNlIGluIHBhcnRpdGlv biBib3VuZCBleHByZXNzaW9uIik7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBE QVRFX1BPUlRJT046CisJCQllcnIgPSBfKCJjYW5ub3QgdXNlIGNvbHVtbiByZWZlcmVuY2Ug aW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbiIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJ CQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28g dGhhdCB0aGUKQEAgLTE4MTMsNiArMTgxNiw5IEBAIHRyYW5zZm9ybVN1YkxpbmsoUGFyc2VT dGF0ZSAqcHN0YXRlLCBTdWJMaW5rICpzdWJsaW5rKQogCQljYXNlIEVYUFJfS0lORF9HRU5F UkFURURfQ09MVU1OOgogCQkJZXJyID0gXygiY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBjb2x1 bW4gZ2VuZXJhdGlvbiBleHByZXNzaW9uIik7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJ TkRfVVBEQVRFX1BPUlRJT046CisJCQllcnIgPSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGlu IEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb24iKTsKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJ ICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRo YXQgdGhlCkBAIC0zMTA0LDYgKzMxMTAsOCBAQCBQYXJzZUV4cHJLaW5kTmFtZShQYXJzZUV4 cHJLaW5kIGV4cHJLaW5kKQogCQkJcmV0dXJuICJVUERBVEUiOwogCQljYXNlIEVYUFJfS0lO RF9NRVJHRV9XSEVOOgogCQkJcmV0dXJuICJNRVJHRSBXSEVOIjsKKwkJY2FzZSBFWFBSX0tJ TkRfVVBEQVRFX1BPUlRJT046CisJCQlyZXR1cm4gIkZPUiBQT1JUSU9OIE9GIjsKIAkJY2Fz ZSBFWFBSX0tJTkRfR1JPVVBfQlk6CiAJCQlyZXR1cm4gIkdST1VQIEJZIjsKIAkJY2FzZSBF WFBSX0tJTkRfT1JERVJfQlk6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfZnVuYy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwppbmRleCBmZGIz ZTZkZjMzOC4uZmMxN2RkN2VkZjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9mdW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwpAQCAt MjY1Niw2ICsyNjU2LDkgQEAgY2hlY2tfc3JmX2NhbGxfcGxhY2VtZW50KFBhcnNlU3RhdGUg KnBzdGF0ZSwgTm9kZSAqbGFzdF9zcmYsIGludCBsb2NhdGlvbikKIAkJY2FzZSBFWFBSX0tJ TkRfQ1lDTEVfTUFSSzoKIAkJCWVycmtpbmQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2Ug RVhQUl9LSU5EX1VQREFURV9QT1JUSU9OOgorCQkJZXJyID0gXygic2V0LXJldHVybmluZyBm dW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb25z Iik7CisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkg bm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX21lcmdlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf bWVyZ2UuYwppbmRleCA1ZjZhNjgzYWI5NC4uMDczMzYxNmYwMzYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9tZXJnZS5jCkBAIC0zNzIsNyArMzcyLDcgQEAgdHJhbnNmb3JtTWVyZ2VTdG10 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTWVyZ2VTdG10ICpzdG10KQogCQkJCQlwc3RhdGUtPnBf aXNfaW5zZXJ0ID0gZmFsc2U7CiAJCQkJCWFjdGlvbi0+dGFyZ2V0TGlzdCA9CiAJCQkJCQl0 cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KHBzdGF0ZSwKLQkJCQkJCQkJCQkJCSAgbWVyZ2VX aGVuQ2xhdXNlLT50YXJnZXRMaXN0KTsKKwkJCQkJCQkJCQkJCSAgbWVyZ2VXaGVuQ2xhdXNl LT50YXJnZXRMaXN0LCBOVUxMKTsKIAkJCQl9CiAJCQkJYnJlYWs7CiAJCQljYXNlIENNRF9E RUxFVEU6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVy LmMgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKaW5kZXggZjYwYjM0 ZGViNjQuLjRjNGE1ZGQwNzI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jl d3JpdGVIYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxl ci5jCkBAIC0zNDc2LDYgKzM0NzYsMzAgQEAgcmV3cml0ZVRhcmdldFZpZXcoUXVlcnkgKnBh cnNldHJlZSwgUmVsYXRpb24gdmlldykKIAkJCQkJCQkJCSAgJnBhcnNldHJlZS0+aGFzU3Vi TGlua3MpOwogCX0KIAorCWlmIChwYXJzZXRyZWUtPmZvclBvcnRpb25PZiAmJiBwYXJzZXRy ZWUtPmNvbW1hbmRUeXBlID09IENNRF9VUERBVEUpCisJeworCQkvKgorCQkgKiBMaWtlIHRo ZSBJTlNFUlQvVVBEQVRFIGNvZGUgYWJvdmUsIHVwZGF0ZSB0aGUgcmVzbm9zIGluIHRoZQor CQkgKiBhdXhpbGlhcnkgVVBEQVRFIHRhcmdldGxpc3QgdG8gcmVmZXIgdG8gY29sdW1ucyBv ZiB0aGUgYmFzZQorCQkgKiByZWxhdGlvbi4KKwkJICovCisJCWZvcmVhY2gobGMsIHBhcnNl dHJlZS0+Zm9yUG9ydGlvbk9mLT5yYW5nZVRhcmdldExpc3QpCisJCXsKKwkJCVRhcmdldEVu dHJ5ICp0bGUgPSAoVGFyZ2V0RW50cnkgKikgbGZpcnN0KGxjKTsKKwkJCVRhcmdldEVudHJ5 ICp2aWV3X3RsZTsKKworCQkJaWYgKHRsZS0+cmVzanVuaykKKwkJCQljb250aW51ZTsKKwor CQkJdmlld190bGUgPSBnZXRfdGxlX2J5X3Jlc25vKHZpZXdfdGFyZ2V0bGlzdCwgdGxlLT5y ZXNubyk7CisJCQlpZiAodmlld190bGUgIT0gTlVMTCAmJiAhdmlld190bGUtPnJlc2p1bmsg JiYgSXNBKHZpZXdfdGxlLT5leHByLCBWYXIpKQorCQkJCXRsZS0+cmVzbm8gPSAoKFZhciAq KSB2aWV3X3RsZS0+ZXhwciktPnZhcmF0dG5vOworCQkJZWxzZQorCQkJCWVsb2coRVJST1Is ICJhdHRyaWJ1dGUgbnVtYmVyICVkIG5vdCBmb3VuZCBpbiB2aWV3IHRhcmdldGxpc3QiLAor CQkJCQkgdGxlLT5yZXNubyk7CisJCX0KKwl9CisKIAkvKgogCSAqIEZvciBVUERBVEUvREVM RVRFLCBwdWxsIHVwIGFueSBXSEVSRSBxdWFscyBmcm9tIHRoZSB2aWV3LiAgV2Uga25vdyB0 aGF0CiAJICogYW55IFZhcnMgaW4gdGhlIHF1YWxzIG11c3QgcmVmZXJlbmNlIHRoZSBvbmUg YmFzZSByZWxhdGlvbiwgc28gd2UgbmVlZApAQCAtMzgxNCw2ICszODM4LDIyIEBAIFJld3Jp dGVRdWVyeShRdWVyeSAqcGFyc2V0cmVlLCBMaXN0ICpyZXdyaXRlX2V2ZW50cywgaW50IG9y aWdfcnRfbGVuZ3RoKQogCQllbHNlIGlmIChldmVudCA9PSBDTURfVVBEQVRFKQogCQl7CiAJ CQlBc3NlcnQocGFyc2V0cmVlLT5vdmVycmlkZSA9PSBPVkVSUklESU5HX05PVF9TRVQpOwor CQkJLyoKKwkJCSAqIFVwZGF0ZSBGT1IgUE9SVElPTiBPRiBjb2x1bW4ocykgYXV0b21hdGlj YWxseS4gRG9uJ3QKKwkJCSAqIGRvIHRoaXMgdW50aWwgd2UncmUgZG9uZSByZXdyaXRpbmcg YSB2aWV3IHVwZGF0ZSwgc28KKwkJCSAqIHRoYXQgd2UgZG9uJ3QgYWRkIHRoZSBzYW1lIHVw ZGF0ZSBvbiB0aGUgcmVjdXJzaW9uLgorCQkJICovCisJCQlpZiAocGFyc2V0cmVlLT5mb3JQ b3J0aW9uT2YgJiYKKwkJCQlydF9lbnRyeV9yZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kICE9 IFJFTEtJTkRfVklFVykKKwkJCXsKKwkJCQlMaXN0Q2VsbCAqdGw7CisJCQkJZm9yZWFjaCh0 bCwgcGFyc2V0cmVlLT5mb3JQb3J0aW9uT2YtPnJhbmdlVGFyZ2V0TGlzdCkKKwkJCQl7CisJ CQkJCVRhcmdldEVudHJ5ICp0bGUgPSAoVGFyZ2V0RW50cnkgKikgbGZpcnN0KHRsKTsKKwkJ CQkJcGFyc2V0cmVlLT50YXJnZXRMaXN0ID0gbGFwcGVuZChwYXJzZXRyZWUtPnRhcmdldExp c3QsIHRsZSk7CisJCQkJfQorCQkJfQorCiAJCQlwYXJzZXRyZWUtPnRhcmdldExpc3QgPQog CQkJCXJld3JpdGVUYXJnZXRMaXN0SVUocGFyc2V0cmVlLT50YXJnZXRMaXN0LAogCQkJCQkJ CQkJcGFyc2V0cmVlLT5jb21tYW5kVHlwZSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9yaV90cmlnZ2Vycy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdn ZXJzLmMKaW5kZXggMGRhZGYyYWNiMmQuLjRkMTdiMzg3N2JkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvcmlfdHJpZ2dlcnMuYwpAQCAtMjMwLDYgKzIzMCw3IEBAIHN0YXRpYyBib29sIHJp X1BlcmZvcm1DaGVjayhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCQkJ CVJJX1F1ZXJ5S2V5ICpxa2V5LCBTUElQbGFuUHRyIHFwbGFuLAogCQkJCQkJCVJlbGF0aW9u IGZrX3JlbCwgUmVsYXRpb24gcGtfcmVsLAogCQkJCQkJCVR1cGxlVGFibGVTbG90ICpvbGRz bG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwKKwkJCQkJCQlpbnQgZm9yUG9ydGlvbk9m UGFyYW0sIERhdHVtIGZvclBvcnRpb25PZiwKIAkJCQkJCQlib29sIGRldGVjdE5ld1Jvd3Ms IGludCBleHBlY3RfT0spOwogc3RhdGljIHZvaWQgcmlfRXh0cmFjdFZhbHVlcyhSZWxhdGlv biByZWwsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQkJCSBjb25zdCBSSV9Db25zdHJh aW50SW5mbyAqcmlpbmZvLCBib29sIHJlbF9pc19waywKQEAgLTI0MCw2ICsyNDEsMTEgQEAg c3RhdGljIHZvaWQgcmlfUmVwb3J0VmlvbGF0aW9uKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZv ICpyaWluZm8sCiAJCQkJCQkJICAgaW50IHF1ZXJ5bm8sIGJvb2wgcGFydGdvbmUpIHBnX2F0 dHJpYnV0ZV9ub3JldHVybigpOwogc3RhdGljIHZvaWQgbG9va3VwVFJJT3BlckFuZFByb2Mo Y29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAkJCQkJCQkJIGNoYXIgKipvcG5h bWUsIGNoYXIgKiphZ2duYW1lKTsKK3N0YXRpYyBib29sIGZwb190YXJnZXRzX3BrX3Jhbmdl KGNvbnN0IEZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbCwKKwkJCQkJCQkJIGNvbnN0 IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8pOworc3RhdGljIERhdHVtIHJlc3RyaWN0X2Nh c2NhZGluZ19yYW5nZShjb25zdCBGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWwsCisJ CQkJCQkJCQkgIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCisJCQkJCQkJCQkg IFR1cGxlVGFibGVTbG90ICpvbGRzbG90KTsKIAogCiAvKgpAQCAtNDU2LDYgKzQ2Miw3IEBA IFJJX0ZLZXlfY2hlY2soVHJpZ2dlckRhdGEgKnRyaWdkYXRhKQogCXJpX1BlcmZvcm1DaGVj ayhyaWluZm8sICZxa2V5LCBxcGxhbiwKIAkJCQkJZmtfcmVsLCBwa19yZWwsCiAJCQkJCU5V TEwsIG5ld3Nsb3QsCisJCQkJCS0xLCAoRGF0dW0pIDAsCiAJCQkJCXBrX3JlbC0+cmRfcmVs LT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUsCiAJCQkJCVNQSV9PS19T RUxFQ1QpOwogCkBAIC02MjAsNiArNjI3LDcgQEAgcmlfQ2hlY2tfUGtfTWF0Y2goUmVsYXRp b24gcGtfcmVsLCBSZWxhdGlvbiBma19yZWwsCiAJcmVzdWx0ID0gcmlfUGVyZm9ybUNoZWNr KHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJCQkJCSBma19yZWwsIHBrX3JlbCwKIAkJCQkJ CQkgb2xkc2xvdCwgTlVMTCwKKwkJCQkJCQkgLTEsIChEYXR1bSkgMCwKIAkJCQkJCQkgdHJ1 ZSwJLyogdHJlYXQgbGlrZSB1cGRhdGUgKi8KIAkJCQkJCQkgU1BJX09LX1NFTEVDVCk7CiAK QEAgLTcxOSw2ICs3MjcsOCBAQCByaV9yZXN0cmljdChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEs IGJvb2wgaXNfbm9fYWN0aW9uKQogCVR1cGxlVGFibGVTbG90ICpvbGRzbG90OwogCVJJX1F1 ZXJ5S2V5IHFrZXk7CiAJU1BJUGxhblB0cglxcGxhbjsKKwlpbnQJCQl0YXJnZXRSYW5nZVBh cmFtID0gLTE7CisJRGF0dW0JCXRhcmdldFJhbmdlID0gKERhdHVtKSAwOwogCiAJcmlpbmZv ID0gcmlfRmV0Y2hDb25zdHJhaW50SW5mbyh0cmlnZGF0YS0+dGdfdHJpZ2dlciwKIAkJCQkJ CQkJCXRyaWdkYXRhLT50Z19yZWxhdGlvbiwgdHJ1ZSk7CkBAIC04MTUsOSArODI1LDE2IEBA IHJpX3Jlc3RyaWN0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19ub19hY3Rpb24p CiAJLyoKIAkgKiBXZSBoYXZlIGEgcGxhbiBub3cuIFJ1biBpdCB0byBjaGVjayBmb3IgZXhp c3RpbmcgcmVmZXJlbmNlcy4KIAkgKi8KKwlpZiAodHJpZ2RhdGEtPnRnX3RlbXBvcmFsKQor CXsKKwkJdGFyZ2V0UmFuZ2VQYXJhbSA9IHJpaW5mby0+bmtleXMgLSAxOworCQl0YXJnZXRS YW5nZSA9IHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZSh0cmlnZGF0YS0+dGdfdGVtcG9yYWws IHJpaW5mbywgb2xkc2xvdCk7CisJfQorCiAJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFr ZXksIHFwbGFuLAogCQkJCQlma19yZWwsIHBrX3JlbCwKIAkJCQkJb2xkc2xvdCwgTlVMTCwK KwkJCQkJdGFyZ2V0UmFuZ2VQYXJhbSwgdGFyZ2V0UmFuZ2UsCiAJCQkJCXRydWUsCQkvKiBt dXN0IGRldGVjdCBuZXcgcm93cyAqLwogCQkJCQlTUElfT0tfU0VMRUNUKTsKIApAQCAtOTI0 LDYgKzk0MSw3IEBAIFJJX0ZLZXlfY2FzY2FkZV9kZWwoUEdfRlVOQ1RJT05fQVJHUykKIAly aV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCiAJCQkJCWZrX3JlbCwgcGtf cmVsLAogCQkJCQlvbGRzbG90LCBOVUxMLAorCQkJCQktMSwgKERhdHVtKSAwLAogCQkJCQl0 cnVlLAkJLyogbXVzdCBkZXRlY3QgbmV3IHJvd3MgKi8KIAkJCQkJU1BJX09LX0RFTEVURSk7 CiAKQEAgLTEwNDUsNiArMTA2Myw3IEBAIFJJX0ZLZXlfY2FzY2FkZV91cGQoUEdfRlVOQ1RJ T05fQVJHUykKIAlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCiAJCQkJ CWZrX3JlbCwgcGtfcmVsLAogCQkJCQlvbGRzbG90LCBuZXdzbG90LAorCQkJCQktMSwgKERh dHVtKSAwLAogCQkJCQl0cnVlLAkJLyogbXVzdCBkZXRlY3QgbmV3IHJvd3MgKi8KIAkJCQkJ U1BJX09LX1VQREFURSk7CiAKQEAgLTEyNzcsNiArMTI5Niw3IEBAIHJpX3NldChUcmlnZ2Vy RGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpCiAJcmlfUGVy Zm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJCQlma19yZWwsIHBrX3JlbCwK IAkJCQkJb2xkc2xvdCwgTlVMTCwKKwkJCQkJLTEsIChEYXR1bSkgMCwKIAkJCQkJdHJ1ZSwJ CS8qIG11c3QgZGV0ZWN0IG5ldyByb3dzICovCiAJCQkJCVNQSV9PS19VUERBVEUpOwogCkBA IC0yNTUxLDYgKzI1NzEsNyBAQCByaV9QZXJmb3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWlu dEluZm8gKnJpaW5mbywKIAkJCQlSSV9RdWVyeUtleSAqcWtleSwgU1BJUGxhblB0ciBxcGxh biwKIAkJCQlSZWxhdGlvbiBma19yZWwsIFJlbGF0aW9uIHBrX3JlbCwKIAkJCQlUdXBsZVRh YmxlU2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCisJCQkJaW50IGZv clBvcnRpb25PZlBhcmFtLCBEYXR1bSBmb3JQb3J0aW9uT2YsCiAJCQkJYm9vbCBkZXRlY3RO ZXdSb3dzLCBpbnQgZXhwZWN0X09LKQogewogCVJlbGF0aW9uCXF1ZXJ5X3JlbCwKQEAgLTI2 MDYsNiArMjYyNywxMiBAQCByaV9QZXJmb3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWludElu Zm8gKnJpaW5mbywKIAkJcmlfRXh0cmFjdFZhbHVlcyhzb3VyY2VfcmVsLCBvbGRzbG90LCBy aWluZm8sIHNvdXJjZV9pc19waywKIAkJCQkJCSB2YWxzLCBudWxscyk7CiAJfQorCS8qIEFk ZCBvbmUgbW9yZSBxdWVyeSBwYXJhbSBpZiB3ZSBhcmUgdXNpbmcgRk9SIFBPUlRJT04gT0Yg Ki8KKwlpZiAoZm9yUG9ydGlvbk9mKQorCXsKKwkJdmFsc1tmb3JQb3J0aW9uT2ZQYXJhbV0g PSBmb3JQb3J0aW9uT2Y7CisJCW51bGxzW2ZvclBvcnRpb25PZlBhcmFtXSA9ICcgJzsKKwl9 CiAKIAkvKgogCSAqIEluIFJFQUQgQ09NTUlUVEVEIG1vZGUsIHdlIGp1c3QgbmVlZCB0byB1 c2UgYW4gdXAtdG8tZGF0ZSByZWd1bGFyCkBAIC0zMzUwLDMgKzMzNzcsNTAgQEAgbG9va3Vw VFJJT3BlckFuZFByb2MoY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywgY2hhciAq Km9wbmFtZSwgY2hhciAqKmFnZ24KIAkJCQkgZXJyaGludCgiWW91IG11c3QgdXNlIGFuIG9w ZXJhdG9yIGNsYXNzIHdpdGggYSByZWZlcmVuY2VkYWdnIHN1cHBvcnQgZnVuY3Rpb24uIikp KTsKIAkqYWdnbmFtZSA9IGdldF9mdW5jX25hbWVfYW5kX25hbWVzcGFjZShvaWQpOwogfQor CisvKgorICogZnBvX3RhcmdldHNfcGtfcmFuZ2UKKyAqCisgKiBSZXR1cm5zIHRydWUgaWZm IHRoZSBwcmltYXJ5IGtleSByZWZlcmVuY2VkIGJ5IHJpaW5mbyBpbmNsdWRlcyB0aGUgcmFu Z2UKKyAqIGNvbHVtbiB0YXJnZXRlZCBieSB0aGUgRk9SIFBPUlRJT04gT0YgY2xhdXNlIChh Y2NvcmRpbmcgdG8gdGdfdGVtcG9yYWwpLgorICovCitzdGF0aWMgYm9vbAorZnBvX3Rhcmdl dHNfcGtfcmFuZ2UoY29uc3QgRm9yUG9ydGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFsLCBjb25z dCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvKQoreworCWlmICh0Z190ZW1wb3JhbCA9PSBO VUxMKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gcmlpbmZvLT5wa19hdHRudW1zW3Jp aW5mby0+bmtleXMgLSAxXSA9PSB0Z190ZW1wb3JhbC0+ZnBfcmFuZ2VBdHRubzsKK30KKwor LyoKKyAqIHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZSAtCisgKgorICogUmV0dXJucyBhIERh dHVtIG9mIFJhbmdlVHlwZVAgaG9sZGluZyB0aGUgYXBwcm9wcmlhdGUgdGltZXNwYW4KKyAq IHRvIHRhcmdldCBjaGlsZCByZWNvcmRzIHdoZW4gd2UgQ0FTQ0FERS9TRVQgTlVMTC9TRVQg REVGQVVMVC4KKyAqCisgKiBJbiBhIG5vcm1hbCBVUERBVEUvREVMRVRFIHRoaXMgc2hvdWxk IGJlIHRoZSBwYXJlbnQncyBvd24gdmFsaWQgdGltZSwKKyAqIGJ1dCBpZiB0aGVyZSB3YXMg YSBGT1IgUE9SVElPTiBPRiBjbGF1c2UsIHRoZW4gd2Ugc2hvdWxkIHVzZSB0aGF0IHRvCisg KiB0cmltIGRvd24gdGhlIHBhcmVudCdzIHNwYW4gZnVydGhlci4KKyAqLworc3RhdGljIERh dHVtCityZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UoY29uc3QgRm9yUG9ydGlvbk9mU3RhdGUg KnRnX3RlbXBvcmFsLCBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLCBUdXBsZVRh YmxlU2xvdCAqb2xkc2xvdCkKK3sKKwlEYXR1bQlwa1JlY29yZFJhbmdlOworCWJvb2wJaXNu dWxsOworCisJcGtSZWNvcmRSYW5nZSA9IHNsb3RfZ2V0YXR0cihvbGRzbG90LCByaWluZm8t PnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdLCAmaXNudWxsKTsKKwlpZiAoaXNudWxs KQorCQllbG9nKEVSUk9SLCAiYXBwbGljYXRpb24gdGltZSBzaG91bGQgbm90IGJlIG51bGwi KTsKKworCWlmIChmcG9fdGFyZ2V0c19wa19yYW5nZSh0Z190ZW1wb3JhbCwgcmlpbmZvKSkK Kwl7CisJCVJhbmdlVHlwZSAqcjEgPSBEYXR1bUdldFJhbmdlVHlwZVAocGtSZWNvcmRSYW5n ZSk7CisJCVJhbmdlVHlwZSAqcjIgPSBEYXR1bUdldFJhbmdlVHlwZVAodGdfdGVtcG9yYWwt PmZwX3RhcmdldFJhbmdlKTsKKwkJT2lkIHJuZ3R5cGlkID0gUmFuZ2VUeXBlR2V0T2lkKHIx KTsKKwkJVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2FjaGUocm5n dHlwaWQsIFRZUEVDQUNIRV9SQU5HRV9JTkZPKTsKKwkJcmV0dXJuIFJhbmdlVHlwZVBHZXRE YXR1bShyYW5nZV9pbnRlcnNlY3RfaW50ZXJuYWwodHlwY2FjaGUsIHIxLCByMikpOworCX0K KwllbHNlCisJCXJldHVybiBwa1JlY29yZFJhbmdlOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9sc3lzY2FjaGUuYwppbmRleCA2Y2QxNGQ0YmQxMi4uOWEyNDg4MmY4OTUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC0yMTc0LDYgKzIxNzQsNTkgQEAgZ2V0 X3R5cGlzZGVmaW5lZChPaWQgdHlwaWQpCiAJCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAq IGdldF90eXBuYW1lCisgKgorICoJICBSZXR1cm5zIHRoZSBuYW1lIG9mIGEgZ2l2ZW4gdHlw ZQorICoKKyAqIFJldHVybnMgYSBwYWxsb2MnZCBjb3B5IG9mIHRoZSBzdHJpbmcsIG9yIE5V TEwgaWYgbm8gc3VjaCB0eXBlLgorICovCitjaGFyICoKK2dldF90eXBuYW1lKE9pZCB0eXBp ZCkKK3sKKwlIZWFwVHVwbGUgICB0cDsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVP SUQsIE9iamVjdElkR2V0RGF0dW0odHlwaWQpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0 cCkpCisJeworCQlGb3JtX3BnX3R5cGUgdHlwdHVwID0gKEZvcm1fcGdfdHlwZSkgR0VUU1RS VUNUKHRwKTsKKwkJY2hhcgkgICAqcmVzdWx0OworCisJCXJlc3VsdCA9IHBzdHJkdXAoTmFt ZVN0cih0eXB0dXAtPnR5cG5hbWUpKTsKKwkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwkJcmV0 dXJuIHJlc3VsdDsKKwl9CisJZWxzZQorCQlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIGdl dF90eXBuYW1lX2FuZF9uYW1lc3BhY2UKKyAqCisgKgkgIFJldHVybnMgdGhlIG5hbWUgYW5k IG5hbWVzcGFjZSBvZiBhIGdpdmVuIHR5cGUKKyAqCisgKiBSZXR1cm5zIHRydWUgaWYgb25l IGZvdW5kLCBvciBmYWxzZSBpZiBub3QuCisgKi8KK2Jvb2wKK2dldF90eXBuYW1lX2FuZF9u YW1lc3BhY2UoT2lkIHR5cGlkLCBjaGFyICoqdHlwbmFtZSwgY2hhciAqKnR5cG5hbWVzcGFj ZSkKK3sKKwlIZWFwVHVwbGUJdHA7CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hlMShUWVBFT0lE LCBPYmplY3RJZEdldERhdHVtKHR5cGlkKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHAp KQorCXsKKwkJRm9ybV9wZ190eXBlIHR5cHR1cCA9IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVD VCh0cCk7CisKKwkJKnR5cG5hbWUgPSBwc3RyZHVwKE5hbWVTdHIodHlwdHVwLT50eXBuYW1l KSk7CisJCSp0eXBuYW1lc3BhY2UgPSBnZXRfbmFtZXNwYWNlX25hbWUodHlwdHVwLT50eXBu YW1lc3BhY2UpOworCQlSZWxlYXNlU3lzQ2FjaGUodHApOworCQkvKiAqdHlwbmFtZXNwYWNl IGlzIE5VTEwgaWYgaXQgd2Fzbid0IGZvdW5kOiAqLworCQlyZXR1cm4gKnR5cG5hbWVzcGFj ZTsKKwl9CisJZWxzZQorCQlyZXR1cm4gZmFsc2U7Cit9CisKIC8qCiAgKiBnZXRfdHlwbGVu CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3N0cmF0bnVtLmggYi9zcmMv aW5jbHVkZS9hY2Nlc3Mvc3RyYXRudW0uaAppbmRleCA4YTQ3ZDNjOWVjOC4uZTkzYzRkMWY4 NmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zdHJhdG51bS5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9zdHJhdG51bS5oCkBAIC03OCw4ICs3OCwxMCBAQCB0eXBlZGVm IHVpbnQxNiBTdHJhdGVneU51bWJlcjsKICNkZWZpbmUgUlRQcmVmaXhTdHJhdGVneU51bWJl cgkJCTI4CS8qIGZvciB0ZXh0IF5AICovCiAjZGVmaW5lIFJUT2xkQmVsb3dTdHJhdGVneU51 bWJlcgkJMjkJLyogZm9yIG9sZCBzcGVsbGluZyBvZiA8PHwgKi8KICNkZWZpbmUgUlRPbGRB Ym92ZVN0cmF0ZWd5TnVtYmVyCQkzMAkvKiBmb3Igb2xkIHNwZWxsaW5nIG9mIHw+PiAqLwor I2RlZmluZSBSVEludGVyc2VjdFN0cmF0ZWd5TnVtYmVyCQkzMQkvKiBmb3IgKiAqLworI2Rl ZmluZSBSVFdpdGhvdXRQb3J0aW9uU3RyYXRlZ3lOdW1iZXIJMzIJLyogZm9yIEAtICovCiAK LSNkZWZpbmUgUlRNYXhTdHJhdGVneU51bWJlcgkJCQkzMAorI2RlZmluZSBSVE1heFN0cmF0 ZWd5TnVtYmVyCQkJCTMyCiAKIAogI2VuZGlmCQkJCQkJCS8qIFNUUkFUTlVNX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1vcC5kYXQgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX2Ftb3AuZGF0CmluZGV4IGQ4YTA1MjE0YjExLi5hNTY1ZDMzN2RlYyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbW9wLmRhdAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX2Ftb3AuZGF0CkBAIC0xMTA4LDYgKzExMDgsOSBAQAogeyBh bW9wZmFtaWx5ID0+ICdnaXN0L2JveF9vcHMnLCBhbW9wbGVmdHR5cGUgPT4gJ2JveCcsIGFt b3ByaWdodHR5cGUgPT4gJ3BvaW50JywKICAgYW1vcHN0cmF0ZWd5ID0+ICcxNScsIGFtb3Bw dXJwb3NlID0+ICdvJywgYW1vcG9wciA9PiAnPC0+KGJveCxwb2ludCknLAogICBhbW9wbWV0 aG9kID0+ICdnaXN0JywgYW1vcHNvcnRmYW1pbHkgPT4gJ2J0cmVlL2Zsb2F0X29wcycgfSwK K3sgYW1vcGZhbWlseSA9PiAnZ2lzdC9ib3hfb3BzJywgYW1vcGxlZnR0eXBlID0+ICdib3gn LCBhbW9wcmlnaHR0eXBlID0+ICdib3gnLAorICBhbW9wc3RyYXRlZ3kgPT4gJzMxJywgYW1v cHB1cnBvc2UgPT4gJ3AnLCBhbW9wb3ByID0+ICcjKGJveCxib3gpJywKKyAgYW1vcG1ldGhv ZCA9PiAnZ2lzdCcgfSwKIAogIyBnaXN0IHBvaW50X29wcwogeyBhbW9wZmFtaWx5ID0+ICdn aXN0L3BvaW50X29wcycsIGFtb3BsZWZ0dHlwZSA9PiAncG9pbnQnLApAQCAtMTM5Nyw2ICsx NDAwLDEyIEBACiB7IGFtb3BmYW1pbHkgPT4gJ2dpc3QvcmFuZ2Vfb3BzJywgYW1vcGxlZnR0 eXBlID0+ICdhbnlyYW5nZScsCiAgIGFtb3ByaWdodHR5cGUgPT4gJ2FueXJhbmdlJywgYW1v cHN0cmF0ZWd5ID0+ICcxOCcsCiAgIGFtb3BvcHIgPT4gJz0oYW55cmFuZ2UsYW55cmFuZ2Up JywgYW1vcG1ldGhvZCA9PiAnZ2lzdCcgfSwKK3sgYW1vcGZhbWlseSA9PiAnZ2lzdC9yYW5n ZV9vcHMnLCBhbW9wbGVmdHR5cGUgPT4gJ2FueXJhbmdlJywKKyAgYW1vcHJpZ2h0dHlwZSA9 PiAnYW55cmFuZ2UnLCBhbW9wc3RyYXRlZ3kgPT4gJzMxJywgYW1vcHB1cnBvc2UgPT4gJ3An LAorICBhbW9wb3ByID0+ICcqKGFueXJhbmdlLGFueXJhbmdlKScsIGFtb3BtZXRob2QgPT4g J2dpc3QnIH0sCit7IGFtb3BmYW1pbHkgPT4gJ2dpc3QvcmFuZ2Vfb3BzJywgYW1vcGxlZnR0 eXBlID0+ICdhbnlyYW5nZScsCisgIGFtb3ByaWdodHR5cGUgPT4gJ2FueXJhbmdlJywgYW1v cHN0cmF0ZWd5ID0+ICczMicsIGFtb3BwdXJwb3NlID0+ICdwJywKKyAgYW1vcG9wciA9PiAn QC0oYW55cmFuZ2UsYW55cmFuZ2UpJywgYW1vcG1ldGhvZCA9PiAnZ2lzdCcgfSwKIAogIyBH aVNUIG11bHRpcmFuZ2Vfb3BzCiB7IGFtb3BmYW1pbHkgPT4gJ2dpc3QvbXVsdGlyYW5nZV9v cHMnLCBhbW9wbGVmdHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLApAQCAtMTQ1Myw2ICsxNDYy LDEyIEBACiB7IGFtb3BmYW1pbHkgPT4gJ2dpc3QvbXVsdGlyYW5nZV9vcHMnLCBhbW9wbGVm dHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLAogICBhbW9wcmlnaHR0eXBlID0+ICdhbnltdWx0 aXJhbmdlJywgYW1vcHN0cmF0ZWd5ID0+ICcxOCcsCiAgIGFtb3BvcHIgPT4gJz0oYW55bXVs dGlyYW5nZSxhbnltdWx0aXJhbmdlKScsIGFtb3BtZXRob2QgPT4gJ2dpc3QnIH0sCit7IGFt b3BmYW1pbHkgPT4gJ2dpc3QvbXVsdGlyYW5nZV9vcHMnLCBhbW9wbGVmdHR5cGUgPT4gJ2Fu eW11bHRpcmFuZ2UnLAorICBhbW9wcmlnaHR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywgYW1v cHN0cmF0ZWd5ID0+ICczMScsIGFtb3BwdXJwb3NlID0+ICdwJywKKyAgYW1vcG9wciA9PiAn KihhbnltdWx0aXJhbmdlLGFueW11bHRpcmFuZ2UpJywgYW1vcG1ldGhvZCA9PiAnZ2lzdCcg fSwKK3sgYW1vcGZhbWlseSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycsIGFtb3BsZWZ0dHlw ZSA9PiAnYW55bXVsdGlyYW5nZScsCisgIGFtb3ByaWdodHR5cGUgPT4gJ2FueW11bHRpcmFu Z2UnLCBhbW9wc3RyYXRlZ3kgPT4gJzMyJywgYW1vcHB1cnBvc2UgPT4gJ3AnLAorICBhbW9w b3ByID0+ICdALShhbnltdWx0aXJhbmdlLGFueW11bHRpcmFuZ2UpJywgYW1vcG1ldGhvZCA9 PiAnZ2lzdCcgfSwKIAogIyBidHJlZSBtdWx0aXJhbmdlX29wcwogeyBhbW9wZmFtaWx5ID0+ ICdidHJlZS9tdWx0aXJhbmdlX29wcycsIGFtb3BsZWZ0dHlwZSA9PiAnYW55bXVsdGlyYW5n ZScsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Ftb3AuaCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfYW1vcC5oCmluZGV4IDU3MDEwMGZhZDQxLi5jOGE2MDAzYzcz OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbW9wLmgKKysrIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19hbW9wLmgKQEAgLTk5LDYgKzk5LDcgQEAgTUFLRV9TWVND QUNIRShBTU9QT1BJRCwgcGdfYW1vcF9vcHJfZmFtX2luZGV4LCA2NCk7CiAvKiBhbGxvd2Vk IHZhbHVlcyBvZiBhbW9wcHVycG9zZTogKi8KICNkZWZpbmUgQU1PUF9TRUFSQ0gJCSdzJwkJ Lyogb3BlcmF0b3IgaXMgZm9yIHNlYXJjaCAqLwogI2RlZmluZSBBTU9QX09SREVSCQknbycJ CS8qIG9wZXJhdG9yIGlzIGZvciBvcmRlcmluZyAqLworI2RlZmluZSBBTU9QX1BPUlRJT04J J3AnCQkvKiBvcGVyYXRvciBpcyBmb3IgRk9SIFBPUlRJT04gT0YgKi8KIAogI2VuZGlmCQkJ CQkJCS8qIEVYUE9TRV9UT19DTElFTlRfQ09ERSAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jb21tYW5kcy90cmlnZ2VyLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2Vy LmgKaW5kZXggOGE1YTlmZTY0MjIuLjNkMTU2NDgzMzI1IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJp Z2dlci5oCkBAIC00MSw2ICs0MSw3IEBAIHR5cGVkZWYgc3RydWN0IFRyaWdnZXJEYXRhCiAJ VHVwbGVzdG9yZXN0YXRlICp0Z19vbGR0YWJsZTsKIAlUdXBsZXN0b3Jlc3RhdGUgKnRnX25l d3RhYmxlOwogCWNvbnN0IEJpdG1hcHNldCAqdGdfdXBkYXRlZGNvbHM7CisJRm9yUG9ydGlv bk9mU3RhdGUgKnRnX3RlbXBvcmFsOwogfSBUcmlnZ2VyRGF0YTsKIAogLyoKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmgKaW5kZXggNDQ0YTVmMGZkNTcuLjcxMWM4ZWVjNThiIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaApAQCAtNDIsMTIgKzQyLDE0IEBACiAjaW5jbHVkZSAic3RvcmFnZS9j b25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5j bHVkZSAidXRpbHMvcXVlcnllbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgInV0aWxzL3Jhbmdl dHlwZXMuaCIKICNpbmNsdWRlICJ1dGlscy9yZWx0cmlnZ2VyLmgiCiAjaW5jbHVkZSAidXRp bHMvc2hhcmVkdHVwbGVzdG9yZS5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBzaG90LmgiCiAj aW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXNv cnQuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXN0b3JlLmgiCisjaW5jbHVkZSAidXRpbHMv dHlwY2FjaGUuaCIKIAogc3RydWN0IFBsYW5TdGF0ZTsJCQkJLyogZm9yd2FyZCByZWZlcmVu Y2VzIGluIHRoaXMgZmlsZSAqLwogc3RydWN0IFBhcmFsbGVsSGFzaEpvaW5TdGF0ZTsKQEAg LTQyOCw2ICs0MzAsMjcgQEAgdHlwZWRlZiBzdHJ1Y3QgTWVyZ2VBY3Rpb25TdGF0ZQogCUV4 cHJTdGF0ZSAgKm1hc193aGVucXVhbDsJLyogV0hFTiBbTk9UXSBNQVRDSEVEIEFORCBjb25k aXRpb25zICovCiB9IE1lcmdlQWN0aW9uU3RhdGU7CiAKKy8qCisgKiBGb3JQb3J0aW9uT2ZT dGF0ZQorICoKKyAqIEV4ZWN1dG9yIHN0YXRlIG9mIGEgRk9SIFBPUlRJT04gT0Ygb3BlcmF0 aW9uLgorICovCit0eXBlZGVmIHN0cnVjdCBGb3JQb3J0aW9uT2ZTdGF0ZQoreworCU5vZGVU YWcJCXR5cGU7CisKKwljaGFyICAgKmZwX3JhbmdlTmFtZTsJCS8qIHRoZSBjb2x1bW4vUEVS SU9EIG5hbWVkIGluIEZPUiBQT1JUSU9OIE9GICovCisJT2lkCQlmcF9yYW5nZVR5cGU7CQkv KiB0aGUgdHlwZSBvZiB0aGUgRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbiAqLworCWJvb2wJ ZnBfaGFzUGVyaW9kOwkJLyogdHJ1ZSBpZmYgdGhpcyBpcyBhIFBFUklPRCBub3QgYSByYW5n ZSAqLworCWludAkJZnBfcmFuZ2VBdHRubzsJCS8qIHRoZSBhdHRubyBvZiB0aGUgcmFuZ2Ug Y29sdW1uIChvciAwIGZvciBhIFBFUklPRCkgKi8KKwlpbnQJCWZwX3BlcmlvZFN0YXJ0QXR0 bm87CS8qIHRoZSBhdHRubyBvZiB0aGUgUEVSSU9EIHN0YXJ0IGNvbHVtbiAob3IgMCBmb3Ig YSByYW5nZSkgKi8KKwlpbnQJCWZwX3BlcmlvZEVuZEF0dG5vOwkJLyogdGhlIGF0dG5vIG9m IHRoZSBQRVJJT0QgZW5kIGNvbHVtbiAob3IgMCBmb3IgYSByYW5nZSkgKi8KKwlEYXR1bQlm cF90YXJnZXRSYW5nZTsJCS8qIHRoZSByYW5nZSBmcm9tIEZPUiBQT1JUSU9OIE9GICovCisJ VHlwZUNhY2hlRW50cnkgKmZwX2xlZnRvdmVyc3R5cGNhY2hlOwkvKiB0eXBlIGNhY2hlIGVu dHJ5IG9mIHRoZSByYW5nZSAqLworCVR1cGxlVGFibGVTbG90ICpmcF9FeGlzdGluZzsJCS8q IHNsb3QgdG8gc3RvcmUgZXhpc3RpbmcgdGFyZ2V0IHR1cGxlIGluICovCisJVHVwbGVUYWJs ZVNsb3QgKmZwX0xlZnRvdmVyOwkJLyogc2xvdCB0byBzdG9yZSBsZWZ0b3ZlciAqLworfSBG b3JQb3J0aW9uT2ZTdGF0ZTsKKwogLyoKICAqIFJlc3VsdFJlbEluZm8KICAqCkBAIC01NDgs NiArNTcxLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVzdWx0UmVsSW5mbwogCUxpc3QJICAgKnJp X21hdGNoZWRNZXJnZUFjdGlvbjsKIAlMaXN0CSAgICpyaV9ub3RNYXRjaGVkTWVyZ2VBY3Rp b247CiAKKwkvKiBGT1IgUE9SVElPTiBPRiBldmFsdWF0aW9uIHN0YXRlICovCisJRm9yUG9y dGlvbk9mU3RhdGUgKnJpX2ZvclBvcnRpb25PZjsKKwogCS8qIHBhcnRpdGlvbiBjaGVjayBl eHByZXNzaW9uIHN0YXRlIChOVUxMIGlmIG5vdCBzZXQgdXAgeWV0KSAqLwogCUV4cHJTdGF0 ZSAgKnJpX1BhcnRpdGlvbkNoZWNrRXhwcjsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmlu ZGV4IDhmNGY4Y2U2YTc3Li5iZGFkYTZiNDI1MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aApAQCAtMTQxLDYgKzE0MSw5IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5CiAJICovCiAJaW50 CQkJcmVzdWx0UmVsYXRpb24gcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwog CisJLyogRk9SIFBPUlRJT04gT0YgY2xhdXNlIGZvciBVUERBVEUvREVMRVRFICovCisJRm9y UG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mOworCiAJLyogaGFzIGFnZ3JlZ2F0ZXMgaW4g dGxpc3Qgb3IgaGF2aW5nUXVhbCAqLwogCWJvb2wJCWhhc0FnZ3MgcGdfbm9kZV9hdHRyKHF1 ZXJ5X2p1bWJsZV9pZ25vcmUpOwogCS8qIGhhcyB3aW5kb3cgZnVuY3Rpb25zIGluIHRsaXN0 ICovCkBAIC0xNTMwLDYgKzE1MzMsMjEgQEAgdHlwZWRlZiBzdHJ1Y3QgUm93TWFya0NsYXVz ZQogCWJvb2wJCXB1c2hlZERvd247CQkvKiBwdXNoZWQgZG93biBmcm9tIGhpZ2hlciBxdWVy eSBsZXZlbD8gKi8KIH0gUm93TWFya0NsYXVzZTsKIAorLyoKKyAqIEZvclBvcnRpb25PZkNs YXVzZQorICoJCXJlcHJlc2VudGF0aW9uIG9mIEZPUiBQT1JUSU9OIE9GIDxwZXJpb2QtbmFt ZT4gRlJPTSA8dHM+IFRPIDx0ZT4KKyAqCQlvciBGT1IgUE9SVElPTiBPRiA8cGVyaW9kLW5h bWU+ICg8dGFyZ2V0PikKKyAqLwordHlwZWRlZiBzdHJ1Y3QgRm9yUG9ydGlvbk9mQ2xhdXNl Cit7CisJTm9kZVRhZwkJdHlwZTsKKwljaGFyCSAgICpyYW5nZV9uYW1lOworCWludAkJCWxv Y2F0aW9uOworCU5vZGUJICAgKnRhcmdldDsKKwlOb2RlCSAgICp0YXJnZXRfc3RhcnQ7CisJ Tm9kZQkgICAqdGFyZ2V0X2VuZDsKK30gRm9yUG9ydGlvbk9mQ2xhdXNlOworCiAvKgogICog V2l0aENsYXVzZSAtCiAgKgkgICByZXByZXNlbnRhdGlvbiBvZiBXSVRIIGNsYXVzZQpAQCAt MTg5MywxMiArMTkxMSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBJbnNlcnRTdG10CiAgKi8KIHR5 cGVkZWYgc3RydWN0IERlbGV0ZVN0bXQKIHsKLQlOb2RlVGFnCQl0eXBlOwotCVJhbmdlVmFy ICAgKnJlbGF0aW9uOwkJLyogcmVsYXRpb24gdG8gZGVsZXRlIGZyb20gKi8KLQlMaXN0CSAg ICp1c2luZ0NsYXVzZTsJLyogb3B0aW9uYWwgdXNpbmcgY2xhdXNlIGZvciBtb3JlIHRhYmxl cyAqLwotCU5vZGUJICAgKndoZXJlQ2xhdXNlOwkvKiBxdWFsaWZpY2F0aW9ucyAqLwotCUxp c3QJICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJu ICovCi0JV2l0aENsYXVzZSAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCisJTm9k ZVRhZwkJCQl0eXBlOworCVJhbmdlVmFyCQkgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0 byBkZWxldGUgZnJvbSAqLworCUZvclBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mOwkv KiBGT1IgUE9SVElPTiBPRiBjbGF1c2UgKi8KKwlMaXN0CQkJICAgKnVzaW5nQ2xhdXNlOwkv KiBvcHRpb25hbCB1c2luZyBjbGF1c2UgZm9yIG1vcmUgdGFibGVzICovCisJTm9kZQkJCSAg ICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8KKwlMaXN0CQkJICAgKnJldHVy bmluZ0xpc3Q7CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCisJV2l0aENs YXVzZQkJICAgKndpdGhDbGF1c2U7CQkvKiBXSVRIIGNsYXVzZSAqLwogfSBEZWxldGVTdG10 OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xOTA3LDEzICsxOTI2LDE0IEBA IHR5cGVkZWYgc3RydWN0IERlbGV0ZVN0bXQKICAqLwogdHlwZWRlZiBzdHJ1Y3QgVXBkYXRl U3RtdAogewotCU5vZGVUYWcJCXR5cGU7Ci0JUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiBy ZWxhdGlvbiB0byB1cGRhdGUgKi8KLQlMaXN0CSAgICp0YXJnZXRMaXN0OwkJLyogdGhlIHRh cmdldCBsaXN0IChvZiBSZXNUYXJnZXQpICovCi0JTm9kZQkgICAqd2hlcmVDbGF1c2U7CS8q IHF1YWxpZmljYXRpb25zICovCi0JTGlzdAkgICAqZnJvbUNsYXVzZTsJCS8qIG9wdGlvbmFs IGZyb20gY2xhdXNlIGZvciBtb3JlIHRhYmxlcyAqLwotCUxpc3QJICAgKnJldHVybmluZ0xp c3Q7CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCi0JV2l0aENsYXVzZSAq d2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCisJTm9kZVRhZwkJCQl0eXBlOworCVJh bmdlVmFyCQkgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byB1cGRhdGUgKi8KKwlGb3JQ b3J0aW9uT2ZDbGF1c2UgKmZvclBvcnRpb25PZjsJLyogRk9SIFBPUlRJT04gT0YgY2xhdXNl ICovCisJTGlzdAkJCSAgICp0YXJnZXRMaXN0OwkJLyogdGhlIHRhcmdldCBsaXN0IChvZiBS ZXNUYXJnZXQpICovCisJTm9kZQkJCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlv bnMgKi8KKwlMaXN0CQkJICAgKmZyb21DbGF1c2U7CQkvKiBvcHRpb25hbCBmcm9tIGNsYXVz ZSBmb3IgbW9yZSB0YWJsZXMgKi8KKwlMaXN0CQkJICAgKnJldHVybmluZ0xpc3Q7CS8qIGxp c3Qgb2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCisJV2l0aENsYXVzZQkJICAgKndpdGhD bGF1c2U7CQkvKiBXSVRIIGNsYXVzZSAqLwogfSBVcGRhdGVTdG10OwogCiAvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IDUzNDY5MmJlZTE4 Li4yY2Q4YzM4OTYyYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTIzNjQsNiArMjM2 NCw3IEBAIHR5cGVkZWYgc3RydWN0IE1vZGlmeVRhYmxlUGF0aAogCUxpc3QJICAgKnJldHVy bmluZ0xpc3RzOyAvKiBwZXItdGFyZ2V0LXRhYmxlIFJFVFVSTklORyB0bGlzdHMgKi8KIAlM aXN0CSAgICpyb3dNYXJrczsJCS8qIFBsYW5Sb3dNYXJrcyAobm9uLWxvY2tpbmcgb25seSkg Ki8KIAlPbkNvbmZsaWN0RXhwciAqb25jb25mbGljdDsgLyogT04gQ09ORkxJQ1QgY2xhdXNl LCBvciBOVUxMICovCisJRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mOwkvKiBGT1Ig UE9SVElPTiBPRiBjbGF1c2UgZm9yIFVQREFURS9ERUxFVEUgKi8KIAlpbnQJCQllcHFQYXJh bTsJCS8qIElEIG9mIFBhcmFtIGZvciBFdmFsUGxhblF1YWwgcmUtZXZhbCAqLwogCUxpc3QJ ICAgKm1lcmdlQWN0aW9uTGlzdHM7CS8qIHBlci10YXJnZXQtdGFibGUgbGlzdHMgb2YgYWN0 aW9ucyBmb3IKIAkJCQkJCQkJCSAqIE1FUkdFICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmlu ZGV4IGI0ZWY2YmM0NGM5Li45Y2I5YjE4YTRjMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgK QEAgLTI0Myw2ICsyNDMsNyBAQCB0eXBlZGVmIHN0cnVjdCBNb2RpZnlUYWJsZQogCUxpc3QJ ICAgKnJvd01hcmtzOwkJLyogUGxhblJvd01hcmtzIChub24tbG9ja2luZyBvbmx5KSAqLwog CWludAkJCWVwcVBhcmFtOwkJLyogSUQgb2YgUGFyYW0gZm9yIEV2YWxQbGFuUXVhbCByZS1l dmFsICovCiAJT25Db25mbGljdEFjdGlvbiBvbkNvbmZsaWN0QWN0aW9uOwkvKiBPTiBDT05G TElDVCBhY3Rpb24gKi8KKwlOb2RlCSAgICpmb3JQb3J0aW9uT2Y7CS8qIEZPUiBQT1JUSU9O IE9GIGNsYXVzZSBmb3IgVVBEQVRFL0RFTEVURSAqLwogCUxpc3QJICAgKmFyYml0ZXJJbmRl eGVzOyAvKiBMaXN0IG9mIE9OIENPTkZMSUNUIGFyYml0ZXIgaW5kZXggT0lEcyAgKi8KIAlM aXN0CSAgICpvbkNvbmZsaWN0U2V0OwkvKiBJTlNFUlQgT04gQ09ORkxJQ1QgRE8gVVBEQVRF IHRhcmdldGxpc3QgKi8KIAlMaXN0CSAgICpvbkNvbmZsaWN0Q29sczsgLyogdGFyZ2V0IGNv bHVtbiBudW1iZXJzIGZvciBvbkNvbmZsaWN0U2V0ICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9ub2Rlcy9wcmltbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5o CmluZGV4IDRhMTU0NjA2ZDJiLi5lYTY3MDFkODNjYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVz LmgKQEAgLTIwNjgsNCArMjA2OCwzMCBAQCB0eXBlZGVmIHN0cnVjdCBPbkNvbmZsaWN0RXhw cgogCUxpc3QJICAgKmV4Y2xSZWxUbGlzdDsJLyogdGxpc3Qgb2YgdGhlIEVYQ0xVREVEIHBz ZXVkbyByZWxhdGlvbiAqLwogfSBPbkNvbmZsaWN0RXhwcjsKIAorLyotLS0tLS0tLS0tCisg KiBGb3JQb3J0aW9uT2ZFeHByIC0gcmVwcmVzZW50cyBhIEZPUiBQT1JUSU9OIE9GIC4uLiBl eHByZXNzaW9uCisgKgorICogV2Ugc2V0IHVwIGFuIGV4cHJlc3Npb24gdG8gbWFrZSBhIHJh bmdlIGZyb20gdGhlIEZST00vVE8gYm91bmRzLAorICogc28gdGhhdCB3ZSBjYW4gdXNlIHJh bmdlIG9wZXJhdG9ycyB3aXRoIGl0LgorICoKKyAqIFRoZW4gd2Ugc2V0IHVwIGFuIG92ZXJs YXBzIGV4cHJlc3Npb24gYmV0d2VlbiB0aGF0IGFuZCB0aGUgcmFuZ2UgY29sdW1uLAorICog c28gdGhhdCB3ZSBjYW4gZmluZCB0aGUgcm93cyB3ZSBuZWVkIHRvIHVwZGF0ZS9kZWxldGUu CisgKgorICogSW4gdGhlIGV4ZWN1dG9yIHdlJ2xsIGFsc28gYnVpbGQgYW4gaW50ZXJzZWN0 IGV4cHJlc3Npb24gYmV0d2VlbiB0aGUKKyAqIHRhcmdldGVkIHJhbmdlIGFuZCB0aGUgcmFu Z2UgY29sdW1uLCBzbyB0aGF0IHdlIGNhbiB1cGRhdGUgdGhlIHN0YXJ0L2VuZAorICogYm91 bmRzIG9mIHRoZSBVUERBVEUnZCByZWNvcmQuCisgKi0tLS0tLS0tLS0KKyAqLwordHlwZWRl ZiBzdHJ1Y3QgRm9yUG9ydGlvbk9mRXhwcgoreworCU5vZGVUYWcJCXR5cGU7CisJVmFyCQkg ICAqcmFuZ2VWYXI7CQkJLyogUmFuZ2UgY29sdW1uICovCisJY2hhcgkgICAqcmFuZ2VfbmFt ZTsJCQkvKiBSYW5nZSBuYW1lICovCisJTm9kZQkgICAqdGFyZ2V0UmFuZ2U7CQkvKiBGT1Ig UE9SVElPTiBPRiBib3VuZHMgYXMgYSByYW5nZSAqLworCU9pZAkJCXJhbmdlVHlwZTsJCQkv KiB0eXBlIG9mIHRhcmdldFJhbmdlICovCisJTm9kZQkgICAqb3ZlcmxhcHNFeHByOwkJLyog cmFuZ2UgJiYgdGFyZ2V0UmFuZ2UgKi8KKwlMaXN0CSAgICpyYW5nZVRhcmdldExpc3Q7CS8q IExpc3Qgb2YgVGFyZ2V0RW50cnlzIHRvIHNldCB0aGUgdGltZSBjb2x1bW4ocykgKi8KKwlP aWQJCQl3aXRob3V0UG9ydGlvblByb2M7CS8qIHByb2MgZm9yIG9sZF9yYW5nZSBALSB0YXJn ZXRfcmFuZ2UgKi8KK30gRm9yUG9ydGlvbk9mRXhwcjsKKwogI2VuZGlmCQkJCQkJCS8qIFBS SU1OT0RFU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5v ZGUuaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCmluZGV4IGM0M2Q5N2I0 OGE2Li4yMDE0Y2YyMzIzNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Bh dGhub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKQEAgLTI4 Myw3ICsyODMsOCBAQCBleHRlcm4gTW9kaWZ5VGFibGVQYXRoICpjcmVhdGVfbW9kaWZ5dGFi bGVfcGF0aChQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJCUxpc3QgKnVwZGF0ZUNv bG5vc0xpc3RzLAogCQkJCQkJCQkJCQkJTGlzdCAqd2l0aENoZWNrT3B0aW9uTGlzdHMsIExp c3QgKnJldHVybmluZ0xpc3RzLAogCQkJCQkJCQkJCQkJTGlzdCAqcm93TWFya3MsIE9uQ29u ZmxpY3RFeHByICpvbmNvbmZsaWN0LAotCQkJCQkJCQkJCQkJTGlzdCAqbWVyZ2VBY3Rpb25M aXN0cywgaW50IGVwcVBhcmFtKTsKKwkJCQkJCQkJCQkJCUxpc3QgKm1lcmdlQWN0aW9uTGlz dHMsCisJCQkJCQkJCQkJCQlGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2YsIGludCBl cHFQYXJhbSk7CiBleHRlcm4gTGltaXRQYXRoICpjcmVhdGVfbGltaXRfcGF0aChQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJCQkJUGF0aCAqc3VicGF0aCwK IAkJCQkJCQkJCU5vZGUgKmxpbWl0T2Zmc2V0LCBOb2RlICpsaW1pdENvdW50LApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaCBiL3NyYy9pbmNsdWRlL3BhcnNl ci9hbmFseXplLmgKaW5kZXggNWVjZGQxMDk0NjYuLmU1MTJmNGIyNGVhIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6ZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNl ci9hbmFseXplLmgKQEAgLTQzLDcgKzQzLDggQEAgZXh0ZXJuIExpc3QgKnRyYW5zZm9ybUlu c2VydFJvdyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmV4cHJsaXN0LAogCQkJCQkJCQlM aXN0ICpzdG10Y29scywgTGlzdCAqaWNvbHVtbnMsIExpc3QgKmF0dHJub3MsCiAJCQkJCQkJ CWJvb2wgc3RyaXBfaW5kaXJlY3Rpb24pOwogZXh0ZXJuIExpc3QgKnRyYW5zZm9ybVVwZGF0 ZVRhcmdldExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLAotCQkJCQkJCQkJICAgTGlzdCAqb3Jp Z1RsaXN0KTsKKwkJCQkJCQkJCSAgIExpc3QgKm9yaWdUbGlzdCwKKwkJCQkJCQkJCSAgIEZv clBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZik7CiBleHRlcm4gUXVlcnkgKnRyYW5zZm9y bVRvcExldmVsU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFJhd1N0bXQgKnBhcnNlVHJlZSk7 CiBleHRlcm4gUXVlcnkgKnRyYW5zZm9ybVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2Rl ICpwYXJzZVRyZWUpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0 LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggMWQzZjdiZDM3ZjIuLjcw N2E1MTczMzlhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysr IGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0zMzAsNiArMzMwLDcgQEAgUEdf S0VZV09SRCgicGVyaW9kIiwgUEVSSU9ELCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgicGxhY2luZyIsIFBMQUNJTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwbGFucyIsIFBMQU5TLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwb2xpY3kiLCBQT0xJQ1ksIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInBvcnRpb24iLCBQT1JUSU9O LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwb3NpdGlv biIsIFBPU0lUSU9OLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgicHJlY2VkaW5nIiwgUFJFQ0VESU5HLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFC RUwpCiBQR19LRVlXT1JEKCJwcmVjaXNpb24iLCBQUkVDSVNJT04sIENPTF9OQU1FX0tFWVdP UkQsIEFTX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25v ZGUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKaW5kZXggOTlkNjUxNTcz NjUuLjVlNzQwZmVmODgxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf bm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKQEAgLTU2LDYg KzU2LDcgQEAgdHlwZWRlZiBlbnVtIFBhcnNlRXhwcktpbmQKIAlFWFBSX0tJTkRfVVBEQVRF X1NPVVJDRSwJLyogVVBEQVRFIGFzc2lnbm1lbnQgc291cmNlIGl0ZW0gKi8KIAlFWFBSX0tJ TkRfVVBEQVRFX1RBUkdFVCwJLyogVVBEQVRFIGFzc2lnbm1lbnQgdGFyZ2V0IGl0ZW0gKi8K IAlFWFBSX0tJTkRfTUVSR0VfV0hFTiwJCS8qIE1FUkdFIFdIRU4gW05PVF0gTUFUQ0hFRCBj b25kaXRpb24gKi8KKwlFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT04sCS8qIFVQREFURSBGT1Ig UE9SVElPTiBPRiBpdGVtICovCiAJRVhQUl9LSU5EX0dST1VQX0JZLAkJCS8qIEdST1VQIEJZ ICovCiAJRVhQUl9LSU5EX09SREVSX0JZLAkJCS8qIE9SREVSIEJZICovCiAJRVhQUl9LSU5E X0RJU1RJTkNUX09OLAkJLyogRElTVElOQ1QgT04gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL2xzeXNjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgK aW5kZXggMTMzOTM4MmY5MWQuLjk0ODc4NzNhZDQ4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS91dGlscy9sc3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUu aApAQCAtMTQzLDYgKzE0Myw4IEBAIGV4dGVybiBjaGFyIGdldF9yZWxfcGVyc2lzdGVuY2Uo T2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9ybV9mcm9tc3FsKE9pZCB0eXBp ZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJuIE9pZAlnZXRfdHJhbnNm b3JtX3Rvc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0 ZXJuIGJvb2wgZ2V0X3R5cGlzZGVmaW5lZChPaWQgdHlwaWQpOworZXh0ZXJuIGNoYXIgKmdl dF90eXBuYW1lKE9pZCB0eXBpZCk7CitleHRlcm4gYm9vbCBnZXRfdHlwbmFtZV9hbmRfbmFt ZXNwYWNlKE9pZCB0eXBpZCwgY2hhciAqKnR5cG5hbWUsIGNoYXIgKip0eXBuYW1lc3BhY2Up OwogZXh0ZXJuIGludDE2IGdldF90eXBsZW4oT2lkIHR5cGlkKTsKIGV4dGVybiBib29sIGdl dF90eXBieXZhbChPaWQgdHlwaWQpOwogZXh0ZXJuIHZvaWQgZ2V0X3R5cGxlbmJ5dmFsKE9p ZCB0eXBpZCwgaW50MTYgKnR5cGxlbiwgYm9vbCAqdHlwYnl2YWwpOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWJjOGYzOWUwNjAKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dApAQCAtMCww ICsxLDY1MiBAQAorLS0gVGVzdHMgZm9yIFVQREFURS9ERUxFVEUgRk9SIFBPUlRJT04gT0YK Ky0tIFdvcmtzIG9uIG5vbi1QSyBjb2x1bW5zCitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25f b2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWRfYXQgdHNyYW5nZSwKKyAgbmFt ZSB0ZXh0IE5PVCBOVUxMCispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdCBW QUxVRVMKKygnWzEsMV0nLCAnWzIwMTgtMDEtMDIsMjAyMC0wMS0wMSknLCAnb25lJyk7CitV UERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOC0wMS0xNScgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdmb28nOworREVM RVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOS0wMS0xNScgVE8gTlVMTDsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25f b2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAg ICAgICAgICAgICAgICAgICAgICAgfCBuYW1lIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tCisgWzEs MikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAg MjAxOSIpIHwgZm9vCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1v biBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25lCisgWzEsMikgfCBbIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAxOSIsIlR1ZSBKYW4gMTUgMDA6MDA6MDAgMjAxOSIpIHwgb25lCisoMyBy b3dzKQorCistLSBXb3JrcyBvbiBtb3JlIHRoYW4gb25lIHJhbmdlCitEUk9QIFRBQkxFIGZv cl9wb3J0aW9uX29mX3Rlc3Q7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAo CisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWQxX2F0IHRzcmFuZ2UsCisgIHZhbGlkMl9hdCB0 c3JhbmdlLAorICBuYW1lIHRleHQgTk9UIE5VTEwKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9y dGlvbl9vZl90ZXN0IFZBTFVFUworKCdbMSwxXScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAz KScsICdbMjAxNS0wMS0wMSwyMDI1LTAxLTAxKScsICdvbmUnKTsKK1VQREFURSBmb3JfcG9y dGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZDFfYXQgRlJPTSAnMjAxOC0wMS0x NScgVE8gTlVMTAorU0VUIG5hbWUgPSAnZm9vJzsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRp b25fb2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQxX2F0 ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlk Ml9hdCAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0KKyBbMSwyKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEZlYiAw MyAwMDowMDowMCAyMDE4IikgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwgZm9vCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6 MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAx IDAwOjAwOjAwIDIwMTUiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKSB8IG9uZQorKDIg cm93cykKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkMl9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyBOVUxMCitTRVQgbmFtZSA9ICdiYXInOwor U0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwgICAgICAgICAg ICAgICAgICAgICAgICB2YWxpZDFfYXQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWQyX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCBu YW1lIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAw OjAwOjAwIDIwMTgiLCJTYXQgRmViIDAzIDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAx NSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBiYXIKKyBb MSwyKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEZlYiAwMyAwMDowMDow MCAyMDE4IikgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6 MDA6MDAgMjAxOCIpIHwgZm9vCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAx OCIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAw IDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKSB8IGJhcgorIFsxLDIpIHwgWyJU dWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8 IFsiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4 IikgfCBvbmUKKyg0IHJvd3MpCisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkMV9hdCBGUk9NICcyMDE4LTAxLTIwJyBUTyBOVUxMOwor U0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwgICAgICAgICAg ICAgICAgICAgICAgICB2YWxpZDFfYXQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWQyX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCBu YW1lIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAw OjAwOjAwIDIwMTgiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAx NSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBiYXIKKyBb MSwyKSB8IFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDow MCAyMDE4IikgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6 MDA6MDAgMjAxOCIpIHwgb25lCisgWzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAx OCIsIlNhdCBKYW4gMjAgMDA6MDA6MDAgMjAxOCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAw IDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKSB8IGJhcgorIFsxLDIpIHwgWyJN b24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8 IFsiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4 IikgfCBmb28KKyg0IHJvd3MpCisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkMl9hdCBGUk9NICcyMDE4LTAxLTIwJyBUTyBOVUxMOwor U0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwgICAgICAgICAg ICAgICAgICAgICAgICB2YWxpZDFfYXQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWQyX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCBu YW1lIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAw OjAwOjAwIDIwMTgiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAw MSAwMDowMDowMCAyMDE1IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBvbmUKKyBb MSwyKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEphbiAyMCAwMDowMDow MCAyMDE4IikgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6 MDA6MDAgMjAxOCIpIHwgZm9vCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAx OCIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAw IDIwMTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8IGJhcgorIFsxLDIpIHwgWyJN b24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8 IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEphbiAyMCAwMDowMDowMCAyMDE4 IikgfCBiYXIKKyg0IHJvd3MpCisKKy0tIFRlc3Qgd2l0aCBOVUxMcyBpbiB0aGUgc2NhbGFy L3JhbmdlIGtleSBjb2x1bW5zLgorLS0gVGhpcyB3b24ndCBoYXBwZW4gaWYgdGhlcmUgaXMg YSBQUklNQVJZIEtFWSBvciBVTklRVUUgY29uc3RyYWludAorLS0gYnV0IEZPUiBQT1JUSU9O IE9GIHNob3VsZG4ndCByZXF1aXJlIHRoYXQuCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29m X3Rlc3Q7CitDUkVBVEUgVU5MT0dHRUQgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisg IGlkIGludDRyYW5nZSwKKyAgdmFsaWRfYXQgdHNyYW5nZSwKKyAgbmFtZSB0ZXh0CispOwor SU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdCBWQUxVRVMKKyAgKCdbMSwxXScsIE5V TEwsICcxIG51bGwnKSwKKyAgKCdbMSwxXScsICcoLCknLCAnMSB1bmJvdW5kZWQnKSwKKyAg KCdbMSwxXScsICdlbXB0eScsICcxIGVtcHR5JyksCisgIChOVUxMLCBOVUxMLCBOVUxMKSwK KyAgKE5VTEwsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOS0wMS0wMScpLCAnbnVsbCBr ZXknKTsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCisgIFNFVCBuYW1lID0gJ05VTEwgdG8gTlVMTCc7 CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisgIGlkICAgfCAgICAgICAg ICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg IG5hbWUgICAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBbMSwyKSB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAx IG51bGwKKyBbMSwyKSB8IGVtcHR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAxIGVtcHR5CisgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgCisgWzEsMikgfCAo LCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgTlVMTCB0byBOVUxMCisgICAgICAgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgTlVMTCB0byBOVUxMCisoNSByb3dzKQor CitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CitDUkVBVEUgVEFCTEUgZm9yX3Bv cnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSBOT1QgTlVMTCwKKyAgdmFsaWRfYXQg dHNyYW5nZSBOT1QgTlVMTCwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMLAorCUNPTlNUUkFJTlQg Zm9yX3BvcnRpb25fb2ZfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QKK1ZBTFVFUwor KCdbMSwxXScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdvbmUnKSwKKygnWzEsMV0n LCAnWzIwMTgtMDItMDMsMjAxOC0wMy0wMyknLCAnb25lJyksCisoJ1sxLDFdJywgJ1syMDE4 LTAzLTAzLDIwMTgtMDQtMDQpJywgJ29uZScpLAorKCdbMiwyXScsICdbMjAxOC0wMS0wMSwy MDE4LTAxLTA1KScsICd0d28nKSwKKygnWzMsM10nLCAnWzIwMTgtMDEtMDEsKScsICd0aHJl ZScpLAorKCdbNCw0XScsICcoLDIwMTgtMDQtMDEpJywgJ2ZvdXInKSwKKygnWzUsNV0nLCAn KCwpJywgJ2ZpdmUnKQorOworLS0KKy0tIFVQREFURSB0ZXN0cworLS0KKy0tIFNldHRpbmcg d2l0aCBhIG1pc3NpbmcgY29sdW1uIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxM CitTRVQgbmFtZSA9ICdmb28nCitXSEVSRSBpZCA9ICdbNSw1XSc7CitFUlJPUjogIGNvbHVt biBvciBwZXJpb2QgImludmFsaWRfYXQiIG9mIHJlbGF0aW9uICJmb3JfcG9ydGlvbl9vZl90 ZXN0IiBkb2VzIG5vdCBleGlzdAorTElORSAyOiBGT1IgUE9SVElPTiBPRiBpbnZhbGlkX2F0 IEZST00gJzIwMTgtMDYtMDEnIFRPIE5VTEwKKyAgICAgICAgICAgICAgICAgICAgICAgXgor LS0gU2V0dGluZyB0aGUgcmFuZ2UgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCitT RVQgdmFsaWRfYXQgPSAnWzE5OTAtMDEtMDEsMTk5OS0wMS0wMSknCitXSEVSRSBpZCA9ICdb NSw1XSc7CitFUlJPUjogIGNhbid0IGRpcmVjdGx5IGFzc2lnbiB0byAidmFsaWRfYXQiIGlu IGEgRk9SIFBPUlRJT04gT0YgdXBkYXRlCitMSU5FIDM6IFNFVCB2YWxpZF9hdCA9ICdbMTk5 MC0wMS0wMSwxOTk5LTAxLTAxKScKKyAgICAgICAgICAgIF4KKy0tIFRoZSB3cm9uZyB0eXBl IGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAxIFRPIDQKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMywz XSc7CitFUlJPUjogIGZ1bmN0aW9uIHBnX2NhdGFsb2cudHNyYW5nZShpbnRlZ2VyLCBpbnRl Z2VyKSBkb2VzIG5vdCBleGlzdAorTElORSAyOiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NIDEgVE8gNAorICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgTm8gZnVuY3Rp b24gbWF0Y2hlcyB0aGUgZ2l2ZW4gbmFtZSBhbmQgYXJndW1lbnQgdHlwZXMuIFlvdSBtaWdo dCBuZWVkIHRvIGFkZCBleHBsaWNpdCB0eXBlIGNhc3RzLgorLS0gU2V0dGluZyB3aXRoIHRp bWVzdGFtcHMgcmV2ZXJzZWQgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAxOC0wMS0w MScKK1NFVCBuYW1lID0gJ3RocmVlXjEnCitXSEVSRSBpZCA9ICdbMywzXSc7CitFUlJPUjog IHJhbmdlIGxvd2VyIGJvdW5kIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJhbmdl IHVwcGVyIGJvdW5kCistLSBTZXR0aW5nIHdpdGggYSBzdWJxdWVyeSBmYWlscworVVBEQVRF IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gKFNF TEVDVCAnMjAxOC0wMS0wMScpIFRPICcyMDE4LTA2LTAxJworU0VUIG5hbWUgPSAnbm9wZScK K1dIRVJFIGlkID0gJ1szLDNdJzsKK0VSUk9SOiAgY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBG T1IgUE9SVElPTiBPRiBleHByZXNzaW9uCitMSU5FIDI6IEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gKFNFTEVDVCAnMjAxOC0wMS0wMScpIFRPICcyMDE4LS4uLgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFNldHRpbmcgd2l0aCBhIGNvbHVt biBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gbG93ZXIodmFsaWRfYXQpIFRPIE5VTEwKK1NFVCBuYW1lID0gJ25vcGUn CitXSEVSRSBpZCA9ICdbMywzXSc7CitFUlJPUjogIGNhbm5vdCB1c2UgY29sdW1uIHJlZmVy ZW5jZSBpbiBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9uCitMSU5FIDI6IEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gbG93ZXIodmFsaWRfYXQpIFRPIE5VTEwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBTZXR0aW5nIHdpdGggdGlt ZXN0YW1wcyBlcXVhbCBkb2VzIG5vdGhpbmcKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyAnMjAxOC0w NC0wMScKK1NFVCBuYW1lID0gJ3RocmVlXjAnCitXSEVSRSBpZCA9ICdbMywzXSc7CistLSBV cGRhdGluZyBhIGZpbml0ZS9vcGVuIHBvcnRpb24gd2l0aCBhIGZpbml0ZS9vcGVuIHRhcmdl dAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTgtMDYtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gJ3RocmVlXjEnCitXSEVS RSBpZCA9ICdbMywzXSc7CistLSBVcGRhdGluZyBhIGZpbml0ZS9vcGVuIHBvcnRpb24gd2l0 aCBhbiBvcGVuL2Zpbml0ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gJzIwMTgtMDMtMDEnCitTRVQg bmFtZSA9ICd0aHJlZV4yJworV0hFUkUgaWQgPSAnWzMsM10nOworLS0gVXBkYXRpbmcgYW4g b3Blbi9maW5pdGUgcG9ydGlvbiB3aXRoIGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRF IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVM TCBUTyAnMjAxOC0wMi0wMScKK1NFVCBuYW1lID0gJ2ZvdXJeMScKK1dIRVJFIGlkID0gJ1s0 LDRdJzsKKy0tIFVwZGF0aW5nIGFuIG9wZW4vZmluaXRlIHBvcnRpb24gd2l0aCBhIGZpbml0 ZS9vcGVuIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTctMDEtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gJ2Zv dXJeMicKK1dIRVJFIGlkID0gJ1s0LDRdJzsKKy0tIFVwZGF0aW5nIGEgZmluaXRlL2Zpbml0 ZSBwb3J0aW9uIHdpdGggYW4gZXhhY3QgZml0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gJzIwMTgt MDItMDEnCitTRVQgbmFtZSA9ICdmb3VyXjMnCitXSEVSRSBpZCA9ICdbNCw0XSc7CistLSBV cGRhdGluZyBhbiBlbmNsb3NlZCBzcGFuCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1NFVCBuYW1lID0g J3R3b14yJworV0hFUkUgaWQgPSAnWzIsMl0nOworLS0gVXBkYXRpbmcgYW4gb3Blbi9vcGVu IHBvcnRpb24gd2l0aCBhIGZpbml0ZS9maW5pdGUgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRp b25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMScg VE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdmaXZlXjInCitXSEVSRSBpZCA9ICdbNSw1 XSc7CistLSBVcGRhdGluZyBhbiBlbmNsb3NlZCBzcGFuIHdpdGggc2VwYXJhdGUgcHJvdHJ1 ZGluZyBzcGFucworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTctMDEtMDEnIFRPICcyMDIwLTAxLTAxJworU0VUIG5hbWUg PSAnZml2ZV4zJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gVXBkYXRpbmcgbXVsdGlwbGUg ZW5jbG9zZWQgc3BhbnMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gTlVMTAorU0VUIG5hbWUgPSAnb25lXjInCitX SEVSRSBpZCA9ICdbMSwxXSc7CistLSBVcGRhdGluZyB3aXRoIGEgc2hpZnQvcmVkdWNlIGNv bmZsaWN0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQKKyAgRlJPTSAnMjAxOC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcxJyBI T1VSIFRPIE1JTlVURQorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV4zJwor V0hFUkUgaWQgPSAnWzEsMV0nOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJ TlRFUlZBTCAnMicgSE9VUgorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV40 JworV0hFUkUgaWQgPSAnWzEsMV0nOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVh ciAiJzIwMTktMDEtMDEnIgorTElORSA0OiAgIFRPICcyMDE5LTAxLTAxJworICAgICAgICAg ICAgIF4KK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdAorICBGUk9NICgnMjAxOC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcyJyBI T1VSKQorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV40JworV0hFUkUgaWQg PSAnWzEsMV0nOworLS0gV2l0aCBhIGRpcmVjdCB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCAodHNyYW5nZSgnMjAxOC0wMy0x MCcsICcyMDE4LTAzLTE3JykpCitTRVQgbmFtZSA9ICdvbmVeNScKK1dIRVJFIGlkID0gJ1sx LDFdJzsKKy0tIFVwZGF0aW5nIHRoZSBub24tcmFuZ2UgcGFydCBvZiB0aGUgUEs6CitVUERB VEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOC0wMi0xNScgVE8gTlVMTAorU0VUIGlkID0gJ1s2LDZdJworV0hFUkUgaWQgPSAnWzEs MV0nOworLS0gVVBEQVRFIHdpdGggbm8gV0hFUkUgY2xhdXNlCitVUERBVEUgZm9yX3BvcnRp b25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAzMC0wMS0wMScg VE8gTlVMTAorU0VUIG5hbWUgPSBuYW1lIHx8ICcqJzsKK1NFTEVDVCAqIEZST00gZm9yX3Bv cnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAg ICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBu YW1lICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIg MDA6MDA6MDAgMjAxOCIsIlNhdCBGZWIgMDMgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjIKKyBb MSwyKSB8IFsiU2F0IEZlYiAwMyAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAxNSAwMDowMDow MCAyMDE4IikgfCBvbmVeMgorIFsyLDMpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgi LCJGcmkgSmFuIDA1IDAwOjAwOjAwIDIwMTgiKSB8IHR3b14yCisgWzMsNCkgfCBbIk1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgdGhy ZWVeMgorIFszLDQpIHwgWyJUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSnVuIDAx IDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlCisgWzMsNCkgfCBbIkZyaSBKdW4gMDEgMDA6MDA6 MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAzMCIpIHwgdGhyZWVeMQorIFszLDQp IHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiLCkgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IHRocmVlXjEqCisgWzQsNSkgfCAoLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTci KSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZm91cl4xCisgWzQsNSkgfCBbIlN1biBK YW4gMDEgMDA6MDA6MDAgMjAxNyIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgZm91 cl4zCisgWzQsNSkgfCBbIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEg MDA6MDA6MDAgMjAxOCIpIHwgZm91cl4yCisgWzUsNikgfCAoLCJTdW4gSmFuIDAxIDAwOjAw OjAwIDIwMTciKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZml2ZQorIFs1LDYpIHwg WyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciLCJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgi KSB8IGZpdmVeMworIFs1LDYpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUg SmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IGZpdmVeMworIFs1LDYpIHwgWyJUdWUgSmFuIDAx IDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IGZpdmVeMwor IFs1LDYpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJUdWUgSmFuIDAxIDAwOjAw OjAwIDIwMzAiKSB8IGZpdmUKKyBbNSw2KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDMw IiwpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmaXZlKgorIFs2LDcpIHwgWyJUaHUg RmViIDE1IDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDA4OjAxOjAwIDIwMTgiKSB8IG9u ZV4yCisgWzYsNykgfCBbIlRodSBNYXIgMDEgMDg6MDE6MDAgMjAxOCIsIlRodSBNYXIgMDEg MTA6MDA6MDAgMjAxOCIpIHwgb25lXjMKKyBbNiw3KSB8IFsiVGh1IE1hciAwMSAxMDowMDow MCAyMDE4IiwiU2F0IE1hciAwMyAwMDowMDowMCAyMDE4IikgfCBvbmVeNAorIFs2LDcpIHwg WyJTYXQgTWFyIDAzIDAwOjAwOjAwIDIwMTgiLCJTYXQgTWFyIDEwIDAwOjAwOjAwIDIwMTgi KSB8IG9uZV40CisgWzYsNykgfCBbIlNhdCBNYXIgMTAgMDA6MDA6MDAgMjAxOCIsIlNhdCBN YXIgMTcgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjUKKyBbNiw3KSB8IFsiU2F0IE1hciAxNyAw MDowMDowMCAyMDE4IiwiV2VkIEFwciAwNCAwMDowMDowMCAyMDE4IikgfCBvbmVeNAorKDIy IHJvd3MpCisKKy0tCistLSBERUxFVEUgdGVzdHMKKy0tCistLSBEZWxldGluZyB3aXRoIGEg bWlzc2luZyBjb2x1bW4gZmFpbHMKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAor V0hFUkUgaWQgPSAnWzUsNV0nOworRVJST1I6ICBjb2x1bW4gb3IgcGVyaW9kICJpbnZhbGlk X2F0IiBvZiByZWxhdGlvbiAiZm9yX3BvcnRpb25fb2ZfdGVzdCIgZG9lcyBub3QgZXhpc3QK K0xJTkUgMjogRk9SIFBPUlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBU TyBOVUxMCisgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIERlbGV0aW5nIHdpdGggdGlt ZXN0YW1wcyByZXZlcnNlZCBmYWlscworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgt MDEtMDEnCitXSEVSRSBpZCA9ICdbMywzXSc7CitFUlJPUjogIHJhbmdlIGxvd2VyIGJvdW5k IG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJhbmdlIHVwcGVyIGJvdW5kCistLSBE ZWxldGluZyB3aXRoIHRpbWVzdGFtcHMgZXF1YWwgZG9lcyBub3RoaW5nCitERUxFVEUgRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE4LTA0LTAxJyBUTyAnMjAxOC0wNC0wMScKK1dIRVJFIGlkID0gJ1szLDNdJzsKKy0tIERl bGV0aW5nIHdpdGggYSBjbG9zZWQvY2xvc2VkIHRhcmdldAorREVMRVRFIEZST00gZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0w MScgVE8gJzIwMjAtMDYtMDEnCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBEZWxldGluZyB3 aXRoIGEgY2xvc2VkL29wZW4gdGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyBOVUxM CitXSEVSRSBpZCA9ICdbMywzXSc7CistLSBEZWxldGluZyB3aXRoIGFuIG9wZW4vY2xvc2Vk IHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPICcyMDE4LTAyLTA4JworV0hFUkUgaWQgPSAnWzEs MV0nOworLS0gRGVsZXRpbmcgd2l0aCBhbiBvcGVuL29wZW4gdGFyZ2V0CitERUxFVEUgRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5V TEwgVE8gTlVMTAorV0hFUkUgaWQgPSAnWzYsNl0nOworLS0gREVMRVRFIHdpdGggbm8gV0hF UkUgY2xhdXNlCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDI1LTAxLTAxJyBUTyBOVUxMOworU0VMRUNUICogRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgbmFtZSAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tCisgWzEsMikgfCBbIlRodSBG ZWIgMDggMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25l XjIKKyBbMiwzKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEphbiAwNSAw MDowMDowMCAyMDE4IikgfCB0d29eMgorIFszLDQpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTgiLCJUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlXjIKKyBbMyw0KSB8 IFsiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4 IikgfCB0aHJlZQorIFs0LDUpIHwgKCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IGZvdXJeMQorIFs0LDUpIHwgWyJTdW4gSmFuIDAx IDAwOjAwOjAwIDIwMTciLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMwor IFs0LDUpIHwgWyJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAwOjAw OjAwIDIwMTgiKSB8IGZvdXJeMgorIFs1LDYpIHwgKCwiU3VuIEphbiAwMSAwMDowMDowMCAy MDE3IikgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZpdmUKKyBbNSw2KSB8IFsiU3Vu IEphbiAwMSAwMDowMDowMCAyMDE3IiwiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IikgfCBm aXZlXjMKKyBbNSw2KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEp1biAw MSAwMDowMDowMCAyMDE4IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiTW9uIEp1biAwMSAwMDow MDowMCAyMDIwIiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBmaXZlCisoMTEgcm93 cykKKworLS0gVVBEQVRFIC4uLiBSRVRVUk5JTkcgcmV0dXJucyBvbmx5IHRoZSB1cGRhdGVk IHZhbHVlcyAobm90IHRoZSBpbnNlcnRlZCBzaWRlIHZhbHVlcykKK1VQREFURSBmb3JfcG9y dGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAyLTAx JyBUTyAnMjAxOC0wMi0xNScKK1NFVCBuYW1lID0gJ3RocmVlXjMnCitXSEVSRSBpZCA9ICdb MywzXScKK1JFVFVSTklORyAqOworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2 YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBuYW1lICAgCistLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0KKyBbMyw0KSB8IFsiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IiwiVGh1 IEZlYiAxNSAwMDowMDowMCAyMDE4IikgfCB0aHJlZV4zCisoMSByb3cpCisKKy0tIHRlc3Qg dGhhdCB3ZSBydW4gdHJpZ2dlcnMgb24gdGhlIFVQREFURS9ERUxFVEVkIHJvdyBhbmQgdGhl IElOU0VSVGVkIHJvd3MKK0NSRUFURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2Vy KCkKK1JFVFVSTlMgdHJpZ2dlcgorQVMKKyQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJyUg JSAlIG9mICUnLCBUR19XSEVOLCBUR19PUCwgTkVXLnZhbGlkX2F0LCBPTEQudmFsaWRfYXQ7 CisgIElGIFRHX09QID0gJ0RFTEVURScgVEhFTgorICAgIFJFVFVSTiBPTEQ7CisgIEVMU0UK KyAgICBSRVRVUk4gTkVXOworICBFTkQgSUY7CitFTkQ7CiskJAorTEFOR1VBR0UgcGxwZ3Nx bDsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9iZWZvcmUKKyAgQkVGT1JF IElOU0VSVCBPUiBVUERBVEUgT1IgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAg Rk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dl cigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2FmdGVyCisgIEFGVEVS IElOU0VSVCBPUiBVUERBVEUgT1IgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAg Rk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dl cigpOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMjEtMDEtMDEnIFRPICcyMDIyLTAxLTAxJworU0VUIG5hbWUgPSAnZml2 ZV40JworV0hFUkUgaWQgPSAnWzUsNV0nOworTk9USUNFOiAgQkVGT1JFIFVQREFURSBbIkZy aSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIsIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIpIG9m IFsiTW9uIEp1biAwMSAwMDowMDowMCAyMDIwIiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1 IikKK05PVElDRTogIEJFRk9SRSBJTlNFUlQgWyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAi LCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSBvZiA8TlVMTD4KK05PVElDRTogIEJFRk9S RSBJTlNFUlQgWyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJXZWQgSmFuIDAxIDAwOjAw OjAwIDIwMjUiKSBvZiA8TlVMTD4KK05PVElDRTogIEFGVEVSIElOU0VSVCBbIk1vbiBKdW4g MDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIG9mIDxOVUxM PgorTk9USUNFOiAgQUZURVIgSU5TRVJUIFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwi V2VkIEphbiAwMSAwMDowMDowMCAyMDI1Iikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBV UERBVEUgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiLCJTYXQgSmFuIDAxIDAwOjAwOjAw IDIwMjIiKSBvZiBbIk1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyNSIpCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDIzLTAxLTAxJyBUTyAnMjAyNC0wMS0wMScKK1dI RVJFIGlkID0gJ1s1LDVdJzsKK05PVElDRTogIEJFRk9SRSBERUxFVEUgPE5VTEw+IG9mIFsi U2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikK K05PVElDRTogIEJFRk9SRSBJTlNFUlQgWyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJT dW4gSmFuIDAxIDAwOjAwOjAwIDIwMjMiKSBvZiA8TlVMTD4KK05PVElDRTogIEJFRk9SRSBJ TlNFUlQgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMjQiLCJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjUiKSBvZiA8TlVMTD4KK05PVElDRTogIEFGVEVSIElOU0VSVCBbIlNhdCBKYW4gMDEg MDA6MDA6MDAgMjAyMiIsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAyMyIpIG9mIDxOVUxMPgor Tk9USUNFOiAgQUZURVIgSU5TRVJUIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDI0IiwiV2Vk IEphbiAwMSAwMDowMDowMCAyMDI1Iikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBERUxF VEUgPE5VTEw+IG9mIFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiV2VkIEphbiAwMSAw MDowMDowMCAyMDI1IikKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRF UiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZh bGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIG5hbWUgICAKKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLQorIFsxLDIpIHwgWyJUaHUgRmViIDA4IDAwOjAwOjAwIDIwMTgiLCJUaHUg RmViIDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9uZV4yCisgWzIsMykgfCBbIk1vbiBKYW4gMDEg MDA6MDA6MDAgMjAxOCIsIkZyaSBKYW4gMDUgMDA6MDA6MDAgMjAxOCIpIHwgdHdvXjIKKyBb Myw0KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDow MCAyMDE4IikgfCB0aHJlZV4yCisgWzMsNCkgfCBbIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAx OCIsIlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVeMworIFszLDQpIHwgWyJU aHUgRmViIDE1IDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTgiKSB8 IHRocmVlXjIKKyBbMyw0KSB8IFsiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IiwiU3VuIEFw ciAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZQorIFs0LDUpIHwgKCwiU3VuIEphbiAwMSAw MDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZvdXJeMQorIFs0 LDUpIHwgWyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciLCJUaHUgRmViIDAxIDAwOjAwOjAw IDIwMTgiKSB8IGZvdXJeMworIFs0LDUpIHwgWyJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgi LCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMgorIFs1LDYpIHwgKCwiU3Vu IEphbiAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZp dmUKKyBbNSw2KSB8IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IiwiTW9uIEphbiAwMSAw MDowMDowMCAyMDE4IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IiwiRnJpIEp1biAwMSAwMDowMDowMCAyMDE4IikgfCBmaXZlXjMKKyBbNSw2KSB8 IFsiTW9uIEp1biAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIx IikgfCBmaXZlCisgWzUsNikgfCBbIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIsIlNhdCBK YW4gMDEgMDA6MDA6MDAgMjAyMiIpIHwgZml2ZV40CisgWzUsNikgfCBbIlNhdCBKYW4gMDEg MDA6MDA6MDAgMjAyMiIsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAyMyIpIHwgZml2ZQorIFs1 LDYpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMjQiLCJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjUiKSB8IGZpdmUKKygxNiByb3dzKQorCitEUk9QIEZVTkNUSU9OIGZvcl9wb3J0aW9u X29mX3RyaWdnZXIgQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMiBvdGhl ciBvYmplY3RzCitERVRBSUw6ICBkcm9wIGNhc2NhZGVzIHRvIHRyaWdnZXIgdHJnX2Zvcl9w b3J0aW9uX29mX2JlZm9yZSBvbiB0YWJsZSBmb3JfcG9ydGlvbl9vZl90ZXN0Citkcm9wIGNh c2NhZGVzIHRvIHRyaWdnZXIgdHJnX2Zvcl9wb3J0aW9uX29mX2FmdGVyIG9uIHRhYmxlIGZv cl9wb3J0aW9uX29mX3Rlc3QKKy0tIFRyaWdnZXJzIHdpdGggYSBjdXN0b20gdHJhbnNpdGlv biB0YWJsZSBuYW1lOgorRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRF IFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlk X2F0IGRhdGVyYW5nZSwKKyAgbmFtZSB0ZXh0CispOworSU5TRVJUIElOVE8gZm9yX3BvcnRp b25fb2ZfdGVzdCBWQUxVRVMgKCdbMSwxXScsICdbMjAxOC0wMS0wMSwyMDIwLTAxLTAxKScs ICdvbmUnKTsKK0NSRUFURSBGVU5DVElPTiBkdW1wX3RyaWdnZXIoKQorUkVUVVJOUyBUUklH R0VSIExBTkdVQUdFIHBscGdzcWwgQVMKKyQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJ1RH X09QID0gJScsIFRHX09QOworICBJRiBUR19PUCA9ICdJTlNFUlQnIFRIRU4KKyAgICBSQUlT RSBOT1RJQ0UgJ3RyaWdnZXIgPSAlLCBUR19MRVZFTCA9ICUsIE5FVyB0YWJsZSA9ICUnLAor ICAgICAgVEdfTkFNRSwgVEdfTEVWRUwsIChTRUxFQ1Qgc3RyaW5nX2FnZyhuZXdfdGFibGU6 OnRleHQsICcsICcgT1JERVIgQlkgaWQpIEZST00gbmV3X3RhYmxlKTsKKyAgRUxTSUYgVEdf T1AgPSAnVVBEQVRFJyBUSEVOCisgICAgUkFJU0UgTk9USUNFICd0cmlnZ2VyID0gJSwgVEdf TEVWRUwgPSAlLCBPTEQgdGFibGUgPSAlLCBORVcgdGFibGUgPSAlJywKKyAgICAgIFRHX05B TUUsIFRHX0xFVkVMLAorICAgICAgKFNFTEVDVCBzdHJpbmdfYWdnKG9sZF90YWJsZTo6dGV4 dCwgJywgJyBPUkRFUiBCWSBpZCkgRlJPTSBvbGRfdGFibGUpLAorICAgICAgKFNFTEVDVCBz dHJpbmdfYWdnKG5ld190YWJsZTo6dGV4dCwgJywgJyBPUkRFUiBCWSBpZCkgRlJPTSBuZXdf dGFibGUpOworICBFTFNJRiBUR19PUCA9ICdERUxFVEUnIFRIRU4KKyAgICBSQUlTRSBOT1RJ Q0UgJ3RyaWdnZXIgPSAlLCBUR19MRVZFTCA9ICUsIE9MRCB0YWJsZSA9ICUnLAorICAgICAg VEdfTkFNRSwgVEdfTEVWRUwsIChTRUxFQ1Qgc3RyaW5nX2FnZyhvbGRfdGFibGU6OnRleHQs ICcsICcgT1JERVIgQlkgaWQpIEZST00gb2xkX3RhYmxlKTsKKyAgRU5EIElGOworICBSRVRV Uk4gTlVMTDsKK0VORDsKKyQkOworQ1JFQVRFIFRSSUdHRVIgZm9yX3BvcnRpb25fb2ZfdGVz dF9pbnNlcnRfdHJpZworQUZURVIgSU5TRVJUIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKK1JF RkVSRU5DSU5HIE5FVyBUQUJMRSBBUyBuZXdfdGFibGUKK0ZPUiBFQUNIIFJPVyBFWEVDVVRF IFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIGZvcl9wb3J0aW9u X29mX3Rlc3RfaW5zZXJ0X3RyaWdfc3RtdAorQUZURVIgSU5TRVJUIE9OIGZvcl9wb3J0aW9u X29mX3Rlc3QKK1JFRkVSRU5DSU5HIE5FVyBUQUJMRSBBUyBuZXdfdGFibGUKK0ZPUiBFQUNI IFNUQVRFTUVOVCBFWEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoKTsKK0NSRUFURSBU UklHR0VSIGZvcl9wb3J0aW9uX29mX3Rlc3RfdXBkYXRlX3RyaWcKK0FGVEVSIFVQREFURSBP TiBmb3JfcG9ydGlvbl9vZl90ZXN0CitSRUZFUkVOQ0lORyBPTEQgVEFCTEUgQVMgb2xkX3Rh YmxlIE5FVyBUQUJMRSBBUyBuZXdfdGFibGUKK0ZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NF RFVSRSBkdW1wX3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIGZvcl9wb3J0aW9uX29mX3Rl c3RfdXBkYXRlX3RyaWdfc3RtdAorQUZURVIgVVBEQVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rl c3QKK1JFRkVSRU5DSU5HIE9MRCBUQUJMRSBBUyBvbGRfdGFibGUgTkVXIFRBQkxFIEFTIG5l d190YWJsZQorRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBfdHJp Z2dlcigpOworQ1JFQVRFIFRSSUdHRVIgZm9yX3BvcnRpb25fb2ZfdGVzdF9kZWxldGVfdHJp ZworQUZURVIgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKK1JFRkVSRU5DSU5HIE9M RCBUQUJMRSBBUyBvbGRfdGFibGUKK0ZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSBk dW1wX3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIGZvcl9wb3J0aW9uX29mX3Rlc3RfZGVs ZXRlX3RyaWdfc3RtdAorQUZURVIgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKK1JF RkVSRU5DSU5HIE9MRCBUQUJMRSBBUyBvbGRfdGFibGUKK0ZPUiBFQUNIIFNUQVRFTUVOVCBF WEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoKTsKK0JFR0lOOworVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0w MS0xNScgVE8gJzIwMTktMDEtMDEnCisgIFNFVCBuYW1lID0gJzIwMTgtMDEtMTVfdG9fMjAx OS0wMS0wMSc7CitOT1RJQ0U6ICBUR19PUCA9IElOU0VSVAorTk9USUNFOiAgdHJpZ2dlciA9 IGZvcl9wb3J0aW9uX29mX3Rlc3RfaW5zZXJ0X3RyaWcsIFRHX0xFVkVMID0gUk9XLCBORVcg dGFibGUgPSAoIlsxLDIpIiwiWzAxLTAxLTIwMTgsMDEtMTUtMjAxOCkiLG9uZSksICgiWzEs MikiLCJbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSIsb25lKQorTk9USUNFOiAgVEdfT1AgPSBJ TlNFUlQKK05PVElDRTogIHRyaWdnZXIgPSBmb3JfcG9ydGlvbl9vZl90ZXN0X2luc2VydF90 cmlnLCBUR19MRVZFTCA9IFJPVywgTkVXIHRhYmxlID0gKCJbMSwyKSIsIlswMS0wMS0yMDE4 LDAxLTE1LTIwMTgpIixvbmUpLCAoIlsxLDIpIiwiWzAxLTAxLTIwMTksMDEtMDEtMjAyMCki LG9uZSkKK05PVElDRTogIFRHX09QID0gVVBEQVRFCitOT1RJQ0U6ICB0cmlnZ2VyID0gZm9y X3BvcnRpb25fb2ZfdGVzdF91cGRhdGVfdHJpZywgVEdfTEVWRUwgPSBST1csIE9MRCB0YWJs ZSA9ICgiWzEsMikiLCJbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSIsb25lKSwgTkVXIHRhYmxl ID0gKCJbMSwyKSIsIlswMS0xNS0yMDE4LDAxLTAxLTIwMTkpIiwyMDE4LTAxLTE1X3RvXzIw MTktMDEtMDEpCitOT1RJQ0U6ICBUR19PUCA9IFVQREFURQorTk9USUNFOiAgdHJpZ2dlciA9 IGZvcl9wb3J0aW9uX29mX3Rlc3RfdXBkYXRlX3RyaWdfc3RtdCwgVEdfTEVWRUwgPSBTVEFU RU1FTlQsIE9MRCB0YWJsZSA9ICgiWzEsMikiLCJbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSIs b25lKSwgTkVXIHRhYmxlID0gKCJbMSwyKSIsIlswMS0xNS0yMDE4LDAxLTAxLTIwMTkpIiwy MDE4LTAxLTE1X3RvXzIwMTktMDEtMDEpCitST0xMQkFDSzsKK0JFR0lOOworREVMRVRFIEZS T00gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N IE5VTEwgVE8gJzIwMTgtMDEtMjEnOworTk9USUNFOiAgVEdfT1AgPSBJTlNFUlQKK05PVElD RTogIHRyaWdnZXIgPSBmb3JfcG9ydGlvbl9vZl90ZXN0X2luc2VydF90cmlnLCBUR19MRVZF TCA9IFJPVywgTkVXIHRhYmxlID0gKCJbMSwyKSIsIlswMS0yMS0yMDE4LDAxLTAxLTIwMjAp IixvbmUpCitOT1RJQ0U6ICBUR19PUCA9IERFTEVURQorTk9USUNFOiAgdHJpZ2dlciA9IGZv cl9wb3J0aW9uX29mX3Rlc3RfZGVsZXRlX3RyaWcsIFRHX0xFVkVMID0gUk9XLCBPTEQgdGFi bGUgPSAoIlsxLDIpIiwiWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkiLG9uZSkKK05PVElDRTog IFRHX09QID0gREVMRVRFCitOT1RJQ0U6ICB0cmlnZ2VyID0gZm9yX3BvcnRpb25fb2ZfdGVz dF9kZWxldGVfdHJpZ19zdG10LCBUR19MRVZFTCA9IFNUQVRFTUVOVCwgT0xEIHRhYmxlID0g KCJbMSwyKSIsIlswMS0wMS0yMDE4LDAxLTAxLTIwMjApIixvbmUpCitST0xMQkFDSzsKK0JF R0lOOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSBOVUxMIFRPICcyMDE4LTAxLTAyJworICBTRVQgbmFtZSA9ICdOVUxMX3Rv XzIwMTgtMDEtMDEnOworTk9USUNFOiAgVEdfT1AgPSBJTlNFUlQKK05PVElDRTogIHRyaWdn ZXIgPSBmb3JfcG9ydGlvbl9vZl90ZXN0X2luc2VydF90cmlnLCBUR19MRVZFTCA9IFJPVywg TkVXIHRhYmxlID0gKCJbMSwyKSIsIlswMS0wMi0yMDE4LDAxLTAxLTIwMjApIixvbmUpCitO T1RJQ0U6ICBUR19PUCA9IFVQREFURQorTk9USUNFOiAgdHJpZ2dlciA9IGZvcl9wb3J0aW9u X29mX3Rlc3RfdXBkYXRlX3RyaWcsIFRHX0xFVkVMID0gUk9XLCBPTEQgdGFibGUgPSAoIlsx LDIpIiwiWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkiLG9uZSksIE5FVyB0YWJsZSA9ICgiWzEs MikiLCJbMDEtMDEtMjAxOCwwMS0wMi0yMDE4KSIsTlVMTF90b18yMDE4LTAxLTAxKQorTk9U SUNFOiAgVEdfT1AgPSBVUERBVEUKK05PVElDRTogIHRyaWdnZXIgPSBmb3JfcG9ydGlvbl9v Zl90ZXN0X3VwZGF0ZV90cmlnX3N0bXQsIFRHX0xFVkVMID0gU1RBVEVNRU5ULCBPTEQgdGFi bGUgPSAoIlsxLDIpIiwiWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkiLG9uZSksIE5FVyB0YWJs ZSA9ICgiWzEsMikiLCJbMDEtMDEtMjAxOCwwMS0wMi0yMDE4KSIsTlVMTF90b18yMDE4LTAx LTAxKQorUk9MTEJBQ0s7CistLSBUZXN0IHdpdGggYSBjdXN0b20gcmFuZ2UgdHlwZQorQ1JF QVRFIFRZUEUgbXlkYXRlcmFuZ2UgQVMgcmFuZ2Uoc3VidHlwZT1kYXRlKTsKK0NSRUFURSBU QUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0MiAoCisgIGlkIGludDRyYW5nZSBOT1QgTlVMTCwK KyAgdmFsaWRfYXQgbXlkYXRlcmFuZ2UgTk9UIE5VTEwsCisgIG5hbWUgdGV4dCBOT1QgTlVM TCwKKwlDT05TVFJBSU5UIGZvcl9wb3J0aW9uX29mX3Rlc3QyX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9y dGlvbl9vZl90ZXN0MgorVkFMVUVTCisoJ1sxLDFdJywgJ1syMDE4LTAxLTAyLDIwMTgtMDIt MDMpJywgJ29uZScpLAorKCdbMSwxXScsICdbMjAxOC0wMi0wMywyMDE4LTAzLTAzKScsICdv bmUnKSwKKygnWzEsMV0nLCAnWzIwMTgtMDMtMDMsMjAxOC0wNC0wNCknLCAnb25lJyksCiso J1syLDJdJywgJ1syMDE4LTAxLTAxLDIwMTgtMDUtMDEpJywgJ3R3bycpLAorKCdbMywzXScs ICdbMjAxOC0wMS0wMSwpJywgJ3RocmVlJyk7Cis7CitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdDIKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTAnIFRPICcy MDE4LTAyLTEwJworU0VUIG5hbWUgPSAnb25lXjEnCitXSEVSRSBpZCA9ICdbMSwxXSc7CitE RUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0MgorRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gJzIwMTgtMDItMTUnCitXSEVSRSBpZCA9ICdbMiwy XSc7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QyIE9SREVSIEJZIGlkLCB2 YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSAgCist LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIFsxLDIpIHwgWzAx LTAyLTIwMTgsMDEtMTAtMjAxOCkgfCBvbmUKKyBbMSwyKSB8IFswMS0xMC0yMDE4LDAyLTAz LTIwMTgpIHwgb25lXjEKKyBbMSwyKSB8IFswMi0wMy0yMDE4LDAyLTEwLTIwMTgpIHwgb25l XjEKKyBbMSwyKSB8IFswMi0xMC0yMDE4LDAzLTAzLTIwMTgpIHwgb25lCisgWzEsMikgfCBb MDMtMDMtMjAxOCwwNC0wNC0yMDE4KSB8IG9uZQorIFsyLDMpIHwgWzAxLTAxLTIwMTgsMDEt MTUtMjAxOCkgfCB0d28KKyBbMiwzKSB8IFswMi0xNS0yMDE4LDA1LTAxLTIwMTgpIHwgdHdv CisgWzMsNCkgfCBbMDEtMDEtMjAxOCwpICAgICAgICAgICB8IHRocmVlCisoOCByb3dzKQor CitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QyOworRFJPUCBUWVBFIG15ZGF0ZXJh bmdlOworLS0gVGVzdCBGT1IgUE9SVElPTiBPRiBhZ2FpbnN0IGEgcGFydGl0aW9uZWQgdGFi bGUuCistLSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8xIGhhcyB0aGUgc2FtZSBhdHRudW1zIGFz IHRoZSByb290CistLSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIGhhcyB0aGUgZGlmZmVyZW50 IGF0dG51bXMgZnJvbSB0aGUgcm9vdAorLS0gdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBoYXMg dGhlIGRpZmZlcmVudCBhdHRudW1zIHRvbywgYnV0IHJldmVyc2VkCitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfcGFydGl0aW9uZWQgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRl cmFuZ2UsCisgIG5hbWUgdGV4dCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRf dXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKykgUEFSVElUSU9O IEJZIExJU1QgKGlkKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8xIFBB UlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzEsMV0n LCAnWzIsMl0nKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIFBBUlRJ VElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzMsM10nLCAn WzQsNF0nKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IFBBUlRJVElP TiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzUsNV0nLCAnWzYs Nl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIERFVEFDSCBQQVJUSVRJ T04gdGVtcG9yYWxfcGFydGl0aW9uZWRfMzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRp dGlvbmVkXzMgRFJPUCBDT0xVTU4gaWQsIERST1AgQ09MVU1OIHZhbGlkX2F0OworQUxURVIg VEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBBREQgQ09MVU1OIGlkIGludDRyYW5nZSBO T1QgTlVMTCwgQUREIENPTFVNTiB2YWxpZF9hdCBkYXRlcmFuZ2UgTk9UIE5VTEw7CitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9OIHRlbXBvcmFs X3BhcnRpdGlvbmVkXzMgRk9SIFZBTFVFUyBJTiAoJ1szLDNdJywgJ1s0LDRdJyk7CitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBERVRBQ0ggUEFSVElUSU9OIHRlbXBvcmFs X3BhcnRpdGlvbmVkXzU7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IERS T1AgQ09MVU1OIGlkLCBEUk9QIENPTFVNTiB2YWxpZF9hdDsKK0FMVEVSIFRBQkxFIHRlbXBv cmFsX3BhcnRpdGlvbmVkXzUgQUREIENPTFVNTiB2YWxpZF9hdCBkYXRlcmFuZ2UgTk9UIE5V TEwsIEFERCBDT0xVTU4gaWQgaW50NHJhbmdlIE5PVCBOVUxMOworQUxURVIgVEFCTEUgdGVt cG9yYWxfcGFydGl0aW9uZWQgQVRUQUNIIFBBUlRJVElPTiB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF81IEZPUiBWQUxVRVMgSU4gKCdbNSw1XScsICdbNiw2XScpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWQgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAt MDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnb25lJyksCisgICgnWzMsM10nLCBkYXRlcmFuZ2Uo JzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAndGhyZWUnKSwKKyAgKCdbNSw1XScsIGRh dGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdmaXZlJyk7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0 ICAgICAgICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tCisgWzEsMikgfCBbMDEtMDEtMjAwMCwwMS0wMS0yMDEwKSB8IG9uZQorIFszLDQp IHwgWzAxLTAxLTIwMDAsMDEtMDEtMjAxMCkgfCB0aHJlZQorIFs1LDYpIHwgWzAxLTAxLTIw MDAsMDEtMDEtMjAxMCkgfCBmaXZlCisoMyByb3dzKQorCistLSBVcGRhdGUgd2l0aG91dCBt b3Zpbmcgd2l0aGluIHBhcnRpdGlvbiAxCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWQg Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMy0wMScgVE8gJzIwMDAtMDQt MDEnCisgIFNFVCBuYW1lID0gJ29uZV4xJworICBXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBV cGRhdGUgd2l0aG91dCBtb3Zpbmcgd2l0aGluIHBhcnRpdGlvbiAzCitVUERBVEUgdGVtcG9y YWxfcGFydGl0aW9uZWQgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMy0w MScgVE8gJzIwMDAtMDQtMDEnCisgIFNFVCBuYW1lID0gJ3RocmVlXjEnCisgIFdIRVJFIGlk ID0gJ1szLDNdJzsKKy0tIFVwZGF0ZSB3aXRob3V0IG1vdmluZyB3aXRoaW4gcGFydGl0aW9u IDUKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDAwLTAzLTAxJyBUTyAnMjAwMC0wNC0wMScKKyAgU0VUIG5hbWUgPSAnZml2 ZV4xJworICBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBNb3ZlIGZyb20gcGFydGl0aW9uIDEg dG8gcGFydGl0aW9uIDMKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA2LTAxJyBUTyAnMjAwMC0wNy0wMScKKyAgU0VU IG5hbWUgPSAnb25lXjInLAorICAgICAgaWQgPSAnWzQsNF0nCisgIFdIRVJFIGlkID0gJ1sx LDFdJzsKKy0tIE1vdmUgZnJvbSBwYXJ0aXRpb24gMyB0byBwYXJ0aXRpb24gMQorVVBEQVRF IHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MDAtMDYtMDEnIFRPICcyMDAwLTA3LTAxJworICBTRVQgbmFtZSA9ICd0aHJlZV4yJywKKyAg ICAgIGlkID0gJ1syLDJdJworICBXSEVSRSBpZCA9ICdbMywzXSc7CistLSBNb3ZlIGZyb20g cGFydGl0aW9uIDUgdG8gcGFydGl0aW9uIDMKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA2LTAxJyBUTyAnMjAwMC0w Ny0wMScKKyAgU0VUIG5hbWUgPSAnZml2ZV4yJywKKyAgICAgIGlkID0gJ1szLDNdJworICBX SEVSRSBpZCA9ICdbNSw1XSc7CistLSBVcGRhdGUgYWxsIHBhcnRpdGlvbnMgYXQgb25jZSAo ZWFjaCB3aXRoIGxlZnRvdmVycykKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgfCAgbmFtZSAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLQorIFsxLDIpIHwgWzAxLTAxLTIwMDAsMDMtMDEtMjAwMCkgfCBvbmUKKyBbMSwy KSB8IFswMy0wMS0yMDAwLDA0LTAxLTIwMDApIHwgb25lXjEKKyBbMSwyKSB8IFswNC0wMS0y MDAwLDA2LTAxLTIwMDApIHwgb25lCisgWzEsMikgfCBbMDctMDEtMjAwMCwwMS0wMS0yMDEw KSB8IG9uZQorIFsyLDMpIHwgWzA2LTAxLTIwMDAsMDctMDEtMjAwMCkgfCB0aHJlZV4yCisg WzMsNCkgfCBbMDEtMDEtMjAwMCwwMy0wMS0yMDAwKSB8IHRocmVlCisgWzMsNCkgfCBbMDMt MDEtMjAwMCwwNC0wMS0yMDAwKSB8IHRocmVlXjEKKyBbMyw0KSB8IFswNC0wMS0yMDAwLDA2 LTAxLTIwMDApIHwgdGhyZWUKKyBbMyw0KSB8IFswNi0wMS0yMDAwLDA3LTAxLTIwMDApIHwg Zml2ZV4yCisgWzMsNCkgfCBbMDctMDEtMjAwMCwwMS0wMS0yMDEwKSB8IHRocmVlCisgWzQs NSkgfCBbMDYtMDEtMjAwMCwwNy0wMS0yMDAwKSB8IG9uZV4yCisgWzUsNikgfCBbMDEtMDEt MjAwMCwwMy0wMS0yMDAwKSB8IGZpdmUKKyBbNSw2KSB8IFswMy0wMS0yMDAwLDA0LTAxLTIw MDApIHwgZml2ZV4xCisgWzUsNikgfCBbMDQtMDEtMjAwMCwwNi0wMS0yMDAwKSB8IGZpdmUK KyBbNSw2KSB8IFswNy0wMS0yMDAwLDAxLTAxLTIwMTApIHwgZml2ZQorKDE1IHJvd3MpCisK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfMSBPUkRFUiBCWSBpZCwgdmFs aWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8ICBuYW1lICAgCist LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tCisgWzEsMikgfCBb MDEtMDEtMjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzAzLTAxLTIwMDAsMDQt MDEtMjAwMCkgfCBvbmVeMQorIFsxLDIpIHwgWzA0LTAxLTIwMDAsMDYtMDEtMjAwMCkgfCBv bmUKKyBbMSwyKSB8IFswNy0wMS0yMDAwLDAxLTAxLTIwMTApIHwgb25lCisgWzIsMykgfCBb MDYtMDEtMjAwMCwwNy0wMS0yMDAwKSB8IHRocmVlXjIKKyg1IHJvd3MpCisKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7Cisg IG5hbWUgICB8ICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgCistLS0tLS0tLS0r LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdGhyZWUgICB8IFszLDQpIHwg WzAxLTAxLTIwMDAsMDMtMDEtMjAwMCkKKyB0aHJlZV4xIHwgWzMsNCkgfCBbMDMtMDEtMjAw MCwwNC0wMS0yMDAwKQorIHRocmVlICAgfCBbMyw0KSB8IFswNC0wMS0yMDAwLDA2LTAxLTIw MDApCisgZml2ZV4yICB8IFszLDQpIHwgWzA2LTAxLTIwMDAsMDctMDEtMjAwMCkKKyB0aHJl ZSAgIHwgWzMsNCkgfCBbMDctMDEtMjAwMCwwMS0wMS0yMDEwKQorIG9uZV4yICAgfCBbNCw1 KSB8IFswNi0wMS0yMDAwLDA3LTAxLTIwMDApCisoNiByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBuYW1l ICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgIGlkICAgCistLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBmaXZlICAgfCBbMDEtMDEtMjAwMCwwMy0w MS0yMDAwKSB8IFs1LDYpCisgZml2ZV4xIHwgWzAzLTAxLTIwMDAsMDQtMDEtMjAwMCkgfCBb NSw2KQorIGZpdmUgICB8IFswNC0wMS0yMDAwLDA2LTAxLTIwMDApIHwgWzUsNikKKyBmaXZl ICAgfCBbMDctMDEtMjAwMCwwMS0wMS0yMDEwKSB8IFs1LDYpCisoNCByb3dzKQorCitEUk9Q IFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvb3ByX3Nhbml0eS5vdXQKaW5kZXggNzYxMGIwMTFkNjguLmRhMDc5Y2ZjNThhIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQKQEAgLTE5NDIsNiAr MTk0Miw3IEBAIFdIRVJFIGExLmFtb3BmYW1pbHkgPSAwIE9SIGExLmFtb3BsZWZ0dHlwZSA9 IDAgT1IgYTEuYW1vcHJpZ2h0dHlwZSA9IDAKIFNFTEVDVCBhMS5hbW9wZmFtaWx5LCBhMS5h bW9wc3RyYXRlZ3kKIEZST00gcGdfYW1vcCBhcyBhMQogV0hFUkUgTk9UICgoYTEuYW1vcHB1 cnBvc2UgPSAncycgQU5EIGExLmFtb3Bzb3J0ZmFtaWx5ID0gMCkgT1IKKyAgICAgICAgICAg KGExLmFtb3BwdXJwb3NlID0gJ3AnIEFORCBhMS5hbW9wc29ydGZhbWlseSA9IDApIE9SCiAg ICAgICAgICAgIChhMS5hbW9wcHVycG9zZSA9ICdvJyBBTkQgYTEuYW1vcHNvcnRmYW1pbHkg PD4gMCkpOwogIGFtb3BmYW1pbHkgfCBhbW9wc3RyYXRlZ3kgCiAtLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0KQEAgLTIwMDgsNiArMjAwOSw5IEBAIE9SREVSIEJZIDEsIDIsIDM7CiAg ICAgICAgIDc4MyB8ICAgICAgICAgICAyOCB8IDxACiAgICAgICAgIDc4MyB8ICAgICAgICAg ICAyOSB8IDxeCiAgICAgICAgIDc4MyB8ICAgICAgICAgICAzMCB8ID5eCisgICAgICAgIDc4 MyB8ICAgICAgICAgICAzMSB8ICMKKyAgICAgICAgNzgzIHwgICAgICAgICAgIDMxIHwgKgor ICAgICAgICA3ODMgfCAgICAgICAgICAgMzIgfCBALQogICAgICAgICA3ODMgfCAgICAgICAg ICAgNDggfCA8QAogICAgICAgICA3ODMgfCAgICAgICAgICAgNjggfCA8QAogICAgICAgIDI3 NDIgfCAgICAgICAgICAgIDEgfCAmJgpAQCAtMjA4OCw3ICsyMDkyLDcgQEAgT1JERVIgQlkg MSwgMiwgMzsKICAgICAgICA0MDAwIHwgICAgICAgICAgIDI4IHwgXkAKICAgICAgICA0MDAw IHwgICAgICAgICAgIDI5IHwgPF4KICAgICAgICA0MDAwIHwgICAgICAgICAgIDMwIHwgPl4K LSgxMjQgcm93cykKKygxMjcgcm93cykKIAogLS0gQ2hlY2sgdGhhdCBhbGwgb3BjbGFzcyBz ZWFyY2ggb3BlcmF0b3JzIGhhdmUgc2VsZWN0aXZpdHkgZXN0aW1hdG9ycy4KIC0tIFRoaXMg aXMgbm90IGFic29sdXRlbHkgcmVxdWlyZWQsIGJ1dCBpdCBzZWVtcyBhIHJlYXNvbmFibGUg dGhpbmcKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdl cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0CmluZGV4 IGZiYjA0ODlhNGZmLi4zMzk1ZDIxNTBmZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3ByaXZpbGVnZXMub3V0CkBAIC05ODUsNiArOTg1LDI0IEBAIEVSUk9SOiAgbnVsbCB2 YWx1ZSBpbiBjb2x1bW4gImIiIG9mIHJlbGF0aW9uICJlcnJ0c3RfcGFydF8yIiB2aW9sYXRl cyBub3QtbnVsbCBjCiBERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoYSwgYiwgYykg PSAoYWFhYSwgbnVsbCwgY2NjKS4KIFNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVz c19wcml2X3VzZXIxOwogRFJPUCBUQUJMRSBlcnJ0c3Q7CistLSB0ZXN0IGNvbHVtbi1sZXZl bCBwcml2aWxlZ2VzIG9uIHRoZSByYW5nZS9QRVJJT0QgdXNlZCBpbiBGT1IgUE9SVElPTiBP RgorU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CitDUkVB VEUgVEFCTEUgdDEgKAorICBjMSBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IHRzcmFuZ2UsCisJ Q09OU1RSQUlOVCB0MXBrIFBSSU1BUlkgS0VZIChjMSwgdmFsaWRfYXQgV0lUSE9VVCBPVkVS TEFQUykKKyk7CitHUkFOVCBTRUxFQ1QgT04gdDEgVE8gcmVncmVzc19wcml2X3VzZXIyOwor R1JBTlQgU0VMRUNUIE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMzsKK0dSQU5UIFVQREFU RSAoYzEpIE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMjsKK0dSQU5UIFVQREFURSAoYzEs IHZhbGlkX2F0KSBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNlcjM7CitTRVQgU0VTU0lPTiBB VVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMjsKK1VQREFURSB0MSBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTAxJyBUTyAnMjAwMS0wMS0wMScgU0VUIGMx ID0gJ1syLDMpJzsKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHRhYmxlIHQxCitT RVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMzsKK1VQREFURSB0 MSBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTAxJyBUTyAnMjAwMS0w MS0wMScgU0VUIGMxID0gJ1syLDMpJzsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVn cmVzc19wcml2X3VzZXIxOworRFJPUCBUQUJMRSB0MTsKIC0tIHRlc3QgY29sdW1uLWxldmVs IHByaXZpbGVnZXMgd2hlbiBpbnZvbHZlZCB3aXRoIERFTEVURQogU0VUIFNFU1NJT04gQVVU SE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CiBBTFRFUiBUQUJMRSBhdGVzdDYgQURE IENPTFVNTiB0aHJlZSBpbnRlZ2VyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC91cGRhdGFibGVfdmlld3Mub3V0CmluZGV4IDE5NTBlNmYyODFmLi5mNGI4OGJjYzM4ZCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mu b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91 dApAQCAtMzAyMyw2ICszMDIzLDM4IEBAIHNlbGVjdCAqIGZyb20gdXZfaW9jdV90YWI7CiAK IGRyb3AgdmlldyB1dl9pb2N1X3ZpZXc7CiBkcm9wIHRhYmxlIHV2X2lvY3VfdGFiOworLS0g Q2hlY2sgVVBEQVRFIEZPUiBQT1JUSU9OIE9GIHdvcmtzIGNvcnJlY3RseQorY3JlYXRlIHRh YmxlIHV2X2Zwb190YWIgKGlkIGludDRyYW5nZSwgdmFsaWRfYXQgdHNyYW5nZSwgYiBmbG9h dCwKKyAgICBjb25zdHJhaW50IHBrX3V2X2Zwb190YWIgcHJpbWFyeSBrZXkgKGlkLCB2YWxp ZF9hdCB3aXRob3V0IG92ZXJsYXBzKSk7CitpbnNlcnQgaW50byB1dl9mcG9fdGFiIHZhbHVl cyAoJ1sxLDFdJywgJ1syMDIwLTAxLTAxLCAyMDMwLTAxLTAxKScsIDApOworY3JlYXRlIHZp ZXcgdXZfZnBvX3ZpZXcgYXMKKyAgICBzZWxlY3QgYiwgYisxIGFzIGMsIHZhbGlkX2F0LCBp ZCwgJzIuMCc6OnRleHQgYXMgdHdvIGZyb20gdXZfZnBvX3RhYjsKK2luc2VydCBpbnRvIHV2 X2Zwb192aWV3IChpZCwgdmFsaWRfYXQsIGIpIHZhbHVlcyAoJ1sxLDFdJywgJ1syMDEwLTAx LTAxLCAyMDIwLTAxLTAxKScsIDEpOworc2VsZWN0ICogZnJvbSB1dl9mcG9fdmlldzsKKyBi IHwgYyB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgaWQgICB8IHR3byAKKy0tLSstLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0KKyAw IHwgMSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiVHVlIEphbiAwMSAwMDowMDow MCAyMDMwIikgfCBbMSwyKSB8IDIuMAorIDEgfCAyIHwgWyJGcmkgSmFuIDAxIDAwOjAwOjAw IDIwMTAiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFsxLDIpIHwgMi4wCisoMiBy b3dzKQorCit1cGRhdGUgdXZfZnBvX3ZpZXcgZm9yIHBvcnRpb24gb2YgdmFsaWRfYXQgZnJv bSAnMjAxNS0wMS0wMScgdG8gJzIwMjAtMDEtMDEnIHNldCBiID0gMiB3aGVyZSBpZCA9ICdb MSwxXSc7CitzZWxlY3QgKiBmcm9tIHV2X2Zwb192aWV3OworIGIgfCBjIHwgICAgICAgICAg ICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBpZCAg IHwgdHdvIAorLS0tKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLQorIDAgfCAxIHwgWyJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiKSB8IFsxLDIp IHwgMi4wCisgMiB8IDMgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIpIHwgWzEsMikgfCAyLjAKKyAxIHwgMiB8IFsiRnJpIEphbiAw MSAwMDowMDowMCAyMDEwIiwiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1IikgfCBbMSwyKSB8 IDIuMAorKDMgcm93cykKKworZGVsZXRlIGZyb20gdXZfZnBvX3ZpZXcgZm9yIHBvcnRpb24g b2YgdmFsaWRfYXQgZnJvbSAnMjAxNy0wMS0wMScgdG8gJzIwMjItMDEtMDEnIHdoZXJlIGlk ID0gJ1sxLDFdJzsKK3NlbGVjdCAqIGZyb20gdXZfZnBvX3ZpZXc7CisgYiB8IGMgfCAgICAg ICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwg IGlkICAgfCB0d28gCistLS0rLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tCisgMSB8IDIgfCBbIkZy aSBKYW4gMDEgMDA6MDA6MDAgMjAxMCIsIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIpIHwg WzEsMikgfCAyLjAKKyAwIHwgMSB8IFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiVHVl IEphbiAwMSAwMDowMDowMCAyMDMwIikgfCBbMSwyKSB8IDIuMAorIDIgfCAzIHwgWyJUaHUg SmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciKSB8IFsx LDIpIHwgMi4wCisoMyByb3dzKQorCiAtLSBUZXN0IHdob2xlLXJvdyByZWZlcmVuY2VzIHRv IHRoZSB2aWV3CiBjcmVhdGUgdGFibGUgdXZfaW9jdV90YWIgKGEgaW50IHVuaXF1ZSwgYiB0 ZXh0KTsKIGNyZWF0ZSB2aWV3IHV2X2lvY3VfdmlldyBhcwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKaW5kZXggYzYzMzczOGMyZWIu LjYwYzllZWRhZWU4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dp dGhvdXRfb3ZlcmxhcHMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0 aG91dF9vdmVybGFwcy5vdXQKQEAgLTMwNSw2ICszMDUsMzYgQEAgSU5TRVJUIElOVE8gdGVt cG9yYWwzIChpZCwgdmFsaWRfYXQsIGlkMiwgbmFtZSkKICAgKCdbMSwxXScsIGRhdGVyYW5n ZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbNyw3XScsICdmb28nKSwKICAgKCdb MiwyXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbOSw5XScs ICdiYXInKQogOworVVBEQVRFIHRlbXBvcmFsMyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDAwLTA1LTAxJyBUTyAnMjAwMC0wNy0wMScKKyAgU0VUIG5hbWUgPSBuYW1lIHx8 ICcxJzsKK1VQREFURSB0ZW1wb3JhbDMgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAwMC0wNC0wMScgVE8gJzIwMDAtMDYtMDEnCisgIFNFVCBuYW1lID0gbmFtZSB8fCAnMicK KyAgV0hFUkUgaWQgPSAnWzIsMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbDMgT1JERVIg QlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCAg aWQyICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEtMDEtMjAwMCwwNS0wMS0yMDAwKSB8IFs3LDgp ICB8IGZvbworIFsxLDIpIHwgWzA1LTAxLTIwMDAsMDctMDEtMjAwMCkgfCBbNyw4KSAgfCBm b28xCisgWzEsMikgfCBbMDctMDEtMjAwMCwwMS0wMS0yMDEwKSB8IFs3LDgpICB8IGZvbwor IFsyLDMpIHwgWzAxLTAxLTIwMDAsMDQtMDEtMjAwMCkgfCBbOSwxMCkgfCBiYXIKKyBbMiwz KSB8IFswNC0wMS0yMDAwLDA1LTAxLTIwMDApIHwgWzksMTApIHwgYmFyMgorIFsyLDMpIHwg WzA1LTAxLTIwMDAsMDYtMDEtMjAwMCkgfCBbOSwxMCkgfCBiYXIxMgorIFsyLDMpIHwgWzA2 LTAxLTIwMDAsMDctMDEtMjAwMCkgfCBbOSwxMCkgfCBiYXIxCisgWzIsMykgfCBbMDctMDEt MjAwMCwwMS0wMS0yMDEwKSB8IFs5LDEwKSB8IGJhcgorKDggcm93cykKKworLS0gY29uZmxp Y3RpbmcgaWQgb25seToKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBp ZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAx JywgJzIwMDYtMDEtMDEnKSwgJ1s4LDhdJywgJ2ZvbzMnKTsKK0VSUk9SOiAgY29uZmxpY3Rp bmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJhaW50ICJ0ZW1wb3JhbDNf cGsiCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFsxLDIpLCBbMDEtMDEtMjAwNSww MS0wMS0yMDA2KSkgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcga2V5IChpZCwgdmFsaWRfYXQp PShbMSwyKSwgWzA3LTAxLTIwMDAsMDEtMDEtMjAxMCkpLgorLS0gY29uZmxpY3RpbmcgaWQy IG9ubHk6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxpZF9hdCwgaWQyLCBuYW1l KQorICBWQUxVRVMKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAwNS0wMS0wMScsICcyMDEw LTAxLTAxJyksICdbOSw5XScsICdiYXIzJyk7CitFUlJPUjogIGNvbmZsaWN0aW5nIGtleSB2 YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAidGVtcG9yYWwzX3VuaXEiCitE RVRBSUw6ICBLZXkgKGlkMiwgdmFsaWRfYXQpPShbOSwxMCksIFswMS0wMS0yMDA1LDAxLTAx LTIwMTApKSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkgKGlkMiwgdmFsaWRfYXQpPShb OSwxMCksIFswNy0wMS0yMDAwLDAxLTAxLTIwMTApKS4KIERST1AgVEFCTEUgdGVtcG9yYWwz OwogLS0KIC0tIHRlc3QgY2hhbmdpbmcgdGhlIFBLJ3MgZGVwZW5kZW5jaWVzCkBAIC0zNTcs NiArMzg3LDM2IEBAIFNFTEVDVCAqIEZST00gdHAyIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsK ICBbMyw0KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTApIHwgdGhyZWUKICgxIHJvdykKIAor VVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAgU0VUIG5hbWUgPSAnb25l MicKKyAgV0hFUkUgaWQgPSAnWzEsMV0nOworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25l ZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAyLTIwJyBUTyAnMjAw MC0wMi0yNScKKyAgU0VUIGlkID0gJ1s0LDRdJworICBXSEVSRSBuYW1lID0gJ29uZSc7CitV UERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMDItMDEtMDEnIFRPICcyMDAzLTAxLTAxJworICBTRVQgaWQgPSAnWzIsMl0n CisgIFdIRVJFIG5hbWUgPSAndGhyZWUnOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0xNScgVE8g JzIwMDAtMDItMTUnCisgIFdIRVJFIGlkID0gJ1szLDNdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAg ICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEtMDEtMjAwMCwwMS0xNS0yMDAwKSB8 IG9uZQorIFsxLDIpIHwgWzAxLTE1LTIwMDAsMDItMDEtMjAwMCkgfCBvbmUyCisgWzEsMikg fCBbMDItMDEtMjAwMCwwMi0xNS0yMDAwKSB8IG9uZTIKKyBbMSwyKSB8IFswMi0xNS0yMDAw LDAyLTIwLTIwMDApIHwgb25lCisgWzEsMikgfCBbMDItMjUtMjAwMCwwMy0wMS0yMDAwKSB8 IG9uZQorIFsyLDMpIHwgWzAxLTAxLTIwMDIsMDEtMDEtMjAwMykgfCB0aHJlZQorIFszLDQp IHwgWzAxLTAxLTIwMDAsMDEtMTUtMjAwMCkgfCB0aHJlZQorIFszLDQpIHwgWzAyLTE1LTIw MDAsMDEtMDEtMjAwMikgfCB0aHJlZQorIFszLDQpIHwgWzAxLTAxLTIwMDMsMDEtMDEtMjAx MCkgfCB0aHJlZQorIFs0LDUpIHwgWzAyLTIwLTIwMDAsMDItMjUtMjAwMCkgfCBvbmUKKygx MCByb3dzKQorCiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwogLS0gdGVtcG9y YWwgVU5JUVVFOgogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkICgKQEAgLTM5 Miw2ICs0NTIsMzYgQEAgU0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0 OwogIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEtMDEtMjAxMCkgfCB0aHJlZQogKDEgcm93KQog CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMDAtMDEtMTUnIFRPICcyMDAwLTAyLTE1JworICBTRVQgbmFtZSA9ICdv bmUyJworICBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlv bmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDItMjAnIFRPICcy MDAwLTAyLTI1JworICBTRVQgaWQgPSAnWzQsNF0nCisgIFdIRVJFIG5hbWUgPSAnb25lJzsK K1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAwMi0wMS0wMScgVE8gJzIwMDMtMDEtMDEnCisgIFNFVCBpZCA9ICdbMiwy XScKKyAgV0hFUkUgbmFtZSA9ICd0aHJlZSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBU TyAnMjAwMC0wMi0xNScKKyAgV0hFUkUgaWQgPSAnWzMsM10nOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAg ICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBbMSwyKSB8IFswMS0wMS0yMDAwLDAxLTE1LTIwMDAp IHwgb25lCisgWzEsMikgfCBbMDEtMTUtMjAwMCwwMi0wMS0yMDAwKSB8IG9uZTIKKyBbMSwy KSB8IFswMi0wMS0yMDAwLDAyLTE1LTIwMDApIHwgb25lMgorIFsxLDIpIHwgWzAyLTE1LTIw MDAsMDItMjAtMjAwMCkgfCBvbmUKKyBbMSwyKSB8IFswMi0yNS0yMDAwLDAzLTAxLTIwMDAp IHwgb25lCisgWzIsMykgfCBbMDEtMDEtMjAwMiwwMS0wMS0yMDAzKSB8IHRocmVlCisgWzMs NCkgfCBbMDEtMDEtMjAwMCwwMS0xNS0yMDAwKSB8IHRocmVlCisgWzMsNCkgfCBbMDItMTUt MjAwMCwwMS0wMS0yMDAyKSB8IHRocmVlCisgWzMsNCkgfCBbMDEtMDEtMjAwMywwMS0wMS0y MDEwKSB8IHRocmVlCisgWzQsNSkgfCBbMDItMjAtMjAwMCwwMi0yNS0yMDAwKSB8IG9uZQor KDEwIHJvd3MpCisKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQ7CiAtLQogLS0g dGVzdCBGSyBkZXBlbmRlbmNpZXMKQEAgLTY5MiwxMyArNzgyLDI1IEBAIFVQREFURSB0ZW1w b3JhbF9ybmcgU0VUIGlkID0gJ1s3LDddJwogV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwogRVJST1I6ICB1 cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0 ZW1wb3JhbF9ma19ybmcycm5nIgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2 KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIw MTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcy cm5nIi4KKy0tIGNoYW5naW5nIGFuIHVucmVmZXJlbmNlZCBwYXJ0IGlzIG9rYXk6CitVUERB VEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAx LTAyJyBUTyAnMjAxOC0wMS0wMycKK1NFVCBpZCA9ICdbNyw3XScKK1dIRVJFIGlkID0gJ1s1 LDVdJzsKKy0tIGNoYW5naW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFs X3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wNScgVE8gJzIw MTgtMDEtMTAnCitTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XSc7CitFUlJP UjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMg Zm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFi bGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9 KFs1LDYpLCBbIldlZCBKYW4gMDMgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6 MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2Zr X3JuZzJybmciLgogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5k IHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQg dmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQogV0hFUkUg aWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAx OC0wMi0wMScpOwogLS0gY2xlYW4gdXA6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7Ci1ERUxFVEUgRlJPTSB0ZW1wb3JhbF9y bmcgV0hFUkUgaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJF IGlkIElOICgnWzUsNV0nLCAnWzcsN10nKTsKIC0tCiAtLSB0ZXN0IEZLIHBhcmVudCB1cGRh dGVzIFJFU1RSSUNUCiAtLQpAQCAtNzI5LDEzICs4MzEsMjUgQEAgVVBEQVRFIHRlbXBvcmFs X3JuZyBTRVQgaWQgPSAnWzcsN10nCiBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0 ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CiBFUlJPUjogIHVwZGF0 ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBr ZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBv cmFsX2ZrX3JuZzJybmciCiBERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBb Ik1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIp KSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmci LgorLS0gY2hhbmdpbmcgYW4gdW5yZWZlcmVuY2VkIHBhcnQgaXMgb2theToKK1VQREFURSB0 ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDIn IFRPICcyMDE4LTAxLTAzJworU0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0n OworLS0gY2hhbmdpbmcganVzdCBhIHBhcnQgZmFpbHM6CitVUERBVEUgdGVtcG9yYWxfcm5n CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0w MS0xMCcKK1NFVCBpZCA9ICdbNyw3XScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAg dXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3Jl aWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAi dGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUs NiksIFsiV2VkIEphbiAwMyAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAy MDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5n MnJuZyIuCiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhl IHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5n MnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CiAtLSBjbGVhbiB1cDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKLURFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQg SU4gKCdbNSw1XScsICdbNyw3XScpOwogLS0KIC0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMg Tk8gQUNUSU9OCiAtLQpAQCAtNzU3LDkgKzg3MSwyMiBAQCBERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgt MDItMDEnLAogREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIEVS Uk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRl cyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0 YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0 KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDow MDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxf Zmtfcm5nMnJuZyIuCistLSBkZWxldGluZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5 OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycKK1dIRVJFIGlkID0gJ1s1LDVdJzsK Ky0tIGRlbGV0aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorREVMRVRFIEZST00gdGVtcG9yYWxf cm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAnMjAx OC0wMS0xMCcKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0 ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5n MnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiV2VkIEphbiAw MyAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxs IHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCiAtLSB0aGVu IGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRl IHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMywzXSc7CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwor LS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBh cmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQg SU4gKCdbNSw1XScpOwogLS0KIC0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QK IC0tCkBAIC03ODEsOSArOTA4LDIyIEBAIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsCiBE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwogRVJST1I6ICB1cGRh dGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24g a2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1w b3JhbF9ma19ybmcycm5nIgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwg WyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgi KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5n Ii4KKy0tIGRlbGV0aW5nIGFuIHVucmVmZXJlbmNlZCBwYXJ0IGlzIG9rYXk6CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgt MDEtMDInIFRPICcyMDE4LTAxLTAzJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gZGVsZXRp bmcganVzdCBhIHBhcnQgZmFpbHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJwor V0hFUkUgaWQgPSAnWzUsNV0nOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxl ICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBv cmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgorREVU QUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJXZWQgSmFuIDAzIDAwOjAwOjAw IDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNl ZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KIC0tIHRoZW4gZGVsZXRlIHRo ZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6 CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsK IERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1 cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0g J1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVd Jyk7CiAtLQogLS0gdGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKIC0tCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCAxZDhhNDE0ZWVhNy4uNGZkN2YzZDBjNzMg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtNDgsNyArNDgsNyBAQCB0 ZXN0OiBjcmVhdGVfaW5kZXggY3JlYXRlX2luZGV4X3NwZ2lzdCBjcmVhdGVfdmlldyBpbmRl eF9pbmNsdWRpbmcgaW5kZXhfaW5jbHVkaQogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3Jv dXAgb2YgcGFyYWxsZWwgdGVzdHMKICMgLS0tLS0tLS0tLQotdGVzdDogY3JlYXRlX2FnZ3Jl Z2F0ZSBjcmVhdGVfZnVuY3Rpb25fc3FsIGNyZWF0ZV9jYXN0IGNvbnN0cmFpbnRzIHRyaWdn ZXJzIHNlbGVjdCBpbmhlcml0IHR5cGVkX3RhYmxlIHZhY3V1bSBkcm9wX2lmX2V4aXN0cyB1 cGRhdGFibGVfdmlld3Mgcm9sZWF0dHJpYnV0ZXMgY3JlYXRlX2FtIGhhc2hfZnVuYyBlcnJv cnMgaW5maW5pdGVfcmVjdXJzZQordGVzdDogY3JlYXRlX2FnZ3JlZ2F0ZSBjcmVhdGVfZnVu Y3Rpb25fc3FsIGNyZWF0ZV9jYXN0IGNvbnN0cmFpbnRzIHRyaWdnZXJzIHNlbGVjdCBpbmhl cml0IHR5cGVkX3RhYmxlIHZhY3V1bSBkcm9wX2lmX2V4aXN0cyB1cGRhdGFibGVfdmlld3Mg cm9sZWF0dHJpYnV0ZXMgY3JlYXRlX2FtIGhhc2hfZnVuYyBlcnJvcnMgaW5maW5pdGVfcmVj dXJzZSBmb3JfcG9ydGlvbl9vZgogCiAjIC0tLS0tLS0tLS0KICMgc2FuaXR5X2NoZWNrIGRv ZXMgYSB2YWN1dW0sIGFmZmVjdGluZyB0aGUgc29ydCBvcmRlciBvZiBTRUxFQ1QgKgpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xY2I5MDdlZWIzMAotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNxbApAQCAtMCwwICsxLDUw MiBAQAorLS0gVGVzdHMgZm9yIFVQREFURS9ERUxFVEUgRk9SIFBPUlRJT04gT0YKKworLS0g V29ya3Mgb24gbm9uLVBLIGNvbHVtbnMKK0NSRUFURSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90 ZXN0ICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZF9hdCB0c3JhbmdlLAorICBuYW1lIHRl eHQgTk9UIE5VTEwKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0IFZBTFVF UworKCdbMSwxXScsICdbMjAxOC0wMS0wMiwyMDIwLTAxLTAxKScsICdvbmUnKTsKKworVVBE QVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTgtMDEtMTUnIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnZm9vJzsKKworREVM RVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOS0wMS0xNScgVE8gTlVMTDsKKworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlv bl9vZl90ZXN0OworCistLSBXb3JrcyBvbiBtb3JlIHRoYW4gb25lIHJhbmdlCitEUk9QIFRB QkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2Zf dGVzdCAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWQxX2F0IHRzcmFuZ2UsCisgIHZhbGlk Ml9hdCB0c3JhbmdlLAorICBuYW1lIHRleHQgTk9UIE5VTEwKKyk7CitJTlNFUlQgSU5UTyBm b3JfcG9ydGlvbl9vZl90ZXN0IFZBTFVFUworKCdbMSwxXScsICdbMjAxOC0wMS0wMiwyMDE4 LTAyLTAzKScsICdbMjAxNS0wMS0wMSwyMDI1LTAxLTAxKScsICdvbmUnKTsKKworVVBEQVRF IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkMV9hdCBGUk9NICcy MDE4LTAxLTE1JyBUTyBOVUxMCitTRVQgbmFtZSA9ICdmb28nOworU0VMRUNUICogRlJPTSBm b3JfcG9ydGlvbl9vZl90ZXN0OworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWQyX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPIE5VTEwKK1NFVCBu YW1lID0gJ2Jhcic7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisKK0RF TEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkMV9h dCBGUk9NICcyMDE4LTAxLTIwJyBUTyBOVUxMOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlv bl9vZl90ZXN0OworCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZDJfYXQgRlJPTSAnMjAxOC0wMS0yMCcgVE8gTlVMTDsKK1NFTEVDVCAq IEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKworLS0gVGVzdCB3aXRoIE5VTExzIGluIHRo ZSBzY2FsYXIvcmFuZ2Uga2V5IGNvbHVtbnMuCistLSBUaGlzIHdvbid0IGhhcHBlbiBpZiB0 aGVyZSBpcyBhIFBSSU1BUlkgS0VZIG9yIFVOSVFVRSBjb25zdHJhaW50CistLSBidXQgRk9S IFBPUlRJT04gT0Ygc2hvdWxkbid0IHJlcXVpcmUgdGhhdC4KK0RST1AgVEFCTEUgZm9yX3Bv cnRpb25fb2ZfdGVzdDsKK0NSRUFURSBVTkxPR0dFRCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90 ZXN0ICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZF9hdCB0c3JhbmdlLAorICBuYW1lIHRl eHQKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0IFZBTFVFUworICAoJ1sx LDFdJywgTlVMTCwgJzEgbnVsbCcpLAorICAoJ1sxLDFdJywgJygsKScsICcxIHVuYm91bmRl ZCcpLAorICAoJ1sxLDFdJywgJ2VtcHR5JywgJzEgZW1wdHknKSwKKyAgKE5VTEwsIE5VTEws IE5VTEwpLAorICAoTlVMTCwgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE5LTAxLTAxJyks ICdudWxsIGtleScpOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKKyAgU0VUIG5hbWUgPSAnTlVMTCB0 byBOVUxMJzsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKworRFJPUCBU QUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29m X3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsCisgIHZhbGlkX2F0IHRzcmFuZ2Ug Tk9UIE5VTEwsCisgIG5hbWUgdGV4dCBOT1QgTlVMTCwKKwlDT05TVFJBSU5UIGZvcl9wb3J0 aW9uX29mX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykK Kyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0CitWQUxVRVMKKygnWzEsMV0n LCAnWzIwMTgtMDEtMDIsMjAxOC0wMi0wMyknLCAnb25lJyksCisoJ1sxLDFdJywgJ1syMDE4 LTAyLTAzLDIwMTgtMDMtMDMpJywgJ29uZScpLAorKCdbMSwxXScsICdbMjAxOC0wMy0wMywy MDE4LTA0LTA0KScsICdvbmUnKSwKKygnWzIsMl0nLCAnWzIwMTgtMDEtMDEsMjAxOC0wMS0w NSknLCAndHdvJyksCisoJ1szLDNdJywgJ1syMDE4LTAxLTAxLCknLCAndGhyZWUnKSwKKygn WzQsNF0nLCAnKCwyMDE4LTA0LTAxKScsICdmb3VyJyksCisoJ1s1LDVdJywgJygsKScsICdm aXZlJykKKzsKKworLS0KKy0tIFVQREFURSB0ZXN0cworLS0KKworLS0gU2V0dGluZyB3aXRo IGEgbWlzc2luZyBjb2x1bW4gZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiBpbnZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIE5VTEwKK1NF VCBuYW1lID0gJ2ZvbycKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKworLS0gU2V0dGluZyB0aGUg cmFuZ2UgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCitTRVQgdmFsaWRfYXQgPSAn WzE5OTAtMDEtMDEsMTk5OS0wMS0wMSknCitXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tIFRo ZSB3cm9uZyB0eXBlIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAxIFRPIDQKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVS RSBpZCA9ICdbMywzXSc7CisKKy0tIFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIHJldmVyc2Vk IGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEtMDEnCitTRVQgbmFtZSA9ICd0 aHJlZV4xJworV0hFUkUgaWQgPSAnWzMsM10nOworCistLSBTZXR0aW5nIHdpdGggYSBzdWJx dWVyeSBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gKFNFTEVDVCAnMjAxOC0wMS0wMScpIFRPICcyMDE4LTA2LTAxJwor U0VUIG5hbWUgPSAnbm9wZScKK1dIRVJFIGlkID0gJ1szLDNdJzsKKworLS0gU2V0dGluZyB3 aXRoIGEgY29sdW1uIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSBsb3dlcih2YWxpZF9hdCkgVE8gTlVMTAorU0VUIG5h bWUgPSAnbm9wZScKK1dIRVJFIGlkID0gJ1szLDNdJzsKKworLS0gU2V0dGluZyB3aXRoIHRp bWVzdGFtcHMgZXF1YWwgZG9lcyBub3RoaW5nCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gJzIwMTgt MDQtMDEnCitTRVQgbmFtZSA9ICd0aHJlZV4wJworV0hFUkUgaWQgPSAnWzMsM10nOworCist LSBVcGRhdGluZyBhIGZpbml0ZS9vcGVuIHBvcnRpb24gd2l0aCBhIGZpbml0ZS9vcGVuIHRh cmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gJ3RocmVlXjEnCitX SEVSRSBpZCA9ICdbMywzXSc7CisKKy0tIFVwZGF0aW5nIGEgZmluaXRlL29wZW4gcG9ydGlv biB3aXRoIGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyAnMjAxOC0wMy0wMScK K1NFVCBuYW1lID0gJ3RocmVlXjInCitXSEVSRSBpZCA9ICdbMywzXSc7CisKKy0tIFVwZGF0 aW5nIGFuIG9wZW4vZmluaXRlIHBvcnRpb24gd2l0aCBhbiBvcGVuL2Zpbml0ZSB0YXJnZXQK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NIE5VTEwgVE8gJzIwMTgtMDItMDEnCitTRVQgbmFtZSA9ICdmb3VyXjEnCitXSEVSRSBp ZCA9ICdbNCw0XSc7CisKKy0tIFVwZGF0aW5nIGFuIG9wZW4vZmluaXRlIHBvcnRpb24gd2l0 aCBhIGZpbml0ZS9vcGVuIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTctMDEtMDEnIFRPIE5VTEwKK1NFVCBu YW1lID0gJ2ZvdXJeMicKK1dIRVJFIGlkID0gJ1s0LDRdJzsKKworLS0gVXBkYXRpbmcgYSBm aW5pdGUvZmluaXRlIHBvcnRpb24gd2l0aCBhbiBleGFjdCBmaXQKK1VQREFURSBmb3JfcG9y dGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3LTAxLTAx JyBUTyAnMjAxOC0wMi0wMScKK1NFVCBuYW1lID0gJ2ZvdXJeMycKK1dIRVJFIGlkID0gJ1s0 LDRdJzsKKworLS0gVXBkYXRpbmcgYW4gZW5jbG9zZWQgc3BhbgorVVBEQVRFIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxM CitTRVQgbmFtZSA9ICd0d29eMicKK1dIRVJFIGlkID0gJ1syLDJdJzsKKworLS0gVXBkYXRp bmcgYW4gb3Blbi9vcGVuIHBvcnRpb24gd2l0aCBhIGZpbml0ZS9maW5pdGUgdGFyZ2V0CitV UERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOC0wMS0wMScgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdmaXZlXjInCitX SEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tIFVwZGF0aW5nIGFuIGVuY2xvc2VkIHNwYW4gd2l0 aCBzZXBhcmF0ZSBwcm90cnVkaW5nIHNwYW5zCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gJzIwMjAt MDEtMDEnCitTRVQgbmFtZSA9ICdmaXZlXjMnCitXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0t IFVwZGF0aW5nIG11bHRpcGxlIGVuY2xvc2VkIHNwYW5zCitVUERBVEUgZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1NF VCBuYW1lID0gJ29uZV4yJworV0hFUkUgaWQgPSAnWzEsMV0nOworCistLSBVcGRhdGluZyB3 aXRoIGEgc2hpZnQvcmVkdWNlIGNvbmZsaWN0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQKKyAgRlJPTSAnMjAxOC0wMy0wMScgQVQgVElN RSBaT05FIElOVEVSVkFMICcxJyBIT1VSIFRPIE1JTlVURQorICBUTyAnMjAxOS0wMS0wMScK K1NFVCBuYW1lID0gJ29uZV4zJworV0hFUkUgaWQgPSAnWzEsMV0nOworCitVUERBVEUgZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQKKyAgRlJPTSAnMjAx OC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcyJyBIT1VSCisgIFRPICcyMDE5LTAx LTAxJworU0VUIG5hbWUgPSAnb25lXjQnCitXSEVSRSBpZCA9ICdbMSwxXSc7CisKK1VQREFU RSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9N ICgnMjAxOC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcyJyBIT1VSKQorICBUTyAn MjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV40JworV0hFUkUgaWQgPSAnWzEsMV0nOwor CistLSBXaXRoIGEgZGlyZWN0IHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0ICh0c3JhbmdlKCcyMDE4LTAzLTEwJywgJzIwMTgt MDMtMTcnKSkKK1NFVCBuYW1lID0gJ29uZV41JworV0hFUkUgaWQgPSAnWzEsMV0nOworCist LSBVcGRhdGluZyB0aGUgbm9uLXJhbmdlIHBhcnQgb2YgdGhlIFBLOgorVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDIt MTUnIFRPIE5VTEwKK1NFVCBpZCA9ICdbNiw2XScKK1dIRVJFIGlkID0gJ1sxLDFdJzsKKwor LS0gVVBEQVRFIHdpdGggbm8gV0hFUkUgY2xhdXNlCitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAzMC0wMS0wMScgVE8gTlVM TAorU0VUIG5hbWUgPSBuYW1lIHx8ICcqJzsKKworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlv bl9vZl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKworLS0KKy0tIERFTEVURSB0ZXN0 cworLS0KKworLS0gRGVsZXRpbmcgd2l0aCBhIG1pc3NpbmcgY29sdW1uIGZhaWxzCitERUxF VEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiBpbnZhbGlkX2F0 IEZST00gJzIwMTgtMDYtMDEnIFRPIE5VTEwKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKworLS0g RGVsZXRpbmcgd2l0aCB0aW1lc3RhbXBzIHJldmVyc2VkIGZhaWxzCitERUxFVEUgRlJPTSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4 LTA2LTAxJyBUTyAnMjAxOC0wMS0wMScKK1dIRVJFIGlkID0gJ1szLDNdJzsKKworLS0gRGVs ZXRpbmcgd2l0aCB0aW1lc3RhbXBzIGVxdWFsIGRvZXMgbm90aGluZworREVMRVRFIEZST00g Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAx OC0wNC0wMScgVE8gJzIwMTgtMDQtMDEnCitXSEVSRSBpZCA9ICdbMywzXSc7CisKKy0tIERl bGV0aW5nIHdpdGggYSBjbG9zZWQvY2xvc2VkIHRhcmdldAorREVMRVRFIEZST00gZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0w MScgVE8gJzIwMjAtMDYtMDEnCitXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tIERlbGV0aW5n IHdpdGggYSBjbG9zZWQvb3BlbiB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPIE5V TEwKK1dIRVJFIGlkID0gJ1szLDNdJzsKKworLS0gRGVsZXRpbmcgd2l0aCBhbiBvcGVuL2Ns b3NlZCB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyAnMjAxOC0wMi0wOCcKK1dIRVJFIGlkID0g J1sxLDFdJzsKKworLS0gRGVsZXRpbmcgd2l0aCBhbiBvcGVuL29wZW4gdGFyZ2V0CitERUxF VEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NIE5VTEwgVE8gTlVMTAorV0hFUkUgaWQgPSAnWzYsNl0nOworCistLSBERUxFVEUgd2l0 aCBubyBXSEVSRSBjbGF1c2UKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjUtMDEtMDEnIFRPIE5VTEw7CisKK1NF TEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7 CisKKy0tIFVQREFURSAuLi4gUkVUVVJOSU5HIHJldHVybnMgb25seSB0aGUgdXBkYXRlZCB2 YWx1ZXMgKG5vdCB0aGUgaW5zZXJ0ZWQgc2lkZSB2YWx1ZXMpCitVUERBVEUgZm9yX3BvcnRp b25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMi0wMScg VE8gJzIwMTgtMDItMTUnCitTRVQgbmFtZSA9ICd0aHJlZV4zJworV0hFUkUgaWQgPSAnWzMs M10nCitSRVRVUk5JTkcgKjsKKworLS0gdGVzdCB0aGF0IHdlIHJ1biB0cmlnZ2VycyBvbiB0 aGUgVVBEQVRFL0RFTEVURWQgcm93IGFuZCB0aGUgSU5TRVJUZWQgcm93cworCitDUkVBVEUg RlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpCitSRVRVUk5TIHRyaWdnZXIKK0FT CiskJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICclICUgJSBvZiAlJywgVEdfV0hFTiwgVEdf T1AsIE5FVy52YWxpZF9hdCwgT0xELnZhbGlkX2F0OworICBJRiBUR19PUCA9ICdERUxFVEUn IFRIRU4KKyAgICBSRVRVUk4gT0xEOworICBFTFNFCisgICAgUkVUVVJOIE5FVzsKKyAgRU5E IElGOworRU5EOworJCQKK0xBTkdVQUdFIHBscGdzcWw7CisKK0NSRUFURSBUUklHR0VSIHRy Z19mb3JfcG9ydGlvbl9vZl9iZWZvcmUKKyAgQkVGT1JFIElOU0VSVCBPUiBVUERBVEUgT1Ig REVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNV VEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOworQ1JFQVRFIFRSSUdHRVIg dHJnX2Zvcl9wb3J0aW9uX29mX2FmdGVyCisgIEFGVEVSIElOU0VSVCBPUiBVUERBVEUgT1Ig REVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNV VEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOworCitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyMS0wMS0w MScgVE8gJzIwMjItMDEtMDEnCitTRVQgbmFtZSA9ICdmaXZlXjQnCitXSEVSRSBpZCA9ICdb NSw1XSc7CisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMjMtMDEtMDEnIFRPICcyMDI0LTAxLTAxJworV0hFUkUg aWQgPSAnWzUsNV0nOworCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JE RVIgQlkgaWQsIHZhbGlkX2F0OworRFJPUCBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmln Z2VyIENBU0NBREU7CisKKy0tIFRyaWdnZXJzIHdpdGggYSBjdXN0b20gdHJhbnNpdGlvbiB0 YWJsZSBuYW1lOgorCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CitDUkVBVEUg VEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWRf YXQgZGF0ZXJhbmdlLAorICBuYW1lIHRleHQKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlv bl9vZl90ZXN0IFZBTFVFUyAoJ1sxLDFdJywgJ1syMDE4LTAxLTAxLDIwMjAtMDEtMDEpJywg J29uZScpOworCitDUkVBVEUgRlVOQ1RJT04gZHVtcF90cmlnZ2VyKCkKK1JFVFVSTlMgVFJJ R0dFUiBMQU5HVUFHRSBwbHBnc3FsIEFTCiskJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICdU R19PUCA9ICUnLCBUR19PUDsKKyAgSUYgVEdfT1AgPSAnSU5TRVJUJyBUSEVOCisgICAgUkFJ U0UgTk9USUNFICd0cmlnZ2VyID0gJSwgVEdfTEVWRUwgPSAlLCBORVcgdGFibGUgPSAlJywK KyAgICAgIFRHX05BTUUsIFRHX0xFVkVMLCAoU0VMRUNUIHN0cmluZ19hZ2cobmV3X3RhYmxl Ojp0ZXh0LCAnLCAnIE9SREVSIEJZIGlkKSBGUk9NIG5ld190YWJsZSk7CisgIEVMU0lGIFRH X09QID0gJ1VQREFURScgVEhFTgorICAgIFJBSVNFIE5PVElDRSAndHJpZ2dlciA9ICUsIFRH X0xFVkVMID0gJSwgT0xEIHRhYmxlID0gJSwgTkVXIHRhYmxlID0gJScsCisgICAgICBUR19O QU1FLCBUR19MRVZFTCwKKyAgICAgIChTRUxFQ1Qgc3RyaW5nX2FnZyhvbGRfdGFibGU6OnRl eHQsICcsICcgT1JERVIgQlkgaWQpIEZST00gb2xkX3RhYmxlKSwKKyAgICAgIChTRUxFQ1Qg c3RyaW5nX2FnZyhuZXdfdGFibGU6OnRleHQsICcsICcgT1JERVIgQlkgaWQpIEZST00gbmV3 X3RhYmxlKTsKKyAgRUxTSUYgVEdfT1AgPSAnREVMRVRFJyBUSEVOCisgICAgUkFJU0UgTk9U SUNFICd0cmlnZ2VyID0gJSwgVEdfTEVWRUwgPSAlLCBPTEQgdGFibGUgPSAlJywKKyAgICAg IFRHX05BTUUsIFRHX0xFVkVMLCAoU0VMRUNUIHN0cmluZ19hZ2cob2xkX3RhYmxlOjp0ZXh0 LCAnLCAnIE9SREVSIEJZIGlkKSBGUk9NIG9sZF90YWJsZSk7CisgIEVORCBJRjsKKyAgUkVU VVJOIE5VTEw7CitFTkQ7CiskJDsKKworQ1JFQVRFIFRSSUdHRVIgZm9yX3BvcnRpb25fb2Zf dGVzdF9pbnNlcnRfdHJpZworQUZURVIgSU5TRVJUIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QK K1JFRkVSRU5DSU5HIE5FVyBUQUJMRSBBUyBuZXdfdGFibGUKK0ZPUiBFQUNIIFJPVyBFWEVD VVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoKTsKKworQ1JFQVRFIFRSSUdHRVIgZm9yX3Bv cnRpb25fb2ZfdGVzdF9pbnNlcnRfdHJpZ19zdG10CitBRlRFUiBJTlNFUlQgT04gZm9yX3Bv cnRpb25fb2ZfdGVzdAorUkVGRVJFTkNJTkcgTkVXIFRBQkxFIEFTIG5ld190YWJsZQorRk9S IEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBfdHJpZ2dlcigpOworCitD UkVBVEUgVFJJR0dFUiBmb3JfcG9ydGlvbl9vZl90ZXN0X3VwZGF0ZV90cmlnCitBRlRFUiBV UERBVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorUkVGRVJFTkNJTkcgT0xEIFRBQkxFIEFT IG9sZF90YWJsZSBORVcgVEFCTEUgQVMgbmV3X3RhYmxlCitGT1IgRUFDSCBST1cgRVhFQ1VU RSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKCk7CisKK0NSRUFURSBUUklHR0VSIGZvcl9wb3J0 aW9uX29mX3Rlc3RfdXBkYXRlX3RyaWdfc3RtdAorQUZURVIgVVBEQVRFIE9OIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK1JFRkVSRU5DSU5HIE9MRCBUQUJMRSBBUyBvbGRfdGFibGUgTkVXIFRB QkxFIEFTIG5ld190YWJsZQorRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJF IGR1bXBfdHJpZ2dlcigpOworCitDUkVBVEUgVFJJR0dFUiBmb3JfcG9ydGlvbl9vZl90ZXN0 X2RlbGV0ZV90cmlnCitBRlRFUiBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorUkVG RVJFTkNJTkcgT0xEIFRBQkxFIEFTIG9sZF90YWJsZQorRk9SIEVBQ0ggUk9XIEVYRUNVVEUg UFJPQ0VEVVJFIGR1bXBfdHJpZ2dlcigpOworCitDUkVBVEUgVFJJR0dFUiBmb3JfcG9ydGlv bl9vZl90ZXN0X2RlbGV0ZV90cmlnX3N0bXQKK0FGVEVSIERFTEVURSBPTiBmb3JfcG9ydGlv bl9vZl90ZXN0CitSRUZFUkVOQ0lORyBPTEQgVEFCTEUgQVMgb2xkX3RhYmxlCitGT1IgRUFD SCBTVEFURU1FTlQgRVhFQ1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKCk7CisKK0JFR0lO OworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gJzIwMTktMDEtMDEnCisgIFNFVCBuYW1lID0gJzIw MTgtMDEtMTVfdG9fMjAxOS0wMS0wMSc7CitST0xMQkFDSzsKKworQkVHSU47CitERUxFVEUg RlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gTlVMTCBUTyAnMjAxOC0wMS0yMSc7CitST0xMQkFDSzsKKworQkVHSU47CitVUERBVEUg Zm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5V TEwgVE8gJzIwMTgtMDEtMDInCisgIFNFVCBuYW1lID0gJ05VTExfdG9fMjAxOC0wMS0wMSc7 CitST0xMQkFDSzsKKworLS0gVGVzdCB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGUKKworQ1JF QVRFIFRZUEUgbXlkYXRlcmFuZ2UgQVMgcmFuZ2Uoc3VidHlwZT1kYXRlKTsKKworQ1JFQVRF IFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QyICgKKyAgaWQgaW50NHJhbmdlIE5PVCBOVUxM LAorICB2YWxpZF9hdCBteWRhdGVyYW5nZSBOT1QgTlVMTCwKKyAgbmFtZSB0ZXh0IE5PVCBO VUxMLAorCUNPTlNUUkFJTlQgZm9yX3BvcnRpb25fb2ZfdGVzdDJfcGsgUFJJTUFSWSBLRVkg KGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIGZvcl9w b3J0aW9uX29mX3Rlc3QyCitWQUxVRVMKKygnWzEsMV0nLCAnWzIwMTgtMDEtMDIsMjAxOC0w Mi0wMyknLCAnb25lJyksCisoJ1sxLDFdJywgJ1syMDE4LTAyLTAzLDIwMTgtMDMtMDMpJywg J29uZScpLAorKCdbMSwxXScsICdbMjAxOC0wMy0wMywyMDE4LTA0LTA0KScsICdvbmUnKSwK KygnWzIsMl0nLCAnWzIwMTgtMDEtMDEsMjAxOC0wNS0wMSknLCAndHdvJyksCisoJ1szLDNd JywgJ1syMDE4LTAxLTAxLCknLCAndGhyZWUnKTsKKzsKKworVVBEQVRFIGZvcl9wb3J0aW9u X29mX3Rlc3QyCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTEwJyBU TyAnMjAxOC0wMi0xMCcKK1NFVCBuYW1lID0gJ29uZV4xJworV0hFUkUgaWQgPSAnWzEsMV0n OworCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0MgorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gJzIwMTgtMDItMTUnCitXSEVSRSBpZCA9 ICdbMiwyXSc7CisKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDIgT1JERVIg QlkgaWQsIHZhbGlkX2F0OworCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QyOwor RFJPUCBUWVBFIG15ZGF0ZXJhbmdlOworCistLSBUZXN0IEZPUiBQT1JUSU9OIE9GIGFnYWlu c3QgYSBwYXJ0aXRpb25lZCB0YWJsZS4KKy0tIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzEgaGFz IHRoZSBzYW1lIGF0dG51bXMgYXMgdGhlIHJvb3QKKy0tIHRlbXBvcmFsX3BhcnRpdGlvbmVk XzMgaGFzIHRoZSBkaWZmZXJlbnQgYXR0bnVtcyBmcm9tIHRoZSByb290CistLSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF81IGhhcyB0aGUgZGlmZmVyZW50IGF0dG51bXMgdG9vLCBidXQgcmV2 ZXJzZWQKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkICgKKwlpZCBpbnQ0 cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorICBuYW1lIHRleHQsCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCispIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfcGFydGl0aW9uZWRfMSBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQg Rk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1syLDJdJyk7CitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfMyBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9S IFZBTFVFUyBJTiAoJ1szLDNdJywgJ1s0LDRdJyk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfNSBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZB TFVFUyBJTiAoJ1s1LDVdJywgJ1s2LDZdJyk7CisKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkIERFVEFDSCBQQVJUSVRJT04gdGVtcG9yYWxfcGFydGl0aW9uZWRfMzsKK0FM VEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgRFJPUCBDT0xVTU4gaWQsIERST1Ag Q09MVU1OIHZhbGlkX2F0OworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBB REQgQ09MVU1OIGlkIGludDRyYW5nZSBOT1QgTlVMTCwgQUREIENPTFVNTiB2YWxpZF9hdCBk YXRlcmFuZ2UgTk9UIE5VTEw7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBB VFRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgRk9SIFZBTFVFUyBJTiAo J1szLDNdJywgJ1s0LDRdJyk7CisKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVk IERFVEFDSCBQQVJUSVRJT04gdGVtcG9yYWxfcGFydGl0aW9uZWRfNTsKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgRFJPUCBDT0xVTU4gaWQsIERST1AgQ09MVU1OIHZh bGlkX2F0OworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBBREQgQ09MVU1O IHZhbGlkX2F0IGRhdGVyYW5nZSBOT1QgTlVMTCwgQUREIENPTFVNTiBpZCBpbnQ0cmFuZ2Ug Tk9UIE5VTEw7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFS VElUSU9OIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgRk9SIFZBTFVFUyBJTiAoJ1s1LDVdJywg J1s2LDZdJyk7CisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIFZBTFVFUwor ICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ29u ZScpLAorICAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEn KSwgJ3RocmVlJyksCisgICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAx MC0wMS0wMScpLCAnZml2ZScpOworCitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkOworCistLSBVcGRhdGUgd2l0aG91dCBtb3Zpbmcgd2l0aGluIHBhcnRpdGlvbiAxCitV UERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAwMC0wMy0wMScgVE8gJzIwMDAtMDQtMDEnCisgIFNFVCBuYW1lID0gJ29uZV4xJwor ICBXSEVSRSBpZCA9ICdbMSwxXSc7CisKKy0tIFVwZGF0ZSB3aXRob3V0IG1vdmluZyB3aXRo aW4gcGFydGl0aW9uIDMKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAzLTAxJyBUTyAnMjAwMC0wNC0wMScKKyAgU0VU IG5hbWUgPSAndGhyZWVeMScKKyAgV0hFUkUgaWQgPSAnWzMsM10nOworCistLSBVcGRhdGUg d2l0aG91dCBtb3Zpbmcgd2l0aGluIHBhcnRpdGlvbiA1CitVUERBVEUgdGVtcG9yYWxfcGFy dGl0aW9uZWQgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMy0wMScgVE8g JzIwMDAtMDQtMDEnCisgIFNFVCBuYW1lID0gJ2ZpdmVeMScKKyAgV0hFUkUgaWQgPSAnWzUs NV0nOworCistLSBNb3ZlIGZyb20gcGFydGl0aW9uIDEgdG8gcGFydGl0aW9uIDMKK1VQREFU RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDAwLTA2LTAxJyBUTyAnMjAwMC0wNy0wMScKKyAgU0VUIG5hbWUgPSAnb25lXjInLAorICAg ICAgaWQgPSAnWzQsNF0nCisgIFdIRVJFIGlkID0gJ1sxLDFdJzsKKworLS0gTW92ZSBmcm9t IHBhcnRpdGlvbiAzIHRvIHBhcnRpdGlvbiAxCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9u ZWQgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNi0wMScgVE8gJzIwMDAt MDctMDEnCisgIFNFVCBuYW1lID0gJ3RocmVlXjInLAorICAgICAgaWQgPSAnWzIsMl0nCisg IFdIRVJFIGlkID0gJ1szLDNdJzsKKworLS0gTW92ZSBmcm9tIHBhcnRpdGlvbiA1IHRvIHBh cnRpdGlvbiAzCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAwMC0wNi0wMScgVE8gJzIwMDAtMDctMDEnCisgIFNFVCBuYW1l ID0gJ2ZpdmVeMicsCisgICAgICBpZCA9ICdbMywzXScKKyAgV0hFUkUgaWQgPSAnWzUsNV0n OworCistLSBVcGRhdGUgYWxsIHBhcnRpdGlvbnMgYXQgb25jZSAoZWFjaCB3aXRoIGxlZnRv dmVycykKKworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBp ZCwgdmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzEgT1JE RVIgQlkgaWQsIHZhbGlkX2F0OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF8zIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFy dGl0aW9uZWRfNSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisKK0RST1AgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9vcHJf c2FuaXR5LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29wcl9zYW5pdHkuc3FsCmluZGV4 IDJmZTdiNmRjYzQ5Li4yZGZmZTdjNWI2YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvb3ByX3Nhbml0eS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvb3ByX3Nh bml0eS5zcWwKQEAgLTEyNDEsNiArMTI0MSw3IEBAIFdIRVJFIGExLmFtb3BmYW1pbHkgPSAw IE9SIGExLmFtb3BsZWZ0dHlwZSA9IDAgT1IgYTEuYW1vcHJpZ2h0dHlwZSA9IDAKIFNFTEVD VCBhMS5hbW9wZmFtaWx5LCBhMS5hbW9wc3RyYXRlZ3kKIEZST00gcGdfYW1vcCBhcyBhMQog V0hFUkUgTk9UICgoYTEuYW1vcHB1cnBvc2UgPSAncycgQU5EIGExLmFtb3Bzb3J0ZmFtaWx5 ID0gMCkgT1IKKyAgICAgICAgICAgKGExLmFtb3BwdXJwb3NlID0gJ3AnIEFORCBhMS5hbW9w c29ydGZhbWlseSA9IDApIE9SCiAgICAgICAgICAgIChhMS5hbW9wcHVycG9zZSA9ICdvJyBB TkQgYTEuYW1vcHNvcnRmYW1pbHkgPD4gMCkpOwogCiAtLSBhbW9wbWV0aG9kIG11c3QgbWF0 Y2ggb3duaW5nIG9wZmFtaWx5J3Mgb3BmbWV0aG9kCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wcml2aWxlZ2VzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByaXZp bGVnZXMuc3FsCmluZGV4IDNmNjhjYWZjZDFlLi5lMTBhZGRlZDlkOSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcHJpdmlsZWdlcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcHJpdmlsZWdlcy5zcWwKQEAgLTcxMyw2ICs3MTMsMjQgQEAgVVBEQVRFIGVy cnRzdCBTRVQgYSA9ICdhYWFhJywgYiA9IE5VTEwgV0hFUkUgYSA9ICdhYWEnOwogU0VUIFNF U1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CiBEUk9QIFRBQkxFIGVy cnRzdDsKIAorLS0gdGVzdCBjb2x1bW4tbGV2ZWwgcHJpdmlsZWdlcyBvbiB0aGUgcmFuZ2Uv UEVSSU9EIHVzZWQgaW4gRk9SIFBPUlRJT04gT0YKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJ T04gcmVncmVzc19wcml2X3VzZXIxOworQ1JFQVRFIFRBQkxFIHQxICgKKyAgYzEgaW50NHJh bmdlLAorICB2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdDFwayBQUklNQVJZIEtF WSAoYzEsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworR1JBTlQgU0VMRUNUIE9O IHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMjsKK0dSQU5UIFNFTEVDVCBPTiB0MSBUTyByZWdy ZXNzX3ByaXZfdXNlcjM7CitHUkFOVCBVUERBVEUgKGMxKSBPTiB0MSBUTyByZWdyZXNzX3By aXZfdXNlcjI7CitHUkFOVCBVUERBVEUgKGMxLCB2YWxpZF9hdCkgT04gdDEgVE8gcmVncmVz c19wcml2X3VzZXIzOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZf dXNlcjI7CitVUERBVEUgdDEgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0w MS0wMScgVE8gJzIwMDEtMDEtMDEnIFNFVCBjMSA9ICdbMiwzKSc7CitTRVQgU0VTU0lPTiBB VVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMzsKK1VQREFURSB0MSBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTAxJyBUTyAnMjAwMS0wMS0wMScgU0VUIGMx ID0gJ1syLDMpJzsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3Vz ZXIxOworRFJPUCBUQUJMRSB0MTsKKwogLS0gdGVzdCBjb2x1bW4tbGV2ZWwgcHJpdmlsZWdl cyB3aGVuIGludm9sdmVkIHdpdGggREVMRVRFCiBTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9O IHJlZ3Jlc3NfcHJpdl91c2VyMTsKIEFMVEVSIFRBQkxFIGF0ZXN0NiBBREQgQ09MVU1OIHRo cmVlIGludGVnZXI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC91cGRhdGFi bGVfdmlld3Muc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNx bAppbmRleCBlYWVlMGI3ZTFkNy4uZjgxNDcwMWE0M2EgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNxbApAQCAtMTU0MSw2ICsxNTQxLDIwIEBAIHNlbGVj dCAqIGZyb20gdXZfaW9jdV90YWI7CiBkcm9wIHZpZXcgdXZfaW9jdV92aWV3OwogZHJvcCB0 YWJsZSB1dl9pb2N1X3RhYjsKIAorLS0gQ2hlY2sgVVBEQVRFIEZPUiBQT1JUSU9OIE9GIHdv cmtzIGNvcnJlY3RseQorY3JlYXRlIHRhYmxlIHV2X2Zwb190YWIgKGlkIGludDRyYW5nZSwg dmFsaWRfYXQgdHNyYW5nZSwgYiBmbG9hdCwKKyAgICBjb25zdHJhaW50IHBrX3V2X2Zwb190 YWIgcHJpbWFyeSBrZXkgKGlkLCB2YWxpZF9hdCB3aXRob3V0IG92ZXJsYXBzKSk7CitpbnNl cnQgaW50byB1dl9mcG9fdGFiIHZhbHVlcyAoJ1sxLDFdJywgJ1syMDIwLTAxLTAxLCAyMDMw LTAxLTAxKScsIDApOworY3JlYXRlIHZpZXcgdXZfZnBvX3ZpZXcgYXMKKyAgICBzZWxlY3Qg YiwgYisxIGFzIGMsIHZhbGlkX2F0LCBpZCwgJzIuMCc6OnRleHQgYXMgdHdvIGZyb20gdXZf ZnBvX3RhYjsKKworaW5zZXJ0IGludG8gdXZfZnBvX3ZpZXcgKGlkLCB2YWxpZF9hdCwgYikg dmFsdWVzICgnWzEsMV0nLCAnWzIwMTAtMDEtMDEsIDIwMjAtMDEtMDEpJywgMSk7CitzZWxl Y3QgKiBmcm9tIHV2X2Zwb192aWV3OwordXBkYXRlIHV2X2Zwb192aWV3IGZvciBwb3J0aW9u IG9mIHZhbGlkX2F0IGZyb20gJzIwMTUtMDEtMDEnIHRvICcyMDIwLTAxLTAxJyBzZXQgYiA9 IDIgd2hlcmUgaWQgPSAnWzEsMV0nOworc2VsZWN0ICogZnJvbSB1dl9mcG9fdmlldzsKK2Rl bGV0ZSBmcm9tIHV2X2Zwb192aWV3IGZvciBwb3J0aW9uIG9mIHZhbGlkX2F0IGZyb20gJzIw MTctMDEtMDEnIHRvICcyMDIyLTAxLTAxJyB3aGVyZSBpZCA9ICdbMSwxXSc7CitzZWxlY3Qg KiBmcm9tIHV2X2Zwb192aWV3OworCiAtLSBUZXN0IHdob2xlLXJvdyByZWZlcmVuY2VzIHRv IHRoZSB2aWV3CiBjcmVhdGUgdGFibGUgdXZfaW9jdV90YWIgKGEgaW50IHVuaXF1ZSwgYiB0 ZXh0KTsKIGNyZWF0ZSB2aWV3IHV2X2lvY3VfdmlldyBhcwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAppbmRleCA2NDFjZGQ1YjE5Zi4uOTViNmRhNGMw NzYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMu c3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBA IC0yMzEsNiArMjMxLDIwIEBAIElOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0 LCBpZDIsIG5hbWUpCiAgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAx MC0wMS0wMScpLCAnWzcsN10nLCAnZm9vJyksCiAgICgnWzIsMl0nLCBkYXRlcmFuZ2UoJzIw MDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzksOV0nLCAnYmFyJykKIDsKK1VQREFURSB0 ZW1wb3JhbDMgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNS0wMScgVE8g JzIwMDAtMDctMDEnCisgIFNFVCBuYW1lID0gbmFtZSB8fCAnMSc7CitVUERBVEUgdGVtcG9y YWwzIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDQtMDEnIFRPICcyMDAw LTA2LTAxJworICBTRVQgbmFtZSA9IG5hbWUgfHwgJzInCisgIFdIRVJFIGlkID0gJ1syLDJd JzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWwzIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKy0t IGNvbmZsaWN0aW5nIGlkIG9ubHk6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxp ZF9hdCwgaWQyLCBuYW1lKQorICBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAw NS0wMS0wMScsICcyMDA2LTAxLTAxJyksICdbOCw4XScsICdmb28zJyk7CistLSBjb25mbGlj dGluZyBpZDIgb25seToKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBp ZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAx JywgJzIwMTAtMDEtMDEnKSwgJ1s5LDldJywgJ2JhcjMnKTsKIERST1AgVEFCTEUgdGVtcG9y YWwzOwogCiAtLQpAQCAtMjY5LDYgKzI4MywyMiBAQCBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZCBWQUxVRVMKIFNFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQg T1JERVIgQlkgaWQsIHZhbGlkX2F0OwogU0VMRUNUICogRlJPTSB0cDEgT1JERVIgQlkgaWQs IHZhbGlkX2F0OwogU0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0Owor VVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAgU0VUIG5hbWUgPSAnb25l MicKKyAgV0hFUkUgaWQgPSAnWzEsMV0nOworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25l ZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAyLTIwJyBUTyAnMjAw MC0wMi0yNScKKyAgU0VUIGlkID0gJ1s0LDRdJworICBXSEVSRSBuYW1lID0gJ29uZSc7CitV UERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMDItMDEtMDEnIFRPICcyMDAzLTAxLTAxJworICBTRVQgaWQgPSAnWzIsMl0n CisgIFdIRVJFIG5hbWUgPSAndGhyZWUnOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0xNScgVE8g JzIwMDAtMDItMTUnCisgIFdIRVJFIGlkID0gJ1szLDNdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogRFJPUCBUQUJMRSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZDsKIAogLS0gdGVtcG9yYWwgVU5JUVVFOgpAQCAtMjg3LDYg KzMxNywyMiBAQCBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKIFNF TEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0 OwogU0VMRUNUICogRlJPTSB0cDEgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogU0VMRUNUICog RlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0 aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBU TyAnMjAwMC0wMi0xNScKKyAgU0VUIG5hbWUgPSAnb25lMicKKyAgV0hFUkUgaWQgPSAnWzEs MV0nOworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDAwLTAyLTIwJyBUTyAnMjAwMC0wMi0yNScKKyAgU0VUIGlkID0g J1s0LDRdJworICBXSEVSRSBuYW1lID0gJ29uZSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRp dGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDItMDEtMDEnIFRP ICcyMDAzLTAxLTAxJworICBTRVQgaWQgPSAnWzIsMl0nCisgIFdIRVJFIG5hbWUgPSAndGhy ZWUnOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0xNScgVE8gJzIwMDAtMDItMTUnCisgIFdIRVJF IGlkID0gJ1szLDNdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JE RVIgQlkgaWQsIHZhbGlkX2F0OwogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsK IAogLS0KQEAgLTU1NiwxMyArNjAyLDIzIEBAIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIC0tIGNoYW5n aW5nIHRoZSBzY2FsYXIgcGFydCBmYWlsczoKIFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlk ID0gJ1s3LDddJwogV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2hhbmdpbmcgYW4gdW5yZWZlcmVu Y2VkIHBhcnQgaXMgb2theToKK1VQREFURSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDInIFRPICcyMDE4LTAxLTAzJworU0VUIGlkID0g J1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gY2hhbmdpbmcganVzdCBhIHBhcnQg ZmFpbHM6CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcKK1NFVCBpZCA9ICdbNyw3XScKK1dI RVJFIGlkID0gJ1s1LDVdJzsKIC0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVj b3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6CiBERUxFVEUgRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKIFVQREFURSB0ZW1wb3JhbF9y bmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykK IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKIC0tIGNsZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwotREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Ju ZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJywgJ1s3LDddJyk7CiAKIC0tCiAtLSB0ZXN0IEZLIHBh cmVudCB1cGRhdGVzIFJFU1RSSUNUCkBAIC01OTEsMTMgKzY0NywyMyBAQCBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CiAtLSBjaGFuZ2luZyB0aGUgc2NhbGFyIHBhcnQgZmFpbHM6CiBVUERBVEUgdGVt cG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3XScKIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNoYW5n aW5nIGFuIHVucmVmZXJlbmNlZCBwYXJ0IGlzIG9rYXk6CitVUERBVEUgdGVtcG9yYWxfcm5n CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0w MS0wMycKK1NFVCBpZCA9ICdbNyw3XScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGNoYW5n aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCitTRVQg aWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XSc7CiAtLSB0aGVuIGRlbGV0ZSB0aGUg b2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgog REVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBV UERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEn LCAnMjAxNi0wMi0wMScpCiBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CiAtLSBjbGVhbiB1cDoKIERFTEVU RSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsK LURFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScsICdbNyw3XScpOwogLS0K IC0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCiAtLQpAQCAtNjE3LDE0ICs2 ODMsMjQgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywz XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0KIERFTEVURSBGUk9NIHRlbXBv cmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAx OC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CiAtLSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJl Y2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJyk7CistLSBkZWxldGluZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBv a2F5OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycKK1dIRVJFIGlkID0gJ1s1LDVd JzsKKy0tIGRlbGV0aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorREVMRVRFIEZST00gdGVtcG9y YWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAn MjAxOC0wMS0xMCcKK1dIRVJFIGlkID0gJ1s1LDVdJzsKIC0tIHRoZW4gZGVsZXRlIHRoZSBv YmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CiBE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKIERF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0 ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoK K0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1 LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7 CiAKIC0tCiAtLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCiAtLQotCiBBTFRF UiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJybmdfZms7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCkBAIC02 NDEsOSArNzE3LDIwIEBAIElOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVT ICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtCiBERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFu Z2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOwogLS0gYSBQSyBkZWxldGUgdGhhdCBm YWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CiBERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gZGVsZXRpbmcgYW4gdW5yZWZlcmVuY2VkIHBh cnQgaXMgb2theToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMicgVE8gJzIwMTgtMDEtMDMnCitXSEVSRSBpZCA9 ICdbNSw1XSc7CistLSBkZWxldGluZyBqdXN0IGEgcGFydCBmYWlsczoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0w NScgVE8gJzIwMTgtMDEtMTAnCitXSEVSRSBpZCA9ICdbNSw1XSc7CiAtLSB0aGVuIGRlbGV0 ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2Nl ZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywz XSc7CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2 YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xl YW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9p ZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdb NSw1XScpOwogCiAtLQogLS0gdGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKLS0gCjIu NDIuMAoK --------------4ZTQGZiKJvMMlo81itiM0iLZ Content-Type: text/x-patch; charset=UTF-8; name="v24-0006-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.patch" Content-Disposition: attachment; filename*0="v24-0006-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBjNzQyMDUzYmRjNWJmODYzZWEyODAzMWY2NmQyMTFkMTQ0NTFhZDAyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgMyBKdW4gMjAyMyAyMTo0MToxMSAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggdjI0IDYvN10gQWRkIENBU0NBREUvU0VUIE5VTEwvU0VUIERF RkFVTFQgZm9yIHRlbXBvcmFsIGZvcmVpZ24KIGtleXMKCi0tLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgIDQyICstCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyAgICAgICAgICAgfCA1NDkgKysrKysrKysrKystCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgMjAgKwog Li4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgICAgIHwgODI3ICsr KysrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFw cy5zcWwgICAgIHwgNDM4ICsrKysrKysrKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTgzNiBpbnNl cnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j CmluZGV4IDJkMzcxZmVkNDBkLi4zMmFjYzg5NjBhNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKQEAgLTUxNiw3ICs1MTYsNyBAQCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBhZGRG a1JlY3Vyc2VSZWZlcmVuY2VkKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3Ry YQogCQkJCQkJCQkJCQlib29sIG9sZF9jaGVja19vaywKIAkJCQkJCQkJCQkJT2lkIHBhcmVu dERlbFRyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyLAogCQkJCQkJCQkJCQlib29sIGlz X3RlbXBvcmFsKTsKLXN0YXRpYyB2b2lkIHZhbGlkYXRlRmtPbkRlbGV0ZVNldENvbHVtbnMo aW50IG51bWZrcywgY29uc3QgaW50MTYgKmZrYXR0bnVtcywKK3N0YXRpYyB2b2lkIHZhbGlk YXRlRmtPbkRlbGV0ZVNldENvbHVtbnMoaW50IG51bWZrcywgY29uc3QgaW50MTYgKmZrYXR0 bnVtcywgY29uc3QgaW50MTYgZmtwZXJpb2RhdHRudW0sCiAJCQkJCQkJCQkJIGludCBudW1m a3NldGNvbHMsIGNvbnN0IGludDE2ICpma3NldGNvbHNhdHRudW1zLAogCQkJCQkJCQkJCSBM aXN0ICpma3NldGNvbHMpOwogc3RhdGljIHZvaWQgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmco TGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LApAQCAtOTkwNyw3ICs5 OTA3LDcgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRl cmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAludW1ma2RlbHNldGNvbHMgPSB0 cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChSZWxhdGlvbkdldFJlbGlkKHJlbCksCiAJCQkJCQkJ CQkJCSAgZmtjb25zdHJhaW50LT5ma19kZWxfc2V0X2NvbHMsCiAJCQkJCQkJCQkJCSAgZmtk ZWxzZXRjb2xzLCBOVUxMKTsKLQl2YWxpZGF0ZUZrT25EZWxldGVTZXRDb2x1bW5zKG51bWZr cywgZmthdHRudW0sCisJdmFsaWRhdGVGa09uRGVsZXRlU2V0Q29sdW1ucyhudW1ma3MsIGZr YXR0bnVtLCBma3BlcmlvZGF0dG51bSwKIAkJCQkJCQkJIG51bWZrZGVsc2V0Y29scywgZmtk ZWxzZXRjb2xzLAogCQkJCQkJCQkgZmtjb25zdHJhaW50LT5ma19kZWxfc2V0X2NvbHMpOwog CkBAIC0xMDA5NiwxMiArMTAwOTYsMTUgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChM aXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKICAq Lwogdm9pZAogdmFsaWRhdGVGa09uRGVsZXRlU2V0Q29sdW1ucyhpbnQgbnVtZmtzLCBjb25z dCBpbnQxNiAqZmthdHRudW1zLAorCQkJCQkJCSBjb25zdCBpbnQxNiBma3BlcmlvZGF0dG51 bSwKIAkJCQkJCQkgaW50IG51bWZrc2V0Y29scywgY29uc3QgaW50MTYgKmZrc2V0Y29sc2F0 dG51bXMsCiAJCQkJCQkJIExpc3QgKmZrc2V0Y29scykKIHsKIAlmb3IgKGludCBpID0gMDsg aSA8IG51bWZrc2V0Y29sczsgaSsrKQogCXsKIAkJaW50MTYJCXNldGNvbF9hdHRudW0gPSBm a3NldGNvbHNhdHRudW1zW2ldOworCQkvKiBhc3N1bWUgb25seSBvbmUgUEVSSU9EIGtleSBj b2x1bW4gaW4gYSBmb3JlaWduIGtleSAqLworCQlpbnQxNgkJZmtwZXJpb2RfYXR0bnVtID0g ZmtwZXJpb2RhdHRudW07CiAJCWJvb2wJCXNlZW4gPSBmYWxzZTsKIAogCQlmb3IgKGludCBq ID0gMDsgaiA8IG51bWZrczsgaisrKQpAQCAtMTAxMTEsNiArMTAxMTQsMTMgQEAgdmFsaWRh dGVGa09uRGVsZXRlU2V0Q29sdW1ucyhpbnQgbnVtZmtzLCBjb25zdCBpbnQxNiAqZmthdHRu dW1zLAogCQkJCXNlZW4gPSB0cnVlOwogCQkJCWJyZWFrOwogCQkJfQorCQkJaWYgKGZrcGVy aW9kX2F0dG51bSA9PSBzZXRjb2xfYXR0bnVtKQorCQkJeworCQkJCWNoYXIJICAgKmNvbCA9 IHN0clZhbChsaXN0X250aChma3NldGNvbHMsIGkpKTsKKwkJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0NPTFVNTl9SRUZFUkVOQ0UpLAorCQkJ CQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiByZWZlcmVuY2VkIGluIE9OIERFTEVURSBTRVQg YWN0aW9uIGNhbm5vdCBiZSBQRVJJT0QiLCBjb2wpKSk7CisJCQl9CiAJCX0KIAogCQlpZiAo IXNlZW4pCkBAIC0xMjc0OCwxMSArMTI3NTgsMTkgQEAgY3JlYXRlRm9yZWlnbktleUFjdGlv blRyaWdnZXJzKFJlbGF0aW9uIHJlbCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWludCAqZmtj b25zdHIKIAkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklf RktleV9yZXN0cmljdF9kZWwiKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgRktDT05TVFJfQUNU SU9OX0NBU0NBREU6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJ CWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1 bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2Nhc2NhZGVfZGVsIik7CisJCQkJ YnJlYWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxMOgorCQkJCWZrX3RyaWdn ZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQg PSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJU UklfRktleV9zZXRudWxsX2RlbCIpOworCQkJCWJyZWFrOwogCQkJY2FzZSBGS0NPTlNUUl9B Q1RJT05fU0VUREVGQVVMVDoKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQkJIGVycm1zZygiYWN0aW9u IG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cyIpKSk7CisJCQkJZmtf dHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZl cnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05h bWUoIlRSSV9GS2V5X3NldGRlZmF1bHRfZGVsIik7CiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0 OgogCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwK QEAgLTEyODM5LDExICsxMjg1NywxOSBAQCBjcmVhdGVGb3JlaWduS2V5QWN0aW9uVHJpZ2dl cnMoUmVsYXRpb24gcmVsLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0cgog CQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X3Jl c3RyaWN0X3VwZCIpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fQ0FT Q0FERToKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJp Z2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUg PSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfY2FzY2FkZV91cGQiKTsKKwkJCQlicmVhazsK IAkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6CisJCQkJZmtfdHJpZ2dlci0+ZGVm ZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNl OworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5 X3NldG51bGxfdXBkIik7CisJCQkJYnJlYWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9T RVRERUZBVUxUOgotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCQkgZXJybXNnKCJhY3Rpb24gbm90IHN1 cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzIikpKTsKKwkJCQlma190cmlnZ2Vy LT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0g ZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJ X0ZLZXlfc2V0ZGVmYXVsdF91cGQiKTsKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJ ZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwppbmRleCA0ZDE3YjM4NzdiZC4uMDAxZjZlZDRk N2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBAIC04NCw2ICs4NCwx MiBAQAogI2RlZmluZSBSSV9QTEFOX1NFVE5VTExfT05VUERBVEUJCTcKICNkZWZpbmUgUklf UExBTl9TRVRERUZBVUxUX09OREVMRVRFCQk4CiAjZGVmaW5lIFJJX1BMQU5fU0VUREVGQVVM VF9PTlVQREFURQkJOQorI2RlZmluZSBUUklfUExBTl9DQVNDQURFX09OREVMRVRFCQkxMAor I2RlZmluZSBUUklfUExBTl9DQVNDQURFX09OVVBEQVRFCQkxMQorI2RlZmluZSBUUklfUExB Tl9TRVROVUxMX09OVVBEQVRFCQkxMgorI2RlZmluZSBUUklfUExBTl9TRVROVUxMX09OREVM RVRFCQkxMworI2RlZmluZSBUUklfUExBTl9TRVRERUZBVUxUX09OVVBEQVRFCTE0CisjZGVm aW5lIFRSSV9QTEFOX1NFVERFRkFVTFRfT05ERUxFVEUJMTUKIAogI2RlZmluZSBNQVhfUVVP VEVEX05BTUVfTEVOICAoTkFNRURBVEFMRU4qMiszKQogI2RlZmluZSBNQVhfUVVPVEVEX1JF TF9OQU1FX0xFTiAgKE1BWF9RVU9URURfTkFNRV9MRU4qMikKQEAgLTE5Myw2ICsxOTksNyBA QCBzdGF0aWMgYm9vbCByaV9DaGVja19Qa19NYXRjaChSZWxhdGlvbiBwa19yZWwsIFJlbGF0 aW9uIGZrX3JlbCwKIAkJCQkJCQkgIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8p Owogc3RhdGljIERhdHVtIHJpX3Jlc3RyaWN0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9v bCBpc19ub19hY3Rpb24pOwogc3RhdGljIERhdHVtIHJpX3NldChUcmlnZ2VyRGF0YSAqdHJp Z2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpOworc3RhdGljIERhdHVtIHRy aV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX3NldF9udWxsLCBpbnQgdGdr aW5kKTsKIHN0YXRpYyB2b2lkIHF1b3RlT25lTmFtZShjaGFyICpidWZmZXIsIGNvbnN0IGNo YXIgKm5hbWUpOwogc3RhdGljIHZvaWQgcXVvdGVSZWxhdGlvbk5hbWUoY2hhciAqYnVmZmVy LCBSZWxhdGlvbiByZWwpOwogc3RhdGljIHZvaWQgcmlfR2VuZXJhdGVRdWFsKFN0cmluZ0lu Zm8gYnVmLApAQCAtMTQxMCw2ICsxNDE3LDEyNyBAQCBUUklfRktleV9yZXN0cmljdF9kZWwo UEdfRlVOQ1RJT05fQVJHUykKIAlyZXR1cm4gcmlfcmVzdHJpY3QoKFRyaWdnZXJEYXRhICop IGZjaW5mby0+Y29udGV4dCwgZmFsc2UpOwogfQogCisvKgorICogVFJJX0ZLZXlfY2FzY2Fk ZV9kZWwgLQorICoKKyAqIENhc2NhZGVkIGRlbGV0ZSBmb3JlaWduIGtleSByZWZlcmVuY2Vz IGF0IGRlbGV0ZSBldmVudCBvbiB0ZW1wb3JhbCBQSyB0YWJsZS4KKyAqLworRGF0dW0KK1RS SV9GS2V5X2Nhc2NhZGVfZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJVHJpZ2dlckRhdGEg KnRyaWdkYXRhID0gKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dDsKKwljb25zdCBS SV9Db25zdHJhaW50SW5mbyAqcmlpbmZvOworCVJlbGF0aW9uCWZrX3JlbDsKKwlSZWxhdGlv bglwa19yZWw7CisJVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3Q7CisJUklfUXVlcnlLZXkgcWtl eTsKKwlTUElQbGFuUHRyICBxcGxhbjsKKwlEYXR1bSB0YXJnZXRSYW5nZTsKKworCS8qIENo ZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGlt ZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X2Nh c2NhZGVfZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCXJpaW5mbyA9IHJpX0ZldGNo Q29uc3RyYWludEluZm8odHJpZ2RhdGEtPnRnX3RyaWdnZXIsCisJCQkJCQkJCQl0cmlnZGF0 YS0+dGdfcmVsYXRpb24sIHRydWUpOworCisJLyoKKwkgKiBHZXQgdGhlIHJlbGF0aW9uIGRl c2NyaXB0b3JzIG9mIHRoZSBGSyBhbmQgUEsgdGFibGVzIGFuZCB0aGUgb2xkIHR1cGxlLgor CSAqCisJICogZmtfcmVsIGlzIG9wZW5lZCBpbiBSb3dFeGNsdXNpdmVMb2NrIG1vZGUgc2lu Y2UgdGhhdCdzIHdoYXQgb3VyCisJICogZXZlbnR1YWwgREVMRVRFIHdpbGwgZ2V0IG9uIGl0 LgorCSAqLworCWZrX3JlbCA9IHRhYmxlX29wZW4ocmlpbmZvLT5ma19yZWxpZCwgUm93RXhj bHVzaXZlTG9jayk7CisJcGtfcmVsID0gdHJpZ2RhdGEtPnRnX3JlbGF0aW9uOworCW9sZHNs b3QgPSB0cmlnZGF0YS0+dGdfdHJpZ3Nsb3Q7CisKKwkvKgorCSAqIERvbid0IGRlbGV0ZSB0 aGFuIG1vcmUgdGhhbiB0aGUgUEsncyBkdXJhdGlvbiwKKwkgKiB0cmltbWVkIGJ5IGFuIG9y aWdpbmFsIEZPUiBQT1JUSU9OIE9GIGlmIG5lY2Vzc2FyeS4KKwkgKi8KKwl0YXJnZXRSYW5n ZSA9IHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZSh0cmlnZGF0YS0+dGdfdGVtcG9yYWwsIHJp aW5mbywgb2xkc2xvdCk7CisKKwlpZiAoU1BJX2Nvbm5lY3QoKSAhPSBTUElfT0tfQ09OTkVD VCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9jb25uZWN0IGZhaWxlZCIpOworCisJLyogRmV0Y2gg b3IgcHJlcGFyZSBhIHNhdmVkIHBsYW4gZm9yIHRoZSBjYXNjYWRlZCBkZWxldGUgKi8KKwly aV9CdWlsZFF1ZXJ5S2V5KCZxa2V5LCByaWluZm8sIFRSSV9QTEFOX0NBU0NBREVfT05ERUxF VEUpOworCisJaWYgKChxcGxhbiA9IHJpX0ZldGNoUHJlcGFyZWRQbGFuKCZxa2V5KSkgPT0g TlVMTCkKKwl7CisJCVN0cmluZ0luZm9EYXRhIHF1ZXJ5YnVmOworCQljaGFyCQlma3JlbG5h bWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOworCQljaGFyCQlhdHRuYW1lW01BWF9RVU9U RURfTkFNRV9MRU5dOworCQljaGFyCQlwYXJhbW5hbWVbMTZdOworCQljb25zdCBjaGFyICpx dWVyeXNlcDsKKwkJT2lkCQkJcXVlcnlvaWRzW1JJX01BWF9OVU1LRVlTICsgMV07CisJCWNv bnN0IGNoYXIgKmZrX29ubHk7CisKKwkJLyogLS0tLS0tLS0tLQorCQkgKiBUaGUgcXVlcnkg c3RyaW5nIGJ1aWx0IGlzCisJCSAqICBERUxFVEUgRlJPTSBbT05MWV0gPGZrdGFibGU+CisJ CSAqICBGT1IgUE9SVElPTiBPRiAkZmthdHQgRlJPTSBsb3dlcigke24rMX0pIFRPIHVwcGVy KCR7bisxfSkKKwkJICogIFdIRVJFICQxID0gZmthdHQxIFtBTkQgLi4uXQorCQkgKiBUaGUg dHlwZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBvZiB0aGUKKwkJICog Y29ycmVzcG9uZGluZyBQSyBhdHRyaWJ1dGVzLgorCQkgKiAtLS0tLS0tLS0tCisJCSAqLwor CQlpbml0U3RyaW5nSW5mbygmcXVlcnlidWYpOworCQlma19vbmx5ID0gZmtfcmVsLT5yZF9y ZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CisJCQkiIiA6ICJP TkxZICI7CisJCXF1b3RlUmVsYXRpb25OYW1lKGZrcmVsbmFtZSwgZmtfcmVsKTsKKwkJcXVv dGVPbmVOYW1lKGF0dG5hbWUsIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVt c1tyaWluZm8tPm5rZXlzIC0gMV0pKTsKKworCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1 ZiwgIkRFTEVURSBGUk9NICVzJXMgRk9SIFBPUlRJT04gT0YgJXMgRlJPTSBsb3dlcigkJWQp IFRPIHVwcGVyKCQlZCkiLAorCQkJCQkJIGZrX29ubHksIGZrcmVsbmFtZSwgYXR0bmFtZSwg cmlpbmZvLT5ua2V5cyArIDEsIHJpaW5mby0+bmtleXMgKyAxKTsKKwkJcXVlcnlzZXAgPSAi V0hFUkUiOworCQlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKKwkJ eworCQkJT2lkIHBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51 bXNbaV0pOworCQkJT2lkIHBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5m by0+cGtfYXR0bnVtc1tpXSk7CisJCQlPaWQgZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWws IHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCQlPaWQgZmtfY29sbCA9IFJJQXR0Q29sbGF0 aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKworCQkJcXVvdGVPbmVOYW1l KGF0dG5hbWUsCisJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1z W2ldKSk7CisJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGkgKyAxKTsKKwkJCXJpX0dl bmVyYXRlUXVhbCgmcXVlcnlidWYsIHF1ZXJ5c2VwLAorCQkJCQkJCXBhcmFtbmFtZSwgcGtf dHlwZSwKKwkJCQkJCQlyaWluZm8tPnBmX2VxX29wcnNbaV0sCisJCQkJCQkJYXR0bmFtZSwg ZmtfdHlwZSk7CisJCQlpZiAocGtfY29sbCAhPSBma19jb2xsICYmICFnZXRfY29sbGF0aW9u X2lzZGV0ZXJtaW5pc3RpYyhwa19jb2xsKSkKKwkJCQlyaV9HZW5lcmF0ZVF1YWxDb2xsYXRp b24oJnF1ZXJ5YnVmLCBwa19jb2xsKTsKKwkJCXF1ZXJ5c2VwID0gIkFORCI7CisJCQlxdWVy eW9pZHNbaV0gPSBwa190eXBlOworCQl9CisKKwkJLyogU2V0IGEgcGFyYW0gZm9yIEZPUiBQ T1JUSU9OIE9GIFRPL0ZST00gKi8KKwkJcXVlcnlvaWRzW3JpaW5mby0+bmtleXNdID0gUklB dHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSk7 CisKKwkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUgcGxhbiAqLworCQlxcGxhbiA9IHJpX1Bs YW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCByaWluZm8tPm5rZXlzICsgMSwgcXVlcnlvaWRzLAor CQkJCQkJCSAmcWtleSwgZmtfcmVsLCBwa19yZWwpOworCX0KKworCS8qCisJICogV2UgaGF2 ZSBhIHBsYW4gbm93LiBCdWlsZCB1cCB0aGUgYXJndW1lbnRzIGZyb20gdGhlIGtleSB2YWx1 ZXMgaW4gdGhlCisJICogZGVsZXRlZCBQSyB0dXBsZSBhbmQgZGVsZXRlIHRoZSByZWZlcmVu Y2luZyByb3dzCisJICovCisJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFu LAorCQkJCQlma19yZWwsIHBrX3JlbCwKKwkJCQkJb2xkc2xvdCwgTlVMTCwKKwkJCQkJcmlp bmZvLT5ua2V5cywgdGFyZ2V0UmFuZ2UsCisJCQkJCXRydWUsCSAgIC8qIG11c3QgZGV0ZWN0 IG5ldyByb3dzICovCisJCQkJCVNQSV9PS19ERUxFVEUpOworCisJaWYgKFNQSV9maW5pc2go KSAhPSBTUElfT0tfRklOSVNIKQorCQllbG9nKEVSUk9SLCAiU1BJX2ZpbmlzaCBmYWlsZWQi KTsKKworCXRhYmxlX2Nsb3NlKGZrX3JlbCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1 cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOworfQorCisKIC8qCiAgKiBUUklfRktleV9ub2Fj dGlvbl91cGQgLQogICoKQEAgLTE0NDcsNiArMTU3NSw0MTUgQEAgVFJJX0ZLZXlfcmVzdHJp Y3RfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2Vy RGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIGZhbHNlKTsKIH0KIAorLyoKKyAqIFRSSV9GS2V5 X2Nhc2NhZGVfdXBkIC0KKyAqCisgKiBDYXNjYWRlZCB1cGRhdGUgZm9yZWlnbiBrZXkgcmVm ZXJlbmNlcyBhdCB1cGRhdGUgZXZlbnQgb24gdGVtcG9yYWwgUEsgdGFibGUuCisgKi8KK0Rh dHVtCitUUklfRktleV9jYXNjYWRlX3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCVRyaWdn ZXJEYXRhICp0cmlnZGF0YSA9IChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQ7CisJ Y29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbzsKKwlSZWxhdGlvbglma19yZWw7CisJ UmVsYXRpb24JcGtfcmVsOworCVR1cGxlVGFibGVTbG90ICpvbGRzbG90OworCVR1cGxlVGFi bGVTbG90ICpuZXdzbG90OworCVJJX1F1ZXJ5S2V5IHFrZXk7CisJU1BJUGxhblB0ciAgcXBs YW47CisJRGF0dW0gdGFyZ2V0UmFuZ2U7CisKKwkvKiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2 YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50LiAqLworCXJp X0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9jYXNjYWRlX3VwZCIsIFJJX1RSSUdU WVBFX1VQREFURSk7CisKKwlyaWluZm8gPSByaV9GZXRjaENvbnN0cmFpbnRJbmZvKHRyaWdk YXRhLT50Z190cmlnZ2VyLAorCQkJCQkJCQkJdHJpZ2RhdGEtPnRnX3JlbGF0aW9uLCB0cnVl KTsKKworCS8qCisJICogR2V0IHRoZSByZWxhdGlvbiBkZXNjcmlwdG9ycyBvZiB0aGUgRksg YW5kIFBLIHRhYmxlcyBhbmQgdGhlIG5ldyBhbmQKKwkgKiBvbGQgdHVwbGUuCisJICoKKwkg KiBma19yZWwgaXMgb3BlbmVkIGluIFJvd0V4Y2x1c2l2ZUxvY2sgbW9kZSBzaW5jZSB0aGF0 J3Mgd2hhdCBvdXIKKwkgKiBldmVudHVhbCBVUERBVEUgd2lsbCBnZXQgb24gaXQuCisJICov CisJZmtfcmVsID0gdGFibGVfb3BlbihyaWluZm8tPmZrX3JlbGlkLCBSb3dFeGNsdXNpdmVM b2NrKTsKKwlwa19yZWwgPSB0cmlnZGF0YS0+dGdfcmVsYXRpb247CisJbmV3c2xvdCA9IHRy aWdkYXRhLT50Z19uZXdzbG90OworCW9sZHNsb3QgPSB0cmlnZGF0YS0+dGdfdHJpZ3Nsb3Q7 CisKKwkvKgorCSAqIERvbid0IGRlbGV0ZSB0aGFuIG1vcmUgdGhhbiB0aGUgUEsncyBkdXJh dGlvbiwKKwkgKiB0cmltbWVkIGJ5IGFuIG9yaWdpbmFsIEZPUiBQT1JUSU9OIE9GIGlmIG5l Y2Vzc2FyeS4KKwkgKi8KKwl0YXJnZXRSYW5nZSA9IHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5n ZSh0cmlnZGF0YS0+dGdfdGVtcG9yYWwsIHJpaW5mbywgb2xkc2xvdCk7CisKKwlpZiAoU1BJ X2Nvbm5lY3QoKSAhPSBTUElfT0tfQ09OTkVDVCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9jb25u ZWN0IGZhaWxlZCIpOworCisJLyogRmV0Y2ggb3IgcHJlcGFyZSBhIHNhdmVkIHBsYW4gZm9y IHRoZSBjYXNjYWRlZCB1cGRhdGUgKi8KKwlyaV9CdWlsZFF1ZXJ5S2V5KCZxa2V5LCByaWlu Zm8sIFRSSV9QTEFOX0NBU0NBREVfT05VUERBVEUpOworCisJaWYgKChxcGxhbiA9IHJpX0Zl dGNoUHJlcGFyZWRQbGFuKCZxa2V5KSkgPT0gTlVMTCkKKwl7CisJCVN0cmluZ0luZm9EYXRh IHF1ZXJ5YnVmOworCQlTdHJpbmdJbmZvRGF0YSBxdWFsYnVmOworCQljaGFyCQlma3JlbG5h bWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOworCQljaGFyCQlhdHRuYW1lW01BWF9RVU9U RURfTkFNRV9MRU5dOworCQljaGFyCQlwYXJhbW5hbWVbMTZdOworCQljb25zdCBjaGFyICpx dWVyeXNlcDsKKwkJY29uc3QgY2hhciAqcXVhbHNlcDsKKwkJT2lkCQkgcXVlcnlvaWRzWzIg KiBSSV9NQVhfTlVNS0VZUyArIDFdOworCQljb25zdCBjaGFyICpma19vbmx5OworCisJCS8q IC0tLS0tLS0tLS0KKwkJICogVGhlIHF1ZXJ5IHN0cmluZyBidWlsdCBpcworCQkgKiAgVVBE QVRFIFtPTkxZXSA8Zmt0YWJsZT4KKwkJICoJCSAgRk9SIFBPUlRJT04gT0YgJGZrYXR0IEZS T00gbG93ZXIoJHsybisxfSkgVE8gdXBwZXIoJHsybisxfSkKKwkJICoJCSAgU0VUIGZrYXR0 MSA9ICQxLCBbLCAuLi5dCisJCSAqCQkgIFdIRVJFICRuID0gZmthdHQxIFtBTkQgLi4uXQor CQkgKiBUaGUgdHlwZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBvZiB0 aGUKKwkJICogY29ycmVzcG9uZGluZyBQSyBhdHRyaWJ1dGVzLiAgTm90ZSB0aGF0IHdlIGFy ZSBhc3N1bWluZworCQkgKiB0aGVyZSBpcyBhbiBhc3NpZ25tZW50IGNhc3QgZnJvbSB0aGUg UEsgdG8gdGhlIEZLIHR5cGU7CisJCSAqIGVsc2UgdGhlIHBhcnNlciB3aWxsIGZhaWwuCisJ CSAqIC0tLS0tLS0tLS0KKwkJICovCisJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7CisJ CWluaXRTdHJpbmdJbmZvKCZxdWFsYnVmKTsKKwkJZmtfb25seSA9IGZrX3JlbC0+cmRfcmVs LT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgPworCQkJIiIgOiAiT05M WSAiOworCQlxdW90ZVJlbGF0aW9uTmFtZShma3JlbG5hbWUsIGZrX3JlbCk7CisJCXF1b3Rl T25lTmFtZShhdHRuYW1lLCBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNb cmlpbmZvLT5ua2V5cyAtIDFdKSk7CisKKwkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYs ICJVUERBVEUgJXMlcyBGT1IgUE9SVElPTiBPRiAlcyBGUk9NIGxvd2VyKCQlZCkgVE8gdXBw ZXIoJCVkKSBTRVQiLAorCQkJCQkJIGZrX29ubHksIGZrcmVsbmFtZSwgYXR0bmFtZSwgMiAq IHJpaW5mby0+bmtleXMgKyAxLCAyICogcmlpbmZvLT5ua2V5cyArIDEpOworCisJCXF1ZXJ5 c2VwID0gIiI7CisJCXF1YWxzZXAgPSAiV0hFUkUiOworCQlmb3IgKGludCBpID0gMCwgaiA9 IHJpaW5mby0+bmtleXM7IGkgPCByaWluZm8tPm5rZXlzOyBpKyssIGorKykKKwkJeworCQkJ T2lkIHBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0p OworCQkJT2lkIHBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtf YXR0bnVtc1tpXSk7CisJCQlPaWQgZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5m by0+ZmtfYXR0bnVtc1tpXSk7CisJCQlPaWQgZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZr X3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKworCQkJcXVvdGVPbmVOYW1lKGF0dG5h bWUsCisJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7 CisJCQkvKgorCQkJICogRG9uJ3Qgc2V0IHRoZSB0ZW1wb3JhbCBjb2x1bW4ocykuCisJCQkg KiBGT1IgUE9SVElPTiBPRiB3aWxsIHRha2UgY2FyZSBvZiB0aGF0LgorCQkJICovCisJCQlp ZiAoaSA8IHJpaW5mby0+bmtleXMgLSAxKQorCQkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5 YnVmLAorCQkJCQkJCQkgIiVzICVzID0gJCVkIiwKKwkJCQkJCQkJIHF1ZXJ5c2VwLCBhdHRu YW1lLCBpICsgMSk7CisKKwkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwgaiArIDEpOwor CQkJcmlfR2VuZXJhdGVRdWFsKCZxdWFsYnVmLCBxdWFsc2VwLAorCQkJCQkJCXBhcmFtbmFt ZSwgcGtfdHlwZSwKKwkJCQkJCQlyaWluZm8tPnBmX2VxX29wcnNbaV0sCisJCQkJCQkJYXR0 bmFtZSwgZmtfdHlwZSk7CisJCQlpZiAocGtfY29sbCAhPSBma19jb2xsICYmICFnZXRfY29s bGF0aW9uX2lzZGV0ZXJtaW5pc3RpYyhwa19jb2xsKSkKKwkJCQlyaV9HZW5lcmF0ZVF1YWxD b2xsYXRpb24oJnF1ZXJ5YnVmLCBwa19jb2xsKTsKKwkJCXF1ZXJ5c2VwID0gIiwiOworCQkJ cXVhbHNlcCA9ICJBTkQiOworCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKKwkJCXF1ZXJ5 b2lkc1tqXSA9IHBrX3R5cGU7CisJCX0KKwkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmcXVl cnlidWYsIHF1YWxidWYuZGF0YSwgcXVhbGJ1Zi5sZW4pOworCisJCS8qIFNldCBhIHBhcmFt IGZvciBGT1IgUE9SVElPTiBPRiBUTy9GUk9NICovCisJCXF1ZXJ5b2lkc1syICogcmlpbmZv LT5ua2V5c10gPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbcmlpbmZv LT5ua2V5cyAtIDFdKTsKKworCQkvKiBQcmVwYXJlIGFuZCBzYXZlIHRoZSBwbGFuICovCisJ CXFwbGFuID0gcmlfUGxhbkNoZWNrKHF1ZXJ5YnVmLmRhdGEsIDIgKiByaWluZm8tPm5rZXlz ICsgMSwgcXVlcnlvaWRzLAorCQkJCQkJCSAmcWtleSwgZmtfcmVsLCBwa19yZWwpOworCX0K KworCS8qCisJICogV2UgaGF2ZSBhIHBsYW4gbm93LiBSdW4gaXQgdG8gdXBkYXRlIHRoZSBl eGlzdGluZyByZWZlcmVuY2VzLgorCSAqLworCXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZx a2V5LCBxcGxhbiwKKwkJCQkJZmtfcmVsLCBwa19yZWwsCisJCQkJCW9sZHNsb3QsIG5ld3Ns b3QsCisJCQkJCXJpaW5mby0+bmtleXMgKiAyLCB0YXJnZXRSYW5nZSwKKwkJCQkJdHJ1ZSwJ CS8qIG11c3QgZGV0ZWN0IG5ldyByb3dzICovCisJCQkJCVNQSV9PS19VUERBVEUpOworCisJ aWYgKFNQSV9maW5pc2goKSAhPSBTUElfT0tfRklOSVNIKQorCQllbG9nKEVSUk9SLCAiU1BJ X2ZpbmlzaCBmYWlsZWQiKTsKKworCXRhYmxlX2Nsb3NlKGZrX3JlbCwgUm93RXhjbHVzaXZl TG9jayk7CisKKwlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOworfQorCisvKgorICog VFJJX0ZLZXlfc2V0bnVsbF9kZWwgLQorICoKKyAqIFNldCBmb3JlaWduIGtleSByZWZlcmVu Y2VzIHRvIE5VTEwgdmFsdWVzIGF0IGRlbGV0ZSBldmVudCBvbiBQSyB0YWJsZS4KKyAqLwor RGF0dW0KK1RSSV9GS2V5X3NldG51bGxfZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyog Q2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0 aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlf c2V0bnVsbF9kZWwiLCBSSV9UUklHVFlQRV9ERUxFVEUpOworCisJLyogU2hhcmUgY29kZSB3 aXRoIFVQREFURSBjYXNlICovCisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJEYXRhICopIGZj aW5mby0+Y29udGV4dCwgdHJ1ZSwgUklfVFJJR1RZUEVfREVMRVRFKTsKK30KKworLyoKKyAq IFRSSV9GS2V5X3NldG51bGxfdXBkIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJl bmNlcyB0byBOVUxMIGF0IHVwZGF0ZSBldmVudCBvbiBQSyB0YWJsZS4KKyAqLworRGF0dW0K K1RSSV9GS2V5X3NldG51bGxfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sg dGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFu ZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfc2V0bnVs bF91cGQiLCBSSV9UUklHVFlQRV9VUERBVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIERF TEVURSBjYXNlICovCisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+ Y29udGV4dCwgdHJ1ZSwgUklfVFJJR1RZUEVfVVBEQVRFKTsKK30KKworLyoKKyAqIFRSSV9G S2V5X3NldGRlZmF1bHRfZGVsIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJlbmNl cyB0byBkZWZhdWx0cyBhdCBkZWxldGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8KK0RhdHVt CitUUklfRktleV9zZXRkZWZhdWx0X2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIENo ZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGlt ZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X3Nl dGRlZmF1bHRfZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCS8qIFNoYXJlIGNvZGUg d2l0aCBVUERBVEUgY2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2VyRGF0YSAqKSBm Y2luZm8tPmNvbnRleHQsIGZhbHNlLCBSSV9UUklHVFlQRV9ERUxFVEUpOworfQorCisvKgor ICogVFJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQgLQorICoKKyAqIFNldCBmb3JlaWduIGtleSBy ZWZlcmVuY2VzIHRvIGRlZmF1bHRzIGF0IHVwZGF0ZSBldmVudCBvbiBQSyB0YWJsZS4KKyAq LworRGF0dW0KK1RSSV9GS2V5X3NldGRlZmF1bHRfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCit7 CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSBy aWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJ X0ZLZXlfc2V0ZGVmYXVsdF91cGQiLCBSSV9UUklHVFlQRV9VUERBVEUpOworCisJLyogU2hh cmUgY29kZSB3aXRoIERFTEVURSBjYXNlICovCisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJE YXRhICopIGZjaW5mby0+Y29udGV4dCwgZmFsc2UsIFJJX1RSSUdUWVBFX1VQREFURSk7Cit9 CisKKy8qCisgKiB0cmlfc2V0IC0KKyAqCisgKiBDb21tb24gY29kZSBmb3IgdGVtcG9yYWwg T04gREVMRVRFIFNFVCBOVUxMLCBPTiBERUxFVEUgU0VUIERFRkFVTFQsIE9OCisgKiBVUERB VEUgU0VUIE5VTEwsIGFuZCBPTiBVUERBVEUgU0VUIERFRkFVTFQuCisgKi8KK3N0YXRpYyBE YXR1bQordHJpX3NldChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGws IGludCB0Z2tpbmQpCit7CisJY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbzsKKwlS ZWxhdGlvbglma19yZWw7CisJUmVsYXRpb24JcGtfcmVsOworCVR1cGxlVGFibGVTbG90ICpv bGRzbG90OworCVJJX1F1ZXJ5S2V5IHFrZXk7CisJU1BJUGxhblB0cglxcGxhbjsKKwlEYXR1 bQkJdGFyZ2V0UmFuZ2U7CisJaW50MzIJCXF1ZXJ5bm87CisKKwlyaWluZm8gPSByaV9GZXRj aENvbnN0cmFpbnRJbmZvKHRyaWdkYXRhLT50Z190cmlnZ2VyLAorCQkJCQkJCQkJdHJpZ2Rh dGEtPnRnX3JlbGF0aW9uLCB0cnVlKTsKKworCS8qCisJICogR2V0IHRoZSByZWxhdGlvbiBk ZXNjcmlwdG9ycyBvZiB0aGUgRksgYW5kIFBLIHRhYmxlcyBhbmQgdGhlIG9sZCB0dXBsZS4K KwkgKgorCSAqIGZrX3JlbCBpcyBvcGVuZWQgaW4gUm93RXhjbHVzaXZlTG9jayBtb2RlIHNp bmNlIHRoYXQncyB3aGF0IG91cgorCSAqIGV2ZW50dWFsIFVQREFURSB3aWxsIGdldCBvbiBp dC4KKwkgKi8KKwlma19yZWwgPSB0YWJsZV9vcGVuKHJpaW5mby0+ZmtfcmVsaWQsIFJvd0V4 Y2x1c2l2ZUxvY2spOworCXBrX3JlbCA9IHRyaWdkYXRhLT50Z19yZWxhdGlvbjsKKwlvbGRz bG90ID0gdHJpZ2RhdGEtPnRnX3RyaWdzbG90OworCisJLyoKKwkgKiBEb24ndCBTRVQgTlVM TC9ERUZBVUxUIHRoYW4gbW9yZSB0aGFuIHRoZSBQSydzIGR1cmF0aW9uLAorCSAqIHRyaW1t ZWQgYnkgYW4gb3JpZ2luYWwgRk9SIFBPUlRJT04gT0YgaWYgbmVjZXNzYXJ5LgorCSAqLwor CXRhcmdldFJhbmdlID0gcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKHRyaWdkYXRhLT50Z190 ZW1wb3JhbCwgcmlpbmZvLCBvbGRzbG90KTsKKworCWlmIChTUElfY29ubmVjdCgpICE9IFNQ SV9PS19DT05ORUNUKQorCQllbG9nKEVSUk9SLCAiU1BJX2Nvbm5lY3QgZmFpbGVkIik7CisK KwkvKgorCSAqIEZldGNoIG9yIHByZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUgdHJpZ2dl ci4KKwkgKi8KKwlzd2l0Y2ggKHRna2luZCkKKwl7CisJCWNhc2UgUklfVFJJR1RZUEVfVVBE QVRFOgorCQkJcXVlcnlubyA9IGlzX3NldF9udWxsCisJCQkJPyBUUklfUExBTl9TRVROVUxM X09OVVBEQVRFCisJCQkJOiBUUklfUExBTl9TRVRERUZBVUxUX09OVVBEQVRFOworCQkJYnJl YWs7CisJCWNhc2UgUklfVFJJR1RZUEVfREVMRVRFOgorCQkJcXVlcnlubyA9IGlzX3NldF9u dWxsCisJCQkJPyBUUklfUExBTl9TRVROVUxMX09OREVMRVRFCisJCQkJOiBUUklfUExBTl9T RVRERUZBVUxUX09OREVMRVRFOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQllbG9nKEVS Uk9SLCAiaW52YWxpZCB0Z2tpbmQgcGFzc2VkIHRvIHJpX3NldCIpOworCX0KKworCXJpX0J1 aWxkUXVlcnlLZXkoJnFrZXksIHJpaW5mbywgcXVlcnlubyk7CisKKwlpZiAoKHFwbGFuID0g cmlfRmV0Y2hQcmVwYXJlZFBsYW4oJnFrZXkpKSA9PSBOVUxMKQorCXsKKwkJU3RyaW5nSW5m b0RhdGEgcXVlcnlidWY7CisJCVN0cmluZ0luZm9EYXRhIHF1YWxidWY7CisJCWNoYXIJCWZr cmVsbmFtZVtNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07CisJCWNoYXIJCWF0dG5hbWVbTUFY X1FVT1RFRF9OQU1FX0xFTl07CisJCWNoYXIJCXBhcmFtbmFtZVsxNl07CisJCWNvbnN0IGNo YXIgKnF1ZXJ5c2VwOworCQljb25zdCBjaGFyICpxdWFsc2VwOworCQlPaWQJCQlxdWVyeW9p ZHNbUklfTUFYX05VTUtFWVMgKyAxXTsgLyogKzEgZm9yIEZPUiBQT1JUSU9OIE9GICovCisJ CWNvbnN0IGNoYXIgKmZrX29ubHk7CisJCWludAkJCW51bV9jb2xzX3RvX3NldDsKKwkJY29u c3QgaW50MTYgKnNldF9jb2xzOworCisJCXN3aXRjaCAodGdraW5kKQorCQl7CisJCQljYXNl IFJJX1RSSUdUWVBFX1VQREFURToKKwkJCQkvKiAtMSBzbyB3ZSBsZXQgRk9SIFBPUlRJT04g T0Ygc2V0IHRoZSByYW5nZS4gKi8KKwkJCQludW1fY29sc190b19zZXQgPSByaWluZm8tPm5r ZXlzIC0gMTsKKwkJCQlzZXRfY29scyA9IHJpaW5mby0+ZmtfYXR0bnVtczsKKwkJCQlicmVh azsKKwkJCWNhc2UgUklfVFJJR1RZUEVfREVMRVRFOgorCQkJCS8qCisJCQkJICogSWYgY29u ZmRlbHNldGNvbHMgYXJlIHByZXNlbnQsIHRoZW4gd2Ugb25seSB1cGRhdGUgdGhlCisJCQkJ ICogY29sdW1ucyBzcGVjaWZpZWQgaW4gdGhhdCBhcnJheSwgb3RoZXJ3aXNlIHdlIHVwZGF0 ZSBhbGwKKwkJCQkgKiB0aGUgcmVmZXJlbmNpbmcgY29sdW1ucy4KKwkJCQkgKi8KKwkJCQlp ZiAocmlpbmZvLT5uZGVsc2V0Y29scyAhPSAwKQorCQkJCXsKKwkJCQkJbnVtX2NvbHNfdG9f c2V0ID0gcmlpbmZvLT5uZGVsc2V0Y29sczsKKwkJCQkJc2V0X2NvbHMgPSByaWluZm8tPmNv bmZkZWxzZXRjb2xzOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQkvKiAtMSBzbyB3 ZSBsZXQgRk9SIFBPUlRJT04gT0Ygc2V0IHRoZSByYW5nZS4gKi8KKwkJCQkJbnVtX2NvbHNf dG9fc2V0ID0gcmlpbmZvLT5ua2V5cyAtIDE7CisJCQkJCXNldF9jb2xzID0gcmlpbmZvLT5m a19hdHRudW1zOworCQkJCX0KKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhF UlJPUiwgImludmFsaWQgdGdraW5kIHBhc3NlZCB0byByaV9zZXQiKTsKKwkJfQorCisJCS8q IC0tLS0tLS0tLS0KKwkJICogVGhlIHF1ZXJ5IHN0cmluZyBidWlsdCBpcworCQkgKglVUERB VEUgW09OTFldIDxma3RhYmxlPgorCQkgKgkJCUZPUiBQT1JUSU9OIE9GICRma2F0dCBGUk9N IGxvd2VyKCR7bisxfSkgVE8gdXBwZXIoJHtuKzF9KQorCQkgKgkJCVNFVCBma2F0dDEgPSB7 TlVMTHxERUZBVUxUfSBbLCAuLi5dCisJCSAqCQkJV0hFUkUgJDEgPSBma2F0dDEgW0FORCAu Li5dCisJCSAqIFRoZSB0eXBlIGlkJ3MgZm9yIHRoZSAkIHBhcmFtZXRlcnMgYXJlIHRob3Nl IG9mIHRoZQorCQkgKiBjb3JyZXNwb25kaW5nIFBLIGF0dHJpYnV0ZXMuCisJCSAqIC0tLS0t LS0tLS0KKwkJICovCisJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7CisJCWluaXRTdHJp bmdJbmZvKCZxdWFsYnVmKTsKKwkJZmtfb25seSA9IGZrX3JlbC0+cmRfcmVsLT5yZWxraW5k ID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgPworCQkJIiIgOiAiT05MWSAiOworCQlx dW90ZVJlbGF0aW9uTmFtZShma3JlbG5hbWUsIGZrX3JlbCk7CisJCXF1b3RlT25lTmFtZShh dHRuYW1lLCBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbcmlpbmZvLT5u a2V5cyAtIDFdKSk7CisKKwkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJVUERBVEUg JXMlcyBGT1IgUE9SVElPTiBPRiAlcyBGUk9NIGxvd2VyKCQlZCkgVE8gdXBwZXIoJCVkKSBT RVQiLAorCQkJCQkJIGZrX29ubHksIGZrcmVsbmFtZSwgYXR0bmFtZSwgcmlpbmZvLT5ua2V5 cyArIDEsIHJpaW5mby0+bmtleXMgKyAxKTsKKworCQkvKgorCQkgKiBBZGQgYXNzaWdubWVu dCBjbGF1c2VzCisJCSAqLworCQlxdWVyeXNlcCA9ICIiOworCQlmb3IgKGludCBpID0gMDsg aSA8IG51bV9jb2xzX3RvX3NldDsgaSsrKQorCQl7CisJCQlxdW90ZU9uZU5hbWUoYXR0bmFt ZSwgUklBdHROYW1lKGZrX3JlbCwgc2V0X2NvbHNbaV0pKTsKKwkJCWFwcGVuZFN0cmluZ0lu Zm8oJnF1ZXJ5YnVmLAorCQkJCQkJCSAiJXMgJXMgPSAlcyIsCisJCQkJCQkJIHF1ZXJ5c2Vw LCBhdHRuYW1lLAorCQkJCQkJCSBpc19zZXRfbnVsbCA/ICJOVUxMIiA6ICJERUZBVUxUIik7 CisJCQlxdWVyeXNlcCA9ICIsIjsKKwkJfQorCisJCS8qCisJCSAqIEFkZCBXSEVSRSBjbGF1 c2UKKwkJICovCisJCXF1YWxzZXAgPSAiV0hFUkUiOworCQlmb3IgKGludCBpID0gMDsgaSA8 IHJpaW5mby0+bmtleXM7IGkrKykKKwkJeworCQkJT2lkCXBrX3R5cGUgPSBSSUF0dFR5cGUo cGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJT2lkCWZrX3R5cGUgPSBSSUF0 dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJT2lkCXBrX2NvbGwg PSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQlP aWQJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1z W2ldKTsKKworCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsCisJCQkJCQkgUklBdHROYW1lKGZr X3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7CisKKwkJCXNwcmludGYocGFyYW1uYW1l LCAiJCVkIiwgaSArIDEpOworCQkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1ZiwgcXVhbHNl cCwKKwkJCQkJCQlwYXJhbW5hbWUsIHBrX3R5cGUsCisJCQkJCQkJcmlpbmZvLT5wZl9lcV9v cHJzW2ldLAorCQkJCQkJCWF0dG5hbWUsIGZrX3R5cGUpOworCQkJaWYgKHBrX2NvbGwgIT0g ZmtfY29sbCAmJiAhZ2V0X2NvbGxhdGlvbl9pc2RldGVybWluaXN0aWMocGtfY29sbCkpCisJ CQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7CisJCQlx dWFsc2VwID0gIkFORCI7CisJCQlxdWVyeW9pZHNbaV0gPSBwa190eXBlOworCQl9CisKKwkJ LyogU2V0IGEgcGFyYW0gZm9yIEZPUiBQT1JUSU9OIE9GIFRPL0ZST00gKi8KKwkJcXVlcnlv aWRzW3JpaW5mby0+bmtleXNdID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRu dW1zW3JpaW5mby0+bmtleXMgLSAxXSk7CisKKwkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUg cGxhbiAqLworCQlxcGxhbiA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCByaWluZm8t Pm5rZXlzICsgMSwgcXVlcnlvaWRzLAorCQkJCQkJCSAmcWtleSwgZmtfcmVsLCBwa19yZWwp OworCX0KKworCS8qCisJICogV2UgaGF2ZSBhIHBsYW4gbm93LiBSdW4gaXQgdG8gdXBkYXRl IHRoZSBleGlzdGluZyByZWZlcmVuY2VzLgorCSAqLworCXJpX1BlcmZvcm1DaGVjayhyaWlu Zm8sICZxa2V5LCBxcGxhbiwKKwkJCQkJZmtfcmVsLCBwa19yZWwsCisJCQkJCW9sZHNsb3Qs IE5VTEwsCisJCQkJCXJpaW5mby0+bmtleXMsIHRhcmdldFJhbmdlLAorCQkJCQl0cnVlLAkJ LyogbXVzdCBkZXRlY3QgbmV3IHJvd3MgKi8KKwkJCQkJU1BJX09LX1VQREFURSk7CisKKwlp ZiAoU1BJX2ZpbmlzaCgpICE9IFNQSV9PS19GSU5JU0gpCisJCWVsb2coRVJST1IsICJTUElf ZmluaXNoIGZhaWxlZCIpOworCisJdGFibGVfY2xvc2UoZmtfcmVsLCBSb3dFeGNsdXNpdmVM b2NrKTsKKworCWlmIChpc19zZXRfbnVsbCkKKwkJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShO VUxMKTsKKwllbHNlCisJeworCQkvKgorCQkgKiBJZiB3ZSBqdXN0IGRlbGV0ZWQgb3IgdXBk YXRlZCB0aGUgUEsgcm93IHdob3NlIGtleSB3YXMgZXF1YWwgdG8gdGhlCisJCSAqIEZLIGNv bHVtbnMnIGRlZmF1bHQgdmFsdWVzLCBhbmQgYSByZWZlcmVuY2luZyByb3cgZXhpc3RzIGlu IHRoZSBGSworCQkgKiB0YWJsZSwgd2Ugd291bGQgaGF2ZSB1cGRhdGVkIHRoYXQgcm93IHRv IHRoZSBzYW1lIHZhbHVlcyBpdCBhbHJlYWR5CisJCSAqIGhhZCAtLS0gYW5kIFJJX0ZLZXlf ZmtfdXBkX2NoZWNrX3JlcXVpcmVkIHdvdWxkIGhlbmNlIGJlbGlldmUgbm8KKwkJICogY2hl Y2sgaXMgbmVjZXNzYXJ5LiAgU28gd2UgbmVlZCB0byBkbyBhbm90aGVyIGxvb2t1cCBub3cg YW5kIGluCisJCSAqIGNhc2UgYSByZWZlcmVuY2Ugc3RpbGwgZXhpc3RzLCBhYm9ydCB0aGUg b3BlcmF0aW9uLiAgVGhhdCBpcworCQkgKiBhbHJlYWR5IGltcGxlbWVudGVkIGluIHRoZSBO TyBBQ1RJT04gdHJpZ2dlciwgc28ganVzdCBydW4gaXQuIChUaGlzCisJCSAqIHJlY2hlY2sg aXMgb25seSBuZWVkZWQgaW4gdGhlIFNFVCBERUZBVUxUIGNhc2UsIHNpbmNlIENBU0NBREUg d291bGQKKwkJICogcmVtb3ZlIHN1Y2ggcm93cyBpbiBjYXNlIG9mIGEgREVMRVRFIG9wZXJh dGlvbiBvciB3b3VsZCBjaGFuZ2UgdGhlCisJCSAqIEZLIGtleSB2YWx1ZXMgaW4gY2FzZSBv ZiBhbiBVUERBVEUsIHdoaWxlIFNFVCBOVUxMIGlzIGNlcnRhaW4gdG8KKwkJICogcmVzdWx0 IGluIHJvd3MgdGhhdCBzYXRpc2Z5IHRoZSBGSyBjb25zdHJhaW50LikKKwkJICovCisJCXJl dHVybiByaV9yZXN0cmljdCh0cmlnZGF0YSwgdHJ1ZSk7CisJfQorfQorCiAvKgogICogUklf RktleV9wa191cGRfY2hlY2tfcmVxdWlyZWQgLQogICoKQEAgLTI1ODMsOCArMzEyMCw4IEBA IHJpX1BlcmZvcm1DaGVjayhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCWlu dAkJCXNwaV9yZXN1bHQ7CiAJT2lkCQkJc2F2ZV91c2VyaWQ7CiAJaW50CQkJc2F2ZV9zZWNf Y29udGV4dDsKLQlEYXR1bQkJdmFsc1tSSV9NQVhfTlVNS0VZUyAqIDJdOwotCWNoYXIJCW51 bGxzW1JJX01BWF9OVU1LRVlTICogMl07CisJRGF0dW0JCXZhbHNbUklfTUFYX05VTUtFWVMg KiAyICsgMV07CisJY2hhcgkJbnVsbHNbUklfTUFYX05VTUtFWVMgKiAyICsgMV07CiAKIAkv KgogCSAqIFVzZSB0aGUgcXVlcnkgdHlwZSBjb2RlIHRvIGRldGVybWluZSB3aGV0aGVyIHRo ZSBxdWVyeSBpcyBydW4gYWdhaW5zdApAQCAtMjYxOSw4ICszMTU2LDEwIEBAIHJpX1BlcmZv cm1DaGVjayhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQlyaV9FeHRyYWN0 VmFsdWVzKHNvdXJjZV9yZWwsIG5ld3Nsb3QsIHJpaW5mbywgc291cmNlX2lzX3BrLAogCQkJ CQkJIHZhbHMsIG51bGxzKTsKIAkJaWYgKG9sZHNsb3QpCisJCXsKIAkJCXJpX0V4dHJhY3RW YWx1ZXMoc291cmNlX3JlbCwgb2xkc2xvdCwgcmlpbmZvLCBzb3VyY2VfaXNfcGssCiAJCQkJ CQkJIHZhbHMgKyByaWluZm8tPm5rZXlzLCBudWxscyArIHJpaW5mby0+bmtleXMpOworCQl9 CiAJfQogCWVsc2UKIAl7CkBAIC0zMzMxLDggKzM4NzAsMTQgQEAgUklfRktleV90cmlnZ2Vy X3R5cGUoT2lkIHRnZm9pZCkKIAkJY2FzZSBGX1JJX0ZLRVlfU0VUREVGQVVMVF9VUEQ6CiAJ CWNhc2UgRl9SSV9GS0VZX05PQUNUSU9OX0RFTDoKIAkJY2FzZSBGX1JJX0ZLRVlfTk9BQ1RJ T05fVVBEOgorCQljYXNlIEZfVFJJX0ZLRVlfQ0FTQ0FERV9ERUw6CisJCWNhc2UgRl9UUklf RktFWV9DQVNDQURFX1VQRDoKIAkJY2FzZSBGX1RSSV9GS0VZX1JFU1RSSUNUX0RFTDoKIAkJ Y2FzZSBGX1RSSV9GS0VZX1JFU1RSSUNUX1VQRDoKKwkJY2FzZSBGX1RSSV9GS0VZX1NFVE5V TExfREVMOgorCQljYXNlIEZfVFJJX0ZLRVlfU0VUTlVMTF9VUEQ6CisJCWNhc2UgRl9UUklf RktFWV9TRVRERUZBVUxUX0RFTDoKKwkJY2FzZSBGX1RSSV9GS0VZX1NFVERFRkFVTFRfVVBE OgogCQljYXNlIEZfVFJJX0ZLRVlfTk9BQ1RJT05fREVMOgogCQljYXNlIEZfVFJJX0ZLRVlf Tk9BQ1RJT05fVVBEOgogCQkJcmV0dXJuIFJJX1RSSUdHRVJfUEs7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdAppbmRleCA3YzExYjc2Nzc1OC4uNzM1MmRmMTMxNTYgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdApAQCAtMzk1Miw2ICszOTUyLDEyIEBACiB7IG9pZCA9PiAnNjEy MycsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgRk9SRUlHTiBL RVkgLi4uIFJFRkVSRU5DRVMnLAogICBwcm9uYW1lID0+ICdUUklfRktleV9jaGVja191cGQn LCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAogICBwcm9h cmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdUUklfRktleV9jaGVja191cGQnIH0sCit7IG9p ZCA9PiAnNjEyNCcsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkg T04gREVMRVRFIENBU0NBREUnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9jYXNjYWRlX2Rl bCcsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHBy b2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2Nhc2NhZGVfZGVsJyB9LAor eyBvaWQgPT4gJzYxMjUnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdy aXR5IE9OIFVQREFURSBDQVNDQURFJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfY2FzY2Fk ZV91cGQnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAor ICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdUUklfRktleV9jYXNjYWRlX3VwZCcg fSwKIHsgb2lkID0+ICc2MTI2JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGlu dGVncml0eSBPTiBERUxFVEUgUkVTVFJJQ1QnLAogICBwcm9uYW1lID0+ICdUUklfRktleV9y ZXN0cmljdF9kZWwnLCBwcm92b2xhdGlsZSA9PiAndicsCiAgIHByb3JldHR5cGUgPT4gJ3Ry aWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKQEAgLTM5NjAsNiArMzk2NiwyMCBAQAogICBw cm9uYW1lID0+ICdUUklfRktleV9yZXN0cmljdF91cGQnLCBwcm92b2xhdGlsZSA9PiAndics CiAgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKICAgcHJv c3JjID0+ICdUUklfRktleV9yZXN0cmljdF91cGQnIH0sCit7IG9pZCA9PiAnNjEyOCcsIGRl c2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gREVMRVRFIFNFVCBO VUxMJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfc2V0bnVsbF9kZWwnLCBwcm92b2xhdGls ZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAn JywgcHJvc3JjID0+ICdUUklfRktleV9zZXRudWxsX2RlbCcgfSwKK3sgb2lkID0+ICc2MTI5 JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBVUERBVEUg U0VUIE5VTEwnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9zZXRudWxsX3VwZCcsIHByb3Zv bGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVz ID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X3NldG51bGxfdXBkJyB9LAoreyBvaWQgPT4g JzYxMzAnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIERF TEVURSBTRVQgREVGQVVMVCcsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3NldGRlZmF1bHRf ZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywg cHJvYXJndHlwZXMgPT4gJycsCisgIHByb3NyYyA9PiAnVFJJX0ZLZXlfc2V0ZGVmYXVsdF9k ZWwnIH0sCit7IG9pZCA9PiAnNjEzMScsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlh bCBpbnRlZ3JpdHkgT04gVVBEQVRFIFNFVCBERUZBVUxUJywKKyAgcHJvbmFtZSA9PiAnVFJJ X0ZLZXlfc2V0ZGVmYXVsdF91cGQnLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5 cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKKyAgcHJvc3JjID0+ICdUUklf RktleV9zZXRkZWZhdWx0X3VwZCcgfSwKIHsgb2lkID0+ICc2MTMyJywgZGVzY3IgPT4gJ3Rl bXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxFVEUgTk8gQUNUSU9OJywKICAg cHJvbmFtZSA9PiAnVFJJX0ZLZXlfbm9hY3Rpb25fZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3Yn LAogICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dAppbmRl eCA2MGM5ZWVkYWVlOC4uNGY4YjA4YzRjZTMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dApAQCAtOTI3LDMwICs5MjcsMTg0IEBA IERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CiAtLQog LS0gdGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKIC0tCistLSBUT0M6CistLSBwYXJl bnQgdXBkYXRlcyBDQVNDQURFCistLSBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCistLSBwYXJl bnQgdXBkYXRlcyBTRVQgTlVMTAorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKKy0tIHBh cmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVM VAorLS0gcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFy ZW50IGRlbGV0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IHVwZGF0 ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBO VUxMICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTCAodHdv IHNjYWxhciBjb2xzLCBTRVQgTlVMTCBzdWJzZXQpCistLSBwYXJlbnQgdXBkYXRlcyBTRVQg REVGQVVMVCAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFV TFQgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUICh0 d28gc2NhbGFyIGNvbHMsIFNFVCBERUZBVUxUIHN1YnNldCkKIC0tIHRlc3QgRksgcGFyZW50 IHVwZGF0ZXMgQ0FTQ0FERQogSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2 LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwotSU5TRVJUIElO VE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAogCUFERCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwogCQlP TiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKLUVSUk9SOiAgYWN0aW9uIG5v dCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gbGVmdG92ZXJzIG9u IGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10n IFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAg ICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQg CistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4g MDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWzcsOCkK KyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykKKygzIHJv d3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQg PSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBb IlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIp IHwgWzcsOCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzcsOCkKKyBbMTAwLDEwMSkgfCBbIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzcs OCkKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitVUERBVEUgdGVt cG9yYWxfcm5nIFNFVCBpZCA9ICdbOSw5XScgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxp ZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAg fCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkg fCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy MCIpIHwgWzksMTApCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAi LCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpCisoMiByb3dzKQorCistLSBj bGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAo J1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0 ZXN0IEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworLS0g bGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEn IFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAg ICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQg CistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4g MDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykK KyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEg MDA6MDA6MDAgMjAyMSIpIHwgWzYsNykKKygyIHJvd3MpCisKKy0tIG5vbi1GUE8gZGVsZXRl OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOwor IGlkIHwgdmFsaWRfYXQgfCBwYXJlbnRfaWQgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKygwIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAx OS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAg ICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQg CistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkK KygxIHJvdykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScs ICdbOSw5XScpOwogLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAotSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJykpOwotSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBW QUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzksOV0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAogCUFE RCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwog CQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOwotRVJST1I6ICBhY3Rp b24gbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzCistLSBsZWZ0b3Zl cnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdb Nyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19y bmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAK KyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykKKygzIHJv d3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQg PSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBb IlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIp IHwgCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFu IDAxIDAwOjAwOjAwIDIwMTkiKSB8IAorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCAKKygzIHJvd3MpCisK Ky0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNy YW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBp ZCA9ICdbOSw5XScgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0w MS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEg MDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgCisgWzIwMCwy MDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAw IDIwMjEiKSB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVhbiB1cAorREVMRVRFIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIw MF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywg J1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVz IFNFVCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNp ZGVzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbNiw2XSc7 CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwx MDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAw MSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KQor IFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAw MDowMDowMCAyMDIxIikgfCBbNiw3KQorKDMgcm93cykKKworLS0gbm9uLUZQTyBkZWxldGU6 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7Cisg ICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAg ICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIikgfCAKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgCisgWzEwMCwxMDEpIHwg WyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEi KSB8IAorKDMgcm93cykKKworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcy MDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9p ZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBb MjAwLDIwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6 MDA6MDAgMjAyMSIpIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFuIHVwCitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1sy MDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzYs Nl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKIC0tIHRlc3QgRksgcGFyZW50IHVw ZGF0ZXMgU0VUIERFRkFVTFQKIElOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb LTEsLTFdJywgdHNyYW5nZShudWxsLCBudWxsKSk7Ci1JTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpKTsKLUlOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzgsOF0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMiwxMl0nKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJy bmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZwogICBB TFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKIAlEUk9QIENP TlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKQEAgLTk1OCw3ICsxMTEyLDQ2MSBA QCBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCiAJCUZPUkVJR04gS0VZIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKIAkJ T04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKLUVSUk9SOiAg YWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gbGVm dG92ZXJzIG9uIGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQg PSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBb IlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIp IHwgWy0xLDApCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJU dWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2 LDcpCisoMyByb3dzKQorCistLSBub24tRlBPIHVwZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9y bmcgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAg ICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEw MCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAw OjAwIDIwMjAiKSB8IFstMSwwKQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbLTEsMCkKKyBbMTAwLDEw MSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAg MjAyMSIpIHwgWy0xLDApCisoMyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5j ZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIw MCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScp OworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzksOV0nIFdIRVJFIGlkID0gJ1s4 LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAg ICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAg ICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgWzIwMCwyMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKQorIFsyMDAsMjAxKSB8IFsiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbOCw5KQorKDIg cm93cykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdb OSw5XScpOworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBW QUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSwgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAx JyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAs MTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIikgfCBbLTEsMCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbMTAwLDEwMSkg fCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAy MSIpIHwgWzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgorREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEw MSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAg MjAyMCIpIHwgWy0xLDApCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIw MTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFstMSwwKQorIFsxMDAsMTAxKSB8 IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIx IikgfCBbLTEsMCkKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCBy b3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIw MF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9h dCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBb Ik1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIp IHwgWy0xLDApCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJG cmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVh biB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sx MDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVS RSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0 IEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUgKHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJf cm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9m azJfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywK KwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtF WSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NB REU7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcy IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAx LTAxJyBTRVQgaWQxID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAg IGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAg ICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAx IDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFs3LDgpICAg ICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4Iiwi VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KSAgICAgIHwgWzYsNykKKyBbMTAw LDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisoMyByb3dzKQorCistLSBub24tRlBP IHVwZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nIFdIRVJF IGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdI RVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBw YXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIpIHwgWzcsOCkgICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJN b24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8 IFs3LDgpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNyw4KSAgICAgIHwgWzYs NykKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxV RVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwg J1s4LDhdJywgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nMiBTRVQgaWQxID0gJ1s5 LDldJyBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6 OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUg aWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg IHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVu dF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsy MDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIikgfCBbOSwxMCkgICAgIHwgWzgsOSkKKyBbMjAwLDIwMSkgfCBbIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgs OSkgICAgICB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVhbiB1cAorREVMRVRFIEZST00g dGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwy MDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZd JywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0IEZLIHBhcmVudCBkZWxl dGVzIENBU0NBREUgKHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMg KCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2 LDZdJywgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0w MS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAg aWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAg ICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEg MDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykgICAg ICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJG cmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorKDIgcm93 cykKKworLS0gbm9uLUZQTyBkZWxldGU6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdI RVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgaWQgfCB2YWxpZF9hdCB8IHBhcmVudF9pZDEg fCBwYXJlbnRfaWQyIAorLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKygwIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxV RVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwg J1s4LDhdJywgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlk MSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIw MF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAg ICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzIwMCwyMDEpIHwgWyJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8 IFs4LDkpICAgICAgfCBbOCw5KQorKDEgcm93KQorCistLSBjbGVhbiB1cAorREVMRVRFIEZS T00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIw MCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2 LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0IEZLIHBhcmVudCB1 cGRhdGVzIFNFVCBOVUxMICh0d28gc2NhbGFyIGNvbHMpCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcyIFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFM VUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyks ICdbNiw2XScsICdbNiw2XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcK KwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNU UkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZDEsIHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9ybmcyCisJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CistLSBs ZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQg aWQxID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAw IDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8ICAgICAgICAgICAgfCAKKyBb MTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAxOSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2 LDcpICAgICAgfCBbNiw3KQorKDMgcm93cykKKworLS0gbm9uLUZQTyB1cGRhdGU6CitVUERB VEUgdGVtcG9yYWxfcm5nMiBTRVQgaWQxID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0n OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAw LDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQg ICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwg WyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAi KSB8ICAgICAgICAgICAgfCAKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgICAgICAgICAgICB8IAorIFsx MDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDow MDowMCAyMDIxIikgfCAgICAgICAgICAgIHwgCisoMyByb3dzKQorCistLSBGSyBhY3Jvc3Mg dHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVT ICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhd JywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworVVBEQVRFIHRl bXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbOSw5XScgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQg dmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAgICB8IAor IFsyMDAsMjAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAw MDowMDowMCAyMDIxIikgfCBbOCw5KSAgICAgIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNs ZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAo J1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIg V0hFUkUgaWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0t IHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24g Ym90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9 ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlk ID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2 YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRf aWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAw LDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIpIHwgICAgICAgICAgICB8IAorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAw MDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KSAgICAg IHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZy aSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisoMyByb3dz KQorCistLSBub24tRlBPIGRlbGV0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hF UkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcg V0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8 IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIikgfCAgICAgICAgICAgIHwgCisgWzEwMCwxMDEpIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8ICAg ICAgICAgICAgfCAKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIs IkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgICAgICAgICAgICB8IAorKDMgcm93cykK KworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMg KCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAw XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgs OF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBB TkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAg ICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAgICB8 IAorIFsyMDAsMjAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAw MSAwMDowMDowMCAyMDIxIikgfCBbOCw5KSAgICAgIHwgWzgsOSkKKygyIHJvd3MpCisKKy0t IGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJ TiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Ju ZzIgV0hFUkUgaWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsK Ky0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scywg U0VUIE5VTEwgc3Vic2V0KQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdb Niw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0n KTsKKy0tIGZhaWxzIGJlY2F1c2UgeW91IGNhbid0IHNldCB0aGUgUEVSSU9EIGNvbHVtbjoK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9y bmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJ T0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMgorCQlPTiBERUxFVEUg U0VUIE5VTEwgKHZhbGlkX2F0KSBPTiBVUERBVEUgU0VUIE5VTEw7CitFUlJPUjogIGNvbHVt biAidmFsaWRfYXQiIHJlZmVyZW5jZWQgaW4gT04gREVMRVRFIFNFVCBhY3Rpb24gY2Fubm90 IGJlIFBFUklPRAorLS0gb2s6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZwor CURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RS QUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lk MSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFs X3JuZzIKKwkJT04gREVMRVRFIFNFVCBOVUxMIChwYXJlbnRfaWQxKSBPTiBVUERBVEUgU0VU IE5VTEw7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8g JzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAg ICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAg MjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAgICB8IFs2LDcp CisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAx IDAwOjAwOjAwIDIwMTkiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikg fCBbNiw3KSAgICAgIHwgWzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gZGVsZXRlOgor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOwor ICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAg ICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFu IDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8ICAgICAg ICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCAgICAgICAgICAgIHwgWzYsNykKKyBb MTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6 MDA6MDAgMjAyMSIpIHwgICAgICAgICAgICB8IFs2LDcpCisoMyByb3dzKQorCistLSBGSyBh Y3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIg VkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywg J1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworREVM RVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9h dCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf ZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwg cGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAgICAgICAgICAgIHwgWzgsOSkKKyBb MjAwLDIwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6 MDA6MDAgMjAyMSIpIHwgWzgsOSkgICAgICB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVh biB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdb MTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdI RVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0 ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUICh0d28gc2NhbGFyIGNvbHMpCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0nLCAnWy0xLC0xXScs IHRzcmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxV RVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAs MTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAn WzYsNl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisgIEFMVEVSIENP TFVNTiBwYXJlbnRfaWQxIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKyAgQUxURVIgQ09MVU1O IHBhcmVudF9pZDIgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJf cm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVS SU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRF IFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKKy0tIGxlZnRvdmVycyBvbiBi b3RoIHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZDEgPSAnWzcsN10n LCBpZDIgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6 MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFst MSwwKQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEph biAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KSAgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkg fCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAy MSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisoMyByb3dzKQorCistLSBub24tRlBPIHVwZGF0 ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nLCBpZDIgPSAnWzcs N10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9y bmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVu dF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFstMSwwKQorIFsxMDAs MTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDow MCAyMDE5IikgfCBbLTEsMCkgICAgIHwgWy0xLDApCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFstMSww KSAgICAgfCBbLTEsMCkKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNl ZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdb OCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcy MDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJf cm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nMiBT RVQgaWQxID0gJ1s5LDldJywgaWQyID0gJ1s5LDldJyBXSEVSRSBpZDEgPSAnWzgsOF0nIEFO RCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAg ICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDow MDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkgICAgIHwg Wy0xLDApCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkg SmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpICAgICAgfCBbOCw5KQorKDIgcm93cykK KworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJF IGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9y YWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5 XScpOworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVCAodHdvIHNjYWxh ciBjb2xzKQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2XScsICdb Niw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsKKy0tIGxl ZnRvdmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScg V0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lk MSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEph biAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkgICAgIHwgWy0xLDApCisgWzEwMCwxMDEp IHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIw MTkiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3KSAgICAg IHwgWzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgorREVMRVRFIEZST00g dGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAw IDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKSAgICAgfCBbLTEs MCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4g MDEgMDA6MDA6MDAgMjAxOSIpIHwgWy0xLDApICAgICB8IFstMSwwKQorIFsxMDAsMTAxKSB8 IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIx IikgfCBbLTEsMCkgICAgIHwgWy0xLDApCisoMyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdv IHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgn WzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywg dHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAx OS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lk MSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEph biAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkgICAgIHwgWy0xLDApCisgWzIwMCwyMDEp IHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIw MjEiKSB8IFs4LDkpICAgICAgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4gdXAKK0RF TEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBd JywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEg SU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gdGVzdCBGSyBw YXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVCAodHdvIHNjYWxhciBjb2xzLCBTRVQgREVGQVVM VCBzdWJzZXQpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0n LCAnWzYsNl0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxV RVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwg J1s2LDZdJywgJ1s2LDZdJyk7CistLSBmYWlscyBiZWNhdXNlIHlvdSBjYW4ndCBzZXQgdGhl IFBFUklPRCBjb2x1bW46CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworICBB TFRFUiBDT0xVTU4gcGFyZW50X2lkMSBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisJRFJPUCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJl bnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMgor CQlPTiBERUxFVEUgU0VUIERFRkFVTFQgKHZhbGlkX2F0KSBPTiBVUERBVEUgU0VUIERFRkFV TFQ7CitFUlJPUjogIGNvbHVtbiAidmFsaWRfYXQiIHJlZmVyZW5jZWQgaW4gT04gREVMRVRF IFNFVCBhY3Rpb24gY2Fubm90IGJlIFBFUklPRAorLS0gb2s6CitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9mazJfcm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkMSBTRVQgREVGQVVM VCAnWy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2Zr LAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04g S0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nMgorCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgKHBhcmVudF9p ZDEpIE9OIFVQREFURSBTRVQgREVGQVVMVDsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVz OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQxID0gJ1s2LDZdJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwx MDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsi VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikg fCBbLTEsMCkgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykgICAgICB8IFs2 LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFu IDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorKDMgcm93cykKKwor LS0gbm9uLUZQTyB1cGRhdGU6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlk MSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJF IGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJl bnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBb MTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFst MSwwKSAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbLTEsMCkgICAgIHwgWzYsNykK KygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwt MV0nLCAnWzgsOF0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTkt MDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEg fCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFs4LDkpCisgWzIwMCwyMDEpIHwg WyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEi KSB8IFs4LDkpICAgICAgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4gdXAKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywg J1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4g KCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gRksgd2l0aCBhIGN1 c3RvbSByYW5nZSB0eXBlCitDUkVBVEUgVFlQRSBteWRhdGVyYW5nZSBBUyByYW5nZShzdWJ0 eXBlPWRhdGUpOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCBteWRhdGVyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNf cGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0NS RUFURSBUQUJMRSB0ZW1wb3JhbF9mazNfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZh bGlkX2F0IG15ZGF0ZXJhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9mazNfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmszX3JuZzJybmdfZmsg Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZzMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpIE9OIERFTEVURSBDQVNDQURF CispOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMyBWQUxVRVMgKCdbOCw4XScsIG15ZGF0 ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9mazNfcm5nMnJuZyBWQUxVRVMgKCdbNSw1XScsIG15ZGF0ZXJhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9y bmczIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIw LTAxLTAxJyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr M19ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9h dCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tCisgWzUsNikgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8IFs4 LDkpCisgWzUsNikgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFs4LDkpCisoMiByb3dz KQorCitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrM19ybmcycm5nOworRFJPUCBUQUJMRSB0ZW1w b3JhbF9ybmczOworRFJPUCBUWVBFIG15ZGF0ZXJhbmdlOwogLS0gRksgYmV0d2VlbiBwYXJ0 aXRpb25lZCB0YWJsZXMKIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg KAogCWlkIGludDRyYW5nZSwKQEAgLTk2Niw4ICsxNTc0LDggQEAgQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAoCiAgIG5hbWUgdGV4dCwKIAlDT05TVFJBSU5UIHRl bXBvcmFsX3Bhcml0aW9uZWRfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUykKICkgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKLUNSRUFURSBUQUJM RSB0cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVT IElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzEx LDExXScpOwotQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScsICdbNCw0XScsICdbNiw2XScsICdb OCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKK0NSRUFURSBUQUJMRSB0cDEgUEFSVElU SU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzEsMV0n LCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzExLDExXScsICdbMTMs MTNdJywgJ1sxNSwxNV0nLCAnWzE3LDE3XScsICdbMTksMTldJywgJ1syMSwyMV0nLCAnWzIz LDIzXScpOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMCwwXScsICdbMiwyXScsICdbNCw0XScsICdb Niw2XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nLCAnWzE0LDE0XScsICdbMTYs MTZdJywgJ1sxOCwxOF0nLCAnWzIwLDIwXScsICdbMjIsMjJdJywgJ1syNCwyNF0nKTsKIElO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMKICAgKCdbMSwxXScs IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwKICAgKCdb MSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUnKSwK QEAgLTk4MCw4ICsxNTg4LDggQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgKAogCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJF RkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0 KQogKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOwotQ1JFQVRFIFRBQkxFIHRma3AxIHBhcnRp dGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4g KCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFd Jyk7Ci1DUkVBVEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZd JywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworQ1JFQVRFIFRBQkxFIHRma3Ax IFBBUlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxV RVMgSU4gKCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdb MTEsMTFdJywgJ1sxMywxM10nLCAnWzE1LDE1XScsICdbMTcsMTddJywgJ1sxOSwxOV0nLCAn WzIxLDIxXScsICdbMjMsMjNdJyk7CitDUkVBVEUgVEFCTEUgdGZrcDIgUEFSVElUSU9OIE9G IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1swLDBd JywgJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEy LDEyXScsICdbMTQsMTRdJywgJ1sxNiwxNl0nLCAnWzE4LDE4XScsICdbMjAsMjBdJywgJ1sy MiwyMl0nLCAnWzI0LDI0XScpOwogLS0gcGFydGl0aW9uZWQgRksgY2hpbGQgaW5zZXJ0cwog SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKICAg KCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMSwx XScpLApAQCAtMTAxNiw3ICsxNjI0LDcgQEAgVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0K IC0tIHNob3VsZCBmYWlsOgogVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQg dmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiAgIFdI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpOwotRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0 cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIgorRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxl ICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkxIiBvbiB0YWJsZSAidGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0o WzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZy b20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgogLS0gY2xlYW4g dXA6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJF IHBhcmVudF9pZCA9ICdbNSw1XSc7CkBAIC0xMDI4LDcgKzE2MzYsNyBAQCBJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0 ZXJhbmdlKCcyMDE4LTAxLQogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDIt MDEnLCAnMjAxOC0wMy0wMScpOwogLS0gc2hvdWxkIGZhaWw6CiBERUxFVEUgRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9 IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7Ci1FUlJPUjogIHVwZGF0 ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIg b24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitFUlJPUjogIHVw ZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29u c3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtl eTEiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgogREVUQUlM OiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWzAxLTAxLTIwMTgsMDItMDEtMjAxOCkp IGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyIuCiAtLSBjbGVhbiB1cDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKQEAgLTEwNTAs NyArMTY1OCw3IEBAIFVQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlk X2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtCiAtLSBzaG91bGQgZmFp bDoKIFVQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0 ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQogICBXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEn KTsKLUVSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBm b3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n X3BhcmVudF9pZF9ma2V5IiBvbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyIKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRl cyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nX3BhcmVudF9pZF9ma2V5MSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmciCiBERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEt MjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIi4KIC0tIGNsZWFuIHVwOgogREVMRVRFIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAn WzUsNV0nOwpAQCAtMTA2MiwzNSArMTY3MCwyMTQgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAx OC0wMS0KIERFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgt MDMtMDEnKTsKIC0tIHNob3VsZCBmYWlsOgogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwotRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRl IG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkiIG9uIHRhYmxlICJ0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgorRVJST1I6ICB1cGRhdGUgb3IgZGVs ZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkxIiBvbiB0YWJs ZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQs IHZhbGlkX2F0KT0oWzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCBy ZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmci LgogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQorSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s2LDZdJywgZGF0ZXJhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRdJywgZGF0ZXJhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJ T0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCiAJ CU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOwotRVJST1I6ICBhY3Rpb24g bm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzCitVUERBVEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTkt MDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2 LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbNCw0XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8 IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLQorIFs0LDUpIHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCBbNyw4KQorIFs0LDUp IHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCBbNiw3KQorIFs0LDUpIHwgWzAxLTAxLTIw MjAsMDEtMDEtMjAyMSkgfCBbNiw3KQorKDMgcm93cykKKworVVBEQVRFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbNCw0XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9p ZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs0 LDUpIHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCBbNyw4KQorIFs0LDUpIHwgWzAxLTAx LTIwMTgsMDEtMDEtMjAxOSkgfCBbNyw4KQorIFs0LDUpIHwgWzAxLTAxLTIwMjAsMDEtMDEt MjAyMSkgfCBbNyw4KQorKDMgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBW QUxVRVMgKCdbMTUsMTVdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVF UyAoJ1sxMCwxMF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzE1LDE1XScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAn WzE2LDE2XScgV0hFUkUgaWQgPSAnWzE1LDE1XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAx LTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyBXSEVSRSBpZCA9ICdbMTAsMTBdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0 ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLQorIFsxMCwxMSkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSB8 IFsxNiwxNykKKyBbMTAsMTEpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTUsMTYp CisoMiByb3dzKQorCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBDQVNDQURF CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzgsOF0n LCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1s1LDVdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50 X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzUsNikgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8IFs4LDkpCisgWzUsNikgfCBbMDEt MDEtMjAyMCwwMS0wMS0yMDIxKSB8IFs4LDkpCisoMiByb3dzKQorCitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVd JzsKKyBpZCB8IHZhbGlkX2F0IHwgcGFyZW50X2lkIAorLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLS0tCisoMCByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgVkFMVUVTICgnWzE3LDE3XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1sxNywxN10nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEx LDExXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTcsMTdd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAn WzE3LDE3XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTEs MTFdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQg CistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsx MSwxMikgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsxNywxOCkKKygxIHJvdykKKwog LS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbOSw5XScsIGRhdGVyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIGRhdGVyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZwogCQlP TiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOwotRVJST1I6ICBhY3Rpb24g bm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzCitVUERBVEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTkt MDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQgPSAn WzksOV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IFdIRVJFIGlkID0gJ1s2LDZdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAg IHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tCisgWzYsNykgfCBbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8IAorIFs2LDcpIHwg WzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCBbOSwxMCkKKyBbNiw3KSB8IFswMS0wMS0yMDIw LDAxLTAxLTIwMjEpIHwgWzksMTApCisoMyByb3dzKQorCitVUERBVEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQg PSAnWzYsNl0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRf aWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBb Niw3KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgCisgWzYsNykgfCBbMDEtMDEtMjAx OCwwMS0wMS0yMDE5KSB8IAorIFs2LDcpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCAK KygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxV RVMgKCdbMTgsMThdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE4LDE4 XScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTIsMTJdJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxOCwxOF0nKTsKK1VQ REFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0gJ1sxOSwxOV0nIFdIRVJF IGlkID0gJ1sxOCwxOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQg PSAnWzEyLDEyXSc7CisgICBpZCAgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFy ZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyBbMTIsMTMpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkgfCAKKyBbMTIsMTMpIHwg WzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTgsMTkpCisoMiByb3dzKQorCiAtLSBwYXJ0 aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxMSwxMV0nLCBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzcsN10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpLCAnWzExLDExXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEn IFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNyw3XSc7Cisg IGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs3LDgpIHwgWzAxLTAx LTIwMTksMDEtMDEtMjAyMCkgfCAKKyBbNyw4KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkp IHwgWzExLDEyKQorIFs3LDgpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTEsMTIp CisoMyByb3dzKQorCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hF UkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzcsN10nOworICBpZCAgIHwgICAgICAgIHZhbGlk X2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyBbNyw4KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwg CisgWzcsOCkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8IAorIFs3LDgpIHwgWzAxLTAx LTIwMjAsMDEtMDEtMjAyMSkgfCAKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMjAsMjBdJywgZGF0ZXJhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgVkFMVUVTICgnWzIwLDIwXScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyBWQUxVRVMgKCdbMTMsMTNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSwgJ1syMCwyMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBXSEVSRSBpZCA9ICdbMjAsMjBdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpk YXRlOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1sxMywxM10nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAg ICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisgWzEzLDE0KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgCisgWzEz LDE0KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzIwLDIxKQorKDIgcm93cykKKwog LS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMCwwXScsIGRhdGVyYW5n ZShudWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg VkFMVUVTICgnWzEyLDEyXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxV RVMgKCdbOCw4XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb MTIsMTJdJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n Ci0gIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorICBB TFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbMCwwXScsCiAJRFJPUCBDT05T VFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNU UkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nCiAJCU9OIERFTEVURSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VU IERFRkFVTFQ7Ci1FUlJPUjogIGFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBm b3JlaWduIGtleXMKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBp ZCA9ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOCw4XSc7CisgIGlk ICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs4LDkpIHwgWzAxLTAxLTIw MTksMDEtMDEtMjAyMCkgfCBbMCwxKQorIFs4LDkpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAx OSkgfCBbMTIsMTMpCisgWzgsOSkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsxMiwx MykKKygzIHJvd3MpCisKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlk ID0gJ1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKKyAgaWQg ICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzgsOSkgfCBbMDEtMDEtMjAx OSwwMS0wMS0yMDIwKSB8IFswLDEpCisgWzgsOSkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5 KSB8IFswLDEpCisgWzgsOSkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFswLDEpCiso MyByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVT ICgnWzIyLDIyXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMiwyMl0n LCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzE0LDE0XScsIGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjIsMjJdJyk7CitVUERB VEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMjMsMjNdJyBXSEVSRSBp ZCA9ICdbMjIsMjJdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0g J1sxNCwxNF0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgWzE0LDE1KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBbMTQsMTUp IHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMjIsMjMpCisoMiByb3dzKQorCiAtLSBw YXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzksOV0nLCBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE0LDE0XScpOworREVMRVRFIEZST00gdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTkt MDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOSw5 XSc7CisgICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzksMTAp IHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCBbMCwxKQorIFs5LDEwKSB8IFswMS0wMS0y MDE4LDAxLTAxLTIwMTkpIHwgWzE0LDE1KQorIFs5LDEwKSB8IFswMS0wMS0yMDIwLDAxLTAx LTIwMjEpIHwgWzE0LDE1KQorKDMgcm93cykKKworREVMRVRFIEZST00gdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s5LDldJzsKKyAgIGlk ICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOSwxMCkgfCBbMDEtMDEt MjAxOSwwMS0wMS0yMDIwKSB8IFswLDEpCisgWzksMTApIHwgWzAxLTAxLTIwMTgsMDEtMDEt MjAxOSkgfCBbMCwxKQorIFs5LDEwKSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzAs MSkKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBW QUxVRVMgKCdbMjQsMjRdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzI0 LDI0XScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTUsMTVd JywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1syNCwyNF0nKTsK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbMjQs MjRdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxNSwxNV0n OworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzE1LDE2 KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBbMTUsMTYpIHwgWzAxLTAx LTIwMjAsMDEtMDEtMjAyMSkgfCBbMjQsMjUpCisoMiByb3dzKQorCiBEUk9QIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmc7CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhv dXRfb3ZlcmxhcHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFw cy5zcWwKaW5kZXggOTViNmRhNGMwNzYuLjhhZWIyNDVjYmU5IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbApAQCAtNzM1LDMxICs3MzUsMTE0IEBA IERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CiAtLQog LS0gdGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKIC0tCistLSBUT0M6CistLSBwYXJl bnQgdXBkYXRlcyBDQVNDQURFCistLSBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCistLSBwYXJl bnQgdXBkYXRlcyBTRVQgTlVMTAorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKKy0tIHBh cmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVM VAorLS0gcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFy ZW50IGRlbGV0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IHVwZGF0 ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBO VUxMICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTCAodHdv IHNjYWxhciBjb2xzLCBTRVQgTlVMTCBzdWJzZXQpCistLSBwYXJlbnQgdXBkYXRlcyBTRVQg REVGQVVMVCAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFV TFQgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUICh0 d28gc2NhbGFyIGNvbHMsIFNFVCBERUZBVUxUIHN1YnNldCkKIAogLS0gdGVzdCBGSyBwYXJl bnQgdXBkYXRlcyBDQVNDQURFCiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgn WzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7Ci1JTlNFUlQg SU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19y bmcycm5nCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCiAJQURE IENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFy ZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCiAJ CU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworLS0gbGVmdG92ZXJzIG9u IGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10n IFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyB1cGRhdGU6CitVUERBVEUg dGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7 CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRz cmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQg aWQgPSAnWzksOV0nIFdIRVJFIGlkID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTkt MDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScp OworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzYsNl0nLCAnWzcs N10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBD QVNDQURFCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVz OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBd JzsKKy0tIG5vbi1GUE8gZGVsZXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJF IGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcg VkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19y bmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZS T00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAw LDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZd JywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CiAKIC0tIHRlc3QgRksgcGFyZW50IHVw ZGF0ZXMgU0VUIE5VTEwKLUlOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOSw5 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKLUlOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s5LDldJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAw XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKIEFM VEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAlEUk9QIENPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19maywKIAlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrCiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJUkVG RVJFTkNFUyB0ZW1wb3JhbF9ybmcKIAkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBT RVQgTlVMTDsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorVVBEQVRFIHRlbXBvcmFs X3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAy MC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0t IG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10n IFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2Vk IHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAs MjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsK K1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s5LDldJyBXSEVSRSBpZCA9ICdbOCw4 XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBj bGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAo J1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisKKy0t IHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwx MDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwor LS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEt MDEnIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5n MnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyBkZWxldGU6CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBh Y3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIw MjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlk ID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBd JzsKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9y YWxfcm5nIFdIRVJFIGlkIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0n KTsKIAogLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVGQVVMVAogSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1stMSwtMV0nLCB0c3JhbmdlKG51bGwsIG51bGwp KTsKLUlOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMTIsMTJdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwotSU5TRVJUIElOVE8gdGVtcG9yYWxf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpLCAnWzEyLDEyXScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nCiAgIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERF RkFVTFQgJ1stMSwtMV0nLAogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrLApAQCAtNzY3LDYgKzg1MCwyNzEgQEAgQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZwogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJF RkVSRU5DRVMgdGVtcG9yYWxfcm5nCiAJCU9OIERFTEVURSBTRVQgREVGQVVMVCBPTiBVUERB VEUgU0VUIERFRkFVTFQ7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0 ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScg VE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAw XSc7CistLSBub24tRlBPIHVwZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0g J1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVm ZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMg KCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4 LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbOSw5XScgV0hFUkUgaWQg PSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0n OworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUg aWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScp OworCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVF UyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzYsNl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRP ICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gdXBk YXRlOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0n OworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0 c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Ju ZyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGlt ZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0g J1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5n MnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhd JywgJ1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERSAodHdv IHNjYWxhciBjb2xzKQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2 XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9y bmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJ T0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMgorCQlPTiBERUxFVEUg Q0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVz OgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZDEgPSAnWzcsN10nIFdIRVJFIGlk MSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJF IGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0ZToKK1VQREFURSB0ZW1wb3Jh bF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7Cist LSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4 LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScp OworVVBEQVRFIHRlbXBvcmFsX3JuZzIgU0VUIGlkMSA9ICdbOSw5XScgV0hFUkUgaWQxID0g J1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7 CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUg aWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDld Jyk7CisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBj b2xzKQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2XScsICdbNiw2 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsKKy0tIGxlZnRv dmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hF UkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcg V0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gZGVsZXRlOgorREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNy b3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZB TFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdb OCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQg QD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr Ml9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRF IEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAn WzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAo J1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFy ZW50IHVwZGF0ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJu ZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5n MnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQg Q09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFy ZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRl bXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsK Ky0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEn IFNFVCBpZDEgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24t RlBPIHVwZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nIFdI RVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQg cm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgs OF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAy MC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3Ju ZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZzIgU0VU IGlkMSA9ICdbOSw5XScgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIw MTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcy cm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00g dGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwy MDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZd JywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFyZW50IGRl bGV0ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxV RVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwg J1s2LDZdJywgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAx OS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7Cist LSBub24tRlBPIGRlbGV0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQx ID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUg aWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAx JywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBW QUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJF IGlkMSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1w OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAw LDIwMF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScs ICdbOSw5XScpOworCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMICh0d28g c2NhbGFyIGNvbHMsIFNFVCBOVUxMIHN1YnNldCkKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMg KCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2 LDZdJywgJ1s2LDZdJyk7CistLSBmYWlscyBiZWNhdXNlIHlvdSBjYW4ndCBzZXQgdGhlIFBF UklPRCBjb2x1bW46CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworCURST1Ag Q09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFy ZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIK KwkJT04gREVMRVRFIFNFVCBOVUxMICh2YWxpZF9hdCkgT04gVVBEQVRFIFNFVCBOVUxMOwor LS0gb2s6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworCURST1AgQ09OU1RS QUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lk MiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04g REVMRVRFIFNFVCBOVUxMIChwYXJlbnRfaWQxKSBPTiBVUERBVEUgU0VUIE5VTEw7CistLSBs ZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEn IFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcy cm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIGRlbGV0ZToKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZL IGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n MiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0n LCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5EIHZhbGlk X2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4gdXAKK0RF TEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBd JywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEg SU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworCistLSB0ZXN0IEZL IHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUICh0d28gc2NhbGFyIGNvbHMpCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0nLCAnWy0xLC0xXScsIHRzcmFu Z2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdb Niw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0n KTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisgIEFMVEVSIENPTFVNTiBw YXJlbnRfaWQxIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKyAgQUxURVIgQ09MVU1OIHBhcmVu dF9pZDIgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJu Z19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZh bGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIFNFVCBE RUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNp ZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZDEgPSAnWzcsN10nLCBpZDIg PSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0 ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nLCBpZDIgPSAnWzcs N10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9y bmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVy ZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0n LCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5n ZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf ZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworVVBEQVRFIHRlbXBvcmFsX3Ju ZzIgU0VUIGlkMSA9ICdbOSw5XScsIGlkMiA9ICdbOSw5XScgV0hFUkUgaWQxID0gJ1s4LDhd JyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CistLSBj bGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4g KCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcy IFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CisK Ky0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQgKHR3byBzY2FsYXIgY29s cykKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CistLSBsZWZ0b3Zl cnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJF IGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdI RVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0ZToKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9z cyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxV RVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgs OF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1sy MDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdb Niw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworCistLSB0ZXN0IEZLIHBhcmVu dCBkZWxldGVzIFNFVCBERUZBVUxUICh0d28gc2NhbGFyIGNvbHMsIFNFVCBERUZBVUxUIHN1 YnNldCkKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWy0xLC0xXScsICdb Niw2XScsIHRzcmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n MiBWQUxVRVMgKCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAo J1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYs Nl0nLCAnWzYsNl0nKTsKKy0tIGZhaWxzIGJlY2F1c2UgeW91IGNhbid0IHNldCB0aGUgUEVS SU9EIGNvbHVtbjoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisgIEFMVEVS IENPTFVNTiBwYXJlbnRfaWQxIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNU UkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9y YWxfZmsyX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9p ZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyCisJCU9O IERFTEVURSBTRVQgREVGQVVMVCAodmFsaWRfYXQpIE9OIFVQREFURSBTRVQgREVGQVVMVDsK Ky0tIG9rOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKyAgQUxURVIgQ09M VU1OIHBhcmVudF9pZDEgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlO VCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m azJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVM RVRFIFNFVCBERUZBVUxUIChwYXJlbnRfaWQxKSBPTiBVUERBVEUgU0VUIERFRkFVTFQ7Cist LSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIg Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEt MDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9y bmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0ZToKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0t IEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgs OF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0nLCAnWzgsOF0nLCB0 c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hF UkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3Rh bXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sy MDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJy bmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhd JywgJ1s5LDldJyk7CisKKy0tIEZLIHdpdGggYSBjdXN0b20gcmFuZ2UgdHlwZQorCitDUkVB VEUgVFlQRSBteWRhdGVyYW5nZSBBUyByYW5nZShzdWJ0eXBlPWRhdGUpOworCitDUkVBVEUg VEFCTEUgdGVtcG9yYWxfcm5nMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IG15ZGF0 ZXJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM19wayBQUklNQVJZIEtFWSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X2ZrM19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgbXlkYXRlcmFuZ2Us CisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrM19ybmcy cm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9mazNfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMyAoaWQs IFBFUklPRCB2YWxpZF9hdCkgT04gREVMRVRFIENBU0NBREUKKyk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmczIFZBTFVFUyAoJ1s4LDhdJywgbXlkYXRlcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrM19ybmcycm5nIFZB TFVFUyAoJ1s1LDVdJywgbXlkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp LCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzMgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0g J1s4LDhdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmszX3JuZzJybmcgV0hFUkUgaWQg PSAnWzUsNV0nOworCitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrM19ybmcycm5nOworRFJPUCBU QUJMRSB0ZW1wb3JhbF9ybmczOworRFJPUCBUWVBFIG15ZGF0ZXJhbmdlOwogCiAtLSBGSyBi ZXR3ZWVuIHBhcnRpdGlvbmVkIHRhYmxlcwogCkBAIC03NzYsOCArMTEyNCw4IEBAIENSRUFU RSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKAogICBuYW1lIHRleHQsCiAJQ09O U1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCiApIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7Ci1D UkVBVEUgVEFCTEUgdHAxIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg Rk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5 LDldJywgJ1sxMSwxMV0nKTsKLUNSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0nLCAn WzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CitDUkVBVEUgVEFCTEUg dHAxIFBBUlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJ TiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwx MV0nLCAnWzEzLDEzXScsICdbMTUsMTVdJywgJ1sxNywxN10nLCAnWzE5LDE5XScsICdbMjEs MjFdJywgJ1syMywyM10nKTsKK0NSRUFURSBUQUJMRSB0cDIgUEFSVElUSU9OIE9GIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzAsMF0nLCAnWzIsMl0nLCAn WzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJywgJ1sxNCwx NF0nLCAnWzE2LDE2XScsICdbMTgsMThdJywgJ1syMCwyMF0nLCAnWzIyLDIyXScsICdbMjQs MjRdJyk7CiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTCiAg ICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0wMScpLCAnb25l JyksCiAgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDItMDEnLCAnMjAwMC0wMy0wMScp LCAnb25lJyksCkBAIC03OTEsOCArMTEzOSw4IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nICgKIAlDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlk X2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAoaWQsIFBFUklP RCB2YWxpZF9hdCkKICkgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKLUNSRUFURSBUQUJMRSB0 ZmtwMSBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1Ig VkFMVUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0n LCAnWzExLDExXScpOwotQ1JFQVRFIFRBQkxFIHRma3AyIHBhcnRpdGlvbiBPRiB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScsICdbNCw0 XScsICdbNiw2XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKK0NSRUFURSBU QUJMRSB0ZmtwMSBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAn WzksOV0nLCAnWzExLDExXScsICdbMTMsMTNdJywgJ1sxNSwxNV0nLCAnWzE3LDE3XScsICdb MTksMTldJywgJ1syMSwyMV0nLCAnWzIzLDIzXScpOworQ1JFQVRFIFRBQkxFIHRma3AyIFBB UlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMg SU4gKCdbMCwwXScsICdbMiwyXScsICdbNCw0XScsICdbNiw2XScsICdbOCw4XScsICdbMTAs MTBdJywgJ1sxMiwxMl0nLCAnWzE0LDE0XScsICdbMTYsMTZdJywgJ1sxOCwxOF0nLCAnWzIw LDIwXScsICdbMjIsMjJdJywgJ1syNCwyNF0nKTsKIAogLS0gcGFydGl0aW9uZWQgRksgY2hp bGQgaW5zZXJ0cwogCkBAIC04NzYsMzcgKzEyMjQsMTA3IEBAIERFTEVURSBGUk9NIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g ZGF0ZXJhbmdlCiAKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUK IAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s2LDZd JywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRdJywgZGF0 ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCiAJRFJPUCBDT05TVFJBSU5U IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFy ZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nCiAJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworVVBE QVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVS RSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgV0hFUkUgaWQgPSAnWzQsNF0nOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNCw0 XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE1 LDE1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCBkYXRl cmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwLDEwXScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTUsMTVdJyk7CitVUERBVEUgdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTYsMTZdJyBXSEVSRSBpZCA9ICdb MTUsMTVdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMCwx MF0nOwogCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCiAKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbOCw4XScsIGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlk ID0gJ1s4LDhdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgVkFMVUVTICgnWzE3LDE3XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZB TFVFUyAoJ1sxNywxN10nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVT ICgnWzExLDExXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb MTcsMTddJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUg aWQgPSAnWzE3LDE3XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMTEsMTFdJzsKKwogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VUIE5V TEwKIAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s5 LDldJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s2LDZdJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s5LDldJyk7CiBBTFRF UiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCiAJRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nCiAJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7 CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEwLDEw XScgV0hFUkUgaWQgPSAnWzksOV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1VQREFURSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbNiw2XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFM VUVTICgnWzE4LDE4XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxOCwx OF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEyLDEyXScs IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTgsMThdJyk7CitV UERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTksMTldJyBXSEVS RSBpZCA9ICdbMTgsMThdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1sxMiwxMl0nOwogCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQg TlVMTAogCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgn WzExLDExXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNyw3 XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTEsMTFdJyk7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0g J1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1s3LDddJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNyw3XSc7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzIwLDIwXScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEt MDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgVkFMVUVTICgnWzEzLDEzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbMjAsMjBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzIwLDIwXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5 LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMTMsMTNdJzsKKwogLS0gcGFydGl0aW9uZWQgRksgcGFy ZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKIAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFZBTFVFUyAoJ1swLDBdJywgZGF0ZXJhbmdlKG51bGwsIG51bGwpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTIsMTJdJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s4LDhdJywgZGF0ZXJh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMiwxMl0nKTsKIEFMVEVSIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKLSAgQUxURVIgQ09MVU1OIHBh cmVudF9pZCBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisgIEFMVEVSIENPTFVNTiBwYXJlbnRf aWQgU0VUIERFRkFVTFQgJ1swLDBdJywKIAlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZ19maywKIAlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nX2ZrCiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKIAkJ T04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKK1VQREFURSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbMTMsMTNdJyBXSEVSRSBp ZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbOCw4XSc7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFNFVCBpZCA9ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb OCw4XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgn WzIyLDIyXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMiwyMl0nLCBk YXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzE0LDE0XScsIGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjIsMjJdJyk7CitVUERBVEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMjMsMjNdJyBXSEVSRSBpZCA9 ICdbMjIsMjJdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sx NCwxNF0nOwogCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVM VAogCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE0 LDE0XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOSw5XScs IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTQsMTRdJyk7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sx NCwxNF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IFdIRVJFIGlkID0gJ1s5LDldJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOSw5XSc7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzI0LDI0XScsIGRhdGVyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syNCwyNF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEn LCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgVkFMVUVTICgnWzE1LDE1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbMjQsMjRdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgV0hFUkUgaWQgPSAnWzI0LDI0XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAx LTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyBXSEVSRSBpZCA9ICdbMTUsMTVdJzsKKwogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nOwogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmc7Ci0tIAoyLjQyLjAKCg== --------------4ZTQGZiKJvMMlo81itiM0iLZ Content-Type: text/x-patch; charset=UTF-8; name="v24-0007-Add-PERIODs.patch" Content-Disposition: attachment; filename="v24-0007-Add-PERIODs.patch" Content-Transfer-Encoding: base64 RnJvbSBjZmE4YTAxNGE2OTczMjZkYjk3YTIxZWQyNzg4NzU2ZDUzZjQzOTFjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgOSBKYW4gMjAyMSAyMTo1OTo0MyAtMDgw MApTdWJqZWN0OiBbUEFUQ0ggdjI0IDcvN10gQWRkIFBFUklPRHMKCi0gQWRkZWQgcGFyc2lu ZyBmb3IgU1FMOjIwMTEgc3ludGF4IHRvIGRlZmluZSBhbiBhcHBsaWNhdGlvbi10aW1lIFBF UklPRCBvbiBhCiAgdGFibGUgKGluIGJvdGggQ1JFQVRFIFRBQkxFIGFuZCBBTFRFUiBUQUJM RSkuIE1ha2Ugc3VyZSB3ZSBjcmVhdGUgdGhlIFBFUklPRAogIGFmdGVyIGNvbHVtbnMgYXJl IGtub3duIChzaW5jZSBQRVJJT0RzIGNhbiByZWZlciB0byB0aGVtKSBidXQgYmVmb3JlCiAg Y29uc3RyYWludHMgYXJlIGhhbmRsZWQgKHNpbmNlIFBFUklPRHMgY2FuIGFwcGVhciBpbiB0 aGVtKS4KLSBBZGRlZCBBTFRFUiBUQUJMRSBEUk9QIHN1cHBvcnQgZm9yIFBFUklPRHMuCi0g Q3JlYXRlZCBwb3N0Z3Jlcy5wZ19wZXJpb2QgdGFibGUuCi0gQ3JlYXRlZCBpbmZvcm1hdGlv bl9zY2hlbWEucGVyaW9kcyB2aWV3LgotIEFkZGVkIHBnX2R1bXAgc3VwcG9ydC4KLSBBZGRl ZCB0ZXN0cyBhbmQgZG9jdW1lbnRhdGlvbi4KLSBBdXRvbWF0aWNhbGx5IGRlZmluZSBhIGNv bnN0cmFpbnQgZm9yIGVhY2ggUEVSSU9EIHJlcXVpcmluZyB0aGUgc3RhcnQgY29sdW1uCiAg dG8gYmUgbGVzcyB0aGFuIHRoZSBlbmQgY29sdW1uLgotIFdoZW4gY3JlYXRpbmcgYSBQRVJJ T0QsIGNob29zZSBhbiBhcHByb3ByaWF0ZSByYW5nZSB0eXBlIHdlIGNhbiB1c2UgdG8KICBp bXBsZW1lbnQgUEVSSU9ELXJlbGF0ZWQgb3BlcmF0aW9ucy4gWW91IGNhbiBjaG9vc2Ugb25l IGV4cGxpY2l0bHkgaWYgdGhlcmUKICBpcyBhbWJpZ3VpdHkgKGR1ZSB0byBtdWx0aXBsZSBy YW5nZSB0eXBlcyBjcmVhdGVkIG92ZXIgdGhlIHNhbWUgYmFzZSB0eXBlKS4KLS0tCiBkb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAxMTIgKysrCiBk b2Mvc3JjL3NnbWwvZGRsLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTggKysK IGRvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbCAgICAgICAgICB8ICA2MyAr KwogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDI1 ICsKIGRvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sICAgICAgICAgICAgICAgICB8ICAg MiArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sICAgICAgICAgICAgfCAg NDAgKwogZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dtbCAgICAgICAgICAgICAgICAgIHwg ICAzICstCiBkb2Mvc3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sICAgICAgICAgICAgICAgICAg fCAgIDMgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUgICAgICAgICAgICAgICAg ICB8ICAgMiArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jICAgICAgICAgICAgICAg ICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgICAgICAgICAg ICAgIHwgIDE4ICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jICAgICAgICAgICAgICAg ICAgICB8ICA3NSArKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEu c3FsICAgIHwgIDIzICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL21lc29uLmJ1aWxkICAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMg ICAgICAgICAgIHwgIDczICsrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jICAg ICAgICAgICAgICAgfCAxMzIgKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJl cy50eHQgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMg ICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb21tZW50 LmMgICAgICAgICAgICAgICAgfCAgMTAgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvZHJvcGNt ZHMuYyAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50 X3RyaWdnZXIuYyAgICAgICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zZWNs YWJlbC5jICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMgICAgICAgICAgICAgIHwgNzU5ICsrKysrKysrKysrKysrKysrLQogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdmlldy5jICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMv YmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyAgICAgICAgICAgICAgICAgfCAgIDMgKwogc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgIDQzICstCiBz cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYyAgICAgICAgICAgfCAgMTAgKwog c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwgMTQ1ICsr Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAg MSArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMgICAgICAgICAgICAgICAgfCAg NTYgKysKIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jICAgICAgICAgICB8 ICA4NyArKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jICAgICAgICAg IHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAg ICB8IDE3MyArKystCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAg ICAgICAgfCAgMTQgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jICAgICAgICAg ICAgICAgIHwgICA3ICsKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAg ICAgICAgICB8ICAzNiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmggICAgICAgICAg ICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmggICAg ICAgICAgICAgICAgfCAgIDEgLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaCAg ICAgICAgICAgICAgIHwgIDU3ICsrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmgg ICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRz LmggICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVz LmggICAgICAgICAgICAgICAgfCAgMzkgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91 dGlsY21kLmggICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9sc3lzY2Fj aGUuaCAgICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvdXRpbHMvcGVyaW9k LmggICAgICAgICAgICAgICAgICAgIHwgIDE5ICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNlL3Rl c3RfZGRsX2RlcGFyc2UuYyAgICAgICB8ICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2dlbmVyYXRlZC5vdXQgICAgICAgfCAgIDQgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcGVyaW9kcy5vdXQgICAgICAgICB8IDE3NyArKysrCiBzcmMvdGVzdC9yZWdyZXNz L3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3BlcmlvZHMuc3FsICAgICAgICAgICAgICB8IDExOSArKysKIDUyIGZpbGVzIGNo YW5nZWQsIDIzOTAgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wZXJpb2QuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZXJpb2QuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9kLmgKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvaW5jbHVkZS91dGlscy9wZXJpb2QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGVyaW9kcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXgg MWFjOGI3NGZlM2QuLjVjMDQ1YmNlMTg2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0 YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtMjMwLDYg KzIzMCwxMSBAQAogICAgICAgPGVudHJ5PmluZm9ybWF0aW9uIGFib3V0IHBhcnRpdGlvbiBr ZXkgb2YgdGFibGVzPC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXBlcmlvZCI+PHN0cnVjdG5hbWU+ cGdfcGVyaW9kPC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5PgorICAgICAgPGVudHJ5PnBl cmlvZHM8L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5 PjxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctcG9saWN5Ij48c3RydWN0bmFtZT5wZ19wb2xp Y3k8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CiAgICAgICA8ZW50cnk+cm93LXNlY3Vy aXR5IHBvbGljaWVzPC9lbnRyeT4KQEAgLTU3MjYsNiArNTczMSwxMTMgQEAgU0NSQU0tU0hB LTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxl Pjo8cmVwbGFjZWFibGU+JmwKICAgICAgICBhcmUgc2ltcGxlIHJlZmVyZW5jZXMuCiAgICAg ICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICA8L3Rib2R5PgorICAgPC90 Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4KKworCisgPHNlY3QxIGlkPSJjYXRhbG9n LXBnLXBlcmlvZCI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVjdG5h bWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9ImNhdGFsb2ctcGctcGVyaW9kIj4K KyAgIDxwcmltYXJ5PnBnX3BlcmlvZDwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAg PHBhcmE+CisgICBUaGUgY2F0YWxvZyA8c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVjdG5h bWU+IHN0b3JlcworICAgaW5mb3JtYXRpb24gYWJvdXQgc3lzdGVtIGFuZCBhcHBsaWNhdGlv biB0aW1lIHBlcmlvZHMuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFBlcmlvZHMgYXJl IGRlc2NyaWJlZCBpbiA8eHJlZiBsaW5rZW5kPSJkZGwtcGVyaW9kcyIvPi4KKyAgPC9wYXJh PgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVj dG5hbWU+IENvbHVtbnM8L3RpdGxlPgorCisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0 aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2Vu dHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5 cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERlc2NyaXB0aW9uCisg ICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKworICAg IDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgIFJvdyBpZGVudGlmaWVyCisgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CisgICAgICAgPHN0cnVjdGZpZWxkPnBlcm5hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0 PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUGVyaW9kIG5h bWUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93Pgor ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGVycmVsaWQ8L3N0cnVj dGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlu a2VuZD0iY2F0YWxvZy1wZy1jbGFzcyI+PHN0cnVjdG5hbWU+cGdfY2xhc3M8L3N0cnVjdG5h bWU+PC9saW5rPi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgdGFibGUgdGhpcyBwZXJpb2QgYmVsb25n cyB0bworICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJzdGFydDwvc3Ry dWN0ZmllbGQ+IDx0eXBlPmludDI8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsg bGlua2VuZD0iY2F0YWxvZy1wZy1hdHRyaWJ1dGUiPjxzdHJ1Y3RuYW1lPnBnX2F0dHJpYnV0 ZTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5hdHRudW08L3N0cnVjdGZpZWxk PikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBudW1iZXIgb2Yg dGhlIHN0YXJ0IGNvbHVtbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5w ZXJlbmQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQyPC90eXBlPgorICAgICAgIChyZWZlcmVu Y2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctYXR0cmlidXRlIj48c3RydWN0bmFtZT5w Z19hdHRyaWJ1dGU8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+YXR0bnVtPC9z dHJ1Y3RmaWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUg bnVtYmVyIG9mIHRoZSBlbmQgY29sdW1uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPnBlcnJhbmdlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50MjwvdHlwZT4KKyAgICAg ICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWF0dHJpYnV0ZSI+PHN0 cnVjdG5hbWU+cGdfYXR0cmlidXRlPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxk PmF0dG51bTwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+Cisg ICAgICAgVGhlIG51bWJlciBvZiB0aGUgPGxpdGVyYWw+R0VORVJBVEVEPC9saXRlcmFsPiBj b2x1bW4gdGhhdCBpbXBsZW1lbnRzIHRoZSA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+Lgor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJjb25zdHJhaW50PC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxp bmtlbmQ9ImNhdGFsb2ctcGctY29uc3RyYWludCI+PHN0cnVjdG5hbWU+cGdfY29uc3RyYWlu dDwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikK KyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBPSUQgb2YgdGhlIHBl cmlvZCdzIDxsaXRlcmFsPkNIRUNLPC9saXRlcmFsPiBjb25zdHJhaW50CisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICA8L3Rib2R5PgogICAgPC90Z3JvdXA+ CiAgIDwvdGFibGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9kb2Mv c3JjL3NnbWwvZGRsLnNnbWwKaW5kZXggZmMwM2EzNDlmMGYuLjdlNTUzOTU5OWUwIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2RkbC5z Z21sCkBAIC0xMzc1LDYgKzEzNzUsNjQgQEAgQ1JFQVRFIFRBQkxFIGNpcmNsZXMgKAogICA8 L3NlY3QyPgogIDwvc2VjdDE+CiAKKyA8c2VjdDEgaWQ9ImRkbC1wZXJpb2RzIj4KKyAgPHRp dGxlPlBlcmlvZHM8L3RpdGxlPgorCisgIDxwYXJhPgorICAgUGVyaW9kcyBhcmUgZGVmaW5p dGlvbnMgb24gYSB0YWJsZSB0aGF0IGFzc29jaWF0ZSBhIHBlcmlvZCBuYW1lIHdpdGggYSBz dGFydAorICAgY29sdW1uIGFuZCBhbiBlbmQgY29sdW1uLiAgQm90aCBjb2x1bW5zIG11c3Qg YmUgb2YgZXhhY3RseSB0aGUgc2FtZSB0eXBlCisgICAoaW5jbHVkaW5nIGNvbGxhdGlvbiks IGhhdmUgYSBidHJlZSBvcGVyYXRvciBjbGFzcywgYW5kIHRoZSBzdGFydCBjb2x1bW4KKyAg IHZhbHVlIG11c3QgYmUgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBlbmQgY29sdW1uIHZhbHVl LgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIHBl cmlvZHM6IGFwcGxpY2F0aW9uIGFuZCBzeXN0ZW0uICBTeXN0ZW0gcGVyaW9kcyBhcmUKKyAg IGRpc3Rpbmd1aXNoZWQgYnkgdGhlaXIgbmFtZSB3aGljaCBtdXN0IGJlIDxsaXRlcmFsPlNZ U1RFTV9USU1FPC9saXRlcmFsPi4gIEFueQorICAgb3RoZXIgbmFtZSBpcyBhbiBhcHBsaWNh dGlvbiBwZXJpb2QuCisgIDwvcGFyYT4KKworICA8c2VjdDIgaWQ9ImRkbC1wZXJpb2RzLWFw cGxpY2F0aW9uLXBlcmlvZHMiPgorICA8dGl0bGU+QXBwbGljYXRpb24gUGVyaW9kczwvdGl0 bGU+CisKKyAgIDxpbmRleHRlcm0+CisgICAgPHByaW1hcnk+cGVyaW9kPC9wcmltYXJ5Pgor ICAgIDxzZWNvbmRhcnk+YXBwbGljYXRpb248L3NlY29uZGFyeT4KKyAgIDwvaW5kZXh0ZXJt PgorCisgICA8cGFyYT4KKyAgICBBcHBsaWNhdGlvbiBwZXJpb2RzIGFyZSBkZWZpbmVkIG9u IGEgdGFibGUgdXNpbmcgdGhlIGZvbGxvd2luZyBzeW50YXg6CisgICA8L3BhcmE+CisKKzxw cm9ncmFtbGlzdGluZz4KK0NSRUFURSBUQUJMRSBiaWxsaW5nX2FkZHJlc3NlcyAoCisgIGN1 c3RvbWVyX2lkIGludGVnZXIsCisgIGFkZHJlc3NfaWQgaW50ZWdlciwKKyAgdmFsaWRfZnJv bSBkYXRlLAorICB2YWxpZF90byBkYXRlLAorICA8ZW1waGFzaXM+UEVSSU9EIEZPUiB2YWxp ZGl0eSAodmFsaWRfZnJvbSwgdmFsaWRfdG8pPC9lbXBoYXNpcz4KKyk7Cis8L3Byb2dyYW1s aXN0aW5nPgorCisgICA8cGFyYT4KKyAgICBBcHBsaWNhdGlvbiBwZXJpb2RzIGNhbiBiZSB1 c2VkIHRvIGRlZmluZSB0ZW1wb3JhbCBwcmltYXJ5IGFuZCBmb3JlaWduIGtleXMuCisgICAg QW55IHRhYmxlIHdpdGggYSB0ZW1wb3JhbCBwcmltYXJ5IGtleSBpcyBhIHRlbXBvcmFsIHRh YmxlIGFuZCBzdXBwb3J0cyB0ZW1wb3JhbCB1cGRhdGUgYW5kIGRlbGV0ZSBjb21tYW5kcy4K KyAgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KKworICA8c2VjdDIgaWQ9ImRkbC1wZXJpb2RzLXN5 c3RlbS1wZXJpb2RzIj4KKyAgIDx0aXRsZT5TeXN0ZW0gUGVyaW9kczwvdGl0bGU+CisKKyAg IDxpbmRleHRlcm0+CisgICAgPHByaW1hcnk+cGVyaW9kPC9wcmltYXJ5PgorICAgIDxzZWNv bmRhcnk+c3lzdGVtPC9zZWNvbmRhcnk+CisgICA8L2luZGV4dGVybT4KKworICAgPHBhcmE+ CisgICAgUGVyaW9kcyBmb3IgPGxpdGVyYWw+U1lTVEVNX1RJTUU8L2xpdGVyYWw+IGFyZSBj dXJyZW50bHkgbm90IGltcGxlbWVudGVkLgorICAgPC9wYXJhPgorICA8L3NlY3QyPgorIDwv c2VjdDE+CisKICA8c2VjdDEgaWQ9ImRkbC1zeXN0ZW0tY29sdW1ucyI+CiAgIDx0aXRsZT5T eXN0ZW0gQ29sdW1uczwvdGl0bGU+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9pbmZv cm1hdGlvbl9zY2hlbWEuc2dtbCBiL2RvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEu c2dtbAppbmRleCA5ZTY2YmU0ZTgzZC4uNTU4Y2M3YjNmMTUgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvaW5m b3JtYXRpb25fc2NoZW1hLnNnbWwKQEAgLTQxNzEsNiArNDE3MSw2OSBAQCBPUkRFUiBCWSBj Lm9yZGluYWxfcG9zaXRpb247CiAgIDwvdGFibGU+CiAgPC9zZWN0MT4KIAorIDxzZWN0MSBp ZD0iaW5mb3NjaGVtYS1wZXJpb2RzIj4KKyAgPHRpdGxlPjxsaXRlcmFsPnBlcmlvZHM8L2xp dGVyYWw+PC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoZSB2aWV3IDxsaXRlcmFsPnBhcmFt ZXRlcnM8L2xpdGVyYWw+IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZQorICAgcGVy aW9kcyBvZiBhbGwgdGFibGVzIGluIHRoZSBjdXJyZW50IGRhdGFiYXNlLiAgVGhlIHN0YXJ0 IGFuZCBlbmQgY29sdW1uCisgICBuYW1lcyBhcmUgb25seSBzaG93biBpZiB0aGUgY3VycmVu dCB1c2VyIGhhcyBhY2Nlc3MgdG8gdGhlbSAoYnkgd2F5IG9mIGJlaW5nCisgICB0aGUgb3du ZXIgb3IgaGF2aW5nIHNvbWUgcHJpdmlsZWdlKS4KKyAgPC9wYXJhPgorCisgIDx0YWJsZT4K KyAgIDx0aXRsZT48bGl0ZXJhbD5wZXJpb2RzPC9saXRlcmFsPiBDb2x1bW5zPC90aXRsZT4K KworICAgPHRncm91cCBjb2xzPSIzIj4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAg ICA8ZW50cnk+TmFtZTwvZW50cnk+CisgICAgICA8ZW50cnk+RGF0YSBUeXBlPC9lbnRyeT4K KyAgICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwv dGhlYWQ+CisKKyAgICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVy YWw+dGFibGVfY2F0YWxvZzwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBl PnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFtZSBvZiB0 aGUgZGF0YWJhc2UgY29udGFpbmluZyB0aGUgcGVyaW9kIChhbHdheXMgdGhlIGN1cnJlbnQg ZGF0YWJhc2UpPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeT48bGl0ZXJhbD50YWJsZV9zY2hlbWE8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxl bnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5 Pk5hbWUgb2YgdGhlIHNjaGVtYSBjb250YWluaW5nIHRoZSBwZXJpb2Q8L2VudHJ5PgorICAg ICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPnRhYmxlX25h bWU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5zcWxfaWRlbnRpZmll cjwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5hbWUgb2YgdGhlIHRhYmxlIGNvbnRh aW5pbmcgdGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+Cisg ICAgICA8ZW50cnk+PGxpdGVyYWw+cGVyaW9kX25hbWU8L2xpdGVyYWw+PC9lbnRyeT4KKyAg ICAgIDxlbnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2VudHJ5PgorICAgICAg PGVudHJ5Pk5hbWUgb2YgdGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAg IDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+c3RhcnRfY29sdW1uX25hbWU8L2xpdGVy YWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48 L2VudHJ5PgorICAgICAgPGVudHJ5Pk5hbWUgb2YgdGhlIHN0YXJ0IGNvbHVtbiBmb3IgdGhl IHBlcmlvZDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnk+PGxpdGVyYWw+ZW5kX2NvbHVtbl9uYW1lPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8 ZW50cnk+PHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRy eT5OYW1lIG9mIHRoZSBlbmQgY29sdW1uIGZvciB0aGUgcGVyaW9kPC9lbnRyeT4KKyAgICAg PC9yb3c+CisgICAgPC90Ym9keT4KKyAgIDwvdGdyb3VwPgorICA8L3RhYmxlPgorIDwvc2Vj dDE+CisKICA8c2VjdDEgaWQ9ImluZm9zY2hlbWEtcmVmZXJlbnRpYWwtY29uc3RyYWludHMi PgogICA8dGl0bGU+PGxpdGVyYWw+cmVmZXJlbnRpYWxfY29uc3RyYWludHM8L2xpdGVyYWw+ PC90aXRsZT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5z Z21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCmluZGV4IDk2NzA2NzEx MDdlLi5lY2E5YzNiYTU0NSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90 YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbApAQCAt NjEsNiArNjEsOCBAQCBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBBTFRFUiBDT05TVFJB SU5UIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3Jl cGxhY2VhYmxlPiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBdIFsgSU5JVElBTExZ IERFRkVSUkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCiAgICAgVkFMSURBVEUgQ09OU1RS QUlOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9y ZXBsYWNlYWJsZT4KICAgICBEUk9QIENPTlNUUkFJTlQgWyBJRiBFWElTVFMgXSAgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+ IFsgUkVTVFJJQ1QgfCBDQVNDQURFIF0KKyAgICBBREQgUEVSSU9EIEZPUiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiAoIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF9jb2x1bW48L3JlcGxhY2VhYmxlPiwg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVuZF9jb2x1bW48L3JlcGxhY2VhYmxl PiApIFsgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2Rfb3B0 aW9uPC9yZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFs dWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKyAgICBEUk9QIFBFUklPRCBGT1IgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4g WyBSRVNUUklDVCB8IENBU0NBREUgXQogICAgIERJU0FCTEUgVFJJR0dFUiBbIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmlnZ2VyX25hbWU8L3JlcGxhY2VhYmxlPiB8IEFM TCB8IFVTRVIgXQogICAgIEVOQUJMRSBUUklHR0VSIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRyaWdnZXJfbmFtZTwvcmVwbGFjZWFibGU+IHwgQUxMIHwgVVNFUiBdCiAg ICAgRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+dHJpZ2dlcl9uYW1lPC9yZXBsYWNlYWJsZT4KQEAgLTU4NSw2ICs1ODcsMjkgQEAgV0lU SCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0 ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0 ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLWRlc2MtYWRk LXBlcmlvZCI+CisgICAgPHRlcm0+PGxpdGVyYWw+QUREIFBFUklPRCBGT1I8L2xpdGVyYWw+ PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGZvcm0g YWRkcyBhIG5ldyBwZXJpb2QgdG8gYSB0YWJsZSB1c2luZyB0aGUgc2FtZSBzeW50YXggYXMK KyAgICAgIDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV0YWJsZSIvPi4KKyAgICAgPC9wYXJh PgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3Rl bnRyeSBpZD0ic3FsLWFsdGVydGFibGUtZGVzYy1kcm9wLXBlcmlvZCI+CisgICAgPHRlcm0+ PGxpdGVyYWw+RFJPUCBQRVJJT0QgRk9SPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0 ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIGRyb3BzIHRoZSBzcGVjaWZpZWQg cGVyaW9kIG9uIGEgdGFibGUuICBUaGUgc3RhcnQgYW5kIGVuZAorICAgICAgY29sdW1ucyB3 aWxsIG5vdCBiZSBkcm9wcGVkIGJ5IHRoaXMgY29tbWFuZCBidXQgdGhlCisgICAgICA8bGl0 ZXJhbD5DSEVDSzwvbGl0ZXJhbD4gY29uc3RyYWludCB3aWxsIGJlLiAgWW91IHdpbGwgbmVl ZCB0byBzYXkKKyAgICAgIDxsaXRlcmFsPkNBU0NBREU8L2xpdGVyYWw+IGlmIGFueXRoaW5n IG91dHNpZGUgdGhlIHRhYmxlIGRlcGVuZHMgb24gdGhlCisgICAgICBjb2x1bW4uCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2 YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLWRlc2MtZGlzYWJsZS1lbmFibGUtdHJp Z2dlciI+CiAgICAgPHRlcm0+PGxpdGVyYWw+RElTQUJMRTwvbGl0ZXJhbD4vPGxpdGVyYWw+ RU5BQkxFIFsgUkVQTElDQSB8IEFMV0FZUyBdIFRSSUdHRVI8L2xpdGVyYWw+PC90ZXJtPgog ICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5z Z21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKaW5kZXggNWI0M2M1NmIxMzMu LjQ5YzJkZjk5NDQ5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NvbW1lbnQuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvbW1lbnQuc2dtbApAQCAtNDQsNiArNDQsNyBA QCBDT01NRU5UIE9OCiAgIE9QRVJBVE9SIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5vcGVyYXRvcl9uYW1lPC9yZXBsYWNlYWJsZT4gKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5sZWZ0X3R5cGU8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnJpZ2h0X3R5cGU8L3JlcGxhY2VhYmxlPikgfAogICBPUEVSQVRPUiBDTEFT UyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b2JqZWN0X25hbWU8L3JlcGxhY2Vh YmxlPiBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfbWV0aG9k PC9yZXBsYWNlYWJsZT4gfAogICBPUEVSQVRPUiBGQU1JTFkgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm9iamVjdF9uYW1lPC9yZXBsYWNlYWJsZT4gVVNJTkcgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X21ldGhvZDwvcmVwbGFjZWFibGU+IHwKKyAg UEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWxhdGlvbl9uYW1lPC9y ZXBsYWNlYWJsZT4uPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1l PC9yZXBsYWNlYWJsZT4gfAogICBQT0xJQ1kgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnBvbGljeV9uYW1lPC9yZXBsYWNlYWJsZT4gT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiB8CiAgIFsgUFJPQ0VEVVJBTCBd IExBTkdVQUdFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vYmplY3RfbmFtZTwv cmVwbGFjZWFibGU+IHwKICAgUFJPQ0VEVVJFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wcm9jZWR1cmVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCBbIFsgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmFyZ21vZGU8L3JlcGxhY2VhYmxlPiBdIFsgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFyZ25hbWU8L3JlcGxhY2VhYmxlPiBdIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5hcmd0eXBlPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBd ICkgXSB8CkBAIC0zNDEsNiArMzQyLDcgQEAgQ09NTUVOVCBPTiBPUEVSQVRPUiBeICh0ZXh0 LCB0ZXh0KSBJUyAnUGVyZm9ybXMgaW50ZXJzZWN0aW9uIG9mIHR3byB0ZXh0cyc7CiBDT01N RU5UIE9OIE9QRVJBVE9SIC0gKE5PTkUsIGludGVnZXIpIElTICdVbmFyeSBtaW51cyc7CiBD T01NRU5UIE9OIE9QRVJBVE9SIENMQVNTIGludDRvcHMgVVNJTkcgYnRyZWUgSVMgJzQgYnl0 ZSBpbnRlZ2VyIG9wZXJhdG9ycyBmb3IgYnRyZWVzJzsKIENPTU1FTlQgT04gT1BFUkFUT1Ig RkFNSUxZIGludGVnZXJfb3BzIFVTSU5HIGJ0cmVlIElTICdhbGwgaW50ZWdlciBvcGVyYXRv cnMgZm9yIGJ0cmVlcyc7CitDT01NRU5UIE9OIFBFUklPRCBteV90YWJsZS5teV9jb2x1bW4g SVMgJ1NhbGVzIHByb21vdGlvbiB2YWxpZGl0eSc7CiBDT01NRU5UIE9OIFBPTElDWSBteV9w b2xpY3kgT04gbXl0YWJsZSBJUyAnRmlsdGVyIHJvd3MgYnkgdXNlcnMnOwogQ09NTUVOVCBP TiBQUk9DRURVUkUgbXlfcHJvYyAoaW50ZWdlciwgaW50ZWdlcikgSVMgJ1J1bnMgYSByZXBv cnQnOwogQ09NTUVOVCBPTiBQVUJMSUNBVElPTiBhbGx0YWJsZXMgSVMgJ1B1Ymxpc2hlcyBh bGwgb3BlcmF0aW9ucyBvbiBhbGwgdGFibGVzJzsKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJs ZS5zZ21sCmluZGV4IDY5MDViNzViYjVjLi5kNGRmZTQ4YjJhNyAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV90YWJsZS5zZ21sCkBAIC0yMyw2ICsyMyw3IEBAIFBvc3RncmVTUUwgZG9jdW1l bnRhdGlvbgogPHN5bm9wc2lzPgogQ1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVN UE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBFWElTVFMgXSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+ ICggWwogICB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwv cmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8 L3JlcGxhY2VhYmxlPiBbIFNUT1JBR0UgeyBQTEFJTiB8IEVYVEVSTkFMIHwgRVhURU5ERUQg fCBNQUlOIHwgREVGQVVMVCB9IF0gWyBDT01QUkVTU0lPTiA8cmVwbGFjZWFibGU+Y29tcHJl c3Npb25fbWV0aG9kPC9yZXBsYWNlYWJsZT4gXSBbIENPTExBVEUgPHJlcGxhY2VhYmxlPmNv bGxhdGlvbjwvcmVwbGFjZWFibGU+IF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+Y29sdW1uX2NvbnN0cmFpbnQ8L3JlcGxhY2VhYmxlPiBbIC4uLiBdIF0KKyAgICB8IDxy ZXBsYWNlYWJsZT5wZXJpb2RfZGVmaW5pdGlvbjwvcmVwbGFjZWFibGU+CiAgICAgfCA8cmVw bGFjZWFibGU+dGFibGVfY29uc3RyYWludDwvcmVwbGFjZWFibGU+CiAgICAgfCBMSUtFIDxy ZXBsYWNlYWJsZT5zb3VyY2VfdGFibGU8L3JlcGxhY2VhYmxlPiBbIDxyZXBsYWNlYWJsZT5s aWtlX29wdGlvbjwvcmVwbGFjZWFibGU+IC4uLiBdIH0KICAgICBbLCAuLi4gXQpAQCAtMzcs NiArMzgsNyBAQCBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBU RU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSQogQ1JFQVRFIFsgWyBHTE9C QUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBb IElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVf bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnR5cGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKAogICB7IDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFsgV0lUSCBPUFRJT05T IF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX2NvbnN0cmFpbnQ8 L3JlcGxhY2VhYmxlPiBbIC4uLiBdIF0KKyAgICB8IDxyZXBsYWNlYWJsZT5wZXJpb2RfZGVm aW5pdGlvbjwvcmVwbGFjZWFibGU+CiAgICAgfCA8cmVwbGFjZWFibGU+dGFibGVfY29uc3Ry YWludDwvcmVwbGFjZWFibGU+IH0KICAgICBbLCAuLi4gXQogKSBdCkBAIC00OSw2ICs1MSw3 IEBAIENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRFTVBPUkFSWSB8IFRFTVAgfSB8 IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJCiBDUkVBVEUgWyBbIEdMT0JBTCB8IExP Q0FMIF0geyBURU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9U IEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9y ZXBsYWNlYWJsZT4KICAgICBQQVJUSVRJT04gT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhcmVudF90YWJsZTwvcmVwbGFjZWFibGU+IFsgKAogICB7IDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFsgV0lUSCBP UFRJT05TIF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX2NvbnN0 cmFpbnQ8L3JlcGxhY2VhYmxlPiBbIC4uLiBdIF0KKyAgICB8IDxyZXBsYWNlYWJsZT5wZXJp b2RfZGVmaW5pdGlvbjwvcmVwbGFjZWFibGU+CiAgICAgfCA8cmVwbGFjZWFibGU+dGFibGVf Y29uc3RyYWludDwvcmVwbGFjZWFibGU+IH0KICAgICBbLCAuLi4gXQogKSBdIHsgRk9SIFZB TFVFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3Nw ZWM8L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfQpAQCAtNzMsNiArNzYsMTEgQEAgQ1JFQVRF IFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQg XSBUQUJMRSBbIElGIE5PVCBFWEkKICAgICBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBbIE9O IFVQREFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0 aW9uPC9yZXBsYWNlYWJsZT4gXSB9CiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBd IFsgSU5JVElBTExZIERFRkVSUkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCiAKKzxwaHJh c2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfZGVmaW5pdGlv bjwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorCitQRVJJT0QgRk9SIHsgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gfCBTWVNU RU1fVElNRSB9ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1l PC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+ICkKK1sgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wZXJpb2Rfb3B0aW9uPC9yZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKwogPHBo cmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX2NvbnN0cmFp bnQ8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KIAogWyBDT05TVFJBSU5UIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2VhYmxlPiBd CkBAIC0xNDAsNiArMTQ4LDE0IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICBu YW1lIGFzIGFueSBleGlzdGluZyBkYXRhIHR5cGUgaW4gdGhlIHNhbWUgc2NoZW1hLgogICA8 L3BhcmE+CiAKKyAgPHBhcmE+CisgICBQZXJpb2RzIG15IGJlIGRlZmluZWQgb24gdGFibGVz LCBzcGVjaWZ5aW5nIHRoYXQgdHdvIGV4aXN0aW5nIGNvbHVtbnMKKyAgIHJlcHJlc2VudCBz dGFydCBhbmQgZW5kIHZhbHVlcyBmb3IgdGhlIHBlcmlvZC4gIFBlcmlvZHMgbWF5IGhhdmUg YW55IG5hbWUKKyAgIHRoYXQgZG9lc24ndCBjb25mbGljdCB3aXRoIGEgY29sdW1uIG5hbWUs IGJ1dCB0aGUgbmFtZQorICAgPGxpdGVyYWw+U1lTVEVNX1RJTUU8L2xpdGVyYWw+IGlzIHNw ZWNpYWwsIHVzZWQgZm9yIHZlcnNpb25pbmcgdGFibGVzLgorICAgU3lzdGVtIHBlcmlvZHMg YXJlIG5vdCB5ZXQgaW1wbGVtZW50ZWQuICBTZWUgPHhyZWYgbGlua2VuZD0iZGRsLXBlcmlv ZHMiLz4gZm9yIG1vcmUgZGV0YWlscy4KKyAgPC9wYXJhPgorCiAgIDxwYXJhPgogICAgVGhl IG9wdGlvbmFsIGNvbnN0cmFpbnQgY2xhdXNlcyBzcGVjaWZ5IGNvbnN0cmFpbnRzICh0ZXN0 cykgdGhhdAogICAgbmV3IG9yIHVwZGF0ZWQgcm93cyBtdXN0IHNhdGlzZnkgZm9yIGFuIGlu c2VydCBvciB1cGRhdGUgb3BlcmF0aW9uCkBAIC04MDAsNiArODE2LDMwIEBAIFdJVEggKCBN T0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8 L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5 PgogCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldGFibGUtcGFybXMtcGVyaW9k Ij4KKyAgICA8dGVybT48bGl0ZXJhbD5QRVJJT0QgRk9SIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ICkgWyBXSVRI ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9vcHRpb248L3JlcGxh Y2VhYmxlPiA9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFj ZWFibGU+IFssIC4uLiBdICkgXTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIEEgcGVyaW9kIGRlZmluaXRpb24gZ2l2ZXMgc2VtYW50aWMg bWVhbmluZyB0byB0d28gZXhpc3RpbmcgY29sdW1ucyBvZgorICAgICAgdGhlIHRhYmxlLiAg SXQgZGVmaW5lcyBhICJzdGFydCBjb2x1bW4iIGFuZCBhbiAiZW5kIGNvbHVtbiIgd2hlcmUg dGhlCisgICAgICBzdGFydCB2YWx1ZSBpcyBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIGVuZCB2 YWx1ZS4gIEEKKyAgICAgIDxsaXRlcmFsPkNIRUNLPC9saXRlcmFsPiBjb25zdHJhaW50IGlz IGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB0byBlbmZvcmNlCisgICAgICB0aGlzLiBZb3UgY2Fu IHNwZWNpZnkgdGhlIG5hbWUgb2YgdGhhdCBjb25zdHJhaW50IHdpdGggdGhlCisgICAgICA8 bGl0ZXJhbD5jaGVja19jb25zdHJhaW50X25hbWU8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wZXJpb2Rfb3B0aW9uPC9yZXBsYWNlYWJsZT4uCisgICAgIDwv cGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIEJvdGggY29sdW1ucyBtdXN0IGhhdmUgZXhh Y3RseSB0aGUgc2FtZSB0eXBlIGFuZCBtdXN0IGhhdmUgYSByYW5nZSB0eXBlCisgICAgICBk ZWZpbmVkIGZyb20gdGhlaXIgYmFzZSB0eXBlLiAgSWYgdGhlcmUgYXJlIHNldmVyYWwgcmFu Z2UgdHlwZXMgZm9yIHRoYXQKKyAgICAgIGJhc2UgdHlwZSwgeW91IG11c3Qgc3BlY2lmeSB3 aGljaCBvbmUgeW91IHdhbnQgYnkgdXNpbmcgdGhlCisgICAgICA8bGl0ZXJhbD5yYW5nZXR5 cGU8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2Rfb3B0 aW9uPC9yZXBsYWNlYWJsZT4uCisgICAgICBBbnkgYmFzZSB0eXBlIGlzIGFsbG93ZWQsIGFz IGxvbmcgYXMgaXQgaGFzIGEgcmFuZ2UgdHlwZSwgYWx0aG91Z2ggaXQgaXMKKyAgICAgIGV4 cGVjdGVkIHRoYXQgbW9zdCBwZXJpb2RzIHdpbGwgdXNlIHRlbXBvcmFsIHR5cGVzIGxpa2Ug PGxpdGVyYWw+dGltZXN0YW1wdHo8L2xpdGVyYWw+CisgICAgICBvciA8bGl0ZXJhbD5kYXRl PC9saXRlcmFsPi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxp c3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXRhYmxlLXBhcm1z LWNvbnN0cmFpbnQiPgogICAgIDx0ZXJtPjxsaXRlcmFsPkNPTlNUUkFJTlQgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+PC9s aXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvcmVmL2RlbGV0ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dtbAppbmRl eCAxYzcyNzUzNDFlYS4uYjM4OGJlNzUwOGMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvZGVsZXRlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dtbApAQCAt NTYsNyArNTYsOCBAQCBERUxFVEUgRlJPTSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKgogICA8L3BhcmE+CiAK ICAgPHBhcmE+Ci0gICBJZiB0aGUgdGFibGUgaGFzIGEgcmFuZ2Ugb3IgbXVsdGlyYW5nZSBj b2x1bW4sCisgICBJZiB0aGUgdGFibGUgaGFzIGEgcmFuZ2Ugb3IgbXVsdGlyYW5nZSBjb2x1 bW4sIG9yIGEKKyAgIDxsaW5rIGxpbmtlbmQ9ImRkbC1wZXJpb2RzLWFwcGxpY2F0aW9uLXBl cmlvZHMiPjxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD48L2xpbms+LAogICAgeW91IG1heSBz dXBwbHkgYSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gY2xhdXNlLCBhbmQg eW91ciBkZWxldGUgd2lsbAogICAgb25seSBhZmZlY3Qgcm93cyB0aGF0IG92ZXJsYXAgdGhl IGdpdmVuIGludGVydmFsLiBGdXJ0aGVybW9yZSwgaWYgYSByb3cncyBzcGFuCiAgICBleHRl bmRzIG91dHNpZGUgdGhlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBib3Vu ZHMsIHRoZW4geW91ciBkZWxldGUKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvdXBk YXRlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sCmluZGV4IDcxYTAyNjk3 ZjJkLi5hMWI4ODU3MWQwYSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sCkBAIC01Myw3ICs1Myw4 IEBAIFVQREFURSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFi bGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsKICAgPC9wYXJhPgogCiAgIDxwYXJhPgot ICAgSWYgdGhlIHRhYmxlIGhhcyBhIHJhbmdlIG9yIG11bHRpcmFuZ2UgY29sdW1uLAorICAg SWYgdGhlIHRhYmxlIGhhcyBhIHJhbmdlIG9yIG11bHRpcmFuZ2UgY29sdW1uLCBvciBhCisg ICA8bGluayBsaW5rZW5kPSJkZGwtcGVyaW9kcy1hcHBsaWNhdGlvbi1wZXJpb2RzIj48bGl0 ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+PC9saW5rPiwKICAgIHlvdSBtYXkgc3VwcGx5IGEgPGxp dGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IGNsYXVzZSwgYW5kIHlvdXIgdXBkYXRl IHdpbGwKICAgIG9ubHkgYWZmZWN0IHJvd3MgdGhhdCBvdmVybGFwIHRoZSBnaXZlbiBpbnRl cnZhbC4gRnVydGhlcm1vcmUsIGlmIGEgcm93J3Mgc3BhbgogICAgZXh0ZW5kcyBvdXRzaWRl IHRoZSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gYm91bmRzLCB0aGVuIHlv dXIgdXBkYXRlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQppbmRleCAzNTJiYTZkM2UyZS4uMzkxMmM2 Y2YzNDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUKKysrIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQpAQCAtMzksNiArMzksNyBAQCBPQkpTID0g XAogCXBnX25hbWVzcGFjZS5vIFwKIAlwZ19vcGVyYXRvci5vIFwKIAlwZ19wYXJhbWV0ZXJf YWNsLm8gXAorCXBnX3BlcmlvZC5vIFwKIAlwZ19wcm9jLm8gXAogCXBnX3B1YmxpY2F0aW9u Lm8gXAogCXBnX3JhbmdlLm8gXApAQCAtMTExLDYgKzExMiw3IEBAIENBVEFMT0dfSEVBREVS UyA6PSBcCiAJcGdfY29sbGF0aW9uLmggXAogCXBnX3BhcmFtZXRlcl9hY2wuaCBcCiAJcGdf cGFydGl0aW9uZWRfdGFibGUuaCBcCisJcGdfcGVyaW9kLmggXAogCXBnX3JhbmdlLmggXAog CXBnX3RyYW5zZm9ybS5oIFwKIAlwZ19zZXF1ZW5jZS5oIFwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5j CmluZGV4IDU5MGFmZmI3OWE1Li41MGNhNzA2YTE2MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9hY2xjaGsuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5j CkBAIC0yODE3LDYgKzI4MTcsNyBAQCBhY2xjaGVja19lcnJvcihBY2xSZXN1bHQgYWNsZXJy LCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNhc2UgT0JKRUNUX0RFRkFVTFQ6CiAJCQkJ CWNhc2UgT0JKRUNUX0RFRkFDTDoKIAkJCQkJY2FzZSBPQkpFQ1RfRE9NQ09OU1RSQUlOVDoK KwkJCQkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQkJCQljYXNlIE9CSkVDVF9QVUJMSUNBVElP Tl9OQU1FU1BBQ0U6CiAJCQkJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX1JFTDoKIAkJCQkJ Y2FzZSBPQkpFQ1RfUk9MRToKQEAgLTI5NTgsNiArMjk1OSw3IEBAIGFjbGNoZWNrX2Vycm9y KEFjbFJlc3VsdCBhY2xlcnIsIE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJCQkJY2FzZSBPQkpF Q1RfREVGQUNMOgogCQkJCQljYXNlIE9CSkVDVF9ET01DT05TVFJBSU5UOgogCQkJCQljYXNl IE9CSkVDVF9QQVJBTUVURVJfQUNMOgorCQkJCQljYXNlIE9CSkVDVF9QRVJJT0Q6CiAJCQkJ CWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKIAkJCQkJY2FzZSBPQkpFQ1Rf UFVCTElDQVRJT05fUkVMOgogCQkJCQljYXNlIE9CSkVDVF9ST0xFOgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2RlcGVuZGVuY3kuYwppbmRleCBlNzQyYzc4ZWEzNS4uMTliYmI5ZjhjZGUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvZGVwZW5kZW5jeS5jCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19vcGVyYXRvci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BmYW1pbHkuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3BhcmFtZXRlcl9hY2wuaCIKKyNpbmNsdWRlICJjYXRh bG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcG9saWN5LmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5oIgpAQCAtMTU0LDYgKzE1NSw3IEBAIHN0YXRpYyBjb25zdCBPaWQgb2JqZWN0X2Ns YXNzZXNbXSA9IHsKIAlDYXN0UmVsYXRpb25JZCwJCQkJLyogT0NMQVNTX0NBU1QgKi8KIAlD b2xsYXRpb25SZWxhdGlvbklkLAkJLyogT0NMQVNTX0NPTExBVElPTiAqLwogCUNvbnN0cmFp bnRSZWxhdGlvbklkLAkJLyogT0NMQVNTX0NPTlNUUkFJTlQgKi8KKwlQZXJpb2RSZWxhdGlv bklkLAkJCS8qIE9DTEFTU19QRVJJT0QgKi8KIAlDb252ZXJzaW9uUmVsYXRpb25JZCwJCS8q IE9DTEFTU19DT05WRVJTSU9OICovCiAJQXR0ckRlZmF1bHRSZWxhdGlvbklkLAkJLyogT0NM QVNTX0RFRkFVTFQgKi8KIAlMYW5ndWFnZVJlbGF0aW9uSWQsCQkJLyogT0NMQVNTX0xBTkdV QUdFICovCkBAIC02NzEsNiArNjczLDE1IEBAIGZpbmREZXBlbmRlbnRPYmplY3RzKGNvbnN0 IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAkJCQkJCXJldHVybjsKIAkJCQkJfQogCisJCQkJ CS8qCisJCQkJCSAqIElmIGEgdGFibGUgYXR0cmlidXRlIGlzIGFuIGludGVybmFsIHBhcnQg b2Ygc29tZXRoaW5nIGVsc2UKKwkJCQkJICogKGUuZy4gdGhlIEdFTkVSQVRFRCBjb2x1bW4g dXNlZCBieSBhIFBFUklPRCksCisJCQkJCSAqIGFuZCB3ZSBhcmUgZGVsZXRpbmcgdGhlIHdo b2xlIHRhYmxlLAorCQkJCQkgKiB0aGVuIGl0J3Mgb2theS4KKwkJCQkJICovCisJCQkJCWlm IChmb3VuZERlcC0+b2Jqc3ViaWQgJiYgIW9iamVjdC0+b2JqZWN0U3ViSWQpCisJCQkJCQli cmVhazsKKwogCQkJCQkvKgogCQkJCQkgKiBXZSBwb3N0cG9uZSBhY3R1YWxseSBpc3N1aW5n IHRoZSBlcnJvciBtZXNzYWdlIHVudGlsCiAJCQkJCSAqIGFmdGVyIHRoaXMgbG9vcCwgc28g dGhhdCB3ZSBjYW4gbWFrZSB0aGUgYmVoYXZpb3IKQEAgLTE0NDMsNiArMTQ1NCwxMCBAQCBk b0RlbGV0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgaW50IGZsYWdzKQogCQkJ UmVtb3ZlQ29uc3RyYWludEJ5SWQob2JqZWN0LT5vYmplY3RJZCk7CiAJCQlicmVhazsKIAor CQljYXNlIE9DTEFTU19QRVJJT0Q6CisJCQlSZW1vdmVQZXJpb2RCeUlkKG9iamVjdC0+b2Jq ZWN0SWQpOworCQkJYnJlYWs7CisKIAkJY2FzZSBPQ0xBU1NfREVGQVVMVDoKIAkJCVJlbW92 ZUF0dHJEZWZhdWx0QnlJZChvYmplY3QtPm9iamVjdElkKTsKIAkJCWJyZWFrOwpAQCAtMjg2 Miw2ICsyODc3LDkgQEAgZ2V0T2JqZWN0Q2xhc3MoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2Jq ZWN0KQogCQljYXNlIENvbnN0cmFpbnRSZWxhdGlvbklkOgogCQkJcmV0dXJuIE9DTEFTU19D T05TVFJBSU5UOwogCisJCWNhc2UgUGVyaW9kUmVsYXRpb25JZDoKKwkJCXJldHVybiBPQ0xB U1NfUEVSSU9EOworCiAJCWNhc2UgQ29udmVyc2lvblJlbGF0aW9uSWQ6CiAJCQlyZXR1cm4g T0NMQVNTX0NPTlZFUlNJT047CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv aGVhcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKaW5kZXggYzczZjdiY2QwMTEu LmNiODU1NjlhNTdkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwpAQCAtNDksNiArNDksNyBAQAogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19v cGNsYXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wYXJ0aXRpb25lZF90YWJsZS5oIgor I2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19z dGF0aXN0aWMuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3RhYmxlc3BhY2UuaCIKQEAgLTIwNDAsNiArMjA0MSw4 MCBAQCBTZXRBdHRyTWlzc2luZyhPaWQgcmVsaWQsIGNoYXIgKmF0dG5hbWUsIGNoYXIgKnZh bHVlKQogCXRhYmxlX2Nsb3NlKHRhYmxlcmVsLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKIH0K IAorLyoKKyAqIFN0b3JlIGEgcGVyaW9kIG9mIHJlbGF0aW9uIHJlbC4KKyAqCisgKiBSZXR1 cm5zIHRoZSBPSUQgb2YgdGhlIG5ldyBwZ19wZXJpb2QgdHVwbGUuCisgKi8KK09pZAorU3Rv cmVQZXJpb2QoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpwZXJpb2RuYW1lLCBBdHRyTnVt YmVyIHN0YXJ0bnVtLAorCQkJQXR0ck51bWJlciBlbmRudW0sIEF0dHJOdW1iZXIgcmFuZ2Vu dW0sIE9pZCBjb25vaWQpCit7CisJRGF0dW0JCXZhbHVlc1tOYXR0c19wZ19wZXJpb2RdOwor CWJvb2wJCW51bGxzW05hdHRzX3BnX3BlcmlvZF07CisJUmVsYXRpb24JcGdfcGVyaW9kOwor CUhlYXBUdXBsZQl0dXBsZTsKKwlPaWQJCQlvaWQ7CisJTmFtZURhdGEJcGVybmFtZTsKKwlP YmplY3RBZGRyZXNzCW15c2VsZiwgcmVmZXJlbmNlZDsKKworCUFzc2VydChyYW5nZW51bSAh PSBJbnZhbGlkQXR0ck51bWJlcik7CisKKwluYW1lc3RyY3B5KCZwZXJuYW1lLCBwZXJpb2Ru YW1lKTsKKworCU1lbVNldCh2YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKKwlNZW1TZXQo bnVsbHMsIGZhbHNlLCBzaXplb2YobnVsbHMpKTsKKworCXBnX3BlcmlvZCA9IHRhYmxlX29w ZW4oUGVyaW9kUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlvaWQgPSBHZXRO ZXdPaWRXaXRoSW5kZXgocGdfcGVyaW9kLCBBdHRyRGVmYXVsdE9pZEluZGV4SWQsIEFudW1f cGdfcGVyaW9kX29pZCk7CisJdmFsdWVzW0FudW1fcGdfcGVyaW9kX29pZCAtIDFdID0gT2Jq ZWN0SWRHZXREYXR1bShvaWQpOworCXZhbHVlc1tBbnVtX3BnX3BlcmlvZF9wZXJuYW1lIC0g MV0gPSBOYW1lR2V0RGF0dW0oJnBlcm5hbWUpOworCXZhbHVlc1tBbnVtX3BnX3BlcmlvZF9w ZXJyZWxpZCAtIDFdID0gUmVsYXRpb25HZXRSZWxpZChyZWwpOworCXZhbHVlc1tBbnVtX3Bn X3BlcmlvZF9wZXJzdGFydCAtIDFdID0gc3RhcnRudW07CisJdmFsdWVzW0FudW1fcGdfcGVy aW9kX3BlcmVuZCAtIDFdID0gZW5kbnVtOworCXZhbHVlc1tBbnVtX3BnX3BlcmlvZF9wZXJy YW5nZSAtIDFdID0gcmFuZ2VudW07CisJdmFsdWVzW0FudW1fcGdfcGVyaW9kX3BlcmNvbnN0 cmFpbnQgLSAxXSA9IGNvbm9pZDsKKworCXR1cGxlID0gaGVhcF9mb3JtX3R1cGxlKFJlbGF0 aW9uR2V0RGVzY3IocGdfcGVyaW9kKSwgdmFsdWVzLCBudWxscyk7CisJQ2F0YWxvZ1R1cGxl SW5zZXJ0KHBnX3BlcmlvZCwgdHVwbGUpOworCisJT2JqZWN0QWRkcmVzc1NldChteXNlbGYs IFBlcmlvZFJlbGF0aW9uSWQsIG9pZCk7CisKKwkvKiBEcm9wIHRoZSBwZXJpb2Qgd2hlbiB0 aGUgdGFibGUgaXMgZHJvcHBlZC4gKi8KKwlPYmplY3RBZGRyZXNzU2V0KHJlZmVyZW5jZWQs IFJlbGF0aW9uUmVsYXRpb25JZCwgUmVsYXRpb25HZXRSZWxpZChyZWwpKTsKKwlyZWNvcmRE ZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfQVVUTyk7CisK KwkvKiBGb3JiaWQgZHJvcHBpbmcgdGhlIGNvbHVtbnMgb2YgdGhlIHBlcmlvZC4gKi8KKwlP YmplY3RBZGRyZXNzU3ViU2V0KHJlZmVyZW5jZWQsIFJlbGF0aW9uUmVsYXRpb25JZCwgUmVs YXRpb25HZXRSZWxpZChyZWwpLCBzdGFydG51bSk7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZt eXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX05PUk1BTCk7CisJT2JqZWN0QWRkcmVz c1N1YlNldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVs aWQocmVsKSwgZW5kbnVtKTsKKwlyZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVy ZW5jZWQsIERFUEVOREVOQ1lfTk9STUFMKTsKKworCS8qCisJICogVGhlIHJhbmdlIGNvbHVt biBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsCisJICogYnV0IHdlIGNhbid0IHVzZSBE RVBFTkRFTkNZX0lOVEVSTkFMCisJICogYmVjYXVzZSBkcm9wcGluZyB0aGUgdGFibGUgd2ls bCBjaGVjayBmb3IgZGVwZW5kZW5jaWVzIG9uIGFsbCBzdWJvYmplY3RzIHRvbworCSAqIChp biBmaW5kRGVwZW5kZW50T2JqZWN0cykuCisJICogQnV0IGlmIHdlIG1ha2UgYW4gQVVUTyBk ZXBlbmRlbmN5IG9uZSB3YXkgd2Ugd2lsbCBhdXRvLWRyb3AgdGhlIGNvbHVtbgorCSAqIHdo ZW4gd2UgZHJvcCB0aGUgUEVSSU9ELAorCSAqIGFuZCBhIE5PUk1BTCBkZXBlbmRlbmN5IHRo ZSBvdGhlciB3YXkgd2Ugd2lsbCBmb3JiaWQgZHJvcHBpbmcgdGhlIGNvbHVtbiBkaXJlY3Rs eS4KKwkgKi8KKwlPYmplY3RBZGRyZXNzU3ViU2V0KHJlZmVyZW5jZWQsIFJlbGF0aW9uUmVs YXRpb25JZCwgUmVsYXRpb25HZXRSZWxpZChyZWwpLCByYW5nZW51bSk7CisJcmVjb3JkRGVw ZW5kZW5jeU9uKCZyZWZlcmVuY2VkLCAmbXlzZWxmLCBERVBFTkRFTkNZX0lOVEVSTkFMKTsK KworCS8qCisJICogVGhlIGNvbnN0cmFpbnQgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWls LCBzbyB3ZSBtYXJrIGl0IGFzIHN1Y2guCisJICogKE5vdGUgdGhhdCBteXNlbGYgYW5kIHJl ZmVyZW5jZWQgYXJlIHJldmVyc2VkIGZvciB0aGlzIG9uZS4pCisJICovCisJT2JqZWN0QWRk cmVzc1NldChyZWZlcmVuY2VkLCBDb25zdHJhaW50UmVsYXRpb25JZCwgY29ub2lkKTsKKwly ZWNvcmREZXBlbmRlbmN5T24oJnJlZmVyZW5jZWQsICZteXNlbGYsIERFUEVOREVOQ1lfSU5U RVJOQUwpOworCisJdGFibGVfY2xvc2UocGdfcGVyaW9kLCBSb3dFeGNsdXNpdmVMb2NrKTsK KworCXJldHVybiBvaWQ7Cit9CisKIC8qCiAgKiBTdG9yZSBhIGNoZWNrLWNvbnN0cmFpbnQg ZXhwcmVzc2lvbiBmb3IgdGhlIGdpdmVuIHJlbGF0aW9uLgogICoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbCBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbAppbmRleCBjNDAyYWU3Mjc0MS4uNTBj YTBkMDVmODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25f c2NoZW1hLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVt YS5zcWwKQEAgLTEyMDcsNyArMTIwNywyOCBAQCBHUkFOVCBTRUxFQ1QgT04gcGFyYW1ldGVy cyBUTyBQVUJMSUM7CiAgKiBQRVJJT0RTIHZpZXcKICAqLwogCi0tLSBmZWF0dXJlIG5vdCBz dXBwb3J0ZWQKK0NSRUFURSBWSUVXIHBlcmlvZHMgQVMKKyAgICBTRUxFQ1QgY3VycmVudF9k YXRhYmFzZSgpOjppbmZvcm1hdGlvbl9zY2hlbWEuc3FsX2lkZW50aWZpZXIgQVMgdGFibGVf Y2F0YWxvZywKKyAgICAgICAgICAgbmMubnNwbmFtZTo6aW5mb3JtYXRpb25fc2NoZW1hLnNx bF9pZGVudGlmaWVyIEFTIHRhYmxlX3NjaGVtYSwKKyAgICAgICAgICAgYy5yZWxuYW1lOjpp bmZvcm1hdGlvbl9zY2hlbWEuc3FsX2lkZW50aWZpZXIgQVMgdGFibGVfbmFtZSwKKyAgICAg ICAgICAgcC5wZXJuYW1lOjppbmZvcm1hdGlvbl9zY2hlbWEuc3FsX2lkZW50aWZpZXIgQVMg cGVyaW9kX25hbWUsCisgICAgICAgICAgIENBU0UgV0hFTiBwZ19oYXNfcm9sZShjLnJlbG93 bmVyLCAnVVNBR0UnKQorICAgICAgICAgICAgICAgICAgT1IgaGFzX2NvbHVtbl9wcml2aWxl Z2Uoc2EuYXR0cmVsaWQsIHNhLmF0dG51bSwgJ1NFTEVDVCwgSU5TRVJULCBVUERBVEUsIFJF RkVSRU5DRVMnKQorICAgICAgICAgICAgICAgIFRIRU4gc2EuYXR0bmFtZTo6aW5mb3JtYXRp b25fc2NoZW1hLnNxbF9pZGVudGlmaWVyCisgICAgICAgICAgIEVORCBBUyBzdGFydF9jb2x1 bW5fbmFtZSwKKyAgICAgICAgICAgQ0FTRSBXSEVOIHBnX2hhc19yb2xlKGMucmVsb3duZXIs ICdVU0FHRScpCisgICAgICAgICAgICAgICAgICBPUiBoYXNfY29sdW1uX3ByaXZpbGVnZShl YS5hdHRyZWxpZCwgZWEuYXR0bnVtLCAnU0VMRUNULCBJTlNFUlQsIFVQREFURSwgUkVGRVJF TkNFUycpCisgICAgICAgICAgICAgICAgVEhFTiBlYS5hdHRuYW1lOjppbmZvcm1hdGlvbl9z Y2hlbWEuc3FsX2lkZW50aWZpZXIKKyAgICAgICAgICAgRU5EIEFTIGVuZF9jb2x1bW5fbmFt ZQorICAgIEZST00gcGdfcGVyaW9kIEFTIHAKKyAgICBKT0lOIHBnX2NsYXNzIEFTIGMgT04g Yy5vaWQgPSBwLnBlcnJlbGlkCisgICAgSk9JTiBwZ19uYW1lc3BhY2UgQVMgbmMgT04gbmMu b2lkID0gYy5yZWxuYW1lc3BhY2UKKyAgICBKT0lOIHBnX2F0dHJpYnV0ZSBBUyBzYSBPTiAo c2EuYXR0cmVsaWQsIHNhLmF0dG51bSkgPSAocC5wZXJyZWxpZCwgcC5wZXJzdGFydCkKKyAg ICBKT0lOIHBnX2F0dHJpYnV0ZSBBUyBlYSBPTiAoZWEuYXR0cmVsaWQsIGVhLmF0dG51bSkg PSAocC5wZXJyZWxpZCwgcC5wZXJlbmQpCisgICAgV0hFUkUgTk9UIHBnX2lzX290aGVyX3Rl bXBfc2NoZW1hKG5jLm9pZCkKKyAgICAgIEFORCBjLnJlbGtpbmQgSU4gKCdyJywgJ3YnKTsK KworR1JBTlQgU0VMRUNUIE9OIHBlcmlvZHMgVE8gUFVCTElDOwogCiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9tZXNvbi5idWlsZAppbmRleCAyZjNkZWQ4YTBlNy4uYTM3MmZiMGFhZTggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9tZXNvbi5idWlsZApAQCAtMjYsNiArMjYsNyBAQCBiYWNrZW5kX3NvdXJj ZXMgKz0gZmlsZXMoCiAgICdwZ19uYW1lc3BhY2UuYycsCiAgICdwZ19vcGVyYXRvci5jJywK ICAgJ3BnX3BhcmFtZXRlcl9hY2wuYycsCisgICdwZ19wZXJpb2QuYycsCiAgICdwZ19wcm9j LmMnLAogICAncGdfcHVibGljYXRpb24uYycsCiAgICdwZ19yYW5nZS5jJywKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKaW5kZXggOGJiMjkyNGI5Y2QuLjg1OTdiMGNjMmFl IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYworKysg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwpAQCAtNDcsNiArNDcsNyBA QAogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3IuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX29wZmFtaWx5LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wYXJhbWV0ZXJfYWNsLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3BvbGljeS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfcHVibGljYXRpb24uaCIKQEAgLTczNiw2ICs3MzcsMTAgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBvYmplY3RfdHlwZV9tYXAKIAl7CiAJCSJkb21haW4gY29uc3RyYWludCIs IE9CSkVDVF9ET01DT05TVFJBSU5UCiAJfSwKKwkvKiBPQ0xBU1NfUEVSSU9EICovCisJewor CQkicGVyaW9kIiwgT0JKRUNUX1BFUklPRAorCX0sCiAJLyogT0NMQVNTX0NPTlZFUlNJT04g Ki8KIAl7CiAJCSJjb252ZXJzaW9uIiwgT0JKRUNUX0NPTlZFUlNJT04KQEAgLTEwMTQsNiAr MTAxOSw3IEBAIGdldF9vYmplY3RfYWRkcmVzcyhPYmplY3RUeXBlIG9ianR5cGUsIE5vZGUg Km9iamVjdCwKIAkJCWNhc2UgT0JKRUNUX1RSSUdHRVI6CiAJCQljYXNlIE9CSkVDVF9UQUJD T05TVFJBSU5UOgogCQkJY2FzZSBPQkpFQ1RfUE9MSUNZOgorCQkJY2FzZSBPQkpFQ1RfUEVS SU9EOgogCQkJCWFkZHJlc3MgPSBnZXRfb2JqZWN0X2FkZHJlc3NfcmVsb2JqZWN0KG9ianR5 cGUsIGNhc3ROb2RlKExpc3QsIG9iamVjdCksCiAJCQkJCQkJCQkJCQkJICAgJnJlbGF0aW9u LCBtaXNzaW5nX29rKTsKIAkJCQlicmVhazsKQEAgLTE1MTIsNiArMTUxOCwxMyBAQCBnZXRf b2JqZWN0X2FkZHJlc3NfcmVsb2JqZWN0KE9iamVjdFR5cGUgb2JqdHlwZSwgTGlzdCAqb2Jq ZWN0LAogCQkJCUludmFsaWRPaWQ7CiAJCQlhZGRyZXNzLm9iamVjdFN1YklkID0gMDsKIAkJ CWJyZWFrOworCQljYXNlIE9CSkVDVF9QRVJJT0Q6CisJCQlhZGRyZXNzLmNsYXNzSWQgPSBQ ZXJpb2RSZWxhdGlvbklkOworCQkJYWRkcmVzcy5vYmplY3RJZCA9IHJlbGF0aW9uID8KKwkJ CQlnZXRfcmVsYXRpb25fcGVyaW9kX29pZChyZWxvaWQsIGRlcG5hbWUsIG1pc3Npbmdfb2sp IDoKKwkJCQlJbnZhbGlkT2lkOworCQkJYWRkcmVzcy5vYmplY3RTdWJJZCA9IDA7CisJCQli cmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqZWN0 IHR5cGU6ICVkIiwgKGludCkgb2JqdHlwZSk7CiAJfQpAQCAtMjMyOSw2ICsyMzQyLDcgQEAg cGdfZ2V0X29iamVjdF9hZGRyZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWNhc2UgT0JKRUNU X1JVTEU6CiAJCWNhc2UgT0JKRUNUX1RSSUdHRVI6CiAJCWNhc2UgT0JKRUNUX1RBQkNPTlNU UkFJTlQ6CisJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoK IAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CiAJCQlvYmpub2RlID0gKE5vZGUgKikgbmFtZTsK QEAgLTI0MzksNiArMjQ1Myw3IEBAIGNoZWNrX29iamVjdF9vd25lcnNoaXAoT2lkIHJvbGVp ZCwgT2JqZWN0VHlwZSBvYmp0eXBlLCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiAJCWNhc2Ug T0JKRUNUX1RSSUdHRVI6CiAJCWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1Rf VEFCQ09OU1RSQUlOVDoKKwkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQkJaWYgKCFvYmplY3Rf b3duZXJjaGVjayhSZWxhdGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsYXRp b24pLCByb2xlaWQpKQogCQkJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwg b2JqdHlwZSwKIAkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikp OwpAQCAtMzA4Nyw2ICszMTAyLDM4IEBAIGdldE9iamVjdERlc2NyaXB0aW9uKGNvbnN0IE9i amVjdEFkZHJlc3MgKm9iamVjdCwgYm9vbCBtaXNzaW5nX29rKQogCQkJCWJyZWFrOwogCQkJ fQogCisJCWNhc2UgT0NMQVNTX1BFUklPRDoKKwkJCXsKKwkJCQlIZWFwVHVwbGUJcGVyVHVw OworCQkJCUZvcm1fcGdfcGVyaW9kIHBlcjsKKworCQkJCXBlclR1cCA9IFNlYXJjaFN5c0Nh Y2hlMShQRVJJT0RPSUQsCisJCQkJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5v YmplY3RJZCkpOworCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZChwZXJUdXApKQorCQkJCQll bG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcGVyaW9kICV1IiwKKwkJCQkJ CSBvYmplY3QtPm9iamVjdElkKTsKKwkJCQlwZXIgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNU UlVDVChwZXJUdXApOworCisJCQkJaWYgKE9pZElzVmFsaWQocGVyLT5wZXJyZWxpZCkpCisJ CQkJeworCQkJCQlTdHJpbmdJbmZvRGF0YSByZWw7CisKKwkJCQkJaW5pdFN0cmluZ0luZm8o JnJlbCk7CisJCQkJCWdldFJlbGF0aW9uRGVzY3JpcHRpb24oJnJlbCwgcGVyLT5wZXJyZWxp ZCwgZmFsc2UpOworCQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oInBlcmlvZCAl cyBvbiAlcyIpLAorCQkJCQkJCQkJIE5hbWVTdHIocGVyLT5wZXJuYW1lKSwgcmVsLmRhdGEp OworCQkJCQlwZnJlZShyZWwuZGF0YSk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJ CWFwcGVuZFN0cmluZ0luZm8oJmJ1ZmZlciwgXygicGVyaW9kICVzIiksCisJCQkJCQkJCQkg TmFtZVN0cihwZXItPnBlcm5hbWUpKTsKKwkJCQl9CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUo cGVyVHVwKTsKKwkJCQlicmVhazsKKwkJCX0KKwogCQljYXNlIE9DTEFTU19DT05WRVJTSU9O OgogCQkJewogCQkJCUhlYXBUdXBsZQljb25UdXA7CkBAIC00NDUxLDYgKzQ0OTgsMTAgQEAg Z2V0T2JqZWN0VHlwZURlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwg Ym9vbCBtaXNzaW5nX29rKQogCQkJCQkJCQkJCSBtaXNzaW5nX29rKTsKIAkJCWJyZWFrOwog CisJCWNhc2UgT0NMQVNTX1BFUklPRDoKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1 ZmZlciwgInBlcmlvZCIpOworCQkJYnJlYWs7CisKIAkJY2FzZSBPQ0xBU1NfQ09OVkVSU0lP TjoKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwgImNvbnZlcnNpb24iKTsK IAkJCWJyZWFrOwpAQCAtNDk1OCw2ICs1MDA5LDI4IEBAIGdldE9iamVjdElkZW50aXR5UGFy dHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJCWJyZWFrOwogCQkJfQogCisJ CWNhc2UgT0NMQVNTX1BFUklPRDoKKwkJCXsKKwkJCQlIZWFwVHVwbGUJcGVyVHVwOworCQkJ CUZvcm1fcGdfcGVyaW9kIHBlcjsKKworCQkJCXBlclR1cCA9IFNlYXJjaFN5c0NhY2hlMShQ RVJJT0RPSUQsCisJCQkJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJ ZCkpOworCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZChwZXJUdXApKQorCQkJCQllbG9nKEVS Uk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcGVyaW9kICV1IiwKKwkJCQkJCSBvYmpl Y3QtPm9iamVjdElkKTsKKwkJCQlwZXIgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVChw ZXJUdXApOworCisJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVyLCAiJXMgb24gIiwKKwkJ CQkJCQkJIHF1b3RlX2lkZW50aWZpZXIoTmFtZVN0cihwZXItPnBlcm5hbWUpKSk7CisJCQkJ Z2V0UmVsYXRpb25JZGVudGl0eSgmYnVmZmVyLCBwZXItPnBlcnJlbGlkLCBvYmpuYW1lLCBm YWxzZSk7CisJCQkJaWYgKG9iam5hbWUpCisJCQkJCSpvYmpuYW1lID0gbGFwcGVuZCgqb2Jq bmFtZSwgcHN0cmR1cChOYW1lU3RyKHBlci0+cGVybmFtZSkpKTsKKworCQkJCVJlbGVhc2VT eXNDYWNoZShwZXJUdXApOworCQkJCWJyZWFrOworCQkJfQorCiAJCWNhc2UgT0NMQVNTX0NP TlZFUlNJT046CiAJCQl7CiAJCQkJSGVhcFR1cGxlCWNvblR1cDsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3BlcmlvZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40NjVi NWI2NzVlMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVy aW9kLmMKQEAgLTAsMCArMSwxMzIgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IHBnX3BlcmlvZC5jCisgKgkgIHJvdXRpbmVzIHRvIHN1cHBvcnQgbWFuaXB1bGF0aW9uIG9m IHRoZSBwZ19wZXJpb2QgcmVsYXRpb24KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp IDE5OTYtMjAyMSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisg KgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wZXJp b2QuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAicG9zdGdy ZXMuaCIKKworI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgorI2luY2x1ZGUgImFjY2Vzcy9o ZWFwYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9pbmRleGluZy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCisj aW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUu aCIKKyNpbmNsdWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5o IgorCisKKy8qCisgKiBEZWxldGUgYSBzaW5nbGUgcGVyaW9kIHJlY29yZC4KKyAqLwordm9p ZAorUmVtb3ZlUGVyaW9kQnlJZChPaWQgcGVyaW9kSWQpCit7CisJUmVsYXRpb24JcGdfcGVy aW9kOworCUhlYXBUdXBsZQl0dXA7CisKKwlwZ19wZXJpb2QgPSB0YWJsZV9vcGVuKFBlcmlv ZFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJdHVwID0gU2VhcmNoU3lzQ2Fj aGUxKFBFUklPRE9JRCwgT2JqZWN0SWRHZXREYXR1bShwZXJpb2RJZCkpOworCWlmICghSGVh cFR1cGxlSXNWYWxpZCh0dXApKSAvKiBzaG91bGQgbm90IGhhcHBlbiAqLworCQllbG9nKEVS Uk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcGVyaW9kICV1IiwgcGVyaW9kSWQpOwor CisJLyogRnJ5IHRoZSBwZXJpb2QgaXRzZWxmICovCisJQ2F0YWxvZ1R1cGxlRGVsZXRlKHBn X3BlcmlvZCwgJnR1cC0+dF9zZWxmKTsKKworCS8qIENsZWFuIHVwICovCisJUmVsZWFzZVN5 c0NhY2hlKHR1cCk7CisJdGFibGVfY2xvc2UocGdfcGVyaW9kLCBSb3dFeGNsdXNpdmVMb2Nr KTsKK30KKworLyoKKyAqIGdldF9yZWxhdGlvbl9wZXJpb2Rfb2lkCisgKgkJRmluZCBhIHBl cmlvZCBvbiB0aGUgc3BlY2lmaWVkIHJlbGF0aW9uIHdpdGggdGhlIHNwZWNpZmllZCBuYW1l LgorICoJCVJldHVybnMgcGVyaW9kJ3MgT0lELgorICovCitPaWQKK2dldF9yZWxhdGlvbl9w ZXJpb2Rfb2lkKE9pZCByZWxpZCwgY29uc3QgY2hhciAqcGVybmFtZSwgYm9vbCBtaXNzaW5n X29rKQoreworCVJlbGF0aW9uCXBnX3BlcmlvZDsKKwlIZWFwVHVwbGUJdHVwbGU7CisJU3lz U2NhbkRlc2Mgc2NhbjsKKwlTY2FuS2V5RGF0YSBza2V5WzJdOworCU9pZAkJCXBlck9pZCA9 IEludmFsaWRPaWQ7CisKKwkvKiBGZXRjaCB0aGUgcGVyaW9kIHR1cGxlIGZyb20gcGdfcGVy aW9kLiAqLworCXBnX3BlcmlvZCA9IHRhYmxlX29wZW4oUGVyaW9kUmVsYXRpb25JZCwgQWNj ZXNzU2hhcmVMb2NrKTsKKworCVNjYW5LZXlJbml0KCZza2V5WzBdLAorCQkJCUFudW1fcGdf cGVyaW9kX3BlcnJlbGlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwK KwkJCQlPYmplY3RJZEdldERhdHVtKHJlbGlkKSk7CisJU2NhbktleUluaXQoJnNrZXlbMV0s CisJCQkJQW51bV9wZ19wZXJpb2RfcGVybmFtZSwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1i ZXIsIEZfTkFNRUVRLAorCQkJCUNTdHJpbmdHZXREYXR1bShwZXJuYW1lKSk7CisKKwlzY2Fu ID0gc3lzdGFibGVfYmVnaW5zY2FuKHBnX3BlcmlvZCwgUGVyaW9kUmVsaWROYW1lSW5kZXhJ ZCwgdHJ1ZSwKKwkJCQkJCQkgIE5VTEwsIDIsIHNrZXkpOworCisJLyogVGhlcmUgY2FuIGJl IGF0IG1vc3Qgb25lIG1hdGNoaW5nIHJvdyAqLworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHR1 cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJCXBlck9pZCA9ICgoRm9ybV9wZ19w ZXJpb2QpIEdFVFNUUlVDVCh0dXBsZSkpLT5vaWQ7CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNj YW4pOworCisJLyogSWYgbm8gc3VjaCBwZXJpb2QgZXhpc3RzLCBjb21wbGFpbiAqLworCWlm ICghT2lkSXNWYWxpZChwZXJPaWQpICYmICFtaXNzaW5nX29rKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJIGVycm1z ZygicGVyaW9kIFwiJXNcIiBmb3IgdGFibGUgXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJ CQkJCXBlcm5hbWUsIGdldF9yZWxfbmFtZShyZWxpZCkpKSk7CisKKwl0YWJsZV9jbG9zZShw Z19wZXJpb2QsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlyZXR1cm4gcGVyT2lkOworfQorCisv KgorICogZ2V0X3BlcmlvZF9hdHRub3MKKyAqCQlHZXQgdGhlIGF0dG5vIG9mIHRoZSBHRU5F UkFURUQgcmFuZ2V0eXBlIGNvbHVtbgorICoJCWZvciBhbGwgUEVSSU9EcyBpbiB0aGlzIHRh YmxlLgorICovCitleHRlcm4gQml0bWFwc2V0CisqZ2V0X3BlcmlvZF9hdHRub3MoT2lkIHJl bGlkKQoreworCUJpdG1hcHNldCAqYXR0bm9zID0gTlVMTDsKKwlSZWxhdGlvbglwZ19wZXJp b2Q7CisJSGVhcFR1cGxlCXR1cGxlOworCVN5c1NjYW5EZXNjIHNjYW47CisJU2NhbktleURh dGEgc2tleVsxXTsKKworCXBnX3BlcmlvZCA9IHRhYmxlX29wZW4oUGVyaW9kUmVsYXRpb25J ZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCVNjYW5LZXlJbml0KCZza2V5WzBdLAorCQkJCUFu dW1fcGdfcGVyaW9kX3BlcnJlbGlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9P SURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKHJlbGlkKSk7CisKKwlzY2FuID0gc3lzdGFi bGVfYmVnaW5zY2FuKHBnX3BlcmlvZCwgUGVyaW9kUmVsaWROYW1lSW5kZXhJZCwgdHJ1ZSwK KwkJCQkJCQkgIE5VTEwsIDEsIHNrZXkpOworCisJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQo dHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJCUZvcm1fcGdfcGVyaW9k IHBlcmlvZCA9IChGb3JtX3BnX3BlcmlvZCkgR0VUU1RSVUNUKHR1cGxlKTsKKworCQlhdHRu b3MgPSBibXNfYWRkX21lbWJlcihhdHRub3MsIHBlcmlvZC0+cGVycmFuZ2UpOworCX0KKwor CXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJdGFibGVfY2xvc2UocGdfcGVyaW9kLCBBY2Nl c3NTaGFyZUxvY2spOworCisJcmV0dXJuIGF0dG5vczsKK30KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv c3FsX2ZlYXR1cmVzLnR4dAppbmRleCA4MGM0MGVhZjU3OC4uMmMxZDFhMTBhN2MgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dAorKysgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKQEAgLTQ0OSw3ICs0NDksNyBAQCBU MTc2CVNlcXVlbmNlIGdlbmVyYXRvciBzdXBwb3J0CQkJTk8Jc3VwcG9ydGVkIGV4Y2VwdCBm b3IgTkVYVCBWQUxVRSBGT1IKIFQxNzcJU2VxdWVuY2UgZ2VuZXJhdG9yIHN1cHBvcnQ6IHNp bXBsZSByZXN0YXJ0IG9wdGlvbgkJCVlFUwkKIFQxNzgJSWRlbnRpdHkgY29sdW1uczogc2lt cGxlIHJlc3RhcnQgb3B0aW9uCQkJWUVTCQogVDE4MAlTeXN0ZW0tdmVyc2lvbmVkIHRhYmxl cwkJCU5PCQotVDE4MQlBcHBsaWNhdGlvbi10aW1lIHBlcmlvZCB0YWJsZXMJCQlOTwkKK1Qx ODEJQXBwbGljYXRpb24tdGltZSBwZXJpb2QgdGFibGVzCQkJWUVTCQogVDE5MQlSZWZlcmVu dGlhbCBhY3Rpb24gUkVTVFJJQ1QJCQlZRVMJCiBUMjAwCVRyaWdnZXIgRERMCQkJTk8Jc2lt aWxhciBidXQgbm90IGZ1bGx5IGNvbXBhdGlibGUKIFQyMDEJQ29tcGFyYWJsZSBkYXRhIHR5 cGVzIGZvciByZWZlcmVudGlhbCBjb25zdHJhaW50cwkJCVlFUwkKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRl ci5jCmluZGV4IGIyZTQyNjBhZWY3Li4zNDY3YjY4YzBjNiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvYWx0ZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRl ci5jCkBAIC02NjksNiArNjY5LDcgQEAgQWx0ZXJPYmplY3ROYW1lc3BhY2Vfb2lkKE9pZCBj bGFzc0lkLCBPaWQgb2JqaWQsIE9pZCBuc3BPaWQsCiAKIAkJY2FzZSBPQ0xBU1NfQ0FTVDoK IAkJY2FzZSBPQ0xBU1NfQ09OU1RSQUlOVDoKKwkJY2FzZSBPQ0xBU1NfUEVSSU9EOgogCQlj YXNlIE9DTEFTU19ERUZBVUxUOgogCQljYXNlIE9DTEFTU19MQU5HVUFHRToKIAkJY2FzZSBP Q0xBU1NfTEFSR0VPQkpFQ1Q6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9j b21tZW50LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb21tZW50LmMKaW5kZXggZTlkNTBm YzdkODcuLjA1ZmVmYjViNWNlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9j b21tZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29tbWVudC5jCkBAIC0xMDIs NiArMTAyLDE2IEBAIENvbW1lbnRPYmplY3QoQ29tbWVudFN0bXQgKnN0bXQpCiAJCQkJCQkJ CVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSksCiAJCQkJCQkgZXJyZGV0YWls X3JlbGtpbmRfbm90X3N1cHBvcnRlZChyZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kKSkpOwog CQkJYnJlYWs7CisKKwkJY2FzZSBPQkpFQ1RfUEVSSU9EOgorCQkJLyogUGVyaW9kcyBjYW4g b25seSBnbyBvbiB0YWJsZXMgKi8KKwkJCWlmIChyZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5k ICE9IFJFTEtJTkRfUkVMQVRJT04pCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJj b2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCQkJIGVycm1zZygiXCIlc1wi IGlzIG5vdCBhIHRhYmxlIiwKKwkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVs YXRpb24pKSkpOworCQkJYnJlYWs7CisKIAkJZGVmYXVsdDoKIAkJCWJyZWFrOwogCX0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3BjbWRzLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9kcm9wY21kcy5jCmluZGV4IDg3YTJkYjRlMGY1Li40YWU5OTIxZDNjYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZHJvcGNtZHMuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9kcm9wY21kcy5jCkBAIC01MDksNiArNTA5LDcgQEAgZG9lc19u b3RfZXhpc3Rfc2tpcHBpbmcoT2JqZWN0VHlwZSBvYmp0eXBlLCBOb2RlICpvYmplY3QpCiAJ CWNhc2UgT0JKRUNUX0RPTUNPTlNUUkFJTlQ6CiAJCWNhc2UgT0JKRUNUX0xBUkdFT0JKRUNU OgogCQljYXNlIE9CSkVDVF9QQVJBTUVURVJfQUNMOgorCQljYXNlIE9CSkVDVF9QRVJJT0Q6 CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKIAkJY2FzZSBPQkpFQ1Rf UFVCTElDQVRJT05fUkVMOgogCQljYXNlIE9CSkVDVF9UQUJDT05TVFJBSU5UOgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCmluZGV4IGYxOTNjN2RkZjYwLi42NGYxNzM5 N2EwOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpAQCAtMTEzOCw2 ICsxMTM4LDcgQEAgRXZlbnRUcmlnZ2VyU3VwcG9ydHNPYmplY3RUeXBlKE9iamVjdFR5cGUg b2J0eXBlKQogCQljYXNlIE9CSkVDVF9PUENMQVNTOgogCQljYXNlIE9CSkVDVF9PUEVSQVRP UjoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CisJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJ Y2FzZSBPQkpFQ1RfUE9MSUNZOgogCQljYXNlIE9CSkVDVF9QUk9DRURVUkU6CiAJCWNhc2Ug T0JKRUNUX1BVQkxJQ0FUSU9OOgpAQCAtMTE5Niw2ICsxMTk3LDcgQEAgRXZlbnRUcmlnZ2Vy U3VwcG9ydHNPYmplY3RDbGFzcyhPYmplY3RDbGFzcyBvYmpjbGFzcykKIAkJY2FzZSBPQ0xB U1NfQ0FTVDoKIAkJY2FzZSBPQ0xBU1NfQ09MTEFUSU9OOgogCQljYXNlIE9DTEFTU19DT05T VFJBSU5UOgorCQljYXNlIE9DTEFTU19QRVJJT0Q6CiAJCWNhc2UgT0NMQVNTX0NPTlZFUlNJ T046CiAJCWNhc2UgT0NMQVNTX0RFRkFVTFQ6CiAJCWNhc2UgT0NMQVNTX0xBTkdVQUdFOgpA QCAtMjIzNyw2ICsyMjM5LDcgQEAgc3RyaW5naWZ5X2dyYW50X29ianR5cGUoT2JqZWN0VHlw ZSBvYmp0eXBlKQogCQljYXNlIE9CSkVDVF9PUENMQVNTOgogCQljYXNlIE9CSkVDVF9PUEVS QVRPUjoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CisJCWNhc2UgT0JKRUNUX1BFUklPRDoK IAkJY2FzZSBPQkpFQ1RfUE9MSUNZOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTjoKIAkJ Y2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fTkFNRVNQQUNFOgpAQCAtMjMyMSw2ICsyMzI0LDcg QEAgc3RyaW5naWZ5X2FkZWZwcml2c19vYmp0eXBlKE9iamVjdFR5cGUgb2JqdHlwZSkKIAkJ Y2FzZSBPQkpFQ1RfT1BFUkFUT1I6CiAJCWNhc2UgT0JKRUNUX09QRkFNSUxZOgogCQljYXNl IE9CSkVDVF9QQVJBTUVURVJfQUNMOgorCQljYXNlIE9CSkVDVF9QRVJJT0Q6CiAJCWNhc2Ug T0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT046CiAJCWNhc2UgT0JK RUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3NlY2xhYmVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zZWNsYWJlbC5jCmlu ZGV4IDU2MDcyNzNiZjlmLi5hZjcxNzcxNzljZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc2VjbGFiZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zZWNsYWJl bC5jCkBAIC03OSw2ICs3OSw3IEBAIFNlY0xhYmVsU3VwcG9ydHNPYmplY3RUeXBlKE9iamVj dFR5cGUgb2JqdHlwZSkKIAkJY2FzZSBPQkpFQ1RfT1BFUkFUT1I6CiAJCWNhc2UgT0JKRUNU X09QRkFNSUxZOgogCQljYXNlIE9CSkVDVF9QQVJBTUVURVJfQUNMOgorCQljYXNlIE9CSkVD VF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1RfUFVCTElD QVRJT05fTkFNRVNQQUNFOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9SRUw6CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDMyYWNjODk2MGE2Li43ZjViN2ZiMmZhMSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs dWRlICJjYXRhbG9nL3BnX2xhcmdlb2JqZWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19u YW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3MuaCIKKyNpbmNsdWRl ICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGlj X2V4dC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGFibGVzcGFjZS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfdHJpZ2dlci5oIgpAQCAtMTUzLDYgKzE1NCwxMSBAQCB0eXBlZGVmIGVu dW0gQWx0ZXJUYWJsZVBhc3MKIAlBVF9QQVNTX09MRF9JTkRFWCwJCQkvKiByZS1hZGQgZXhp c3RpbmcgaW5kZXhlcyAqLwogCUFUX1BBU1NfT0xEX0NPTlNUUiwJCQkvKiByZS1hZGQgZXhp c3RpbmcgY29uc3RyYWludHMgKi8KIAkvKiBXZSBjb3VsZCBzdXBwb3J0IGEgUkVOQU1FIENP TFVNTiBwYXNzIGhlcmUsIGJ1dCBub3QgY3VycmVudGx5IHVzZWQgKi8KKwkvKgorCSAqIFdl IG11c3QgYWRkIFBFUklPRHMgYWZ0ZXIgY29sdW1ucywgaW4gY2FzZSB0aGV5IHJlZmVyZW5j ZSBhIG5ld2x5LWFkZGVkIGNvbHVtbiwKKwkgKiBhbmQgYmVmb3JlIGNvbnN0cmFpbnRzLCBp biBjYXNlIGEgbmV3bHktYWRkZWQgUEsvRksgcmVmZXJlbmNlcyB0aGVtLgorCSAqLworCUFU X1BBU1NfQUREX1BFUklPRCwJCQkvKiBBREQgUEVSSU9EICovCiAJQVRfUEFTU19BRERfQ09O U1RSLAkJCS8qIEFERCBjb25zdHJhaW50cyAoaW5pdGlhbCBleGFtaW5hdGlvbikgKi8KIAlB VF9QQVNTX0NPTF9BVFRSUywJCQkvKiBzZXQgY29sdW1uIGF0dHJpYnV0ZXMsIGVnIE5PVCBO VUxMICovCiAJQVRfUEFTU19BRERfSU5ERVhDT05TVFIsCS8qIEFERCBpbmRleC1iYXNlZCBj b25zdHJhaW50cyAqLwpAQCAtMzYyLDYgKzM2OCw3IEBAIHN0YXRpYyB2b2lkIFJhbmdlVmFy Q2FsbGJhY2tGb3JUcnVuY2F0ZShjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiBzdGF0aWMg TGlzdCAqTWVyZ2VBdHRyaWJ1dGVzKExpc3QgKmNvbHVtbnMsIGNvbnN0IExpc3QgKnN1cGVy cywgY2hhciByZWxwZXJzaXN0ZW5jZSwKIAkJCQkJCQkgYm9vbCBpc19wYXJ0aXRpb24sIExp c3QgKipzdXBjb25zdHIsCiAJCQkJCQkJIExpc3QgKipzdXBub3RudWxscyk7CitzdGF0aWMg TGlzdCAqTWVyZ2VQZXJpb2RzKGNoYXIgKnJlbG5hbWUsIExpc3QgKnBlcmlvZHMsIExpc3Qg KnRhYmxlRWx0cywgTGlzdCAqc3VwZXJzKTsKIHN0YXRpYyBMaXN0ICpNZXJnZUNoZWNrQ29u c3RyYWludChMaXN0ICpjb25zdHJhaW50cywgY29uc3QgY2hhciAqbmFtZSwgTm9kZSAqZXhw cik7CiBzdGF0aWMgdm9pZCBNZXJnZUF0dHJpYnV0ZXNJbnRvRXhpc3RpbmcoUmVsYXRpb24g Y2hpbGRfcmVsLCBSZWxhdGlvbiBwYXJlbnRfcmVsLCBib29sIGlzcGFydGl0aW9uKTsKIHN0 YXRpYyB2b2lkIE1lcmdlQ29uc3RyYWludHNJbnRvRXhpc3RpbmcoUmVsYXRpb24gY2hpbGRf cmVsLCBSZWxhdGlvbiBwYXJlbnRfcmVsKTsKQEAgLTQ0Myw2ICs0NTAsOCBAQCBzdGF0aWMg T2JqZWN0QWRkcmVzcyBBVEV4ZWNBZGRDb2x1bW4oTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRh YmxlSW5mbyAqdGFiLAogCQkJCQkJCQkJIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29u dGV4dCk7CiBzdGF0aWMgYm9vbCBjaGVja19mb3JfY29sdW1uX25hbWVfY29sbGlzaW9uKFJl bGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sbmFtZSwKIAkJCQkJCQkJCQkJYm9vbCBpZl9u b3RfZXhpc3RzKTsKK3N0YXRpYyBib29sIGNoZWNrX2Zvcl9wZXJpb2RfbmFtZV9jb2xsaXNp b24oUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpwZXJuYW1lLAorCQkJCQkJCQkJCQlib29s IGlmX25vdF9leGlzdHMpOwogc3RhdGljIHZvaWQgYWRkX2NvbHVtbl9kYXRhdHlwZV9kZXBl bmRlbmN5KE9pZCByZWxpZCwgaW50MzIgYXR0bnVtLCBPaWQgdHlwaWQpOwogc3RhdGljIHZv aWQgYWRkX2NvbHVtbl9jb2xsYXRpb25fZGVwZW5kZW5jeShPaWQgcmVsaWQsIGludDMyIGF0 dG51bSwgT2lkIGNvbGxpZCk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNEcm9wTm90 TnVsbChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsIGJvb2wgcmVjdXJzZSwK QEAgLTQ2Miw2ICs0NzEsMTIgQEAgc3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjQ29sdW1u RGVmYXVsdChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCiAJCQkJCQkJCQkJ IE5vZGUgKm5ld0RlZmF1bHQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKIHN0YXRpYyBPYmplY3RB ZGRyZXNzIEFURXhlY0Nvb2tlZENvbHVtbkRlZmF1bHQoUmVsYXRpb24gcmVsLCBBdHRyTnVt YmVyIGF0dG51bSwKIAkJCQkJCQkJCQkJICAgTm9kZSAqbmV3RGVmYXVsdCk7CitzdGF0aWMg T2JqZWN0QWRkcmVzcyBBVEV4ZWNBZGRQZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYg KnBlcmlvZCwKKwkJCQkJCQkJCSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQp Oworc3RhdGljIHZvaWQgQVRFeGVjRHJvcFBlcmlvZChSZWxhdGlvbiByZWwsIGNvbnN0IGNo YXIgKnBlcmlvZE5hbWUsCisJCQkJCQkJIERyb3BCZWhhdmlvciBiZWhhdmlvciwKKwkJCQkJ CQkgYm9vbCByZWN1cnNlLCBib29sIHJlY3Vyc2luZywKKwkJCQkJCQkgYm9vbCBtaXNzaW5n X29rKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0FkZElkZW50aXR5KFJlbGF0aW9u IHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKIAkJCQkJCQkJCSAgIE5vZGUgKmRlZiwgTE9D S01PREUgbG9ja21vZGUsIGJvb2wgcmVjdXJzZSwgYm9vbCByZWN1cnNpbmcpOwogc3RhdGlj IE9iamVjdEFkZHJlc3MgQVRFeGVjU2V0SWRlbnRpdHkoUmVsYXRpb24gcmVsLCBjb25zdCBj aGFyICpjb2xOYW1lLApAQCAtNjc1LDYgKzY5MCwxMCBAQCBzdGF0aWMgTGlzdCAqR2V0UGFy ZW50ZWRGb3JlaWduS2V5UmVmcyhSZWxhdGlvbiBwYXJ0aXRpb24pOwogc3RhdGljIHZvaWQg QVREZXRhY2hDaGVja05vRm9yZWlnbktleVJlZnMoUmVsYXRpb24gcGFydGl0aW9uKTsKIHN0 YXRpYyBjaGFyIEdldEF0dHJpYnV0ZUNvbXByZXNzaW9uKE9pZCBhdHR0eXBpZCwgY29uc3Qg Y2hhciAqY29tcHJlc3Npb24pOwogc3RhdGljIGNoYXIgR2V0QXR0cmlidXRlU3RvcmFnZShP aWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKnN0b3JhZ2Vtb2RlKTsKK3N0YXRpYyB2b2lkIEFk ZFJlbGF0aW9uTmV3UGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVmICpwZXJpb2QpOwor c3RhdGljIHZvaWQgVmFsaWRhdGVQZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBl cmlvZCk7CitzdGF0aWMgQ29uc3RyYWludCAqbWFrZV9jb25zdHJhaW50X2Zvcl9wZXJpb2Qo UmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCk7CitzdGF0aWMgQ29sdW1uRGVmICpt YWtlX3JhbmdlX2NvbHVtbl9mb3JfcGVyaW9kKFBlcmlvZERlZiAqcGVyaW9kKTsKIAogCiAv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCkBAIC05MDMsNiArOTIyLDI2IEBAIERlZmluZVJlbGF0aW9uKENyZWF0 ZVN0bXQgKnN0bXQsIGNoYXIgcmVsa2luZCwgT2lkIG93bmVySWQsCiAJCQkJCQlzdG10LT5w YXJ0Ym91bmQgIT0gTlVMTCwKIAkJCQkJCSZvbGRfY29uc3RyYWludHMsICZvbGRfbm90bnVs bHMpOwogCisJLyoKKwkgKiBVc2luZyB0aGUgY29sdW1uIGxpc3QgKGluY2x1ZGluZyBpbmhl cml0ZWQgY29sdW1ucyksCisJICogZmluZCB0aGUgc3RhcnQvZW5kIGNvbHVtbnMgZm9yIGVh Y2ggcGVyaW9kLgorCSAqIFBFUklPRHMgc2hvdWxkIGJlIGluaGVyaXRlZCB0b28gKGJ1dCBh cmVuJ3QgeWV0KS4KKwkgKi8KKwlzdG10LT5wZXJpb2RzID0gTWVyZ2VQZXJpb2RzKHJlbG5h bWUsIHN0bXQtPnBlcmlvZHMsIHN0bXQtPnRhYmxlRWx0cywgaW5oZXJpdE9pZHMpOworCisJ LyoKKwkgKiBGb3IgZWFjaCBQRVJJT0Qgd2UgbmVlZCB0byBjcmVhdGUgYSBHRU5FUkFURUQg Y29sdW1uLAorCSAqIHNvIGFkZCB0aG9zZSB0byB0YWJsZUVsdHMuCisJICogVGhlc2UgY29s dW1ucyBhcmUgbm90IGluaGVyaXRlZCwKKwkgKiBzbyB3ZSBkb24ndCB3b3JyeSBhYm91dCBj b25mbGljdHMgaW4gdGFibGVFbHRzLgorCSAqLworCWZvcmVhY2gobGlzdHB0ciwgc3RtdC0+ cGVyaW9kcykKKwl7CisJCVBlcmlvZERlZiAqcGVyaW9kID0gKFBlcmlvZERlZiAqKSBsZmly c3QobGlzdHB0cik7CisJCUNvbHVtbkRlZiAqY29sID0gbWFrZV9yYW5nZV9jb2x1bW5fZm9y X3BlcmlvZChwZXJpb2QpOworCQlzdG10LT50YWJsZUVsdHMgPSBsYXBwZW5kKHN0bXQtPnRh YmxlRWx0cywgY29sKTsKKwl9CisKIAkvKgogCSAqIENyZWF0ZSBhIHR1cGxlIGRlc2NyaXB0 b3IgZnJvbSB0aGUgcmVsYXRpb24gc2NoZW1hLiAgTm90ZSB0aGF0IHRoaXMKIAkgKiBkZWFs cyB3aXRoIGNvbHVtbiBuYW1lcywgdHlwZXMsIGFuZCBpbi1kZXNjcmlwdG9yIE5PVCBOVUxM IGZsYWdzLCBidXQKQEAgLTEyODgsNiArMTMyNywyMSBAQCBEZWZpbmVSZWxhdGlvbihDcmVh dGVTdG10ICpzdG10LCBjaGFyIHJlbGtpbmQsIE9pZCBvd25lcklkLAogCWZvcmVhY2gobGlz dHB0ciwgbm5jb2xzKQogCQlzZXRfYXR0bm90bnVsbChOVUxMLCByZWwsIGxmaXJzdF9pbnQo bGlzdHB0ciksIGZhbHNlLCBOb0xvY2spOwogCisJLyoKKwkgKiBDcmVhdGUgcGVyaW9kcyBm b3IgdGhlIHRhYmxlLiBUaGlzIG11c3QgY29tZSBhZnRlciB3ZSBjcmVhdGUgY29sdW1ucwor CSAqIGFuZCBiZWZvcmUgd2UgY3JlYXRlIGluZGV4IGNvbnN0cmFpbnRzLiBJdCB3aWxsIGF1 dG9tYXRpY2FsbHkgY3JlYXRlCisJICogYSBDSEVDSyBjb25zdHJhaW50IGZvciB0aGUgcGVy aW9kLgorCSAqLworCWZvcmVhY2gobGlzdHB0ciwgc3RtdC0+cGVyaW9kcykKKwl7CisJCVBl cmlvZERlZiAqcGVyaW9kID0gKFBlcmlvZERlZiAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJ LyogRG9uJ3QgdXBkYXRlIHRoZSBjb3VudCBvZiBjaGVjayBjb25zdHJhaW50cyB0d2ljZSAq LworCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCisJCUFkZFJlbGF0aW9uTmV3UGVy aW9kKHJlbCwgcGVyaW9kKTsKKwl9CisKIAlPYmplY3RBZGRyZXNzU2V0KGFkZHJlc3MsIFJl bGF0aW9uUmVsYXRpb25JZCwgcmVsYXRpb25JZCk7CiAKIAkvKgpAQCAtMTQwNCw2ICsxNDU4 LDI2NCBAQCBCdWlsZERlc2NGb3JSZWxhdGlvbihjb25zdCBMaXN0ICpjb2x1bW5zKQogCXJl dHVybiBkZXNjOwogfQogCisvKgorICogbWFrZV9jb25zdHJhaW50X2Zvcl9wZXJpb2QKKyAq CisgKiBCdWlsZHMgYSBDSEVDSyBDb25zdHJhaW50IHRvIGVuc3VyZSBzdGFydCA8IGVuZC4K KyAqIFJldHVybnMgdGhlIENIRUNLIENvbnN0cmFpbnQuCisgKiBBbHNvIGZpbGxzIGluIHBl cmlvZC0+Y29uc3RyYWludG5hbWUgaWYgbmVlZGVkLgorICovCitzdGF0aWMgQ29uc3RyYWlu dCAqCittYWtlX2NvbnN0cmFpbnRfZm9yX3BlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlvZERl ZiAqcGVyaW9kKQoreworCUNvbHVtblJlZiAgKnNjb2wsICplY29sOworCUNvbnN0cmFpbnQg KmNvbnN0cjsKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwZTsKKworCWlmIChwZXJpb2QtPmNvbnN0 cmFpbnRuYW1lID09IE5VTEwpCisJCXBlcmlvZC0+Y29uc3RyYWludG5hbWUgPSBDaG9vc2VD b25zdHJhaW50TmFtZShSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLAorCQkJCQkJCQkJ CQkJCSAgcGVyaW9kLT5wZXJpb2RuYW1lLAorCQkJCQkJCQkJCQkJCSAgImNoZWNrIiwKKwkJ CQkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCksCisJCQkJCQkJCQkJCQkJ ICBOSUwpOworCXNjb2wgPSBtYWtlTm9kZShDb2x1bW5SZWYpOworCXNjb2wtPmZpZWxkcyA9 IGxpc3RfbWFrZTEobWFrZVN0cmluZyhwc3RyZHVwKHBlcmlvZC0+c3RhcnRjb2xuYW1lKSkp OworCXNjb2wtPmxvY2F0aW9uID0gMDsKKworCWVjb2wgPSBtYWtlTm9kZShDb2x1bW5SZWYp OworCWVjb2wtPmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhwc3RyZHVwKHBlcmlv ZC0+ZW5kY29sbmFtZSkpKTsKKwllY29sLT5sb2NhdGlvbiA9IDA7CisKKwl0eXBlID0gbG9v a3VwX3R5cGVfY2FjaGUocGVyaW9kLT5jb2x0eXBpZCwgVFlQRUNBQ0hFX0xUX09QUik7CisJ aWYgKHR5cGUtPmx0X29wciA9PSBJbnZhbGlkT2lkKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNn KCJjb2x1bW4gXCIlc1wiIGNhbm5vdCBiZSB1c2VkIGluIGEgUEVSSU9EIGJlY2F1c2UgaXRz IHR5cGUgJXMgaGFzIG5vIGxlc3MgdGhhbiBvcGVyYXRvciIsCisJCQkJCQlwZXJpb2QtPnN0 YXJ0Y29sbmFtZSwgZm9ybWF0X3R5cGVfYmUocGVyaW9kLT5jb2x0eXBpZCkpKSk7CisKKwlj b25zdHIgPSBtYWtlTm9kZShDb25zdHJhaW50KTsKKwljb25zdHItPmNvbnR5cGUgPSBDT05T VFJfQ0hFQ0s7CisJY29uc3RyLT5jb25uYW1lID0gcGVyaW9kLT5jb25zdHJhaW50bmFtZTsK Kwljb25zdHItPmRlZmVycmFibGUgPSBmYWxzZTsKKwljb25zdHItPmluaXRkZWZlcnJlZCA9 IGZhbHNlOworCWNvbnN0ci0+bG9jYXRpb24gPSAtMTsKKwljb25zdHItPmlzX25vX2luaGVy aXQgPSBmYWxzZTsKKwljb25zdHItPnJhd19leHByID0gKE5vZGUgKikgbWFrZVNpbXBsZUFf RXhwcihBRVhQUl9PUCwKKwkJCQkJCQkJCQkJCSBnZXRfb3BuYW1lKHR5cGUtPmx0X29wciks CisJCQkJCQkJCQkJCQkgKE5vZGUgKikgc2NvbCwKKwkJCQkJCQkJCQkJCSAoTm9kZSAqKSBl Y29sLAorCQkJCQkJCQkJCQkJIDApOworCWNvbnN0ci0+Y29va2VkX2V4cHIgPSBOVUxMOwor CWNvbnN0ci0+c2tpcF92YWxpZGF0aW9uID0gZmFsc2U7CisJY29uc3RyLT5pbml0aWFsbHlf dmFsaWQgPSB0cnVlOworCisJcmV0dXJuIGNvbnN0cjsKK30KKworLyoKKyAqIG1ha2VfcmFu Z2VfY29sdW1uX2Zvcl9wZXJpb2QKKyAqCisgKiBCdWlsZHMgYSBHRU5FUkFURUQgQUxXQVlT IHJhbmdlIGNvbHVtbiBiYXNlZCBvbiB0aGUgUEVSSU9ECisgKiBzdGFydC9lbmQgY29sdW1u cy4gUmV0dXJucyB0aGUgQ29sdW1uRGVmLgorICovCitDb2x1bW5EZWYgKgorbWFrZV9yYW5n ZV9jb2x1bW5fZm9yX3BlcmlvZChQZXJpb2REZWYgKnBlcmlvZCkKK3sKKwljaGFyICpyYW5n ZV90eXBlX25hbWVzcGFjZTsKKwljaGFyICpyYW5nZV90eXBlX25hbWU7CisJQ29sdW1uRGVm ICpjb2wgPSBtYWtlTm9kZShDb2x1bW5EZWYpOworCUNvbHVtblJlZiAqc3RhcnR2YXIsICpl bmR2YXI7CisJRXhwciAqcmFuZ2VDb25zdHJ1Y3RvcjsKKworCWlmICghZ2V0X3R5cG5hbWVf YW5kX25hbWVzcGFjZShwZXJpb2QtPnJuZ3R5cGlkLCAmcmFuZ2VfdHlwZV9uYW1lLCAmcmFu Z2VfdHlwZV9uYW1lc3BhY2UpKQorCQllbG9nKEVSUk9SLCAibWlzc2luZyByYW5nZSB0eXBl ICVkIiwgcGVyaW9kLT5ybmd0eXBpZCk7CisKKwlzdGFydHZhciA9IG1ha2VOb2RlKENvbHVt blJlZik7CisJc3RhcnR2YXItPmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhwc3Ry ZHVwKHBlcmlvZC0+c3RhcnRjb2xuYW1lKSkpOworCWVuZHZhciA9IG1ha2VOb2RlKENvbHVt blJlZik7CisJZW5kdmFyLT5maWVsZHMgPSBsaXN0X21ha2UxKG1ha2VTdHJpbmcocHN0cmR1 cChwZXJpb2QtPmVuZGNvbG5hbWUpKSk7CisJcmFuZ2VDb25zdHJ1Y3RvciA9IChFeHByICop IG1ha2VGdW5jQ2FsbCgKKwkJCWxpc3RfbWFrZTIobWFrZVN0cmluZyhyYW5nZV90eXBlX25h bWVzcGFjZSksIG1ha2VTdHJpbmcocmFuZ2VfdHlwZV9uYW1lKSksCisJCQlsaXN0X21ha2Uy KHN0YXJ0dmFyLCBlbmR2YXIpLAorCQkJQ09FUkNFX0VYUExJQ0lUX0NBTEwsCisJCQlwZXJp b2QtPmxvY2F0aW9uKTsKKworCWNvbC0+Y29sbmFtZSA9IHBzdHJkdXAocGVyaW9kLT5wZXJp b2RuYW1lKTsKKwljb2wtPnR5cGVOYW1lID0gbWFrZVR5cGVOYW1lKHJhbmdlX3R5cGVfbmFt ZSk7CisJY29sLT5jb21wcmVzc2lvbiA9IE5VTEw7CisJY29sLT5pbmhjb3VudCA9IDA7CisJ Y29sLT5pc19sb2NhbCA9IHRydWU7CisJY29sLT5pc19ub3RfbnVsbCA9IHRydWU7CisJY29s LT5pc19mcm9tX3R5cGUgPSBmYWxzZTsKKwljb2wtPnN0b3JhZ2UgPSAwOworCWNvbC0+c3Rv cmFnZV9uYW1lID0gTlVMTDsKKwljb2wtPnJhd19kZWZhdWx0ID0gKE5vZGUgKikgcmFuZ2VD b25zdHJ1Y3RvcjsKKwljb2wtPmNvb2tlZF9kZWZhdWx0ID0gTlVMTDsKKwljb2wtPmlkZW50 aXR5ID0gMDsKKwljb2wtPmdlbmVyYXRlZCA9IEFUVFJJQlVURV9HRU5FUkFURURfU1RPUkVE OworCWNvbC0+Y29sbENsYXVzZSA9IE5VTEw7CisJY29sLT5jb2xsT2lkID0gSW52YWxpZE9p ZDsKKwljb2wtPmZkd29wdGlvbnMgPSBOSUw7CisJY29sLT5sb2NhdGlvbiA9IHBlcmlvZC0+ bG9jYXRpb247CisKKwlyZXR1cm4gY29sOworfQorCisvKgorICogVmFsaWRhdGVQZXJpb2QK KyAqCisgKiBMb29rIHVwIHRoZSBhdHRyaWJ1dGVzIHVzZWQgYnkgdGhlIFBFUklPRCwKKyAq IG1ha2Ugc3VyZSB0aGV5IGV4aXN0LCBhcmUgbm90IHN5c3RlbSBjb2x1bW5zLAorICogYW5k IGhhdmUgdGhlIHNhbWUgdHlwZSBhbmQgY29sbGF0aW9uLgorICoKKyAqIFlvdSBtdXN0IGhh dmUgYSBSb3dFeGNsdXNpdmVMb2NrIG9uIHBnX2F0dHJpYnV0ZQorICogYmVmb3JlIGNhbGxp bmcgdGhpcyBmdW5jdGlvbi4KKyAqCisgKiBBZGQgb3VyIGZpbmRpbmdzIHRvIHRoZXNlIFBl cmlvZERlZiBmaWVsZHM6CisgKgorICogY29sdHlwaWQgLSB0aGUgdHlwZSBvZiBQRVJJT0Qg Y29sdW1ucy4KKyAqIHN0YXJ0YXR0bnVtIC0gdGhlIGF0dG51bSBvZiB0aGUgc3RhcnQgY29s dW1uLgorICogZW5kYXR0bnVtIC0gdGhlIGF0dG51bSBvZiB0aGUgZW5kIGNvbHVtbi4KKyAq Lworc3RhdGljIHZvaWQKK1ZhbGlkYXRlUGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVm ICpwZXJpb2QpCit7CisJSGVhcFR1cGxlIHN0YXJ0dHVwbGU7CisJSGVhcFR1cGxlIGVuZHR1 cGxlOworCUZvcm1fcGdfYXR0cmlidXRlCWF0dHR1cGxlOworCU9pZAlhdHRjb2xsYXRpb247 CisKKwkvKiBGaW5kIHRoZSBzdGFydCBjb2x1bW4gKi8KKwlzdGFydHR1cGxlID0gU2VhcmNo U3lzQ2FjaGVDb3B5QXR0TmFtZShSZWxhdGlvbkdldFJlbGlkKHJlbCksIHBlcmlvZC0+c3Rh cnRjb2xuYW1lKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoc3RhcnR0dXBsZSkpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwK KwkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5v dCBleGlzdCIsCisJCQkJCQlwZXJpb2QtPnN0YXJ0Y29sbmFtZSwgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUocmVsKSkpKTsKKwlhdHR0dXBsZSA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VU U1RSVUNUKHN0YXJ0dHVwbGUpOworCXBlcmlvZC0+Y29sdHlwaWQgPSBhdHR0dXBsZS0+YXR0 dHlwaWQ7CisJYXR0Y29sbGF0aW9uID0gYXR0dHVwbGUtPmF0dGNvbGxhdGlvbjsKKwlwZXJp b2QtPnN0YXJ0YXR0bnVtID0gYXR0dHVwbGUtPmF0dG51bTsKKworCS8qIE1ha2Ugc3VyZSBp dCdzIG5vdCBhIHN5c3RlbSBjb2x1bW4gKi8KKwlpZiAocGVyaW9kLT5zdGFydGF0dG51bSA8 PSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9P QkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygiY2Fubm90IHVzZSBzeXN0ZW0gY29s dW1uIFwiJXNcIiBpbiBwZXJpb2QiLAorCQkJCQkJcGVyaW9kLT5zdGFydGNvbG5hbWUpKSk7 CisKKwkvKiBGaW5kIHRoZSBlbmQgY29sdW1uICovCisJZW5kdHVwbGUgPSBTZWFyY2hTeXND YWNoZUNvcHlBdHROYW1lKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9kLT5lbmRjb2xu YW1lKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoZW5kdHVwbGUpKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJIGVy cm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3Qi LAorCQkJCQkJcGVyaW9kLT5lbmRjb2xuYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShy ZWwpKSkpOworCWF0dHR1cGxlID0gKEZvcm1fcGdfYXR0cmlidXRlKSBHRVRTVFJVQ1QoZW5k dHVwbGUpOworCXBlcmlvZC0+ZW5kYXR0bnVtID0gYXR0dHVwbGUtPmF0dG51bTsKKworCS8q IE1ha2Ugc3VyZSBpdCdzIG5vdCBhIHN5c3RlbSBjb2x1bW4gKi8KKwlpZiAocGVyaW9kLT5l bmRhdHRudW0gPD0gMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2coImNhbm5vdCB1c2Ug c3lzdGVtIGNvbHVtbiBcIiVzXCIgaW4gcGVyaW9kIiwKKwkJCQkJCXBlcmlvZC0+ZW5kY29s bmFtZSkpKTsKKworCS8qIEJvdGggY29sdW1ucyBtdXN0IGJlIG9mIHNhbWUgdHlwZSAqLwor CWlmIChwZXJpb2QtPmNvbHR5cGlkICE9IGF0dHR1cGxlLT5hdHR0eXBpZCkKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJ CQkgZXJybXNnKCJzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11c3QgYmUgb2Yg c2FtZSB0eXBlIikpKTsKKworCS8qIEJvdGggY29sdW1ucyBtdXN0IGhhdmUgdGhlIHNhbWUg Y29sbGF0aW9uICovCisJaWYgKGF0dGNvbGxhdGlvbiAhPSBhdHR0dXBsZS0+YXR0Y29sbGF0 aW9uKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfQ09MTEFUSU9O X01JU01BVENIKSwKKwkJCQkgZXJybXNnKCJzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVy aW9kIG11c3QgaGF2ZSBzYW1lIGNvbGxhdGlvbiIpKSk7CisKKwloZWFwX2ZyZWV0dXBsZShz dGFydHR1cGxlKTsKKwloZWFwX2ZyZWV0dXBsZShlbmR0dXBsZSk7Cit9CisKKy8qCisgKiBj aG9vc2VfcmFuZ2V0eXBlX2Zvcl9wZXJpb2QKKyAqCisgKiBGaW5kIGEgc3VpdGFibGUgcmFu Z2UgdHlwZSBmb3Igb3BlcmF0aW9ucyBpbnZvbHZpbmcgdGhpcyBwZXJpb2QuCisgKiBVc2Ug dGhlIHJhbmdldHlwZSBvcHRpb24gaWYgcHJvdmlkZWQsIG90aGVyd2lzZSB0cnkgdG8gZmlu ZCBhCisgKiBub24tYW1iaWd1b3VzIGV4aXN0aW5nIHR5cGUuCisgKi8KKy8vIFRPRE86IFRo aXMgY291bGQgYmUgc3RhdGljIG5vdworT2lkCitjaG9vc2VfcmFuZ2V0eXBlX2Zvcl9wZXJp b2QoUGVyaW9kRGVmICpwZXJpb2QpCit7CisJT2lkCXJuZ3R5cGlkOworCisJaWYgKHBlcmlv ZC0+cmFuZ2V0eXBlbmFtZSAhPSBOVUxMKQorCXsKKwkJLyogTWFrZSBzdXJlIGl0IGV4aXN0 cyAqLworCQlybmd0eXBpZCA9IFR5cGVuYW1lR2V0VHlwaWRFeHRlbmRlZChwZXJpb2QtPnJh bmdldHlwZW5hbWUsIGZhbHNlKTsKKwkJaWYgKHJuZ3R5cGlkID09IEludmFsaWRPaWQpCisJ CQllcmVwb3J0KEVSUk9SLCAoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAor CQkJCQkgZXJybXNnKCJSYW5nZSB0eXBlICVzIG5vdCBmb3VuZCIsIHBlcmlvZC0+cmFuZ2V0 eXBlbmFtZSkpKTsKKworCQkvKiBNYWtlIHN1cmUgaXQgaXMgYSByYW5nZSB0eXBlICovCisJ CWlmICghdHlwZV9pc19yYW5nZShybmd0eXBpZCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJIGVycm1zZygi VHlwZSAlcyBpcyBub3QgYSByYW5nZSB0eXBlIiwgcGVyaW9kLT5yYW5nZXR5cGVuYW1lKSkp OworCisJCS8qIE1ha2Ugc3VyZSBpdCBtYXRjaGVzIHRoZSBjb2x1bW4gdHlwZSAqLworCQlp ZiAoZ2V0X3JhbmdlX3N1YnR5cGUocm5ndHlwaWQpICE9IHBlcmlvZC0+Y29sdHlwaWQpCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01B VENIKSwKKwkJCQkJIGVycm1zZygiUmFuZ2UgdHlwZSAlcyBkb2VzIG5vdCBtYXRjaCBjb2x1 bW4gdHlwZSAlcyIsCisJCQkJCQkgcGVyaW9kLT5yYW5nZXR5cGVuYW1lLAorCQkJCQkJIGZv cm1hdF90eXBlX2JlKHBlcmlvZC0+Y29sdHlwaWQpKSkpOworCX0KKwllbHNlCisJeworCQly bmd0eXBpZCA9IGdldF9zdWJ0eXBlX3JhbmdlKHBlcmlvZC0+Y29sdHlwaWQpOworCQlpZiAo cm5ndHlwaWQgPT0gSW52YWxpZE9pZCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJj b2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCSBlcnJtc2coIm5vIHJhbmdl IHR5cGUgZm9yICVzIGZvdW5kIGZvciBwZXJpb2QgJXMiLAorCQkJCQkJCWZvcm1hdF90eXBl X2JlKHBlcmlvZC0+Y29sdHlwaWQpLAorCQkJCQkJCXBlcmlvZC0+cGVyaW9kbmFtZSksCisJ CQkJCSBlcnJoaW50KCJZb3UgY2FuIGRlZmluZSBhIGN1c3RvbSByYW5nZSB0eXBlIHdpdGgg Q1JFQVRFIFRZUEUiKSkpOworCisJfQorCisJcmV0dXJuIHJuZ3R5cGlkOworfQorCitzdGF0 aWMgdm9pZAorQWRkUmVsYXRpb25OZXdQZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYg KnBlcmlvZCkKK3sKKwlSZWxhdGlvbglhdHRyZWxhdGlvbjsKKwlPaWQJCQljb25vaWQ7CisJ Q29uc3RyYWludCAqY29uc3RyOworCUxpc3QJICAgKm5ld2NvbnN0cnM7CisKKwlhdHRyZWxh dGlvbiA9IHRhYmxlX29wZW4oQXR0cmlidXRlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9j ayk7CisKKwkvKiBGaW5kIHRoZSBHRU5FUkFURUQgcmFuZ2UgY29sdW1uICovCisKKwlwZXJp b2QtPnJuZ2F0dG51bSA9IGdldF9hdHRudW0oUmVsYXRpb25HZXRSZWxpZChyZWwpLCBwZXJp b2QtPnBlcmlvZG5hbWUpOworCWlmIChwZXJpb2QtPnJuZ2F0dG51bSA9PSBJbnZhbGlkQXR0 ck51bWJlcikKKwkJZWxvZyhFUlJPUiwgIm1pc3NpbmcgYXR0cmlidXRlICVzIiwgcGVyaW9k LT5wZXJpb2RuYW1lKTsKKworCS8qIFRoZSBwYXJzZXIgaGFzIGFscmVhZHkgZm91bmQgcGVy aW9kLT5jb2x0eXBpZCAqLworCisJY29uc3RyID0gbWFrZV9jb25zdHJhaW50X2Zvcl9wZXJp b2QocmVsLCBwZXJpb2QpOworCW5ld2NvbnN0cnMgPSBBZGRSZWxhdGlvbk5ld0NvbnN0cmFp bnRzKHJlbCwgTklMLCBsaXN0X21ha2UxKGNvbnN0ciksIGZhbHNlLCB0cnVlLCB0cnVlLCBO VUxMKTsKKwljb25vaWQgPSAoKENvb2tlZENvbnN0cmFpbnQgKikgbGluaXRpYWwobmV3Y29u c3RycykpLT5jb25vaWQ7CisKKwkvKiBTYXZlIGl0ICovCisJU3RvcmVQZXJpb2QocmVsLCBw ZXJpb2QtPnBlcmlvZG5hbWUsIHBlcmlvZC0+c3RhcnRhdHRudW0sIHBlcmlvZC0+ZW5kYXR0 bnVtLCBwZXJpb2QtPnJuZ2F0dG51bSwgY29ub2lkKTsKKworCXRhYmxlX2Nsb3NlKGF0dHJl bGF0aW9uLCBSb3dFeGNsdXNpdmVMb2NrKTsKK30KKwogLyoKICAqIEVtaXQgdGhlIHJpZ2h0 IGVycm9yIG9yIHdhcm5pbmcgbWVzc2FnZSBmb3IgYSAiRFJPUCIgY29tbWFuZCBpc3N1ZWQg b24gYQogICogbm9uLWV4aXN0ZW50IHJlbGF0aW9uCkBAIC0zMzY5LDYgKzM2ODEsMTY4IEBA IE1lcmdlQXR0cmlidXRlcyhMaXN0ICpjb2x1bW5zLCBjb25zdCBMaXN0ICpzdXBlcnMsIGNo YXIgcmVscGVyc2lzdGVuY2UsCiB9CiAKIAorLyotLS0tLS0tLS0tCisgKiBNZXJnZVBlcmlv ZHMKKyAqCQlSZXR1cm5zIG5ldyBwZXJpb2QgbGlzdCBnaXZlbiBpbml0aWFsIHBlcmlvZHMg YW5kIHN1cGVyY2xhc3Nlcy4KKyAqCisgKiBGb3Igbm93IHdlIGRvbid0IHN1cHBvcnQgaW5o ZXJpdGVuY2Ugd2l0aCBQRVJJT0RzLAorICogYnV0IHdlIG1pZ2h0IG1ha2UgaXQgd29yayBl dmVudHVhbGx5LgorICoKKyAqIFdlIGNhbiBvbWl0IGxvdHMgb2YgY2hlY2tzIGhlcmUgYW5k IGFzc3VtZSBNZXJnZUF0dHJpYnV0ZXMgYWxyZWFkeSBkaWQgdGhlbSwKKyAqIGZvciBleGFt cGxlIHRoYXQgY2hpbGQgJiBwYXJlbnRzIGFyZSBub3QgYSBtaXggb2YgcGVybWFuZW50IGFu ZCB0ZW1wLgorICovCitzdGF0aWMgTGlzdCAqCitNZXJnZVBlcmlvZHMoY2hhciAqcmVsbmFt ZSwgTGlzdCAqcGVyaW9kcywgTGlzdCAqdGFibGVFbHRzLCBMaXN0ICpzdXBlcnMpCit7CisJ TGlzdENlbGwgICAqZW50cnk7CisKKwkvKiBJZiB3ZSBoYXZlIGEgUEVSSU9EIHRoZW4gc3Vw ZXJzIG11c3QgYmUgZW1wdHkuICovCisKKwlpZiAobGlzdF9sZW5ndGgocGVyaW9kcykgPiAw ICYmIGxpc3RfbGVuZ3RoKHN1cGVycykgPiAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJJ bmhlcml0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiBhIHRhYmxlIGhhcyBhIFBFUklPRCIp KSk7CisKKwkvKiBJZiBhbnkgcGFyZW50IHRhYmxlIGhhcyBhIFBFUklPRCwgdGhlbiBmYWls LiAqLworCisJZm9yZWFjaChlbnRyeSwgc3VwZXJzKQorCXsKKwkJT2lkCQkJcGFyZW50ID0g bGZpcnN0X29pZChlbnRyeSk7CisJCVJlbGF0aW9uCXJlbGF0aW9uOworCQlSZWxhdGlvbglw Z19wZXJpb2Q7CisJCVN5c1NjYW5EZXNjIHNjYW47CisJCVNjYW5LZXlEYXRhIHNrZXlbMV07 CisJCUhlYXBUdXBsZQl0dXBsZTsKKworCQkvKiBjYWxsZXIgYWxyZWFkeSBnb3QgbG9jayAq LworCQlyZWxhdGlvbiA9IHRhYmxlX29wZW4ocGFyZW50LCBOb0xvY2spOworCQlwZ19wZXJp b2QgPSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisK KwkJU2NhbktleUluaXQoJnNrZXlbMF0sCisJCQkJCUFudW1fcGdfcGVyaW9kX3BlcnJlbGlk LAorCQkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJCU9iamVjdElk R2V0RGF0dW0ocGFyZW50KSk7CisKKwkJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwZ19w ZXJpb2QsIFBlcmlvZFJlbGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJCSAgTlVMTCwg MSwgc2tleSk7CisKKwkJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwbGUgPSBzeXN0YWJsZV9n ZXRuZXh0KHNjYW4pKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygiSW5oZXJpdGluZyBm cm9tIGEgdGFibGUgd2l0aCBhIFBFUklPRCBpcyBub3Qgc3VwcG9ydGVkIikpKTsKKworCQlz eXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCQl0YWJsZV9jbG9zZShwZ19wZXJpb2QsIEFjY2Vz c1NoYXJlTG9jayk7CisJCXRhYmxlX2Nsb3NlKHJlbGF0aW9uLCBOb0xvY2spOworCX0KKwor CS8qCisJICogRmluZCB0aGUgc3RhcnQgJiBlbmQgY29sdW1ucyBhbmQgZ2V0IHRoZWlyIGF0 dG5vIGFuZCB0eXBlLgorCSAqIEluIHRoZSBzYW1lIHBhc3MsIG1ha2Ugc3VyZSB0aGUgcGVy aW9kIGRvZXNuJ3QgY29uZmxpY3Qgd2l0aCBhbnkgY29sdW1uIG5hbWVzLgorCSAqIEFsc28g bWFrZSBzdXJlIHRoZSBzYW1lIHBlcmlvZCBuYW1lIGlzbid0IHVzZWQgbW9yZSB0aGFuIG9u Y2UuCisJICovCisJZm9yZWFjaCAoZW50cnksIHBlcmlvZHMpCisJeworCQlQZXJpb2REZWYg KnBlcmlvZCA9IGxmaXJzdChlbnRyeSk7CisJCUxpc3RDZWxsICplbnRyeTI7CisJCWludCBp ID0gMTsKKwkJT2lkIHN0YXJ0Y29sdHlwaWQgPSBJbnZhbGlkT2lkOworCQlPaWQgZW5kY29s dHlwaWQgPSBJbnZhbGlkT2lkOworCQlPaWQJc3RhcnRjb2xjb2xsYXRpb24gPSBJbnZhbGlk T2lkOworCQlPaWQJZW5kY29sY29sbGF0aW9uID0gSW52YWxpZE9pZDsKKworCQlwZXJpb2Qt PnN0YXJ0YXR0bnVtID0gSW52YWxpZEF0dHJOdW1iZXI7CisJCXBlcmlvZC0+ZW5kYXR0bnVt ID0gSW52YWxpZEF0dHJOdW1iZXI7CisKKwkJaWYgKFN5c3RlbUF0dHJpYnV0ZUJ5TmFtZShw ZXJpb2QtPnBlcmlvZG5hbWUpICE9IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQko ZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJwZXJp b2QgbmFtZSBcIiVzXCIgY29uZmxpY3RzIHdpdGggYSBzeXN0ZW0gY29sdW1uIG5hbWUiLAor CQkJCQkJCXBlcmlvZC0+cGVyaW9kbmFtZSkpKTsKKworCQlmb3JlYWNoIChlbnRyeTIsIHBl cmlvZHMpCisJCXsKKwkJCVBlcmlvZERlZiAqcGVyaW9kMiA9IGxmaXJzdChlbnRyeTIpOwor CisJCQlpZiAocGVyaW9kICE9IHBlcmlvZDIgJiYgc3RyY21wKHBlcmlvZC0+cGVyaW9kbmFt ZSwgcGVyaW9kMi0+cGVyaW9kbmFtZSkgPT0gMCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJCQkJCSBlcnJtc2co InBlcmlvZCBuYW1lIFwiJXNcIiBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UiLAorCQkJCQkJ CQlwZXJpb2QtPnBlcmlvZG5hbWUpKSk7CisJCX0KKworCQlmb3JlYWNoIChlbnRyeTIsIHRh YmxlRWx0cykKKwkJeworCQkJQ29sdW1uRGVmICpjb2wgPSBsZmlyc3QoZW50cnkyKTsKKwkJ CWludDMyCWF0dHR5cG1vZDsKKwkJCUFjbFJlc3VsdCBhY2xyZXN1bHQ7CisKKwkJCWlmIChz dHJjbXAocGVyaW9kLT5wZXJpb2RuYW1lLCBjb2wtPmNvbG5hbWUpID09IDApCisJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX0NPTFVNTiks CisJCQkJCQkgZXJybXNnKCJwZXJpb2QgbmFtZSBcIiVzXCIgY29uZmxpY3RzIHdpdGggYSBj b2x1bW4gbmFtZSIsCisJCQkJCQkJCXBlcmlvZC0+cGVyaW9kbmFtZSkpKTsKKworCQkJaWYg KHN0cmNtcChwZXJpb2QtPnN0YXJ0Y29sbmFtZSwgY29sLT5jb2xuYW1lKSA9PSAwKQorCQkJ eworCQkJCXBlcmlvZC0+c3RhcnRhdHRudW0gPSBpOworCisJCQkJdHlwZW5hbWVUeXBlSWRB bmRNb2QoTlVMTCwgY29sLT50eXBlTmFtZSwgJnN0YXJ0Y29sdHlwaWQsICZhdHR0eXBtb2Qp OworCisJCQkJYWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNrKFR5cGVSZWxhdGlvbklkLCBz dGFydGNvbHR5cGlkLCBHZXRVc2VySWQoKSwgQUNMX1VTQUdFKTsKKwkJCQlpZiAoYWNscmVz dWx0ICE9IEFDTENIRUNLX09LKQorCQkJCQlhY2xjaGVja19lcnJvcl90eXBlKGFjbHJlc3Vs dCwgc3RhcnRjb2x0eXBpZCk7CisKKwkJCQlzdGFydGNvbGNvbGxhdGlvbiA9IEdldENvbHVt bkRlZkNvbGxhdGlvbihOVUxMLCBjb2wsIHN0YXJ0Y29sdHlwaWQpOworCQkJfQorCisJCQlp ZiAoc3RyY21wKHBlcmlvZC0+ZW5kY29sbmFtZSwgY29sLT5jb2xuYW1lKSA9PSAwKQorCQkJ eworCQkJCXBlcmlvZC0+ZW5kYXR0bnVtID0gaTsKKworCQkJCXR5cGVuYW1lVHlwZUlkQW5k TW9kKE5VTEwsIGNvbC0+dHlwZU5hbWUsICZlbmRjb2x0eXBpZCwgJmF0dHR5cG1vZCk7CisK KwkJCQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soVHlwZVJlbGF0aW9uSWQsIGVuZGNv bHR5cGlkLCBHZXRVc2VySWQoKSwgQUNMX1VTQUdFKTsKKwkJCQlpZiAoYWNscmVzdWx0ICE9 IEFDTENIRUNLX09LKQorCQkJCQlhY2xjaGVja19lcnJvcl90eXBlKGFjbHJlc3VsdCwgZW5k Y29sdHlwaWQpOworCisJCQkJZW5kY29sY29sbGF0aW9uID0gR2V0Q29sdW1uRGVmQ29sbGF0 aW9uKE5VTEwsIGNvbCwgZW5kY29sdHlwaWQpOworCQkJfQorCisJCQlpKys7CisJCX0KKwor CQkvKiBEaWQgd2UgZmluZCB0aGUgY29sdW1ucz8gKi8KKwkJaWYgKHBlcmlvZC0+c3RhcnRh dHRudW0gPT0gSW52YWxpZEF0dHJOdW1iZXIpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQko ZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJjb2x1 bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkJ cGVyaW9kLT5zdGFydGNvbG5hbWUsIHJlbG5hbWUpKSk7CisJCWlmIChwZXJpb2QtPmVuZGF0 dG51bSA9PSBJbnZhbGlkQXR0ck51bWJlcikKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShl cnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJCSBlcnJtc2coImNvbHVt biBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQlw ZXJpb2QtPmVuZGNvbG5hbWUsIHJlbG5hbWUpKSk7CisKKwkJLyogQm90aCBjb2x1bW5zIG11 c3QgYmUgb2Ygc2FtZSB0eXBlICovCisJCWlmIChzdGFydGNvbHR5cGlkICE9IGVuZGNvbHR5 cGlkKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQ RV9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coInN0YXJ0IGFuZCBlbmQgY29sdW1ucyBvZiBw ZXJpb2QgbXVzdCBiZSBvZiBzYW1lIHR5cGUiKSkpOworCisJCS8qIEJvdGggY29sdW1ucyBt dXN0IGhhdmUgdGhlIHNhbWUgY29sbGF0aW9uICovCisJCWlmIChzdGFydGNvbGNvbGxhdGlv biAhPSBlbmRjb2xjb2xsYXRpb24pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29k ZShFUlJDT0RFX0NPTExBVElPTl9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coInN0YXJ0IGFu ZCBlbmQgY29sdW1ucyBvZiBwZXJpb2QgbXVzdCBoYXZlIHNhbWUgY29sbGF0aW9uIikpKTsK KworCQlwZXJpb2QtPmNvbHR5cGlkID0gc3RhcnRjb2x0eXBpZDsKKwkJcGVyaW9kLT5ybmd0 eXBpZCA9IGNob29zZV9yYW5nZXR5cGVfZm9yX3BlcmlvZChwZXJpb2QpOworCX0KKworCXJl dHVybiBwZXJpb2RzOworfQorCiAvKgogICogTWVyZ2VDaGVja0NvbnN0cmFpbnQKICAqCQlU cnkgdG8gbWVyZ2UgYW4gaW5oZXJpdGVkIENIRUNLIGNvbnN0cmFpbnQgd2l0aCBwcmV2aW91 cyBvbmVzCkBAIC00NDI1LDEyICs0ODk5LDEyIEBAIEFsdGVyVGFibGUoQWx0ZXJUYWJsZVN0 bXQgKnN0bXQsIExPQ0tNT0RFIGxvY2ttb2RlLAogICogZXhpc3RpbmcgcXVlcnkgcGxhbnMu ICBPbiB0aGUgYXNzdW1wdGlvbiBpdCdzIG5vdCB1c2VkIGZvciBzdWNoLCB3ZQogICogZG9u J3QgaGF2ZSB0byByZWplY3QgcGVuZGluZyBBRlRFUiB0cmlnZ2VycywgZWl0aGVyLgogICoK LSAqIEFsc28sIHNpbmNlIHdlIGRvbid0IGhhdmUgYW4gQWx0ZXJUYWJsZVV0aWxpdHlDb250 ZXh0LCB0aGlzIGNhbm5vdCBiZQorICogQWxzbywgaWYgeW91IGRvbid0IHBhc3MgYW4gQWx0 ZXJUYWJsZVV0aWxpdHlDb250ZXh0LCB0aGlzIGNhbm5vdCBiZQogICogdXNlZCBmb3IgYW55 IHN1YmNvbW1hbmQgdHlwZXMgdGhhdCByZXF1aXJlIHBhcnNlIHRyYW5zZm9ybWF0aW9uIG9y CiAgKiBjb3VsZCBnZW5lcmF0ZSBzdWJjb21tYW5kcyB0aGF0IGhhdmUgdG8gYmUgcGFzc2Vk IHRvIFByb2Nlc3NVdGlsaXR5LgogICovCiB2b2lkCi1BbHRlclRhYmxlSW50ZXJuYWwoT2lk IHJlbGlkLCBMaXN0ICpjbWRzLCBib29sIHJlY3Vyc2UpCitBbHRlclRhYmxlSW50ZXJuYWwo T2lkIHJlbGlkLCBMaXN0ICpjbWRzLCBib29sIHJlY3Vyc2UsIEFsdGVyVGFibGVVdGlsaXR5 Q29udGV4dCAqY29udGV4dCkKIHsKIAlSZWxhdGlvbglyZWw7CiAJTE9DS01PREUJbG9ja21v ZGUgPSBBbHRlclRhYmxlR2V0TG9ja0xldmVsKGNtZHMpOwpAQCAtNDQzOSw3ICs0OTEzLDcg QEAgQWx0ZXJUYWJsZUludGVybmFsKE9pZCByZWxpZCwgTGlzdCAqY21kcywgYm9vbCByZWN1 cnNlKQogCiAJRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZVJlbGlkKHJlbGlkKTsKIAotCUFUQ29u dHJvbGxlcihOVUxMLCByZWwsIGNtZHMsIHJlY3Vyc2UsIGxvY2ttb2RlLCBOVUxMKTsKKwlB VENvbnRyb2xsZXIoTlVMTCwgcmVsLCBjbWRzLCByZWN1cnNlLCBsb2NrbW9kZSwgY29udGV4 dCk7CiB9CiAKIC8qCkBAIC00NTMyLDYgKzUwMDYsOCBAQCBBbHRlclRhYmxlR2V0TG9ja0xl dmVsKExpc3QgKmNtZHMpCiAJCQljYXNlIEFUX0VuYWJsZVJlcGxpY2FSdWxlOgkvKiBtYXkg Y2hhbmdlIFNFTEVDVCBydWxlcyAqLwogCQkJY2FzZSBBVF9FbmFibGVSdWxlOiAvKiBtYXkg Y2hhbmdlIFNFTEVDVCBydWxlcyAqLwogCQkJY2FzZSBBVF9EaXNhYmxlUnVsZToJLyogbWF5 IGNoYW5nZSBTRUxFQ1QgcnVsZXMgKi8KKwkJCWNhc2UgQVRfQWRkUGVyaW9kOiAvKiBzaGFy ZXMgbmFtZXNwYWNlIHdpdGggY29sdW1ucywgYWRkcyBjb25zdHJhaW50ICovCisJCQljYXNl IEFUX0Ryb3BQZXJpb2Q6CiAJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9j azsKIAkJCQlicmVhazsKIApAQCAtNDg0OCw2ICs1MzI0LDE0IEBAIEFUUHJlcENtZChMaXN0 ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKIAkJCS8qIFRo aXMgY29tbWFuZCBuZXZlciByZWN1cnNlcyAqLwogCQkJcGFzcyA9IEFUX1BBU1NfQUREX09U SEVSQ09OU1RSOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfQWRkUGVyaW9kOiAvKiBBTFRFUiBU QUJMRSAuLi4gQUREIFBFUklPRCBGT1IgbmFtZSAoc3RhcnQsIGVuZCkgKi8KKwkJCUFUU2lt cGxlUGVybWlzc2lvbnMoY21kLT5zdWJ0eXBlLCByZWwsIEFUVF9UQUJMRSk7CisJCQlwYXNz ID0gQVRfUEFTU19BRERfUEVSSU9EOworCQkJYnJlYWs7CisJCWNhc2UgQVRfRHJvcFBlcmlv ZDogLyogQUxURVIgVEFCTEUgLi4uIERST1AgUEVSSU9EIEZPUiBuYW1lICovCisJCQlBVFNp bXBsZVBlcm1pc3Npb25zKGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfVEFCTEUpOworCQkJcGFz cyA9IEFUX1BBU1NfRFJPUDsKKwkJCWJyZWFrOwogCQljYXNlIEFUX0FkZElkZW50aXR5Ogog CQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhjbWQtPnN1YnR5cGUsIHJlbCwgQVRUX1RBQkxFIHwg QVRUX1ZJRVcgfCBBVFRfRk9SRUlHTl9UQUJMRSk7CiAJCQkvKiBTZXQgdXAgcmVjdXJzaW9u IGZvciBwaGFzZSAyOyBubyBvdGhlciBwcmVwIG5lZWRlZCAqLwpAQCAtNTI1NSw2ICs1NzM5 LDE0IEBAIEFURXhlY0NtZChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIs CiAJCWNhc2UgQVRfQ29va2VkQ29sdW1uRGVmYXVsdDoJLyogYWRkIGEgcHJlLWNvb2tlZCBk ZWZhdWx0ICovCiAJCQlhZGRyZXNzID0gQVRFeGVjQ29va2VkQ29sdW1uRGVmYXVsdChyZWws IGNtZC0+bnVtLCBjbWQtPmRlZik7CiAJCQlicmVhazsKKwkJY2FzZSBBVF9BZGRQZXJpb2Q6 CisJCQlhZGRyZXNzID0gQVRFeGVjQWRkUGVyaW9kKHJlbCwgKFBlcmlvZERlZiAqKSBjbWQt PmRlZiwgY29udGV4dCk7CisJCQlicmVhazsKKwkJY2FzZSBBVF9Ecm9wUGVyaW9kOgorCQkJ QVRFeGVjRHJvcFBlcmlvZChyZWwsIGNtZC0+bmFtZSwgY21kLT5iZWhhdmlvciwKKwkJCQkJ CQkJIGZhbHNlLCBmYWxzZSwKKwkJCQkJCQkJIGNtZC0+bWlzc2luZ19vayk7CisJCQlicmVh azsKIAkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCWNtZCA9IEFUUGFyc2VUcmFuc2Zvcm1D bWQod3F1ZXVlLCB0YWIsIHJlbCwgY21kLCBmYWxzZSwgbG9ja21vZGUsCiAJCQkJCQkJCQkg IGN1cl9wYXNzLCBjb250ZXh0KTsKQEAgLTY0MDIsNiArNjg5NCw4IEBAIGFsdGVyX3RhYmxl X3R5cGVfdG9fc3RyaW5nKEFsdGVyVGFibGVUeXBlIGNtZHR5cGUpCiAJCWNhc2UgQVRfQWRk Q29sdW1uOgogCQljYXNlIEFUX0FkZENvbHVtblRvVmlldzoKIAkJCXJldHVybiAiQUREIENP TFVNTiI7CisJCWNhc2UgQVRfQWRkUGVyaW9kOgorCQkJcmV0dXJuICJBREQgUEVSSU9EIjsK IAkJY2FzZSBBVF9Db2x1bW5EZWZhdWx0OgogCQljYXNlIEFUX0Nvb2tlZENvbHVtbkRlZmF1 bHQ6CiAJCQlyZXR1cm4gIkFMVEVSIENPTFVNTiAuLi4gU0VUIERFRkFVTFQiOwpAQCAtNjQy Nyw2ICs2OTIxLDggQEAgYWx0ZXJfdGFibGVfdHlwZV90b19zdHJpbmcoQWx0ZXJUYWJsZVR5 cGUgY21kdHlwZSkKIAkJCXJldHVybiAiQUxURVIgQ09MVU1OIC4uLiBTRVQgQ09NUFJFU1NJ T04iOwogCQljYXNlIEFUX0Ryb3BDb2x1bW46CiAJCQlyZXR1cm4gIkRST1AgQ09MVU1OIjsK KwkJY2FzZSBBVF9Ecm9wUGVyaW9kOgorCQkJcmV0dXJuICJEUk9QIFBFUklPRCI7CiAJCWNh c2UgQVRfQWRkSW5kZXg6CiAJCWNhc2UgQVRfUmVBZGRJbmRleDoKIAkJCXJldHVybiBOVUxM OwkJLyogbm90IHJlYWwgZ3JhbW1hciAqLwpAQCAtNzM5NywxNCArNzg5MywyOSBAQCBBVEV4 ZWNBZGRDb2x1bW4oTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxh dGlvbiByZWwsCiAvKgogICogSWYgYSBuZXcgb3IgcmVuYW1lZCBjb2x1bW4gd2lsbCBjb2xs aWRlIHdpdGggdGhlIG5hbWUgb2YgYW4gZXhpc3RpbmcKICAqIGNvbHVtbiBhbmQgaWZfbm90 X2V4aXN0cyBpcyBmYWxzZSB0aGVuIGVycm9yIG91dCwgZWxzZSBkbyBub3RoaW5nLgorICoK KyAqIFNlZSBhbHNvIGNoZWNrX2Zvcl9wZXJpb2RfbmFtZV9jb2xsaXNpb24uCiAgKi8KIHN0 YXRpYyBib29sCiBjaGVja19mb3JfY29sdW1uX25hbWVfY29sbGlzaW9uKFJlbGF0aW9uIHJl bCwgY29uc3QgY2hhciAqY29sbmFtZSwKIAkJCQkJCQkJYm9vbCBpZl9ub3RfZXhpc3RzKQog ewotCUhlYXBUdXBsZQlhdHRUdXBsZTsKKwlIZWFwVHVwbGUJYXR0VHVwbGUsIHBlclR1cGxl OwogCWludAkJCWF0dG51bTsKIAorCS8qIElmIHRoZSBuYW1lIGV4aXN0cyBhcyBhIHBlcmlv ZCwgd2UncmUgZG9uZS4gKi8KKwlwZXJUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMihQRVJJT0RO QU1FLAorCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0oUmVsYXRpb25HZXRSZWxpZChyZWwp KSwKKwkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0oY29sbmFtZSkpOworCWlmIChIZWFwVHVw bGVJc1ZhbGlkKHBlclR1cGxlKSkKKwl7CisJCVJlbGVhc2VTeXNDYWNoZShwZXJUdXBsZSk7 CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09M VU1OKSwKKwkJCQkgZXJybXNnKCJjb2x1bW4gbmFtZSBcIiVzXCIgY29uZmxpY3RzIHdpdGgg YSBwZXJpb2QgbmFtZSIsCisJCQkJCQljb2xuYW1lKSkpOworCX0KKwogCS8qCiAJICogdGhp cyB0ZXN0IGlzIGRlbGliZXJhdGVseSBub3QgYXR0aXNkcm9wcGVkLWF3YXJlLCBzaW5jZSBp ZiBvbmUgdHJpZXMgdG8KIAkgKiBhZGQgYSBjb2x1bW4gbWF0Y2hpbmcgYSBkcm9wcGVkIGNv bHVtbiBuYW1lLCBpdCdzIGdvbm5hIGZhaWwgYW55d2F5LgpAQCAtNzQ0OCw2ICs3OTU5LDc2 IEBAIGNoZWNrX2Zvcl9jb2x1bW5fbmFtZV9jb2xsaXNpb24oUmVsYXRpb24gcmVsLCBjb25z dCBjaGFyICpjb2xuYW1lLAogCXJldHVybiB0cnVlOwogfQogCisvKgorICogSWYgYSBuZXcg cGVyaW9kIG5hbWUgd2lsbCBjb2xsaWRlIHdpdGggdGhlIG5hbWUgb2YgYW4gZXhpc3Rpbmcg Y29sdW1uIG9yCisgKiBwZXJpb2QgW2FuZCBpZl9ub3RfZXhpc3RzIGlzIGZhbHNlXSB0aGVu IGVycm9yIG91dCwgZWxzZSBkbyBub3RoaW5nLgorICoKKyAqIFNlZSBhbHNvIGNoZWNrX2Zv cl9jb2x1bW5fbmFtZV9jb2xsaXNpb24uCisgKi8KK3N0YXRpYyBib29sCitjaGVja19mb3Jf cGVyaW9kX25hbWVfY29sbGlzaW9uKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqcGVybmFt ZSwKKwkJCQkJCQkJYm9vbCBpZl9ub3RfZXhpc3RzKQoreworCUhlYXBUdXBsZQlhdHRUdXBs ZSwgcGVyVHVwbGU7CisJaW50CQkJYXR0bnVtOworCisJLyogVE9ETzogaW1wbGVtZW50IElG IFtOT1RdIEVYSVNUUyBmb3IgcGVyaW9kcyAqLworCUFzc2VydCghaWZfbm90X2V4aXN0cyk7 CisKKwkvKiBJZiB0aGVyZSBpcyBhbHJlYWR5IGEgcGVyaW9kIHdpdGggdGhpcyBuYW1lLCB0 aGVuIHdlJ3JlIGRvbmUuICovCisJcGVyVHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoUEVSSU9E TkFNRSwKKwkJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKFJlbGF0aW9uR2V0UmVsaWQocmVs KSksCisJCQkJCQkJICAgUG9pbnRlckdldERhdHVtKHBlcm5hbWUpKTsKKwlpZiAoSGVhcFR1 cGxlSXNWYWxpZChwZXJUdXBsZSkpCisJeworCQlpZiAoaWZfbm90X2V4aXN0cykKKwkJewor CQkJUmVsZWFzZVN5c0NhY2hlKHBlclR1cGxlKTsKKworCQkJZXJlcG9ydChOT1RJQ0UsCisJ CQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX0NPTFVNTiksCisJCQkJCSBlcnJtc2co InBlcmlvZCBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGFscmVhZHkgZXhpc3RzLCBza2lw cGluZyIsCisJCQkJCQkJcGVybmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkp KTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09MVU1OKSwKKwkJCQkgZXJybXNnKCJwZXJpb2Qg XCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsCisJCQkJCQlwZXJu YW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCX0KKworCS8qCisJICog dGhpcyB0ZXN0IGlzIGRlbGliZXJhdGVseSBub3QgYXR0aXNkcm9wcGVkLWF3YXJlLCBzaW5j ZSBpZiBvbmUgdHJpZXMgdG8KKwkgKiBhZGQgYSBjb2x1bW4gbWF0Y2hpbmcgYSBkcm9wcGVk IGNvbHVtbiBuYW1lLCBpdCdzIGdvbm5hIGZhaWwgYW55d2F5LgorCSAqLworCWF0dFR1cGxl ID0gU2VhcmNoU3lzQ2FjaGUyKEFUVE5BTUUsCisJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1 bShSZWxhdGlvbkdldFJlbGlkKHJlbCkpLAorCQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShw ZXJuYW1lKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQoYXR0VHVwbGUpKQorCXsKKwkJYXR0 bnVtID0gKChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKGF0dFR1cGxlKSktPmF0dG51 bTsKKwkJUmVsZWFzZVN5c0NhY2hlKGF0dFR1cGxlKTsKKworCQkvKgorCQkgKiBXZSB0aHJv dyBhIGRpZmZlcmVudCBlcnJvciBtZXNzYWdlIGZvciBjb25mbGljdHMgd2l0aCBzeXN0ZW0g Y29sdW1uCisJCSAqIG5hbWVzLCBzaW5jZSB0aGV5IGFyZSBub3JtYWxseSBub3Qgc2hvd24g YW5kIHRoZSB1c2VyIG1pZ2h0IG90aGVyd2lzZQorCQkgKiBiZSBjb25mdXNlZCBhYm91dCB0 aGUgcmVhc29uIGZvciB0aGUgY29uZmxpY3QuCisJCSAqLworCQlpZiAoYXR0bnVtIDw9IDAp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9D T0xVTU4pLAorCQkJCQkgZXJybXNnKCJwZXJpb2QgbmFtZSBcIiVzXCIgY29uZmxpY3RzIHdp dGggYSBzeXN0ZW0gY29sdW1uIG5hbWUiLAorCQkJCQkJCXBlcm5hbWUpKSk7CisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09MVU1OKSwKKwkJ CQkgZXJybXNnKCJwZXJpb2QgbmFtZSBcIiVzXCIgY29uZmxpY3RzIHdpdGggYSBjb2x1bW4g bmFtZSIsCisJCQkJCQlwZXJuYW1lKSkpOworCX0KKworCXJldHVybiB0cnVlOworfQorCiAv KgogICogSW5zdGFsbCBhIGNvbHVtbidzIGRlcGVuZGVuY3kgb24gaXRzIGRhdGF0eXBlLgog ICovCkBAIC04MDk5LDYgKzg2ODAsMTU1IEBAIEFURXhlY0Nvb2tlZENvbHVtbkRlZmF1bHQo UmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwKIAlyZXR1cm4gYWRkcmVzczsKIH0K IAorLyoKKyAqIEFMVEVSIFRBQkxFIEFERCBQRVJJT0QKKyAqCisgKiBSZXR1cm4gdGhlIGFk ZHJlc3Mgb2YgdGhlIHBlcmlvZC4KKyAqLworc3RhdGljIE9iamVjdEFkZHJlc3MKK0FURXhl Y0FkZFBlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlvZERlZiAqcGVyaW9kLCBBbHRlclRhYmxl VXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJUmVsYXRpb24JCWF0dHJlbGF0aW9uOwor CU9iamVjdEFkZHJlc3MJYWRkcmVzcyA9IEludmFsaWRPYmplY3RBZGRyZXNzOworCUNvbnN0 cmFpbnQJICAgKmNvbnN0cjsKKwlDb2x1bW5EZWYJICAgKnJhbmdlY29sOworCU9pZAkJCQlj b25vaWQsIHBlcmlvZG9pZDsKKwlMaXN0CQkgICAqY21kcyA9IE5JTDsKKwlBbHRlclRhYmxl Q21kICAqY21kOworCisJLyoKKwkgKiBQRVJJT0QgRk9SIFNZU1RFTV9USU1FIGlzIG5vdCB5 ZXQgaW1wbGVtZW50ZWQsIGJ1dCBtYWtlIHN1cmUgbm8gb25lIHVzZXMKKwkgKiB0aGUgbmFt ZS4KKwkgKi8KKwlpZiAoc3RyY21wKHBlcmlvZC0+cGVyaW9kbmFtZSwgInN5c3RlbV90aW1l IikgPT0gMCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygiUEVSSU9EIEZPUiBTWVNURU1f VElNRSBpcyBub3Qgc3VwcG9ydGVkIikpKTsKKworCS8qIFRoZSBwZXJpb2QgbmFtZSBtdXN0 IG5vdCBhbHJlYWR5IGV4aXN0ICovCisJKHZvaWQpIGNoZWNrX2Zvcl9wZXJpb2RfbmFtZV9j b2xsaXNpb24ocmVsLCBwZXJpb2QtPnBlcmlvZG5hbWUsIGZhbHNlKTsKKworCS8qIFBhcnNl IG9wdGlvbnMgKi8KKwl0cmFuc2Zvcm1QZXJpb2RPcHRpb25zKHBlcmlvZCk7CisKKwlhdHRy ZWxhdGlvbiA9IHRhYmxlX29wZW4oQXR0cmlidXRlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZl TG9jayk7CisJVmFsaWRhdGVQZXJpb2QocmVsLCBwZXJpb2QpOworCisJcGVyaW9kLT5ybmd0 eXBpZCA9IGNob29zZV9yYW5nZXR5cGVfZm9yX3BlcmlvZChwZXJpb2QpOworCisJLyogTWFr ZSB0aGUgQ0hFQ0sgY29uc3RyYWludCAqLworCWNvbnN0ciA9IG1ha2VfY29uc3RyYWludF9m b3JfcGVyaW9kKHJlbCwgcGVyaW9kKTsKKwljbWQgPSBtYWtlTm9kZShBbHRlclRhYmxlQ21k KTsKKwljbWQtPnN1YnR5cGUgPSBBVF9BZGRDb25zdHJhaW50OworCWNtZC0+ZGVmID0gKE5v ZGUgKikgY29uc3RyOworCWNtZHMgPSBsYXBwZW5kKGNtZHMsIGNtZCk7CisJQWx0ZXJUYWJs ZUludGVybmFsKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgY21kcywgdHJ1ZSwgY29udGV4dCk7 CisJY29ub2lkID0gZ2V0X3JlbGF0aW9uX2NvbnN0cmFpbnRfb2lkKFJlbGF0aW9uR2V0UmVs aWQocmVsKSwgcGVyaW9kLT5jb25zdHJhaW50bmFtZSwgZmFsc2UpOworCisJLyogTWFrZSB0 aGUgcmFuZ2UgY29sdW1uICovCisJcmFuZ2Vjb2wgPSBtYWtlX3JhbmdlX2NvbHVtbl9mb3Jf cGVyaW9kKHBlcmlvZCk7CisJY21kID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJY21k LT5zdWJ0eXBlID0gQVRfQWRkQ29sdW1uOworCWNtZC0+ZGVmID0gKE5vZGUgKikgcmFuZ2Vj b2w7CisJY21kLT5uYW1lID0gcGVyaW9kLT5wZXJpb2RuYW1lOworCWNtZC0+cmVjdXJzZSA9 IGZhbHNlOyAvKiBubywgbGV0IHRoZSBQRVJJT0QgcmVjdXJzZSBpbnN0ZWFkICovCisJQWx0 ZXJUYWJsZUludGVybmFsKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgbGlzdF9tYWtlMShjbWQp LCB0cnVlLCBjb250ZXh0KTsKKwlwZXJpb2QtPnJuZ2F0dG51bSA9IGdldF9hdHRudW0oUmVs YXRpb25HZXRSZWxpZChyZWwpLCBwZXJpb2QtPnBlcmlvZG5hbWUpOworCWlmIChwZXJpb2Qt PnJuZ2F0dG51bSA9PSBJbnZhbGlkQXR0ck51bWJlcikKKwkJZWxvZyhFUlJPUiwgIm1pc3Np bmcgYXR0cmlidXRlICVzIiwgcGVyaW9kLT5wZXJpb2RuYW1lKTsKKworCS8qIFNhdmUgdGhl IFBlcmlvZCAqLworCXBlcmlvZG9pZCA9IFN0b3JlUGVyaW9kKHJlbCwgcGVyaW9kLT5wZXJp b2RuYW1lLCBwZXJpb2QtPnN0YXJ0YXR0bnVtLCBwZXJpb2QtPmVuZGF0dG51bSwgcGVyaW9k LT5ybmdhdHRudW0sIGNvbm9pZCk7CisKKwlPYmplY3RBZGRyZXNzU2V0KGFkZHJlc3MsIFBl cmlvZFJlbGF0aW9uSWQsIHBlcmlvZG9pZCk7CisKKwl0YWJsZV9jbG9zZShhdHRyZWxhdGlv biwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1cm4gYWRkcmVzczsKK30KKworLyoKKyAq IEFMVEVSIFRBQkxFIERST1AgUEVSSU9ECisgKgorICogTGlrZSBEUk9QIENPTFVNTiwgd2Ug Y2FuJ3QgdXNlIHRoZSBub3JtYWwgQUxURVIgVEFCTEUgcmVjdXJzaW9uIG1lY2hhbmlzbS4K KyAqLworc3RhdGljIHZvaWQKK0FURXhlY0Ryb3BQZXJpb2QoUmVsYXRpb24gcmVsLCBjb25z dCBjaGFyICpwZXJpb2ROYW1lLAorCQkJCQkgRHJvcEJlaGF2aW9yIGJlaGF2aW9yLAorCQkJ CQkgYm9vbCByZWN1cnNlLCBib29sIHJlY3Vyc2luZywKKwkJCQkJIGJvb2wgbWlzc2luZ19v aykKK3sKKwlSZWxhdGlvbglwZ19wZXJpb2Q7CisJRm9ybV9wZ19wZXJpb2QgcGVyaW9kOwor CVN5c1NjYW5EZXNjIHNjYW47CisJU2NhbktleURhdGEga2V5OworCUhlYXBUdXBsZQl0dXBs ZTsKKwlib29sCQlmb3VuZCA9IGZhbHNlOworCisJLyogQXQgdG9wIGxldmVsLCBwZXJtaXNz aW9uIGNoZWNrIHdhcyBkb25lIGluIEFUUHJlcENtZCwgZWxzZSBkbyBpdCAqLworCWlmIChy ZWN1cnNpbmcpCisJCUFUU2ltcGxlUGVybWlzc2lvbnMoQVRfRHJvcFBlcmlvZCwgcmVsLCBB VFRfVEFCTEUpOworCisJcGdfcGVyaW9kID0gdGFibGVfb3BlbihQZXJpb2RSZWxhdGlvbklk LCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCS8qCisJICogRmluZCBhbmQgZHJvcCB0aGUgdGFy Z2V0IHBlcmlvZAorCSAqLworCVNjYW5LZXlJbml0KCZrZXksCisJCQkJQW51bV9wZ19wZXJp b2RfcGVycmVsaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJ CU9iamVjdElkR2V0RGF0dW0oUmVsYXRpb25HZXRSZWxpZChyZWwpKSk7CisJc2NhbiA9IHN5 c3RhYmxlX2JlZ2luc2NhbihwZ19wZXJpb2QsIFBlcmlvZFJlbGlkTmFtZUluZGV4SWQsCisJ CQkJCQkJICB0cnVlLCBOVUxMLCAxLCAma2V5KTsKKworCXdoaWxlIChIZWFwVHVwbGVJc1Zh bGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJeworCQlPYmplY3RBZGRy ZXNzIHBlcm9iajsKKworCQlwZXJpb2QgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVCh0 dXBsZSk7CisKKwkJaWYgKHN0cmNtcChOYW1lU3RyKHBlcmlvZC0+cGVybmFtZSksIHBlcmlv ZE5hbWUpICE9IDApCisJCQljb250aW51ZTsKKworCQkvKgorCQkgKiBQZXJmb3JtIHRoZSBh Y3R1YWwgcGVyaW9kIGRlbGV0aW9uCisJCSAqLworCQlwZXJvYmouY2xhc3NJZCA9IFBlcmlv ZFJlbGF0aW9uSWQ7CisJCXBlcm9iai5vYmplY3RJZCA9IHBlcmlvZC0+b2lkOworCQlwZXJv Ymoub2JqZWN0U3ViSWQgPSAwOworCisJCXBlcmZvcm1EZWxldGlvbigmcGVyb2JqLCBiZWhh dmlvciwgMCk7CisKKwkJZm91bmQgPSB0cnVlOworCisJCS8qIHBlcmlvZCBmb3VuZCBhbmQg ZHJvcHBlZCAtLSBubyBuZWVkIHRvIGtlZXAgbG9vcGluZyAqLworCQlicmVhazsKKwl9CisK KwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCisJaWYgKCFmb3VuZCkKKwl7CisJCWlmICgh bWlzc2luZ19vaykKKwkJeworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJS Q09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygicGVyaW9kIFwiJXNcIiBv biByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJCXBlcmlvZE5hbWUs IFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisJCX0KKwkJZWxzZQorCQl7CisJ CQllcmVwb3J0KE5PVElDRSwKKwkJCQkJKGVycm1zZygicGVyaW9kIFwiJXNcIiBvbiByZWxh dGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QsIHNraXBwaW5nIiwKKwkJCQkJCQlwZXJpb2RO YW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCQkJdGFibGVfY2xvc2Uo cGdfcGVyaW9kLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwkJCXJldHVybjsKKwkJfQorCX0KKwor CXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwgUm93RXhjbHVzaXZlTG9jayk7Cit9CisKIC8qCiAg KiBBTFRFUiBUQUJMRSBBTFRFUiBDT0xVTU4gQUREIElERU5USVRZCiAgKgpAQCAtMTQxNzAs NiArMTQ5MDAsMTYgQEAgUmVtZW1iZXJBbGxEZXBlbmRlbnRGb3JSZWJ1aWxkaW5nKEFsdGVy ZWRUYWJsZUluZm8gKnRhYiwgQWx0ZXJUYWJsZVR5cGUgc3VidHlwZSwKIAkJCQlSZW1lbWJl ckNvbnN0cmFpbnRGb3JSZWJ1aWxkaW5nKGZvdW5kT2JqZWN0Lm9iamVjdElkLCB0YWIpOwog CQkJCWJyZWFrOwogCisJCQljYXNlIE9DTEFTU19QRVJJT0Q6CisJCQkJaWYgKHN1YnR5cGUg PT0gQVRfQWx0ZXJDb2x1bW5UeXBlKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCQkgZXJybXNn KCJjYW5ub3QgYWx0ZXIgdHlwZSBvZiBhIGNvbHVtbiB1c2VkIGJ5IGEgcGVyaW9kIiksCisJ CQkJCQkJIGVycmRldGFpbCgiJXMgZGVwZW5kcyBvbiBjb2x1bW4gXCIlc1wiIiwKKwkJCQkJ CQkJCSAgIGdldE9iamVjdERlc2NyaXB0aW9uKCZmb3VuZE9iamVjdCwgZmFsc2UpLAorCQkJ CQkJCQkJICAgY29sTmFtZSkpKTsKKwkJCQlicmVhazsKKwogCQkJY2FzZSBPQ0xBU1NfUkVX UklURToKIAkJCQkvKiBYWFggc29tZWRheSBzZWUgaWYgd2UgY2FuIGNvcGUgd2l0aCByZXZp c2luZyB2aWV3cyAqLwogCQkJCWlmIChzdWJ0eXBlID09IEFUX0FsdGVyQ29sdW1uVHlwZSkK QEAgLTE0MjM0LDYgKzE0OTc0LDE1IEBAIFJlbWVtYmVyQWxsRGVwZW5kZW50Rm9yUmVidWls ZGluZyhBbHRlcmVkVGFibGVJbmZvICp0YWIsIEFsdGVyVGFibGVUeXBlIHN1YnR5cGUsCiAJ CQkJCX0KIAkJCQkJZWxzZQogCQkJCQl7CisJCQkJCQkvKgorCQkJCQkJICogSWYgdGhpcyBH RU5FUkFURUQgY29sdW1uIGlzIGltcGxlbWVudGluZyBhIFBFUklPRCwKKwkJCQkJCSAqIGtl ZXAgZ29pbmcgYW5kIHdlJ2xsIGZhaWwgZnJvbSB0aGUgUEVSSU9EIGluc3RlYWQuCisJCQkJ CQkgKiBUaGlzIGdpdmVzIGEgbW9yZSBjbGVhciBlcnJvciBtZXNzYWdlLgorCQkJCQkJICov CisJCQkJCQlCaXRtYXBzZXQgKnBlcmlvZGF0dHMgPSBnZXRfcGVyaW9kX2F0dG5vcyhSZWxh dGlvbkdldFJlbGlkKHJlbCkpOworCQkJCQkJaWYgKGJtc19pc19tZW1iZXIoY29sLm9iamVj dFN1YklkLCBwZXJpb2RhdHRzKSkKKwkJCQkJCQlicmVhazsKKwogCQkJCQkJLyoKIAkJCQkJ CSAqIFRoaXMgbXVzdCBiZSBhIHJlZmVyZW5jZSBmcm9tIHRoZSBleHByZXNzaW9uIG9mIGEK IAkJCQkJCSAqIGdlbmVyYXRlZCBjb2x1bW4gZWxzZXdoZXJlIGluIHRoZSBzYW1lIHRhYmxl LgpAQCAtMTYwNDYsNyArMTY3OTUsNyBAQCBBbHRlclRhYmxlTW92ZUFsbChBbHRlclRhYmxl TW92ZUFsbFN0bXQgKnN0bXQpCiAKIAkJRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZVN0YXJ0KChO b2RlICopIHN0bXQpOwogCQkvKiBPSUQgaXMgc2V0IGJ5IEFsdGVyVGFibGVJbnRlcm5hbCAq LwotCQlBbHRlclRhYmxlSW50ZXJuYWwobGZpcnN0X29pZChsKSwgY21kcywgZmFsc2UpOwor CQlBbHRlclRhYmxlSW50ZXJuYWwobGZpcnN0X29pZChsKSwgY21kcywgZmFsc2UsIE5VTEwp OwogCQlFdmVudFRyaWdnZXJBbHRlclRhYmxlRW5kKCk7CiAJfQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy92aWV3LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92aWV3 LmMKaW5kZXggZGNlODk4Yzc1MWMuLjU0YmRiNGJkZWFmIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy92aWV3LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmlldy5j CkBAIC0xNjksNyArMTY5LDcgQEAgRGVmaW5lVmlydHVhbFJlbGF0aW9uKFJhbmdlVmFyICpy ZWxhdGlvbiwgTGlzdCAqdGxpc3QsIGJvb2wgcmVwbGFjZSwKIAkJCX0KIAogCQkJLyogRXZl bnRUcmlnZ2VyQWx0ZXJUYWJsZVN0YXJ0IGNhbGxlZCBieSBQcm9jZXNzVXRpbGl0eVNsb3cg Ki8KLQkJCUFsdGVyVGFibGVJbnRlcm5hbCh2aWV3T2lkLCBhdGNtZHMsIHRydWUpOworCQkJ QWx0ZXJUYWJsZUludGVybmFsKHZpZXdPaWQsIGF0Y21kcywgdHJ1ZSwgTlVMTCk7CiAKIAkJ CS8qIE1ha2UgdGhlIG5ldyB2aWV3IGNvbHVtbnMgdmlzaWJsZSAqLwogCQkJQ29tbWFuZENv dW50ZXJJbmNyZW1lbnQoKTsKQEAgLTIwMSw3ICsyMDEsNyBAQCBEZWZpbmVWaXJ0dWFsUmVs YXRpb24oUmFuZ2VWYXIgKnJlbGF0aW9uLCBMaXN0ICp0bGlzdCwgYm9vbCByZXBsYWNlLAog CQlhdGNtZHMgPSBsaXN0X21ha2UxKGF0Y21kKTsKIAogCQkvKiBFdmVudFRyaWdnZXJBbHRl clRhYmxlU3RhcnQgY2FsbGVkIGJ5IFByb2Nlc3NVdGlsaXR5U2xvdyAqLwotCQlBbHRlclRh YmxlSW50ZXJuYWwodmlld09pZCwgYXRjbWRzLCB0cnVlKTsKKwkJQWx0ZXJUYWJsZUludGVy bmFsKHZpZXdPaWQsIGF0Y21kcywgdHJ1ZSwgTlVMTCk7CiAKIAkJLyoKIAkJICogVGhlcmUg aXMgdmVyeSBsaXR0bGUgdG8gZG8gaGVyZSB0byB1cGRhdGUgdGhlIHZpZXcncyBkZXBlbmRl bmNpZXMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyBiL3Ny Yy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4IDZjMTk4NDRlMTdlLi42NzZlZDg1 ZDIwMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKKysrIGIv c3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTE2MzksNiArMTYzOSw5IEBAIGV4 cHJMb2NhdGlvbihjb25zdCBOb2RlICpleHByKQogCQljYXNlIFRfQ29uc3RyYWludDoKIAkJ CWxvYyA9ICgoY29uc3QgQ29uc3RyYWludCAqKSBleHByKS0+bG9jYXRpb247CiAJCQlicmVh azsKKwkJY2FzZSBUX1BlcmlvZERlZjoKKwkJCWxvYyA9ICgoY29uc3QgUGVyaW9kRGVmICop IGV4cHIpLT5sb2NhdGlvbjsKKwkJCWJyZWFrOwogCQljYXNlIFRfRnVuY3Rpb25QYXJhbWV0 ZXI6CiAJCQkvKiBqdXN0IHVzZSB0eXBlbmFtZSdzIGxvY2F0aW9uICovCiAJCQlsb2MgPSBl eHByTG9jYXRpb24oKE5vZGUgKikgKChjb25zdCBGdW5jdGlvblBhcmFtZXRlciAqKSBleHBy KS0+YXJnVHlwZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBjODViOGIwOTRlYy4uYTBhNmY1Njgx ZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNTk1LDcgKzU5NSw3IEBAIHN0YXRpYyBOb2RlICpt YWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBO b2RlICpxdWVyeSk7CiAldHlwZSA8a2V5d29yZD4gY29sX25hbWVfa2V5d29yZCByZXNlcnZl ZF9rZXl3b3JkCiAldHlwZSA8a2V5d29yZD4gYmFyZV9sYWJlbF9rZXl3b3JkCiAKLSV0eXBl IDxub2RlPglUYWJsZUNvbnN0cmFpbnQgVGFibGVMaWtlQ2xhdXNlCisldHlwZSA8bm9kZT4J VGFibGVDb25zdHJhaW50IFRhYmxlTGlrZUNsYXVzZSBUYWJsZVBlcmlvZAogJXR5cGUgPGl2 YWw+CVRhYmxlTGlrZU9wdGlvbkxpc3QgVGFibGVMaWtlT3B0aW9uCiAldHlwZSA8c3RyPgkJ Y29sdW1uX2NvbXByZXNzaW9uIG9wdF9jb2x1bW5fY29tcHJlc3Npb24gY29sdW1uX3N0b3Jh Z2Ugb3B0X2NvbHVtbl9zdG9yYWdlCiAldHlwZSA8bGlzdD4JQ29sUXVhbExpc3QKQEAgLTI2 MjUsNiArMjYyNSwyNCBAQCBhbHRlcl90YWJsZV9jbWQ6CiAJCQkJCW4tPmRlZiA9IChOb2Rl ICopICQ0OwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQorCQkJLyogQUxURVIgVEFC TEUgPG5hbWU+IEFERCBQRVJJT0QgRk9SIDxuYW1lPiAoPG5hbWU+LCA8bmFtZT4pICovCisJ CQl8IEFERF9QIFRhYmxlUGVyaW9kCisJCQkJeworCQkJCQlBbHRlclRhYmxlQ21kICpuID0g bWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJCQkJCW4tPnN1YnR5cGUgPSBBVF9BZGRQZXJp b2Q7CisJCQkJCW4tPmRlZiA9ICQyOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJ CQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gRFJPUCBQRVJJT0QgRk9SIDxuYW1lPiBbUkVTVFJJ Q1R8Q0FTQ0FERV0gKi8KKwkJCXwgRFJPUCBQRVJJT0QgRk9SIG5hbWUgb3B0X2Ryb3BfYmVo YXZpb3IKKwkJCQl7CisJCQkJCUFsdGVyVGFibGVDbWQgKm4gPSBtYWtlTm9kZShBbHRlclRh YmxlQ21kKTsKKwkJCQkJbi0+c3VidHlwZSA9IEFUX0Ryb3BQZXJpb2Q7CisJCQkJCW4tPm5h bWUgPSAkNDsKKwkJCQkJbi0+YmVoYXZpb3IgPSAkNTsKKwkJCQkJbi0+bWlzc2luZ19vayA9 IGZhbHNlOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CiAJCQkvKiBBTFRFUiBUQUJM RSA8bmFtZT4gQUREIENPTlNUUkFJTlQgLi4uICovCiAJCQl8IEFERF9QIFRhYmxlQ29uc3Ry YWludAogCQkJCXsKQEAgLTM3NDksOCArMzc2NywxMCBAQCBUYWJsZUVsZW1lbnQ6CiAJCQlj b2x1bW5EZWYJCQkJCQkJeyAkJCA9ICQxOyB9CiAJCQl8IFRhYmxlTGlrZUNsYXVzZQkJCQkJ eyAkJCA9ICQxOyB9CiAJCQl8IFRhYmxlQ29uc3RyYWludAkJCQkJeyAkJCA9ICQxOyB9CisJ CQl8IFRhYmxlUGVyaW9kCQkJCQkJeyAkJCA9ICQxOyB9CiAJCTsKIAorCiBUeXBlZFRhYmxl RWxlbWVudDoKIAkJCWNvbHVtbk9wdGlvbnMJCQkJCQl7ICQkID0gJDE7IH0KIAkJCXwgVGFi bGVDb25zdHJhaW50CQkJCQl7ICQkID0gJDE7IH0KQEAgLTQxMDIsNiArNDEyMiwxOSBAQCBU YWJsZUxpa2VPcHRpb246CiAJCTsKIAogCitUYWJsZVBlcmlvZDoKKwkJCVBFUklPRCBGT1Ig bmFtZSAnKCcgbmFtZSAnLCcgbmFtZSAnKScgb3B0X2RlZmluaXRpb24KKwkJCQl7CisJCQkJ CVBlcmlvZERlZiAqbiA9IG1ha2VOb2RlKFBlcmlvZERlZik7CisJCQkJCW4tPnBlcmlvZG5h bWUgPSAkMzsKKwkJCQkJbi0+c3RhcnRjb2xuYW1lID0gJDU7CisJCQkJCW4tPmVuZGNvbG5h bWUgPSAkNzsKKwkJCQkJbi0+b3B0aW9ucyA9ICQ5OworCQkJCQluLT5sb2NhdGlvbiA9IEAx OworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQk7CisKIC8qIENvbnN0cmFpbnRF bGVtIHNwZWNpZmllcyBjb25zdHJhaW50IHN5bnRheCB3aGljaCBpcyBub3QgZW1iZWRkZWQg aW50bwogICoJYSBjb2x1bW4gZGVmaW5pdGlvbi4gQ29sQ29uc3RyYWludEVsZW0gc3BlY2lm aWVzIHRoZSBlbWJlZGRlZCBmb3JtLgogICogLSB0aG9tYXMgMTk5Ny0xMi0wMwpAQCAtNzE2 MCw2ICs3MTkzLDE0IEBAIENvbW1lbnRTdG10OgogCQkJCQluLT5jb21tZW50ID0gJDk7CiAJ CQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCQl8IENPTU1FTlQgT04gUEVSSU9EIGFu eV9uYW1lIElTIGNvbW1lbnRfdGV4dAorCQkJCXsKKwkJCQkJQ29tbWVudFN0bXQgKm4gPSBt YWtlTm9kZShDb21tZW50U3RtdCk7CisJCQkJCW4tPm9ianR5cGUgPSBPQkpFQ1RfUEVSSU9E OworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAqKSAkNDsKKwkJCQkJbi0+Y29tbWVudCA9ICQ2 OworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQogCQkJfCBDT01NRU5UIE9OIExBUkdF X1AgT0JKRUNUX1AgTnVtZXJpY09ubHkgSVMgY29tbWVudF90ZXh0CiAJCQkJewogCQkJCQlD b21tZW50U3RtdCAqbiA9IG1ha2VOb2RlKENvbW1lbnRTdG10KTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3JlbGF0aW9uLmMKaW5kZXggMzRhMGVjNTkwMTkuLjE3ZTg1YTdjODNiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYwpAQCAtMjIsNiArMjIsNyBAQAogI2lu Y2x1ZGUgImFjY2Vzcy90YWJsZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvaGVhcC5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJp b2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJmdW5jYXBp LmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCkBAIC0zMTg5LDYgKzMxOTAsNyBA QCBleHBhbmROU0l0ZW1BdHRycyhQYXJzZVN0YXRlICpwc3RhdGUsIFBhcnNlTmFtZXNwYWNl SXRlbSAqbnNpdGVtLAogCQkJCSAgaW50IHN1YmxldmVsc191cCwgYm9vbCByZXF1aXJlX2Nv bF9wcml2cywgaW50IGxvY2F0aW9uKQogewogCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IG5zaXRl bS0+cF9ydGU7CisJQml0bWFwc2V0ICAqcGVyaW9kYXR0cyA9IE5VTEw7CiAJUlRFUGVybWlz c2lvbkluZm8gKnBlcm1pbmZvID0gbnNpdGVtLT5wX3Blcm1pbmZvOwogCUxpc3QJICAgKm5h bWVzLAogCQkJICAgKnZhcnM7CkBAIC0zMjEyLDEyICszMjE0LDIwIEBAIGV4cGFuZE5TSXRl bUF0dHJzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFyc2VOYW1lc3BhY2VJdGVtICpuc2l0ZW0s CiAJCXBlcm1pbmZvLT5yZXF1aXJlZFBlcm1zIHw9IEFDTF9TRUxFQ1Q7CiAJfQogCisJLyog R2V0IFBFUklPRCBjb2x1bW5zIHRvIGV4Y2x1ZGUgKi8KKwlpZiAocnRlLT5ydGVraW5kID09 IFJURV9SRUxBVElPTikKKwkJcGVyaW9kYXR0cyA9IGdldF9wZXJpb2RfYXR0bm9zKHJ0ZS0+ cmVsaWQpOworCiAJZm9yYm90aChuYW1lLCBuYW1lcywgdmFyLCB2YXJzKQogCXsKIAkJY2hh cgkgICAqbGFiZWwgPSBzdHJWYWwobGZpcnN0KG5hbWUpKTsKIAkJVmFyCQkgICAqdmFybm9k ZSA9IChWYXIgKikgbGZpcnN0KHZhcik7CiAJCVRhcmdldEVudHJ5ICp0ZTsKIAorCQkvKiBJ ZiB0aGlzIGNvbHVtbiBpcyBmcm9tIGEgUEVSSU9ELCBza2lwIGl0ICovCisJCWlmIChibXNf aXNfbWVtYmVyKHBzdGF0ZS0+cF9uZXh0X3Jlc25vLCBwZXJpb2RhdHRzKSkKKwkJCQljb250 aW51ZTsKKwogCQl0ZSA9IG1ha2VUYXJnZXRFbnRyeSgoRXhwciAqKSB2YXJub2RlLAogCQkJ CQkJCSAoQXR0ck51bWJlcikgcHN0YXRlLT5wX25leHRfcmVzbm8rKywKIAkJCQkJCQkgbGFi ZWwsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRleCA1NmFjNGY1MTZlYS4u NzA4Mzk4NGU2ZDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGls Y21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtMzcs NiArMzcsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29uc3RyYWludC5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0 b3IuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfc3RhdGlzdGljX2V4dC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgog I2luY2x1ZGUgImNvbW1hbmRzL2NvbW1lbnQuaCIKQEAgLTgwLDYgKzgxLDcgQEAgdHlwZWRl ZiBzdHJ1Y3QKIAlib29sCQlpc2ZvcmVpZ247CQkvKiB0cnVlIGlmIENSRUFURS9BTFRFUiBG T1JFSUdOIFRBQkxFICovCiAJYm9vbAkJaXNhbHRlcjsJCS8qIHRydWUgaWYgYWx0ZXJpbmcg ZXhpc3RpbmcgdGFibGUgKi8KIAlMaXN0CSAgICpjb2x1bW5zOwkJLyogQ29sdW1uRGVmIGl0 ZW1zICovCisJTGlzdAkgICAqcGVyaW9kczsJCS8qIFBlcmlvZERlZiBpdGVtcyAqLwogCUxp c3QJICAgKmNrY29uc3RyYWludHM7CS8qIENIRUNLIGNvbnN0cmFpbnRzICovCiAJTGlzdAkg ICAqbm5jb25zdHJhaW50czsJLyogTk9UIE5VTEwgY29uc3RyYWludHMgKi8KIAlMaXN0CSAg ICpma2NvbnN0cmFpbnRzOwkvKiBGT1JFSUdOIEtFWSBjb25zdHJhaW50cyAqLwpAQCAtMTEx LDYgKzExMyw4IEBAIHR5cGVkZWYgc3RydWN0CiAKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUNv bHVtbkRlZmluaXRpb24oQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwKIAkJCQkJCQkJCSAgQ29s dW1uRGVmICpjb2x1bW4pOworc3RhdGljIHZvaWQgdHJhbnNmb3JtVGFibGVQZXJpb2QoQ3Jl YXRlU3RtdENvbnRleHQgKmN4dCwKKwkJCQkJCQkJIFBlcmlvZERlZiAqcGVyaW9kKTsKIHN0 YXRpYyB2b2lkIHRyYW5zZm9ybVRhYmxlQ29uc3RyYWludChDcmVhdGVTdG10Q29udGV4dCAq Y3h0LAogCQkJCQkJCQkJIENvbnN0cmFpbnQgKmNvbnN0cmFpbnQpOwogc3RhdGljIHZvaWQg dHJhbnNmb3JtVGFibGVMaWtlQ2xhdXNlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsCkBAIC0y NDAsNiArMjQ0LDcgQEAgdHJhbnNmb3JtQ3JlYXRlU3RtdChDcmVhdGVTdG10ICpzdG10LCBj b25zdCBjaGFyICpxdWVyeVN0cmluZykKIAljeHQuaW5oUmVsYXRpb25zID0gc3RtdC0+aW5o UmVsYXRpb25zOwogCWN4dC5pc2FsdGVyID0gZmFsc2U7CiAJY3h0LmNvbHVtbnMgPSBOSUw7 CisJY3h0LnBlcmlvZHMgPSBOSUw7CiAJY3h0LmNrY29uc3RyYWludHMgPSBOSUw7CiAJY3h0 Lm5uY29uc3RyYWludHMgPSBOSUw7CiAJY3h0LmZrY29uc3RyYWludHMgPSBOSUw7CkBAIC0y ODAsNiArMjg1LDEwIEBAIHRyYW5zZm9ybUNyZWF0ZVN0bXQoQ3JlYXRlU3RtdCAqc3RtdCwg Y29uc3QgY2hhciAqcXVlcnlTdHJpbmcpCiAJCQkJdHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlv bigmY3h0LCAoQ29sdW1uRGVmICopIGVsZW1lbnQpOwogCQkJCWJyZWFrOwogCisJCQljYXNl IFRfUGVyaW9kRGVmOgorCQkJCXRyYW5zZm9ybVRhYmxlUGVyaW9kKCZjeHQsIChQZXJpb2RE ZWYgKikgZWxlbWVudCk7CisJCQkJYnJlYWs7CisKIAkJCWNhc2UgVF9Db25zdHJhaW50Ogog CQkJCXRyYW5zZm9ybVRhYmxlQ29uc3RyYWludCgmY3h0LCAoQ29uc3RyYWludCAqKSBlbGVt ZW50KTsKIAkJCQlicmVhazsKQEAgLTM0Nyw2ICszNTYsNyBAQCB0cmFuc2Zvcm1DcmVhdGVT dG10KENyZWF0ZVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKQogCSAqIE91 dHB1dCByZXN1bHRzLgogCSAqLwogCXN0bXQtPnRhYmxlRWx0cyA9IGN4dC5jb2x1bW5zOwor CXN0bXQtPnBlcmlvZHMgPSBjeHQucGVyaW9kczsKIAlzdG10LT5jb25zdHJhaW50cyA9IGN4 dC5ja2NvbnN0cmFpbnRzOwogCXN0bXQtPm5uY29uc3RyYWludHMgPSBjeHQubm5jb25zdHJh aW50czsKIApAQCAtOTEzLDYgKzkyMywxMTMgQEAgdHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlv bihDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBDb2x1bW5EZWYgKmNvbHVtbikKIAl9CiB9CiAK K3ZvaWQKK3RyYW5zZm9ybVBlcmlvZE9wdGlvbnMoUGVyaW9kRGVmICpwZXJpb2QpCit7CisJ TGlzdENlbGwgICAqb3B0aW9uOworCURlZkVsZW0JICAgKmRjb25zdHJhaW50bmFtZSA9IE5V TEw7CisJRGVmRWxlbQkgICAqZHJhbmdldHlwZW5hbWUgPSBOVUxMOworCisJZm9yZWFjaChv cHRpb24sIHBlcmlvZC0+b3B0aW9ucykKKwl7CisJCURlZkVsZW0gICAgKmRlZmVsID0gKERl ZkVsZW0gKikgbGZpcnN0KG9wdGlvbik7CisKKwkJaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFt ZSwgImNoZWNrX2NvbnN0cmFpbnRfbmFtZSIpID09IDApCisJCXsKKwkJCWlmIChkY29uc3Ry YWludG5hbWUpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFu dCBvcHRpb25zIikpKTsKKwkJCWRjb25zdHJhaW50bmFtZSA9IGRlZmVsOworCQl9CisJCWVs c2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInJhbmdldHlwZSIpID09IDApCisJCXsK KwkJCWlmIChkcmFuZ2V0eXBlbmFtZSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJIGVycm1zZygiY29uZmxpY3Rp bmcgb3IgcmVkdW5kYW50IG9wdGlvbnMiKSkpOworCQkJZHJhbmdldHlwZW5hbWUgPSBkZWZl bDsKKwkJfQorCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJD T0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCSBlcnJtc2coIm9wdGlvbiBcIiVzXCIgbm90IHJl Y29nbml6ZWQiLCBkZWZlbC0+ZGVmbmFtZSkpKTsKKwl9CisKKwlpZiAoZGNvbnN0cmFpbnRu YW1lICE9IE5VTEwpCisJCXBlcmlvZC0+Y29uc3RyYWludG5hbWUgPSBkZWZHZXRTdHJpbmco ZGNvbnN0cmFpbnRuYW1lKTsKKwllbHNlCisJCXBlcmlvZC0+Y29uc3RyYWludG5hbWUgPSBO VUxMOworCisJaWYgKGRyYW5nZXR5cGVuYW1lICE9IE5VTEwpCisJCXBlcmlvZC0+cmFuZ2V0 eXBlbmFtZSA9IGRlZkdldFN0cmluZyhkcmFuZ2V0eXBlbmFtZSk7CisJZWxzZQorCQlwZXJp b2QtPnJhbmdldHlwZW5hbWUgPSBOVUxMOworfQorCisvKgorICogdHJhbnNmb3JtVGFibGVQ ZXJpb2QKKyAqCQl0cmFuc2Zvcm0gYSBQZXJpb2REZWYgbm9kZSB3aXRoaW4gQ1JFQVRFIFRB QkxFIG9yIEFMVEVSIFRBQkxFCisgKgkJVE9ETzogRG9lcyBBTFRFUiBUQUJMRSByZWFsbHkg Y2FsbCB1cz8/IEl0IGRvZXNuJ3Qgc2VlbSBsaWtlIGl0IGRvZXMuIE1heWJlIGl0IHNob3Vs ZC4gRGlkIGl0IGluIFZpaydzIG9yaWdpbmFsIHBhdGNoPworICovCitzdGF0aWMgdm9pZAor dHJhbnNmb3JtVGFibGVQZXJpb2QoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGVyaW9kRGVm ICpwZXJpb2QpCit7CisJLy8gT2lkCQkJY29sdHlwaWQ7CisJLy8gQ29sdW1uRGVmICAqY29s OworCS8vIExpc3RDZWxsICAgKmNvbHVtbnM7CisKKwlpZiAoc3RyY21wKHBlcmlvZC0+cGVy aW9kbmFtZSwgInN5c3RlbV90aW1lIikgPT0gMCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1z ZygiUEVSSU9EIEZPUiBTWVNURU1fVElNRSBpcyBub3Qgc3VwcG9ydGVkIiksCisJCQkJCSBw YXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsCisJCQkJCQkJCQkJcGVyaW9kLT5sb2Nh dGlvbikpKTsKKworCWlmIChzdHJjbXAocGVyaW9kLT5zdGFydGNvbG5hbWUsIHBlcmlvZC0+ ZW5kY29sbmFtZSkgPT0gMCkKKwkJZXJlcG9ydChFUlJPUiwgKGVycm1zZygiY29sdW1uIFwi JXNcIiBjYW4ndCBiZSB0aGUgc3RhcnQgYW5kIGVuZCBjb2x1bW4gZm9yIHBlcmlvZCBcIiVz XCIiLAorCQkJCQkJcGVyaW9kLT5zdGFydGNvbG5hbWUsIHBlcmlvZC0+cGVyaW9kbmFtZSkp KTsKKworCS8qCisJICogRGV0ZXJtaW5lIHRoZSBjb2x1bW4gaW5mbyBhbmQgcmFuZ2UgdHlw ZSBzbyB0aGF0IHRyYW5zZm9ybUluZGV4Q29uc3RyYWludHMKKwkgKiBrbm93cyBob3cgdG8g Y3JlYXRlIFBSSU1BUlkgS0VZL1VOSVFVRSBjb25zdHJhaW50cyB1c2luZyB0aGlzIFBFUklP RC4KKwkgKi8KKwl0cmFuc2Zvcm1QZXJpb2RPcHRpb25zKHBlcmlvZCk7CisKKwkvKgorCSAq IEZpbmQgYSBzdWl0YWJsZSByYW5nZSB0eXBlIGZvciBvcGVyYXRpb25zIGludm9sdmluZyB0 aGlzIHBlcmlvZC4KKwkgKiBVc2UgdGhlIHJhbmdldHlwZSBvcHRpb24gaWYgcHJvdmlkZWQs IG90aGVyd2lzZSB0cnkgdG8gZmluZCBhCisJICogbm9uLWFtYmlndW91cyBleGlzdGluZyB0 eXBlLgorCSAqLworCisjaWZkZWYgYXNkc2RmYQorCS8qIEZpcnN0IGZpbmQgb3V0IHRoZSB0 eXBlIG9mIHRoZSBwZXJpb2QncyBjb2x1bW5zICovCisJLy8gVE9ETzogSSdtIGRvaW5nIHRo aXMgaW4gRGVmaW5lUmVsYXRpb24gbm93LAorCS8vIHdoaWNoIHNlZW1zIGxpa2UgYSBiZXR0 ZXIgcGxhY2Ugc2luY2UgaXQga25vd3MgYWJvdXQgaW5oZXJpdGVkIGNvbHVtbnMuCisJcGVy aW9kLT5jb2x0eXBpZCA9IEludmFsaWRPaWQ7CisJcGVyaW9kLT5ybmd0eXBpZCA9IEludmFs aWRPaWQ7CisJZm9yZWFjaCAoY29sdW1ucywgY3h0LT5jb2x1bW5zKQorCXsKKwkJY29sID0g KENvbHVtbkRlZiAqKSBsZmlyc3QoY29sdW1ucyk7CisJCWlmIChzdHJjbXAoY29sLT5jb2xu YW1lLCBwZXJpb2QtPnN0YXJ0Y29sbmFtZSkgPT0gMCkKKwkJeworCQkJY29sdHlwaWQgPSB0 eXBlbmFtZVR5cGVJZChjeHQtPnBzdGF0ZSwgY29sLT50eXBlTmFtZSk7CisJCQlicmVhazsK KwkJfQorCX0KKwlpZiAoY29sdHlwaWQgPT0gSW52YWxpZE9pZCkKKwkJZXJlcG9ydChFUlJP UiwgKGVycm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3Qg ZXhpc3QiLAorCQkJCQkJcGVyaW9kLT5zdGFydGNvbG5hbWUsIGN4dC0+cmVsYXRpb24tPnJl bG5hbWUpKSk7CisKKwlwZXJpb2QtPmNvbHR5cGlkID0gY29sdHlwaWQ7CisKKwkvKiBOb3cg bWFrZSBzdXJlIGl0IG1hdGNoZXMgcmFuZ2V0eXBlbmFtZSBvciB3ZSBjYW4gZmluZCBhIG1h dGNoaW5nIHJhbmdlICovCisJcGVyaW9kLT5ybmd0eXBpZCA9IGNob29zZV9yYW5nZXR5cGVf Zm9yX3BlcmlvZChwZXJpb2QpOworI2VuZGlmCisKKwljeHQtPnBlcmlvZHMgPSBsYXBwZW5k KGN4dC0+cGVyaW9kcywgcGVyaW9kKTsKK30KKwogLyoKICAqIHRyYW5zZm9ybVRhYmxlQ29u c3RyYWludAogICoJCXRyYW5zZm9ybSBhIENvbnN0cmFpbnQgbm9kZSB3aXRoaW4gQ1JFQVRF IFRBQkxFIG9yIEFMVEVSIFRBQkxFCkBAIC0xMDAzLDYgKzExMjAsNyBAQCB0cmFuc2Zvcm1U YWJsZUxpa2VDbGF1c2UoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgVGFibGVMaWtlQ2xhdXNl ICp0YWJsZV9saWtlX2NsYQogCUF0dHJOdW1iZXIJcGFyZW50X2F0dG5vOwogCVJlbGF0aW9u CXJlbGF0aW9uOwogCVR1cGxlRGVzYwl0dXBsZURlc2M7CisJQml0bWFwc2V0ICAqcGVyaW9k YXR0czsKIAlBY2xSZXN1bHQJYWNscmVzdWx0OwogCWNoYXIJICAgKmNvbW1lbnQ7CiAJUGFy c2VDYWxsYmFja1N0YXRlIHBjYnN0YXRlOwpAQCAtMTA1NSw2ICsxMTczLDcgQEAgdHJhbnNm b3JtVGFibGVMaWtlQ2xhdXNlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFRhYmxlTGlrZUNs YXVzZSAqdGFibGVfbGlrZV9jbGEKIAl9CiAKIAl0dXBsZURlc2MgPSBSZWxhdGlvbkdldERl c2NyKHJlbGF0aW9uKTsKKwlwZXJpb2RhdHRzID0gZ2V0X3BlcmlvZF9hdHRub3MoUmVsYXRp b25HZXRSZWxpZChyZWxhdGlvbikpOwogCiAJLyoKIAkgKiBJbnNlcnQgdGhlIGNvcGllZCBh dHRyaWJ1dGVzIGludG8gdGhlIGN4dCBmb3IgdGhlIG5ldyB0YWJsZSBkZWZpbml0aW9uLgpA QCAtMTA2NCwxMCArMTE4MywxOCBAQCB0cmFuc2Zvcm1UYWJsZUxpa2VDbGF1c2UoQ3JlYXRl U3RtdENvbnRleHQgKmN4dCwgVGFibGVMaWtlQ2xhdXNlICp0YWJsZV9saWtlX2NsYQogCWZv ciAocGFyZW50X2F0dG5vID0gMTsgcGFyZW50X2F0dG5vIDw9IHR1cGxlRGVzYy0+bmF0dHM7 CiAJCSBwYXJlbnRfYXR0bm8rKykKIAl7Ci0JCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJpYnV0 ZSA9IFR1cGxlRGVzY0F0dHIodHVwbGVEZXNjLAotCQkJCQkJCQkJCQkJCXBhcmVudF9hdHRu byAtIDEpOworCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyaWJ1dGU7CiAJCUNvbHVtbkRlZiAg KmRlZjsKIAorCQkvKgorCQkgKiBJZiB0aGlzIGNvbHVtbiBpcyBmcm9tIGEgUEVSSU9ELCBz a2lwIGl0CisJCSAqIChzaW5jZSBMSUtFIG5ldmVyIGNvcGllcyBQRVJJT0RzKS4KKwkJICov CisJCWlmIChibXNfaXNfbWVtYmVyKHBhcmVudF9hdHRubywgcGVyaW9kYXR0cykpCisJCQlj b250aW51ZTsKKworCQlhdHRyaWJ1dGUgPSBUdXBsZURlc2NBdHRyKHR1cGxlRGVzYywgcGFy ZW50X2F0dG5vIC0gMSk7CisKIAkJLyoKIAkJICogSWdub3JlIGRyb3BwZWQgY29sdW1ucyBp biB0aGUgcGFyZW50LgogCQkgKi8KQEAgLTMwMDgsNiArMzEzNSwxMCBAQCB0cmFuc2Zvcm1J bmRleFN0bXQoT2lkIHJlbGlkLCBJbmRleFN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5 U3RyaW5nKQogCQl9CiAJfQogCisJLyogdGFrZSBjYXJlIG9mIHRoZSBwZXJpb2QgKi8KKwlp ZiAoc3RtdC0+cGVyaW9kKQorCQlzdG10LT5wZXJpb2QtPm9pZCA9IGdldF9wZXJpb2Rfb2lk KHJlbGlkLCBzdG10LT5wZXJpb2QtPnBlcmlvZG5hbWUsIGZhbHNlKTsKKwogCS8qCiAJICog Q2hlY2sgdGhhdCBvbmx5IHRoZSBiYXNlIHJlbCBpcyBtZW50aW9uZWQuICAoVGhpcyBzaG91 bGQgYmUgZGVhZCBjb2RlCiAJICogbm93IHRoYXQgYWRkX21pc3NpbmdfZnJvbSBpcyBoaXN0 b3J5LikKQEAgLTM0NjUsNiArMzU5Niw3IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9p ZCByZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJY3h0LmluaFJlbGF0aW9ucyA9IE5J TDsKIAljeHQuaXNhbHRlciA9IHRydWU7CiAJY3h0LmNvbHVtbnMgPSBOSUw7CisJY3h0LnBl cmlvZHMgPSBOSUw7CiAJY3h0LmNrY29uc3RyYWludHMgPSBOSUw7CiAJY3h0Lm5uY29uc3Ry YWludHMgPSBOSUw7CiAJY3h0LmZrY29uc3RyYWludHMgPSBOSUw7CkBAIC0zNTI3LDYgKzM2 NTksMTUgQEAgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxl U3RtdCAqc3RtdCwKIAkJCQkJCSAoaW50KSBub2RlVGFnKGNtZC0+ZGVmKSk7CiAJCQkJYnJl YWs7CiAKKwkJCWNhc2UgQVRfQWRkUGVyaW9kOgorCQkJCXsKKwkJCQkJbmV3Y21kcyA9IGxh cHBlbmQobmV3Y21kcywgY21kKTsKKwkJCQkJLy8gV2h5IG5vdCBjYWxsIHRyYW5zZm9ybVRh YmxlUGVyaW9kIGhlcmU/CisJCQkJCS8vIEFoIGJlY2F1c2UgaXQgbG9va3MgYXQgY3h0LT5j b2x1bW5zCisJCQkJCS8vIGFuZCBpbiBhbiBBTFRFUiBzdGF0ZW1lbnQgdGhlIGNvbHVtbnMg bWlnaHQgYWxyZWFkeSBleGlzdCAob3Igbm90KS4KKwkJCQkJYnJlYWs7CisJCQkJfQorCiAJ CQljYXNlIEFUX0FsdGVyQ29sdW1uVHlwZToKIAkJCQl7CiAJCQkJCUNvbHVtbkRlZiAgKmRl ZiA9IGNhc3ROb2RlKENvbHVtbkRlZiwgY21kLT5kZWYpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L01ha2Vm aWxlCmluZGV4IDE5OWVhZTUyNWQxLi5kMDRjNzViMzk4MCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9N YWtlZmlsZQpAQCAtNzgsNiArNzgsNyBAQCBPQkpTID0gXAogCW9yYWNsZV9jb21wYXQubyBc CiAJb3JkZXJlZHNldGFnZ3MubyBcCiAJcGFydGl0aW9uZnVuY3MubyBcCisJcGVyaW9kLm8g XAogCXBnX2xvY2FsZS5vIFwKIAlwZ19sc24ubyBcCiAJcGdfdXBncmFkZV9zdXBwb3J0Lm8g XApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BlcmlvZC5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3BlcmlvZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi4wZWQ0MzA0ZTE2ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZXJpb2QuYwpAQCAtMCwwICsxLDU2IEBACisvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqCisgKiBwZXJpb2QuYworICoJICBGdW5jdGlvbnMgdG8gc3VwcG9ydCBwZXJp b2RzLgorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMiwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdo dCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisg KgorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9w ZXJpb2QuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAicG9z dGdyZXMuaCIKKworI2luY2x1ZGUgImV4ZWN1dG9yL3R1cHRhYmxlLmgiCisjaW5jbHVkZSAi Zm1nci5oIgorI2luY2x1ZGUgIm5vZGVzL3ByaW1ub2Rlcy5oIgorI2luY2x1ZGUgInV0aWxz L2ZtZ3Jwcm90b3MuaCIKKyNpbmNsdWRlICJ1dGlscy9wZXJpb2QuaCIKKyNpbmNsdWRlICJ1 dGlscy9yYW5nZXR5cGVzLmgiCisKK0RhdHVtIHBlcmlvZF90b19yYW5nZShUdXBsZVRhYmxl U2xvdCAqc2xvdCwgaW50IHN0YXJ0YXR0bm8sIGludCBlbmRhdHRubywgT2lkIHJhbmdldHlw ZSkKK3sKKwlEYXR1bSBzdGFydHZhbHVlOworCURhdHVtIGVuZHZhbHVlOworCURhdHVtIHJl c3VsdDsKKwlib29sCXN0YXJ0aXNudWxsOworCWJvb2wJZW5kaXNudWxsOworCUxPQ0FMX0ZD SU5GTyhmY2luZm8sIDIpOworCUZtZ3JJbmZvCWZsaW5mbzsKKwlGdW5jRXhwciAgICpmOwor CisJSW5pdEZ1bmN0aW9uQ2FsbEluZm9EYXRhKCpmY2luZm8sICZmbGluZm8sIDIsIEludmFs aWRPaWQsIE5VTEwsIE5VTEwpOworCWYgPSBtYWtlTm9kZShGdW5jRXhwcik7CisJZi0+ZnVu Y3Jlc3VsdHR5cGUgPSByYW5nZXR5cGU7CisJZmxpbmZvLmZuX2V4cHIgPSAoTm9kZSAqKSBm OworCWZsaW5mby5mbl9leHRyYSA9IE5VTEw7CisKKwkvKiBjb21wdXRlIG9sZHZhbHVlICov CisJc3RhcnR2YWx1ZSA9IHNsb3RfZ2V0YXR0cihzbG90LCBzdGFydGF0dG5vLCAmc3RhcnRp c251bGwpOworCWVuZHZhbHVlID0gc2xvdF9nZXRhdHRyKHNsb3QsIGVuZGF0dG5vLCAmZW5k aXNudWxsKTsKKworCWZjaW5mby0+YXJnc1swXS52YWx1ZSA9IHN0YXJ0dmFsdWU7CisJZmNp bmZvLT5hcmdzWzBdLmlzbnVsbCA9IHN0YXJ0aXNudWxsOworCWZjaW5mby0+YXJnc1sxXS52 YWx1ZSA9IGVuZHZhbHVlOworCWZjaW5mby0+YXJnc1sxXS5pc251bGwgPSBlbmRpc251bGw7 CisKKwlyZXN1bHQgPSByYW5nZV9jb25zdHJ1Y3RvcjIoZmNpbmZvKTsKKwlpZiAoZmNpbmZv LT5pc251bGwpCisJCWVsb2coRVJST1IsICJmdW5jdGlvbiAldSByZXR1cm5lZCBOVUxMIiwg ZmxpbmZvLmZuX29pZCk7CisKKwlyZXR1cm4gcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9sc3lzY2FjaGUuYwppbmRleCA5YTI0ODgyZjg5NS4uNTQ0MDRjNTRhNzEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29w Y2xhc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9wZ19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3JhbmdlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0 aXN0aWMuaCIKQEAgLTk5NCw2ICs5OTUsNjggQEAgZ2V0X2F0dG9wdGlvbnMoT2lkIHJlbGlk LCBpbnQxNiBhdHRudW0pCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoJCQkJLS0tLS0tLS0t LSBQR19QRVJJT0QgQ0FDSEUgLS0tLS0tLS0tLQkJCQkgKi8KKworLyoKKyAqIGdldF9wZXJp b2RuYW1lIC0gZ2l2ZW4gaXRzIE9JRCwgbG9vayB1cCBhIHBlcmlvZAorICoKKyAqIElmIG1p c3Npbmdfb2sgaXMgZmFsc2UsIHRocm93IGFuIGVycm9yIGlmIHRoZSBwZXJpb2QgaXMgbm90 IGZvdW5kLgorICogSWYgdHJ1ZSwganVzdCByZXR1cm4gSW52YWxpZE9pZC4KKyAqLworY2hh ciAqCitnZXRfcGVyaW9kbmFtZShPaWQgcGVyaW9kaWQsIGJvb2wgbWlzc2luZ19vaykKK3sK KwlIZWFwVHVwbGUJdHA7CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsCisJ CQkJCQkgT2JqZWN0SWRHZXREYXR1bShwZXJpb2RpZCkpOworCWlmIChIZWFwVHVwbGVJc1Zh bGlkKHRwKSkKKwl7CisJCUZvcm1fcGdfcGVyaW9kIHBlcmlvZF90dXAgPSAoRm9ybV9wZ19w ZXJpb2QpIEdFVFNUUlVDVCh0cCk7CisJCWNoYXIJICAgKnJlc3VsdDsKKworCQlyZXN1bHQg PSBwc3RyZHVwKE5hbWVTdHIocGVyaW9kX3R1cC0+cGVybmFtZSkpOworCQlSZWxlYXNlU3lz Q2FjaGUodHApOworCQlyZXR1cm4gcmVzdWx0OworCX0KKworCWlmICghbWlzc2luZ19vaykK KwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHBlcmlvZCAlZCIsCisJ CQkgcGVyaW9kaWQpOworCXJldHVybiBOVUxMOworfQorCisvKgorICogZ2V0X3BlcmlvZF9v aWQgLSBnZXRzIGl0cyByZWxhdGlvbiBhbmQgbmFtZSwgbG9vayB1cCBhIHBlcmlvZAorICoK KyAqIElmIG1pc3Npbmdfb2sgaXMgZmFsc2UsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYXN0 IGlzIG5vdCBmb3VuZC4gIElmCisgKiB0cnVlLCBqdXN0IHJldHVybiBJbnZhbGlkT2lkLgor ICovCitPaWQKK2dldF9wZXJpb2Rfb2lkKE9pZCByZWxpZCwgY29uc3QgY2hhciAqcGVyaW9k bmFtZSwgYm9vbCBtaXNzaW5nX29rKQoreworCUhlYXBUdXBsZQl0cDsKKworCXRwID0gU2Vh cmNoU3lzQ2FjaGUyKFBFUklPRE5BTUUsCisJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShyZWxp ZCksCisJCQkJCQkgUG9pbnRlckdldERhdHVtKHBlcmlvZG5hbWUpKTsKKworCWlmIChIZWFw VHVwbGVJc1ZhbGlkKHRwKSkKKwl7CisJCUZvcm1fcGdfcGVyaW9kIHBlcmlvZF90dXAgPSAo Rm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVCh0cCk7CisJCU9pZCByZXN1bHQ7CisKKwkJcmVz dWx0ID0gcGVyaW9kX3R1cC0+b2lkOworCQlSZWxlYXNlU3lzQ2FjaGUodHApOworCQlyZXR1 cm4gcmVzdWx0OworCX0KKworCWlmICghbWlzc2luZ19vaykKKwkJZWxvZyhFUlJPUiwgImNh Y2hlIGxvb2t1cCBmYWlsZWQgZm9yIHBlcmlvZCAlcyIsCisJCQkgcGVyaW9kbmFtZSk7CisJ cmV0dXJuIEludmFsaWRPaWQ7Cit9CisKIC8qCQkJCS0tLS0tLS0tLS0gUEdfQ0FTVCBDQUNI RSAtLS0tLS0tLS0tCQkJCQkgKi8KIAogLyoKQEAgLTM1MzcsNiArMzYwMCwzMCBAQCBnZXRf bXVsdGlyYW5nZV9yYW5nZShPaWQgbXVsdGlyYW5nZU9pZCkKIAkJcmV0dXJuIEludmFsaWRP aWQ7CiB9CiAKK09pZAorZ2V0X3N1YnR5cGVfcmFuZ2UoT2lkIHN1YnR5cGVPaWQpCit7CisJ Q2F0Q0xpc3QgKmNhdGxpc3Q7CisJT2lkCXJlc3VsdCA9IEludmFsaWRPaWQ7CisKKwljYXRs aXN0ID0gU2VhcmNoU3lzQ2FjaGVMaXN0MShSQU5HRVNVQlRZUEUsIE9iamVjdElkR2V0RGF0 dW0oc3VidHlwZU9pZCkpOworCisJaWYgKGNhdGxpc3QtPm5fbWVtYmVycyA9PSAxKQorCXsK KwkJSGVhcFR1cGxlCXR1cGxlID0gJmNhdGxpc3QtPm1lbWJlcnNbMF0tPnR1cGxlOworCQlG b3JtX3BnX3JhbmdlIHJuZ3R1cCA9IChGb3JtX3BnX3JhbmdlKSBHRVRTVFJVQ1QodHVwbGUp OworCQlyZXN1bHQgPSBybmd0dXAtPnJuZ3R5cGlkOworCQlSZWxlYXNlQ2F0Q2FjaGVMaXN0 KGNhdGxpc3QpOworCX0KKwllbHNlIGlmIChjYXRsaXN0LT5uX21lbWJlcnMgPiAxKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5ERVRFUk1JTkFURV9EQVRB VFlQRSksCisJCQkJIGVycm1zZygiYW1iaWd1b3VzIHJhbmdlIGZvciB0eXBlICVzIiwKKwkJ CQkJCWZvcm1hdF90eXBlX2JlKHN1YnR5cGVPaWQpKSkpOworCisJcmV0dXJuIHJlc3VsdDsK K30KKwogLyoJCQkJLS0tLS0tLS0tLSBQR19JTkRFWCBDQUNIRSAtLS0tLS0tLS0tCQkJCSAq LwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZl ci5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCmluZGV4IDI1NmQx ZTM1YTRlLi4wYTI2OTZjNTU5NyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2Jh Y2t1cF9hcmNoaXZlci5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2 ZXIuYwpAQCAtMzUxOCw2ICszNTE4LDcgQEAgX2dldE9iamVjdERlc2NyaXB0aW9uKFBRRXhw QnVmZmVyIGJ1ZiwgY29uc3QgVG9jRW50cnkgKnRlKQogCQkJIHN0cmNtcCh0eXBlLCAiREFU QUJBU0UgUFJPUEVSVElFUyIpID09IDAgfHwKIAkJCSBzdHJjbXAodHlwZSwgIkRFRkFVTFQi KSA9PSAwIHx8CiAJCQkgc3RyY21wKHR5cGUsICJGSyBDT05TVFJBSU5UIikgPT0gMCB8fAor CQkJIHN0cmNtcCh0eXBlLCAiUEVSSU9EIikgPT0gMCB8fAogCQkJIHN0cmNtcCh0eXBlLCAi SU5ERVgiKSA9PSAwIHx8CiAJCQkgc3RyY21wKHR5cGUsICJSVUxFIikgPT0gMCB8fAogCQkJ IHN0cmNtcCh0eXBlLCAiVFJJR0dFUiIpID09IDAgfHwKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IGEx OTQ0M2JlY2Q2Li5iMTNjZjI4NDgyNyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC02NjAwLDYgKzY2 MDAsNyBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1UYWJsZXMpCiAJaW50 CQkJaV9yZWx0eXBlOwogCWludAkJCWlfcmVsb3duZXI7CiAJaW50CQkJaV9yZWxjaGVja3M7 CisJaW50CQkJaV9ucGVyaW9kOwogCWludAkJCWlfcmVsaGFzaW5kZXg7CiAJaW50CQkJaV9y ZWxoYXNydWxlczsKIAlpbnQJCQlpX3JlbHBhZ2VzOwpAQCAtNjY3Nyw2ICs2Njc4LDE0IEBA IGdldFRhYmxlcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRhYmxlcykKIAkJYXBwZW5kUFFF eHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkJICJjLnJlbGhhc29pZHMsICIpOwogCisJLyog SW4gUEcxNiB1cHdhcmRzIHdlIGhhdmUgUEVSSU9Ecy4gKi8KKwlpZiAoZm91dC0+cmVtb3Rl VmVyc2lvbiA+PSAxNjAwMDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJ CQkJCSAiKFNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3BlcmlvZCBXSEVSRSBwZXJyZWxpZCA9 IGMub2lkKSBBUyBucGVyaW9kcywgIik7CisJZWxzZQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihxdWVyeSwKKwkJCQkJCQkgIjAgQVMgbnBlcmlvZHMsICIpOworCiAJaWYgKGZvdXQtPnJl bW90ZVZlcnNpb24gPj0gOTAzMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAog CQkJCQkJCSAiYy5yZWxpc3BvcHVsYXRlZCwgIik7CkBAIC02ODE0LDYgKzY4MjMsNyBAQCBn ZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1UYWJsZXMpCiAJaV9yZWx0eXBlID0g UFFmbnVtYmVyKHJlcywgInJlbHR5cGUiKTsKIAlpX3JlbG93bmVyID0gUFFmbnVtYmVyKHJl cywgInJlbG93bmVyIik7CiAJaV9yZWxjaGVja3MgPSBQUWZudW1iZXIocmVzLCAicmVsY2hl Y2tzIik7CisJaV9ucGVyaW9kID0gUFFmbnVtYmVyKHJlcywgIm5wZXJpb2RzIik7CiAJaV9y ZWxoYXNpbmRleCA9IFBRZm51bWJlcihyZXMsICJyZWxoYXNpbmRleCIpOwogCWlfcmVsaGFz cnVsZXMgPSBQUWZudW1iZXIocmVzLCAicmVsaGFzcnVsZXMiKTsKIAlpX3JlbHBhZ2VzID0g UFFmbnVtYmVyKHJlcywgInJlbHBhZ2VzIik7CkBAIC02ODk3LDYgKzY5MDcsNyBAQCBnZXRU YWJsZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1UYWJsZXMpCiAJCX0KIAkJdGJsaW5mb1tp XS5yZWx0YWJsZXNwYWNlID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JlbHRh Ymxlc3BhY2UpKTsKIAkJdGJsaW5mb1tpXS5oYXNvaWRzID0gKHN0cmNtcChQUWdldHZhbHVl KHJlcywgaSwgaV9yZWxoYXNvaWRzKSwgInQiKSA9PSAwKTsKKwkJdGJsaW5mb1tpXS5ucGVy aW9kID0gYXRvaShQUWdldHZhbHVlKHJlcywgaSwgaV9ucGVyaW9kKSk7CiAJCXRibGluZm9b aV0uaGFzdHJpZ2dlcnMgPSAoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JlbGhhc3Ry aWdnZXJzKSwgInQiKSA9PSAwKTsKIAkJdGJsaW5mb1tpXS5yZWxwZXJzaXN0ZW5jZSA9ICoo UFFnZXR2YWx1ZShyZXMsIGksIGlfcmVscGVyc2lzdGVuY2UpKTsKIAkJdGJsaW5mb1tpXS5y ZWxpc3BvcHVsYXRlZCA9IChzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcmVsaXNwb3B1 bGF0ZWQpLCAidCIpID09IDApOwpAQCAtODU2MSw3ICs4NTcyLDcgQEAgZ2V0VHJhbnNmb3Jt cyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRyYW5zZm9ybXMpCiAvKgogICogZ2V0VGFibGVB dHRycyAtCiAgKgkgIGZvciBlYWNoIGludGVyZXN0aW5nIHRhYmxlLCByZWFkIGluZm8gYWJv dXQgaXRzIGF0dHJpYnV0ZXMKLSAqCSAgKG5hbWVzLCB0eXBlcywgZGVmYXVsdCB2YWx1ZXMs IENIRUNLIGNvbnN0cmFpbnRzLCBldGMpCisgKgkgIChuYW1lcywgdHlwZXMsIGRlZmF1bHQg dmFsdWVzLCBDSEVDSyBjb25zdHJhaW50cywgUEVSSU9EcywgZXRjKQogICoKICAqCW1vZGlm aWVzIHRibGluZm8KICAqLwpAQCAtODYxNCw2ICs4NjI1LDggQEAgZ2V0VGFibGVBdHRycyhB cmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJZm9y IChpbnQgaSA9IDA7IGkgPCBudW1UYWJsZXM7IGkrKykKIAl7CiAJCVRhYmxlSW5mbyAgKnRi aW5mbyA9ICZ0YmxpbmZvW2ldOworCQlpbnQJCQluZHVtcGFibGVjaGVja3M7CS8qIG51bWJl ciBvZiBDSEVDSyBjb25zdHJhaW50cyB0aGF0IGRvCisJCQkJCQkJCQkJICAgbm90IGJlbG9u ZyB0byBhIHBlcmlvZCAqLwogCiAJCS8qIERvbid0IGJvdGhlciB0byBjb2xsZWN0IGluZm8g Zm9yIHNlcXVlbmNlcyAqLwogCQlpZiAodGJpbmZvLT5yZWxraW5kID09IFJFTEtJTkRfU0VR VUVOQ0UpCkBAIC04NjI4LDcgKzg2NDEsOCBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZv dXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxlcykKIAkJCWFwcGVuZFBRRXhw QnVmZmVyQ2hhcih0YmxvaWRzLCAnLCcpOwogCQlhcHBlbmRQUUV4cEJ1ZmZlcih0YmxvaWRz LCAiJXUiLCB0YmluZm8tPmRvYmouY2F0SWQub2lkKTsKIAotCQlpZiAodGJpbmZvLT5uY2hl Y2sgPiAwKQorCQluZHVtcGFibGVjaGVja3MgPSB0YmluZm8tPm5jaGVjayAtIHRiaW5mby0+ bnBlcmlvZDsKKwkJaWYgKG5kdW1wYWJsZWNoZWNrcyA+IDApCiAJCXsKIAkJCS8qIEFsc28g bWFrZSBhIGxpc3Qgb2YgdGhlIG9uZXMgd2l0aCBjaGVjayBjb25zdHJhaW50cyAqLwogCQkJ aWYgKGNoZWNrb2lkcy0+bGVuID4gMSkgLyogZG8gd2UgaGF2ZSBtb3JlIHRoYW4gdGhlICd7 Jz8gKi8KQEAgLTkxNjcsMTUgKzkxODEsMzYgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpm b3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJCXBnX2xvZ19pbmZv KCJmaW5kaW5nIHRhYmxlIGNoZWNrIGNvbnN0cmFpbnRzIik7CiAKIAkJcmVzZXRQUUV4cEJ1 ZmZlcihxKTsKLQkJYXBwZW5kUFFFeHBCdWZmZXIocSwKLQkJCQkJCSAgIlNFTEVDVCBjLnRh Ymxlb2lkLCBjLm9pZCwgY29ucmVsaWQsIGNvbm5hbWUsICIKLQkJCQkJCSAgInBnX2NhdGFs b2cucGdfZ2V0X2NvbnN0cmFpbnRkZWYoYy5vaWQpIEFTIGNvbnNyYywgIgotCQkJCQkJICAi Y29uaXNsb2NhbCwgY29udmFsaWRhdGVkICIKLQkJCQkJCSAgIkZST00gdW5uZXN0KCclcyc6 OnBnX2NhdGFsb2cub2lkW10pIEFTIHNyYyh0YmxvaWQpXG4iCi0JCQkJCQkgICJKT0lOIHBn X2NhdGFsb2cucGdfY29uc3RyYWludCBjIE9OIChzcmMudGJsb2lkID0gYy5jb25yZWxpZClc biIKLQkJCQkJCSAgIldIRVJFIGNvbnR5cGUgPSAnYycgIgotCQkJCQkJICAiT1JERVIgQlkg Yy5jb25yZWxpZCwgYy5jb25uYW1lIiwKLQkJCQkJCSAgY2hlY2tvaWRzLT5kYXRhKTsKKwkJ aWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTYwMDAwKQorCQl7CisJCQkvKgorCQkJICog UEVSSU9EcyB3ZXJlIGFkZGVkIGluIHYxNyBhbmQgd2UgZG9uJ3QgZHVtcCBDSEVDSworCQkJ ICogY29uc3RyYWludHMgZm9yIHRoZW0uCisJCQkgKi8KKwkJCWFwcGVuZFBRRXhwQnVmZmVy KHEsCisJCQkJCQkJICAiU0VMRUNUIGMudGFibGVvaWQsIGMub2lkLCBjb25yZWxpZCwgY29u bmFtZSwgIgorCQkJCQkJCSAgInBnX2NhdGFsb2cucGdfZ2V0X2NvbnN0cmFpbnRkZWYoYy5v aWQpIEFTIGNvbnNyYywgIgorCQkJCQkJCSAgImNvbmlzbG9jYWwsIGNvbnZhbGlkYXRlZCAi CisJCQkJCQkJICAiRlJPTSB1bm5lc3QoJyVzJzo6cGdfY2F0YWxvZy5vaWRbXSkgQVMgc3Jj KHRibG9pZClcbiIKKwkJCQkJCQkgICJKT0lOIHBnX2NhdGFsb2cucGdfY29uc3RyYWludCBj IE9OIChzcmMudGJsb2lkID0gYy5jb25yZWxpZClcbiIKKwkJCQkJCQkgICJXSEVSRSBjb250 eXBlID0gJ2MnICIKKwkJCQkJCQkgICIgICBBTkQgTk9UIEVYSVNUUyAoU0VMRUNUIEZST00g cGdfcGVyaW9kICIKKwkJCQkJCQkgICIgICAgICAgICAgICAgICAgICAgV0hFUkUgKHBlcnJl bGlkLCBwZXJjb25zdHJhaW50KSA9IChjb25yZWxpZCwgYy5vaWQpKSAiCisJCQkJCQkJICAi T1JERVIgQlkgYy5jb25yZWxpZCwgYy5jb25uYW1lIiwKKwkJCQkJCQkgIGNoZWNrb2lkcy0+ ZGF0YSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLAorCQkJ CQkJCSAgIlNFTEVDVCBjLnRhYmxlb2lkLCBjLm9pZCwgY29ucmVsaWQsIGNvbm5hbWUsICIK KwkJCQkJCQkgICJwZ19jYXRhbG9nLnBnX2dldF9jb25zdHJhaW50ZGVmKGMub2lkKSBBUyBj b25zcmMsICIKKwkJCQkJCQkgICJjb25pc2xvY2FsLCBjb252YWxpZGF0ZWQgIgorCQkJCQkJ CSAgIkZST00gdW5uZXN0KCclcyc6OnBnX2NhdGFsb2cub2lkW10pIEFTIHNyYyh0YmxvaWQp XG4iCisJCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgYyBPTiAoc3Jj LnRibG9pZCA9IGMuY29ucmVsaWQpXG4iCisJCQkJCQkJICAiV0hFUkUgY29udHlwZSA9ICdj JyAiCisJCQkJCQkJICAiT1JERVIgQlkgYy5jb25yZWxpZCwgYy5jb25uYW1lIiwKKwkJCQkJ CQkgIGNoZWNrb2lkcy0+ZGF0YSk7CisJCX0KIAogCQlyZXMgPSBFeGVjdXRlU3FsUXVlcnko Zm91dCwgcS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKIApAQCAtOTE5Nyw2ICs5MjMyLDcg QEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGlu dCBudW1UYWJsZXMpCiAJCQlPaWQJCQljb25yZWxpZCA9IGF0b29pZChQUWdldHZhbHVlKHJl cywgaiwgaV9jb25yZWxpZCkpOwogCQkJVGFibGVJbmZvICAqdGJpbmZvID0gTlVMTDsKIAkJ CWludAkJCW51bWNvbnM7CisJCQlpbnQJCQluZHVtcGFibGVjaGVja3M7CiAKIAkJCS8qIENv dW50IHJvd3MgZm9yIHRoaXMgdGFibGUgKi8KIAkJCWZvciAobnVtY29ucyA9IDE7IG51bWNv bnMgPCBudW1Db25zdHJzIC0gajsgbnVtY29ucysrKQpAQCAtOTIxNiwxMiArOTI1MiwxMyBA QCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50 IG51bVRhYmxlcykKIAkJCWlmIChjdXJ0YmxpbmR4ID49IG51bVRhYmxlcykKIAkJCQlwZ19m YXRhbCgidW5yZWNvZ25pemVkIHRhYmxlIE9JRCAldSIsIGNvbnJlbGlkKTsKIAotCQkJaWYg KG51bWNvbnMgIT0gdGJpbmZvLT5uY2hlY2spCisJCQluZHVtcGFibGVjaGVja3MgPSB0Ymlu Zm8tPm5jaGVjayAtIHRiaW5mby0+bnBlcmlvZDsKKwkJCWlmIChudW1jb25zICE9IG5kdW1w YWJsZWNoZWNrcykKIAkJCXsKIAkJCQlwZ19sb2dfZXJyb3IobmdldHRleHQoImV4cGVjdGVk ICVkIGNoZWNrIGNvbnN0cmFpbnQgb24gdGFibGUgXCIlc1wiIGJ1dCBmb3VuZCAlZCIsCiAJ CQkJCQkJCQkgICJleHBlY3RlZCAlZCBjaGVjayBjb25zdHJhaW50cyBvbiB0YWJsZSBcIiVz XCIgYnV0IGZvdW5kICVkIiwKLQkJCQkJCQkJCSAgdGJpbmZvLT5uY2hlY2spLAotCQkJCQkJ CSB0YmluZm8tPm5jaGVjaywgdGJpbmZvLT5kb2JqLm5hbWUsIG51bWNvbnMpOworCQkJCQkJ CQkJICBuZHVtcGFibGVjaGVja3MpLAorCQkJCQkJCSBuZHVtcGFibGVjaGVja3MsIHRiaW5m by0+ZG9iai5uYW1lLCBudW1jb25zKTsKIAkJCQlwZ19sb2dfZXJyb3JfaGludCgiVGhlIHN5 c3RlbSBjYXRhbG9ncyBtaWdodCBiZSBjb3JydXB0ZWQuIik7CiAJCQkJZXhpdF9uaWNlbHko MSk7CiAJCQl9CkBAIC05MjgwLDYgKzkzMTcsNzkgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZl ICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJCVBRY2xlYXIo cmVzKTsKIAl9CiAKKwlmb3IgKGludCBpID0gMDsgaSA8IG51bVRhYmxlczsgaSsrKQorCXsK KwkJVGFibGVJbmZvICAqdGJpbmZvID0gJnRibGluZm9baV07CisKKwkJLyoKKwkJICogR2V0 IGluZm8gYWJvdXQgUEVSSU9EIGRlZmluaXRpb25zCisJCSAqLworCQlpZiAodGJpbmZvLT5u cGVyaW9kID4gMCkKKwkJeworCQkJUGVyaW9kSW5mbyAqcGVyaW9kczsKKwkJCWludAkJCW51 bVBlcmlvZHM7CisJCQlpbnQJCQlqOworCisJCQkvKiBXZSBzaG91bGRuJ3QgaGF2ZSBhbnkg cGVyaW9kcyBiZWZvcmUgdjE3ICovCisJCQlBc3NlcnQoZm91dC0+cmVtb3RlVmVyc2lvbiA+ PSAxNjAwMDApOworCisJCQlwZ19sb2dfaW5mbygiZmluZGluZyBwZXJpb2RzIGZvciB0YWJs ZSBcIiVzLiVzXCIiLAorCQkJCQkJdGJpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1l LAorCQkJCQkJdGJpbmZvLT5kb2JqLm5hbWUpOworCisJCQlyZXNldFBRRXhwQnVmZmVyKHEp OworCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwKKwkJCQkiU0VMRUNUIHAudGFibGVvaWQsIHAu b2lkLCBwLnBlcm5hbWUsICIKKwkJCQkiICAgICAgIHNhLmF0dG5hbWUgQVMgcGVyc3RhcnQs IGVhLmF0dG5hbWUgQVMgcGVyZW5kLCAiCisJCQkJIiAgICAgICByLnR5cG5hbWUgQVMgcm5n dHlwZSwgIgorCQkJCSIgICAgICAgYy5jb25uYW1lIEFTIGNvbm5hbWUgIgorCQkJCSJGUk9N IHBnX2NhdGFsb2cucGdfcGVyaW9kIEFTIHAgIgorCQkJCSJKT0lOIHBnX2NhdGFsb2cucGdf YXR0cmlidXRlIEFTIHNhIE9OIChzYS5hdHRyZWxpZCwgc2EuYXR0bnVtKSA9IChwLnBlcnJl bGlkLCBwLnBlcnN0YXJ0KSAiCisJCQkJIkpPSU4gcGdfY2F0YWxvZy5wZ19hdHRyaWJ1dGUg QVMgZWEgT04gKGVhLmF0dHJlbGlkLCBlYS5hdHRudW0pID0gKHAucGVycmVsaWQsIHAucGVy ZW5kKSAiCisJCQkJIkpPSU4gcGdfY2F0YWxvZy5wZ190eXBlIEFTIHIgT04gci5vaWQgPSBw LnBlcnJuZ3R5cGUgIgorCQkJCSJKT0lOIHBnX2NhdGFsb2cucGdfY29uc3RyYWludCBBUyBj IE9OIGMub2lkID0gcC5wZXJjb25zdHJhaW50ICIKKwkJCQkiV0hFUkUgcC5wZXJyZWxpZCA9 ICcldSc6OnBnX2NhdGFsb2cub2lkICIKKwkJCQkiT1JERVIgQlkgcC5wZXJuYW1lIiwKKwkJ CQl0YmluZm8tPmRvYmouY2F0SWQub2lkKTsKKworCQkJcmVzID0gRXhlY3V0ZVNxbFF1ZXJ5 KGZvdXQsIHEtPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CisKKwkJCS8qCisJCQkgKiBJZiB3 ZSBkaWRuJ3QgZ2V0IHRoZSBudW1iZXIgb2Ygcm93cyB3ZSB0aG91Z2h0IHdlIHdlcmUgZ29p bmcgdG8sCisJCQkgKiB0aGVuIHRob3NlIEpPSU5zIGRpZG4ndCB3b3JrLgorCQkJICovCisJ CQludW1QZXJpb2RzID0gUFFudHVwbGVzKHJlcyk7CisJCQlpZiAobnVtUGVyaW9kcyAhPSB0 YmluZm8tPm5wZXJpb2QpCisJCQl7CisJCQkJcGdfbG9nX2luZm8obmdldHRleHQoImV4cGVj dGVkICVkIHBlcmlvZCBvbiB0YWJsZSBcIiVzXCIgYnV0IGZvdW5kICVkIiwKKwkJCQkJCQkJ CSAiZXhwZWN0ZWQgJWQgcGVyaW9kcyBvbiB0YWJsZSBcIiVzXCIgYnV0IGZvdW5kICVkIiwK KwkJCQkJCQkJCSB0YmluZm8tPm5wZXJpb2QpLAorCQkJCQkJCXRiaW5mby0+bnBlcmlvZCwg dGJpbmZvLT5kb2JqLm5hbWUsIG51bVBlcmlvZHMpOworCQkJCXBnX2xvZ19pbmZvKCIoVGhl IHN5c3RlbSBjYXRhbG9ncyBtaWdodCBiZSBjb3JydXB0ZWQuKSIpOworCQkJCWV4aXRfbmlj ZWx5KDEpOworCQkJfQorCisJCQlwZXJpb2RzID0gKFBlcmlvZEluZm8gKikgcGdfbWFsbG9j KG51bVBlcmlvZHMgKiBzaXplb2YoUGVyaW9kSW5mbykpOworCQkJdGJpbmZvLT5wZXJpb2Rz ID0gcGVyaW9kczsKKworCQkJZm9yIChqID0gMDsgaiA8IG51bVBlcmlvZHM7IGorKykKKwkJ CXsKKwkJCQlwZXJpb2RzW2pdLmRvYmoub2JqVHlwZSA9IERPX1BFUklPRDsKKwkJCQlwZXJp b2RzW2pdLmRvYmouY2F0SWQudGFibGVvaWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGos IDApKTsKKwkJCQlwZXJpb2RzW2pdLmRvYmouY2F0SWQub2lkID0gYXRvb2lkKFBRZ2V0dmFs dWUocmVzLCBqLCAxKSk7CisJCQkJQXNzaWduRHVtcElkKCZwZXJpb2RzW2pdLmRvYmopOwor CQkJCXBlcmlvZHNbal0uZG9iai5uYW1lID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBq LCAyKSk7CisJCQkJcGVyaW9kc1tqXS5kb2JqLm5hbWVzcGFjZSA9IHRiaW5mby0+ZG9iai5u YW1lc3BhY2U7CisJCQkJcGVyaW9kc1tqXS5wZXJ0YWJsZSA9IHRiaW5mbzsKKwkJCQlwZXJp b2RzW2pdLnBlcnN0YXJ0ID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBqLCAzKSk7CisJ CQkJcGVyaW9kc1tqXS5wZXJlbmQgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIGosIDQp KTsKKwkJCQlwZXJpb2RzW2pdLnJuZ3R5cGUgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMs IGosIDUpKTsKKwkJCQlwZXJpb2RzW2pdLmNvbm5hbWUgPSBwZ19zdHJkdXAoUFFnZXR2YWx1 ZShyZXMsIGosIDYpKTsKKwkJCX0KKwkJCVBRY2xlYXIocmVzKTsKKwkJfQorCX0KKwogCWRl c3Ryb3lQUUV4cEJ1ZmZlcihxKTsKIAlkZXN0cm95UFFFeHBCdWZmZXIodGJsb2lkcyk7CiAJ ZGVzdHJveVBRRXhwQnVmZmVyKGNoZWNrb2lkcyk7CkBAIC0xMDU1MCw2ICsxMDY2MCw4IEBA IGR1bXBEdW1wYWJsZU9iamVjdChBcmNoaXZlICpmb3V0LCBEdW1wYWJsZU9iamVjdCAqZG9i aikKIAkJY2FzZSBET19GS19DT05TVFJBSU5UOgogCQkJZHVtcENvbnN0cmFpbnQoZm91dCwg KGNvbnN0IENvbnN0cmFpbnRJbmZvICopIGRvYmopOwogCQkJYnJlYWs7CisJCWNhc2UgRE9f UEVSSU9EOgorCQkJYnJlYWs7CiAJCWNhc2UgRE9fUFJPQ0xBTkc6CiAJCQlkdW1wUHJvY0xh bmcoZm91dCwgKGNvbnN0IFByb2NMYW5nSW5mbyAqKSBkb2JqKTsKIAkJCWJyZWFrOwpAQCAt MTYwODgsNiArMTYyMDAsMzIgQEAgZHVtcFRhYmxlU2NoZW1hKEFyY2hpdmUgKmZvdXQsIGNv bnN0IFRhYmxlSW5mbyAqdGJpbmZvKQogCQkJCX0KIAkJCX0KIAorCQkJLyoKKwkJCSAqIEFk ZCBub24taW5oZXJpdGVkIFBFUklPRCBkZWZpbml0aW9ucywgaWYgYW55LgorCQkJICovCisJ CQlmb3IgKGogPSAwOyBqIDwgdGJpbmZvLT5ucGVyaW9kOyBqKyspCisJCQl7CisJCQkJUGVy aW9kSW5mbyAqcGVyaW9kID0gJih0YmluZm8tPnBlcmlvZHNbal0pOworCisJCQkJY2hhcgkg ICAqbmFtZSA9IHBnX3N0cmR1cChmbXRJZChwZXJpb2QtPmRvYmoubmFtZSkpOworCQkJCWNo YXIJICAgKnN0YXJ0ID0gcGdfc3RyZHVwKGZtdElkKHBlcmlvZC0+cGVyc3RhcnQpKTsKKwkJ CQljaGFyCSAgICplbmQgPSBwZ19zdHJkdXAoZm10SWQocGVyaW9kLT5wZXJlbmQpKTsKKwkJ CQljaGFyCSAgICpybmd0eXBlID0gcGdfc3RyZHVwKGZtdElkKHBlcmlvZC0+cm5ndHlwZSkp OworCQkJCWNoYXIJICAgKmNvbm5hbWUgPSBwZ19zdHJkdXAoZm10SWQocGVyaW9kLT5jb25u YW1lKSk7CisKKwkJCQlpZiAoYWN0dWFsX2F0dHMgPT0gMCkKKwkJCQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocSwgIiAoXG4gICAgIik7CisJCQkJZWxzZQorCQkJCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxLCAiLFxuICAgICIpOworCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIlBF UklPRCBGT1IgJXMgKCVzLCAlcykgIgorCQkJCQkJIldJVEggKHJhbmdldHlwZSA9ICVzLCBj aGVja19jb25zdHJhaW50X25hbWUgPSAlcykiLAorCQkJCQkJCQkgIG5hbWUsIHN0YXJ0LCBl bmQsCisJCQkJCQkJCSAgcm5ndHlwZSwgY29ubmFtZSk7CisKKwkJCQlhY3R1YWxfYXR0cysr OworCQkJfQorCiAJCQkvKgogCQkJICogQWRkIG5vbi1pbmhlcml0ZWQgQ0hFQ0sgY29uc3Ry YWludHMsIGlmIGFueS4KIAkJCSAqCkBAIC0xNjA5Niw3ICsxNjIzNCw3IEBAIGR1bXBUYWJs ZVNjaGVtYShBcmNoaXZlICpmb3V0LCBjb25zdCBUYWJsZUluZm8gKnRiaW5mbykKIAkJCSAq IFBBUlRJVElPTiB0aGF0IHdlJ2xsIGVtaXQgbGF0ZXIgZXhwZWN0cyB0aGUgY29uc3RyYWlu dCB0byBiZQogCQkJICogdGhlcmUuICAoTm8gbmVlZCB0byBmaXggY29uaXNsb2NhbDogQVRU QUNIIFBBUlRJVElPTiBkb2VzIHRoYXQpCiAJCQkgKi8KLQkJCWZvciAoaiA9IDA7IGogPCB0 YmluZm8tPm5jaGVjazsgaisrKQorCQkJZm9yIChqID0gMDsgaiA8IHRiaW5mby0+bmNoZWNr IC0gdGJpbmZvLT5ucGVyaW9kOyBqKyspCiAJCQl7CiAJCQkJQ29uc3RyYWludEluZm8gKmNv bnN0ciA9ICYodGJpbmZvLT5jaGVja2V4cHJzW2pdKTsKIApAQCAtMTYzMTQsNyArMTY0NTIs NyBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgY29uc3QgVGFibGVJbmZvICp0 YmluZm8pCiAJCQkgKiBGb3IgcGFydGl0aW9ucywgdGhleSB3ZXJlIGFscmVhZHkgZHVtcGVk LCBhbmQgY29uaXNsb2NhbAogCQkJICogZG9lc24ndCBuZWVkIGZpeGluZy4KIAkJCSAqLwot CQkJZm9yIChrID0gMDsgayA8IHRiaW5mby0+bmNoZWNrOyBrKyspCisJCQlmb3IgKGsgPSAw OyBrIDwgdGJpbmZvLT5uY2hlY2sgLSB0YmluZm8tPm5wZXJpb2Q7IGsrKykKIAkJCXsKIAkJ CQlDb25zdHJhaW50SW5mbyAqY29uc3RyID0gJih0YmluZm8tPmNoZWNrZXhwcnNba10pOwog CkBAIC0xNjYxNiw3ICsxNjc1NCw3IEBAIGR1bXBUYWJsZVNjaGVtYShBcmNoaXZlICpmb3V0 LCBjb25zdCBUYWJsZUluZm8gKnRiaW5mbykKIAkJZHVtcFRhYmxlU2VjTGFiZWwoZm91dCwg dGJpbmZvLCByZWx0eXBlbmFtZSk7CiAKIAkvKiBEdW1wIGNvbW1lbnRzIG9uIGlubGluZWQg dGFibGUgY29uc3RyYWludHMgKi8KLQlmb3IgKGogPSAwOyBqIDwgdGJpbmZvLT5uY2hlY2s7 IGorKykKKwlmb3IgKGogPSAwOyBqIDwgdGJpbmZvLT5uY2hlY2sgLSB0YmluZm8tPm5wZXJp b2Q7IGorKykKIAl7CiAJCUNvbnN0cmFpbnRJbmZvICpjb25zdHIgPSAmKHRiaW5mby0+Y2hl Y2tleHByc1tqXSk7CiAKQEAgLTE4NTg1LDYgKzE4NzIzLDcgQEAgYWRkQm91bmRhcnlEZXBl bmRlbmNpZXMoRHVtcGFibGVPYmplY3QgKipkb2JqcywgaW50IG51bU9ianMsCiAJCQljYXNl IERPX1RSSUdHRVI6CiAJCQljYXNlIERPX0VWRU5UX1RSSUdHRVI6CiAJCQljYXNlIERPX0RF RkFVTFRfQUNMOgorCQkJY2FzZSBET19QRVJJT0Q6CiAJCQljYXNlIERPX1BPTElDWToKIAkJ CWNhc2UgRE9fUFVCTElDQVRJT046CiAJCQljYXNlIERPX1BVQkxJQ0FUSU9OX1JFTDoKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5oCmluZGV4IDkzZDk3YTQwOTAwLi45MjcwMTc1ZjNkNyAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5oCkBAIC01OSw2ICs1OSw3IEBAIHR5cGVkZWYgZW51bQogCURPX1RSSUdHRVIsCiAJRE9f Q09OU1RSQUlOVCwKIAlET19GS19DT05TVFJBSU5ULAkJCS8qIHNlZSBub3RlIGZvciBDb25z dHJhaW50SW5mbyAqLworCURPX1BFUklPRCwKIAlET19QUk9DTEFORywKIAlET19DQVNULAog CURPX1RBQkxFX0RBVEEsCkBAIC0zMDAsMTIgKzMwMSwxNCBAQCB0eXBlZGVmIHN0cnVjdCBf dGFibGVJbmZvCiAJYm9vbAkJcm93c2VjOwkJCS8qIGlzIHJvdyBzZWN1cml0eSBlbmFibGVk PyAqLwogCWJvb2wJCWZvcmNlcm93c2VjOwkvKiBpcyByb3cgc2VjdXJpdHkgZm9yY2VkPyAq LwogCWJvb2wJCWhhc29pZHM7CQkvKiBkb2VzIGl0IGhhdmUgT0lEcz8gKi8KKwlib29sCQlo YXNwZXJpb2RzOwkJLyogZG9lcyBpdCBoYXZlIGFueSBwZXJpb2RzPyAqLwogCXVpbnQzMgkJ ZnJvemVueGlkOwkJLyogdGFibGUncyByZWxmcm96ZW54aWQgKi8KIAl1aW50MzIJCW1pbm14 aWQ7CQkvKiB0YWJsZSdzIHJlbG1pbm14aWQgKi8KIAlPaWQJCQl0b2FzdF9vaWQ7CQkvKiB0 b2FzdCB0YWJsZSdzIE9JRCwgb3IgMCBpZiBub25lICovCiAJdWludDMyCQl0b2FzdF9mcm96 ZW54aWQ7CS8qIHRvYXN0IHRhYmxlJ3MgcmVsZnJvemVueGlkLCBpZiBhbnkgKi8KIAl1aW50 MzIJCXRvYXN0X21pbm14aWQ7CS8qIHRvYXN0IHRhYmxlJ3MgcmVsbWlubXhpZCAqLwogCWlu dAkJCW5jaGVjazsJCQkvKiAjIG9mIENIRUNLIGV4cHJlc3Npb25zICovCisJaW50CQkJbnBl cmlvZDsJCS8qICMgb2YgUEVSSU9EIGRlZmluaXRpb25zICovCiAJT2lkCQkJcmVsdHlwZTsJ CS8qIE9JRCBvZiB0YWJsZSdzIGNvbXBvc2l0ZSB0eXBlLCBpZiBhbnkgKi8KIAlPaWQJCQly ZWxvZnR5cGU7CQkvKiB1bmRlcmx5aW5nIHR5cGUgZm9yIHR5cGVkIHRhYmxlICovCiAJT2lk CQkJZm9yZWlnbl9zZXJ2ZXI7IC8qIGZvcmVpZ24gc2VydmVyIG9pZCwgaWYgYXBwbGljYWJs ZSAqLwpAQCAtMzU1LDYgKzM1OCw3IEBAIHR5cGVkZWYgc3RydWN0IF90YWJsZUluZm8KIAli b29sCSAgICpub3RudWxsX2luaDsJLyogdHJ1ZSBpZiBOT1QgTlVMTCBoYXMgbm8gbG9jYWwg ZGVmaW5pdGlvbiAqLwogCXN0cnVjdCBfYXR0ckRlZkluZm8gKiphdHRyZGVmczsgLyogREVG QVVMVCBleHByZXNzaW9ucyAqLwogCXN0cnVjdCBfY29uc3RyYWludEluZm8gKmNoZWNrZXhw cnM7IC8qIENIRUNLIGNvbnN0cmFpbnRzICovCisJc3RydWN0IF9wZXJpb2RJbmZvICpwZXJp b2RzOwkvKiBQRVJJT0QgZGVmaW5pdGlvbnMgKi8KIAlib29sCQluZWVkc19vdmVycmlkZTsg LyogaGFzIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFkgKi8KIAljaGFyCSAgICphbW5h bWU7CQkJLyogcmVsYXRpb24gYWNjZXNzIG1ldGhvZCAqLwogCkBAIC00ODUsNiArNDg5LDE2 IEBAIHR5cGVkZWYgc3RydWN0IF9jb25zdHJhaW50SW5mbwogCWJvb2wJCXNlcGFyYXRlOwkJ LyogdHJ1ZSBpZiBtdXN0IGR1bXAgYXMgc2VwYXJhdGUgaXRlbSAqLwogfSBDb25zdHJhaW50 SW5mbzsKIAordHlwZWRlZiBzdHJ1Y3QgX3BlcmlvZEluZm8KK3sKKwlEdW1wYWJsZU9iamVj dCBkb2JqOworCVRhYmxlSW5mbyAgKnBlcnRhYmxlOworCWNoYXIJICAgKnBlcnN0YXJ0OwkJ LyogdGhlIG5hbWUgb2YgdGhlIHN0YXJ0IGNvbHVtbiAqLworCWNoYXIJICAgKnBlcmVuZDsJ CQkvKiB0aGUgbmFtZSBvZiB0aGUgZW5kIGNvbHVtbiAqLworCWNoYXIJICAgKnJuZ3R5cGU7 CQkvKiB0aGUgbmFtZSBvZiB0aGUgcmFuZ2UgdHlwZSAqLworCWNoYXIJICAgKmNvbm5hbWU7 CQkvKiB0aGUgbmFtZSBvZiB0aGUgQ0hFQ0sgY29uc3RyYWludCAqLworfSBQZXJpb2RJbmZv OworCiB0eXBlZGVmIHN0cnVjdCBfcHJvY0xhbmdJbmZvCiB7CiAJRHVtcGFibGVPYmplY3Qg ZG9iajsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYwppbmRleCBmMzU4ZGQyMmI5ZC4uYjI1YjM4 NjJhYjIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYworKysg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMKQEAgLTg1LDYgKzg1LDcgQEAgZW51 bSBkYk9iamVjdFR5cGVQcmlvcml0aWVzCiAJUFJJT19DT05TVFJBSU5ULAogCVBSSU9fSU5E RVgsCiAJUFJJT19JTkRFWF9BVFRBQ0gsCisJUFJJT19QRVJJT0QsCiAJUFJJT19TVEFUU0VY VCwKIAlQUklPX1JVTEUsCiAJUFJJT19UUklHR0VSLApAQCAtMTIwLDYgKzEyMSw3IEBAIHN0 YXRpYyBjb25zdCBpbnQgZGJPYmplY3RUeXBlUHJpb3JpdHlbXSA9CiAJUFJJT19BVFRSREVG LAkJCQkvKiBET19BVFRSREVGICovCiAJUFJJT19JTkRFWCwJCQkJCS8qIERPX0lOREVYICov CiAJUFJJT19JTkRFWF9BVFRBQ0gsCQkJLyogRE9fSU5ERVhfQVRUQUNIICovCisJUFJJT19Q RVJJT0QsCQkJCS8qIERPX1BFUklPRCAqLwogCVBSSU9fU1RBVFNFWFQsCQkJCS8qIERPX1NU QVRTRVhUICovCiAJUFJJT19SVUxFLAkJCQkJLyogRE9fUlVMRSAqLwogCVBSSU9fVFJJR0dF UiwJCQkJLyogRE9fVFJJR0dFUiAqLwpAQCAtMTM3MCw2ICsxMzcyLDExIEBAIGRlc2NyaWJl RHVtcGFibGVPYmplY3QoRHVtcGFibGVPYmplY3QgKm9iaiwgY2hhciAqYnVmLCBpbnQgYnVm c2l6ZSkKIAkJCQkJICJGSyBDT05TVFJBSU5UICVzICAoSUQgJWQgT0lEICV1KSIsCiAJCQkJ CSBvYmotPm5hbWUsIG9iai0+ZHVtcElkLCBvYmotPmNhdElkLm9pZCk7CiAJCQlyZXR1cm47 CisJCWNhc2UgRE9fUEVSSU9EOgorCQkJc25wcmludGYoYnVmLCBidWZzaXplLAorCQkJCQkg IlBFUklPRCAlcyAgKElEICVkIE9JRCAldSkiLAorCQkJCQkgb2JqLT5uYW1lLCBvYmotPmR1 bXBJZCwgb2JqLT5jYXRJZC5vaWQpOworCQkJcmV0dXJuOwogCQljYXNlIERPX1BST0NMQU5H OgogCQkJc25wcmludGYoYnVmLCBidWZzaXplLAogCQkJCQkgIlBST0NFRFVSQUwgTEFOR1VB R0UgJXMgIChJRCAlZCBPSUQgJXUpIiwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNj cmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggOWNkODc4MzMyNWMuLjE0 NjkxOWNlYjBiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9z cmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMTk0Myw2ICsxOTQzLDggQEAgZGVzY3JpYmVP bmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAogCWFwcGVuZFBRRXhw QnVmZmVyU3RyKCZidWYsICJcbkZST00gcGdfY2F0YWxvZy5wZ19hdHRyaWJ1dGUgYSIpOwog CWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICJcbldIRVJFIGEuYXR0cmVsaWQgPSAnJXMnIEFO RCBhLmF0dG51bSA+IDAgQU5EIE5PVCBhLmF0dGlzZHJvcHBlZCIsIG9pZCk7CisJaWYgKHBz ZXQuc3ZlcnNpb24gPj0gMTcwMDAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiXG5B TkQgTk9UIEVYSVNUUyAoU0VMRUNUIDEgRlJPTSBwZ19jYXRhbG9nLnBnX3BlcmlvZCBwIFdI RVJFIHAucGVycmVsaWQgPSBhLmF0dHJlbGlkIEFORCBwLnBlcnJhbmdlID0gYS5hdHRudW0p Iik7CiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIlxuT1JERVIgQlkgYS5hdHRudW07 Iik7CiAKIAlyZXMgPSBQU1FMZXhlYyhidWYuZGF0YSk7CkBAIC0yMzY1LDYgKzIzNjcsNDAg QEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJ UEdyZXN1bHQgICAqcmVzdWx0ID0gTlVMTDsKIAkJaW50CQkJdHVwbGVzID0gMDsKIAorCQkv KiBwcmludCBwZXJpb2RzICovCisJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE3MDAwMCkKKwkJ eworCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkgICJTRUxFQ1QgcXVvdGVf aWRlbnQocC5wZXJuYW1lKSwgcXVvdGVfaWRlbnQocy5hdHRuYW1lKSBBUyBzdGFydGF0dCwg cXVvdGVfaWRlbnQoZS5hdHRuYW1lKSBBUyBlbmRhdHRcbiIKKwkJCQkJCQkgICJGUk9NIHBn X3BlcmlvZCBBUyBwXG4iCisJCQkJCQkJICAiSk9JTiBwZ19hdHRyaWJ1dGUgQVMgcyBPTiAo cy5hdHRyZWxpZCwgcy5hdHRudW0pID0gKHAucGVycmVsaWQsIHAucGVyc3RhcnQpXG4iCisJ CQkJCQkJICAiSk9JTiBwZ19hdHRyaWJ1dGUgQVMgZSBPTiAoZS5hdHRyZWxpZCwgZS5hdHRu dW0pID0gKHAucGVycmVsaWQsIHAucGVyZW5kKVxuIgorCQkJCQkJCSAgIldIRVJFIHAucGVy cmVsaWQgPSAnJXMnXG4iCisJCQkJCQkJICAiT1JERVIgQlkgMTsiLAorCQkJCQkJCSAgb2lk KTsKKwkJCXJlc3VsdCA9IFBTUUxleGVjKGJ1Zi5kYXRhKTsKKwkJCWlmICghcmVzdWx0KQor CQkJCWdvdG8gZXJyb3JfcmV0dXJuOworCQkJZWxzZQorCQkJCXR1cGxlcyA9IFBRbnR1cGxl cyhyZXN1bHQpOworCisJCQlpZiAodHVwbGVzID4gMCkKKwkJCXsKKwkJCQlwcmludFRhYmxl QWRkRm9vdGVyKCZjb250LCBfKCJQZXJpb2RzOiIpKTsKKwkJCQlmb3IgKGkgPSAwOyBpIDwg dHVwbGVzOyBpKyspCisJCQkJeworCQkJCQkvKiB1bnRyYW5zbGF0ZWQgY29uc3RyYWludCBu YW1lIGFuZCBkZWYgKi8KKwkJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIiAgICAlcyAo JXMsICVzKSIsCisJCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAwKSwKKwkJCQkJ CQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDEpLAorCQkJCQkJCQkJICBQUWdldHZhbHVl KHJlc3VsdCwgaSwgMikpOworCisJCQkJCXByaW50VGFibGVBZGRGb290ZXIoJmNvbnQsIGJ1 Zi5kYXRhKTsKKwkJCQl9CisJCQl9CisJCQlQUWNsZWFyKHJlc3VsdCk7CisJCX0KKwogCQkv KiBwcmludCBpbmRleGVzICovCiAJCWlmICh0YWJsZWluZm8uaGFzaW5kZXgpCiAJCXsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmgKaW5kZXggZmQ1ODg2NTkwMTQuLmU4NGQ5MGMwZTVl IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaApAQCAtOTMsNiArOTMsNyBAQCB0eXBl ZGVmIGVudW0gT2JqZWN0Q2xhc3MKIAlPQ0xBU1NfQ0FTVCwJCQkJLyogcGdfY2FzdCAqLwog CU9DTEFTU19DT0xMQVRJT04sCQkJLyogcGdfY29sbGF0aW9uICovCiAJT0NMQVNTX0NPTlNU UkFJTlQsCQkJLyogcGdfY29uc3RyYWludCAqLworCU9DTEFTU19QRVJJT0QsCQkJCS8qIHBn X3BlcmlvZCAqLwogCU9DTEFTU19DT05WRVJTSU9OLAkJCS8qIHBnX2NvbnZlcnNpb24gKi8K IAlPQ0xBU1NfREVGQVVMVCwJCQkJLyogcGdfYXR0cmRlZiAqLwogCU9DTEFTU19MQU5HVUFH RSwJCQkvKiBwZ19sYW5ndWFnZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9oZWFwLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaAppbmRleCAxZDdmODM4MGQ5 MC4uMzU5MmE0NDRiZDEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5o CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5oCkBAIC0xMjEsNiArMTIxLDEwIEBA IGV4dGVybiBMaXN0ICpBZGRSZWxhdGlvbk5vdE51bGxDb25zdHJhaW50cyhSZWxhdGlvbiBy ZWwsCiBleHRlcm4gdm9pZCBSZWxhdGlvbkNsZWFyTWlzc2luZyhSZWxhdGlvbiByZWwpOwog ZXh0ZXJuIHZvaWQgU2V0QXR0ck1pc3NpbmcoT2lkIHJlbGlkLCBjaGFyICphdHRuYW1lLCBj aGFyICp2YWx1ZSk7CiAKK2V4dGVybiBPaWQgU3RvcmVQZXJpb2QoUmVsYXRpb24gcmVsLCBj b25zdCBjaGFyICpwZXJpb2QsCisJCQkJCSAgIEF0dHJOdW1iZXIgc3RhcnRudW0sIEF0dHJO dW1iZXIgZW5kbnVtLAorCQkJCQkgICBBdHRyTnVtYmVyIHJhbmdlbnVtLCBPaWQgY29ub2lk KTsKKwogZXh0ZXJuIE5vZGUgKmNvb2tEZWZhdWx0KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJ CQkJCSBOb2RlICpyYXdfZGVmYXVsdCwKIAkJCQkJCSBPaWQgYXR0dHlwaWQsCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL21lc29uLmJ1aWxkIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9tZXNvbi5idWlsZAppbmRleCA2YmU3NmRjYTFkZC4uNTJkOTkyNGM1ZDMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQKKysrIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9tZXNvbi5idWlsZApAQCAtNjEsNiArNjEsNyBAQCBjYXRhbG9nX2hlYWRl cnMgPSBbCiAgICdwZ19jb2xsYXRpb24uaCcsCiAgICdwZ19wYXJhbWV0ZXJfYWNsLmgnLAog ICAncGdfcGFydGl0aW9uZWRfdGFibGUuaCcsCisgICdwZ19wZXJpb2QuaCcsCiAgICdwZ19y YW5nZS5oJywKICAgJ3BnX3RyYW5zZm9ybS5oJywKICAgJ3BnX3NlcXVlbmNlLmgnLApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19pbmRleC5oIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19pbmRleC5oCmluZGV4IDM0NjI1NzJlYjU1Li4wYTNjODExMWI2NyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19pbmRleC5oCisrKyBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfaW5kZXguaApAQCAtNDgsNyArNDgsNiBAQCBDQVRBTE9HKHBnX2lu ZGV4LDI2MTAsSW5kZXhSZWxhdGlvbklkKSBCS0lfU0NIRU1BX01BQ1JPCiAJLyogdmFyaWFi bGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlLCBidXQgd2UgYWxsb3cgZGlyZWN0IGFjY2Vz cyB0byBpbmRrZXkgKi8KIAlpbnQydmVjdG9yCWluZGtleSBCS0lfRk9SQ0VfTk9UX05VTEw7 CS8qIGNvbHVtbiBudW1iZXJzIG9mIGluZGV4ZWQgY29scywKIAkJCQkJCQkJCQkJICogb3Ig MCAqLwotCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4KIAlvaWR2ZWN0b3IJaW5kY29sbGF0aW9u IEJLSV9MT09LVVBfT1BUKHBnX2NvbGxhdGlvbikgQktJX0ZPUkNFX05PVF9OVUxMOwkvKiBj b2xsYXRpb24gaWRlbnRpZmllcnMgKi8KIAlvaWR2ZWN0b3IJaW5kY2xhc3MgQktJX0xPT0tV UChwZ19vcGNsYXNzKSBCS0lfRk9SQ0VfTk9UX05VTEw7IC8qIG9wY2xhc3MgaWRlbnRpZmll cnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9kLmggYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3BlcmlvZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi5kZjlkNzNhM2Y1NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9kLmgKQEAgLTAsMCArMSw1NyBAQAorLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKgorICogcGdfcGVyaW9kLmgKKyAqCSAgZGVmaW5pdGlvbiBvZiB0 aGUgInBlcmlvZCIgc3lzdGVtIGNhdGFsb2cgKHBnX3BlcmlvZCkKKyAqCisgKgorICogUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3RncmVTUUwgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwCisgKgorICogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaAor ICoKKyAqIE5PVEVTCisgKgkgIFRoZSBDYXRhbG9nLnBtIG1vZHVsZSByZWFkcyB0aGlzIGZp bGUgYW5kIGRlcml2ZXMgc2NoZW1hCisgKgkgIGluZm9ybWF0aW9uLgorICoKKyAqLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFBHX1BFUklPRF9ICisjZGVmaW5lIFBHX1BF UklPRF9ICisKKyNpbmNsdWRlICJjYXRhbG9nL2dlbmJraS5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfcGVyaW9kX2QuaCIKKworLyogLS0tLS0tLS0tLS0tLS0tLQorICoJCXBnX3Blcmlv ZCBkZWZpbml0aW9uLiAgY3BwIHR1cm5zIHRoaXMgaW50bworICoJCXR5cGVkZWYgc3RydWN0 IEZvcm1EYXRhX3BnX3BlcmlvZAorICogLS0tLS0tLS0tLS0tLS0tLQorICovCitDQVRBTE9H KHBnX3BlcmlvZCw4MDAwLFBlcmlvZFJlbGF0aW9uSWQpCit7CisJT2lkCQkJb2lkOwkJCS8q IE9JRCBvZiB0aGUgcGVyaW9kICovCisJTmFtZURhdGEJcGVybmFtZTsJCS8qIG5hbWUgb2Yg cGVyaW9kICovCisJT2lkCQkJcGVycmVsaWQ7CQkvKiBPSUQgb2YgcmVsYXRpb24gY29udGFp bmluZyB0aGlzIHBlcmlvZCAqLworCWludDE2CQlwZXJzdGFydDsJCS8qIGNvbHVtbiBmb3Ig c3RhcnQgdmFsdWUgKi8KKwlpbnQxNgkJcGVyZW5kOwkJCS8qIGNvbHVtbiBmb3IgZW5kIHZh bHVlICovCisJaW50MTYJCXBlcnJhbmdlOwkJLyogY29sdW1uIGZvciByYW5nZSB2YWx1ZSAq LworCU9pZAkJCXBlcmNvbnN0cmFpbnQ7CS8qIE9JRCBvZiAoc3RhcnQgPCBlbmQpIGNvbnN0 cmFpbnQgKi8KK30gRm9ybURhdGFfcGdfcGVyaW9kOworCisvKiAtLS0tLS0tLS0tLS0tLS0t CisgKgkJRm9ybV9wZ19wZXJpb2QgY29ycmVzcG9uZHMgdG8gYSBwb2ludGVyIHRvIGEgdHVw bGUgd2l0aAorICoJCXRoZSBmb3JtYXQgb2YgcGdfcGVyaW9kIHJlbGF0aW9uLgorICogLS0t LS0tLS0tLS0tLS0tLQorICovCit0eXBlZGVmIEZvcm1EYXRhX3BnX3BlcmlvZCAqRm9ybV9w Z19wZXJpb2Q7CisKK0RFQ0xBUkVfVU5JUVVFX0lOREVYX1BLRVkocGdfcGVyaW9kX29pZF9p bmRleCwgODAwMSwgUGVyaW9kT2JqZWN0SW5kZXhJZCwgcGdfcGVyaW9kLCBidHJlZShvaWQg b2lkX29wcykpOworREVDTEFSRV9VTklRVUVfSU5ERVgocGdfcGVyaW9kX3BlcnJlbGlkX3Bl cm5hbWVfaW5kZXgsIDgwMDIsIFBlcmlvZFJlbGlkTmFtZUluZGV4SWQsIHBnX3BlcmlvZCwg YnRyZWUocGVycmVsaWQgb2lkX29wcywgcGVybmFtZSBuYW1lX29wcykpOworCitNQUtFX1NZ U0NBQ0hFKFBFUklPRE9JRCwgcGdfcGVyaW9kX29pZF9pbmRleCwgMzIpOworTUFLRV9TWVND QUNIRShQRVJJT0ROQU1FLCBwZ19wZXJpb2RfcGVycmVsaWRfcGVybmFtZV9pbmRleCwgMzIp OworCitleHRlcm4gdm9pZCBSZW1vdmVQZXJpb2RCeUlkKE9pZCBwZXJpb2RJZCk7CisKK2V4 dGVybiBPaWQgZ2V0X3JlbGF0aW9uX3BlcmlvZF9vaWQoT2lkIHJlbGlkLCBjb25zdCBjaGFy ICpwZXJuYW1lLCBib29sIG1pc3Npbmdfb2spOworZXh0ZXJuIEJpdG1hcHNldCAqZ2V0X3Bl cmlvZF9hdHRub3MoT2lkIHJlbGlkKTsKKworI2VuZGlmCQkJCQkJCS8qIFBHX1BFUklPRF9I ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmggYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmgKaW5kZXggMGJkM2FiNjg4YmQuLjEwYTk0ZGQx MWYxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmgKKysrIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19yYW5nZS5oCkBAIC01OSw4ICs1OSwxMCBAQCB0eXBl ZGVmIEZvcm1EYXRhX3BnX3JhbmdlICpGb3JtX3BnX3JhbmdlOwogCiBERUNMQVJFX1VOSVFV RV9JTkRFWF9QS0VZKHBnX3JhbmdlX3JuZ3R5cGlkX2luZGV4LCAzNTQyLCBSYW5nZVR5cGlk SW5kZXhJZCwgcGdfcmFuZ2UsIGJ0cmVlKHJuZ3R5cGlkIG9pZF9vcHMpKTsKIERFQ0xBUkVf VU5JUVVFX0lOREVYKHBnX3JhbmdlX3JuZ211bHRpdHlwaWRfaW5kZXgsIDIyMjgsIFJhbmdl TXVsdGlyYW5nZVR5cGlkSW5kZXhJZCwgcGdfcmFuZ2UsIGJ0cmVlKHJuZ211bHRpdHlwaWQg b2lkX29wcykpOworREVDTEFSRV9VTklRVUVfSU5ERVgocGdfcmFuZ2Vfcm5nc3VidHlwZV9y bmd0eXBpZF9pbmRleCwgODAwMywgUmFuZ2VTdWJUeXBpZFR5cGlkSW5kZXhJZCwgcGdfcmFu Z2UsIGJ0cmVlKHJuZ3N1YnR5cGUgb2lkX29wcywgcm5ndHlwaWQgb2lkX29wcykpOwogCiBN QUtFX1NZU0NBQ0hFKFJBTkdFVFlQRSwgcGdfcmFuZ2Vfcm5ndHlwaWRfaW5kZXgsIDQpOwor TUFLRV9TWVNDQUNIRShSQU5HRVNVQlRZUEUsIHBnX3JhbmdlX3JuZ3N1YnR5cGVfcm5ndHlw aWRfaW5kZXgsIDQpOwogTUFLRV9TWVNDQUNIRShSQU5HRU1VTFRJUkFOR0UsIHBnX3Jhbmdl X3JuZ211bHRpdHlwaWRfaW5kZXgsIDQpOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvdGFibGVjbWRzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNt ZHMuaAppbmRleCA5Njc2OTQ3MmJiYi4uODllNTM4Yzc1MDQgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3RhYmxlY21kcy5oCkBAIC00MCw3ICs0MCw4IEBAIGV4dGVybiBMT0NLTU9ERSBBbHRlclRh YmxlR2V0TG9ja0xldmVsKExpc3QgKmNtZHMpOwogCiBleHRlcm4gdm9pZCBBVEV4ZWNDaGFu Z2VPd25lcihPaWQgcmVsYXRpb25PaWQsIE9pZCBuZXdPd25lcklkLCBib29sIHJlY3Vyc2lu ZywgTE9DS01PREUgbG9ja21vZGUpOwogCi1leHRlcm4gdm9pZCBBbHRlclRhYmxlSW50ZXJu YWwoT2lkIHJlbGlkLCBMaXN0ICpjbWRzLCBib29sIHJlY3Vyc2UpOworZXh0ZXJuIHZvaWQg QWx0ZXJUYWJsZUludGVybmFsKE9pZCByZWxpZCwgTGlzdCAqY21kcywgYm9vbCByZWN1cnNl LAorCQkJCQkJCSAgIHN0cnVjdCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQp OwogCiBleHRlcm4gT2lkCUFsdGVyVGFibGVNb3ZlQWxsKEFsdGVyVGFibGVNb3ZlQWxsU3Rt dCAqc3RtdCk7CiAKQEAgLTEwOCw1ICsxMDksNiBAQCBleHRlcm4gYm9vbCBQYXJ0Q29uc3Ry YWludEltcGxpZWRCeVJlbENvbnN0cmFpbnQoUmVsYXRpb24gc2NhbnJlbCwKIGV4dGVybiB2 b2lkIEZpbmRGS1BlcmlvZE9wZXJzQW5kUHJvY3MoT2lkIG9wY2xhc3MsCiAJCQkJCQkJCQkg IE9pZCAqcGVyaW9kb3Blcm9pZCwKIAkJCQkJCQkJCSAgT2lkICpwZXJpb2Rwcm9jb2lkKTsK K2V4dGVybiBPaWQgY2hvb3NlX3JhbmdldHlwZV9mb3JfcGVyaW9kKFBlcmlvZERlZiAqcGVy aW9kKTsKIAogI2VuZGlmCQkJCQkJCS8qIFRBQkxFQ01EU19IICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmgKaW5kZXggYmRhZGE2YjQyNTIuLmE2MjYyNTU5YmUyIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCkBAIC0yMTQxLDYgKzIxNDEsNyBAQCB0eXBlZGVmIGVudW0gT2JqZWN0 VHlwZQogCU9CSkVDVF9PUEVSQVRPUiwKIAlPQkpFQ1RfT1BGQU1JTFksCiAJT0JKRUNUX1BB UkFNRVRFUl9BQ0wsCisJT0JKRUNUX1BFUklPRCwKIAlPQkpFQ1RfUE9MSUNZLAogCU9CSkVD VF9QUk9DRURVUkUsCiAJT0JKRUNUX1BVQkxJQ0FUSU9OLApAQCAtMjIyOSw2ICsyMjMwLDgg QEAgdHlwZWRlZiBlbnVtIEFsdGVyVGFibGVUeXBlCiAJQVRfVmFsaWRhdGVDb25zdHJhaW50 LAkJLyogdmFsaWRhdGUgY29uc3RyYWludCAqLwogCUFUX0FkZEluZGV4Q29uc3RyYWludCwJ CS8qIGFkZCBjb25zdHJhaW50IHVzaW5nIGV4aXN0aW5nIGluZGV4ICovCiAJQVRfRHJvcENv bnN0cmFpbnQsCQkJLyogZHJvcCBjb25zdHJhaW50ICovCisJQVRfQWRkUGVyaW9kLAkJCQkv KiBBREQgUEVSSU9EICovCisJQVRfRHJvcFBlcmlvZCwJCQkJLyogRFJPUCBQRVJJT0QgKi8K IAlBVF9SZUFkZENvbW1lbnQsCQkJLyogaW50ZXJuYWwgdG8gY29tbWFuZHMvdGFibGVjbWRz LmMgKi8KIAlBVF9BbHRlckNvbHVtblR5cGUsCQkJLyogYWx0ZXIgY29sdW1uIHR5cGUgKi8K IAlBVF9BbHRlckNvbHVtbkdlbmVyaWNPcHRpb25zLAkvKiBhbHRlciBjb2x1bW4gT1BUSU9O UyAoLi4uKSAqLwpAQCAtMjQ5NSwxMSArMjQ5OCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBWYXJp YWJsZVNob3dTdG10CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJQ3JlYXRlIFRh YmxlIFN0YXRlbWVudAogICoKLSAqIE5PVEU6IGluIHRoZSByYXcgZ3JhbS55IG91dHB1dCwg Q29sdW1uRGVmIGFuZCBDb25zdHJhaW50IG5vZGVzIGFyZQotICogaW50ZXJtaXhlZCBpbiB0 YWJsZUVsdHMsIGFuZCBjb25zdHJhaW50cyBhbmQgbm5jb25zdHJhaW50cyBhcmUgTklMLiAg QWZ0ZXIKLSAqIHBhcnNlIGFuYWx5c2lzLCB0YWJsZUVsdHMgY29udGFpbnMganVzdCBDb2x1 bW5EZWZzLCBubmNvbnN0cmFpbnRzIGNvbnRhaW5zCi0gKiBDb25zdHJhaW50IG5vZGVzIG9m IENPTlNUUl9OT1ROVUxMIHR5cGUgZnJvbSB2YXJpb3VzIHNvdXJjZXMsIGFuZAotICogY29u c3RyYWludHMgY29udGFpbnMganVzdCBDT05TVFJfQ0hFQ0sgQ29uc3RyYWludCBub2Rlcy4K KyAqIE5PVEU6IGluIHRoZSByYXcgZ3JhbS55IG91dHB1dCwgQ29sdW1uRGVmLCBQZXJpb2RE ZWYsIGFuZCBDb25zdHJhaW50IG5vZGVzIGFyZQorICogaW50ZXJtaXhlZCBpbiB0YWJsZUVs dHM7IHBlcmlvZHMsIGNvbnN0cmFpbnRzLCBhbmQgbm5jb25zdHJhaW50cyBhcmUgTklMLiAg QWZ0ZXIKKyAqIHBhcnNlIGFuYWx5c2lzLCB0YWJsZUVsdHMgY29udGFpbnMganVzdCBDb2x1 bW5EZWZzLCBwZXJpb2RzIGNvbnRhaW5zIGp1c3QgUGVyaW9kRGVmcywKKyAqIG5uY29uc3Ry YWludHMgY29udGFpbnMgQ29uc3RyYWludCBub2RlcyBvZiBDT05TVFJfTk9UTlVMTCB0eXBl IGZyb20gdmFyaW91cyBzb3VyY2VzLAorICogYW5kIGNvbnN0cmFpbnRzIGNvbnRhaW5zIGp1 c3QgQ09OU1RSX0NIRUNLIENvbnN0cmFpbnQgbm9kZXMuCiAgKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgKi8KIApAQCAtMjUwOCw2ICsyNTExLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ3Jl YXRlU3RtdAogCU5vZGVUYWcJCXR5cGU7CiAJUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiBy ZWxhdGlvbiB0byBjcmVhdGUgKi8KIAlMaXN0CSAgICp0YWJsZUVsdHM7CQkvKiBjb2x1bW4g ZGVmaW5pdGlvbnMgKGxpc3Qgb2YgQ29sdW1uRGVmKSAqLworCUxpc3QJICAgKnBlcmlvZHM7 CQkvKiBwZXJpb2RzIChsaXN0IG9mIFBlcmlvZERlZiBub2RlcykgKi8KIAlMaXN0CSAgICpp bmhSZWxhdGlvbnM7CS8qIHJlbGF0aW9ucyB0byBpbmhlcml0IGZyb20gKGxpc3Qgb2YKIAkJ CQkJCQkJICogUmFuZ2VWYXIpICovCiAJUGFydGl0aW9uQm91bmRTcGVjICpwYXJ0Ym91bmQ7 CS8qIEZPUiBWQUxVRVMgY2xhdXNlICovCkBAIC0yNTIyLDYgKzI1MjYsMzAgQEAgdHlwZWRl ZiBzdHJ1Y3QgQ3JlYXRlU3RtdAogCWJvb2wJCWlmX25vdF9leGlzdHM7CS8qIGp1c3QgZG8g bm90aGluZyBpZiBpdCBhbHJlYWR5IGV4aXN0cz8gKi8KIH0gQ3JlYXRlU3RtdDsKIAorCisv KiAtLS0tLS0tLS0tCisgKiBEZWZpbml0aW9ucyBmb3IgcGVyaW9kcyBpbiBDcmVhdGVTdG10 CisgKiAtLS0tLS0tLS0tCisgKi8KKwordHlwZWRlZiBzdHJ1Y3QgUGVyaW9kRGVmCit7CisJ Tm9kZVRhZwkJdHlwZTsKKwlPaWQJCQlvaWQ7CQkJLyogcGVyaW9kIG9pZCwgb25jZSBpdCdz IHRyYW5zZm9ybWVkICovCisJY2hhcgkgICAqcGVyaW9kbmFtZTsJCS8qIHBlcmlvZCBuYW1l ICovCisJY2hhcgkgICAqc3RhcnRjb2xuYW1lOwkvKiBuYW1lIG9mIHN0YXJ0IGNvbHVtbiAq LworCWNoYXIJICAgKmVuZGNvbG5hbWU7CQkvKiBuYW1lIG9mIGVuZCBjb2x1bW4gKi8KKwlB dHRyTnVtYmVyCXN0YXJ0YXR0bnVtOwkvKiBhdHRudW0gb2YgdGhlIHN0YXJ0IGNvbHVtbiAq LworCUF0dHJOdW1iZXIJZW5kYXR0bnVtOwkJLyogYXR0bnVtIG9mIHRoZSBlbmQgY29sdW1u ICovCisJQXR0ck51bWJlcglybmdhdHRudW07CQkvKiBhdHRudW0gb2YgdGhlIEdFTkVSQVRF RCByYW5nZSBjb2x1bW4gKi8KKwlMaXN0CSAgICpvcHRpb25zOwkJLyogb3B0aW9ucyBmcm9t IFdJVEggY2xhdXNlICovCisJY2hhcgkgICAqY29uc3RyYWludG5hbWU7CS8qIG5hbWUgb2Yg dGhlIENIRUNLIGNvbnN0cmFpbnQgKi8KKwljaGFyCSAgICpyYW5nZXR5cGVuYW1lOwkvKiBu YW1lIG9mIHRoZSByYW5nZSB0eXBlICovCisJT2lkCQkJY29sdHlwaWQ7CQkvKiB0aGUgc3Rh cnQvZW5kIGNvbCB0eXBlICovCisJT2lkCQkJcm5ndHlwaWQ7CQkvKiB0aGUgcmFuZ2UgdHlw ZSB0byB1c2UgKi8KKwlpbnQJCQlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAt MSBpZiB1bmtub3duICovCit9IFBlcmlvZERlZjsKKwogLyogLS0tLS0tLS0tLQogICogRGVm aW5pdGlvbnMgZm9yIGNvbnN0cmFpbnRzIGluIENyZWF0ZVN0bXQKICAqCkBAIC0zMjMzLDYg KzMyNjEsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFN0bXQKIAlMaXN0CSAgICppbmRleFBh cmFtczsJLyogY29sdW1ucyB0byBpbmRleDogYSBsaXN0IG9mIEluZGV4RWxlbSAqLwogCUxp c3QJICAgKmluZGV4SW5jbHVkaW5nUGFyYW1zOwkvKiBhZGRpdGlvbmFsIGNvbHVtbnMgdG8g aW5kZXg6IGEgbGlzdAogCQkJCQkJCQkJCSAqIG9mIEluZGV4RWxlbSAqLworCVBlcmlvZERl ZiAgKnBlcmlvZDsJCQkvKiBUaGUgcGVyaW9kIGluY2x1ZGVkIGluIHRoZSBpbmRleCAqLwog CUxpc3QJICAgKm9wdGlvbnM7CQkvKiBXSVRIIGNsYXVzZSBvcHRpb25zOiBhIGxpc3Qgb2Yg RGVmRWxlbSAqLwogCU5vZGUJICAgKndoZXJlQ2xhdXNlOwkvKiBxdWFsaWZpY2F0aW9uIChw YXJ0aWFsLWluZGV4IHByZWRpY2F0ZSkgKi8KIAlMaXN0CSAgICpleGNsdWRlT3BOYW1lczsg LyogZXhjbHVzaW9uIG9wZXJhdG9yIG5hbWVzLCBvciBOSUwgaWYgbm9uZSAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3V0aWxjbWQuaCBiL3NyYy9pbmNsdWRl L3BhcnNlci9wYXJzZV91dGlsY21kLmgKaW5kZXggMTQwNjU4OTQ3NzkuLmQ4NGQwMmIwMjgw IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdXRpbGNtZC5oCisrKyBi L3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21kLmgKQEAgLTQwLDUgKzQwLDYgQEAg ZXh0ZXJuIEluZGV4U3RtdCAqZ2VuZXJhdGVDbG9uZWRJbmRleFN0bXQoUmFuZ2VWYXIgKmhl YXBSZWwsCiAJCQkJCQkJCQkJICBSZWxhdGlvbiBzb3VyY2VfaWR4LAogCQkJCQkJCQkJCSAg Y29uc3Qgc3RydWN0IEF0dHJNYXAgKmF0dG1hcCwKIAkJCQkJCQkJCQkgIE9pZCAqY29uc3Ry YWludE9pZCk7CitleHRlcm4gdm9pZCB0cmFuc2Zvcm1QZXJpb2RPcHRpb25zKFBlcmlvZERl ZiAqcGVyaW9kKTsKIAogI2VuZGlmCQkJCQkJCS8qIFBBUlNFX1VUSUxDTURfSCAqLwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91 dGlscy9sc3lzY2FjaGUuaAppbmRleCA5NDg3ODczYWQ0OC4uYzNhZDIzMGVhNjUgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRl L3V0aWxzL2xzeXNjYWNoZS5oCkBAIC05NSw2ICs5NSw4IEBAIGV4dGVybiBPaWQJZ2V0X2F0 dHR5cGUoT2lkIHJlbGlkLCBBdHRyTnVtYmVyIGF0dG51bSk7CiBleHRlcm4gdm9pZCBnZXRf YXR0dHlwZXR5cG1vZGNvbGwoT2lkIHJlbGlkLCBBdHRyTnVtYmVyIGF0dG51bSwKIAkJCQkJ CQkJICBPaWQgKnR5cGlkLCBpbnQzMiAqdHlwbW9kLCBPaWQgKmNvbGxpZCk7CiBleHRlcm4g RGF0dW0gZ2V0X2F0dG9wdGlvbnMoT2lkIHJlbGlkLCBpbnQxNiBhdHRudW0pOworZXh0ZXJu IGNoYXIgKmdldF9wZXJpb2RuYW1lKE9pZCBwZXJpb2RpZCwgYm9vbCBtaXNzaW5nX29rKTsK K2V4dGVybiBPaWQJZ2V0X3BlcmlvZF9vaWQoT2lkIHJlbGlkLCBjb25zdCBjaGFyICpwZXJp b2RuYW1lLCBib29sIG1pc3Npbmdfb2spOwogZXh0ZXJuIE9pZAlnZXRfY2FzdF9vaWQoT2lk IHNvdXJjZXR5cGVpZCwgT2lkIHRhcmdldHR5cGVpZCwgYm9vbCBtaXNzaW5nX29rKTsKIGV4 dGVybiBjaGFyICpnZXRfY29sbGF0aW9uX25hbWUoT2lkIGNvbGxvaWQpOwogZXh0ZXJuIGJv b2wgZ2V0X2NvbGxhdGlvbl9pc2RldGVybWluaXN0aWMoT2lkIGNvbGxvaWQpOwpAQCAtMTk3 LDYgKzE5OSw3IEBAIGV4dGVybiBPaWQJZ2V0X3JhbmdlX3N1YnR5cGUoT2lkIHJhbmdlT2lk KTsKIGV4dGVybiBPaWQJZ2V0X3JhbmdlX2NvbGxhdGlvbihPaWQgcmFuZ2VPaWQpOwogZXh0 ZXJuIE9pZAlnZXRfcmFuZ2VfbXVsdGlyYW5nZShPaWQgcmFuZ2VPaWQpOwogZXh0ZXJuIE9p ZAlnZXRfbXVsdGlyYW5nZV9yYW5nZShPaWQgbXVsdGlyYW5nZU9pZCk7CitleHRlcm4gT2lk CWdldF9zdWJ0eXBlX3JhbmdlKE9pZCBzdWJ0eXBlT2lkKTsKIGV4dGVybiBPaWQJZ2V0X2lu ZGV4X2NvbHVtbl9vcGNsYXNzKE9pZCBpbmRleF9vaWQsIGludCBhdHRubyk7CiBleHRlcm4g Ym9vbCBnZXRfaW5kZXhfaXNyZXBsaWRlbnQoT2lkIGluZGV4X29pZCk7CiBleHRlcm4gYm9v bCBnZXRfaW5kZXhfaXN2YWxpZChPaWQgaW5kZXhfb2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3V0aWxzL3BlcmlvZC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGVyaW9kLmgKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBhOGFmM2VkYjAxCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGVyaW9kLmgKQEAgLTAsMCArMSwx OSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGVyaW9kLmgKKyAqCSAgc3Vw cG9ydCBmb3IgUG9zdGdyZXMgcGVyaW9kcy4KKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJp Z2h0IChjKSAxOTk2LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZl cnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9pbmNsdWRlL3V0aWxzL3BlcmlvZC5o CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgUEVSSU9EX0gKKyNk ZWZpbmUgUEVSSU9EX0gKKworZXh0ZXJuIERhdHVtIHBlcmlvZF90b19yYW5nZShUdXBsZVRh YmxlU2xvdCAqc2xvdCwgaW50IHN0YXJ0YXR0bm8sIGludCBlbmRhdHRubywgT2lkIHJhbmdl dHlwZSk7CisKKyNlbmRpZgkJCQkJCQkvKiBQRVJJT0RfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYyBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKaW5k ZXggNDg1NjNiMmNmMDEuLmE5NTRlNzAzMzg0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCisrKyBiL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKQEAgLTE4Myw2 ICsxODMsMTIgQEAgZ2V0X2FsdGVydGFibGVfc3ViY21kaW5mbyhQR19GVU5DVElPTl9BUkdT KQogCQkJY2FzZSBBVF9Ecm9wQ29uc3RyYWludDoKIAkJCQlzdHJ0eXBlID0gIkRST1AgQ09O U1RSQUlOVCI7CiAJCQkJYnJlYWs7CisJCQljYXNlIEFUX0FkZFBlcmlvZDoKKwkJCQlzdHJ0 eXBlID0gIkFERCBQRVJJT0QiOworCQkJCWJyZWFrOworCQkJY2FzZSBBVF9Ecm9wUGVyaW9k OgorCQkJCXN0cnR5cGUgPSAiRFJPUCBQRVJJT0QiOworCQkJCWJyZWFrOwogCQkJY2FzZSBB VF9SZUFkZENvbW1lbnQ6CiAJCQkJc3RydHlwZSA9ICIocmUpIEFERCBDT01NRU5UIjsKIAkJ CQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2VuZXJh dGVkLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2VuZXJhdGVkLm91dAppbmRl eCBhNGYzNzczNjYyMy4uZDljMWY3OGVkOGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvZ2VuZXJhdGVkLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2dlbmVyYXRlZC5vdXQKQEAgLTE5LDcgKzE5LDkgQEAgU0VMRUNUIHRhYmxlX25hbWUs IGNvbHVtbl9uYW1lLCBkZXBlbmRlbnRfY29sdW1uIEZST00gaW5mb3JtYXRpb25fc2NoZW1h LmNvbHVtbl8KICB0YWJsZV9uYW1lIHwgY29sdW1uX25hbWUgfCBkZXBlbmRlbnRfY29sdW1u IAogLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCiAgZ3Rl c3QxICAgICB8IGEgICAgICAgICAgIHwgYgotKDEgcm93KQorIHB0ICAgICAgICAgfCBkZSAg ICAgICAgICB8IHAKKyBwdCAgICAgICAgIHwgZHMgICAgICAgICAgfCBwCisoMyByb3dzKQog CiBcZCBndGVzdDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHVibGlj Lmd0ZXN0MSIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGVyaW9k cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BlcmlvZHMub3V0Cm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42NDgxYzliMzA1NgotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGVyaW9kcy5vdXQKQEAgLTAs MCArMSwxNzcgQEAKKy8qIFN5c3RlbSBwZXJpb2RzIGFyZSBub3QgaW1wbGVtZW50ZWQgKi8K K2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9k IGZvciBzeXN0ZW1fdGltZSAoZHMsIGRlKSk7CitFUlJPUjogIFBFUklPRCBGT1IgU1lTVEVN X1RJTUUgaXMgbm90IHN1cHBvcnRlZAorTElORSAyOiBjcmVhdGUgdGFibGUgcHQgKGlkIGlu dGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3Igc3kuLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisvKiBQZXJp b2RzIG11c3Qgc3BlY2lmeSBhY3R1YWwgY29sdW1ucyAqLworY3JlYXRlIHRhYmxlIHB0IChp ZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGJvZ3VzLCBkZSkp OworRVJST1I6ICBjb2x1bW4gImJvZ3VzIiBvZiByZWxhdGlvbiAicHQiIGRvZXMgbm90IGV4 aXN0CitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBl cmlvZCBmb3IgcCAoZHMsIGJvZ3VzKSk7CitFUlJPUjogIGNvbHVtbiAiYm9ndXMiIG9mIHJl bGF0aW9uICJwdCIgZG9lcyBub3QgZXhpc3QKKy8qIERhdGEgdHlwZXMgbXVzdCBtYXRjaCBl eGFjdGx5ICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIHRp bWVzdGFtcCwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK0VSUk9SOiAgc3RhcnQgYW5kIGVu ZCBjb2x1bW5zIG9mIHBlcmlvZCBtdXN0IGJlIG9mIHNhbWUgdHlwZQorY3JlYXRlIHRhYmxl IHB0IChpZCBpbnRlZ2VyLCBkcyB0ZXh0IGNvbGxhdGUgIkMiLCBkZSB0ZXh0IGNvbGxhdGUg IlBPU0lYIiwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK0VSUk9SOiAgc3RhcnQgYW5kIGVu ZCBjb2x1bW5zIG9mIHBlcmlvZCBtdXN0IGhhdmUgc2FtZSBjb2xsYXRpb24KKy8qIFBlcmlv ZHMgbXVzdCBoYXZlIGEgZGVmYXVsdCBCVHJlZSBvcGVyYXRvciBjbGFzcyAqLworY3JlYXRl IHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyB4bWwsIGRlIHhtbCwgcGVyaW9kIGZvciBwIChk cywgZGUpKTsKK0VSUk9SOiAgbm8gcmFuZ2UgdHlwZSBmb3IgeG1sIGZvdW5kIGZvciBwZXJp b2QgcAorSElOVDogIFlvdSBjYW4gZGVmaW5lIGEgY3VzdG9tIHJhbmdlIHR5cGUgd2l0aCBD UkVBVEUgVFlQRQorLyogUGVyaW9kIGFuZCBjb2x1bW4gbmFtZXMgYXJlIGluIHRoZSBzYW1l IG5hbWVzcGFjZSAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBk ZSBkYXRlLCBwZXJpb2QgZm9yIGN0aWQgKGRzLCBkZSkpOworRVJST1I6ICBwZXJpb2QgbmFt ZSAiY3RpZCIgY29uZmxpY3RzIHdpdGggYSBzeXN0ZW0gY29sdW1uIG5hbWUKK2NyZWF0ZSB0 YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBpZCAo ZHMsIGRlKSk7CitFUlJPUjogIHBlcmlvZCBuYW1lICJpZCIgY29uZmxpY3RzIHdpdGggYSBj b2x1bW4gbmFtZQorLyogUGVyaW9kIG5hbWUgY2FuJ3QgYmUgZ2l2ZW4gbW9yZSB0aGFuIG9u Y2UgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwg cGVyaW9kIGZvciBwIChkcywgZGUpLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworRVJST1I6 ICBwZXJpb2QgbmFtZSAicCIgc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlCisvKiBOb3cgbWFr ZSBvbmUgdGhhdCB3b3JrcyAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBk YXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworLyogU0VMRUNUICogZXhj bHVkZXMgdGhlIFBFUklPRCAqLworaW5zZXJ0IGludG8gcHQgdmFsdWVzICgxLCAnMjAwMC0w MS0wMScsICcyMDAxLTAxLTAxJyk7CitzZWxlY3QgKiBmcm9tIHB0OworIGlkIHwgICAgIGRz ICAgICB8ICAgICBkZSAgICAgCistLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAg MSB8IDAxLTAxLTIwMDAgfCAwMS0wMS0yMDAxCisoMSByb3cpCisKKy8qIFlvdSBjYW4gZ2V0 IGl0IGlmIHlvdSB3YW50ICovCitzZWxlY3QgKiwgcCBmcm9tIHB0OworIGlkIHwgICAgIGRz ICAgICB8ICAgICBkZSAgICAgfCAgICAgICAgICAgIHAgICAgICAgICAgICAKKy0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIDEg fCAwMS0wMS0yMDAwIHwgMDEtMDEtMjAwMSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMDEpCiso MSByb3cpCisKKy8qIFR3byBhcmUgb2theSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50 ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwMSAoZHMsIGRlKSwgcGVyaW9k IGZvciBwMiAoZHMsIGRlKSk7Citkcm9wIHRhYmxlIHB0MjsKKy8qCisgKiBBTFRFUiBUQUJM RSB0ZXN0cworICovCithbHRlciB0YWJsZSBwdCBkcm9wIHBlcmlvZCBmb3IgcDsKK2FsdGVy IHRhYmxlIHB0IGFkZCBwZXJpb2QgZm9yIHN5c3RlbV90aW1lIChkcywgZGUpOworRVJST1I6 ICBQRVJJT0QgRk9SIFNZU1RFTV9USU1FIGlzIG5vdCBzdXBwb3J0ZWQKK2FsdGVyIHRhYmxl IHB0IGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSk7CisvKiBBZGRpbmcgYSBzZWNvbmQgb25l ICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBw ZXJpb2QgZm9yIHAxIChkcywgZGUpKTsKK2FsdGVyIHRhYmxlIHB0MiBhZGQgcGVyaW9kIGZv ciBwMiAoZHMsIGRlKTsKK2Ryb3AgdGFibGUgcHQyOworLyogQ2FuJ3QgZHJvcCBpdHMgY29s dW1ucyAqLworYWx0ZXIgdGFibGUgcHQgZHJvcCBjb2x1bW4gZHM7CitFUlJPUjogIGNhbm5v dCBkcm9wIGNvbHVtbiBkcyBvZiB0YWJsZSBwdCBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVw ZW5kIG9uIGl0CitERVRBSUw6ICBwZXJpb2QgcCBvbiB0YWJsZSBwdCBkZXBlbmRzIG9uIGNv bHVtbiBkcyBvZiB0YWJsZSBwdAorSElOVDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRy b3AgdGhlIGRlcGVuZGVudCBvYmplY3RzIHRvby4KK2FsdGVyIHRhYmxlIHB0IGRyb3AgY29s dW1uIGRlOworRVJST1I6ICBjYW5ub3QgZHJvcCBjb2x1bW4gZGUgb2YgdGFibGUgcHQgYmVj YXVzZSBvdGhlciBvYmplY3RzIGRlcGVuZCBvbiBpdAorREVUQUlMOiAgcGVyaW9kIHAgb24g dGFibGUgcHQgZGVwZW5kcyBvbiBjb2x1bW4gZGUgb2YgdGFibGUgcHQKK0hJTlQ6ICBVc2Ug RFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCisv KiBDYW4ndCBjaGFuZ2UgdGhlIGRhdGEgdHlwZXMgKi8KK2FsdGVyIHRhYmxlIHB0IGFsdGVy IGNvbHVtbiBkcyB0eXBlIHRpbWVzdGFtcDsKK0VSUk9SOiAgY2Fubm90IGFsdGVyIHR5cGUg b2YgYSBjb2x1bW4gdXNlZCBieSBhIHBlcmlvZAorREVUQUlMOiAgcGVyaW9kIHAgb24gdGFi bGUgcHQgZGVwZW5kcyBvbiBjb2x1bW4gImRzIgorYWx0ZXIgdGFibGUgcHQgYWx0ZXIgY29s dW1uIGRzIHR5cGUgdGltZXN0YW1wOworRVJST1I6ICBjYW5ub3QgYWx0ZXIgdHlwZSBvZiBh IGNvbHVtbiB1c2VkIGJ5IGEgcGVyaW9kCitERVRBSUw6ICBwZXJpb2QgcCBvbiB0YWJsZSBw dCBkZXBlbmRzIG9uIGNvbHVtbiAiZHMiCisvKiBjb2x1bW4vcGVyaW9kIG5hbWVzcGFjZSBj b25mbGljdHMgKi8KK2FsdGVyIHRhYmxlIHB0IGFkZCBjb2x1bW4gcCBpbnRlZ2VyOworRVJS T1I6ICBjb2x1bW4gbmFtZSAicCIgY29uZmxpY3RzIHdpdGggYSBwZXJpb2QgbmFtZQorYWx0 ZXIgdGFibGUgcHQgcmVuYW1lIGNvbHVtbiBpZCB0byBwOworRVJST1I6ICBjb2x1bW4gbmFt ZSAicCIgY29uZmxpY3RzIHdpdGggYSBwZXJpb2QgbmFtZQorYWx0ZXIgdGFibGUgcHQgYWRk IHBlcmlvZCBmb3IgdGFibGVvaWQgKGRzLCBkZSk7CitFUlJPUjogIHBlcmlvZCBuYW1lICJ0 YWJsZW9pZCIgY29uZmxpY3RzIHdpdGggYSBzeXN0ZW0gY29sdW1uIG5hbWUKK2FsdGVyIHRh YmxlIHB0IGFkZCBwZXJpb2QgZm9yICIuLi4uLi4uLnBnLmRyb3BwZWQuNC4uLi4uLi4uIiAo ZHMsIGRlKTsKK0VSUk9SOiAgcGVyaW9kIG5hbWUgIi4uLi4uLi4ucGcuZHJvcHBlZC40Li4u Li4uLi4iIGNvbmZsaWN0cyB3aXRoIGEgY29sdW1uIG5hbWUKKy8qIGFkZGluZyBjb2x1bW5z IGFuZCB0aGUgcGVyaW9kIGF0IHRoZSBzYW1lIHRpbWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIg KGlkIGludGVnZXIpOworYWx0ZXIgdGFibGUgcHQyIGFkZCBjb2x1bW4gZHMgZGF0ZSwgYWRk IGNvbHVtbiBkZSBkYXRlLCBhZGQgcGVyaW9kIGZvciBwIChkcywgZGUpOworZHJvcCB0YWJs ZSBwdDI7CisvKiBBbWJpZ3VvdXMgcmFuZ2UgdHlwZXMgcmFpc2UgYW4gZXJyb3IgKi8KK2Ny ZWF0ZSB0eXBlIG15ZGF0ZXJhbmdlIGFzIHJhbmdlKHN1YnR5cGU9ZGF0ZSk7CitjcmVhdGUg dGFibGUgcHQyIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMs IGRlKSk7CitFUlJPUjogIGFtYmlndW91cyByYW5nZSBmb3IgdHlwZSBkYXRlCisvKiBZb3Ug Y2FuIGdpdmUgYW4gZXhwbGljaXQgcmFuZ2UgdHlwZSAqLworY3JlYXRlIHRhYmxlIHB0MiAo aWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAo cmFuZ2V0eXBlID0gJ215ZGF0ZXJhbmdlJykpOworZHJvcCB0eXBlIG15ZGF0ZXJhbmdlOwor RVJST1I6ICBjYW5ub3QgZHJvcCB0eXBlIG15ZGF0ZXJhbmdlIGJlY2F1c2Ugb3RoZXIgb2Jq ZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHBlcmlvZCBwIG9uIHRhYmxlIHB0MiBkZXBl bmRzIG9uIHR5cGUgbXlkYXRlcmFuZ2UKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0 byBkcm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCitkcm9wIHR5cGUgbXlkYXRlcmFu Z2UgY2FzY2FkZTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gcGVyaW9kIHAgb24gdGFi bGUgcHQyCitkcm9wIHRhYmxlIHB0MjsKK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwgZHMg ZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9 ICdkYXRlcmFuZ2UnKSk7CisvKiBSYW5nZSB0eXBlIGlzIG5vdCBmb3VuZCAqLworY3JlYXRl IHRhYmxlIHB0MyAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRz LCBkZSkgd2l0aCAocmFuZ2V0eXBlID0gJ25vdGFyYW5nZScpKTsKK0VSUk9SOiAgUmFuZ2Ug dHlwZSBub3RhcmFuZ2Ugbm90IGZvdW5kCisvKiBSYW5nZSB0eXBlIGlzIHRoZSB3cm9uZyB0 eXBlICovCitjcmVhdGUgdGFibGUgcHQzIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBl cmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUgPSAndHN0enJhbmdlJykpOwor RVJST1I6ICBSYW5nZSB0eXBlIHRzdHpyYW5nZSBkb2VzIG5vdCBtYXRjaCBjb2x1bW4gdHlw ZSBkYXRlCitkcm9wIHRhYmxlIHB0MjsKKy8qIENSRUFURSBUQUJMRSAoTElLRSAuLi4pICov CisvKiBQZXJpb2RzIGFyZSBub3QgY29waWVkIGJ5IExJS0UsIHNvIHRoZWlyIGNvbHVtbnMg YXJlbid0IGVpdGhlciAqLworY3JlYXRlIHRhYmxlIHB0MiAobGlrZSBwdCk7CitcZCBwdDIK KyAgICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnB0MiIKKyBDb2x1bW4gfCAgVHlwZSAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgIHwgaW50ZWdlciB8 ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgZHMgICAgIHwgZGF0ZSAgICB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgCisgZGUgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgCisKK2Ryb3AgdGFibGUgcHQyOworLyogQ2FuIGFkZCBhIHBlcmlvZCByZWZlcnJp bmcgdG8gTElLRSdkIGNvbHVtbnMgKi8KK2NyZWF0ZSB0YWJsZSBub3RfcCAoaWQgaW50ZWdl ciwgZHMgZGF0ZSwgZGUgZGF0ZSk7CitjcmVhdGUgdGFibGUgcHQyIChsaWtlIG5vdF9wLCBw ZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworXGQgcHQyCisgICAgICAgICAgICAgICAgVGFibGUg InB1YmxpYy5wdDIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxl IHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLQorIGlkICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8 IAorIGRzICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGRlICAg ICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGVyaW9kczoKKyAgICBw IChkcywgZGUpCitDaGVjayBjb25zdHJhaW50czoKKyAgICAicHQyX3BfY2hlY2siIENIRUNL IChkcyA8IGRlKQorCitkcm9wIHRhYmxlIHB0MjsKKy8qIENhbiBhZGQgYSBwZXJpb2Qgd2l0 aCB0aGUgc2FtZSBuYW1lICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0LCBwZXJpb2Qg Zm9yIHAgKGRzLCBkZSkpOworXGQgcHQyCisgICAgICAgICAgICAgICAgVGFibGUgInB1Ymxp Yy5wdDIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVm YXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLQorIGlkICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGRz ICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGRlICAgICB8IGRh dGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGVyaW9kczoKKyAgICBwIChkcywg ZGUpCitDaGVjayBjb25zdHJhaW50czoKKyAgICAicHQyX3BfY2hlY2siIENIRUNLIChkcyA8 IGRlKQorCitkcm9wIHRhYmxlIHB0MjsKKy8qIENhbiBhZGQgYSBwZXJpb2Qgd2l0aCBhIGRp ZmZlcmVudCBuYW1lICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0LCBwZXJpb2QgZm9y IHAyIChkcywgZGUpKTsKK1xkIHB0MgorICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMu cHQyIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1 bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0KKyBpZCAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkcyAg ICAgfCBkYXRlICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkZSAgICAgfCBkYXRl ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK1BlcmlvZHM6CisgICAgcDIgKGRzLCBk ZSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJwdDJfcDJfY2hlY2siIENIRUNLIChkcyA8 IGRlKQorCitkcm9wIHRhYmxlIHB0MjsKKy8qIENhbid0IGFkZCBhIHBlcmlvZCB3aG9zZSBu YW1lIGNvbmZsaWN0cyB3aXRoIGEgTElLRSdkIGNvbHVtbiAqLworY3JlYXRlIHRhYmxlIHB0 MiAobGlrZSBwdCwgcGVyaW9kIGZvciBpZCAoZHMsIGRlKSk7CitFUlJPUjogIHBlcmlvZCBu YW1lICJpZCIgY29uZmxpY3RzIHdpdGggYSBjb2x1bW4gbmFtZQorLyogQ1JFQVRFIFRBTEJF IElOSEVSSVRTICovCisvKiBDYW4ndCBpbmhlcml0IGZyb20gYSB0YWJsZSB3aXRoIGEgcGVy aW9kICovCitjcmVhdGUgdGFibGUgcHQyIChuYW1lIHRleHQpIGluaGVyaXRzIChwdCk7CitF UlJPUjogIEluaGVyaXRpbmcgZnJvbSBhIHRhYmxlIHdpdGggYSBQRVJJT0QgaXMgbm90IHN1 cHBvcnRlZAorLyogQ2FuJ3QgaW5oZXJpdCB3aXRoIGEgcGVyaW9kICovCitjcmVhdGUgdGFi bGUgcHQyIChkMnMgZGF0ZSwgZDJlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZDJzLCBkMmUpKSBp bmhlcml0cyAobm90X3ApOworRVJST1I6ICBJbmhlcml0aW5nIGlzIG5vdCBzdXBwb3J0ZWQg d2hlbiBhIHRhYmxlIGhhcyBhIFBFUklPRAorZHJvcCB0YWJsZSBub3RfcDsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdy ZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IDRmZDdmM2QwYzczLi42Njg1Y2MzNTdkZiAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC00Myw3ICs0Myw3IEBAIHRl c3Q6IGNvcHkgY29weXNlbGVjdCBjb3B5ZG1sIGluc2VydCBpbnNlcnRfY29uZmxpY3QKICMg Tm90ZTogbWFueSBvZiB0aGUgdGVzdHMgaW4gbGF0ZXIgZ3JvdXBzIGRlcGVuZCBvbiBjcmVh dGVfaW5kZXgKICMgLS0tLS0tLS0tLQogdGVzdDogY3JlYXRlX2Z1bmN0aW9uX2MgY3JlYXRl X21pc2MgY3JlYXRlX29wZXJhdG9yIGNyZWF0ZV9wcm9jZWR1cmUgY3JlYXRlX3RhYmxlIGNy ZWF0ZV90eXBlIGNyZWF0ZV9zY2hlbWEKLXRlc3Q6IGNyZWF0ZV9pbmRleCBjcmVhdGVfaW5k ZXhfc3BnaXN0IGNyZWF0ZV92aWV3IGluZGV4X2luY2x1ZGluZyBpbmRleF9pbmNsdWRpbmdf Z2lzdAordGVzdDogY3JlYXRlX2luZGV4IGNyZWF0ZV9pbmRleF9zcGdpc3QgY3JlYXRlX3Zp ZXcgaW5kZXhfaW5jbHVkaW5nIGluZGV4X2luY2x1ZGluZ19naXN0IHBlcmlvZHMKIAogIyAt LS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BlcmlvZHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcGVyaW9kcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmYwYmU4OTAyMTc5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcGVyaW9kcy5zcWwKQEAgLTAsMCArMSwxMTkgQEAKKy8qIFN5c3RlbSBwZXJpb2RzIGFy ZSBub3QgaW1wbGVtZW50ZWQgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMg ZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBzeXN0ZW1fdGltZSAoZHMsIGRlKSk7CisKKy8q IFBlcmlvZHMgbXVzdCBzcGVjaWZ5IGFjdHVhbCBjb2x1bW5zICovCitjcmVhdGUgdGFibGUg cHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoYm9ndXMs IGRlKSk7CitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUs IHBlcmlvZCBmb3IgcCAoZHMsIGJvZ3VzKSk7CisKKy8qIERhdGEgdHlwZXMgbXVzdCBtYXRj aCBleGFjdGx5ICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRl IHRpbWVzdGFtcCwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK2NyZWF0ZSB0YWJsZSBwdCAo aWQgaW50ZWdlciwgZHMgdGV4dCBjb2xsYXRlICJDIiwgZGUgdGV4dCBjb2xsYXRlICJQT1NJ WCIsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8qIFBlcmlvZHMgbXVzdCBoYXZlIGEg ZGVmYXVsdCBCVHJlZSBvcGVyYXRvciBjbGFzcyAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBp bnRlZ2VyLCBkcyB4bWwsIGRlIHhtbCwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKKworLyog UGVyaW9kIGFuZCBjb2x1bW4gbmFtZXMgYXJlIGluIHRoZSBzYW1lIG5hbWVzcGFjZSAqLwor Y3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2Qg Zm9yIGN0aWQgKGRzLCBkZSkpOworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBk YXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIGlkIChkcywgZGUpKTsKKworLyogUGVyaW9kIG5h bWUgY2FuJ3QgYmUgZ2l2ZW4gbW9yZSB0aGFuIG9uY2UgKi8KK2NyZWF0ZSB0YWJsZSBwdCAo aWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpLCBw ZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworCisvKiBOb3cgbWFrZSBvbmUgdGhhdCB3b3JrcyAq LworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJp b2QgZm9yIHAgKGRzLCBkZSkpOworCisvKiBTRUxFQ1QgKiBleGNsdWRlcyB0aGUgUEVSSU9E ICovCitpbnNlcnQgaW50byBwdCB2YWx1ZXMgKDEsICcyMDAwLTAxLTAxJywgJzIwMDEtMDEt MDEnKTsKK3NlbGVjdCAqIGZyb20gcHQ7CisKKy8qIFlvdSBjYW4gZ2V0IGl0IGlmIHlvdSB3 YW50ICovCitzZWxlY3QgKiwgcCBmcm9tIHB0OworCisvKiBUd28gYXJlIG9rYXkgKi8KK2Ny ZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBm b3IgcDEgKGRzLCBkZSksIHBlcmlvZCBmb3IgcDIgKGRzLCBkZSkpOworZHJvcCB0YWJsZSBw dDI7CisKKy8qCisgKiBBTFRFUiBUQUJMRSB0ZXN0cworICovCithbHRlciB0YWJsZSBwdCBk cm9wIHBlcmlvZCBmb3IgcDsKK2FsdGVyIHRhYmxlIHB0IGFkZCBwZXJpb2QgZm9yIHN5c3Rl bV90aW1lIChkcywgZGUpOworYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBmb3IgcCAoZHMs IGRlKTsKKworLyogQWRkaW5nIGEgc2Vjb25kIG9uZSAqLworY3JlYXRlIHRhYmxlIHB0MiAo aWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwMSAoZHMsIGRlKSk7 CithbHRlciB0YWJsZSBwdDIgYWRkIHBlcmlvZCBmb3IgcDIgKGRzLCBkZSk7Citkcm9wIHRh YmxlIHB0MjsKKworLyogQ2FuJ3QgZHJvcCBpdHMgY29sdW1ucyAqLworYWx0ZXIgdGFibGUg cHQgZHJvcCBjb2x1bW4gZHM7CithbHRlciB0YWJsZSBwdCBkcm9wIGNvbHVtbiBkZTsKKwor LyogQ2FuJ3QgY2hhbmdlIHRoZSBkYXRhIHR5cGVzICovCithbHRlciB0YWJsZSBwdCBhbHRl ciBjb2x1bW4gZHMgdHlwZSB0aW1lc3RhbXA7CithbHRlciB0YWJsZSBwdCBhbHRlciBjb2x1 bW4gZHMgdHlwZSB0aW1lc3RhbXA7CisKKy8qIGNvbHVtbi9wZXJpb2QgbmFtZXNwYWNlIGNv bmZsaWN0cyAqLworYWx0ZXIgdGFibGUgcHQgYWRkIGNvbHVtbiBwIGludGVnZXI7CithbHRl ciB0YWJsZSBwdCByZW5hbWUgY29sdW1uIGlkIHRvIHA7CithbHRlciB0YWJsZSBwdCBhZGQg cGVyaW9kIGZvciB0YWJsZW9pZCAoZHMsIGRlKTsKK2FsdGVyIHRhYmxlIHB0IGFkZCBwZXJp b2QgZm9yICIuLi4uLi4uLnBnLmRyb3BwZWQuNC4uLi4uLi4uIiAoZHMsIGRlKTsKKworLyog YWRkaW5nIGNvbHVtbnMgYW5kIHRoZSBwZXJpb2QgYXQgdGhlIHNhbWUgdGltZSAqLworY3Jl YXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlcik7CithbHRlciB0YWJsZSBwdDIgYWRkIGNvbHVt biBkcyBkYXRlLCBhZGQgY29sdW1uIGRlIGRhdGUsIGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBk ZSk7Citkcm9wIHRhYmxlIHB0MjsKKworLyogQW1iaWd1b3VzIHJhbmdlIHR5cGVzIHJhaXNl IGFuIGVycm9yICovCitjcmVhdGUgdHlwZSBteWRhdGVyYW5nZSBhcyByYW5nZShzdWJ0eXBl PWRhdGUpOworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBw ZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworCisvKiBZb3UgY2FuIGdpdmUgYW4gZXhwbGljaXQg cmFuZ2UgdHlwZSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50LCBkcyBkYXRlLCBkZSBk YXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0eXBlID0gJ215ZGF0ZXJh bmdlJykpOworZHJvcCB0eXBlIG15ZGF0ZXJhbmdlOworZHJvcCB0eXBlIG15ZGF0ZXJhbmdl IGNhc2NhZGU7Citkcm9wIHRhYmxlIHB0MjsKK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwg ZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlw ZSA9ICdkYXRlcmFuZ2UnKSk7CisKKy8qIFJhbmdlIHR5cGUgaXMgbm90IGZvdW5kICovCitj cmVhdGUgdGFibGUgcHQzIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3Ig cCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUgPSAnbm90YXJhbmdlJykpOworCisvKiBSYW5n ZSB0eXBlIGlzIHRoZSB3cm9uZyB0eXBlICovCitjcmVhdGUgdGFibGUgcHQzIChpZCBpbnQs IGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5 cGUgPSAndHN0enJhbmdlJykpOworZHJvcCB0YWJsZSBwdDI7CisKKy8qIENSRUFURSBUQUJM RSAoTElLRSAuLi4pICovCisKKy8qIFBlcmlvZHMgYXJlIG5vdCBjb3BpZWQgYnkgTElLRSwg c28gdGhlaXIgY29sdW1ucyBhcmVuJ3QgZWl0aGVyICovCitjcmVhdGUgdGFibGUgcHQyIChs aWtlIHB0KTsKK1xkIHB0MgorZHJvcCB0YWJsZSBwdDI7CisKKy8qIENhbiBhZGQgYSBwZXJp b2QgcmVmZXJyaW5nIHRvIExJS0UnZCBjb2x1bW5zICovCitjcmVhdGUgdGFibGUgbm90X3Ag KGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUpOworY3JlYXRlIHRhYmxlIHB0MiAobGlr ZSBub3RfcCwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK1xkIHB0MgorZHJvcCB0YWJsZSBw dDI7CisKKy8qIENhbiBhZGQgYSBwZXJpb2Qgd2l0aCB0aGUgc2FtZSBuYW1lICovCitjcmVh dGUgdGFibGUgcHQyIChsaWtlIHB0LCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworXGQgcHQy Citkcm9wIHRhYmxlIHB0MjsKKworLyogQ2FuIGFkZCBhIHBlcmlvZCB3aXRoIGEgZGlmZmVy ZW50IG5hbWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQsIHBlcmlvZCBmb3IgcDIg KGRzLCBkZSkpOworXGQgcHQyCitkcm9wIHRhYmxlIHB0MjsKKworLyogQ2FuJ3QgYWRkIGEg cGVyaW9kIHdob3NlIG5hbWUgY29uZmxpY3RzIHdpdGggYSBMSUtFJ2QgY29sdW1uICovCitj cmVhdGUgdGFibGUgcHQyIChsaWtlIHB0LCBwZXJpb2QgZm9yIGlkIChkcywgZGUpKTsKKwor LyogQ1JFQVRFIFRBTEJFIElOSEVSSVRTICovCisKKy8qIENhbid0IGluaGVyaXQgZnJvbSBh IHRhYmxlIHdpdGggYSBwZXJpb2QgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKG5hbWUgdGV4dCkg aW5oZXJpdHMgKHB0KTsKKworLyogQ2FuJ3QgaW5oZXJpdCB3aXRoIGEgcGVyaW9kICovCitj cmVhdGUgdGFibGUgcHQyIChkMnMgZGF0ZSwgZDJlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZDJz LCBkMmUpKSBpbmhlcml0cyAobm90X3ApOworCitkcm9wIHRhYmxlIG5vdF9wOwotLSAKMi40 Mi4wCgo= --------------4ZTQGZiKJvMMlo81itiM0iLZ--