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 1qsPcT-007w2S-Ub for pgsql-hackers@arkaria.postgresql.org; Mon, 16 Oct 2023 15:35:02 +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 1qsPcR-001zLB-QC for pgsql-hackers@arkaria.postgresql.org; Mon, 16 Oct 2023 15:35:00 +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 1qsPcQ-001zJJ-OZ for pgsql-hackers@lists.postgresql.org; Mon, 16 Oct 2023 15:35:00 +0000 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qsPcH-000m1X-RB for pgsql-hackers@lists.postgresql.org; Mon, 16 Oct 2023 15:34:57 +0000 Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-32db8f8441eso775609f8f.0 for ; Mon, 16 Oct 2023 08:34:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1697470487; x=1698075287; darn=lists.postgresql.org; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=DvcvAQFbRIPCsOQswM4b7ZkKyROp2jsMkyYwMWSbU5E=; b=eJBspjjdu1OerVFUP3Go5VExlq9Z813IOLbOwTbCz+I0dyR2wvFeHdOVm7fzwk6YVU rFBAYRKYGK76CHXdqVDm1LBCrZXk4WVVdhUUONV/hPjhjmkCkMD6PmzrithEMP4XVt6W c4B4K7X7wWnECeA2M6DnXaKadKxxUoH3Xlh1JPTi6Mf7SVgfozdUvTeEL3Gs/010pYHN 7xZulfD+AyE7aBleVRwwjm4DRDnCW8RYSA0TQicGEq5zoIm+wJmQdIk1UGUUsBxpHQms yr71pP3sMZg+KqGHApfUayEursmDPUngHKnokPoafkBkBhEYFTUIs7iQNrFIYavzd/Lo vPrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697470487; x=1698075287; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=DvcvAQFbRIPCsOQswM4b7ZkKyROp2jsMkyYwMWSbU5E=; b=ZiqQWly59AO+LTrmLyjHshZ85ob/MEGvQ6uTpkKYyRq/M6Y05B22JQX1AWUbss5Ixb eWRk7N0rT5wvKjFWDRTDUrDvX24PBTjgx8D/jSOl31ocw3M75VpsCSA6T9T0RdsKNzzM rQm+LjnN/oHY1s7Nj485TEzV2pcf+qqBVoceoWKMHiuz9SLnnwTkx5h+7cetVsTVQ2hu Omw+DaO4n/M1x6OXVXwOq/6gjTDEKvecLFwOkjH7fQNHsji+5bGydDUh+XxSTGEn6Bn8 csK02X2oITIJv+8+Sh+2gwzJROcsFJuruQB1alyEiMVUk1tEILgK507TwV0yUbGE/ofW u+ng== X-Gm-Message-State: AOJu0Yz05HqNOhYMKNp5YUb+ioR15pFSb8kDhQ4WU9jsZYls4SSPPFbr ZIYQVzPOpImhmucgsy4qBKbf0Q== X-Google-Smtp-Source: AGHT+IHUFkah18EuBGuBx85yqtjxgKNlUXctKE+Bxb9hfwy8cZsfD6nkCnieqL9Y4fWUaOTFao9u5Q== X-Received: by 2002:a5d:538b:0:b0:319:67ac:4191 with SMTP id d11-20020a5d538b000000b0031967ac4191mr27829030wrv.37.1697470486128; Mon, 16 Oct 2023 08:34:46 -0700 (PDT) Received: from [10.137.0.17] (srv1.mobissw.com. [89.235.0.226]) by smtp.gmail.com with ESMTPSA id e4-20020a5d5944000000b003247d3e5d99sm7971290wri.55.2023.10.16.08.34.45 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 16 Oct 2023 08:34:45 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------a1GjYnA7k79ug88wdVKlHsRH" Message-ID: <06bb7d02-2c44-3062-731e-a735ba13da7e@enterprisedb.com> Date: Mon, 16 Oct 2023 17:34:44 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: index prefetching Content-Language: en-US From: Tomas Vondra To: Andres Freund Cc: PostgreSQL Hackers , Georgios References: <20230609000600.syqy447e6metnvyj@awork3.anarazel.de> <20230610203456.5gancfekm4pj4pbs@awork3.anarazel.de> <6030d836-e8b7-e7b9-2cbb-144309679d03@enterprisedb.com> <8c86c3a6-074e-6c88-3e7e-9452b6a37b9b@enterprisedb.com> <3cd40425-965a-5ce1-1af3-d51971c44b93@enterprisedb.com> <8ec36f51-b863-60e3-20e2-b9c981c5ce5e@enterprisedb.com> In-Reply-To: <8ec36f51-b863-60e3-20e2-b9c981c5ce5e@enterprisedb.com> 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. --------------a1GjYnA7k79ug88wdVKlHsRH Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, Attached is a v6 of the patch, which rebases v5 (just some minor bitrot), and also does a couple changes which I kept in separate patches to make it obvious what changed. 0001-v5-20231016.patch ---------------------- Rebase to current master. 0002-comments-and-minor-cleanup-20231012.patch ---------------------------------------------- Various comment improvements (remove obsolete ones clarify a bunch of other comments, etc.). I tried to explain the reasoning why some places disable prefetching (e.g. in catalogs, replication, ...), explain how the caching / LRU works etc. 0003-remove-prefetch_reset-20231016.patch ----------------------------------------- I decided to remove the separate prefetch_reset parameter, so that all the index_beginscan() methods only take a parameter specifying the maximum prefetch target. The reset was added early when the prefetch happened much lower in the AM code, at the index page level, and the reset was when moving to the next index page. But now after the prefetch moved to the executor, this doesn't make much sense - the resets happen on rescans, and it seems right to just reset to 0 (just like for bitmap heap scans). 0004-PoC-prefetch-for-IOS-20231016.patch ---------------------------------------- This is a PoC adding the prefetch to index-only scans too. At first that may seem rather strange, considering eliminating the heap fetches is the whole point of IOS. But if the pages are not marked as all-visible (say, the most recent part of the table), we may still have to fetch them. In which case it'd be easy to see cases that IOS is slower than a regular index scan (with prefetching). The code is quite rough. It adds a separate index_getnext_tid_prefetch() function, adding prefetching on top of index_getnext_tid(). I'm not sure it's the right pattern, but it's pretty much what index_getnext_slot() does too, except that it also does the fetch + store to the slot. Note: There's a second patch adding index-only filters, which requires the regular index scans from index_getnext_slot() to _tid() too. The prefetching then happens only after checking the visibility map (if requested). This part definitely needs improvements - for example there's no attempt to reuse the VM buffer, which I guess might be expensive. index-prefetch.pdf ------------------ Attached is also a PDF with results of the same benchmark I did before, comparing master vs. patched with various data patterns and scan types. It's not 100% comparable to earlier results as I only ran it on a laptop, and it's a bit noisier too. The overall behavior and conclusions are however the same. I was specifically interested in the IOS behavior, so I added two more cases to test - indexonlyscan and indexonlyscan-clean. The first is the worst-case scenario, with no pages marked as all-visible in VM (the test simply deletes the VM), while indexonlyscan-clean is the good-case (no heap fetches needed). The results mostly match the expected behavior, particularly for the uncached runs (when the data is expected to not be in memory): * indexonlyscan (i.e. bad case) - About the same results as "indexscans", with the same speedups etc. Which is a good thing (i.e. IOS is not unexpectedly slower than regular indexscans). * indexonlyscan-clean (i.e. good case) - Seems to have mostly the same performance as without the prefetching, except for the low-cardinality runs with many rows per key. I haven't checked what's causing this, but I'd bet it's the extra buffer lookups/management I mentioned. I noticed there's another prefetching-related patch [1] from Thomas Munro. I haven't looked at it yet, so hard to say how much it interferes with this patch. But the idea looks interesting. [1] https://www.postgresql.org/message-id/flat/CA+hUKGJkOiOCa+mag4BF+zHo7qo=o9CFheB8=g6uT5TUm2gkvA@mail.gmail.com regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------a1GjYnA7k79ug88wdVKlHsRH Content-Type: application/pdf; name="index-prefetch.pdf" Content-Disposition: attachment; filename="index-prefetch.pdf" Content-Transfer-Encoding: base64 JVBERi0xLjQKJSDi48/TCjMKMApvYmoKPDwKL1R5cGUKL0NhdGFsb2cKL05hbWVzCjw8Cj4+ Ci9QYWdlTGFiZWxzCjw8Ci9OdW1zClsKMAo8PAovUwovRAovU3QKMQo+PgpdCj4+Ci9PdXRs aW5lcwoyCjAKUgovUGFnZXMKMQowClIKPj4KZW5kb2JqCjQKMApvYmoKPDwKL0NyZWF0b3IK KP7/AEcAbwBvAGcAbABlACAAUwBoAGUAZQB0AHMpCi9UaXRsZQoo/v8AVQBuAHQAaQB0AGwA ZQBkACAAcwBwAHIAZQBhAGQAcwBoAGUAZQB0KQo+PgplbmRvYmoKNQowCm9iago8PAovVHlw ZQovUGFnZQovUGFyZW50CjEKMApSCi9NZWRpYUJveApbCjAKMAo4NDIKNTk1Cl0KL0NvbnRl bnRzCjYKMApSCi9SZXNvdXJjZXMKNwowClIKL0Fubm90cwo5CjAKUgovR3JvdXAKPDwKL1MK L1RyYW5zcGFyZW5jeQovQ1MKL0RldmljZVJHQgo+Pgo+PgplbmRvYmoKNgowCm9iago8PAov RmlsdGVyCi9GbGF0ZURlY29kZQovTGVuZ3RoCjgKMApSCj4+CnN0cmVhbQp4nLV9Xa8kuZFd AX4x7pMXmtsf0/24D5KBuc6PIpl8Xaw0I3kMaaSWdm1JT17Yi8XMGrsw4L/vrEx+HWYEs4oR pYFmbvRln5NJnmRkBIPMf3sZ34aX2z/f7D8Yb9b//s+fXv7tZXhzZvtV+mH94+HNWG8HO4bf lNb664h2++84ujfv7GRfxsm+XYd5nOsm4W99M60/b/9af+1mF60fozWOs9ns7Y/RCi3/+eUf Xv515w3///f//TLOzm40G+7+44/xx2ncKfY2aO2I/4vB29r+VOPslp1LHLRCyxvw8La4qxn8 cvvJX9e+smsfv/nJXP0w3bi2AfkmMO1//xvqirc/LH/+5mGWadhYrLHR+DEY4fq3VuXPodHO YYZxFcGNwzh7dYO9KSb82Uphjckc8doHopf2hmAAjzd2sZPb7uDGY/ztJ3e7mXQrdipuxU7F rayqueYbQMtOb8yIh2uayosPrYOVkPamlVkgr9fqp/F2D9uPdnDLdS7/dBdYyXedS77dWq6R 3Rysii1TLMO8smzEYYhuZNcZyDyQ+ZJsb4kWki3LNJu5usnwhxuXL7lMOT7BSujeHKxqgKr+ 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 BZamQklgjc0INPJe7Sn9HJF2PxcejEUWB5DayFN7DCUBZPsJVPFgjDre949h8mDMRcvDR3bK 69+jN55ByxOhLHT/kZjXdk+LNydwwN27E0IkN07EBnhx1SeJqhnJkQQahTMssDSSY4GFm995 YLEfpIBVEqkk8u4HxYlUZWWUfpBD7j0Y7XwIxYlU7WvOiVT2EdfwhLQ+BAU/qXCmMTOJfSEH 3X+uyngG3e9mYzzHPOWCzyPEsItAVk2kPsADnz/6Yf3n/wNWwzPnCmVuZHN0cmVhbQplbmRv YmoKOAowCm9iagoxMTY1OQplbmRvYmoKOQowCm9iagpbCl0KZW5kb2JqCjEyCjAKb2JqCjw8 Ci9UeXBlCi9QYWdlCi9QYXJlbnQKMQowClIKL01lZGlhQm94ClsKMAowCjg0Mgo1OTUKXQov Q29udGVudHMKMTMKMApSCi9SZXNvdXJjZXMKMTQKMApSCi9Bbm5vdHMKMTYKMApSCi9Hcm91 cAo8PAovUwovVHJhbnNwYXJlbmN5Ci9DUwovRGV2aWNlUkdCCj4+Cj4+CmVuZG9iagoxMwow Cm9iago8PAovRmlsdGVyCi9GbGF0ZURlY29kZQovTGVuZ3RoCjE1CjAKUgo+PgpzdHJlYW0K eJy9fd+PJLlxZj0a/WZouqd7ev6A84P68hfJ4utB3l3Ye1itPNIKkPx0xp1hSD7YOOD+/auq TAYjIiMysxhRp4VmO7Y535dJfsnIiCCZ//HUf3RP139+Pf8Qcrj8+3/89ek/nrqPFG6/gh8u /7n7CDHHLvbLb7B1+XVBu/6779NHTnGIT/0QP6Zu7Efe5Erbj9PM+Ovh9pfG678uzdKYqv2X Yg9DzDf71ppa0PZfn355+vfLxeUQz3G4XvxHjlPqQr7+lIYw5af//F/zLV/+0ngjjCFW8y+L eSE4zwT9yoKm//r0P+cbXv5/gY4hYOx+TAR8sQFvbs7MFf7l2s/nYQzj7afp0p/pynX5FyWb RkpW7BvqX2p7bq/pLmObLkT4xyvhNDLCzAgzJSztuS0QDv11zPCPN8JMCQMdK7CBIAfR3uzQ +acrXWCjF3tKV+wCX9pzG9HRewtDnvrh+tOUuz7PNxl7xso0U+zCUtpzm7LCCCa41XR7Arr5 XiMTT2LiSUw8kYkn3iseUN9E1XqzkVpvd4vUye2l/XKb52689G9k/YzGFDRYaDOjzZS2tOc2 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 ClIKL1Jlc291cmNlcwoxOQowClIKL0Fubm90cwoyMQowClIKL0dyb3VwCjw8Ci9TCi9UcmFu c3BhcmVuY3kKL0NTCi9EZXZpY2VSR0IKPj4KPj4KZW5kb2JqCjE4CjAKb2JqCjw8Ci9GaWx0 ZXIKL0ZsYXRlRGVjb2RlCi9MZW5ndGgKMjAKMApSCj4+CnN0cmVhbQp4nL19Xa8kOW5lPhr3 zai63/cH2A9TGx8ZUurVaHc37DZ6ul0zPYsZP62xNoyxDRsG9u9vZEaIIhlkfJDKnsJUFfuq zomQTohBkVL810P7pXm4/vrN9JchDeOf/+ffH/7rofkSh9uP4C/jf26+DCGFJrTzT7A1/jij Xf9s2/glxdCFh7YLX85N3/a8yUjbdeEyMf6mG/8czTD+MTaLfSz2n7Pdjzg3+9aaWtD2Xx9+ efiP8eLSEC6hu178lxTOsRnS9W+xG87p4b//Zbrl8R/FG2EYQjH/PJsjQTcRtAsLmv7rw/+d bnj+/wgdhgFjt30k4LMNeFNzZhL88bovl64f+uvfxi6Pl/P016693uSVcwSlpOeekmb7kvJF DKLNbotQj7RjuxvduWd0idElSpfbc5veJb635V9vvInyDnTgwAaeNIi2PnojBKUILaXIdobM 7bnNBrDpx+EKeNhoj4aW0TLVZDvT5PbcprSlF2cq/AyMmJQzMtFEJprARBOWoqH3tyHWy4WK 9WYXsfZtQ8TJ7dweiVWTTc8IEyNMlHBuz21MuOehBPVdqFoz7WwXmjRINqPdfkpAkheqpcw7 28Azt+c25Z0E1N3GtZ80NP7H1LRpdAFYTZk1slGNbFQDG9WwHNVdd5vV0SSipslGaho6qiZu z+2lOSHrASgSo5jtvqX64Taj2JzngDArpYFJhhGmQbTXCZFUswQy4TzLAWG2M0Fuz+0loeg/ 5tmq0EVGFyldbs9tRLdLK4FpJTKtZBt44iDaR3lBEA0VUA9POtVobs/tuT0eTzTbLqceIATB wCPOCNMg2ohQn9qXUw/wgm7yQ95S3tye28KNKiPaMsLICCMlzO25TW70MtxUe76Sncd32XB7 jbxOdc2F6Cizgm4aqiNgYXMO+ffHPWc/tHSuG2CimezY07mN23P7w/oF3sR4E+XN7blNecs7 CX4nmuYLLOLMCqKFSYexpkG0Gav8KlZoQZMt1fAAkw+lze25fbSTQZqZNzLeSHlze24j3vVJ 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 ZW50cwoyMwowClIKL1Jlc291cmNlcwoyNAowClIKL0Fubm90cwoyNgowClIKL0dyb3VwCjw8 Ci9TCi9UcmFuc3BhcmVuY3kKL0NTCi9EZXZpY2VSR0IKPj4KPj4KZW5kb2JqCjIzCjAKb2Jq Cjw8Ci9GaWx0ZXIKL0ZsYXRlRGVjb2RlCi9MZW5ndGgKMjUKMApSCj4+CnN0cmVhbQp4nL19 XY/lOJLdfTTyyUZV3syszB+w8zDpe/VBiq/GuKexaKOn2zU9A3Tvkxf2YjG7xi4W8N+3riQG I4JBShnBW1OY7oxK9jkSeRShYJDUvz1c3y8Ptz+/X38Ywzj/+3/9y8O/PVze/bj8Cn6Y//ry PrrgLu66/QZb868j2u3f16t/D9517uHauffh0l973mSm7YdLtzL+/vbv2bzM/5qb+d4n+2/R HsblX39bW1ML2v7Tw18e/nW+uDC6yXW3i38PbvCXMdx+8t04hId//z/rLc//0XUhdKNL5t82 cyZwK8E1s6DpPz387/WGt//P0G4cMfa19wR8swFvbc5Mgj9f9zR1/djffgrd9XZn6C9nyhmT cg495Yx218drGEWb3dWN5NLPlA7/eCMcekYYGGGghLE9twVCuFV0f0OgdCMdMLABPoyizXp1 mHXpy706spF0V8oa7cgS23ObsiKu+fnx80Xgv73xuivjZQqKduSJ7blNef3tMXCsi9ceWEiZ hDyTkGcSckxCLpcQu8P8RyzdrqPSXWwk3WGgUuX21j7e7PKg03sV5AukgZEGShrbcxuRRvmC plDfghw7Kt9IF22AD6No53RYTEhBoMSOKjcSRjsSxPbcpp2KRnBxrgP2rli4QOsZrae0sT23 q92KhtEx7XimHc+045h2XK4d5syT3HoqzwEc2Wq7kcqR21v7ug9AjwUoLvIGxhsob2zPbcqL hi316OYYsFAjKwgTPBpjDaNoI9ZjQo2EIExwZZQwtuc2vc09xw66i6yesXrKGttzm7Lu+BzH lOSZkjxTkmNKcqKS0JuBHExAkAMVsANXttqTo4Ll9tYeD2lduUAYGGGghLE9t3NCMW6BBAcq WQeujNGFUbSF+6tLNhKCRMGJUcLYntuI8JBHABFGXs94PeWN7blNedH7XeFZYfrxTD+e6ccx /ThZP5KPnUYq0Ql82WKPF08kye3Y/vCrBygv8gbGGyjv1p7bjLfQo7liIy0oFHwaow2jZHNa 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 uI3yPFGNb5YACROgZcdlDpECsuW7VF0F96nBUeQSboudFTKuflq1PnL6oI4zPXevA2RSZBAp 2sQzEbpNpidAny1LT1E8E6Aft8Ud2mPS4B270COmQ9h8Df15yVFfmkxXNlYKDmNFaHumJ0I/ G2JNV4NutONBFuFrm0peSYVfLEtlUyAr+ixzIBOQm+R64jja63hyT+j3JgwVXEOATLleQXSm NaHDlO+q/+X0/enr6a/zP386/eX0w+kPpx9tZUKBw7w2VAJtuTY0x293rggOwuJt6P0IDsJF aGUQdjvQ+rwGHVMuQT8aVsPjamFBMvpXHhx+Gw8kDr/Nod3doFH4LWrEfAi5rBFD+RTlkAWN vDZYE1rCVlfJYBFN2Rmag6+AbMlOpyqufUOGjGvfcFj2HeYscrzc+/SZnOEen3c8wnI2f4jj CEuDD3HIg2IIQ10V+tFQvEURriQlw4zj5UPjaziN5luIFX2K4wiN+osfKQrKI2IIVSkKlnWk 3pYYo2DZJamTZyg1StiWUmOMgeVrtsZA+YrtCaiMaz+gtHlP+PrYaaN2zA/HPt/Mb15GKoG2 zA9z/LvsHZRvw5DEXT5yA9oEFwfS4g0oj3brqtCWNAAH0oJ62gTSO0oHB9K70kAKWR5gcwop QxvGAAVPUTufLfO3EDwL2nltsKO/7NWss7cSsiEhgxO+S1es31bod5D135saqn2hX8y6N3po 3dJP85//DwaxQZsKZW5kc3RyZWFtCmVuZG9iagoyNQowCm9iagoxMzI0NQplbmRvYmoKMjYK MApvYmoKWwpdCmVuZG9iagoyNwowCm9iago8PAovVHlwZQovUGFnZQovUGFyZW50CjEKMApS Ci9NZWRpYUJveApbCjAKMAo4NDIKNTk1Cl0KL0NvbnRlbnRzCjI4CjAKUgovUmVzb3VyY2Vz CjI5CjAKUgovQW5ub3RzCjMxCjAKUgovR3JvdXAKPDwKL1MKL1RyYW5zcGFyZW5jeQovQ1MK L0RldmljZVJHQgo+Pgo+PgplbmRvYmoKMjgKMApvYmoKPDwKL0ZpbHRlcgovRmxhdGVEZWNv ZGUKL0xlbmd0aAozMAowClIKPj4Kc3RyZWFtCnicvX1dryQ3cmU9GvfNuLeq7tcP2HmY3vwk i68LWSPYWmg07pEGkPy0xq5hjL2wYWD//lZlJoMRkUFmVgRLaqjVocs+J5M8ychgkJH/8dR+ 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 gkgR2VDz3ZXG71YmBrnpH6+//j9O4wPGCmVuZHN0cmVhbQplbmRvYmoKMzAKMApvYmoKMTM4 NzQKZW5kb2JqCjMxCjAKb2JqClsKXQplbmRvYmoKMzIKMApvYmoKPDwKL1R5cGUKL1BhZ2UK L1BhcmVudAoxCjAKUgovTWVkaWFCb3gKWwowCjAKODQyCjU5NQpdCi9Db250ZW50cwozMwow ClIKL1Jlc291cmNlcwozNAowClIKL0Fubm90cwozNgowClIKL0dyb3VwCjw8Ci9TCi9UcmFu c3BhcmVuY3kKL0NTCi9EZXZpY2VSR0IKPj4KPj4KZW5kb2JqCjMzCjAKb2JqCjw8Ci9GaWx0 ZXIKL0ZsYXRlRGVjb2RlCi9MZW5ndGgKMzUKMApSCj4+CnN0cmVhbQp4nL1dXY8ruXGdR0Nv gUbSSDM/IPtguT/J5mvgrA0jhrPOJA6w9lMMxzC8DmwYyN9Pf5BFVnWxqalqZS9279SKcw6b PF3VxWJTfz3U9+ow/fnx8kPv+vHv//rh8NdDdbf9/BH8MP7v6t4bZypT+09Sa/w4oE1/17W9 O2sac6gbc++qtm5pk5G2N7ZaGH/cjH/3xgzjX2Mz29po/znYpq6b2Z5bYwva/vHwm8Nfxs65 3gymmTp/d6azVe+mn2zTd+7wt/9eLnn8JTcTmt5E88/eHAnqhaBeWdD0j4c/LBfs/x2hTd+n 2HXnEDjYrvZkPWcm+GO/x4G2Q9dmfhxJR1TM2uNLAtvTQHtq569rhMAUpsYUwQ6QPb4y/PuR YrqQpp6ma/pxGJq2Xy7J1ITPEj6L+UJ7ajN8/BgaiwltiwmDDQS2Z+2yNly1MLThEqoFYbFB a0tzYkLr5IKGqh3H0KQ/ThfUWkzXtZjO29bfSaE9tVPCOEVkHP0UzlpsCa0jtA7T+vbUpteZ ahHkW2G5BwpvR0jXcza5sng541/j1SOXEfVcYf0HTm8Dh29Pbco5ualu8lPTsDaum34a/efo tNBdAKxEMt4GFt+e2oR1uqiqGX8yoJx+oqwMuhMCqSXCsUQ4hgjH8MKJKk3v+GWoE73aWe8/ JPoMTsrbbYv1Sm3fnhVOSygcoXCYIrSnNqFAkkmuCHRXI50CXbAB3vWsvaZLRjC990B0NRIp EAY7EIT21H7w+kBtgc4SOovpQntqM3TgZVI6IhBLBGKJQAwRiFkLBF0ZH4hAZg2WZQv+arHn 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 7ISeFWfTpnlgRoryJYk0D2SH5U3z1R9JHpiZUMUaapIHZnquOOG13ZzQMCzKjalZ3yVeOY0h kkHeJURmeizPL61fqmag6VL1Sb5UHSPmvgMTIyaLK00206TQPPlQHJZhWYt8kx9b026jX/1K ijopZNHP/v6UbrYZMau25tC/X1KrRJR+DU4kyyRBZK/jOIcO9buLGfRXv6lR+1UaGfibz8zF x8Btw7/Nz0mK/TelwVHVbpvCzC77qPdIEFn4kz+3SfztyaXBuSoOzEoSRAZ9h3cXM7jy6Nds 4ipiX4iqGR8vHom4CppBVu/C2YhL2h2rphrW7/7rd6yysPtmigxBODpV5kfSTJEFv6q+hKoA /qZYgUszRRb8Nntv7dGpWXD51hK3PaHhsEB9psiCK7f0bIGHb9SQHp1q/PcHM+DrxyLF9wcn WWNG86q3/rfBNS9mpVkjC37WHIcQs8aMHxNXtmL1MIMsXwCFyMkgf+j38Wz4dPXSKtvjHRJF BvddHI+TRLGunnywDctwmZ805UegxESRR7/5L+RT7l3NoJ/9Hkdt9ZBHP/lNgtrqYQ79qDhm 2xVmNdQmpZGoOK1X3XcKl+BVuz/rByZWcXx6U5jZV//8ot27mu39SfO1KW1hal915w1Acsih a5LDEOTyflIb5Pgey9PO4TkjAcnh7iNhH56778Y//wccaVKjCmVuZHN0cmVhbQplbmRvYmoK MzUKMApvYmoKNTcxOQplbmRvYmoKMzYKMApvYmoKWwpdCmVuZG9iago3CjAKb2JqCjw8Ci9G b250Cjw8Ci9Gb250MAoxMAowClIKL0ZvbnQxCjExCjAKUgo+PgovUGF0dGVybgo8PAo+Pgov WE9iamVjdAo8PAo+PgovRXh0R1N0YXRlCjw8Cj4+Ci9Qcm9jU2V0ClsKL1BERgovVGV4dAov SW1hZ2VCCi9JbWFnZUMKL0ltYWdlSQpdCj4+CmVuZG9iagoxNAowCm9iago8PAovRm9udAo8 PAovRm9udDEKMTEKMApSCj4+Ci9QYXR0ZXJuCjw8Cj4+Ci9YT2JqZWN0Cjw8Cj4+Ci9FeHRH U3RhdGUKPDwKPj4KL1Byb2NTZXQKWwovUERGCi9UZXh0Ci9JbWFnZUIKL0ltYWdlQwovSW1h Z2VJCl0KPj4KZW5kb2JqCjE5CjAKb2JqCjw8Ci9Gb250Cjw8Ci9Gb250MQoxMQowClIKPj4K L1BhdHRlcm4KPDwKPj4KL1hPYmplY3QKPDwKPj4KL0V4dEdTdGF0ZQo8PAo+PgovUHJvY1Nl dApbCi9QREYKL1RleHQKL0ltYWdlQgovSW1hZ2VDCi9JbWFnZUkKXQo+PgplbmRvYmoKMjQK MApvYmoKPDwKL0ZvbnQKPDwKL0ZvbnQxCjExCjAKUgo+PgovUGF0dGVybgo8PAo+PgovWE9i amVjdAo8PAo+PgovRXh0R1N0YXRlCjw8Cj4+Ci9Qcm9jU2V0ClsKL1BERgovVGV4dAovSW1h Z2VCCi9JbWFnZUMKL0ltYWdlSQpdCj4+CmVuZG9iagoyOQowCm9iago8PAovRm9udAo8PAov Rm9udDEKMTEKMApSCj4+Ci9QYXR0ZXJuCjw8Cj4+Ci9YT2JqZWN0Cjw8Cj4+Ci9FeHRHU3Rh dGUKPDwKPj4KL1Byb2NTZXQKWwovUERGCi9UZXh0Ci9JbWFnZUIKL0ltYWdlQwovSW1hZ2VJ Cl0KPj4KZW5kb2JqCjM0CjAKb2JqCjw8Ci9Gb250Cjw8Ci9Gb250MQoxMQowClIKPj4KL1Bh dHRlcm4KPDwKPj4KL1hPYmplY3QKPDwKPj4KL0V4dEdTdGF0ZQo8PAo+PgovUHJvY1NldApb Ci9QREYKL1RleHQKL0ltYWdlQgovSW1hZ2VDCi9JbWFnZUkKXQo+PgplbmRvYmoKMTAKMApv YmoKPDwKL1R5cGUKL0ZvbnQKL1N1YnR5cGUKL1R5cGUwCi9CYXNlRm9udAovTVVGVVpZK0Fy aWFsLUl0YWxpY01UCi9FbmNvZGluZwovSWRlbnRpdHktSAovRGVzY2VuZGFudEZvbnRzClsK MzcKMApSCl0KL1RvVW5pY29kZQozOAowClIKPj4KZW5kb2JqCjExCjAKb2JqCjw8Ci9UeXBl Ci9Gb250Ci9TdWJ0eXBlCi9UeXBlMAovQmFzZUZvbnQKL01VRlVaWStBcmlhbE1UCi9FbmNv ZGluZwovSWRlbnRpdHktSAovRGVzY2VuZGFudEZvbnRzClsKNDEKMApSCl0KL1RvVW5pY29k ZQo0MgowClIKPj4KZW5kb2JqCjM4CjAKb2JqCjw8Ci9GaWx0ZXIKL0ZsYXRlRGVjb2RlCi9M ZW5ndGgKNDUKMApSCj4+CnN0cmVhbQp4nF2Sy26DMBBF9/4KL9NFBHEgNBKyVKWqxKIPlfYD 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 2c5YlR3FDvTRbpyLFi3GD7mrZ1W1/VsY+1kco4uoJlwwpiZcOWp83W5VrQ6HGqvqUVYcL7NY qlu0I9HC7iisEIWS1NawrcxkijUENx4bUchGeFkZhlAfXIihoKP2HFy0UL9ig/4fzL6lpApl bmRzdHJlYW0KZW5kb2JqCjM3CjAKb2JqCjw8Ci9UeXBlCi9Gb250Ci9TdWJ0eXBlCi9DSURG b250VHlwZTIKL0Jhc2VGb250Ci9NVUZVWlkrQXJpYWwtSXRhbGljTVQKL0NJRFN5c3RlbUlu Zm8KPDwKL1JlZ2lzdHJ5CihBZG9iZSkKL09yZGVyaW5nCihVQ1MpCi9TdXBwbGVtZW50CjAK Pj4KL0ZvbnREZXNjcmlwdG9yCjM5CjAKUgovQ0lEVG9HSURNYXAKL0lkZW50aXR5Ci9EVwo1 NTYKL1cKWwowClsKNzUwCjAKMAoyNzcKXQo0CjM1CjAKMzYKWwo2NjYKXQozNwozOQowCjQw ClsKNjY2CjAKNzc3Cl0KNDMKNTIKMAo1MwpbCjcyMgpdCjU0CjU2CjAKNTcKWwo2NjYKXQo1 OAo2NQowCjY2ClsKNTU2CjAKNTU2CjU1Ngo1MDAKNTU2CjU1NgoyNzcKNTU2CjU1NgoyMjIK MAowCjIyMgo4MzMKXQo4MQo4Mwo1NTYKODQKWwowCjMzMwo1MDAKMjc3CjU1NgowCjcyMgow CjUwMApdCl0KPj4KZW5kb2JqCjM5CjAKb2JqCjw8Ci9UeXBlCi9Gb250RGVzY3JpcHRvcgov Rm9udE5hbWUKL01VRlVaWStBcmlhbC1JdGFsaWNNVAovRmxhZ3MKNjgKL0ZvbnRCQm94ClsK LTUxNwotMzI0CjEzNTgKOTk3Cl0KL0FzY2VudAo3MjgKL0Rlc2NlbnQKLTIwNwovSXRhbGlj QW5nbGUKLTEyLjAKL0NhcEhlaWdodAo3MTUKL1N0ZW1WCjgwCi9Gb250RmlsZTIKNDAKMApS Cj4+CmVuZG9iago0MgowCm9iago8PAovRmlsdGVyCi9GbGF0ZURlY29kZQovTGVuZ3RoCjQ3 CjAKUgo+PgpzdHJlYW0KeJxdUUtvhCAQvvMrOG4PG8FVu00MSbNNEw99pLY/AGG0JBUJ4sF/ Xxx2tw8Swe81gZns1Dw01gSavfpJtRBob6z2ME+LV0A7GIwlPKfaqHBGuKtROpLFcLvOAcbG 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 q2JTGJD8BwKyCuAKZW5kc3RyZWFtCmVuZG9iago0MQowCm9iago8PAovVHlwZQovRm9udAov U3VidHlwZQovQ0lERm9udFR5cGUyCi9CYXNlRm9udAovTVVGVVpZK0FyaWFsTVQKL0NJRFN5 c3RlbUluZm8KPDwKL1JlZ2lzdHJ5CihBZG9iZSkKL09yZGVyaW5nCihVQ1MpCi9TdXBwbGVt ZW50CjAKPj4KL0ZvbnREZXNjcmlwdG9yCjQzCjAKUgovQ0lEVG9HSURNYXAKL0lkZW50aXR5 Ci9EVwo1NTYKL1cKWwowClsKNzUwCl0KMQo3CjAKOApbCjg4OQpdCjkKMTUKMAoxNgpbCjMz MwoyNzcKMApdCjE5CjI4CjU1NgoyOQo2NwowCjY4CjY5CjU1Ngo3MApbCjUwMAo1NTYKNTU2 CjI3NwowCjU1NgoyMjIKMAowCjIyMgo4MzMKXQo4MQo4NAo1NTYKODUKWwozMzMKNTAwCjI3 Nwo1NTYKNTAwCjAKNTAwCjUwMApdCl0KPj4KZW5kb2JqCjQzCjAKb2JqCjw8Ci9UeXBlCi9G b250RGVzY3JpcHRvcgovRm9udE5hbWUKL01VRlVaWStBcmlhbE1UCi9GbGFncwo0Ci9Gb250 QkJveApbCi02NjQKLTMyNAoyMDAwCjEwMDUKXQovQXNjZW50CjcyOAovRGVzY2VudAotMjEw Ci9JdGFsaWNBbmdsZQowCi9DYXBIZWlnaHQKNzE2Ci9TdGVtVgo4MAovRm9udEZpbGUyCjQ0 CjAKUgo+PgplbmRvYmoKNDUKMApvYmoKMzEyCmVuZG9iago0NgowCm9iagoxNDQzNwplbmRv YmoKNDcKMApvYmoKMjg3CmVuZG9iago0OAowCm9iagoyMTc3MwplbmRvYmoKMQowCm9iago8 PAovVHlwZQovUGFnZXMKL0tpZHMKWwo1CjAKUgoxMgowClIKMTcKMApSCjIyCjAKUgoyNwow ClIKMzIKMApSCl0KL0NvdW50CjYKPj4KZW5kb2JqCnhyZWYKMCA0OQowMDAwMDAwMDAyIDY1 NTM1IGYgCjAwMDAxMTA4NTMgMDAwMDAgbiAKMDAwMDAwMDAwMCAwMDAwMCBmIAowMDAwMDAw MDE2IDAwMDAwIG4gCjAwMDAwMDAxNDIgMDAwMDAgbiAKMDAwMDAwMDI1NSAwMDAwMCBuIAow MDAwMDAwNDIwIDAwMDAwIG4gCjAwMDAwNzEyNjcgMDAwMDAgbiAKMDAwMDAxMjE1MyAwMDAw MCBuIAowMDAwMDEyMTc0IDAwMDAwIG4gCjAwMDAwNzIxMzggMDAwMDAgbiAKMDAwMDA3MjI4 OSAwMDAwMCBuIAowMDAwMDEyMTkzIDAwMDAwIG4gCjAwMDAwMTIzNjIgMDAwMDAgbiAKMDAw MDA3MTQyMyAwMDAwMCBuIAowMDAwMDI0NjY2IDAwMDAwIG4gCjAwMDAwMjQ2ODggMDAwMDAg biAKMDAwMDAyNDcwOCAwMDAwMCBuIAowMDAwMDI0ODc3IDAwMDAwIG4gCjAwMDAwNzE1NjYg MDAwMDAgbiAKMDAwMDAzNzUyNyAwMDAwMCBuIAowMDAwMDM3NTQ5IDAwMDAwIG4gCjAwMDAw Mzc1NjkgMDAwMDAgbiAKMDAwMDAzNzczOCAwMDAwMCBuIAowMDAwMDcxNzA5IDAwMDAwIG4g CjAwMDAwNTEwNTkgMDAwMDAgbiAKMDAwMDA1MTA4MSAwMDAwMCBuIAowMDAwMDUxMTAxIDAw MDAwIG4gCjAwMDAwNTEyNzAgMDAwMDAgbiAKMDAwMDA3MTg1MiAwMDAwMCBuIAowMDAwMDY1 MjIwIDAwMDAwIG4gCjAwMDAwNjUyNDIgMDAwMDAgbiAKMDAwMDA2NTI2MiAwMDAwMCBuIAow MDAwMDY1NDMxIDAwMDAwIG4gCjAwMDAwNzE5OTUgMDAwMDAgbiAKMDAwMDA3MTIyNiAwMDAw MCBuIAowMDAwMDcxMjQ3IDAwMDAwIG4gCjAwMDAwODczMzQgMDAwMDAgbiAKMDAwMDA3MjQz MyAwMDAwMCBuIAowMDAwMDg3NzY5IDAwMDAwIG4gCjAwMDAwNzI4MjEgMDAwMDAgbiAKMDAw MDExMDE4OSAwMDAwMCBuIAowMDAwMDg3OTc3IDAwMDAwIG4gCjAwMDAxMTA1NzIgMDAwMDAg biAKMDAwMDA4ODM0MCAwMDAwMCBuIAowMDAwMTEwNzY5IDAwMDAwIG4gCjAwMDAxMTA3ODkg MDAwMDAgbiAKMDAwMDExMDgxMSAwMDAwMCBuIAowMDAwMTEwODMxIDAwMDAwIG4gCnRyYWls ZXIKPDwKL1NpemUKNDkKL1Jvb3QKMwowClIKL0luZm8KNAowClIKPj4Kc3RhcnR4cmVmCjEx MDk0NwolJUVPRgo= --------------a1GjYnA7k79ug88wdVKlHsRH Content-Type: text/x-patch; charset=UTF-8; name="0001-v5-20231012.patch" Content-Disposition: attachment; filename="0001-v5-20231012.patch" Content-Transfer-Encoding: base64 RnJvbSAyZmFlYTlhNWVmOWI1ODQ4NTMzNDE0ODljOWUzMGYxMTEyOTYzOGMwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogRnJpLCAxMyBPY3QgMjAyMyAyMjozMzo1MSArMDIwMApTdWJqZWN0OiBb UEFUQ0ggMS80XSB2NQoKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0Z2V0LmMg ICAgICAgIHwgICAxIC0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVy LmMgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jICAgICAgICAg fCAgIDkgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMgICAgICAgfCA0 MTEgKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYyAgICAgICAgICAgfCAgMTggKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4 aW5nLmMgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0 aW9uLmMgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jICAg ICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5j IHwgIDE2ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgICAgIHwg IDc0ICsrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAgICAgfCAg IDIgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMgICAgICAgICB8ICAgMiAr LQogc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggICAgICAgICAgICAgICB8IDExMyArKysr KystCiBzcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oICAgICAgICAgICAgIHwgICA5ICsK IHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCAgICAgICAgfCAgIDIgKwogMTUg ZmlsZXMgY2hhbmdlZCwgNjUwIGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RnZXQuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9naXN0L2dpc3RnZXQuYwppbmRleCAzMTM0OTE3NDI4MC4uM2FjZmE3NjJl N2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RnZXQuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0Z2V0LmMKQEAgLTY3Nyw3ICs2NzcsNiBA QCBnaXN0Z2V0dHVwbGUoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcikK IAkJCQkJc2Nhbi0+eHNfaGl0dXAgPSBzby0+cGFnZURhdGFbc28tPmN1clBhZ2VEYXRhXS5y ZWNvbnR1cDsKIAogCQkJCXNvLT5jdXJQYWdlRGF0YSsrOwotCiAJCQkJcmV0dXJuIHRydWU7 CiAJCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmlu ZGV4IDdjMjhkYWZiNzI4Li40NmM4NTc1MWNmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAic3Rv cmFnZS9zbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1 dGlscy9yZWwuaCIKKyNpbmNsdWRlICJ1dGlscy9zcGNjYWNoZS5oIgogCiBzdGF0aWMgdm9p ZCByZWZvcm1fYW5kX3Jld3JpdGVfdHVwbGUoSGVhcFR1cGxlIHR1cGxlLAogCQkJCQkJCQkJ IFJlbGF0aW9uIE9sZEhlYXAsIFJlbGF0aW9uIE5ld0hlYXAsCkBAIC03NDcsNiArNzQ4LDkg QEAgaGVhcGFtX3JlbGF0aW9uX2NvcHlfZm9yX2NsdXN0ZXIoUmVsYXRpb24gT2xkSGVhcCwg UmVsYXRpb24gTmV3SGVhcCwKIAkJCVBST0dSRVNTX0NMVVNURVJfSU5ERVhfUkVMSUQKIAkJ fTsKIAkJaW50NjQJCWNpX3ZhbFsyXTsKKwkJaW50CQkJcHJlZmV0Y2hfdGFyZ2V0OworCisJ CXByZWZldGNoX3RhcmdldCA9IGdldF90YWJsZXNwYWNlX2lvX2NvbmN1cnJlbmN5KE9sZEhl YXAtPnJkX3JlbC0+cmVsdGFibGVzcGFjZSk7CiAKIAkJLyogU2V0IHBoYXNlIGFuZCBPSURP bGRJbmRleCB0byBjb2x1bW5zICovCiAJCWNpX3ZhbFswXSA9IFBST0dSRVNTX0NMVVNURVJf UEhBU0VfSU5ERVhfU0NBTl9IRUFQOwpAQCAtNzU1LDcgKzc1OSw4IEBAIGhlYXBhbV9yZWxh dGlvbl9jb3B5X2Zvcl9jbHVzdGVyKFJlbGF0aW9uIE9sZEhlYXAsIFJlbGF0aW9uIE5ld0hl YXAsCiAKIAkJdGFibGVTY2FuID0gTlVMTDsKIAkJaGVhcFNjYW4gPSBOVUxMOwotCQlpbmRl eFNjYW4gPSBpbmRleF9iZWdpbnNjYW4oT2xkSGVhcCwgT2xkSW5kZXgsIFNuYXBzaG90QW55 LCAwLCAwKTsKKwkJaW5kZXhTY2FuID0gaW5kZXhfYmVnaW5zY2FuKE9sZEhlYXAsIE9sZElu ZGV4LCBTbmFwc2hvdEFueSwgMCwgMCwKKwkJCQkJCQkJCXByZWZldGNoX3RhcmdldCwgcHJl ZmV0Y2hfdGFyZ2V0KTsKIAkJaW5kZXhfcmVzY2FuKGluZGV4U2NhbiwgTlVMTCwgMCwgTlVM TCwgMCk7CiAJfQogCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRl eC9nZW5hbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMKaW5kZXggNGNh MTIwMDY4NDMuLjIzMDY2N2Y4ODhiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aW5kZXgvZ2VuYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwpA QCAtMTI2LDYgKzEyNiw5IEBAIFJlbGF0aW9uR2V0SW5kZXhTY2FuKFJlbGF0aW9uIGluZGV4 UmVsYXRpb24sIGludCBua2V5cywgaW50IG5vcmRlcmJ5cykKIAlzY2FuLT54c19oaXR1cCA9 IE5VTEw7CiAJc2Nhbi0+eHNfaGl0dXBkZXNjID0gTlVMTDsKIAorCS8qIHNldCBpbiBlYWNo IEFNIHdoZW4gYXBwbGljYWJsZSAqLworCXNjYW4tPnhzX3ByZWZldGNoID0gTlVMTDsKKwog CXJldHVybiBzY2FuOwogfQogCkBAIC00NDAsOCArNDQzLDkgQEAgc3lzdGFibGVfYmVnaW5z Y2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQllbG9nKEVSUk9SLCAiY29sdW1uIGlz IG5vdCBpbiBpbmRleCIpOwogCQl9CiAKKwkJLyogbm8gaW5kZXggcHJlZmV0Y2ggZm9yIHN5 c3RlbSBjYXRhbG9ncyAqLwogCQlzeXNzY2FuLT5pc2NhbiA9IGluZGV4X2JlZ2luc2Nhbiho ZWFwUmVsYXRpb24sIGlyZWwsCi0JCQkJCQkJCQkJIHNuYXBzaG90LCBua2V5cywgMCk7CisJ CQkJCQkJCQkJIHNuYXBzaG90LCBua2V5cywgMCwgMCwgMCk7CiAJCWluZGV4X3Jlc2Nhbihz eXNzY2FuLT5pc2Nhbiwga2V5LCBua2V5cywgTlVMTCwgMCk7CiAJCXN5c3NjYW4tPnNjYW4g PSBOVUxMOwogCX0KQEAgLTY5Niw4ICs3MDAsOSBAQCBzeXN0YWJsZV9iZWdpbnNjYW5fb3Jk ZXJlZChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQllbG9nKEVSUk9SLCAiY29sdW1uIGlz IG5vdCBpbiBpbmRleCIpOwogCX0KIAorCS8qIG5vIGluZGV4IHByZWZldGNoIGZvciBzeXN0 ZW0gY2F0YWxvZ3MgKi8KIAlzeXNzY2FuLT5pc2NhbiA9IGluZGV4X2JlZ2luc2NhbihoZWFw UmVsYXRpb24sIGluZGV4UmVsYXRpb24sCi0JCQkJCQkJCQkgc25hcHNob3QsIG5rZXlzLCAw KTsKKwkJCQkJCQkJCSBzbmFwc2hvdCwgbmtleXMsIDAsIDAsIDApOwogCWluZGV4X3Jlc2Nh bihzeXNzY2FuLT5pc2Nhbiwga2V5LCBua2V5cywgTlVMTCwgMCk7CiAJc3lzc2Nhbi0+c2Nh biA9IE5VTEw7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRl eGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jCmluZGV4IGIyNWIw M2Y3YWJjLi4wYjhmMTM2ZjA0MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2lu ZGV4L2luZGV4YW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5j CkBAIC01NCwxMSArNTQsMTMgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtcHJvYy5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJl bS5oIgorI2luY2x1ZGUgImNvbW1vbi9oYXNoZm4uaCIKICNpbmNsdWRlICJub2Rlcy9tYWtl ZnVuY3MuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1n ci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJl ZGljYXRlLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRp bHMvcnVsZXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUg InV0aWxzL3N5c2NhY2hlLmgiCkBAIC0xMDYsNyArMTA4LDEwIEBAIGRvIHsgXAogCiBzdGF0 aWMgSW5kZXhTY2FuRGVzYyBpbmRleF9iZWdpbnNjYW5faW50ZXJuYWwoUmVsYXRpb24gaW5k ZXhSZWxhdGlvbiwKIAkJCQkJCQkJCQkJICBpbnQgbmtleXMsIGludCBub3JkZXJieXMsIFNu YXBzaG90IHNuYXBzaG90LAotCQkJCQkJCQkJCQkgIFBhcmFsbGVsSW5kZXhTY2FuRGVzYyBw c2NhbiwgYm9vbCB0ZW1wX3NuYXApOworCQkJCQkJCQkJCQkgIFBhcmFsbGVsSW5kZXhTY2Fu RGVzYyBwc2NhbiwgYm9vbCB0ZW1wX3NuYXAsCisJCQkJCQkJCQkJCSAgaW50IHByZWZldGNo X3RhcmdldCwgaW50IHByZWZldGNoX3Jlc2V0KTsKKworc3RhdGljIHZvaWQgaW5kZXhfcHJl ZmV0Y2goSW5kZXhTY2FuRGVzYyBzY2FuLCBJdGVtUG9pbnRlciB0aWQpOwogCiAKIC8qIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KQEAgLTIwMCwxOCArMjA1LDM2IEBAIGluZGV4X2luc2VydChSZWxhdGlvbiBp bmRleFJlbGF0aW9uLAogICogaW5kZXhfYmVnaW5zY2FuIC0gc3RhcnQgYSBzY2FuIG9mIGFu IGluZGV4IHdpdGggYW1nZXR0dXBsZQogICoKICAqIENhbGxlciBtdXN0IGJlIGhvbGRpbmcg c3VpdGFibGUgbG9ja3Mgb24gdGhlIGhlYXAgYW5kIHRoZSBpbmRleC4KKyAqCisgKiBwcmVm ZXRjaF90YXJnZXQgZGV0ZXJtaW5lcyBpZiBwcmVmZXRjaGluZyBpcyByZXF1ZXN0ZWQgZm9y IHRoaXMgaW5kZXggc2Nhbi4KKyAqIFdlIG5lZWQgdG8gYmUgYWJsZSB0byBkaXNhYmxlIHRo aXMgZm9yIHR3byByZWFzb25zLiBGaXJzdGx5LCB3ZSBkb24ndCB3YW50CisgKiB0byBkbyBw cmVmZXRjaGluZyBmb3IgSU9TICh3aGVyZSB3ZSBob3BlIG1vc3Qgb2YgdGhlIGhlYXAgcGFn ZXMgd29uJ3QgYmUKKyAqIHJlYWxseSBuZWVkZWQuIFNlY29uZGx5LCB3ZSBtdXN0IHByZXZl bnQgaW5maW5pdGUgbG9vcCB3aGVuIGRldGVybWluaW5nCisgKiBwcmVmZXRjaCB2YWx1ZSBm b3IgdGhlIHRhYmxlc3BhY2UgLSB0aGUgZ2V0X3RhYmxlc3BhY2VfaW9fY29uY3VycmVuY3ko KQorICogZG9lcyBhbiBpbmRleCBzY2FuIGludGVybmFsbHksIHdoaWNoIHdvdWxkIHJlc3Vs dCBpbiBpbmZpbml0ZSBsb29wLiBTbyB3ZQorICogc2ltcGx5IGRpc2FibGUgcHJlZmV0Y2hp bmcgaW4gc3lzdGFibGVfYmVnaW5zY2FuKCkuCisgKgorICogWFhYIE1heWJlIHdlIHNob3Vs ZCBkbyBwcmVmZXRjaGluZyBldmVuIGZvciBjYXRhbG9ncywgYnV0IHRoZW4gZGlzYWJsZSBp dAorICogd2hlbiBhY2Nlc3NpbmcgVGFibGVTcGFjZVJlbGF0aW9uSWQuIFdlIHN0aWxsIG5l ZWQgdGhlIGFiaWxpdHkgdG8gZGlzYWJsZQorICogdGhpcyBhbmQgY2F0YWxvZ3MgYXJlIGV4 cGVjdGVkIHRvIGJlIHRpbnksIHNvIHByZWZldGNoaW5nIGlzIHVubGlrZWx5IHRvCisgKiBt YWtlIGEgZGlmZmVyZW5jZS4KKyAqCisgKiBYWFggVGhlIHNlY29uZCByZWFzb24gZG9lc24n dCByZWFsbHkgYXBwbHkgYWZ0ZXIgZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5CisgKiBsb29r dXAgbW92ZWQgdG8gY2FsbGVyIG9mIGluZGV4X2JlZ2luc2Nhbi4KICAqLwogSW5kZXhTY2Fu RGVzYwogaW5kZXhfYmVnaW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQlSZWxh dGlvbiBpbmRleFJlbGF0aW9uLAogCQkJCVNuYXBzaG90IHNuYXBzaG90LAotCQkJCWludCBu a2V5cywgaW50IG5vcmRlcmJ5cykKKwkJCQlpbnQgbmtleXMsIGludCBub3JkZXJieXMsCisJ CQkJaW50IHByZWZldGNoX3RhcmdldCwgaW50IHByZWZldGNoX3Jlc2V0KQogewogCUluZGV4 U2NhbkRlc2Mgc2NhbjsKIAogCUFzc2VydChzbmFwc2hvdCAhPSBJbnZhbGlkU25hcHNob3Qp OwogCi0Jc2NhbiA9IGluZGV4X2JlZ2luc2Nhbl9pbnRlcm5hbChpbmRleFJlbGF0aW9uLCBu a2V5cywgbm9yZGVyYnlzLCBzbmFwc2hvdCwgTlVMTCwgZmFsc2UpOworCXNjYW4gPSBpbmRl eF9iZWdpbnNjYW5faW50ZXJuYWwoaW5kZXhSZWxhdGlvbiwgbmtleXMsIG5vcmRlcmJ5cywg c25hcHNob3QsIE5VTEwsIGZhbHNlLAorCQkJCQkJCQkJcHJlZmV0Y2hfdGFyZ2V0LCBwcmVm ZXRjaF9yZXNldCk7CiAKIAkvKgogCSAqIFNhdmUgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIGlu dG8gdGhlIHNjYW5kZXNjLiAgRXZlcnl0aGluZyBlbHNlIHdhcyBzZXQKQEAgLTI0MSw3ICsy NjQsOCBAQCBpbmRleF9iZWdpbnNjYW5fYml0bWFwKFJlbGF0aW9uIGluZGV4UmVsYXRpb24s CiAKIAlBc3NlcnQoc25hcHNob3QgIT0gSW52YWxpZFNuYXBzaG90KTsKIAotCXNjYW4gPSBp bmRleF9iZWdpbnNjYW5faW50ZXJuYWwoaW5kZXhSZWxhdGlvbiwgbmtleXMsIDAsIHNuYXBz aG90LCBOVUxMLCBmYWxzZSk7CisJc2NhbiA9IGluZGV4X2JlZ2luc2Nhbl9pbnRlcm5hbChp bmRleFJlbGF0aW9uLCBua2V5cywgMCwgc25hcHNob3QsIE5VTEwsIGZhbHNlLAorCQkJCQkJ CQkJMCwgMCk7IC8qIG5vIHByZWZldGNoICovCiAKIAkvKgogCSAqIFNhdmUgYWRkaXRpb25h bCBwYXJhbWV0ZXJzIGludG8gdGhlIHNjYW5kZXNjLiAgRXZlcnl0aGluZyBlbHNlIHdhcyBz ZXQKQEAgLTI1OCw3ICsyODIsOCBAQCBpbmRleF9iZWdpbnNjYW5fYml0bWFwKFJlbGF0aW9u IGluZGV4UmVsYXRpb24sCiBzdGF0aWMgSW5kZXhTY2FuRGVzYwogaW5kZXhfYmVnaW5zY2Fu X2ludGVybmFsKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAJCQkJCQkgaW50IG5rZXlzLCBp bnQgbm9yZGVyYnlzLCBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJCSBQYXJhbGxlbEluZGV4 U2NhbkRlc2MgcHNjYW4sIGJvb2wgdGVtcF9zbmFwKQorCQkJCQkJIFBhcmFsbGVsSW5kZXhT Y2FuRGVzYyBwc2NhbiwgYm9vbCB0ZW1wX3NuYXAsCisJCQkJCQkgaW50IHByZWZldGNoX3Rh cmdldCwgaW50IHByZWZldGNoX3Jlc2V0KQogewogCUluZGV4U2NhbkRlc2Mgc2NhbjsKIApA QCAtMjc2LDEyICszMDEsMjcgQEAgaW5kZXhfYmVnaW5zY2FuX2ludGVybmFsKFJlbGF0aW9u IGluZGV4UmVsYXRpb24sCiAJLyoKIAkgKiBUZWxsIHRoZSBBTSB0byBvcGVuIGEgc2Nhbi4K IAkgKi8KLQlzY2FuID0gaW5kZXhSZWxhdGlvbi0+cmRfaW5kYW0tPmFtYmVnaW5zY2FuKGlu ZGV4UmVsYXRpb24sIG5rZXlzLAotCQkJCQkJCQkJCQkJbm9yZGVyYnlzKTsKKwlzY2FuID0g aW5kZXhSZWxhdGlvbi0+cmRfaW5kYW0tPmFtYmVnaW5zY2FuKGluZGV4UmVsYXRpb24sIG5r ZXlzLCBub3JkZXJieXMpOwogCS8qIEluaXRpYWxpemUgaW5mb3JtYXRpb24gZm9yIHBhcmFs bGVsIHNjYW4uICovCiAJc2Nhbi0+cGFyYWxsZWxfc2NhbiA9IHBzY2FuOwogCXNjYW4tPnhz X3RlbXBfc25hcCA9IHRlbXBfc25hcDsKIAorCS8qIHdpdGggcHJlZmV0Y2hpbmcgZW5hYmxl ZCwgaW5pdGlhbGl6ZSB0aGUgbmVjZXNzYXJ5IHN0YXRlICovCisJaWYgKHByZWZldGNoX3Rh cmdldCA+IDApCisJeworCQlJbmRleFByZWZldGNoIHByZWZldGNoZXIgPSBwYWxsb2MwKHNp emVvZihJbmRleFByZWZldGNoRGF0YSkpOworCisJCXByZWZldGNoZXItPnF1ZXVlSW5kZXgg PSAwOworCQlwcmVmZXRjaGVyLT5xdWV1ZVN0YXJ0ID0gMDsKKwkJcHJlZmV0Y2hlci0+cXVl dWVFbmQgPSAwOworCisJCXByZWZldGNoZXItPnByZWZldGNoVGFyZ2V0ID0gMDsKKwkJcHJl ZmV0Y2hlci0+cHJlZmV0Y2hNYXhUYXJnZXQgPSBwcmVmZXRjaF90YXJnZXQ7CisJCXByZWZl dGNoZXItPnByZWZldGNoUmVzZXQgPSBwcmVmZXRjaF9yZXNldDsKKworCQlzY2FuLT54c19w cmVmZXRjaCA9IHByZWZldGNoZXI7CisJfQorCiAJcmV0dXJuIHNjYW47CiB9CiAKQEAgLTMx Nyw2ICszNTcsMjAgQEAgaW5kZXhfcmVzY2FuKEluZGV4U2NhbkRlc2Mgc2NhbiwKIAogCXNj YW4tPmluZGV4UmVsYXRpb24tPnJkX2luZGFtLT5hbXJlc2NhbihzY2FuLCBrZXlzLCBua2V5 cywKIAkJCQkJCQkJCQkJb3JkZXJieXMsIG5vcmRlcmJ5cyk7CisKKwkvKiBJZiB3ZSdyZSBw cmVmZXRjaGluZyBmb3IgdGhpcyBpbmRleCwgbWF5YmUgcmVzZXQgc29tZSBvZiB0aGUgc3Rh dGUuICovCisJaWYgKHNjYW4tPnhzX3ByZWZldGNoICE9IE5VTEwpCisJeworCQlJbmRleFBy ZWZldGNoIHByZWZldGNoZXIgPSBzY2FuLT54c19wcmVmZXRjaDsKKworCQlwcmVmZXRjaGVy LT5xdWV1ZVN0YXJ0ID0gMDsKKwkJcHJlZmV0Y2hlci0+cXVldWVFbmQgPSAwOworCQlwcmVm ZXRjaGVyLT5xdWV1ZUluZGV4ID0gMDsKKwkJcHJlZmV0Y2hlci0+cHJlZmV0Y2hEb25lID0g ZmFsc2U7CisJCisJCXByZWZldGNoZXItPnByZWZldGNoVGFyZ2V0ID0gTWluKHByZWZldGNo ZXItPnByZWZldGNoVGFyZ2V0LAorCQkJCQkJCQkJCSBwcmVmZXRjaGVyLT5wcmVmZXRjaFJl c2V0KTsKKwl9CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTM0NSw2ICszOTksMTkg QEAgaW5kZXhfZW5kc2NhbihJbmRleFNjYW5EZXNjIHNjYW4pCiAJaWYgKHNjYW4tPnhzX3Rl bXBfc25hcCkKIAkJVW5yZWdpc3RlclNuYXBzaG90KHNjYW4tPnhzX3NuYXBzaG90KTsKIAor CS8qIElmIHByZWZldGNoaW5nIGVuYWJsZWQsIGxvZyBwcmVmZXRjaCBzdGF0cy4gKi8KKwlp ZiAoc2Nhbi0+eHNfcHJlZmV0Y2gpCisJeworCQlJbmRleFByZWZldGNoIHByZWZldGNoID0g c2Nhbi0+eHNfcHJlZmV0Y2g7CisKKwkJZWxvZyhMT0csICJpbmRleCBwcmVmZXRjaCBzdGF0 czogcmVxdWVzdHMgIiBVSU5UNjRfRk9STUFUICIgcHJlZmV0Y2hlcyAiIFVJTlQ2NF9GT1JN QVQgIiAoJWYpIHNraXAgY2FjaGVkICIgVUlOVDY0X0ZPUk1BVCAiIHNlcXVlbnRpYWwgIiBV SU5UNjRfRk9STUFULAorCQkJIHByZWZldGNoLT5jb3VudEFsbCwKKwkJCSBwcmVmZXRjaC0+ Y291bnRQcmVmZXRjaCwKKwkJCSBwcmVmZXRjaC0+Y291bnRQcmVmZXRjaCAqIDEwMC4wIC8g cHJlZmV0Y2gtPmNvdW50QWxsLAorCQkJIHByZWZldGNoLT5jb3VudFNraXBDYWNoZWQsCisJ CQkgcHJlZmV0Y2gtPmNvdW50U2tpcFNlcXVlbnRpYWwpOworCX0KKwogCS8qIFJlbGVhc2Ug dGhlIHNjYW4gZGF0YSBzdHJ1Y3R1cmUgaXRzZWxmICovCiAJSW5kZXhTY2FuRW5kKHNjYW4p OwogfQpAQCAtNDg3LDEwICs1NTQsMTMgQEAgaW5kZXhfcGFyYWxsZWxyZXNjYW4oSW5kZXhT Y2FuRGVzYyBzY2FuKQogICogaW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVsIC0gam9pbiBwYXJh bGxlbCBpbmRleCBzY2FuCiAgKgogICogQ2FsbGVyIG11c3QgYmUgaG9sZGluZyBzdWl0YWJs ZSBsb2NrcyBvbiB0aGUgaGVhcCBhbmQgdGhlIGluZGV4LgorICoKKyAqIFhYWCBTZWUgaW5k ZXhfYmVnaW5zY2FuKCkgZm9yIG1vcmUgY29tbWVudHMgb24gcHJlZmV0Y2hfdGFyZ2V0Lgog ICovCiBJbmRleFNjYW5EZXNjCiBpbmRleF9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24g aGVhcHJlbCwgUmVsYXRpb24gaW5kZXhyZWwsIGludCBua2V5cywKLQkJCQkJCSBpbnQgbm9y ZGVyYnlzLCBQYXJhbGxlbEluZGV4U2NhbkRlc2MgcHNjYW4pCisJCQkJCQkgaW50IG5vcmRl cmJ5cywgUGFyYWxsZWxJbmRleFNjYW5EZXNjIHBzY2FuLAorCQkJCQkJIGludCBwcmVmZXRj aF90YXJnZXQsIGludCBwcmVmZXRjaF9yZXNldCkKIHsKIAlTbmFwc2hvdAlzbmFwc2hvdDsK IAlJbmRleFNjYW5EZXNjIHNjYW47CkBAIC00OTksNyArNTY5LDcgQEAgaW5kZXhfYmVnaW5z Y2FuX3BhcmFsbGVsKFJlbGF0aW9uIGhlYXByZWwsIFJlbGF0aW9uIGluZGV4cmVsLCBpbnQg bmtleXMsCiAJc25hcHNob3QgPSBSZXN0b3JlU25hcHNob3QocHNjYW4tPnBzX3NuYXBzaG90 X2RhdGEpOwogCVJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwogCXNjYW4gPSBpbmRleF9i ZWdpbnNjYW5faW50ZXJuYWwoaW5kZXhyZWwsIG5rZXlzLCBub3JkZXJieXMsIHNuYXBzaG90 LAotCQkJCQkJCQkJcHNjYW4sIHRydWUpOworCQkJCQkJCQkJcHNjYW4sIHRydWUsIHByZWZl dGNoX3RhcmdldCwgcHJlZmV0Y2hfcmVzZXQpOwogCiAJLyoKIAkgKiBTYXZlIGFkZGl0aW9u YWwgcGFyYW1ldGVycyBpbnRvIHRoZSBzY2FuZGVzYy4gIEV2ZXJ5dGhpbmcgZWxzZSB3YXMg c2V0CkBAIC02MjMsMjAgKzY5Myw3NCBAQCBpbmRleF9mZXRjaF9oZWFwKEluZGV4U2NhbkRl c2Mgc2NhbiwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpCiBib29sCiBpbmRleF9nZXRuZXh0X3Ns b3QoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbiwgVHVwbGVU YWJsZVNsb3QgKnNsb3QpCiB7CisJSW5kZXhQcmVmZXRjaAlwcmVmZXRjaCA9IHNjYW4tPnhz X3ByZWZldGNoOworCiAJZm9yICg7OykKIAl7CisJCS8qIHdpdGggcHJlZmV0Y2hpbmcgZW5h YmxlZCwgYWNjdW11bGF0ZSBlbm91Z2ggVElEcyBpbnRvIHRoZSBwcmVmZXRjaCAqLworCQlp ZiAoUFJFRkVUQ0hfQUNUSVZFKHByZWZldGNoKSkKKwkJeworCQkJLyogCisJCQkgKiBpbmNy ZW1lbnRhbGx5IHJhbXAgdXAgcHJlZmV0Y2ggZGlzdGFuY2UKKwkJCSAqCisJCQkgKiBYWFgg SW50ZW50aW9uYWxseSBkb25lIGFzIGZpcnN0LCBzbyB0aGF0IHdpdGggcHJlZmV0Y2hpbmcg dGhlcmUncworCQkJICogYWx3YXlzIGF0IGxlYXN0IG9uZSBpdGVtIGluIHRoZSBxdWV1ZS4K KwkJCSAqLworCQkJcHJlZmV0Y2gtPnByZWZldGNoVGFyZ2V0ID0gTWluKHByZWZldGNoLT5w cmVmZXRjaFRhcmdldCArIDEsCisJCQkJCQkJCQkJcHJlZmV0Y2gtPnByZWZldGNoTWF4VGFy Z2V0KTsKKworCQkJLyoKKwkJCSAqIGdldCBtb3JlIFRJRCB3aGlsZSB0aGVyZSBpcyBlbXB0 eSBzcGFjZSBpbiB0aGUgcXVldWUgKGNvbnNpZGVyaW5nCisJCQkgKiBjdXJyZW50IHByZWZl dGNoIHRhcmdldAorCQkJICovCisJCQl3aGlsZSAoIVBSRUZFVENIX0ZVTEwocHJlZmV0Y2gp KQorCQkJeworCQkJCUl0ZW1Qb2ludGVyIHRpZDsKKworCQkJCS8qIFRpbWUgdG8gZmV0Y2gg dGhlIG5leHQgVElEIGZyb20gdGhlIGluZGV4ICovCisJCQkJdGlkID0gaW5kZXhfZ2V0bmV4 dF90aWQoc2NhbiwgZGlyZWN0aW9uKTsKKworCQkJCS8qIElmIHdlJ3JlIG91dCBvZiBpbmRl eCBlbnRyaWVzLCB3ZSdyZSBkb25lICovCisJCQkJaWYgKHRpZCA9PSBOVUxMKQorCQkJCXsK KwkJCQkJcHJlZmV0Y2gtPnByZWZldGNoRG9uZSA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJ CX0KKworCQkJCUFzc2VydChJdGVtUG9pbnRlckVxdWFscyh0aWQsICZzY2FuLT54c19oZWFw dGlkKSk7CisKKwkJCQlwcmVmZXRjaC0+cXVldWVJdGVtc1tQUkVGRVRDSF9RVUVVRV9JTkRF WChwcmVmZXRjaC0+cXVldWVFbmQpXSA9ICp0aWQ7CisJCQkJcHJlZmV0Y2gtPnF1ZXVlRW5k Kys7CisKKwkJCQlpbmRleF9wcmVmZXRjaChzY2FuLCB0aWQpOworCQkJfQorCQl9CisKIAkJ aWYgKCFzY2FuLT54c19oZWFwX2NvbnRpbnVlKQogCQl7Ci0JCQlJdGVtUG9pbnRlciB0aWQ7 CisJCQlpZiAoUFJFRkVUQ0hfRU5BQkxFRChwcmVmZXRjaCkpCisJCQl7CisJCQkJLyogcHJl ZmV0Y2hpbmcgZW5hYmxlZCwgYnV0IHJlYWNoZWQgdGhlIGVuZCBhbmQgcXVldWUgZW1wdHkg Ki8KKwkJCQlpZiAoUFJFRkVUQ0hfRE9ORShwcmVmZXRjaCkpCisJCQkJCWJyZWFrOworCisJ CQkJc2Nhbi0+eHNfaGVhcHRpZCA9IHByZWZldGNoLT5xdWV1ZUl0ZW1zW1BSRUZFVENIX1FV RVVFX0lOREVYKHByZWZldGNoLT5xdWV1ZUluZGV4KV07CisJCQkJcHJlZmV0Y2gtPnF1ZXVl SW5kZXgrKzsKKwkJCX0KKwkJCWVsc2UJLyogbm90IHByZWZldGNoaW5nLCBqdXN0IGRvIHRo ZSByZWd1bGFyIHdvcmsgICovCisJCQl7CisJCQkJSXRlbVBvaW50ZXIgdGlkOwogCi0JCQkv KiBUaW1lIHRvIGZldGNoIHRoZSBuZXh0IFRJRCBmcm9tIHRoZSBpbmRleCAqLwotCQkJdGlk ID0gaW5kZXhfZ2V0bmV4dF90aWQoc2NhbiwgZGlyZWN0aW9uKTsKKwkJCQkvKiBUaW1lIHRv IGZldGNoIHRoZSBuZXh0IFRJRCBmcm9tIHRoZSBpbmRleCAqLworCQkJCXRpZCA9IGluZGV4 X2dldG5leHRfdGlkKHNjYW4sIGRpcmVjdGlvbik7CiAKLQkJCS8qIElmIHdlJ3JlIG91dCBv ZiBpbmRleCBlbnRyaWVzLCB3ZSdyZSBkb25lICovCi0JCQlpZiAodGlkID09IE5VTEwpCi0J CQkJYnJlYWs7CisJCQkJLyogSWYgd2UncmUgb3V0IG9mIGluZGV4IGVudHJpZXMsIHdlJ3Jl IGRvbmUgKi8KKwkJCQlpZiAodGlkID09IE5VTEwpCisJCQkJCWJyZWFrOworCisJCQkJQXNz ZXJ0KEl0ZW1Qb2ludGVyRXF1YWxzKHRpZCwgJnNjYW4tPnhzX2hlYXB0aWQpKTsKKwkJCX0K IAotCQkJQXNzZXJ0KEl0ZW1Qb2ludGVyRXF1YWxzKHRpZCwgJnNjYW4tPnhzX2hlYXB0aWQp KTsKIAkJfQogCiAJCS8qCkBAIC05ODgsMyArMTExMiwyNTggQEAgaW5kZXhfb3BjbGFzc19v cHRpb25zKFJlbGF0aW9uIGluZHJlbCwgQXR0ck51bWJlciBhdHRudW0sIERhdHVtIGF0dG9w dGlvbnMsCiAKIAlyZXR1cm4gYnVpbGRfbG9jYWxfcmVsb3B0aW9ucygmcmVsb3B0cywgYXR0 b3B0aW9ucywgdmFsaWRhdGUpOwogfQorCisvKgorICogQWRkIHRoZSBibG9jayB0byB0aGUg dGlueSB0b3AtbGV2ZWwgcXVldWUgKExSVSksIGFuZCBjaGVjayBpZiB0aGUgYmxvY2sKKyAq IGlzIGluIGEgc2VxdWVudGlhbCBwYXR0ZXJuLgorICovCitzdGF0aWMgYm9vbAoraW5kZXhf cHJlZmV0Y2hfaXNfc2VxdWVudGlhbChJbmRleFByZWZldGNoIHByZWZldGNoLCBCbG9ja051 bWJlciBibG9jaykKK3sKKwlpbnQJCWlkeDsKKworCS8qIElmIHRoZSBxdWV1ZSBpcyBlbXB0 eSwganVzdCBzdG9yZSB0aGUgYmxvY2sgYW5kIHdlJ3JlIGRvbmUuICovCisJaWYgKHByZWZl dGNoLT5ibG9ja0luZGV4ID09IDApCisJeworCQlwcmVmZXRjaC0+YmxvY2tJdGVtc1tQUkVG RVRDSF9CTE9DS19JTkRFWChwcmVmZXRjaC0+YmxvY2tJbmRleCldID0gYmxvY2s7CisJCXBy ZWZldGNoLT5ibG9ja0luZGV4Kys7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwkvKgorCSAq IE90aGVyd2lzZSwgY2hlY2sgaWYgaXQncyB0aGUgc2FtZSBhcyB0aGUgaW1tZWRpYXRlbHkg cHJlY2VkaW5nIGJsb2NrICh3ZQorCSAqIGRvbid0IHdhbnQgdG8gcHJlZmV0Y2ggdGhlIHNh bWUgYmxvY2sgb3ZlciBhbmQgb3Zlci4pCisJICovCisJaWYgKHByZWZldGNoLT5ibG9ja0l0 ZW1zW1BSRUZFVENIX0JMT0NLX0lOREVYKHByZWZldGNoLT5ibG9ja0luZGV4IC0gMSldID09 IGJsb2NrKQorCQlyZXR1cm4gdHJ1ZTsKKworCS8qIE5vdCB0aGUgc2FtZSBibG9jaywgc28g YWRkIGl0IHRvIHRoZSBxdWV1ZS4gKi8KKwlwcmVmZXRjaC0+YmxvY2tJdGVtc1tQUkVGRVRD SF9CTE9DS19JTkRFWChwcmVmZXRjaC0+YmxvY2tJbmRleCldID0gYmxvY2s7CisJcHJlZmV0 Y2gtPmJsb2NrSW5kZXgrKzsKKworCS8qIGNoZWNrIHNlcXVlbnRpYWwgcGF0dGVyIGEgY291 cGxlIHJlcXVlc3RzIGJhY2sgKi8KKwlmb3IgKGludCBpID0gMTsgaSA8IFBSRUZFVENIX1NF UV9QQVRURVJOX0JMT0NLUzsgaSsrKQorCXsKKwkJLyogbm90IGVub3VnaCByZXF1ZXN0cyB0 byBjb25maXJtIGEgc2VxdWVudGlhbCBwYXR0ZXJuICovCisJCWlmIChwcmVmZXRjaC0+Ymxv Y2tJbmRleCA8IGkpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJLyoKKwkJICogaW5kZXggb2Yg dGhlIGFscmVhZHkgcmVxdWVzdGVkIGJ1ZmZlciAoLTEgYmVjYXVzZSB3ZSBhbHJlYWR5CisJ CSAqIGluY3JlbWVudGVkIHRoZSBpbmRleCB3aGVuIGFkZGluZyB0aGUgYmxvY2sgdG8gdGhl IHF1ZXVlKQorCQkgKi8KKwkJaWR4ID0gUFJFRkVUQ0hfQkxPQ0tfSU5ERVgocHJlZmV0Y2gt PmJsb2NrSW5kZXggLSBpIC0gMSk7CisKKwkJLyogICovCisJCWlmIChwcmVmZXRjaC0+Ymxv Y2tJdGVtc1tpZHhdICE9IChibG9jayAtIGkpKQorCQkJcmV0dXJuIGZhbHNlOworCX0KKwor CXJldHVybiB0cnVlOworfQorCisvKgorICogaW5kZXhfcHJlZmV0Y2hfYWRkX2NhY2hlCisg KgkJQWRkIGEgYmxvY2sgdG8gdGhlIGNhY2hlLCByZXR1cm4gdHJ1ZSBpZiBpdCB3YXMgcmVj ZW50bHkgcHJlZmV0Y2hlZC4KKyAqCisgKiBXaGVuIGNoZWNraW5nIGEgYmxvY2ssIHdlIG5l ZWQgdG8gY2hlY2sgaWYgaXQgd2FzIHJlY2VudGx5IHByZWZldGNoZWQsCisgKiB3aGVyZSBy ZWNlbnRseSBtZWFucyB3aXRoaW4gUFJFRkVUQ0hfQ0FDSEVfU0laRSByZXF1ZXN0cy4gVGhp cyBjaGVjaworICogbmVlZHMgdG8gYmUgdmVyeSBjaGVhcCwgZXZlbiB3aXRoIGZhaXJseSBs YXJnZSBjYWNoZXMgKGh1bmRyZWRzIG9mCisgKiBlbnRyaWVzKS4gVGhlIGNhY2hlIGRvZXMg bm90IG5lZWQgdG8gYmUgcGVyZmVjdCwgd2UgY2FuIGFjY2VwdCBmYWxzZQorICogcG9zaXRp dmVzL25lZ2F0aXZlcywgYXMgbG9uZyBhcyB0aGUgcmF0ZSBpcyByZWFzb25hYmx5IGxvdy4g V2UgYWxzbworICogbmVlZCB0byBleHBpcmUgZW50cmllcywgc28gdGhhdCBvbmx5ICJyZWNl bnQiIHJlcXVlc3RzIGFyZSByZW1lbWJlcmVkLgorICoKKyAqIEEgcXVldWUgd291bGQgYWxs b3cgZXhwaXJpbmcgdGhlIHJlcXVlc3RzLCBidXQgY2hlY2tpbmcgaWYgYSBibG9jayB3YXMK KyAqIHByZWZldGNoZWQgd291bGQgYmUgZXhwZW5zaXZlIChsaW5lYXIgc2VhcmNoIGZvciBs b25nZXIgcXVldWVzKS4gQW5vdGhlcgorICogb3B0aW9uIHdvdWxkIGJlIGEgaGFzaCB0YWJs ZSwgYnV0IHRoYXQgaGFzIGlzc3VlcyB3aXRoIGV4cGlyaW5nIGVudHJpZXMKKyAqIGNoZWFw bHkgKHdoaWNoIHVzdWFsbHkgZGVncmFkZXMgdGhlIGhhc2ggdGFibGUpLgorICoKKyAqIFNv IHdlIHVzZSBhIGNhY2hlIHRoYXQgaXMgb3JnYW5pemVkIGFzIG11bHRpcGxlIHNtYWxsIExS VSBjYWNoZXMuIEVhY2gKKyAqIGJsb2NrIGlzIG1hcHBlZCB0byBhIHBhcnRpY3VsYXIgTFJV IGJ5IGhhc2hpbmcgKHNvIGl0J3MgYSBiaXQgbGlrZSBhCisgKiBoYXNoIHRhYmxlKSwgYW5k IGVhY2ggTFJVIGlzIHRpbnkgKGUuZy4gOCBlbnRyaWVzKS4gVGhlIExSVSBvbmx5IGtlZXBz CisgKiB0aGUgbW9zdCByZWNlbnQgcmVxdWVzdHMgKGZvciB0aGF0IHBhcnRpY3VsYXIgTFJV KS4KKyAqCisgKiBUaGlzIGFsbG93cyBxdWljayBzZWFyY2hlcyBhbmQgZXhwaXJhdGlvbiwg d2l0aCBmYWxzZSBuZWdhdGl2ZXMgKHdoZW4KKyAqIGEgcGFydGljdWxhciBMUlUgaGFzIHRv byBtYW55IGNvbGxpc2lvbnMpLgorICoKKyAqIEZvciBleGFtcGxlLCBpbWFnaW5lIDEyOCBM UlUgY2FjaGVzLCBlYWNoIHdpdGggOCBlbnRyaWVzIC0gdGhhdCdzIDEwMjQKKyAqIHByZWZl dGNoIHJlcXVlc3QgaW4gdG90YWwuCisgKgorICogVGhlIHJlY2VuY3kgaXMgZGV0ZXJtaW5l ZCB1c2luZyBhIHByZWZldGNoIGNvdW50ZXIsIGluY3JlbWVudGVkIGV2ZXJ5CisgKiB0aW1l IHdlIGVuZCB1cCBwcmVmZXRjaGluZyBhIGJsb2NrLiBUaGUgY291bnRlciBpcyB1aW50NjQs IHNvIGl0IHNob3VsZAorICogbm90IHdyYXAgKDEyNSB6ZWJpYnl0ZXMsIHdvdWxkIHRha2Ug fjQgbWlsbGlvbiB5ZWFycyBhdCAxR0IvcykuCisgKgorICogVG8gY2hlY2sgaWYgYSBibG9j ayB3YXMgcHJlZmV0Y2hlZCByZWNlbnRseSwgd2UgY2FsY3VsYXRlIGhhc2goYmxvY2spLAor ICogYW5kIHRoZW4gbGluZWFybHkgc2VhcmNoIGlmIHRoZSB0aW55IExSVSBoYXMgZW50cnkg Zm9yIHRoZSBzYW1lIGJsb2NrCisgKiBhbmQgcmVxdWVzdCBsZXNzIHRoYW4gUFJFRkVUQ0hf Q0FDSEVfU0laRSBhZ28uCisgKgorICogQXQgdGhlIHNhbWUgdGltZSwgd2UgZWl0aGVyIHVw ZGF0ZSB0aGUgZW50cnkgKGZvciB0aGUgc2FtZSBibG9jaykgaWYKKyAqIGZvdW5kLCBvciBy ZXBsYWNlIHRoZSBvbGRlc3QvZW1wdHkgZW50cnkuCisgKgorICogSWYgdGhlIGJsb2NrIHdh cyBub3QgcmVjZW50bHkgcHJlZmV0Y2hlZCAoaS5lLiB3ZSB3YW50IHRvIHByZWZldGNoIGl0 KSwKKyAqIHdlIGluY3JlbWVudCB0aGUgY291bnRlci4KKyAqLworc3RhdGljIGJvb2wKK2lu ZGV4X3ByZWZldGNoX2FkZF9jYWNoZShJbmRleFByZWZldGNoIHByZWZldGNoLCBCbG9ja051 bWJlciBibG9jaykKK3sKKwlQcmVmZXRjaENhY2hlRW50cnkgKmVudHJ5OworCisJLyogY2Fs Y3VsYXRlIHdoaWNoIExSVSB0byB1c2UgKi8KKwlpbnQJCQlscnUgPSBoYXNoX3VpbnQzMihi bG9jaykgJSBQUkVGRVRDSF9MUlVfQ09VTlQ7CisKKwkvKiBlbnRyeSB0byAobWF5YmUpIHVz ZSBmb3IgdGhpcyBibG9jayByZXF1ZXN0ICovCisJdWludDY0CQlvbGRlc3RSZXF1ZXN0ID0g UEdfVUlOVDY0X01BWDsKKwlpbnQJCQlvbGRlc3RJbmRleCA9IC0xOworCisJLyoKKwkgKiBG aXJzdCBhZGQgdGhlIGJsb2NrIHRvIHRoZSAodGlueSkgdG9wLWxldmVsIExSVSBjYWNoZSBh bmQgc2VlIGlmIGl0J3MKKwkgKiBwYXJ0IG9mIGEgc2VxdWVudGlhbCBwYXR0ZXJuLiBJbiB0 aGlzIGNhc2Ugd2UganVzdCBpZ25vcmUgdGhlIGJsb2NrCisJICogYW5kIGRvbid0IHByZWZl dGNoIGl0IC0gd2UgZXhwZWN0IHJlYWQtYWhlYWQgdG8gZG8gYSBiZXR0ZXIgam9iLgorCSAq CisJICogWFhYIE1heWJlIHdlIHNob3VsZCBzdGlsbCBhZGQgdGhlIGJsb2NrIHRvIHRoZSBs YXRlciBjYWNoZSwgaW4gY2FzZQorCSAqIHdlIGhhcHBlbiB0byBhY2Nlc3MgaXQgbGF0ZXI/ IFRoYXQgbWlnaHQgaGVscCBpZiB3ZSBmaXJzdCBzY2FuIGEgbG90CisJICogb2YgdGhlIHRh YmxlIHNlcXVlbnRpYWxseSwgYW5kIHRoZW4gcmFuZG9tbHkuIE5vdCBzdXJlIHRoYXQncyB2 ZXJ5CisJICogbGlrZWx5IHdpdGggaW5kZXggYWNjZXNzLCB0aG91Z2guCisJICovCisJaWYg KGluZGV4X3ByZWZldGNoX2lzX3NlcXVlbnRpYWwocHJlZmV0Y2gsIGJsb2NrKSkKKwl7CisJ CXByZWZldGNoLT5jb3VudFNraXBTZXF1ZW50aWFsKys7CisJCXJldHVybiB0cnVlOworCX0K KworCS8qIHNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgcHJlZmV0Y2hlZCB0aGlzIGJsb2NrIChs aW5lYXIgc2VhcmNoIG9mIExSVSkgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IFBSRUZFVENI X0xSVV9TSVpFOyBpKyspCisJeworCQllbnRyeSA9ICZwcmVmZXRjaC0+cHJlZmV0Y2hDYWNo ZVtscnUgKiBQUkVGRVRDSF9MUlVfU0laRSArIGldOworCisJCS8qIElzIHRoaXMgdGhlIG9s ZGVzdCBwcmVmZXRjaCByZXF1ZXN0IGluIHRoaXMgTFJVPyAqLworCQlpZiAoZW50cnktPnJl cXVlc3QgPCBvbGRlc3RSZXF1ZXN0KQorCQl7CisJCQlvbGRlc3RSZXF1ZXN0ID0gZW50cnkt PnJlcXVlc3Q7CisJCQlvbGRlc3RJbmRleCA9IGk7CisJCX0KKworCQkvKiBSZXF1ZXN0IG51 bWJlcnMgYXJlIHBvc2l0aXZlLCBzbyAwIG1lYW5zICJ1bnVzZWQiLiAqLworCQlpZiAoZW50 cnktPnJlcXVlc3QgPT0gMCkKKwkJCWNvbnRpbnVlOworCisJCS8qIElzIHRoaXMgZW50cnkg Zm9yIHRoZSBzYW1lIGJsb2NrIGFzIHRoZSBjdXJyZW50IHJlcXVlc3Q/ICovCisJCWlmIChl bnRyeS0+YmxvY2sgPT0gYmxvY2spCisJCXsKKwkJCWJvb2wJcHJlZmV0Y2hlZDsKKworCQkJ LyoKKwkJCSAqIElzIHRoZSBvbGQgcmVxdWVzdCBzdWZmaWNpZW50bHkgcmVjZW50PyBJZiB5 ZXMsIHdlIHRyZWF0IHRoZQorCQkJICogYmxvY2sgYXMgYWxyZWFkeSBwcmVmZXRjaGVkLgor CQkJICoKKwkJCSAqIFhYWCBXZSBkbyBhZGQgdGhlIGNhY2hlIHNpemUgdG8gdGhlIHJlcXVl c3QgaW4gb3JkZXIgbm90IHRvCisJCQkgKiBoYXZlIGlzc3VlcyB3aXRoIHVpbnQ2NCB1bmRl cmZsb3dzLgorCQkJICovCisJCQlwcmVmZXRjaGVkID0gKGVudHJ5LT5yZXF1ZXN0ICsgUFJF RkVUQ0hfQ0FDSEVfU0laRSA+PSBwcmVmZXRjaC0+cHJlZmV0Y2hSZXFOdW1iZXIpOworCisJ CQkvKiBVcGRhdGUgdGhlIHJlcXVlc3QgbnVtYmVyLiAqLworCQkJZW50cnktPnJlcXVlc3Qg PSArK3ByZWZldGNoLT5wcmVmZXRjaFJlcU51bWJlcjsKKworCQkJcHJlZmV0Y2gtPmNvdW50 U2tpcENhY2hlZCArPSAocHJlZmV0Y2hlZCkgPyAxIDogMDsKKworCQkJcmV0dXJuIHByZWZl dGNoZWQ7CisJCX0KKwl9CisKKwkvKgorCSAqIFdlIGRpZG4ndCBmaW5kIHRoZSBibG9jayBp biB0aGUgTFJVLCBzbyBzdG9yZSBpdCBlaXRoZXIgaW4gYW4gZW1wdHkKKwkgKiBlbnRyeSwg b3IgaW4gdGhlICJvbGRlc3QiIHByZWZldGNoIHJlcXVlc3QgaW4gdGhpcyBMUlUuCisJICov CisJQXNzZXJ0KChvbGRlc3RJbmRleCA+PSAwKSAmJiAob2xkZXN0SW5kZXggPCBQUkVGRVRD SF9MUlVfU0laRSkpOworCisJZW50cnkgPSAmcHJlZmV0Y2gtPnByZWZldGNoQ2FjaGVbbHJ1 ICogUFJFRkVUQ0hfTFJVX1NJWkUgKyBvbGRlc3RJbmRleF07CisKKwllbnRyeS0+YmxvY2sg PSBibG9jazsKKwllbnRyeS0+cmVxdWVzdCA9ICsrcHJlZmV0Y2gtPnByZWZldGNoUmVxTnVt YmVyOworCisJLyogbm90IGluIHRoZSBwcmVmZXRjaCBjYWNoZSAqLworCXJldHVybiBmYWxz ZTsKK30KKworLyoKKyAqIERvIHByZWZldGNoaW5nLCBhbmQgZ3JhZHVhbGx5IGluY3JlYXNl IHRoZSBwcmVmZXRjaCBkaXN0YW5jZS4KKyAqCisgKiBYWFggVGhpcyBpcyBsaW1pdGVkIHRv IGEgc2luZ2xlIGluZGV4IHBhZ2UgKGJlY2F1c2UgdGhhdCdzIHdoZXJlIHdlIGdldAorICog Y3VyclBvcy5pdGVtcyBmcm9tKS4gQnV0IGluZGV4IHR1cGxlcyBhcmUgdHlwaWNhbGx5IHZl cnkgc21hbGwsIHNvIHRoZXJlCisgKiBzaG91bGQgYmUgcXVpdGUgYSBiaXQgb2Ygc3R1ZmYg dG8gcHJlZmV0Y2ggKGVzcGVjaWFsbHkgd2l0aCBkZWR1cGxpY2F0ZWQKKyAqIGluZGV4ZXMs IGV0Yy4pLiBEb2VzIG5vdCBzZWVtIHdvcnRoIHJld29ya2luZyB0aGUgaW5kZXggYWNjZXNz IHRvIGFsbG93CisgKiBtb3JlIGFnZ3Jlc3NpdmUgcHJlZmV0Y2hpbmcsIGl0J3MgYmVzdCBl ZmZvcnQuCisgKgorICogWFhYIFNvbWUgaWRlYXMgaG93IHRvIGF1dG8tdHVuZSB0aGUgcHJl ZmV0Y2hpbmcsIHNvIHRoYXQgdW5uZWNlc3NhcnkKKyAqIHByZWZldGNoaW5nIGRvZXMgbm90 IGNhdXNlIHNpZ25pZmljYW50IHJlZ3Jlc3Npb25zIChlLmcuIGZvciBuZXN0bG9vcAorICog d2l0aCBpbm5lciBpbmRleCBzY2FuKS4gV2UgY291bGQgdHJhY2sgbnVtYmVyIG9mIGluZGV4 IHBhZ2VzIHZpc2l0ZWQKKyAqIGFuZCBpbmRleCB0dXBsZXMgcmV0dXJuZWQsIHRvIGNhbGN1 bGF0ZSBhdmcgdHVwbGVzIC8gcGFnZSwgYW5kIHRoZW4KKyAqIHVzZSB0aGF0IHRvIGxpbWl0 IHByZWZldGNoaW5nIGFmdGVyIHN3aXRjaGluZyB0byBhIG5ldyBwYWdlIChpbnN0ZWFkCisg KiBvZiBqdXN0IHVzaW5nIHByZWZldGNoTWF4VGFyZ2V0LCB3aGljaCBjYW4gZ2V0IG11Y2gg bGFyZ2VyKS4KKyAqCisgKiBYWFggT2J2aW91c2x5LCBhbm90aGVyIG9wdGlvbiBpcyB0byB1 c2UgdGhlIHBsYW5uZXIgZXN0aW1hdGVzIC0gd2Uga25vdworICogaG93IG1hbnkgcm93cyB3 ZSdyZSBleHBlY3RlZCB0byBmZXRjaCAob24gYXZlcmFnZSwgYXNzdW1pbmcgdGhlIGVzdGlt YXRlcworICogYXJlIHJlYXNvbmFibHkgYWNjdXJhdGUpLCBzbyB3aHkgbm90IHRvIHVzZSB0 aGF0LiBBbmQgbWF5YmUgY29tYmluZSBpdAorICogd2l0aCB0aGUgYXV0by10dW5pbmcgYmFz ZWQgb24gcnVudGltZSBzdGF0aXN0aWNzLCBkZXNjcmliZWQgYWJvdmUuCisgKgorICogWFhY IFRoZSBwcmVmZXRjaGluZyBtYXkgaW50ZXJmZXJlIHdpdGggdGhlIHBhdGNoIGFsbG93aW5n IHVzIHRvIGV2YWx1YXRlCisgKiBjb25kaXRpb25zIG9uIHRoZSBpbmRleCB0dXBsZSwgaW4g d2hpY2ggY2FzZSB3ZSBtYXkgbm90IG5lZWQgdGhlIGhlYXAKKyAqIHR1cGxlLiBNYXliZSBp ZiB0aGVyZSdzIHN1Y2ggZmlsdGVyLCB3ZSBzaG91bGQgcHJlZmV0Y2ggb25seSBwYWdlcyB0 aGF0CisgKiBhcmUgbm90IGFsbC12aXNpYmxlIChhbmQgdGhlIHNhbWUgaWRlYSB3b3VsZCBh bHNvIHdvcmsgZm9yIElPUyksIGJ1dAorICogaXQgYWxzbyBtYWtlcyB0aGUgaW5kZXhpbmcg YSBiaXQgImF3YXJlIiBvZiB0aGUgdmlzaWJpbGl0eSBzdHVmZiAod2hpY2gKKyAqIHNlZW1z IGEgYml0IHdyb25nKS4gQWxzbywgbWF5YmUgd2Ugc2hvdWxkIGNvbnNpZGVyIHRoZSBmaWx0 ZXIgc2VsZWN0aXZpdHkKKyAqIChpZiB0aGUgaW5kZXgtb25seSBmaWx0ZXIgaXMgZXhwZWN0 ZWQgdG8gZWxpbWluYXRlIG9ubHkgZmV3IHJvd3MsIHRoZW4KKyAqIHRoZSB2bSBjaGVjayBp cyBwb2ludGxlc3MpLiBNYXliZSB0aGlzIGNvdWxkL3Nob3VsZCBiZSBhdXRvLXR1bmluZyB0 b28sCisgKiBpLmUuIHdlIGNvdWxkIHRyYWNrIGhvdyBtYW55IGhlYXAgdHVwbGVzIHdlcmUg bmVlZGVkIGFmdGVyIGFsbCwgYW5kIHRoZW4KKyAqIHdlIHdvdWxkIGNvbnNpZGVyIHRoaXMg d2hlbiBkZWNpZGluZyB3aGV0aGVyIHRvIHByZWZldGNoIGFsbC12aXNpYmxlCisgKiBwYWdl cyBvciBub3QgKG1hdHRlcnMgb25seSBmb3IgcmVndWxhciBpbmRleCBzY2Fucywgbm90IElP UykuCisgKgorICogWFhYIE1heWJlIHdlIGNvdWxkL3Nob3VsZCBhbHNvIHByZWZldGNoIHRo ZSBuZXh0IGluZGV4IGJsb2NrLCBlLmcuIHN0b3JlZAorICogaW4gQlRTY2FuUG9zRGF0YS5u ZXh0UGFnZS4KKyAqLworc3RhdGljIHZvaWQKK2luZGV4X3ByZWZldGNoKEluZGV4U2NhbkRl c2Mgc2NhbiwgSXRlbVBvaW50ZXIgdGlkKQoreworCUluZGV4UHJlZmV0Y2gJcHJlZmV0Y2gg PSBzY2FuLT54c19wcmVmZXRjaDsKKwlCbG9ja051bWJlcglibG9jazsKKworCS8qCisJICog Tm8gaGVhcCByZWxhdGlvbiBtZWFucyBiaXRtYXAgaW5kZXggc2Nhbiwgd2hpY2ggZG9lcyBw cmVmZXRjaGluZyBhdAorCSAqIHRoZSBiaXRtYXAgaGVhcCBzY2FuLCBzbyBubyBwcmVmZXRj aCBoZXJlICh3ZSBjYW4ndCBkbyBpdCBhbnl3YXksCisJICogd2l0aG91dCB0aGUgaGVhcCkK KwkgKgorCSAqIFhYWCBCdXQgaW4gdGhpcyBjYXNlIHdlIHNob3VsZCBoYXZlIHByZWZldGNo TWF4VGFyZ2V0PTAsIGJlY2F1c2UgaW4KKwkgKiBpbmRleF9iZWJpbnNjYW5fYml0bWFwKCkg d2UgZGlzYWJsZSBwcmVmZXRjaGluZy4gU28gbWF5YmUgd2Ugc2hvdWxkCisJICoganVzdCBj aGVjayB0aGF0LgorCSAqLworCWlmICghcHJlZmV0Y2gpCisJCXJldHVybjsKKworCS8qIHdh cyBpdCBpbml0aWFsaXplZCBjb3JyZWN0bHk/ICovCisJLy8gQXNzZXJ0KHByZWZldGNoLT5w cmVmZXRjaEluZGV4ICE9IC0xKTsKKworCS8qCisJICogSWYgd2UgZ290IGhlcmUsIHByZWZl dGNoaW5nIGlzIGVuYWJsZWQgYW5kIGl0J3MgYSBub2RlIHRoYXQgc3VwcG9ydHMKKwkgKiBw cmVmZXRjaGluZyAoaS5lLiBpdCBjYW4ndCBiZSBhIGJpdG1hcCBpbmRleCBzY2FuKS4KKwkg Ki8KKwlBc3NlcnQoc2Nhbi0+aGVhcFJlbGF0aW9uKTsKKworCXByZWZldGNoLT5jb3VudEFs bCsrOworCisJYmxvY2sgPSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKHRpZCk7CisKKwkv KgorCSAqIERvIG5vdCBwcmVmZXRjaCB0aGUgc2FtZSBibG9jayBvdmVyIGFuZCBvdmVyIGFn YWluLAorCSAqCisJICogVGhpcyBoYXBwZW5zIGUuZy4gZm9yIGNsdXN0ZXJlZCBvciBuYXR1 cmFsbHkgY29ycmVsYXRlZCBpbmRleGVzCisJICogKGZrZXkgdG8gYSBzZXF1ZW5jZSBJRCku IEl0J3Mgbm90IGV4cGVuc2l2ZSAodGhlIGJsb2NrIGlzIGluIHBhZ2UKKwkgKiBjYWNoZSBh bHJlYWR5LCBzbyBubyBJL08pLCBidXQgaXQncyBub3QgZnJlZSBlaXRoZXIuCisJICovCisJ aWYgKCFpbmRleF9wcmVmZXRjaF9hZGRfY2FjaGUocHJlZmV0Y2gsIGJsb2NrKSkKKwl7CisJ CXByZWZldGNoLT5jb3VudFByZWZldGNoKys7CisKKwkJUHJlZmV0Y2hCdWZmZXIoc2Nhbi0+ aGVhcFJlbGF0aW9uLCBNQUlOX0ZPUktOVU0sIGJsb2NrKTsKKwkJcGdCdWZmZXJVc2FnZS5i bGtzX3ByZWZldGNoZXMrKzsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXgg MTMyMTc4MDdlZWQuLjg4MzdkYTkxODU3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBA IC0zNTY2LDYgKzM1NjYsNyBAQCBzaG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVz LCBjb25zdCBCdWZmZXJVc2FnZSAqdXNhZ2UsIGJvb2wgcGxhbm5pbmcpCiAJCQkJCQkJCSAg IUlOU1RSX1RJTUVfSVNfWkVSTyh1c2FnZS0+YmxrX3dyaXRlX3RpbWUpKTsKIAkJYm9vbAkJ aGFzX3RlbXBfdGltaW5nID0gKCFJTlNUUl9USU1FX0lTX1pFUk8odXNhZ2UtPnRlbXBfYmxr X3JlYWRfdGltZSkgfHwKIAkJCQkJCQkJCSAgICFJTlNUUl9USU1FX0lTX1pFUk8odXNhZ2Ut PnRlbXBfYmxrX3dyaXRlX3RpbWUpKTsKKwkJYm9vbAkJaGFzX3ByZWZldGNoZXMgPSAodXNh Z2UtPmJsa3NfcHJlZmV0Y2hlcyA+IDApOwogCQlib29sCQlzaG93X3BsYW5uaW5nID0gKHBs YW5uaW5nICYmIChoYXNfc2hhcmVkIHx8CiAJCQkJCQkJCQkJCQkgIGhhc19sb2NhbCB8fCBo YXNfdGVtcCB8fCBoYXNfdGltaW5nIHx8CiAJCQkJCQkJCQkJCQkgIGhhc190ZW1wX3RpbWlu ZykpOwpAQCAtMzY2Myw2ICszNjY0LDIzIEBAIHNob3dfYnVmZmVyX3VzYWdlKEV4cGxhaW5T dGF0ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSwgYm9vbCBwbGFubmluZykKIAkJ CWFwcGVuZFN0cmluZ0luZm9DaGFyKGVzLT5zdHIsICdcbicpOwogCQl9CiAKKwkJLyogQXMg YWJvdmUsIHNob3cgb25seSBwb3NpdGl2ZSBjb3VudGVyIHZhbHVlcy4gKi8KKwkJaWYgKGhh c19wcmVmZXRjaGVzKQorCQl7CisJCQlFeHBsYWluSW5kZW50VGV4dChlcyk7CisJCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKGVzLT5zdHIsICJQcmVmZXRjaGVzOiIpOworCisJCQlpZiAo dXNhZ2UtPmJsa3NfcHJlZmV0Y2hlcyA+IDApCisJCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+ c3RyLCAiIGJsb2Nrcz0lbGxkIiwKKwkJCQkJCQkJIChsb25nIGxvbmcpIHVzYWdlLT5ibGtz X3ByZWZldGNoZXMpOworCisJCQlpZiAodXNhZ2UtPmJsa3NfcHJlZmV0Y2hfcm91bmRzID4g MCkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICIgcm91bmRzPSVsbGQiLAorCQkJ CQkJCQkgKGxvbmcgbG9uZykgdXNhZ2UtPmJsa3NfcHJlZmV0Y2hfcm91bmRzKTsKKworCQkJ YXBwZW5kU3RyaW5nSW5mb0NoYXIoZXMtPnN0ciwgJ1xuJyk7CisJCX0KKwogCQlpZiAoc2hv d19wbGFubmluZykKIAkJCWVzLT5pbmRlbnQtLTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNJbmRleGluZy5jCmluZGV4IDNjNjczMDYzMmRlLi4wOTQxOGY3MTVmYSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKQEAgLTc2NSwxMSArNzY1LDE1IEBAIGNoZWNr X2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludChSZWxhdGlvbiBoZWFwLCBSZWxhdGlv biBpbmRleCwKIAkvKgogCSAqIE1heSBoYXZlIHRvIHJlc3RhcnQgc2NhbiBmcm9tIHRoaXMg cG9pbnQgaWYgYSBwb3RlbnRpYWwgY29uZmxpY3QgaXMKIAkgKiBmb3VuZC4KKwkgKgorCSAq IFhYWCBTaG91bGQgdGhpcyBkbyBpbmRleCBwcmVmZXRjaD8gUHJvYmFibHkgbm90IHdvcnRo IGl0IGZvciB1bmlxdWUKKwkgKiBjb25zdHJhaW50cywgSSBndWVzcz8gT3RoZXJ3aXNlIHdl IHNob3VsZCBjYWxjdWxhdGUgcHJlZmV0Y2hfdGFyZ2V0CisJICoganVzdCBsaWtlIGluIG5v ZGVJbmRleHNjYW4gZXRjLgogCSAqLwogcmV0cnk6CiAJY29uZmxpY3QgPSBmYWxzZTsKIAlm b3VuZF9zZWxmID0gZmFsc2U7Ci0JaW5kZXhfc2NhbiA9IGluZGV4X2JlZ2luc2NhbihoZWFw LCBpbmRleCwgJkRpcnR5U25hcHNob3QsIGluZG5rZXlhdHRzLCAwKTsKKwlpbmRleF9zY2Fu ID0gaW5kZXhfYmVnaW5zY2FuKGhlYXAsIGluZGV4LCAmRGlydHlTbmFwc2hvdCwgaW5kbmtl eWF0dHMsIDAsIDAsIDApOwogCWluZGV4X3Jlc2NhbihpbmRleF9zY2FuLCBzY2Fua2V5cywg aW5kbmtleWF0dHMsIE5VTEwsIDApOwogCiAJd2hpbGUgKGluZGV4X2dldG5leHRfc2xvdChp bmRleF9zY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgZXhpc3Rpbmdfc2xvdCkpCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCmluZGV4IDgxZjI3MDQyYmM0Li5m M2UxYThkMjJhNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxp Y2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMK QEAgLTIwNCw4ICsyMDQsMTMgQEAgUmVsYXRpb25GaW5kUmVwbFR1cGxlQnlJbmRleChSZWxh dGlvbiByZWwsIE9pZCBpZHhvaWQsCiAJLyogQnVpbGQgc2NhbiBrZXkuICovCiAJc2tleV9h dHRvZmYgPSBidWlsZF9yZXBsaW5kZXhfc2Nhbl9rZXkoc2tleSwgcmVsLCBpZHhyZWwsIHNl YXJjaHNsb3QpOwogCi0JLyogU3RhcnQgYW4gaW5kZXggc2Nhbi4gKi8KLQlzY2FuID0gaW5k ZXhfYmVnaW5zY2FuKHJlbCwgaWR4cmVsLCAmc25hcCwgc2tleV9hdHRvZmYsIDApOworCS8q IFN0YXJ0IGFuIGluZGV4IHNjYW4uCisJICoKKwkgKiBYWFggU2hvdWxkIHRoaXMgZG8gaW5k ZXggcHJlZmV0Y2hpbmc/IFdlJ3JlIGxvb2tpbmcgZm9yIGEgc2luZ2xlIHR1cGxlLAorCSAq IHByb2JhYmx5IHVzaW5nIGEgUEsgLyBVTklRVUUgaW5kZXgsIHNvIGRvZXMgbm90IHNlZW0g d29ydGggaXQuIElmIHdlCisJICogcmVjb25zaWRlciB0aGlzLCBjYWxjbGF0ZSBwcmVmZXRj aF90YXJnZXQgbGlrZSBpbiBub2RlSW5kZXhzY2FuLgorCSAqLworCXNjYW4gPSBpbmRleF9i ZWdpbnNjYW4ocmVsLCBpZHhyZWwsICZzbmFwLCBza2V5X2F0dG9mZiwgMCwgMCwgMCk7CiAK IHJldHJ5OgogCWZvdW5kID0gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9pbnN0cnVtZW50LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMK aW5kZXggZWU3OGE1NzQ5ZDIuLjQzNGJlNTlmY2EwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9pbnN0cnVtZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5z dHJ1bWVudC5jCkBAIC0yMzUsNiArMjM1LDggQEAgQnVmZmVyVXNhZ2VBZGQoQnVmZmVyVXNh Z2UgKmRzdCwgY29uc3QgQnVmZmVyVXNhZ2UgKmFkZCkKIAlkc3QtPmxvY2FsX2Jsa3Nfd3Jp dHRlbiArPSBhZGQtPmxvY2FsX2Jsa3Nfd3JpdHRlbjsKIAlkc3QtPnRlbXBfYmxrc19yZWFk ICs9IGFkZC0+dGVtcF9ibGtzX3JlYWQ7CiAJZHN0LT50ZW1wX2Jsa3Nfd3JpdHRlbiArPSBh ZGQtPnRlbXBfYmxrc193cml0dGVuOworCWRzdC0+Ymxrc19wcmVmZXRjaF9yb3VuZHMgKz0g YWRkLT5ibGtzX3ByZWZldGNoX3JvdW5kczsKKwlkc3QtPmJsa3NfcHJlZmV0Y2hlcyArPSBh ZGQtPmJsa3NfcHJlZmV0Y2hlczsKIAlJTlNUUl9USU1FX0FERChkc3QtPmJsa19yZWFkX3Rp bWUsIGFkZC0+YmxrX3JlYWRfdGltZSk7CiAJSU5TVFJfVElNRV9BREQoZHN0LT5ibGtfd3Jp dGVfdGltZSwgYWRkLT5ibGtfd3JpdGVfdGltZSk7CiAJSU5TVFJfVElNRV9BREQoZHN0LT50 ZW1wX2Jsa19yZWFkX3RpbWUsIGFkZC0+dGVtcF9ibGtfcmVhZF90aW1lKTsKQEAgLTI1Nyw2 ICsyNTksOCBAQCBCdWZmZXJVc2FnZUFjY3VtRGlmZihCdWZmZXJVc2FnZSAqZHN0LAogCWRz dC0+bG9jYWxfYmxrc193cml0dGVuICs9IGFkZC0+bG9jYWxfYmxrc193cml0dGVuIC0gc3Vi LT5sb2NhbF9ibGtzX3dyaXR0ZW47CiAJZHN0LT50ZW1wX2Jsa3NfcmVhZCArPSBhZGQtPnRl bXBfYmxrc19yZWFkIC0gc3ViLT50ZW1wX2Jsa3NfcmVhZDsKIAlkc3QtPnRlbXBfYmxrc193 cml0dGVuICs9IGFkZC0+dGVtcF9ibGtzX3dyaXR0ZW4gLSBzdWItPnRlbXBfYmxrc193cml0 dGVuOworCWRzdC0+Ymxrc19wcmVmZXRjaGVzICs9IGFkZC0+Ymxrc19wcmVmZXRjaGVzIC0g c3ViLT5ibGtzX3ByZWZldGNoZXM7CisJZHN0LT5ibGtzX3ByZWZldGNoX3JvdW5kcyArPSBh ZGQtPmJsa3NfcHJlZmV0Y2hfcm91bmRzIC0gc3ViLT5ibGtzX3ByZWZldGNoX3JvdW5kczsK IAlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoZHN0LT5ibGtfcmVhZF90aW1lLAogCQkJCQkJICBh ZGQtPmJsa19yZWFkX3RpbWUsIHN1Yi0+YmxrX3JlYWRfdGltZSk7CiAJSU5TVFJfVElNRV9B Q0NVTV9ESUZGKGRzdC0+YmxrX3dyaXRlX3RpbWUsCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUluZGV4b25seXNjYW4uYwppbmRleCBmMWRiMzU2NjVjOC4uNzViNDRkYjMzYzYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwpAQCAtODcsMTIg Kzg3LDIwIEBAIEluZGV4T25seU5leHQoSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCQkg KiBXZSByZWFjaCBoZXJlIGlmIHRoZSBpbmRleCBvbmx5IHNjYW4gaXMgbm90IHBhcmFsbGVs LCBvciBpZiB3ZSdyZQogCQkgKiBzZXJpYWxseSBleGVjdXRpbmcgYW4gaW5kZXggb25seSBz Y2FuIHRoYXQgd2FzIHBsYW5uZWQgdG8gYmUKIAkJICogcGFyYWxsZWwuCisJCSAqCisJCSAq IFhYWCBNYXliZSB3ZSBzaG91bGQgZW5hYmxlIHByZWZldGNoaW5nLCBidXQgcHJlZmV0Y2gg b25seSBwYWdlcyB0aGF0CisJCSAqIGFyZSBub3QgYWxsLXZpc2libGUgKGJ1dCBjaGVja2lu ZyB0aGF0IGZyb20gdGhlIGluZGV4IGNvZGUgc2VlbXMgbGlrZQorCQkgKiBhIHZpb2xhdGlv biBvZiBsYXllcmluZyBldGMpLgorCQkgKgorCQkgKiBYWFggVGhpcyBtaWdodCBsZWFkIHRv IElPUyBiZWluZyBzbG93ZXIgdGhhbiBwbGFpbiBpbmRleCBzY2FuLCBpZiB0aGUKKwkJICog dGFibGUgaGFzIGEgbG90IG9mIHBhZ2VzIHRoYXQgbmVlZCByZWNoZWNrLgogCQkgKi8KIAkJ c2NhbmRlc2MgPSBpbmRleF9iZWdpbnNjYW4obm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9u LAogCQkJCQkJCQkgICBub2RlLT5pb3NzX1JlbGF0aW9uRGVzYywKIAkJCQkJCQkJICAgZXN0 YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkJICAgbm9kZS0+aW9zc19OdW1TY2FuS2V5cywK LQkJCQkJCQkJICAgbm9kZS0+aW9zc19OdW1PcmRlckJ5S2V5cyk7CisJCQkJCQkJCSAgIG5v ZGUtPmlvc3NfTnVtT3JkZXJCeUtleXMsCisJCQkJCQkJCSAgIDAsIDApOwkvKiBubyBpbmRl eCBwcmVmZXRjaCBmb3IgSU9TICovCiAKIAkJbm9kZS0+aW9zc19TY2FuRGVzYyA9IHNjYW5k ZXNjOwogCkBAIC02NTgsNyArNjY2LDggQEAgRXhlY0luZGV4T25seVNjYW5Jbml0aWFsaXpl RFNNKEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSwKIAkJCQkJCQkJIG5vZGUtPmlvc3NfUmVs YXRpb25EZXNjLAogCQkJCQkJCQkgbm9kZS0+aW9zc19OdW1TY2FuS2V5cywKIAkJCQkJCQkJ IG5vZGUtPmlvc3NfTnVtT3JkZXJCeUtleXMsCi0JCQkJCQkJCSBwaXNjYW4pOworCQkJCQkJ CQkgcGlzY2FuLAorCQkJCQkJCQkgMCwgMCk7CS8qIG5vIGluZGV4IHByZWZldGNoIGZvciBJ T1MgKi8KIAlub2RlLT5pb3NzX1NjYW5EZXNjLT54c193YW50X2l0dXAgPSB0cnVlOwogCW5v ZGUtPmlvc3NfVk1CdWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCkBAIC03MDMsNyArNzEyLDgg QEAgRXhlY0luZGV4T25seVNjYW5Jbml0aWFsaXplV29ya2VyKEluZGV4T25seVNjYW5TdGF0 ZSAqbm9kZSwKIAkJCQkJCQkJIG5vZGUtPmlvc3NfUmVsYXRpb25EZXNjLAogCQkJCQkJCQkg bm9kZS0+aW9zc19OdW1TY2FuS2V5cywKIAkJCQkJCQkJIG5vZGUtPmlvc3NfTnVtT3JkZXJC eUtleXMsCi0JCQkJCQkJCSBwaXNjYW4pOworCQkJCQkJCQkgcGlzY2FuLAorCQkJCQkJCQkg MCwgMCk7CS8qIG5vIGluZGV4IHByZWZldGNoIGZvciBJT1MgKi8KIAlub2RlLT5pb3NzX1Nj YW5EZXNjLT54c193YW50X2l0dXAgPSB0cnVlOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmRleHNjYW4uYwppbmRleCAxNGI5YzAwMjE3YS4uMTg1ZmYwZjE0NDkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKQEAgLTQzLDYgKzQzLDcgQEAKICNp bmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5o IgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUgInV0aWxzL3NwY2NhY2hlLmgi CiAKIC8qCiAgKiBXaGVuIGFuIG9yZGVyaW5nIG9wZXJhdG9yIGlzIHVzZWQsIHR1cGxlcyBm ZXRjaGVkIGZyb20gdGhlIGluZGV4IHRoYXQKQEAgLTg1LDYgKzg2LDcgQEAgSW5kZXhOZXh0 KEluZGV4U2NhblN0YXRlICpub2RlKQogCVNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uOwogCUlu ZGV4U2NhbkRlc2Mgc2NhbmRlc2M7CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CisJUmVsYXRp b24gaGVhcFJlbCA9IG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbjsKIAogCS8qCiAJICog ZXh0cmFjdCBuZWNlc3NhcnkgaW5mb3JtYXRpb24gZnJvbSBpbmRleCBzY2FuIG5vZGUKQEAg LTEwMyw2ICsxMDUsMjIgQEAgSW5kZXhOZXh0KEluZGV4U2NhblN0YXRlICpub2RlKQogCiAJ aWYgKHNjYW5kZXNjID09IE5VTEwpCiAJeworCQlpbnQJcHJlZmV0Y2hfdGFyZ2V0OworCQlp bnQJcHJlZmV0Y2hfcmVzZXQ7CisKKwkJLyoKKwkJICogRGV0ZXJtaW5lIG51bWJlciBvZiBo ZWFwIHBhZ2VzIHRvIHByZWZldGNoIGZvciB0aGlzIGluZGV4LiBUaGlzIGlzCisJCSAqIGVz c2VudGlhbGx5IGp1c3QgZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5IGZvciB0aGUgdGFibGUg KG9yIHRoZQorCQkgKiB0YWJsZXNwYWNlIGl0J3MgaW4pLgorCQkgKgorCQkgKiBYWFggU2hv dWxkIHRoaXMgYWxzbyBsb29rIGF0IHBsYW4ucGxhbl9yb3dzIGFuZCBtYXliZSBjYXAgdGhl IHRhcmdldAorCQkgKiB0byB0aGF0PyBQb2ludGxlc3MgdG8gcHJlZmV0Y2ggbW9yZSB0aGFu IHdlIGV4cGVjdCB0byB1c2UuIE9yIG1heWJlCisJCSAqIGp1c3QgcmVzZXQgdG8gdGhhdCB2 YWx1ZSBkdXJpbmcgcHJlZmV0Y2hpbmcsIGFmdGVyIHJlYWRpbmcgdGhlIG5leHQKKwkJICog aW5kZXggcGFnZSAob3IgcmF0aGVyIGFmdGVyIHJlc2Nhbik/CisJCSAqLworCQlwcmVmZXRj aF90YXJnZXQgPSBnZXRfdGFibGVzcGFjZV9pb19jb25jdXJyZW5jeShoZWFwUmVsLT5yZF9y ZWwtPnJlbHRhYmxlc3BhY2UpOworCQlwcmVmZXRjaF9yZXNldCA9IE1pbihwcmVmZXRjaF90 YXJnZXQsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fcm93cyk7CisKIAkJLyoKIAkJICogV2Ug cmVhY2ggaGVyZSBpZiB0aGUgaW5kZXggc2NhbiBpcyBub3QgcGFyYWxsZWwsIG9yIGlmIHdl J3JlCiAJCSAqIHNlcmlhbGx5IGV4ZWN1dGluZyBhbiBpbmRleCBzY2FuIHRoYXQgd2FzIHBs YW5uZWQgdG8gYmUgcGFyYWxsZWwuCkBAIC0xMTEsNyArMTI5LDkgQEAgSW5kZXhOZXh0KElu ZGV4U2NhblN0YXRlICpub2RlKQogCQkJCQkJCQkgICBub2RlLT5pc3NfUmVsYXRpb25EZXNj LAogCQkJCQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90LAogCQkJCQkJCQkgICBub2RlLT5p c3NfTnVtU2NhbktleXMsCi0JCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cyk7 CisJCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cywKKwkJCQkJCQkJICAgcHJl ZmV0Y2hfdGFyZ2V0LAorCQkJCQkJCQkgICBwcmVmZXRjaF9yZXNldCk7CiAKIAkJbm9kZS0+ aXNzX1NjYW5EZXNjID0gc2NhbmRlc2M7CiAKQEAgLTE5OCw2ICsyMTgsMjMgQEAgSW5kZXhO ZXh0V2l0aFJlb3JkZXIoSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAKIAlpZiAoc2NhbmRlc2Mg PT0gTlVMTCkKIAl7CisJCVJlbGF0aW9uIGhlYXBSZWwgPSBub2RlLT5zcy5zc19jdXJyZW50 UmVsYXRpb247CisJCWludAlwcmVmZXRjaF90YXJnZXQ7CisJCWludAlwcmVmZXRjaF9yZXNl dDsKKworCQkvKgorCQkgKiBEZXRlcm1pbmUgbnVtYmVyIG9mIGhlYXAgcGFnZXMgdG8gcHJl ZmV0Y2ggZm9yIHRoaXMgaW5kZXguIFRoaXMgaXMKKwkJICogZXNzZW50aWFsbHkganVzdCBl ZmZlY3RpdmVfaW9fY29uY3VycmVuY3kgZm9yIHRoZSB0YWJsZSAob3IgdGhlCisJCSAqIHRh Ymxlc3BhY2UgaXQncyBpbikuCisJCSAqCisJCSAqIFhYWCBTaG91bGQgdGhpcyBhbHNvIGxv b2sgYXQgcGxhbi5wbGFuX3Jvd3MgYW5kIG1heWJlIGNhcCB0aGUgdGFyZ2V0CisJCSAqIHRv IHRoYXQ/IFBvaW50bGVzcyB0byBwcmVmZXRjaCBtb3JlIHRoYW4gd2UgZXhwZWN0IHRvIHVz ZS4gT3IgbWF5YmUKKwkJICoganVzdCByZXNldCB0byB0aGF0IHZhbHVlIGR1cmluZyBwcmVm ZXRjaGluZywgYWZ0ZXIgcmVhZGluZyB0aGUgbmV4dAorCQkgKiBpbmRleCBwYWdlIChvciBy YXRoZXIgYWZ0ZXIgcmVzY2FuKT8KKwkJICovCisJCXByZWZldGNoX3RhcmdldCA9IGdldF90 YWJsZXNwYWNlX2lvX2NvbmN1cnJlbmN5KGhlYXBSZWwtPnJkX3JlbC0+cmVsdGFibGVzcGFj ZSk7CisJCXByZWZldGNoX3Jlc2V0ID0gTWluKHByZWZldGNoX3RhcmdldCwgbm9kZS0+c3Mu cHMucGxhbi0+cGxhbl9yb3dzKTsKKwogCQkvKgogCQkgKiBXZSByZWFjaCBoZXJlIGlmIHRo ZSBpbmRleCBzY2FuIGlzIG5vdCBwYXJhbGxlbCwgb3IgaWYgd2UncmUKIAkJICogc2VyaWFs bHkgZXhlY3V0aW5nIGFuIGluZGV4IHNjYW4gdGhhdCB3YXMgcGxhbm5lZCB0byBiZSBwYXJh bGxlbC4KQEAgLTIwNiw3ICsyNDMsOSBAQCBJbmRleE5leHRXaXRoUmVvcmRlcihJbmRleFNj YW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJICAgbm9kZS0+aXNzX1JlbGF0aW9uRGVzYywKIAkJ CQkJCQkJICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkJICAgbm9kZS0+aXNzX051 bVNjYW5LZXlzLAotCQkJCQkJCQkgICBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMpOworCQkJ CQkJCQkgICBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMsCisJCQkJCQkJCSAgIHByZWZldGNo X3RhcmdldCwKKwkJCQkJCQkJICAgcHJlZmV0Y2hfcmVzZXQpOwogCiAJCW5vZGUtPmlzc19T Y2FuRGVzYyA9IHNjYW5kZXNjOwogCkBAIC0xNjYyLDYgKzE3MDEsMjEgQEAgRXhlY0luZGV4 U2NhbkluaXRpYWxpemVEU00oSW5kZXhTY2FuU3RhdGUgKm5vZGUsCiB7CiAJRVN0YXRlCSAg ICplc3RhdGUgPSBub2RlLT5zcy5wcy5zdGF0ZTsKIAlQYXJhbGxlbEluZGV4U2NhbkRlc2Mg cGlzY2FuOworCVJlbGF0aW9uCWhlYXBSZWw7CisJaW50CQkJcHJlZmV0Y2hfdGFyZ2V0Owor CWludAkJCXByZWZldGNoX3Jlc2V0OworCisJLyoKKwkgKiBEZXRlcm1pbmUgbnVtYmVyIG9m IGhlYXAgcGFnZXMgdG8gcHJlZmV0Y2ggZm9yIHRoaXMgaW5kZXguIFRoaXMgaXMKKwkgKiBl c3NlbnRpYWxseSBqdXN0IGVmZmVjdGl2ZV9pb19jb25jdXJyZW5jeSBmb3IgdGhlIHRhYmxl IChvciB0aGUKKwkgKiB0YWJsZXNwYWNlIGl0J3MgaW4pLgorCSAqCisJICogWFhYIE1heWJl IHJlZHVjZSB0aGUgdmFsdWUgd2l0aCBwYXJhbGxlbCB3b3JrZXJzPworCSAqLworCWhlYXBS ZWwgPSBub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb247CisKKwlwcmVmZXRjaF90YXJnZXQg PSBnZXRfdGFibGVzcGFjZV9pb19jb25jdXJyZW5jeShoZWFwUmVsLT5yZF9yZWwtPnJlbHRh Ymxlc3BhY2UpOworCXByZWZldGNoX3Jlc2V0ID0gTWluKHByZWZldGNoX3RhcmdldCwgbm9k ZS0+c3MucHMucGxhbi0+cGxhbl9yb3dzKTsKIAogCXBpc2NhbiA9IHNobV90b2NfYWxsb2Nh dGUocGN4dC0+dG9jLCBub2RlLT5pc3NfUHNjYW5MZW4pOwogCWluZGV4X3BhcmFsbGVsc2Nh bl9pbml0aWFsaXplKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKQEAgLTE2NzQsNyAr MTcyOCw5IEBAIEV4ZWNJbmRleFNjYW5Jbml0aWFsaXplRFNNKEluZGV4U2NhblN0YXRlICpu b2RlLAogCQkJCQkJCQkgbm9kZS0+aXNzX1JlbGF0aW9uRGVzYywKIAkJCQkJCQkJIG5vZGUt Pmlzc19OdW1TY2FuS2V5cywKIAkJCQkJCQkJIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cywK LQkJCQkJCQkJIHBpc2Nhbik7CisJCQkJCQkJCSBwaXNjYW4sCisJCQkJCQkJCSBwcmVmZXRj aF90YXJnZXQsCisJCQkJCQkJCSBwcmVmZXRjaF9yZXNldCk7CiAKIAkvKgogCSAqIElmIG5v IHJ1bi10aW1lIGtleXMgdG8gY2FsY3VsYXRlIG9yIHRoZXkgYXJlIHJlYWR5LCBnbyBhaGVh ZCBhbmQgcGFzcwpAQCAtMTcxMCw2ICsxNzY2LDE0IEBAIEV4ZWNJbmRleFNjYW5Jbml0aWFs aXplV29ya2VyKEluZGV4U2NhblN0YXRlICpub2RlLAogCQkJCQkJCSAgUGFyYWxsZWxXb3Jr ZXJDb250ZXh0ICpwd2N4dCkKIHsKIAlQYXJhbGxlbEluZGV4U2NhbkRlc2MgcGlzY2FuOwor CVJlbGF0aW9uCWhlYXBSZWw7CisJaW50CQkJcHJlZmV0Y2hfdGFyZ2V0OworCWludAkJCXBy ZWZldGNoX3Jlc2V0OworCisJaGVhcFJlbCA9IG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlv bjsKKworCXByZWZldGNoX3RhcmdldCA9IGdldF90YWJsZXNwYWNlX2lvX2NvbmN1cnJlbmN5 KGhlYXBSZWwtPnJkX3JlbC0+cmVsdGFibGVzcGFjZSk7CisJcHJlZmV0Y2hfcmVzZXQgPSBN aW4ocHJlZmV0Y2hfdGFyZ2V0LCBub2RlLT5zcy5wcy5wbGFuLT5wbGFuX3Jvd3MpOwogCiAJ cGlzY2FuID0gc2htX3RvY19sb29rdXAocHdjeHQtPnRvYywgbm9kZS0+c3MucHMucGxhbi0+ cGxhbl9ub2RlX2lkLCBmYWxzZSk7CiAJbm9kZS0+aXNzX1NjYW5EZXNjID0KQEAgLTE3MTcs NyArMTc4MSw5IEBAIEV4ZWNJbmRleFNjYW5Jbml0aWFsaXplV29ya2VyKEluZGV4U2NhblN0 YXRlICpub2RlLAogCQkJCQkJCQkgbm9kZS0+aXNzX1JlbGF0aW9uRGVzYywKIAkJCQkJCQkJ IG5vZGUtPmlzc19OdW1TY2FuS2V5cywKIAkJCQkJCQkJIG5vZGUtPmlzc19OdW1PcmRlckJ5 S2V5cywKLQkJCQkJCQkJIHBpc2Nhbik7CisJCQkJCQkJCSBwaXNjYW4sCisJCQkJCQkJCSBw cmVmZXRjaF90YXJnZXQsCisJCQkJCQkJCSBwcmVmZXRjaF9yZXNldCk7CiAKIAkvKgogCSAq IElmIG5vIHJ1bi10aW1lIGtleXMgdG8gY2FsY3VsYXRlIG9yIHRoZXkgYXJlIHJlYWR5LCBn byBhaGVhZCBhbmQgcGFzcwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v d2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwppbmRl eCBlMjUwYjA1NjdlYi4uNDcwOTNjYzljZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dh bHNlbmRlci5jCkBAIC0xMTMxLDYgKzExMzEsOCBAQCBDcmVhdGVSZXBsaWNhdGlvblNsb3Qo Q3JlYXRlUmVwbGljYXRpb25TbG90Q21kICpjbWQpCiAJCQluZWVkX2Z1bGxfc25hcHNob3Qg PSB0cnVlOwogCQl9CiAKKwkJZWxvZyhMT0csICJzbG90ID0gJXMgIG5lZWRfZnVsbF9zbmFw c2hvdCA9ICVkIiwgY21kLT5zbG90bmFtZSwgbmVlZF9mdWxsX3NuYXBzaG90KTsKKwogCQlj dHggPSBDcmVhdGVJbml0RGVjb2RpbmdDb250ZXh0KGNtZC0+cGx1Z2luLCBOSUwsIG5lZWRf ZnVsbF9zbmFwc2hvdCwKIAkJCQkJCQkJCQlJbnZhbGlkWExvZ1JlY1B0ciwKIAkJCQkJCQkJ CQlYTF9ST1VUSU5FKC5wYWdlX3JlYWQgPSBsb2dpY2FsX3JlYWRfeGxvZ19wYWdlLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvc2VsZnVuY3MuYwppbmRleCBjNGZjZDAwNzZlYS4uMGIwMmI2MjY1ZDAg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCkBAIC02MjE4LDcgKzYyMTgsNyBAQCBn ZXRfYWN0dWFsX3ZhcmlhYmxlX2VuZHBvaW50KFJlbGF0aW9uIGhlYXBSZWwsCiAKIAlpbmRl eF9zY2FuID0gaW5kZXhfYmVnaW5zY2FuKGhlYXBSZWwsIGluZGV4UmVsLAogCQkJCQkJCQkg JlNuYXBzaG90Tm9uVmFjdXVtYWJsZSwKLQkJCQkJCQkJIDEsIDApOworCQkJCQkJCQkgMSwg MCwgMCwgMCk7CS8qIFhYWCBtYXliZSBkbyBwcmVmZXRjaD8gKi8KIAkvKiBTZXQgaXQgdXAg Zm9yIGluZGV4LW9ubHkgc2NhbiAqLwogCWluZGV4X3NjYW4tPnhzX3dhbnRfaXR1cCA9IHRy dWU7CiAJaW5kZXhfcmVzY2FuKGluZGV4X3NjYW4sIHNjYW5rZXlzLCAxLCBOVUxMLCAwKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oIGIvc3JjL2luY2x1ZGUv YWNjZXNzL2dlbmFtLmgKaW5kZXggNGU2MjZjNjE1ZTcuLmI4MTRhZjRiMmY2IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3MvZ2VuYW0uaApAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9zZGlyLmgi CiAjaW5jbHVkZSAiYWNjZXNzL3NrZXkuaCIKICNpbmNsdWRlICJub2Rlcy90aWRiaXRtYXAu aCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG9j a2RlZnMuaCIKICNpbmNsdWRlICJ1dGlscy9yZWxjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxz L3NuYXBzaG90LmgiCkBAIC0xNTIsNyArMTUzLDkgQEAgZXh0ZXJuIGJvb2wgaW5kZXhfaW5z ZXJ0KFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiBleHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRl eF9iZWdpbnNjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJCQkJIFJlbGF0aW9u IGluZGV4UmVsYXRpb24sCiAJCQkJCQkJCQkgU25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkJ CQkgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzKTsKKwkJCQkJCQkJCSBpbnQgbmtleXMsIGlu dCBub3JkZXJieXMsCisJCQkJCQkJCQkgaW50IHByZWZldGNoX3RhcmdldCwKKwkJCQkJCQkJ CSBpbnQgcHJlZmV0Y2hfcmVzZXQpOwogZXh0ZXJuIEluZGV4U2NhbkRlc2MgaW5kZXhfYmVn aW5zY2FuX2JpdG1hcChSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogCQkJCQkJCQkJCQlTbmFw c2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJCQkJaW50IG5rZXlzKTsKQEAgLTE2OSw3ICsxNzIs OSBAQCBleHRlcm4gdm9pZCBpbmRleF9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlv biBoZWFwUmVsYXRpb24sCiBleHRlcm4gdm9pZCBpbmRleF9wYXJhbGxlbHJlc2NhbihJbmRl eFNjYW5EZXNjIHNjYW4pOwogZXh0ZXJuIEluZGV4U2NhbkRlc2MgaW5kZXhfYmVnaW5zY2Fu X3BhcmFsbGVsKFJlbGF0aW9uIGhlYXByZWwsCiAJCQkJCQkJCQkJCSAgUmVsYXRpb24gaW5k ZXhyZWwsIGludCBua2V5cywgaW50IG5vcmRlcmJ5cywKLQkJCQkJCQkJCQkJICBQYXJhbGxl bEluZGV4U2NhbkRlc2MgcHNjYW4pOworCQkJCQkJCQkJCQkgIFBhcmFsbGVsSW5kZXhTY2Fu RGVzYyBwc2NhbiwKKwkJCQkJCQkJCQkJICBpbnQgcHJlZmV0Y2hfdGFyZ2V0LAorCQkJCQkJ CQkJCQkgIGludCBwcmVmZXRjaF9yZXNldCk7CiBleHRlcm4gSXRlbVBvaW50ZXIgaW5kZXhf Z2V0bmV4dF90aWQoSW5kZXhTY2FuRGVzYyBzY2FuLAogCQkJCQkJCQkJIFNjYW5EaXJlY3Rp b24gZGlyZWN0aW9uKTsKIHN0cnVjdCBUdXBsZVRhYmxlU2xvdDsKQEAgLTIzMCw0ICsyMzUs MTA4IEBAIGV4dGVybiBIZWFwVHVwbGUgc3lzdGFibGVfZ2V0bmV4dF9vcmRlcmVkKFN5c1Nj YW5EZXNjIHN5c3NjYW4sCiAJCQkJCQkJCQkJICBTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbik7 CiBleHRlcm4gdm9pZCBzeXN0YWJsZV9lbmRzY2FuX29yZGVyZWQoU3lzU2NhbkRlc2Mgc3lz c2Nhbik7CiAKKy8qCisgKiBYWFggbm90IHN1cmUgaXQncyB0aGUgcmlnaHQgcGxhY2UgdG8g ZGVmaW5lIHRoZXNlIGNhbGxiYWNrcyBldGMuCisgKi8KK3R5cGVkZWYgdm9pZCAoKnByZWZl dGNoZXJfZ2V0cmFuZ2VfZnVuY3Rpb24pIChJbmRleFNjYW5EZXNjIHNjYW5kZXNjLAorCQkJ CQkJCQkJCQkgIFNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uLAorCQkJCQkJCQkJCQkgIGludCAq c3RhcnQsIGludCAqZW5kLAorCQkJCQkJCQkJCQkgIGJvb2wgKnJlc2V0KTsKKwordHlwZWRl ZiBCbG9ja051bWJlciAoKnByZWZldGNoZXJfZ2V0YmxvY2tfZnVuY3Rpb24pIChJbmRleFNj YW5EZXNjIHNjYW5kZXNjLAorCQkJCQkJCQkJCQkJCSBTY2FuRGlyZWN0aW9uIGRpcmVjdGlv biwKKwkJCQkJCQkJCQkJCQkgaW50IGluZGV4KTsKKworLyoKKyAqIENhY2hlIG9mIHJlY2Vu dGx5IHByZWZldGNoZWQgYmxvY2tzLCBvcmdhbml6ZWQgYXMgYSBoYXNoIHRhYmxlIG9mCisg KiBzbWFsbCBMUlUgY2FjaGVzLiBEb2Vzbid0IG5lZWQgdG8gYmUgcGVyZmVjdGx5IGFjY3Vy YXRlLCBidXQgd2UKKyAqIGFpbSB0byBtYWtlIGZhbHNlIHBvc2l0aXZlcy9uZWdhdGl2ZXMg cmVhc29uYWJseSBsb3cuCisgKi8KK3R5cGVkZWYgc3RydWN0IFByZWZldGNoQ2FjaGVFbnRy eSB7CisJQmxvY2tOdW1iZXIJCWJsb2NrOworCXVpbnQ2NAkJCXJlcXVlc3Q7Cit9IFByZWZl dGNoQ2FjaGVFbnRyeTsKKworLyoKKyAqIFNpemUgb2YgdGhlIGNhY2hlIG9mIHJlY2VudGx5 IHByZWZldGNoZWQgYmxvY2tzIC0gc2hvdWxkbid0IGJlIHRvbworICogc21hbGwgb3IgdG9v IGxhcmdlLiAxMDI0IHNlZW1zIGFib3V0IHJpZ2h0LCBpdCBjb3ZlcnMgfjhNQiBvZiBkYXRh LgorICogSXQncyBzb21ld2hhdCBhcmJpdHJhcnksIHRoZXJlJ3Mgbm8gcGFydGljdWxhciBm b3JtdWxhIHNheWluZyBpdAorICogc2hvdWxkIG5vdCBiZSBoaWdoZXIvbG93ZXIuCisgKgor ICogVGhlIGNhY2hlIGlzIHN0cnVjdHVyZWQgYXMgYW4gYXJyYXkgb2Ygc21hbGwgTFJVIGNh Y2hlcywgc28gdGhlIHRvdGFsCisgKiBzaXplIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2Yg TFJVIHNpemUuIFRoZSBMUlUgc2hvdWxkIGJlIHRpbnkgdG8KKyAqIGtlZXAgbGluZWFyIHNl YXJjaCBjaGVhcCBlbm91Z2guCisgKgorICogWFhYIE1heWJlIHdlIGNvdWxkIGNvbnNpZGVy IGVmZmVjdGl2ZV9jYWNoZV9zaXplIG9yIHNvbWV0aGluZz8KKyAqLworI2RlZmluZQkJUFJF RkVUQ0hfTFJVX1NJWkUJCTgKKyNkZWZpbmUJCVBSRUZFVENIX0xSVV9DT1VOVAkJMTI4Cisj ZGVmaW5lCQlQUkVGRVRDSF9DQUNIRV9TSVpFCQkoUFJFRkVUQ0hfTFJVX1NJWkUgKiBQUkVG RVRDSF9MUlVfQ09VTlQpCisKKy8qCisgKiBVc2VkIHRvIGRldGVjdCBzZXF1ZW50aWFsIHBh dHRlcm5zIChhbmQgZGlzYWJsZSBwcmVmZXRjaGluZykuCisgKi8KKyNkZWZpbmUJCVBSRUZF VENIX1FVRVVFX0hJU1RPUlkJCQk4CisjZGVmaW5lCQlQUkVGRVRDSF9TRVFfUEFUVEVSTl9C TE9DS1MJCTQKKworCit0eXBlZGVmIHN0cnVjdCBJbmRleFByZWZldGNoRGF0YQoreworCS8q CisJICogWFhYIFdlIG5lZWQgdG8gZGlzYWJsZSB0aGlzIGluIHNvbWUgY2FzZXMgKGUuZy4g d2hlbiB1c2luZyBpbmRleC1vbmx5CisJICogc2NhbnMsIHdlIGRvbid0IHdhbnQgdG8gcHJl ZmV0Y2ggcGFnZXMpLiBPciBtYXliZSB3ZSBzaG91bGQgcHJlZmV0Y2gKKwkgKiBvbmx5IHBh Z2VzIHRoYXQgYXJlIG5vdCBhbGwtdmlzaWJsZSwgdGhhdCdkIGJlIGV2ZW4gYmV0dGVyLgor CSAqLworCWludAkJCXByZWZldGNoVGFyZ2V0OwkvKiBob3cgZmFyIHdlIHNob3VsZCBiZSBw cmVmZXRjaGluZyAqLworCWludAkJCXByZWZldGNoTWF4VGFyZ2V0OwkvKiBtYXhpbXVtIHBy ZWZldGNoaW5nIGRpc3RhbmNlICovCisJaW50CQkJcHJlZmV0Y2hSZXNldDsJLyogcmVzZXQg dG8gdGhpcyBkaXN0YW5jZSBvbiByZXNjYW4gKi8KKwlib29sCQlwcmVmZXRjaERvbmU7CS8q IGRpZCB3ZSBnZXQgYWxsIFRJRHMgZnJvbSB0aGUgaW5kZXg/ICovCisKKwkvKiBydW50aW1l IHN0YXRpc3RpY3MgKi8KKwl1aW50NjQJCWNvdW50QWxsOwkJLyogYWxsIHByZWZldGNoIHJl cXVlc3RzICovCisJdWludDY0CQljb3VudFByZWZldGNoOwkvKiBhY3R1YWwgcHJlZmV0Y2hl cyAqLworCXVpbnQ2NAkJY291bnRTa2lwU2VxdWVudGlhbDsKKwl1aW50NjQJCWNvdW50U2tp cENhY2hlZDsKKworCS8qCisJICogUXVldWUgb2YgVElEcyB0byBwcmVmZXRjaC4KKwkgKgor CSAqIFhYWCBTaXppbmcgZm9yIE1BWF9JT19DT05DVVJSRU5DWSBtYXkgYmUgb3ZlcmtpbGws IGJ1dCBpdCBzZWVtcyBzaW1wbGVyCisJICogdGhhbiBkeW5hbWljYWxseSBhZGp1c3Rpbmcg Zm9yIGN1c3RvbSB2YWx1ZXMuCisJICovCisJSXRlbVBvaW50ZXJEYXRhCXF1ZXVlSXRlbXNb TUFYX0lPX0NPTkNVUlJFTkNZXTsKKwl1aW50NjQJCQlxdWV1ZUluZGV4OwkvKiBuZXh0IFRJ RCB0byBwcmVmZXRjaCAqLworCXVpbnQ2NAkJCXF1ZXVlU3RhcnQ7CS8qIGZpcnN0IHZhbGlk IFRJRCBpbiBxdWV1ZSAqLworCXVpbnQ2NAkJCXF1ZXVlRW5kOwkvKiBmaXJzdCBpbnZhbGlk IChlbXB0eSkgVElEIGluIHF1ZXVlICovCisKKwkvKgorCSAqIEEgY291cGxlIG9mIGxhc3Qg cHJlZmV0Y2hlZCBibG9ja3MsIHVzZWQgdG8gY2hlY2sgZm9yIGNlcnRhaW4gYWNjZXNzCisJ ICogcGF0dGVybiBhbmQgc2tpcCBwcmVmZXRjaGluZyAtIGUuZy4gZm9yIHNlcXVlbnRpYWwg YWNjZXNzKS4KKwkgKgorCSAqIFhYWCBTZXBhcmF0ZSBmcm9tIHRoZSBtYWluIHF1ZXVlLCBi ZWNhdXNlIHdlIG9ubHkgd2FudCB0byBjb21wYXJlIHRoZQorCSAqIGJsb2NrIG51bWJlcnMs IG5vdCB0aGUgd2hvbGUgVElELiBJbiBzZXF1ZW50aWFsIGFjY2VzcyBpdCdzIGxpa2VseSB3 ZQorCSAqIHJlYWQgbWFueSBpdGVtcyBmcm9tIGVhY2ggcGFnZSwgYW5kIHdlIGRvbid0IHdh bnQgdG8gY2hlY2sgbWFueSBpdGVtcworCSAqIChhcyB0aGF0IGlzIG11Y2ggbW9yZSBleHBl bnNpdmUpLgorCSAqLworCUJsb2NrTnVtYmVyCQlibG9ja0l0ZW1zW1BSRUZFVENIX1FVRVVF X0hJU1RPUlldOworCXVpbnQ2NAkJCWJsb2NrSW5kZXg7CS8qIGluZGV4IGluIHRoZSBibG9j ayAocG9pbnRzIHRvIHRoZSBmaXJzdAorCQkJCQkJCQkgKiBlbXB0eSBlbnRyeSkqLworCisJ LyoKKwkgKiBDYWNoZSBvZiByZWNlbnRseSBwcmVmZXRjaGVkIGJsb2Nrcywgb3JnYW5pemVk IGFzIGEgaGFzaCB0YWJsZSBvZgorCSAqIHNtYWxsIExSVSBjYWNoZXMuCisJICovCisJdWlu dDY0CQkJCXByZWZldGNoUmVxTnVtYmVyOworCVByZWZldGNoQ2FjaGVFbnRyeQlwcmVmZXRj aENhY2hlW1BSRUZFVENIX0NBQ0hFX1NJWkVdOworCit9IEluZGV4UHJlZmV0Y2hEYXRhOwor CisjZGVmaW5lIFBSRUZFVENIX1FVRVVFX0lOREVYKGEpCSgoYSkgJSAoTUFYX0lPX0NPTkNV UlJFTkNZKSkKKyNkZWZpbmUgUFJFRkVUQ0hfUVVFVUVfRU1QVFkocCkJKChwKS0+cXVldWVF bmQgPT0gKHApLT5xdWV1ZUluZGV4KQorI2RlZmluZSBQUkVGRVRDSF9FTkFCTEVEKHApCQko KHApICYmICgocCktPnByZWZldGNoTWF4VGFyZ2V0ID4gMCkpCisjZGVmaW5lIFBSRUZFVENI X0ZVTEwocCkJCSgocCktPnF1ZXVlRW5kIC0gKHApLT5xdWV1ZUluZGV4ID09IChwKS0+cHJl ZmV0Y2hUYXJnZXQpCisjZGVmaW5lIFBSRUZFVENIX0RPTkUocCkJCSgocCkgJiYgKChwKS0+ cHJlZmV0Y2hEb25lICYmIFBSRUZFVENIX1FVRVVFX0VNUFRZKHApKSkKKyNkZWZpbmUgUFJF RkVUQ0hfQUNUSVZFKHApCQkoUFJFRkVUQ0hfRU5BQkxFRChwKSAmJiAhKHApLT5wcmVmZXRj aERvbmUpCisjZGVmaW5lIFBSRUZFVENIX0JMT0NLX0lOREVYKHYpCSgodikgJSBQUkVGRVRD SF9RVUVVRV9ISVNUT1JZKQorCiAjZW5kaWYJCQkJCQkJLyogR0VOQU1fSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9yZWxzY2FuLmgKaW5kZXggZDAzMzYwZWFjMDQuLmMxMTlmZTU5N2Q4IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9yZWxzY2FuLmgKQEAgLTEwNiw2ICsxMDYsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhG ZXRjaFRhYmxlRGF0YQogCVJlbGF0aW9uCXJlbDsKIH0gSW5kZXhGZXRjaFRhYmxlRGF0YTsK IAorLyoKKyAqIEZvcndhcmQgZGVjbGFyYXRpb24sIGRlZmluZWQgaW4gZ2VuYW0uaC4KKyAq LwordHlwZWRlZiBzdHJ1Y3QgSW5kZXhQcmVmZXRjaERhdGEgSW5kZXhQcmVmZXRjaERhdGE7 Cit0eXBlZGVmIHN0cnVjdCBJbmRleFByZWZldGNoRGF0YSAqSW5kZXhQcmVmZXRjaDsKKwog LyoKICAqIFdlIHVzZSB0aGUgc2FtZSBJbmRleFNjYW5EZXNjRGF0YSBzdHJ1Y3R1cmUgZm9y IGJvdGggYW1nZXR0dXBsZS1iYXNlZAogICogYW5kIGFtZ2V0Yml0bWFwLWJhc2VkIGluZGV4 IHNjYW5zLiAgU29tZSBmaWVsZHMgYXJlIG9ubHkgcmVsZXZhbnQgaW4KQEAgLTE2Miw2ICsx NjgsOSBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFNjYW5EZXNjRGF0YQogCWJvb2wJICAgKnhz X29yZGVyYnludWxsczsKIAlib29sCQl4c19yZWNoZWNrb3JkZXJieTsKIAorCS8qIHByZWZl dGNoaW5nIHN0YXRlIChvciBOVUxMIGlmIGRpc2FibGVkKSAqLworCUluZGV4UHJlZmV0Y2hE YXRhICp4c19wcmVmZXRjaDsKKwogCS8qIHBhcmFsbGVsIGluZGV4IHNjYW4gaW5mb3JtYXRp b24sIGluIHNoYXJlZCBtZW1vcnkgKi8KIAlzdHJ1Y3QgUGFyYWxsZWxJbmRleFNjYW5EZXNj RGF0YSAqcGFyYWxsZWxfc2NhbjsKIH0JCQlJbmRleFNjYW5EZXNjRGF0YTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCBiL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2luc3RydW1lbnQuaAppbmRleCA4N2U1ZTIxODNiZC4uOTdkZDNjMmM0MjEgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaAorKysgYi9zcmMv aW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgKQEAgLTMzLDYgKzMzLDggQEAgdHlwZWRl ZiBzdHJ1Y3QgQnVmZmVyVXNhZ2UKIAlpbnQ2NAkJbG9jYWxfYmxrc193cml0dGVuOyAvKiAj IG9mIGxvY2FsIGRpc2sgYmxvY2tzIHdyaXR0ZW4gKi8KIAlpbnQ2NAkJdGVtcF9ibGtzX3Jl YWQ7IC8qICMgb2YgdGVtcCBibG9ja3MgcmVhZCAqLwogCWludDY0CQl0ZW1wX2Jsa3Nfd3Jp dHRlbjsJLyogIyBvZiB0ZW1wIGJsb2NrcyB3cml0dGVuICovCisJaW50NjQJCWJsa3NfcHJl ZmV0Y2hfcm91bmRzOwkvKiAjIG9mIHByZWZldGNoIHJvdW5kcyAqLworCWludDY0CQlibGtz X3ByZWZldGNoZXM7CS8qICMgb2YgYnVmZmVycyBwcmVmZXRjaGVkICovCiAJaW5zdHJfdGlt ZQlibGtfcmVhZF90aW1lOwkvKiB0aW1lIHNwZW50IHJlYWRpbmcgYmxvY2tzICovCiAJaW5z dHJfdGltZQlibGtfd3JpdGVfdGltZTsgLyogdGltZSBzcGVudCB3cml0aW5nIGJsb2NrcyAq LwogCWluc3RyX3RpbWUJdGVtcF9ibGtfcmVhZF90aW1lOyAvKiB0aW1lIHNwZW50IHJlYWRp bmcgdGVtcCBibG9ja3MgKi8KLS0gCjIuNDEuMAoK --------------a1GjYnA7k79ug88wdVKlHsRH Content-Type: text/x-patch; charset=UTF-8; name="0002-comments-and-minor-cleanup-20231012.patch" Content-Disposition: attachment; filename="0002-comments-and-minor-cleanup-20231012.patch" Content-Transfer-Encoding: base64 RnJvbSA2MWI3MTIzYzZiM2RiZDcxNmM2ODgyNzE2Y2UxNzIzOWQzOGUwNjA0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogRnJpLCAxMyBPY3QgMjAyMyAyMjozNDo0MCArMDIwMApTdWJqZWN0OiBb UEFUQ0ggMi80XSBjb21tZW50cyBhbmQgbWlub3IgY2xlYW51cAoKLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvZ2lzdC9naXN0Z2V0LmMgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgfCAgIDUgKwogc3JjL2JhY2tlbmQvYWNjZXNz L2luZGV4L2dlbmFtLmMgICAgICAgICB8ICAyOCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2lu ZGV4L2luZGV4YW0uYyAgICAgICB8IDMyOCArKysrKysrKysrKysrKysrLS0tLS0tLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jICAgICB8ICAxNyArKwogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVk ZS9hY2Nlc3MvZ2VuYW0uaCAgICAgICAgICAgICAgIHwgIDEyIC0KIDcgZmlsZXMgY2hhbmdl ZCwgMjczIGluc2VydGlvbnMoKyksIDEyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0Z2V0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0Z2V0LmMKaW5kZXggM2FjZmE3NjJlN2YuLjMxMzQ5MTc0MjgwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0Z2V0LmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdGdldC5jCkBAIC02NzcsNiArNjc3LDcgQEAgZ2lzdGdldHR1 cGxlKEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIpCiAJCQkJCXNjYW4t PnhzX2hpdHVwID0gc28tPnBhZ2VEYXRhW3NvLT5jdXJQYWdlRGF0YV0ucmVjb250dXA7CiAK IAkJCQlzby0+Y3VyUGFnZURhdGErKzsKKwogCQkJCXJldHVybiB0cnVlOwogCQkJfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCA0NmM4NTc1 MWNmMi4uY2E5MWJjNWU4NzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X2hhbmRsZXIuYwpAQCAtNzUwLDYgKzc1MCwxMSBAQCBoZWFwYW1fcmVsYXRpb25fY29weV9m b3JfY2x1c3RlcihSZWxhdGlvbiBPbGRIZWFwLCBSZWxhdGlvbiBOZXdIZWFwLAogCQlpbnQ2 NAkJY2lfdmFsWzJdOwogCQlpbnQJCQlwcmVmZXRjaF90YXJnZXQ7CiAKKwkJLyoKKwkJICog R2V0IHRoZSBwcmVmZXRjaCB0YXJnZXQgZm9yIHRoZSBvbGQgdGFibGVzcGFjZSAod2hpY2gg aXMgd2hhdCB3ZSdsbAorCQkgKiByZWFkIHVzaW5nIHRoZSBpbmRleCkuIFdlJ2xsIHVzZSBp dCBhcyBhIHJlc2V0IHZhbHVlIHRvbywgYWx0aG91Z2gKKwkJICogdGhlcmUgc2hvdWxkIGJl IG5vIHJlc2NhbnMgZm9yIENMVVNURVIgZXRjLgorCQkgKi8KIAkJcHJlZmV0Y2hfdGFyZ2V0 ID0gZ2V0X3RhYmxlc3BhY2VfaW9fY29uY3VycmVuY3koT2xkSGVhcC0+cmRfcmVsLT5yZWx0 YWJsZXNwYWNlKTsKIAogCQkvKiBTZXQgcGhhc2UgYW5kIE9JRE9sZEluZGV4IHRvIGNvbHVt bnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMKaW5kZXggMjMwNjY3Zjg4OGIuLjZl M2FhNmJiMWZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0u YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwpAQCAtMTI2LDcgKzEy Niw3IEBAIFJlbGF0aW9uR2V0SW5kZXhTY2FuKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sIGlu dCBua2V5cywgaW50IG5vcmRlcmJ5cykKIAlzY2FuLT54c19oaXR1cCA9IE5VTEw7CiAJc2Nh bi0+eHNfaGl0dXBkZXNjID0gTlVMTDsKIAotCS8qIHNldCBpbiBlYWNoIEFNIHdoZW4gYXBw bGljYWJsZSAqLworCS8qIEluZm9ybWF0aW9uIHVzZWQgZm9yIGFzeW5jaHJvbm91cyBwcmVm ZXRjaGluZyBkdXJpbmcgaW5kZXggc2NhbnMuICovCiAJc2Nhbi0+eHNfcHJlZmV0Y2ggPSBO VUxMOwogCiAJcmV0dXJuIHNjYW47CkBAIC00NDMsNyArNDQzLDE4IEBAIHN5c3RhYmxlX2Jl Z2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJZWxvZyhFUlJPUiwgImNvbHVt biBpcyBub3QgaW4gaW5kZXgiKTsKIAkJfQogCi0JCS8qIG5vIGluZGV4IHByZWZldGNoIGZv ciBzeXN0ZW0gY2F0YWxvZ3MgKi8KKwkJLyoKKwkJICogV2UgZG9uJ3QgZG8gYW55IHByZWZl dGNoaW5nIG9uIHN5c3RlbSBjYXRhbG9ncywgZm9yIHR3byBtYWluIHJlYXNvbnMuCisJCSAq CisJCSAqIEZpcnN0bHksIHdlIHVzdWFsbHkgZG8gUEsgbG9va3Vwcywgd2hpY2ggbWFrZXMg cHJlZmV0Y2hpbmcgcG9pbnRsZXMsCisJCSAqIG9yIHdlIG9mdGVuIGRvbid0IGtub3cgaG93 IG1hbnkgcm93cyB0byBleHBlY3QgKGFuZCB0aGUgbnVtYmVycyB0ZW5kCisJCSAqIHRvIGJl IGZhaXJseSBsb3cpLiBTbyBpdCdzIG5vdCBjbGVhciBpdCdkIGhlbHAuIEZ1cnRoZXJtb3Jl LCBwbGFjZXMKKwkJICogdGhhdCBhcmUgc2Vuc2l0aXZlIHRlbmQgdG8gdXNlIHN5c2NhY2hl IGFueXdheS4KKwkJICoKKwkJICogU2Vjb25kbHksIHdlIGNhbid0IGNhbGwgZ2V0X3RhYmxl c3BhY2VfaW9fY29uY3VycmVuY3koKSBiZWNhdXNlIHRoYXQKKwkJICogZG9lcyBhIHN5c3Nj YW4gaW50ZXJuYWxseSwgc28gaXQgbWlnaHQgbGVhZCB0byBhIGN5Y2xlLiBXZSBjb3VsZCB1 c2UKKwkJICogdXNlIGVmZmVjdGl2ZV9pb19jb25jdXJyZW5jeSwgYnV0IGl0IGRvZXNuJ3Qg c2VlbSB3b3J0aCBpdC4KKwkJICovCiAJCXN5c3NjYW4tPmlzY2FuID0gaW5kZXhfYmVnaW5z Y2FuKGhlYXBSZWxhdGlvbiwgaXJlbCwKIAkJCQkJCQkJCQkgc25hcHNob3QsIG5rZXlzLCAw LCAwLCAwKTsKIAkJaW5kZXhfcmVzY2FuKHN5c3NjYW4tPmlzY2FuLCBrZXksIG5rZXlzLCBO VUxMLCAwKTsKQEAgLTcwMCw3ICs3MTEsMTggQEAgc3lzdGFibGVfYmVnaW5zY2FuX29yZGVy ZWQoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJZWxvZyhFUlJPUiwgImNvbHVtbiBpcyBu b3QgaW4gaW5kZXgiKTsKIAl9CiAKLQkvKiBubyBpbmRleCBwcmVmZXRjaCBmb3Igc3lzdGVt IGNhdGFsb2dzICovCisJLyoKKwkgKiBXZSBkb24ndCBkbyBhbnkgcHJlZmV0Y2hpbmcgb24g c3lzdGVtIGNhdGFsb2dzLCBmb3IgdHdvIG1haW4gcmVhc29ucy4KKwkgKgorCSAqIEZpcnN0 bHksIHdlIHVzdWFsbHkgZG8gUEsgbG9va3Vwcywgd2hpY2ggbWFrZXMgcHJlZmV0Y2hpbmcg cG9pbnRsZXMsCisJICogb3Igd2Ugb2Z0ZW4gZG9uJ3Qga25vdyBob3cgbWFueSByb3dzIHRv IGV4cGVjdCAoYW5kIHRoZSBudW1iZXJzIHRlbmQKKwkgKiB0byBiZSBmYWlybHkgbG93KS4g U28gaXQncyBub3QgY2xlYXIgaXQnZCBoZWxwLiBGdXJ0aGVybW9yZSwgcGxhY2VzCisJICog dGhhdCBhcmUgc2Vuc2l0aXZlIHRlbmQgdG8gdXNlIHN5c2NhY2hlIGFueXdheS4KKwkgKgor CSAqIFNlY29uZGx5LCB3ZSBjYW4ndCBjYWxsIGdldF90YWJsZXNwYWNlX2lvX2NvbmN1cnJl bmN5KCkgYmVjYXVzZSB0aGF0CisJICogZG9lcyBhIHN5c3NjYW4gaW50ZXJuYWxseSwgc28g aXQgbWlnaHQgbGVhZCB0byBhIGN5Y2xlLiBXZSBjb3VsZCB1c2UKKwkgKiB1c2UgZWZmZWN0 aXZlX2lvX2NvbmN1cnJlbmN5LCBidXQgaXQgZG9lc24ndCBzZWVtIHdvcnRoIGl0LgorCSAq LwogCXN5c3NjYW4tPmlzY2FuID0gaW5kZXhfYmVnaW5zY2FuKGhlYXBSZWxhdGlvbiwgaW5k ZXhSZWxhdGlvbiwKIAkJCQkJCQkJCSBzbmFwc2hvdCwgbmtleXMsIDAsIDAsIDApOwogCWlu ZGV4X3Jlc2NhbihzeXNzY2FuLT5pc2Nhbiwga2V5LCBua2V5cywgTlVMTCwgMCk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwppbmRleCAwYjhmMTM2ZjA0Mi4uZTQ1YTNhODkz ODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwpAQCAtMjA2LDIxICsyMDYs MzAgQEAgaW5kZXhfaW5zZXJ0KFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAgKgogICogQ2Fs bGVyIG11c3QgYmUgaG9sZGluZyBzdWl0YWJsZSBsb2NrcyBvbiB0aGUgaGVhcCBhbmQgdGhl IGluZGV4LgogICoKLSAqIHByZWZldGNoX3RhcmdldCBkZXRlcm1pbmVzIGlmIHByZWZldGNo aW5nIGlzIHJlcXVlc3RlZCBmb3IgdGhpcyBpbmRleCBzY2FuLgotICogV2UgbmVlZCB0byBi ZSBhYmxlIHRvIGRpc2FibGUgdGhpcyBmb3IgdHdvIHJlYXNvbnMuIEZpcnN0bHksIHdlIGRv bid0IHdhbnQKLSAqIHRvIGRvIHByZWZldGNoaW5nIGZvciBJT1MgKHdoZXJlIHdlIGhvcGUg bW9zdCBvZiB0aGUgaGVhcCBwYWdlcyB3b24ndCBiZQotICogcmVhbGx5IG5lZWRlZC4gU2Vj b25kbHksIHdlIG11c3QgcHJldmVudCBpbmZpbml0ZSBsb29wIHdoZW4gZGV0ZXJtaW5pbmcK LSAqIHByZWZldGNoIHZhbHVlIGZvciB0aGUgdGFibGVzcGFjZSAtIHRoZSBnZXRfdGFibGVz cGFjZV9pb19jb25jdXJyZW5jeSgpCi0gKiBkb2VzIGFuIGluZGV4IHNjYW4gaW50ZXJuYWxs eSwgd2hpY2ggd291bGQgcmVzdWx0IGluIGluZmluaXRlIGxvb3AuIFNvIHdlCi0gKiBzaW1w bHkgZGlzYWJsZSBwcmVmZXRjaGluZyBpbiBzeXN0YWJsZV9iZWdpbnNjYW4oKS4KLSAqCi0g KiBYWFggTWF5YmUgd2Ugc2hvdWxkIGRvIHByZWZldGNoaW5nIGV2ZW4gZm9yIGNhdGFsb2dz LCBidXQgdGhlbiBkaXNhYmxlIGl0Ci0gKiB3aGVuIGFjY2Vzc2luZyBUYWJsZVNwYWNlUmVs YXRpb25JZC4gV2Ugc3RpbGwgbmVlZCB0aGUgYWJpbGl0eSB0byBkaXNhYmxlCi0gKiB0aGlz IGFuZCBjYXRhbG9ncyBhcmUgZXhwZWN0ZWQgdG8gYmUgdGlueSwgc28gcHJlZmV0Y2hpbmcg aXMgdW5saWtlbHkgdG8KLSAqIG1ha2UgYSBkaWZmZXJlbmNlLgotICoKLSAqIFhYWCBUaGUg c2Vjb25kIHJlYXNvbiBkb2Vzbid0IHJlYWxseSBhcHBseSBhZnRlciBlZmZlY3RpdmVfaW9f Y29uY3VycmVuY3kKLSAqIGxvb2t1cCBtb3ZlZCB0byBjYWxsZXIgb2YgaW5kZXhfYmVnaW5z Y2FuLgorICogcHJlZmV0Y2hfdGFyZ2V0IGRldGVybWluZXMgaWYgcHJlZmV0Y2hpbmcgaXMg cmVxdWVzdGVkIGZvciB0aGlzIGluZGV4IHNjYW4sCisgKiBhbmQgaG93IGZhciBhaGVhZCB3 ZSB3YW50IHRvIHByZWZldGNoCisgKgorICogcHJlZmV0Y2hfcmVzZXQgc3BlY2lmaWVzIHRo ZSBwcmVmZXRjaCBkaXN0YW5jZSB0byBzdGFydCB3aXRoIG9uIHJlc2NhbnMgKHNvCisgKiB0 aGF0IHdlIGRvbid0IHJhbXAtdXAgdG8gcHJlZmV0Y2hfdGFyZ2V0IGFuZCB1c2UgdGhhdCBm b3JldmVyKQorICoKKyAqIFNldHRpbmcgcHJlZmV0Y2hfdGFyZ2V0IHRvIDAgZGlzYWJsZXMg cHJlZmV0Y2hpbmcgZm9yIHRoZSBpbmRleCBzY2FuLiBXZSBkbworICogdGhpcyBmb3IgdHdv IHJlYXNvbnMgLSBmb3Igc2NhbnMgb24gc3lzdGVtIGNhdGFsb2dzLCBhbmQvb3IgZm9yIGNh c2VzIHdoZXJlCisgKiBwcmVmZXRjaGluZyBpcyBleHBlY3RlZCB0byBiZSBwb2ludGxlc3Mg KGxpa2UgSU9TKS4KKyAqCisgKiBGb3Igc3lzdGVtIGNhdGFsb2dzLCB3ZSB1c3VhbGx5IGVp dGhlciBzY2FuIGJ5IGEgUEsgdmFsdWUsIG9yIHdlIHdlIGV4cGVjdAorICogb25seSBmZXcg cm93cyAob3IgcmF0aGVyIHdlIGRvbid0IGtub3cgaG93IG1hbnkgcm93cyB0byBleHBlY3Qp LiBBbHNvLCB3ZQorICogbmVlZCB0byBwcmV2ZW50IGluZmluaXRlIGluIHRoZSBnZXRfdGFi bGVzcGFjZV9pb19jb25jdXJyZW5jeSgpIGNhbGwgLSBpdAorICogZG9lcyBhbiBpbmRleCBz Y2FuIGludGVybmFsbHkuIFNvIHdlIHNpbXBseSBkaXNhYmxlIHByZWZldGNoaW5nIGZvciBz eXN0ZW0KKyAqIGNhdGFsb2dzLiBXZSBjb3VsZCBkZWFsIHdpdGggdGhpcyBieSBwaWNraW5n IGEgY29uc2VydmF0aXZlIHN0YXRpYyB0YXJnZXQKKyAqIChlLmcuIGVmZmVjdGl2ZV9pb19j b25jdXJyZW5jeSwgY2FwcGVkIHRvIHNvbWV0aGluZyksIGJ1dCBwbGFjZXMgdGhhdCBhcmUK KyAqIHBlcmZvcm1hbmNlIHNlbnNpdGl2ZSBsaWtlbHkgdXNlIHN5c2NhY2hlIGFueXdheSwg YW5kIGNhdGFsb2dzIHRlbmQgdG8gYmUKKyAqIHZlcnkgc21hbGwgYW5kIGhvdC4gU28gd2Ug ZG9uJ3QgYm90aGVyLgorICoKKyAqIEZvciBJT1MsIHdlIGV4cGVjdCB0byBub3QgbmVlZCBt b3N0IGhlYXAgcGFnZXMgKHRoYXQncyB0aGUgd2hvbGUgcG9pbnQgb2YKKyAqIElPUywgYWN0 dWFsbHkpLCBhbmQgcHJlZmV0Y2hpbmcgdGhlbSBtaWdodCBsZWFkIHRvIGEgbG90IG9mIHdh c3RlZCBJL08uCisgKgorICogWFhYIE5vdCBzdXJlIHRoZSBpbmZpbml0ZSBsb29wIGNhbiBz dGlsbCBoYXBwZW4sIG5vdyB0aGF0IHRoZSB0YXJnZXQgbG9va3VwCisgKiBtb3ZlZCB0byBj YWxsZXJzIG9mIGluZGV4X2JlZ2luc2Nhbi4KICAqLwogSW5kZXhTY2FuRGVzYwogaW5kZXhf YmVnaW5zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKQEAgLTI2NCw4ICsyNzMsMTIgQEAg aW5kZXhfYmVnaW5zY2FuX2JpdG1hcChSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogCiAJQXNz ZXJ0KHNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hvdCk7CiAKKwkvKgorCSAqIE5vIHByZWZl dGNoIGZvciBiaXRtYXAgaW5kZXggc2NhbnMuIEluIHRoaXMgY2FzZSBwcmVmZXRjaGluZyBo YXBwZW5zIGF0CisJICogdGhlIGhlYXBzY2FuIGxldmVsLgorCSAqLwogCXNjYW4gPSBpbmRl eF9iZWdpbnNjYW5faW50ZXJuYWwoaW5kZXhSZWxhdGlvbiwgbmtleXMsIDAsIHNuYXBzaG90 LCBOVUxMLCBmYWxzZSwKLQkJCQkJCQkJCTAsIDApOyAvKiBubyBwcmVmZXRjaCAqLworCQkJ CQkJCQkJMCwgMCk7CiAKIAkvKgogCSAqIFNhdmUgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIGlu dG8gdGhlIHNjYW5kZXNjLiAgRXZlcnl0aGluZyBlbHNlIHdhcyBzZXQKQEAgLTMwMSwxMiAr MzE0LDEzIEBAIGluZGV4X2JlZ2luc2Nhbl9pbnRlcm5hbChSZWxhdGlvbiBpbmRleFJlbGF0 aW9uLAogCS8qCiAJICogVGVsbCB0aGUgQU0gdG8gb3BlbiBhIHNjYW4uCiAJICovCi0Jc2Nh biA9IGluZGV4UmVsYXRpb24tPnJkX2luZGFtLT5hbWJlZ2luc2NhbihpbmRleFJlbGF0aW9u LCBua2V5cywgbm9yZGVyYnlzKTsKKwlzY2FuID0gaW5kZXhSZWxhdGlvbi0+cmRfaW5kYW0t PmFtYmVnaW5zY2FuKGluZGV4UmVsYXRpb24sIG5rZXlzLAorCQkJCQkJCQkJCQkJbm9yZGVy YnlzKTsKIAkvKiBJbml0aWFsaXplIGluZm9ybWF0aW9uIGZvciBwYXJhbGxlbCBzY2FuLiAq LwogCXNjYW4tPnBhcmFsbGVsX3NjYW4gPSBwc2NhbjsKIAlzY2FuLT54c190ZW1wX3NuYXAg PSB0ZW1wX3NuYXA7CiAKLQkvKiB3aXRoIHByZWZldGNoaW5nIGVuYWJsZWQsIGluaXRpYWxp emUgdGhlIG5lY2Vzc2FyeSBzdGF0ZSAqLworCS8qIFdpdGggcHJlZmV0Y2hpbmcgcmVxdWVz dGVkLCBpbml0aWFsaXplIHRoZSBwcmVmZXRjaGVyIHN0YXRlLiAqLwogCWlmIChwcmVmZXRj aF90YXJnZXQgPiAwKQogCXsKIAkJSW5kZXhQcmVmZXRjaCBwcmVmZXRjaGVyID0gcGFsbG9j MChzaXplb2YoSW5kZXhQcmVmZXRjaERhdGEpKTsKQEAgLTM2Nyw3ICszODEsNyBAQCBpbmRl eF9yZXNjYW4oSW5kZXhTY2FuRGVzYyBzY2FuLAogCQlwcmVmZXRjaGVyLT5xdWV1ZUVuZCA9 IDA7CiAJCXByZWZldGNoZXItPnF1ZXVlSW5kZXggPSAwOwogCQlwcmVmZXRjaGVyLT5wcmVm ZXRjaERvbmUgPSBmYWxzZTsKLQkKKwogCQlwcmVmZXRjaGVyLT5wcmVmZXRjaFRhcmdldCA9 IE1pbihwcmVmZXRjaGVyLT5wcmVmZXRjaFRhcmdldCwKIAkJCQkJCQkJCQkgcHJlZmV0Y2hl ci0+cHJlZmV0Y2hSZXNldCk7CiAJfQpAQCAtMzk5LDcgKzQxMywxMSBAQCBpbmRleF9lbmRz Y2FuKEluZGV4U2NhbkRlc2Mgc2NhbikKIAlpZiAoc2Nhbi0+eHNfdGVtcF9zbmFwKQogCQlV bnJlZ2lzdGVyU25hcHNob3Qoc2Nhbi0+eHNfc25hcHNob3QpOwogCi0JLyogSWYgcHJlZmV0 Y2hpbmcgZW5hYmxlZCwgbG9nIHByZWZldGNoIHN0YXRzLiAqLworCS8qCisJICogSWYgcHJl ZmV0Y2hpbmcgd2FzIGVuYWJsZWQgZm9yIHRoaXMgc2NhbiwgbG9nIHByZWZldGNoIHN0YXRz LgorCSAqCisJICogRklYTUUgVGhpcyBzaG91bGQgcmVhbGx5IGdvIHRvIEVYUExBSU4gQU5B TFlaRSBpbnN0ZWFkLgorCSAqLwogCWlmIChzY2FuLT54c19wcmVmZXRjaCkKIAl7CiAJCUlu ZGV4UHJlZmV0Y2ggcHJlZmV0Y2ggPSBzY2FuLT54c19wcmVmZXRjaDsKQEAgLTU1NCw4ICs1 NzIsNiBAQCBpbmRleF9wYXJhbGxlbHJlc2NhbihJbmRleFNjYW5EZXNjIHNjYW4pCiAgKiBp bmRleF9iZWdpbnNjYW5fcGFyYWxsZWwgLSBqb2luIHBhcmFsbGVsIGluZGV4IHNjYW4KICAq CiAgKiBDYWxsZXIgbXVzdCBiZSBob2xkaW5nIHN1aXRhYmxlIGxvY2tzIG9uIHRoZSBoZWFw IGFuZCB0aGUgaW5kZXguCi0gKgotICogWFhYIFNlZSBpbmRleF9iZWdpbnNjYW4oKSBmb3Ig bW9yZSBjb21tZW50cyBvbiBwcmVmZXRjaF90YXJnZXQuCiAgKi8KIEluZGV4U2NhbkRlc2MK IGluZGV4X2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiBoZWFwcmVsLCBSZWxhdGlvbiBp bmRleHJlbCwgaW50IG5rZXlzLApAQCAtNjkzLDI1ICs3MDksMzEgQEAgaW5kZXhfZmV0Y2hf aGVhcChJbmRleFNjYW5EZXNjIHNjYW4sIFR1cGxlVGFibGVTbG90ICpzbG90KQogYm9vbAog aW5kZXhfZ2V0bmV4dF9zbG90KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBk aXJlY3Rpb24sIFR1cGxlVGFibGVTbG90ICpzbG90KQogewotCUluZGV4UHJlZmV0Y2gJcHJl ZmV0Y2ggPSBzY2FuLT54c19wcmVmZXRjaDsKKwlJbmRleFByZWZldGNoIHByZWZldGNoID0g c2Nhbi0+eHNfcHJlZmV0Y2g7IC8qIGZvciBjb252ZW5pZW5jZSAqLwogCiAJZm9yICg7OykK IAl7Ci0JCS8qIHdpdGggcHJlZmV0Y2hpbmcgZW5hYmxlZCwgYWNjdW11bGF0ZSBlbm91Z2gg VElEcyBpbnRvIHRoZSBwcmVmZXRjaCAqLworCQkvKgorCQkgKiBJZiB0aGUgcHJlZmV0Y2hp bmcgaXMgc3RpbGwgYWN0aXZlIChpLmUuIGVuYWJsZWQgYW5kIHdlIHN0aWxsCisJCSAqIGhh dmVuJ3QgZmluaXNoZWQgcmVhZGluZyBUSURzIGZyb20gdGhlIHNjYW4pLCByZWFkIGVub3Vn aCBUSURzIGludG8KKwkJICogdGhlIHF1ZXVlIHVudGlsIHdlIGhpdCB0aGUgY3VycmVudCB0 YXJnZXQuCisJCSAqLwogCQlpZiAoUFJFRkVUQ0hfQUNUSVZFKHByZWZldGNoKSkKIAkJewot CQkJLyogCi0JCQkgKiBpbmNyZW1lbnRhbGx5IHJhbXAgdXAgcHJlZmV0Y2ggZGlzdGFuY2UK KwkJCS8qCisJCQkgKiBSYW1wIHVwIHRoZSBwcmVmZXRjaCBkaXN0YW5jZSBpbmNyZW1lbnRh bGx5LgogCQkJICoKLQkJCSAqIFhYWCBJbnRlbnRpb25hbGx5IGRvbmUgYXMgZmlyc3QsIHNv IHRoYXQgd2l0aCBwcmVmZXRjaGluZyB0aGVyZSdzCi0JCQkgKiBhbHdheXMgYXQgbGVhc3Qg b25lIGl0ZW0gaW4gdGhlIHF1ZXVlLgorCQkJICogSW50ZW50aW9uYWxseSBkb25lIGFzIGZp cnN0LCBiZWZvcmUgcmVhZGluZyB0aGUgVElEcyBpbnRvIHRoZQorCQkJICogcXVldWUsIHNv IHRoYXQgdGhlcmUncyBhbHdheXMgYXQgbGVhc3Qgb25lIGl0ZW0uIE90aGVyd2lzZSB3ZQor CQkJICogbWlnaHQgZ2V0IGludG8gYSBzaXR1YXRpb24gd2hlcmUgd2Ugc3RhcnQgd2l0aCB0 YXJnZXQ9MCBhbmQgbm8KKwkJCSAqIFRJRHMgbG9hZGVkLgogCQkJICovCiAJCQlwcmVmZXRj aC0+cHJlZmV0Y2hUYXJnZXQgPSBNaW4ocHJlZmV0Y2gtPnByZWZldGNoVGFyZ2V0ICsgMSwK LQkJCQkJCQkJCQlwcmVmZXRjaC0+cHJlZmV0Y2hNYXhUYXJnZXQpOworCQkJCQkJCQkJCSAg IHByZWZldGNoLT5wcmVmZXRjaE1heFRhcmdldCk7CiAKIAkJCS8qCi0JCQkgKiBnZXQgbW9y ZSBUSUQgd2hpbGUgdGhlcmUgaXMgZW1wdHkgc3BhY2UgaW4gdGhlIHF1ZXVlIChjb25zaWRl cmluZwotCQkJICogY3VycmVudCBwcmVmZXRjaCB0YXJnZXQKKwkJCSAqIE5vdyByZWFkIFRJ RHMgZnJvbSB0aGUgaW5kZXggdW50aWwgdGhlIHF1ZXVlIGlzIGZ1bGwgKHdpdGgKKwkJCSAq IHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgcHJlZmV0Y2ggdGFyZ2V0KS4KIAkJCSAqLwogCQkJ d2hpbGUgKCFQUkVGRVRDSF9GVUxMKHByZWZldGNoKSkKIAkJCXsKQEAgLTcyMCw3ICs3NDIs MTAgQEAgaW5kZXhfZ2V0bmV4dF9zbG90KEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVj dGlvbiBkaXJlY3Rpb24sIFR1cGxlVGFibGVTbG90ICoKIAkJCQkvKiBUaW1lIHRvIGZldGNo IHRoZSBuZXh0IFRJRCBmcm9tIHRoZSBpbmRleCAqLwogCQkJCXRpZCA9IGluZGV4X2dldG5l eHRfdGlkKHNjYW4sIGRpcmVjdGlvbik7CiAKLQkJCQkvKiBJZiB3ZSdyZSBvdXQgb2YgaW5k ZXggZW50cmllcywgd2UncmUgZG9uZSAqLworCQkJCS8qCisJCQkJICogSWYgd2UncmUgb3V0 IG9mIGluZGV4IGVudHJpZXMsIHdlJ3JlIGRvbmUgKGFuZCB3ZSBtYXJrIHRoZQorCQkJCSAq IHRoZSBwcmVmZXRjaGVyIGFzIGluYWN0aXZlKS4KKwkJCQkgKi8KIAkJCQlpZiAodGlkID09 IE5VTEwpCiAJCQkJewogCQkJCQlwcmVmZXRjaC0+cHJlZmV0Y2hEb25lID0gdHJ1ZTsKQEAg LTczMiwyMiArNzU3LDM0IEBAIGluZGV4X2dldG5leHRfc2xvdChJbmRleFNjYW5EZXNjIHNj YW4sIFNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uLCBUdXBsZVRhYmxlU2xvdCAqCiAJCQkJcHJl ZmV0Y2gtPnF1ZXVlSXRlbXNbUFJFRkVUQ0hfUVVFVUVfSU5ERVgocHJlZmV0Y2gtPnF1ZXVl RW5kKV0gPSAqdGlkOwogCQkJCXByZWZldGNoLT5xdWV1ZUVuZCsrOwogCisJCQkJLyoKKwkJ CQkgKiBJc3N1ZSB0aGUgYWN0dWFsbCBwcmVmZXRjaCByZXF1ZXN0cyBmb3IgdGhlIG5ldyBU SUQuCisJCQkJICoKKwkJCQkgKiBGSVhNRSBGb3IgSU9TLCB0aGlzIHNob3VsZCBwcmVmZXRj aCBvbmx5IHBhZ2VzIHRoYXQgYXJlIG5vdAorCQkJCSAqIGZ1bGx5IHZpc2libGUuCisJCQkJ ICovCiAJCQkJaW5kZXhfcHJlZmV0Y2goc2NhbiwgdGlkKTsKIAkJCX0KIAkJfQogCiAJCWlm ICghc2Nhbi0+eHNfaGVhcF9jb250aW51ZSkKIAkJeworCQkJLyoKKwkJCSAqIFdpdGggcHJl ZmV0Y2hpbmcgZW5hYmxlZCAoZXZlbiBpZiB3ZSBhbHJlYWR5IGZpbmlzaGVkIHJlYWRpbmcK KwkJCSAqIGFsbCBUSURzIGZyb20gdGhlIGluZGV4IHNjYW4pLCB3ZSBuZWVkIHRvIHJldHVy biBhIFRJRCBmcm9tIHRoZQorCQkJICogcXVldWUuIE90aGVyd2lzZSwgd2UganVzdCBnZXQg dGhlIG5leHQgVElEIGZyb20gdGhlIHNjYW4KKwkJCSAqIGRpcmVjdGx5LgorCQkJICovCiAJ CQlpZiAoUFJFRkVUQ0hfRU5BQkxFRChwcmVmZXRjaCkpCiAJCQl7Ci0JCQkJLyogcHJlZmV0 Y2hpbmcgZW5hYmxlZCwgYnV0IHJlYWNoZWQgdGhlIGVuZCBhbmQgcXVldWUgZW1wdHkgKi8K KwkJCQkvKiBEaWQgd2UgcmVhY2ggdGhlIGVuZCBvZiB0aGUgc2NhbiBhbmQgdGhlIHF1ZXVl IGlzIGVtcHR5PyAqLwogCQkJCWlmIChQUkVGRVRDSF9ET05FKHByZWZldGNoKSkKIAkJCQkJ YnJlYWs7CiAKIAkJCQlzY2FuLT54c19oZWFwdGlkID0gcHJlZmV0Y2gtPnF1ZXVlSXRlbXNb UFJFRkVUQ0hfUVVFVUVfSU5ERVgocHJlZmV0Y2gtPnF1ZXVlSW5kZXgpXTsKIAkJCQlwcmVm ZXRjaC0+cXVldWVJbmRleCsrOwogCQkJfQotCQkJZWxzZQkvKiBub3QgcHJlZmV0Y2hpbmcs IGp1c3QgZG8gdGhlIHJlZ3VsYXIgd29yayAgKi8KKwkJCWVsc2UJCQkJLyogbm90IHByZWZl dGNoaW5nLCBqdXN0IGRvIHRoZSByZWd1bGFyIHdvcmsgICovCiAJCQl7CiAJCQkJSXRlbVBv aW50ZXIgdGlkOwogCkBAIC0xMTE0LDE1ICsxMTUxLDQ5IEBAIGluZGV4X29wY2xhc3Nfb3B0 aW9ucyhSZWxhdGlvbiBpbmRyZWwsIEF0dHJOdW1iZXIgYXR0bnVtLCBEYXR1bSBhdHRvcHRp b25zLAogfQogCiAvKgotICogQWRkIHRoZSBibG9jayB0byB0aGUgdGlueSB0b3AtbGV2ZWwg cXVldWUgKExSVSksIGFuZCBjaGVjayBpZiB0aGUgYmxvY2sKLSAqIGlzIGluIGEgc2VxdWVu dGlhbCBwYXR0ZXJuLgorICogaW5kZXhfcHJlZmV0Y2hfaXNfc2VxdWVudGlhbAorICoJCVRy YWNrIHRoZSBibG9jayBudW1iZXIgYW5kIGNoZWNrIGlmIHRoZSBJL08gcGF0dGVybiBpcyBz ZXF1ZW50aWFsLAorICoJCW9yIGlmIHRoZSBzYW1lIGJsb2NrIHdhcyBqdXN0IHByZWZldGNo ZWQuCisgKgorICogUHJlZmV0Y2hpbmcgaXMgY2hlYXAsIGJ1dCBmb3Igc29tZSBhY2Nlc3Mg cGF0dGVybnMgdGhlIGJlbmVmaXRzIGFyZSBzbWFsbAorICogY29tcGFyZWQgdG8gdGhlIGV4 dHJhIG92ZXJoZWFkLiBJbiBwYXJ0aWN1bGFyLCBmb3Igc2VxdWVudGlhbCBhY2Nlc3MgdGhl CisgKiByZWFkLWFoZWFkIHBlcmZvcm1lZCBieSB0aGUgT1MgaXMgdmVyeSBlZmZlY3RpdmUv ZWZmaWNpZW50LiBEb2luZyBtb3JlCisgKiBwcmVmZXRjaGluZyBpcyBqdXN0IGluY3JlYXNp bmcgdGhlIGNvc3RzLgorICoKKyAqIFRoaXMgdHJpZXMgdG8gaWRlbnRpZnkgc2ltcGxlIHNl cXVlbnRpYWwgcGF0dGVybnMsIHNvIHRoYXQgd2UgY2FuIHNraXAKKyAqIHRoZSBwcmVmZXRj aGluZyByZXF1ZXN0LiBUaGlzIGlzIGltcGxlbWVudGVkIGJ5IGhhdmluZyBhIHNtYWxsIHF1 ZXVlCisgKiBvZiBibG9jayBudW1iZXJzLCBhbmQgY2hlY2tpbmcgaXQgYmVmb3JlIHByZWZl dGNoaW5nIGFub3RoZXIgYmxvY2suCisgKgorICogV2UgbG9vayBhdCB0aGUgcHJlY2VkaW5n IFBSRUZFVENIX1NFUV9QQVRURVJOX0JMT0NLUyBibG9ja3MsIGFuZCBzZWUgaWYKKyAqIHRo ZXkgYXJlIHNlcXVlbnRpYWwuIFdlIGFsc28gY2hlY2sgaWYgdGhlIGJsb2NrIGlzIHRoZSBz YW1lIGFzIHRoZSBsYXN0CisgKiByZXF1ZXN0ICh3aGljaCBpcyBub3Qgc2VxdWVudGlhbCku CisgKgorICogTm90ZSB0aGF0IHRoZSBtYWluIHByZWZldGNoIHF1ZXVlIGlzIG5vdCByZWFs bHkgdXNlZnVsIGZvciB0aGlzLCBhcyBpdAorICogc3RvcmVzIFRJRHMgd2hpbGUgd2UgY2Fy ZSBhYm91dCBibG9jayBudW1iZXJzLiBDb25zaWRlciBhIHNvcnRlZCB0YWJsZSwKKyAqIHdp dGggYSBwZXJmZWN0bHkgc2VxdWVudGlhbCBwYXR0ZXJuIHdoZW4gYWNjZXNzZWQgdGhyb3Vn aCBhbiBpbmRleC4gRWFjaAorICogaGVhcCBwYWdlIG1heSBoYXZlIGRvemVucyBvZiBUSURz LCBidXQgd2UgbmVlZCB0byBjaGVjayBibG9jayBudW1iZXJzLgorICogV2UgY291bGQga2Vl cCBlbm91Z2ggVElEcyB0byBjb3ZlciBlbm91Z2ggYmxvY2tzLCBidXQgdGhlbiB3ZSBhbHNv IG5lZWQKKyAqIHRvIHdhbGsgdGhvc2Ugd2hlbiBjaGVja2luZyB0aGUgcGF0dGVybiAoaW4g aG90IHBhdGgpLgorICoKKyAqIFNvIGluc3RlYWQsIHdlIG1haW50YWluIGEgc21hbGwgc2Vw YXJhdGUgcXVldWUgb2YgYmxvY2sgbnVtYmVycywgYW5kIHdlIHVzZQorICogdGhpcyBpbnN0 ZWFkLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgYmxvY2sgaXMgaW4gYSBzZXF1ZW50 aWFsIHBhdHRlcm4gKGFuZCBzbyBzaG91bGQgbm90IGJlCisgKiBwcmVmZXRjaGVkKSwgb3Ig ZmFsc2UgKG5vdCBzZXF1ZW50aWFsLCBzaG91bGQgYmUgcHJlZmV0Y2hlZCkuCisgKgorICog WFhYIFRoZSBuYW1lIGlzIGEgYml0IG1pc2xlYWRpbmcsIGFzIGl0IGFsc28gYWRkcyB0aGUg YmxvY2sgbnVtYmVyIHRvIHRoZQorICogYmxvY2sgcXVldWUgYW5kIGNoZWNrcyBpZiB0aGUg YmxvY2sgaXMgdGhlIHNhbWUgYXMgdGhlIGxhc3Qgb25lICh3aGljaAorICogZG9lcyBub3Qg cmVxdWlyZSBhIHNlcXVlbnRpYWwgcGF0dGVybikuCiAgKi8KIHN0YXRpYyBib29sCiBpbmRl eF9wcmVmZXRjaF9pc19zZXF1ZW50aWFsKEluZGV4UHJlZmV0Y2ggcHJlZmV0Y2gsIEJsb2Nr TnVtYmVyIGJsb2NrKQogewotCWludAkJaWR4OworCWludAkJCWlkeDsKIAotCS8qIElmIHRo ZSBxdWV1ZSBpcyBlbXB0eSwganVzdCBzdG9yZSB0aGUgYmxvY2sgYW5kIHdlJ3JlIGRvbmUu ICovCisJLyoKKwkgKiBJZiB0aGUgYmxvY2sgcXVldWUgaXMgZW1wdHksIGp1c3Qgc3RvcmUg dGhlIGJsb2NrIGFuZCB3ZSdyZSBkb25lIChpdCdzCisJICogbmVpdGhlciBhIHNlcXVlbnRp YWwgcGF0dGVybiwgbmVpdGhlciByZWNlbnRseSBwcmVmZXRjaGVkIGJsb2NrKS4KKwkgKi8K IAlpZiAocHJlZmV0Y2gtPmJsb2NrSW5kZXggPT0gMCkKIAl7CiAJCXByZWZldGNoLT5ibG9j a0l0ZW1zW1BSRUZFVENIX0JMT0NLX0lOREVYKHByZWZldGNoLT5ibG9ja0luZGV4KV0gPSBi bG9jazsKQEAgLTExMzEsMzAgKzEyMDIsNjYgQEAgaW5kZXhfcHJlZmV0Y2hfaXNfc2VxdWVu dGlhbChJbmRleFByZWZldGNoIHByZWZldGNoLCBCbG9ja051bWJlciBibG9jaykKIAl9CiAK IAkvKgotCSAqIE90aGVyd2lzZSwgY2hlY2sgaWYgaXQncyB0aGUgc2FtZSBhcyB0aGUgaW1t ZWRpYXRlbHkgcHJlY2VkaW5nIGJsb2NrICh3ZQotCSAqIGRvbid0IHdhbnQgdG8gcHJlZmV0 Y2ggdGhlIHNhbWUgYmxvY2sgb3ZlciBhbmQgb3Zlci4pCisJICogQ2hlY2sgaWYgaXQncyB0 aGUgc2FtZSBhcyB0aGUgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIGJsb2NrLiBXZSBkb24ndAor CSAqIHdhbnQgdG8gcHJlZmV0Y2ggdGhlIHNhbWUgYmxvY2sgb3ZlciBhbmQgb3ZlciAod2hp Y2ggd291bGQgaGFwcGVuIGZvcgorCSAqIHdlbGwgY29ycmVsYXRlZCBpbmRleGVzKS4KKwkg KgorCSAqIEluIHByaW5jaXBsZSB3ZSBjb3VsZCByZWx5IG9uIGluZGV4X3ByZWZldGNoX2Fk ZF9jYWNoZSBkb2luZyB0aGlzIHVzaW5nCisJICogdGhlIGZ1bGwgY2FjaGUsIGJ1dCB0aGlz IGNoZWNrIGlzIG11Y2ggY2hlYXBlciBhbmQgd2UgbmVlZCB0byBsb29rIGF0CisJICogdGhl IHByZWNlZGluZyBibG9jayBhbnl3YXksIHNvIHdlIGp1c3QgZG8gaXQuCisJICoKKwkgKiBY WFggTm90aWNlIHdlIGhhdmVuJ3QgYWRkZWQgdGhlIGJsb2NrIHRvIHRoZSBibG9jayBxdWV1 ZSB5ZXQsIGFuZCB0aGVyZQorCSAqIGlzIGEgcHJlY2VkaW5nIGJsb2NrIChpLmUuIGJsb2Nr SW5kZXgtMSBpcyB2YWxpZCkuCiAJICovCiAJaWYgKHByZWZldGNoLT5ibG9ja0l0ZW1zW1BS RUZFVENIX0JMT0NLX0lOREVYKHByZWZldGNoLT5ibG9ja0luZGV4IC0gMSldID09IGJsb2Nr KQogCQlyZXR1cm4gdHJ1ZTsKIAotCS8qIE5vdCB0aGUgc2FtZSBibG9jaywgc28gYWRkIGl0 IHRvIHRoZSBxdWV1ZS4gKi8KKwkvKgorCSAqIEFkZCB0aGUgYmxvY2sgbnVtYmVyIHRvIHRo ZSBxdWV1ZS4KKwkgKgorCSAqIFdlIGRvIHRoaXMgYmVmb3JlIGNoZWNraW5nIGlmIHRoZSBw YXR0ZXJuLCBiZWNhdXNlIHdlIHdhbnQgdG8ga25vdworCSAqIGFib3V0IHRoZSBibG9jayBl dmVuIGlmIHdlIGVuZCB1cCBza2lwcGluZyB0aGUgcHJlZmV0Y2guIE90aGVyd2lzZSB3ZSdk CisJICogbm90IGJlIGFibGUgdG8gZGV0ZWN0IGxvbmdlciBzZXF1ZW50aWFsIHBhdHRlbnMg LSB3ZSdkIHNraXAgb25lIGJsb2NrCisJICogYnV0IHRoZW4gZmFpbCB0byBza2lwIHRoZSBu ZXh0IGNvdXBsZSBibG9ja3MgZXZlbiBpbiBhIHBlcmZlY3QKKwkgKiBzZXF1ZW50aWFsIHBh dHRlcm4uIFRoaXMgb2NpbGxhdGlvbiBtaWdodCBldmVuIHByZXZlbnQgdGhlIE9TCisJICog cmVhZC1haGVhZCBmcm9tIGtpY2tpbmcgaW4uCisJICovCiAJcHJlZmV0Y2gtPmJsb2NrSXRl bXNbUFJFRkVUQ0hfQkxPQ0tfSU5ERVgocHJlZmV0Y2gtPmJsb2NrSW5kZXgpXSA9IGJsb2Nr OwogCXByZWZldGNoLT5ibG9ja0luZGV4Kys7CiAKLQkvKiBjaGVjayBzZXF1ZW50aWFsIHBh dHRlciBhIGNvdXBsZSByZXF1ZXN0cyBiYWNrICovCisJLyoKKwkgKiBDaGVjayBpZiB0aGUg bGFzdCBjb3VwbGUgYmxvY2tzIGFyZSBpbiBhIHNlcXVlbnRpYWwgcGF0dGVybi4gV2UgbG9v aworCSAqIGZvciBhIHNlcXVlbnRpYWwgcGF0dGVybiBvZiBQUkVGRVRDSF9TRVFfUEFUVEVS Tl9CTE9DS1MgKDQgYnkgZGVmYXVsdCksCisJICogc28gd2UgbG9vayBmb3IgcGF0dGVybnMg b2YgNSBwYWdlcyAoNDBrQikgaW5jbHVkaW5nIHRoZSBuZXcgYmxvY2suCisJICoKKwkgKiBY WFggUGVyaGFwcyB0aGlzIHNob3VsZCBiZSB0aWVkIHRvIGVmZmVjdGl2ZV9pb19jb25jdXJy ZW5jeSBzb21laG93PworCSAqCisJICogWFhYIENvdWxkIGl0IGJlIGhhcm1mdWwgdGhhdCB3 ZSByZWFkIHRoZSBxdWV1ZSBiYWNrd2FyZHM/IE1heWJlIG1lbW9yeQorCSAqIHByZWZldGNo aW5nIHdvcmtzIGJldHRlciBmb3IgdGhlIGZvcndhcmQgZGlyZWN0aW9uPworCSAqLwogCWZv ciAoaW50IGkgPSAxOyBpIDwgUFJFRkVUQ0hfU0VRX1BBVFRFUk5fQkxPQ0tTOyBpKyspCiAJ ewotCQkvKiBub3QgZW5vdWdoIHJlcXVlc3RzIHRvIGNvbmZpcm0gYSBzZXF1ZW50aWFsIHBh dHRlcm4gKi8KKwkJLyoKKwkJICogQXJlIHRoZXJlIGVub3VnaCByZXF1ZXN0cyB0byBjb25m aXJtIGEgc2VxdWVudGlhbCBwYXR0ZXJuPyBXZSBvbmx5CisJCSAqIGNvbnNpZGVyIHNvbWV0 aGluZyB0byBiZSBzZXF1ZW50aWFsIGFmdGVyIGZpbmRpbmcgYSBzZXF1ZW5jZSBvZgorCQkg KiBQUkVGRVRDSF9TRVFfUEFUVEVSTl9CTE9DS1MgYmxvY2tzLgorCQkgKgorCQkgKiBGSVhN RSBCZXR0ZXIgdG8gbW92ZSB0aGlzIG91dHNpZGUgdGhlIGxvb3AuCisJCSAqLwogCQlpZiAo cHJlZmV0Y2gtPmJsb2NrSW5kZXggPCBpKQogCQkJcmV0dXJuIGZhbHNlOwogCiAJCS8qCi0J CSAqIGluZGV4IG9mIHRoZSBhbHJlYWR5IHJlcXVlc3RlZCBidWZmZXIgKC0xIGJlY2F1c2Ug d2UgYWxyZWFkeQotCQkgKiBpbmNyZW1lbnRlZCB0aGUgaW5kZXggd2hlbiBhZGRpbmcgdGhl IGJsb2NrIHRvIHRoZSBxdWV1ZSkKKwkJICogQ2FsY3VsYXRlIGluZGV4IG9mIHRoZSBlYXJs aWVyIGJsb2NrICh3ZSBuZWVkIHRvIGRvIC0xIGFzIHdlCisJCSAqIGFscmVhZHkgaW5jcmVt ZW50ZWQgdGhlIGluZGV4IHdoZW4gYWRkaW5nIHRoZSBuZXcgYmxvY2sgdG8gdGhlCisJCSAq IHF1ZXVlKS4KIAkJICovCiAJCWlkeCA9IFBSRUZFVENIX0JMT0NLX0lOREVYKHByZWZldGNo LT5ibG9ja0luZGV4IC0gaSAtIDEpOwogCi0JCS8qICAqLworCQkvKgorCQkgKiBGb3IgYSBz ZXF1ZW50aWFsIHBhdHRlcm4sIGJsb2NrcyAiayIgc3RlcCBhZ28gbmVlZHMgdG8gaGF2ZSBi bG9jaworCQkgKiBudW1iZXIgYnkgImsiIHNtYWxsZXIgY29tcGFyZWQgdG8gdGhlIGN1cnJl bnQgYmxvY2suCisJCSAqLwogCQlpZiAocHJlZmV0Y2gtPmJsb2NrSXRlbXNbaWR4XSAhPSAo YmxvY2sgLSBpKSkKIAkJCXJldHVybiBmYWxzZTsKIAl9CkBAIC0xMTY0LDMwICsxMjcxLDM0 IEBAIGluZGV4X3ByZWZldGNoX2lzX3NlcXVlbnRpYWwoSW5kZXhQcmVmZXRjaCBwcmVmZXRj aCwgQmxvY2tOdW1iZXIgYmxvY2spCiAKIC8qCiAgKiBpbmRleF9wcmVmZXRjaF9hZGRfY2Fj aGUKLSAqCQlBZGQgYSBibG9jayB0byB0aGUgY2FjaGUsIHJldHVybiB0cnVlIGlmIGl0IHdh cyByZWNlbnRseSBwcmVmZXRjaGVkLgorICoJCUFkZCBhIGJsb2NrIHRvIHRoZSBjYWNoZSwg Y2hlY2sgaWYgaXQgd2FzIHJlY2VudGx5IHByZWZldGNoZWQuCisgKgorICogV2UgZG9uJ3Qg d2FudCB0byBwcmVmZXRjaCBibG9ja3MgdGhhdCB3ZSBhbHJlYWR5IHByZWZldGNoZWQgcmVj ZW50bHkuIEl0J3MKKyAqIGNoZWFwIGJ1dCBub3QgZnJlZSwgYW5kIHRoZSBvdmVyaGVhZCBt YXkgaGF2ZSBtZWFzdXJhYmxlIGltcGFjdC4KICAqCi0gKiBXaGVuIGNoZWNraW5nIGEgYmxv Y2ssIHdlIG5lZWQgdG8gY2hlY2sgaWYgaXQgd2FzIHJlY2VudGx5IHByZWZldGNoZWQsCi0g KiB3aGVyZSByZWNlbnRseSBtZWFucyB3aXRoaW4gUFJFRkVUQ0hfQ0FDSEVfU0laRSByZXF1 ZXN0cy4gVGhpcyBjaGVjawotICogbmVlZHMgdG8gYmUgdmVyeSBjaGVhcCwgZXZlbiB3aXRo IGZhaXJseSBsYXJnZSBjYWNoZXMgKGh1bmRyZWRzIG9mCi0gKiBlbnRyaWVzKS4gVGhlIGNh Y2hlIGRvZXMgbm90IG5lZWQgdG8gYmUgcGVyZmVjdCwgd2UgY2FuIGFjY2VwdCBmYWxzZQot ICogcG9zaXRpdmVzL25lZ2F0aXZlcywgYXMgbG9uZyBhcyB0aGUgcmF0ZSBpcyByZWFzb25h Ymx5IGxvdy4gV2UgYWxzbwotICogbmVlZCB0byBleHBpcmUgZW50cmllcywgc28gdGhhdCBv bmx5ICJyZWNlbnQiIHJlcXVlc3RzIGFyZSByZW1lbWJlcmVkLgorICogVGhpcyBjaGVjayBu ZWVkcyB0byBiZSB2ZXJ5IGNoZWFwLCBldmVuIHdpdGggZmFpcmx5IGxhcmdlIGNhY2hlcyAo aHVuZHJlZHMKKyAqIG9mIGVudHJpZXMsIHNlZSBQUkVGRVRDSF9DQUNIRV9TSVpFKS4KICAq Ci0gKiBBIHF1ZXVlIHdvdWxkIGFsbG93IGV4cGlyaW5nIHRoZSByZXF1ZXN0cywgYnV0IGNo ZWNraW5nIGlmIGEgYmxvY2sgd2FzCi0gKiBwcmVmZXRjaGVkIHdvdWxkIGJlIGV4cGVuc2l2 ZSAobGluZWFyIHNlYXJjaCBmb3IgbG9uZ2VyIHF1ZXVlcykuIEFub3RoZXIKLSAqIG9wdGlv biB3b3VsZCBiZSBhIGhhc2ggdGFibGUsIGJ1dCB0aGF0IGhhcyBpc3N1ZXMgd2l0aCBleHBp cmluZyBlbnRyaWVzCi0gKiBjaGVhcGx5ICh3aGljaCB1c3VhbGx5IGRlZ3JhZGVzIHRoZSBo YXNoIHRhYmxlKS4KKyAqIEEgc2ltcGxlIHF1ZXVlIHdvdWxkIGFsbG93IGV4cGlyaW5nIHRo ZSByZXF1ZXN0cywgYnV0IGNoZWNraW5nIGlmIGl0CisgKiBjb250YWlucyBhIHBhcnRpY3Vs YXIgYmxvY2sgcHJlZmV0Y2hlZCB3b3VsZCBiZSBleHBlbnNpdmUgKGxpbmVhciBzZWFyY2gp LgorICogQW5vdGhlciBvcHRpb24gd291bGQgYmUgYSBzaW1wbGUgaGFzaCB0YWJsZSwgd2hp Y2ggaGFzIGZhc3QgbG9va3VwIGJ1dAorICogZG9lcyBub3QgYWxsb3cgZXhwaXJpbmcgZW50 cmllcyBjaGVhcGx5LgogICoKLSAqIFNvIHdlIHVzZSBhIGNhY2hlIHRoYXQgaXMgb3JnYW5p emVkIGFzIG11bHRpcGxlIHNtYWxsIExSVSBjYWNoZXMuIEVhY2gKKyAqIFRoZSBjYWNoZSBk b2VzIG5vdCBuZWVkIHRvIGJlIHBlcmZlY3QsIHdlIGNhbiBhY2NlcHQgZmFsc2UKKyAqIHBv c2l0aXZlcy9uZWdhdGl2ZXMsIGFzIGxvbmcgYXMgdGhlIHJhdGUgaXMgcmVhc29uYWJseSBs b3cuIFdlIGFsc28gbmVlZAorICogdG8gZXhwaXJlIGVudHJpZXMsIHNvIHRoYXQgb25seSAi cmVjZW50IiByZXF1ZXN0cyBhcmUgcmVtZW1iZXJlZC4KKyAqCisgKiBXZSB1c2UgYSBoeWJy aWQgY2FjaGUgdGhhdCBpcyBvcmdhbml6ZWQgYXMgbWFueSBzbWFsbCBMUlUgY2FjaGVzLiBF YWNoCiAgKiBibG9jayBpcyBtYXBwZWQgdG8gYSBwYXJ0aWN1bGFyIExSVSBieSBoYXNoaW5n IChzbyBpdCdzIGEgYml0IGxpa2UgYQotICogaGFzaCB0YWJsZSksIGFuZCBlYWNoIExSVSBp cyB0aW55IChlLmcuIDggZW50cmllcykuIFRoZSBMUlUgb25seSBrZWVwcwotICogdGhlIG1v c3QgcmVjZW50IHJlcXVlc3RzIChmb3IgdGhhdCBwYXJ0aWN1bGFyIExSVSkuCisgKiBoYXNo IHRhYmxlKS4gVGhlIExSVSBjYWNoZXMgYXJlIHRpbnkgKGUuZy4gOCBlbnRyaWVzKSwgYW5k IHRoZSBleHBpcmF0aW9uCisgKiBoYXBwZW5zIGF0IHRoZSBsZXZlbCBvZiBhIHNpbmdsZSBM UlUgKGJ5IHRyYWNraW5nIG9ubHkgdGhlIDggbW9zdCByZWNlbnQgcmVxdWVzdHMpLgogICoK LSAqIFRoaXMgYWxsb3dzIHF1aWNrIHNlYXJjaGVzIGFuZCBleHBpcmF0aW9uLCB3aXRoIGZh bHNlIG5lZ2F0aXZlcyAod2hlbgotICogYSBwYXJ0aWN1bGFyIExSVSBoYXMgdG9vIG1hbnkg Y29sbGlzaW9ucykuCisgKiBUaGlzIGFsbG93cyBxdWljayBzZWFyY2hlcyBhbmQgZXhwaXJh dGlvbiwgYnV0IHdpdGggZmFsc2UgbmVnYXRpdmVzICh3aGVuIGEKKyAqIHBhcnRpY3VsYXIg TFJVIGhhcyB0b28gbWFueSBjb2xsaXNpb25zLCB3ZSBtYXkgZXZpY3QgZW50cmllcyB0aGF0 IGFyZSBtb3JlCisgKiByZWNlbnQgdGhhbiBzb21lIG90aGVyIExSVSkuCiAgKgogICogRm9y IGV4YW1wbGUsIGltYWdpbmUgMTI4IExSVSBjYWNoZXMsIGVhY2ggd2l0aCA4IGVudHJpZXMg LSB0aGF0J3MgMTAyNAotICogcHJlZmV0Y2ggcmVxdWVzdCBpbiB0b3RhbC4KKyAqIHByZWZl dGNoIHJlcXVlc3QgaW4gdG90YWwgKHRoZXNlIGFyZSB0aGUgZGVmYXVsdCBwYXJhbWV0ZXJz LikKICAqCiAgKiBUaGUgcmVjZW5jeSBpcyBkZXRlcm1pbmVkIHVzaW5nIGEgcHJlZmV0Y2gg Y291bnRlciwgaW5jcmVtZW50ZWQgZXZlcnkKICAqIHRpbWUgd2UgZW5kIHVwIHByZWZldGNo aW5nIGEgYmxvY2suIFRoZSBjb3VudGVyIGlzIHVpbnQ2NCwgc28gaXQgc2hvdWxkCkBAIC0x MTk3LDMzICsxMzA4LDM5IEBAIGluZGV4X3ByZWZldGNoX2lzX3NlcXVlbnRpYWwoSW5kZXhQ cmVmZXRjaCBwcmVmZXRjaCwgQmxvY2tOdW1iZXIgYmxvY2spCiAgKiBhbmQgdGhlbiBsaW5l YXJseSBzZWFyY2ggaWYgdGhlIHRpbnkgTFJVIGhhcyBlbnRyeSBmb3IgdGhlIHNhbWUgYmxv Y2sKICAqIGFuZCByZXF1ZXN0IGxlc3MgdGhhbiBQUkVGRVRDSF9DQUNIRV9TSVpFIGFnby4K ICAqCi0gKiBBdCB0aGUgc2FtZSB0aW1lLCB3ZSBlaXRoZXIgdXBkYXRlIHRoZSBlbnRyeSAo Zm9yIHRoZSBzYW1lIGJsb2NrKSBpZgorICogQXQgdGhlIHNhbWUgdGltZSwgd2UgZWl0aGVy IHVwZGF0ZSB0aGUgZW50cnkgKGZvciB0aGUgcXVlcmllZCBibG9jaykgaWYKICAqIGZvdW5k LCBvciByZXBsYWNlIHRoZSBvbGRlc3QvZW1wdHkgZW50cnkuCiAgKgogICogSWYgdGhlIGJs b2NrIHdhcyBub3QgcmVjZW50bHkgcHJlZmV0Y2hlZCAoaS5lLiB3ZSB3YW50IHRvIHByZWZl dGNoIGl0KSwKICAqIHdlIGluY3JlbWVudCB0aGUgY291bnRlci4KKyAqCisgKiBSZXR1cm5z IHRydWUgaWYgdGhlIGJsb2NrIHdhcyByZWNlbnRseSBwcmVmZXRjaGVkIChhbmQgdGh1cyB3 ZSBkb24ndAorICogbmVlZCB0byBwcmVmZXRjaCBpdCBhZ2FpbiksIG9yIGZhbHNlIChzaG91 bGQgZG8gYSBwcmVmZXRjaCkuCisgKgorICogWFhYIEl0J3MgYSBiaXQgY29uZnVzaW5nIHRo ZXNlIHJldHVybiB2YWx1ZXMgYXJlIGludmVyc2UgY29tcGFyZWQgdG8KKyAqIHdoYXQgaW5k ZXhfcHJlZmV0Y2hfaXNfc2VxdWVudGlhbCBkb2VzLgogICovCiBzdGF0aWMgYm9vbAogaW5k ZXhfcHJlZmV0Y2hfYWRkX2NhY2hlKEluZGV4UHJlZmV0Y2ggcHJlZmV0Y2gsIEJsb2NrTnVt YmVyIGJsb2NrKQogewogCVByZWZldGNoQ2FjaGVFbnRyeSAqZW50cnk7CiAKLQkvKiBjYWxj dWxhdGUgd2hpY2ggTFJVIHRvIHVzZSAqLworCS8qIG1hcCB0aGUgYmxvY2sgbnVtYmVyIHRo ZSB0aGUgTFJVICovCiAJaW50CQkJbHJ1ID0gaGFzaF91aW50MzIoYmxvY2spICUgUFJFRkVU Q0hfTFJVX0NPVU5UOwogCi0JLyogZW50cnkgdG8gKG1heWJlKSB1c2UgZm9yIHRoaXMgYmxv Y2sgcmVxdWVzdCAqLworCS8qIGFnZS9pbmRleCBvZiB0aGUgb2xkZXN0IGVudHJ5IGluIHRo ZSBMUlUsIHRvIG1heWJlIHVzZSAqLwogCXVpbnQ2NAkJb2xkZXN0UmVxdWVzdCA9IFBHX1VJ TlQ2NF9NQVg7CiAJaW50CQkJb2xkZXN0SW5kZXggPSAtMTsKIAogCS8qCiAJICogRmlyc3Qg YWRkIHRoZSBibG9jayB0byB0aGUgKHRpbnkpIHRvcC1sZXZlbCBMUlUgY2FjaGUgYW5kIHNl ZSBpZiBpdCdzCi0JICogcGFydCBvZiBhIHNlcXVlbnRpYWwgcGF0dGVybi4gSW4gdGhpcyBj YXNlIHdlIGp1c3QgaWdub3JlIHRoZSBibG9jawotCSAqIGFuZCBkb24ndCBwcmVmZXRjaCBp dCAtIHdlIGV4cGVjdCByZWFkLWFoZWFkIHRvIGRvIGEgYmV0dGVyIGpvYi4KKwkgKiBwYXJ0 IG9mIGEgc2VxdWVudGlhbCBwYXR0ZXJuLiBJbiB0aGlzIGNhc2Ugd2UganVzdCBpZ25vcmUg dGhlIGJsb2NrIGFuZAorCSAqIGRvbid0IHByZWZldGNoIGl0IC0gd2UgZXhwZWN0IHJlYWQt YWhlYWQgdG8gZG8gYSBiZXR0ZXIgam9iLgogCSAqCi0JICogWFhYIE1heWJlIHdlIHNob3Vs ZCBzdGlsbCBhZGQgdGhlIGJsb2NrIHRvIHRoZSBsYXRlciBjYWNoZSwgaW4gY2FzZQotCSAq IHdlIGhhcHBlbiB0byBhY2Nlc3MgaXQgbGF0ZXI/IFRoYXQgbWlnaHQgaGVscCBpZiB3ZSBm aXJzdCBzY2FuIGEgbG90Ci0JICogb2YgdGhlIHRhYmxlIHNlcXVlbnRpYWxseSwgYW5kIHRo ZW4gcmFuZG9tbHkuIE5vdCBzdXJlIHRoYXQncyB2ZXJ5Ci0JICogbGlrZWx5IHdpdGggaW5k ZXggYWNjZXNzLCB0aG91Z2guCisJICogWFhYIE1heWJlIHdlIHNob3VsZCBzdGlsbCBhZGQg dGhlIGJsb2NrIHRvIHRoZSBoeWJyaWQgY2FjaGUsIGluIGNhc2Ugd2UKKwkgKiBoYXBwZW4g dG8gYWNjZXNzIGl0IGxhdGVyPyBUaGF0IG1pZ2h0IGhlbHAgaWYgd2UgZmlyc3Qgc2NhbiBh IGxvdCBvZgorCSAqIHRoZSB0YWJsZSBzZXF1ZW50aWFsbHksIGFuZCB0aGVuIHJhbmRvbWx5 LiBOb3Qgc3VyZSB0aGF0J3MgdmVyeSBsaWtlbHkKKwkgKiB3aXRoIGluZGV4IGFjY2Vzcywg dGhvdWdoLgogCSAqLwogCWlmIChpbmRleF9wcmVmZXRjaF9pc19zZXF1ZW50aWFsKHByZWZl dGNoLCBibG9jaykpCiAJewpAQCAtMTIzMSw3ICsxMzQ4LDExIEBAIGluZGV4X3ByZWZldGNo X2FkZF9jYWNoZShJbmRleFByZWZldGNoIHByZWZldGNoLCBCbG9ja051bWJlciBibG9jaykK IAkJcmV0dXJuIHRydWU7CiAJfQogCi0JLyogc2VlIGlmIHdlIGFscmVhZHkgaGF2ZSBwcmVm ZXRjaGVkIHRoaXMgYmxvY2sgKGxpbmVhciBzZWFyY2ggb2YgTFJVKSAqLworCS8qCisJICog U2VlIGlmIHdlIHJlY2VudGx5IHByZWZldGNoZWQgdGhpcyBibG9jayAtIHdlIHNpbXBseSBz Y2FuIHRoZSBMUlUKKwkgKiBsaW5lYXJseS4gV2hpbGUgZG9pbmcgdGhhdCwgd2UgYWxzbyB0 cmFjayB0aGUgb2xkZXN0IGVudHJ5LCBzbyB0aGF0IHdlCisJICoga25vdyB3aGVyZSB0byBw dXQgdGhlIGJsb2NrIGlmIHdlIGRvbid0IGZpbmQgYSBtYXRjaGluZyBlbnRyeS4KKwkgKi8K IAlmb3IgKGludCBpID0gMDsgaSA8IFBSRUZFVENIX0xSVV9TSVpFOyBpKyspCiAJewogCQll bnRyeSA9ICZwcmVmZXRjaC0+cHJlZmV0Y2hDYWNoZVtscnUgKiBQUkVGRVRDSF9MUlVfU0la RSArIGldOwpAQCAtMTI0MywxNCArMTM2NCwxOCBAQCBpbmRleF9wcmVmZXRjaF9hZGRfY2Fj aGUoSW5kZXhQcmVmZXRjaCBwcmVmZXRjaCwgQmxvY2tOdW1iZXIgYmxvY2spCiAJCQlvbGRl c3RJbmRleCA9IGk7CiAJCX0KIAotCQkvKiBSZXF1ZXN0IG51bWJlcnMgYXJlIHBvc2l0aXZl LCBzbyAwIG1lYW5zICJ1bnVzZWQiLiAqLworCQkvKgorCQkgKiBJZiB0aGUgZW50cnkgaXMg dW51c2VkIChpZGVudGlmaWVkIGJ5IHJlcXVlc3QgYmVpbmcgc2V0IHRvIDApLAorCQkgKiB3 ZSdyZSBkb25lLiBOb3RpY2UgdGhlIGZpZWxkIGlzIHVpbnQ2NCwgc28gZW1wdHkgZW50cnkg aXMKKwkJICogZ3VhcmFudGVlZCB0byBiZSB0aGUgb2xkZXN0IG9uZS4KKwkJICovCiAJCWlm IChlbnRyeS0+cmVxdWVzdCA9PSAwKQogCQkJY29udGludWU7CiAKIAkJLyogSXMgdGhpcyBl bnRyeSBmb3IgdGhlIHNhbWUgYmxvY2sgYXMgdGhlIGN1cnJlbnQgcmVxdWVzdD8gKi8KIAkJ aWYgKGVudHJ5LT5ibG9jayA9PSBibG9jaykKIAkJewotCQkJYm9vbAlwcmVmZXRjaGVkOwor CQkJYm9vbAkJcHJlZmV0Y2hlZDsKIAogCQkJLyoKIAkJCSAqIElzIHRoZSBvbGQgcmVxdWVz dCBzdWZmaWNpZW50bHkgcmVjZW50PyBJZiB5ZXMsIHdlIHRyZWF0IHRoZQpAQCAtMTI1OSw3 ICsxMzg0LDcgQEAgaW5kZXhfcHJlZmV0Y2hfYWRkX2NhY2hlKEluZGV4UHJlZmV0Y2ggcHJl ZmV0Y2gsIEJsb2NrTnVtYmVyIGJsb2NrKQogCQkJICogWFhYIFdlIGRvIGFkZCB0aGUgY2Fj aGUgc2l6ZSB0byB0aGUgcmVxdWVzdCBpbiBvcmRlciBub3QgdG8KIAkJCSAqIGhhdmUgaXNz dWVzIHdpdGggdWludDY0IHVuZGVyZmxvd3MuCiAJCQkgKi8KLQkJCXByZWZldGNoZWQgPSAo ZW50cnktPnJlcXVlc3QgKyBQUkVGRVRDSF9DQUNIRV9TSVpFID49IHByZWZldGNoLT5wcmVm ZXRjaFJlcU51bWJlcik7CisJCQlwcmVmZXRjaGVkID0gKChlbnRyeS0+cmVxdWVzdCArIFBS RUZFVENIX0NBQ0hFX1NJWkUpID49IHByZWZldGNoLT5wcmVmZXRjaFJlcU51bWJlcik7CiAK IAkJCS8qIFVwZGF0ZSB0aGUgcmVxdWVzdCBudW1iZXIuICovCiAJCQllbnRyeS0+cmVxdWVz dCA9ICsrcHJlZmV0Y2gtPnByZWZldGNoUmVxTnVtYmVyOwpAQCAtMTI3Niw2ICsxNDAxLDcg QEAgaW5kZXhfcHJlZmV0Y2hfYWRkX2NhY2hlKEluZGV4UHJlZmV0Y2ggcHJlZmV0Y2gsIEJs b2NrTnVtYmVyIGJsb2NrKQogCSAqLwogCUFzc2VydCgob2xkZXN0SW5kZXggPj0gMCkgJiYg KG9sZGVzdEluZGV4IDwgUFJFRkVUQ0hfTFJVX1NJWkUpKTsKIAorCS8qIEZJWE1FIGRvIGEg bmljZSBtYWNybyAqLwogCWVudHJ5ID0gJnByZWZldGNoLT5wcmVmZXRjaENhY2hlW2xydSAq IFBSRUZFVENIX0xSVV9TSVpFICsgb2xkZXN0SW5kZXhdOwogCiAJZW50cnktPmJsb2NrID0g YmxvY2s7CkBAIC0xMjg2LDMyICsxNDEyLDMxIEBAIGluZGV4X3ByZWZldGNoX2FkZF9jYWNo ZShJbmRleFByZWZldGNoIHByZWZldGNoLCBCbG9ja051bWJlciBibG9jaykKIH0KIAogLyoK LSAqIERvIHByZWZldGNoaW5nLCBhbmQgZ3JhZHVhbGx5IGluY3JlYXNlIHRoZSBwcmVmZXRj aCBkaXN0YW5jZS4KLSAqCi0gKiBYWFggVGhpcyBpcyBsaW1pdGVkIHRvIGEgc2luZ2xlIGlu ZGV4IHBhZ2UgKGJlY2F1c2UgdGhhdCdzIHdoZXJlIHdlIGdldAotICogY3VyclBvcy5pdGVt cyBmcm9tKS4gQnV0IGluZGV4IHR1cGxlcyBhcmUgdHlwaWNhbGx5IHZlcnkgc21hbGwsIHNv IHRoZXJlCi0gKiBzaG91bGQgYmUgcXVpdGUgYSBiaXQgb2Ygc3R1ZmYgdG8gcHJlZmV0Y2gg KGVzcGVjaWFsbHkgd2l0aCBkZWR1cGxpY2F0ZWQKLSAqIGluZGV4ZXMsIGV0Yy4pLiBEb2Vz IG5vdCBzZWVtIHdvcnRoIHJld29ya2luZyB0aGUgaW5kZXggYWNjZXNzIHRvIGFsbG93Ci0g KiBtb3JlIGFnZ3Jlc3NpdmUgcHJlZmV0Y2hpbmcsIGl0J3MgYmVzdCBlZmZvcnQuCisgKiBp bmRleF9wcmVmZXRjaAorICoJCVByZWZldGNoIHRoZSBUSUQsIHVubGVzcyBpdCdzIHNlcXVl bnRpYWwgb3IgcmVjZW50bHkgcHJlZmV0Y2hlZC4KICAqCiAgKiBYWFggU29tZSBpZGVhcyBo b3cgdG8gYXV0by10dW5lIHRoZSBwcmVmZXRjaGluZywgc28gdGhhdCB1bm5lY2Vzc2FyeQog ICogcHJlZmV0Y2hpbmcgZG9lcyBub3QgY2F1c2Ugc2lnbmlmaWNhbnQgcmVncmVzc2lvbnMg KGUuZy4gZm9yIG5lc3Rsb29wCi0gKiB3aXRoIGlubmVyIGluZGV4IHNjYW4pLiBXZSBjb3Vs ZCB0cmFjayBudW1iZXIgb2YgaW5kZXggcGFnZXMgdmlzaXRlZAotICogYW5kIGluZGV4IHR1 cGxlcyByZXR1cm5lZCwgdG8gY2FsY3VsYXRlIGF2ZyB0dXBsZXMgLyBwYWdlLCBhbmQgdGhl bgotICogdXNlIHRoYXQgdG8gbGltaXQgcHJlZmV0Y2hpbmcgYWZ0ZXIgc3dpdGNoaW5nIHRv IGEgbmV3IHBhZ2UgKGluc3RlYWQKLSAqIG9mIGp1c3QgdXNpbmcgcHJlZmV0Y2hNYXhUYXJn ZXQsIHdoaWNoIGNhbiBnZXQgbXVjaCBsYXJnZXIpLgorICogd2l0aCBpbm5lciBpbmRleCBz Y2FuKS4gV2UgY291bGQgdHJhY2sgbnVtYmVyIG9mIHJlc2NhbnMgYW5kIG51bWJlciBvZgor ICogaXRlbXMgKFRJRHMpIGFjdHVhbGx5IHJldHVybmVkIGZyb20gdGhlIHNjYW4uIFRoZW4g d2UgY291bGQgY2FsY3VsYXRlCisgKiByb3dzIC8gcmVzY2FuIGFuZCB1c2UgdGhhdCB0byBj bGFtcCBwcmVmZXRjaCB0YXJnZXQuCiAgKgotICogWFhYIE9idmlvdXNseSwgYW5vdGhlciBv cHRpb24gaXMgdG8gdXNlIHRoZSBwbGFubmVyIGVzdGltYXRlcyAtIHdlIGtub3cKLSAqIGhv dyBtYW55IHJvd3Mgd2UncmUgZXhwZWN0ZWQgdG8gZmV0Y2ggKG9uIGF2ZXJhZ2UsIGFzc3Vt aW5nIHRoZSBlc3RpbWF0ZXMKLSAqIGFyZSByZWFzb25hYmx5IGFjY3VyYXRlKSwgc28gd2h5 IG5vdCB0byB1c2UgdGhhdC4gQW5kIG1heWJlIGNvbWJpbmUgaXQKLSAqIHdpdGggdGhlIGF1 dG8tdHVuaW5nIGJhc2VkIG9uIHJ1bnRpbWUgc3RhdGlzdGljcywgZGVzY3JpYmVkIGFib3Zl LgorICogVGhhdCdkIGhlbHAgd2l0aCBjYXNlcyB3aGVuIGEgc2NhbiBtYXRjaGVzIG9ubHkg dmVyeSBmZXcgcm93cywgZmFyIGxlc3MKKyAqIHRoYW4gdGhlIHByZWZldGNoVGFyZ2V0LCBi ZWNhdXNlIHRoZSB1bm5lY2Vzc2FyeSBwcmVmZXRjaGVzIGFyZSB3YXN0ZWQKKyAqIEkvTy4g SW1hZ2luZSBhIExJTUlUIG9uIHRvcCBvZiBpbmRleCBzY2FuLCBvciBzb21ldGhpbmcgbGlr ZSB0aGF0LgorICoKKyAqIEFub3RoZXIgb3B0aW9uIGlzIHRvIHVzZSB0aGUgcGxhbm5lciBl c3RpbWF0ZXMgLSB3ZSBrbm93IGhvdyBtYW55IHJvd3Mgd2UncmUKKyAqIGV4cGVjdGluZyB0 byBmZXRjaCAob24gYXZlcmFnZSwgYXNzdW1pbmcgdGhlIGVzdGltYXRlcyBhcmUgcmVhc29u YWJseQorICogYWNjdXJhdGUpLCBzbyB3aHkgbm90IHRvIHVzZSB0aGF0PworICoKKyAqIE9m IGNvdXJzZSwgd2UgY291bGQvc2hvdWxkIGNvbWJpbmUgdGhlc2UgdHdvIGFwcHJvYWNoZXMu CiAgKgogICogWFhYIFRoZSBwcmVmZXRjaGluZyBtYXkgaW50ZXJmZXJlIHdpdGggdGhlIHBh dGNoIGFsbG93aW5nIHVzIHRvIGV2YWx1YXRlCiAgKiBjb25kaXRpb25zIG9uIHRoZSBpbmRl eCB0dXBsZSwgaW4gd2hpY2ggY2FzZSB3ZSBtYXkgbm90IG5lZWQgdGhlIGhlYXAKICAqIHR1 cGxlLiBNYXliZSBpZiB0aGVyZSdzIHN1Y2ggZmlsdGVyLCB3ZSBzaG91bGQgcHJlZmV0Y2gg b25seSBwYWdlcyB0aGF0CiAgKiBhcmUgbm90IGFsbC12aXNpYmxlIChhbmQgdGhlIHNhbWUg aWRlYSB3b3VsZCBhbHNvIHdvcmsgZm9yIElPUyksIGJ1dAogICogaXQgYWxzbyBtYWtlcyB0 aGUgaW5kZXhpbmcgYSBiaXQgImF3YXJlIiBvZiB0aGUgdmlzaWJpbGl0eSBzdHVmZiAod2hp Y2gKLSAqIHNlZW1zIGEgYml0IHdyb25nKS4gQWxzbywgbWF5YmUgd2Ugc2hvdWxkIGNvbnNp ZGVyIHRoZSBmaWx0ZXIgc2VsZWN0aXZpdHkKKyAqIHNlZW1zIGEgc29tZXdoYXQgd3Jvbmcp LiBBbHNvLCBtYXliZSB3ZSBzaG91bGQgY29uc2lkZXIgdGhlIGZpbHRlciBzZWxlY3Rpdml0 eQogICogKGlmIHRoZSBpbmRleC1vbmx5IGZpbHRlciBpcyBleHBlY3RlZCB0byBlbGltaW5h dGUgb25seSBmZXcgcm93cywgdGhlbgogICogdGhlIHZtIGNoZWNrIGlzIHBvaW50bGVzcyku IE1heWJlIHRoaXMgY291bGQvc2hvdWxkIGJlIGF1dG8tdHVuaW5nIHRvbywKICAqIGkuZS4g d2UgY291bGQgdHJhY2sgaG93IG1hbnkgaGVhcCB0dXBsZXMgd2VyZSBuZWVkZWQgYWZ0ZXIg YWxsLCBhbmQgdGhlbgpAQCAtMTMyNCwxMyArMTQ0OSwxMyBAQCBpbmRleF9wcmVmZXRjaF9h ZGRfY2FjaGUoSW5kZXhQcmVmZXRjaCBwcmVmZXRjaCwgQmxvY2tOdW1iZXIgYmxvY2spCiBz dGF0aWMgdm9pZAogaW5kZXhfcHJlZmV0Y2goSW5kZXhTY2FuRGVzYyBzY2FuLCBJdGVtUG9p bnRlciB0aWQpCiB7Ci0JSW5kZXhQcmVmZXRjaAlwcmVmZXRjaCA9IHNjYW4tPnhzX3ByZWZl dGNoOwotCUJsb2NrTnVtYmVyCWJsb2NrOworCUluZGV4UHJlZmV0Y2ggcHJlZmV0Y2ggPSBz Y2FuLT54c19wcmVmZXRjaDsKKwlCbG9ja051bWJlciBibG9jazsKIAogCS8qCi0JICogTm8g aGVhcCByZWxhdGlvbiBtZWFucyBiaXRtYXAgaW5kZXggc2Nhbiwgd2hpY2ggZG9lcyBwcmVm ZXRjaGluZyBhdAotCSAqIHRoZSBiaXRtYXAgaGVhcCBzY2FuLCBzbyBubyBwcmVmZXRjaCBo ZXJlICh3ZSBjYW4ndCBkbyBpdCBhbnl3YXksCi0JICogd2l0aG91dCB0aGUgaGVhcCkKKwkg KiBObyBoZWFwIHJlbGF0aW9uIG1lYW5zIGJpdG1hcCBpbmRleCBzY2FuLCB3aGljaCBkb2Vz IHByZWZldGNoaW5nIGF0IHRoZQorCSAqIGJpdG1hcCBoZWFwIHNjYW4sIHNvIG5vIHByZWZl dGNoIGhlcmUgKHdlIGNhbid0IGRvIGl0IGFueXdheSwgd2l0aG91dAorCSAqIHRoZSBoZWFw KQogCSAqCiAJICogWFhYIEJ1dCBpbiB0aGlzIGNhc2Ugd2Ugc2hvdWxkIGhhdmUgcHJlZmV0 Y2hNYXhUYXJnZXQ9MCwgYmVjYXVzZSBpbgogCSAqIGluZGV4X2JlYmluc2Nhbl9iaXRtYXAo KSB3ZSBkaXNhYmxlIHByZWZldGNoaW5nLiBTbyBtYXliZSB3ZSBzaG91bGQKQEAgLTEzMzks OSArMTQ2NCw2IEBAIGluZGV4X3ByZWZldGNoKEluZGV4U2NhbkRlc2Mgc2NhbiwgSXRlbVBv aW50ZXIgdGlkKQogCWlmICghcHJlZmV0Y2gpCiAJCXJldHVybjsKIAotCS8qIHdhcyBpdCBp bml0aWFsaXplZCBjb3JyZWN0bHk/ICovCi0JLy8gQXNzZXJ0KHByZWZldGNoLT5wcmVmZXRj aEluZGV4ICE9IC0xKTsKLQogCS8qCiAJICogSWYgd2UgZ290IGhlcmUsIHByZWZldGNoaW5n IGlzIGVuYWJsZWQgYW5kIGl0J3MgYSBub2RlIHRoYXQgc3VwcG9ydHMKIAkgKiBwcmVmZXRj aGluZyAoaS5lLiBpdCBjYW4ndCBiZSBhIGJpdG1hcCBpbmRleCBzY2FuKS4KQEAgLTEzNTUs OSArMTQ3Nyw5IEBAIGluZGV4X3ByZWZldGNoKEluZGV4U2NhbkRlc2Mgc2NhbiwgSXRlbVBv aW50ZXIgdGlkKQogCS8qCiAJICogRG8gbm90IHByZWZldGNoIHRoZSBzYW1lIGJsb2NrIG92 ZXIgYW5kIG92ZXIgYWdhaW4sCiAJICoKLQkgKiBUaGlzIGhhcHBlbnMgZS5nLiBmb3IgY2x1 c3RlcmVkIG9yIG5hdHVyYWxseSBjb3JyZWxhdGVkIGluZGV4ZXMKLQkgKiAoZmtleSB0byBh IHNlcXVlbmNlIElEKS4gSXQncyBub3QgZXhwZW5zaXZlICh0aGUgYmxvY2sgaXMgaW4gcGFn ZQotCSAqIGNhY2hlIGFscmVhZHksIHNvIG5vIEkvTyksIGJ1dCBpdCdzIG5vdCBmcmVlIGVp dGhlci4KKwkgKiBUaGlzIGhhcHBlbnMgZS5nLiBmb3IgY2x1c3RlcmVkIG9yIG5hdHVyYWxs eSBjb3JyZWxhdGVkIGluZGV4ZXMgKGZrZXkKKwkgKiB0byBhIHNlcXVlbmNlIElEKS4gSXQn cyBub3QgZXhwZW5zaXZlICh0aGUgYmxvY2sgaXMgaW4gcGFnZSBjYWNoZQorCSAqIGFscmVh ZHksIHNvIG5vIEkvTyksIGJ1dCBpdCdzIG5vdCBmcmVlIGVpdGhlci4KIAkgKi8KIAlpZiAo IWluZGV4X3ByZWZldGNoX2FkZF9jYWNoZShwcmVmZXRjaCwgYmxvY2spKQogCXsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYwppbmRleCAxODVmZjBmMTQ0OS4uOTc5NmY4 Yjk3OWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKQEAgLTE3MTAs NiArMTcxMCwxMSBAQCBFeGVjSW5kZXhTY2FuSW5pdGlhbGl6ZURTTShJbmRleFNjYW5TdGF0 ZSAqbm9kZSwKIAkgKiBlc3NlbnRpYWxseSBqdXN0IGVmZmVjdGl2ZV9pb19jb25jdXJyZW5j eSBmb3IgdGhlIHRhYmxlIChvciB0aGUKIAkgKiB0YWJsZXNwYWNlIGl0J3MgaW4pLgogCSAq CisJICogWFhYIFNob3VsZCB0aGlzIGFsc28gbG9vayBhdCBwbGFuLnBsYW5fcm93cyBhbmQg bWF5YmUgY2FwIHRoZSB0YXJnZXQKKwkgKiB0byB0aGF0PyBQb2ludGxlc3MgdG8gcHJlZmV0 Y2ggbW9yZSB0aGFuIHdlIGV4cGVjdCB0byB1c2UuIE9yIG1heWJlCisJICoganVzdCByZXNl dCB0byB0aGF0IHZhbHVlIGR1cmluZyBwcmVmZXRjaGluZywgYWZ0ZXIgcmVhZGluZyB0aGUg bmV4dAorCSAqIGluZGV4IHBhZ2UgKG9yIHJhdGhlciBhZnRlciByZXNjYW4pPworCSAqCiAJ ICogWFhYIE1heWJlIHJlZHVjZSB0aGUgdmFsdWUgd2l0aCBwYXJhbGxlbCB3b3JrZXJzPwog CSAqLwogCWhlYXBSZWwgPSBub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb247CkBAIC0xNzcw LDYgKzE3NzUsMTggQEAgRXhlY0luZGV4U2NhbkluaXRpYWxpemVXb3JrZXIoSW5kZXhTY2Fu U3RhdGUgKm5vZGUsCiAJaW50CQkJcHJlZmV0Y2hfdGFyZ2V0OwogCWludAkJCXByZWZldGNo X3Jlc2V0OwogCisJLyoKKwkgKiBEZXRlcm1pbmUgbnVtYmVyIG9mIGhlYXAgcGFnZXMgdG8g cHJlZmV0Y2ggZm9yIHRoaXMgaW5kZXguIFRoaXMgaXMKKwkgKiBlc3NlbnRpYWxseSBqdXN0 IGVmZmVjdGl2ZV9pb19jb25jdXJyZW5jeSBmb3IgdGhlIHRhYmxlIChvciB0aGUKKwkgKiB0 YWJsZXNwYWNlIGl0J3MgaW4pLgorCSAqCisJICogWFhYIFNob3VsZCB0aGlzIGFsc28gbG9v ayBhdCBwbGFuLnBsYW5fcm93cyBhbmQgbWF5YmUgY2FwIHRoZSB0YXJnZXQKKwkgKiB0byB0 aGF0PyBQb2ludGxlc3MgdG8gcHJlZmV0Y2ggbW9yZSB0aGFuIHdlIGV4cGVjdCB0byB1c2Uu IE9yIG1heWJlCisJICoganVzdCByZXNldCB0byB0aGF0IHZhbHVlIGR1cmluZyBwcmVmZXRj aGluZywgYWZ0ZXIgcmVhZGluZyB0aGUgbmV4dAorCSAqIGluZGV4IHBhZ2UgKG9yIHJhdGhl ciBhZnRlciByZXNjYW4pPworCSAqCisJICogWFhYIE1heWJlIHJlZHVjZSB0aGUgdmFsdWUg d2l0aCBwYXJhbGxlbCB3b3JrZXJzPworCSAqLwogCWhlYXBSZWwgPSBub2RlLT5zcy5zc19j dXJyZW50UmVsYXRpb247CiAKIAlwcmVmZXRjaF90YXJnZXQgPSBnZXRfdGFibGVzcGFjZV9p b19jb25jdXJyZW5jeShoZWFwUmVsLT5yZF9yZWwtPnJlbHRhYmxlc3BhY2UpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwppbmRleCA0NzA5M2NjOWNmMS4uZTI1MGIwNTY3 ZWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBAIC0xMTMxLDggKzEx MzEsNiBAQCBDcmVhdGVSZXBsaWNhdGlvblNsb3QoQ3JlYXRlUmVwbGljYXRpb25TbG90Q21k ICpjbWQpCiAJCQluZWVkX2Z1bGxfc25hcHNob3QgPSB0cnVlOwogCQl9CiAKLQkJZWxvZyhM T0csICJzbG90ID0gJXMgIG5lZWRfZnVsbF9zbmFwc2hvdCA9ICVkIiwgY21kLT5zbG90bmFt ZSwgbmVlZF9mdWxsX3NuYXBzaG90KTsKLQogCQljdHggPSBDcmVhdGVJbml0RGVjb2RpbmdD b250ZXh0KGNtZC0+cGx1Z2luLCBOSUwsIG5lZWRfZnVsbF9zbmFwc2hvdCwKIAkJCQkJCQkJ CQlJbnZhbGlkWExvZ1JlY1B0ciwKIAkJCQkJCQkJCQlYTF9ST1VUSU5FKC5wYWdlX3JlYWQg PSBsb2dpY2FsX3JlYWRfeGxvZ19wYWdlLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNj ZXNzL2dlbmFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAppbmRleCBiODE0YWY0 YjJmNi4uOTA3YWI4ODZkM2UgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5h bS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCkBAIC0yMzUsMTggKzIzNSw2 IEBAIGV4dGVybiBIZWFwVHVwbGUgc3lzdGFibGVfZ2V0bmV4dF9vcmRlcmVkKFN5c1NjYW5E ZXNjIHN5c3NjYW4sCiAJCQkJCQkJCQkJICBTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbik7CiBl eHRlcm4gdm9pZCBzeXN0YWJsZV9lbmRzY2FuX29yZGVyZWQoU3lzU2NhbkRlc2Mgc3lzc2Nh bik7CiAKLS8qCi0gKiBYWFggbm90IHN1cmUgaXQncyB0aGUgcmlnaHQgcGxhY2UgdG8gZGVm aW5lIHRoZXNlIGNhbGxiYWNrcyBldGMuCi0gKi8KLXR5cGVkZWYgdm9pZCAoKnByZWZldGNo ZXJfZ2V0cmFuZ2VfZnVuY3Rpb24pIChJbmRleFNjYW5EZXNjIHNjYW5kZXNjLAotCQkJCQkJ CQkJCQkgIFNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uLAotCQkJCQkJCQkJCQkgIGludCAqc3Rh cnQsIGludCAqZW5kLAotCQkJCQkJCQkJCQkgIGJvb2wgKnJlc2V0KTsKLQotdHlwZWRlZiBC bG9ja051bWJlciAoKnByZWZldGNoZXJfZ2V0YmxvY2tfZnVuY3Rpb24pIChJbmRleFNjYW5E ZXNjIHNjYW5kZXNjLAotCQkJCQkJCQkJCQkJCSBTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbiwK LQkJCQkJCQkJCQkJCQkgaW50IGluZGV4KTsKLQogLyoKICAqIENhY2hlIG9mIHJlY2VudGx5 IHByZWZldGNoZWQgYmxvY2tzLCBvcmdhbml6ZWQgYXMgYSBoYXNoIHRhYmxlIG9mCiAgKiBz bWFsbCBMUlUgY2FjaGVzLiBEb2Vzbid0IG5lZWQgdG8gYmUgcGVyZmVjdGx5IGFjY3VyYXRl LCBidXQgd2UKLS0gCjIuNDEuMAoK --------------a1GjYnA7k79ug88wdVKlHsRH Content-Type: text/x-patch; charset=UTF-8; name="0003-remove-prefetch_reset-20231012.patch" Content-Disposition: attachment; filename="0003-remove-prefetch_reset-20231012.patch" Content-Transfer-Encoding: base64 RnJvbSA2MWIxM2NjOWEyYTA0NDVkNmFiOTkyNTIwYTk0NTQzN2NkMGYyNzVjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogRnJpLCAxMyBPY3QgMjAyMyAyMzowNDozOSArMDIwMApTdWJqZWN0OiBb UEFUQ0ggMy80XSByZW1vdmUgcHJlZmV0Y2hfcmVzZXQKCi0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyB8ICA2ICstLQogc3JjL2JhY2tlbmQvYWNjZXNz L2luZGV4L2dlbmFtLmMgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaW5k ZXgvaW5kZXhhbS5jICAgICAgIHwgMzggKysrKysrKy0tLS0tLS0tLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlSW5kZXhvbmx5c2Nhbi5jIHwgIDYgKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSW5kZXhzY2FuLmMgICAgIHwgNTMgKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiBzcmMv YmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYyAgICAgICAgIHwgIDMgKy0KIHNyYy9pbmNs dWRlL2FjY2Vzcy9nZW5hbS5oICAgICAgICAgICAgICAgfCAgNiArLS0KIHNyYy9pbmNsdWRl L2FjY2Vzcy9yZWxzY2FuLmggICAgICAgICAgICAgfCAgNCArLQogMTAgZmlsZXMgY2hhbmdl ZCwgNTIgaW5zZXJ0aW9ucygrKSwgNzIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggY2E5MWJjNWU4NzguLjg5NDc0MDc4 OTUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxl ci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAg LTc0OCwxNCArNzQ4LDE0IEBAIGhlYXBhbV9yZWxhdGlvbl9jb3B5X2Zvcl9jbHVzdGVyKFJl bGF0aW9uIE9sZEhlYXAsIFJlbGF0aW9uIE5ld0hlYXAsCiAJCQlQUk9HUkVTU19DTFVTVEVS X0lOREVYX1JFTElECiAJCX07CiAJCWludDY0CQljaV92YWxbMl07Ci0JCWludAkJCXByZWZl dGNoX3RhcmdldDsKKwkJaW50CQkJcHJlZmV0Y2hfbWF4OwogCiAJCS8qCiAJCSAqIEdldCB0 aGUgcHJlZmV0Y2ggdGFyZ2V0IGZvciB0aGUgb2xkIHRhYmxlc3BhY2UgKHdoaWNoIGlzIHdo YXQgd2UnbGwKIAkJICogcmVhZCB1c2luZyB0aGUgaW5kZXgpLiBXZSdsbCB1c2UgaXQgYXMg YSByZXNldCB2YWx1ZSB0b28sIGFsdGhvdWdoCiAJCSAqIHRoZXJlIHNob3VsZCBiZSBubyBy ZXNjYW5zIGZvciBDTFVTVEVSIGV0Yy4KIAkJICovCi0JCXByZWZldGNoX3RhcmdldCA9IGdl dF90YWJsZXNwYWNlX2lvX2NvbmN1cnJlbmN5KE9sZEhlYXAtPnJkX3JlbC0+cmVsdGFibGVz cGFjZSk7CisJCXByZWZldGNoX21heCA9IGdldF90YWJsZXNwYWNlX2lvX2NvbmN1cnJlbmN5 KE9sZEhlYXAtPnJkX3JlbC0+cmVsdGFibGVzcGFjZSk7CiAKIAkJLyogU2V0IHBoYXNlIGFu ZCBPSURPbGRJbmRleCB0byBjb2x1bW5zICovCiAJCWNpX3ZhbFswXSA9IFBST0dSRVNTX0NM VVNURVJfUEhBU0VfSU5ERVhfU0NBTl9IRUFQOwpAQCAtNzY1LDcgKzc2NSw3IEBAIGhlYXBh bV9yZWxhdGlvbl9jb3B5X2Zvcl9jbHVzdGVyKFJlbGF0aW9uIE9sZEhlYXAsIFJlbGF0aW9u IE5ld0hlYXAsCiAJCXRhYmxlU2NhbiA9IE5VTEw7CiAJCWhlYXBTY2FuID0gTlVMTDsKIAkJ aW5kZXhTY2FuID0gaW5kZXhfYmVnaW5zY2FuKE9sZEhlYXAsIE9sZEluZGV4LCBTbmFwc2hv dEFueSwgMCwgMCwKLQkJCQkJCQkJCXByZWZldGNoX3RhcmdldCwgcHJlZmV0Y2hfdGFyZ2V0 KTsKKwkJCQkJCQkJCXByZWZldGNoX21heCk7CiAJCWluZGV4X3Jlc2NhbihpbmRleFNjYW4s IE5VTEwsIDAsIE5VTEwsIDApOwogCX0KIAllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5h bS5jCmluZGV4IDZlM2FhNmJiMWZkLi5kNDVhMjA5ZWUzYSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2lu ZGV4L2dlbmFtLmMKQEAgLTQ1Niw3ICs0NTYsNyBAQCBzeXN0YWJsZV9iZWdpbnNjYW4oUmVs YXRpb24gaGVhcFJlbGF0aW9uLAogCQkgKiB1c2UgZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5 LCBidXQgaXQgZG9lc24ndCBzZWVtIHdvcnRoIGl0LgogCQkgKi8KIAkJc3lzc2Nhbi0+aXNj YW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcFJlbGF0aW9uLCBpcmVsLAotCQkJCQkJCQkJCSBz bmFwc2hvdCwgbmtleXMsIDAsIDAsIDApOworCQkJCQkJCQkJCSBzbmFwc2hvdCwgbmtleXMs IDAsIDApOwogCQlpbmRleF9yZXNjYW4oc3lzc2Nhbi0+aXNjYW4sIGtleSwgbmtleXMsIE5V TEwsIDApOwogCQlzeXNzY2FuLT5zY2FuID0gTlVMTDsKIAl9CkBAIC03MjQsNyArNzI0LDcg QEAgc3lzdGFibGVfYmVnaW5zY2FuX29yZGVyZWQoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAog CSAqIHVzZSBlZmZlY3RpdmVfaW9fY29uY3VycmVuY3ksIGJ1dCBpdCBkb2Vzbid0IHNlZW0g d29ydGggaXQuCiAJICovCiAJc3lzc2Nhbi0+aXNjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVh cFJlbGF0aW9uLCBpbmRleFJlbGF0aW9uLAotCQkJCQkJCQkJIHNuYXBzaG90LCBua2V5cywg MCwgMCwgMCk7CisJCQkJCQkJCQkgc25hcHNob3QsIG5rZXlzLCAwLCAwKTsKIAlpbmRleF9y ZXNjYW4oc3lzc2Nhbi0+aXNjYW4sIGtleSwgbmtleXMsIE5VTEwsIDApOwogCXN5c3NjYW4t PnNjYW4gPSBOVUxMOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgv aW5kZXhhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwppbmRleCBl NDVhM2E4OTM4Ny4uOGM1NmFjZmQ2MzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9pbmRleC9pbmRleGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4 YW0uYwpAQCAtMTA5LDcgKzEwOSw3IEBAIGRvIHsgXAogc3RhdGljIEluZGV4U2NhbkRlc2Mg aW5kZXhfYmVnaW5zY2FuX2ludGVybmFsKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAJCQkJ CQkJCQkJCSAgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzLCBTbmFwc2hvdCBzbmFwc2hvdCwK IAkJCQkJCQkJCQkJICBQYXJhbGxlbEluZGV4U2NhbkRlc2MgcHNjYW4sIGJvb2wgdGVtcF9z bmFwLAotCQkJCQkJCQkJCQkgIGludCBwcmVmZXRjaF90YXJnZXQsIGludCBwcmVmZXRjaF9y ZXNldCk7CisJCQkJCQkJCQkJCSAgaW50IHByZWZldGNoX21heCk7CiAKIHN0YXRpYyB2b2lk IGluZGV4X3ByZWZldGNoKEluZGV4U2NhbkRlc2Mgc2NhbiwgSXRlbVBvaW50ZXIgdGlkKTsK IApAQCAtMjA2LDEzICsyMDYsMTAgQEAgaW5kZXhfaW5zZXJ0KFJlbGF0aW9uIGluZGV4UmVs YXRpb24sCiAgKgogICogQ2FsbGVyIG11c3QgYmUgaG9sZGluZyBzdWl0YWJsZSBsb2NrcyBv biB0aGUgaGVhcCBhbmQgdGhlIGluZGV4LgogICoKLSAqIHByZWZldGNoX3RhcmdldCBkZXRl cm1pbmVzIGlmIHByZWZldGNoaW5nIGlzIHJlcXVlc3RlZCBmb3IgdGhpcyBpbmRleCBzY2Fu LAorICogcHJlZmV0Y2hfbWF4IGRldGVybWluZXMgaWYgcHJlZmV0Y2hpbmcgaXMgcmVxdWVz dGVkIGZvciB0aGlzIGluZGV4IHNjYW4sCiAgKiBhbmQgaG93IGZhciBhaGVhZCB3ZSB3YW50 IHRvIHByZWZldGNoCiAgKgotICogcHJlZmV0Y2hfcmVzZXQgc3BlY2lmaWVzIHRoZSBwcmVm ZXRjaCBkaXN0YW5jZSB0byBzdGFydCB3aXRoIG9uIHJlc2NhbnMgKHNvCi0gKiB0aGF0IHdl IGRvbid0IHJhbXAtdXAgdG8gcHJlZmV0Y2hfdGFyZ2V0IGFuZCB1c2UgdGhhdCBmb3JldmVy KQotICoKLSAqIFNldHRpbmcgcHJlZmV0Y2hfdGFyZ2V0IHRvIDAgZGlzYWJsZXMgcHJlZmV0 Y2hpbmcgZm9yIHRoZSBpbmRleCBzY2FuLiBXZSBkbworICogU2V0dGluZyBwcmVmZXRjaF9t YXggdG8gMCBkaXNhYmxlcyBwcmVmZXRjaGluZyBmb3IgdGhlIGluZGV4IHNjYW4uIFdlIGRv CiAgKiB0aGlzIGZvciB0d28gcmVhc29ucyAtIGZvciBzY2FucyBvbiBzeXN0ZW0gY2F0YWxv Z3MsIGFuZC9vciBmb3IgY2FzZXMgd2hlcmUKICAqIHByZWZldGNoaW5nIGlzIGV4cGVjdGVk IHRvIGJlIHBvaW50bGVzcyAobGlrZSBJT1MpLgogICoKQEAgLTIzNiwxNCArMjMzLDE0IEBA IGluZGV4X2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJUmVsYXRpb24g aW5kZXhSZWxhdGlvbiwKIAkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQlpbnQgbmtleXMs IGludCBub3JkZXJieXMsCi0JCQkJaW50IHByZWZldGNoX3RhcmdldCwgaW50IHByZWZldGNo X3Jlc2V0KQorCQkJCWludCBwcmVmZXRjaF9tYXgpCiB7CiAJSW5kZXhTY2FuRGVzYyBzY2Fu OwogCiAJQXNzZXJ0KHNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hvdCk7CiAKLQlzY2FuID0g aW5kZXhfYmVnaW5zY2FuX2ludGVybmFsKGluZGV4UmVsYXRpb24sIG5rZXlzLCBub3JkZXJi eXMsIHNuYXBzaG90LCBOVUxMLCBmYWxzZSwKLQkJCQkJCQkJCXByZWZldGNoX3RhcmdldCwg cHJlZmV0Y2hfcmVzZXQpOworCXNjYW4gPSBpbmRleF9iZWdpbnNjYW5faW50ZXJuYWwoaW5k ZXhSZWxhdGlvbiwgbmtleXMsIG5vcmRlcmJ5cywgc25hcHNob3QsCisJCQkJCQkJCQlOVUxM LCBmYWxzZSwgcHJlZmV0Y2hfbWF4KTsKIAogCS8qCiAJICogU2F2ZSBhZGRpdGlvbmFsIHBh cmFtZXRlcnMgaW50byB0aGUgc2NhbmRlc2MuICBFdmVyeXRoaW5nIGVsc2Ugd2FzIHNldApA QCAtMjczLDEyICsyNzAsOCBAQCBpbmRleF9iZWdpbnNjYW5fYml0bWFwKFJlbGF0aW9uIGlu ZGV4UmVsYXRpb24sCiAKIAlBc3NlcnQoc25hcHNob3QgIT0gSW52YWxpZFNuYXBzaG90KTsK IAotCS8qCi0JICogTm8gcHJlZmV0Y2ggZm9yIGJpdG1hcCBpbmRleCBzY2Fucy4gSW4gdGhp cyBjYXNlIHByZWZldGNoaW5nIGhhcHBlbnMgYXQKLQkgKiB0aGUgaGVhcHNjYW4gbGV2ZWwu Ci0JICovCi0Jc2NhbiA9IGluZGV4X2JlZ2luc2Nhbl9pbnRlcm5hbChpbmRleFJlbGF0aW9u LCBua2V5cywgMCwgc25hcHNob3QsIE5VTEwsIGZhbHNlLAotCQkJCQkJCQkJMCwgMCk7CisJ LyogTm8gcHJlZmV0Y2ggaW4gYml0bWFwIHNjYW5zLCBwcmVmZXRjaCBpcyBkb25lIGJ5IHRo ZSBoZWFwIHNjYW4uICovCisJc2NhbiA9IGluZGV4X2JlZ2luc2Nhbl9pbnRlcm5hbChpbmRl eFJlbGF0aW9uLCBua2V5cywgMCwgc25hcHNob3QsIE5VTEwsIGZhbHNlLCAwKTsKIAogCS8q CiAJICogU2F2ZSBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgaW50byB0aGUgc2NhbmRlc2MuICBF dmVyeXRoaW5nIGVsc2Ugd2FzIHNldApAQCAtMjk2LDcgKzI4OSw3IEBAIHN0YXRpYyBJbmRl eFNjYW5EZXNjCiBpbmRleF9iZWdpbnNjYW5faW50ZXJuYWwoUmVsYXRpb24gaW5kZXhSZWxh dGlvbiwKIAkJCQkJCSBpbnQgbmtleXMsIGludCBub3JkZXJieXMsIFNuYXBzaG90IHNuYXBz aG90LAogCQkJCQkJIFBhcmFsbGVsSW5kZXhTY2FuRGVzYyBwc2NhbiwgYm9vbCB0ZW1wX3Nu YXAsCi0JCQkJCQkgaW50IHByZWZldGNoX3RhcmdldCwgaW50IHByZWZldGNoX3Jlc2V0KQor CQkJCQkJIGludCBwcmVmZXRjaF9tYXgpCiB7CiAJSW5kZXhTY2FuRGVzYyBzY2FuOwogCkBA IC0zMjEsNyArMzE0LDcgQEAgaW5kZXhfYmVnaW5zY2FuX2ludGVybmFsKFJlbGF0aW9uIGlu ZGV4UmVsYXRpb24sCiAJc2Nhbi0+eHNfdGVtcF9zbmFwID0gdGVtcF9zbmFwOwogCiAJLyog V2l0aCBwcmVmZXRjaGluZyByZXF1ZXN0ZWQsIGluaXRpYWxpemUgdGhlIHByZWZldGNoZXIg c3RhdGUuICovCi0JaWYgKHByZWZldGNoX3RhcmdldCA+IDApCisJaWYgKHByZWZldGNoX21h eCA+IDApCiAJewogCQlJbmRleFByZWZldGNoIHByZWZldGNoZXIgPSBwYWxsb2MwKHNpemVv ZihJbmRleFByZWZldGNoRGF0YSkpOwogCkBAIC0zMzAsOCArMzIzLDcgQEAgaW5kZXhfYmVn aW5zY2FuX2ludGVybmFsKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAJCXByZWZldGNoZXIt PnF1ZXVlRW5kID0gMDsKIAogCQlwcmVmZXRjaGVyLT5wcmVmZXRjaFRhcmdldCA9IDA7Ci0J CXByZWZldGNoZXItPnByZWZldGNoTWF4VGFyZ2V0ID0gcHJlZmV0Y2hfdGFyZ2V0OwotCQlw cmVmZXRjaGVyLT5wcmVmZXRjaFJlc2V0ID0gcHJlZmV0Y2hfcmVzZXQ7CisJCXByZWZldGNo ZXItPnByZWZldGNoTWF4VGFyZ2V0ID0gcHJlZmV0Y2hfbWF4OwogCiAJCXNjYW4tPnhzX3By ZWZldGNoID0gcHJlZmV0Y2hlcjsKIAl9CkBAIC0zODIsOCArMzc0LDggQEAgaW5kZXhfcmVz Y2FuKEluZGV4U2NhbkRlc2Mgc2NhbiwKIAkJcHJlZmV0Y2hlci0+cXVldWVJbmRleCA9IDA7 CiAJCXByZWZldGNoZXItPnByZWZldGNoRG9uZSA9IGZhbHNlOwogCi0JCXByZWZldGNoZXIt PnByZWZldGNoVGFyZ2V0ID0gTWluKHByZWZldGNoZXItPnByZWZldGNoVGFyZ2V0LAotCQkJ CQkJCQkJCSBwcmVmZXRjaGVyLT5wcmVmZXRjaFJlc2V0KTsKKwkJLyogcmVzdGFydCB0aGUg aW5jcmVtZW50YWwgcmFtcC11cCAqLworCQlwcmVmZXRjaGVyLT5wcmVmZXRjaFRhcmdldCA9 IDA7CiAJfQogfQogCkBAIC01NzYsNyArNTY4LDcgQEAgaW5kZXhfcGFyYWxsZWxyZXNjYW4o SW5kZXhTY2FuRGVzYyBzY2FuKQogSW5kZXhTY2FuRGVzYwogaW5kZXhfYmVnaW5zY2FuX3Bh cmFsbGVsKFJlbGF0aW9uIGhlYXByZWwsIFJlbGF0aW9uIGluZGV4cmVsLCBpbnQgbmtleXMs CiAJCQkJCQkgaW50IG5vcmRlcmJ5cywgUGFyYWxsZWxJbmRleFNjYW5EZXNjIHBzY2FuLAot CQkJCQkJIGludCBwcmVmZXRjaF90YXJnZXQsIGludCBwcmVmZXRjaF9yZXNldCkKKwkJCQkJ CSBpbnQgcHJlZmV0Y2hfbWF4KQogewogCVNuYXBzaG90CXNuYXBzaG90OwogCUluZGV4U2Nh bkRlc2Mgc2NhbjsKQEAgLTU4NSw3ICs1NzcsNyBAQCBpbmRleF9iZWdpbnNjYW5fcGFyYWxs ZWwoUmVsYXRpb24gaGVhcHJlbCwgUmVsYXRpb24gaW5kZXhyZWwsIGludCBua2V5cywKIAlz bmFwc2hvdCA9IFJlc3RvcmVTbmFwc2hvdChwc2Nhbi0+cHNfc25hcHNob3RfZGF0YSk7CiAJ UmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJc2NhbiA9IGluZGV4X2JlZ2luc2Nhbl9p bnRlcm5hbChpbmRleHJlbCwgbmtleXMsIG5vcmRlcmJ5cywgc25hcHNob3QsCi0JCQkJCQkJ CQlwc2NhbiwgdHJ1ZSwgcHJlZmV0Y2hfdGFyZ2V0LCBwcmVmZXRjaF9yZXNldCk7CisJCQkJ CQkJCQlwc2NhbiwgdHJ1ZSwgcHJlZmV0Y2hfbWF4KTsKIAogCS8qCiAJICogU2F2ZSBhZGRp dGlvbmFsIHBhcmFtZXRlcnMgaW50byB0aGUgc2NhbmRlc2MuICBFdmVyeXRoaW5nIGVsc2Ug d2FzIHNldApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5n LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwppbmRleCAwOTQxOGY3 MTVmYS4uZWFlMWQ4ZjkyMzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNJbmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5j CkBAIC03NzMsNyArNzczLDcgQEAgY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJh aW50KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogcmV0cnk6CiAJY29uZmxpY3Qg PSBmYWxzZTsKIAlmb3VuZF9zZWxmID0gZmFsc2U7Ci0JaW5kZXhfc2NhbiA9IGluZGV4X2Jl Z2luc2NhbihoZWFwLCBpbmRleCwgJkRpcnR5U25hcHNob3QsIGluZG5rZXlhdHRzLCAwLCAw LCAwKTsKKwlpbmRleF9zY2FuID0gaW5kZXhfYmVnaW5zY2FuKGhlYXAsIGluZGV4LCAmRGly dHlTbmFwc2hvdCwgaW5kbmtleWF0dHMsIDAsIDApOwogCWluZGV4X3Jlc2NhbihpbmRleF9z Y2FuLCBzY2Fua2V5cywgaW5kbmtleWF0dHMsIE5VTEwsIDApOwogCiAJd2hpbGUgKGluZGV4 X2dldG5leHRfc2xvdChpbmRleF9zY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgZXhpc3Rp bmdfc2xvdCkpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGlj YXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCmluZGV4 IGYzZTFhOGQyMmE0Li45MTY3NmNjZmY5NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1JlcGxpY2F0aW9uLmMKQEAgLTIxMCw3ICsyMTAsNyBAQCBSZWxhdGlvbkZpbmRSZXBsVHVw bGVCeUluZGV4KFJlbGF0aW9uIHJlbCwgT2lkIGlkeG9pZCwKIAkgKiBwcm9iYWJseSB1c2lu ZyBhIFBLIC8gVU5JUVVFIGluZGV4LCBzbyBkb2VzIG5vdCBzZWVtIHdvcnRoIGl0LiBJZiB3 ZQogCSAqIHJlY29uc2lkZXIgdGhpcywgY2FsY2xhdGUgcHJlZmV0Y2hfdGFyZ2V0IGxpa2Ug aW4gbm9kZUluZGV4c2Nhbi4KIAkgKi8KLQlzY2FuID0gaW5kZXhfYmVnaW5zY2FuKHJlbCwg aWR4cmVsLCAmc25hcCwgc2tleV9hdHRvZmYsIDAsIDAsIDApOworCXNjYW4gPSBpbmRleF9i ZWdpbnNjYW4ocmVsLCBpZHhyZWwsICZzbmFwLCBza2V5X2F0dG9mZiwgMCwgMCk7CiAKIHJl dHJ5OgogCWZvdW5kID0gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlSW5kZXhvbmx5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4 b25seXNjYW4uYwppbmRleCA3NWI0NGRiMzNjNi4uN2MyNzkxMzUwMmMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwpAQCAtMTAwLDcgKzEwMCw3IEBA IEluZGV4T25seU5leHQoSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCQkJCQkJCQkgICBl c3RhdGUtPmVzX3NuYXBzaG90LAogCQkJCQkJCQkgICBub2RlLT5pb3NzX051bVNjYW5LZXlz LAogCQkJCQkJCQkgICBub2RlLT5pb3NzX051bU9yZGVyQnlLZXlzLAotCQkJCQkJCQkgICAw LCAwKTsJLyogbm8gaW5kZXggcHJlZmV0Y2ggZm9yIElPUyAqLworCQkJCQkJCQkgICAwKTsJ Lyogbm8gcHJlZmV0Y2hpbmcgZm9yIElPUyAqLwogCiAJCW5vZGUtPmlvc3NfU2NhbkRlc2Mg PSBzY2FuZGVzYzsKIApAQCAtNjY3LDcgKzY2Nyw3IEBAIEV4ZWNJbmRleE9ubHlTY2FuSW5p dGlhbGl6ZURTTShJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUsCiAJCQkJCQkJCSBub2RlLT5p b3NzX051bVNjYW5LZXlzLAogCQkJCQkJCQkgbm9kZS0+aW9zc19OdW1PcmRlckJ5S2V5cywK IAkJCQkJCQkJIHBpc2NhbiwKLQkJCQkJCQkJIDAsIDApOwkvKiBubyBpbmRleCBwcmVmZXRj aCBmb3IgSU9TICovCisJCQkJCQkJCSAwKTsJLyogbm8gcHJlZmV0Y2hpbmcgZm9yIElPUyAq LwogCW5vZGUtPmlvc3NfU2NhbkRlc2MtPnhzX3dhbnRfaXR1cCA9IHRydWU7CiAJbm9kZS0+ aW9zc19WTUJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAKQEAgLTcxMyw3ICs3MTMsNyBAQCBF eGVjSW5kZXhPbmx5U2NhbkluaXRpYWxpemVXb3JrZXIoSW5kZXhPbmx5U2NhblN0YXRlICpu b2RlLAogCQkJCQkJCQkgbm9kZS0+aW9zc19OdW1TY2FuS2V5cywKIAkJCQkJCQkJIG5vZGUt Pmlvc3NfTnVtT3JkZXJCeUtleXMsCiAJCQkJCQkJCSBwaXNjYW4sCi0JCQkJCQkJCSAwLCAw KTsJLyogbm8gaW5kZXggcHJlZmV0Y2ggZm9yIElPUyAqLworCQkJCQkJCQkgMCk7CS8qIG5v IHByZWZldGNoaW5nIGZvciBJT1MgKi8KIAlub2RlLT5pb3NzX1NjYW5EZXNjLT54c193YW50 X2l0dXAgPSB0cnVlOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4u YwppbmRleCA5Nzk2ZjhiOTc5Yy4uYTVmNTM5NGVmNDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlSW5kZXhzY2FuLmMKQEAgLTEwNSwxMiArMTA1LDExIEBAIEluZGV4TmV4dChJbmRl eFNjYW5TdGF0ZSAqbm9kZSkKIAogCWlmIChzY2FuZGVzYyA9PSBOVUxMKQogCXsKLQkJaW50 CXByZWZldGNoX3RhcmdldDsKLQkJaW50CXByZWZldGNoX3Jlc2V0OworCQlpbnQJcHJlZmV0 Y2hfbWF4OwogCiAJCS8qCi0JCSAqIERldGVybWluZSBudW1iZXIgb2YgaGVhcCBwYWdlcyB0 byBwcmVmZXRjaCBmb3IgdGhpcyBpbmRleC4gVGhpcyBpcwotCQkgKiBlc3NlbnRpYWxseSBq dXN0IGVmZmVjdGl2ZV9pb19jb25jdXJyZW5jeSBmb3IgdGhlIHRhYmxlIChvciB0aGUKKwkJ ICogRGV0ZXJtaW5lIG51bWJlciBvZiBoZWFwIHBhZ2VzIHRvIHByZWZldGNoIGZvciB0aGlz IGluZGV4IHNjYW4uIFRoaXMKKwkJICogaXMgZXNzZW50aWFsbHkganVzdCBlZmZlY3RpdmVf aW9fY29uY3VycmVuY3kgZm9yIHRoZSB0YWJsZSAob3IgdGhlCiAJCSAqIHRhYmxlc3BhY2Ug aXQncyBpbikuCiAJCSAqCiAJCSAqIFhYWCBTaG91bGQgdGhpcyBhbHNvIGxvb2sgYXQgcGxh bi5wbGFuX3Jvd3MgYW5kIG1heWJlIGNhcCB0aGUgdGFyZ2V0CkBAIC0xMTgsOCArMTE3LDgg QEAgSW5kZXhOZXh0KEluZGV4U2NhblN0YXRlICpub2RlKQogCQkgKiBqdXN0IHJlc2V0IHRv IHRoYXQgdmFsdWUgZHVyaW5nIHByZWZldGNoaW5nLCBhZnRlciByZWFkaW5nIHRoZSBuZXh0 CiAJCSAqIGluZGV4IHBhZ2UgKG9yIHJhdGhlciBhZnRlciByZXNjYW4pPwogCQkgKi8KLQkJ cHJlZmV0Y2hfdGFyZ2V0ID0gZ2V0X3RhYmxlc3BhY2VfaW9fY29uY3VycmVuY3koaGVhcFJl bC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlKTsKLQkJcHJlZmV0Y2hfcmVzZXQgPSBNaW4ocHJl ZmV0Y2hfdGFyZ2V0LCBub2RlLT5zcy5wcy5wbGFuLT5wbGFuX3Jvd3MpOworCQlwcmVmZXRj aF9tYXggPSBNaW4oZ2V0X3RhYmxlc3BhY2VfaW9fY29uY3VycmVuY3koaGVhcFJlbC0+cmRf cmVsLT5yZWx0YWJsZXNwYWNlKSwKKwkJCQkJCSAgIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5f cm93cyk7CiAKIAkJLyoKIAkJICogV2UgcmVhY2ggaGVyZSBpZiB0aGUgaW5kZXggc2NhbiBp cyBub3QgcGFyYWxsZWwsIG9yIGlmIHdlJ3JlCkBAIC0xMzAsOCArMTI5LDcgQEAgSW5kZXhO ZXh0KEluZGV4U2NhblN0YXRlICpub2RlKQogCQkJCQkJCQkgICBlc3RhdGUtPmVzX3NuYXBz aG90LAogCQkJCQkJCQkgICBub2RlLT5pc3NfTnVtU2NhbktleXMsCiAJCQkJCQkJCSAgIG5v ZGUtPmlzc19OdW1PcmRlckJ5S2V5cywKLQkJCQkJCQkJICAgcHJlZmV0Y2hfdGFyZ2V0LAot CQkJCQkJCQkgICBwcmVmZXRjaF9yZXNldCk7CisJCQkJCQkJCSAgIHByZWZldGNoX21heCk7 CiAKIAkJbm9kZS0+aXNzX1NjYW5EZXNjID0gc2NhbmRlc2M7CiAKQEAgLTE5Nyw2ICsxOTUs NyBAQCBJbmRleE5leHRXaXRoUmVvcmRlcihJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAlEYXR1 bQkgICAqbGFzdGZldGNoZWRfdmFsczsKIAlib29sCSAgICpsYXN0ZmV0Y2hlZF9udWxsczsK IAlpbnQJCQljbXA7CisJUmVsYXRpb24JaGVhcFJlbCA9IG5vZGUtPnNzLnNzX2N1cnJlbnRS ZWxhdGlvbjsKIAogCWVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRlOwogCkBAIC0yMTgsOSAr MjE3LDcgQEAgSW5kZXhOZXh0V2l0aFJlb3JkZXIoSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAK IAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7Ci0JCVJlbGF0aW9uIGhlYXBSZWwgPSBub2Rl LT5zcy5zc19jdXJyZW50UmVsYXRpb247Ci0JCWludAlwcmVmZXRjaF90YXJnZXQ7Ci0JCWlu dAlwcmVmZXRjaF9yZXNldDsKKwkJaW50CXByZWZldGNoX21heDsKIAogCQkvKgogCQkgKiBE ZXRlcm1pbmUgbnVtYmVyIG9mIGhlYXAgcGFnZXMgdG8gcHJlZmV0Y2ggZm9yIHRoaXMgaW5k ZXguIFRoaXMgaXMKQEAgLTIzMiw4ICsyMjksOCBAQCBJbmRleE5leHRXaXRoUmVvcmRlcihJ bmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJICoganVzdCByZXNldCB0byB0aGF0IHZhbHVlIGR1 cmluZyBwcmVmZXRjaGluZywgYWZ0ZXIgcmVhZGluZyB0aGUgbmV4dAogCQkgKiBpbmRleCBw YWdlIChvciByYXRoZXIgYWZ0ZXIgcmVzY2FuKT8KIAkJICovCi0JCXByZWZldGNoX3Rhcmdl dCA9IGdldF90YWJsZXNwYWNlX2lvX2NvbmN1cnJlbmN5KGhlYXBSZWwtPnJkX3JlbC0+cmVs dGFibGVzcGFjZSk7Ci0JCXByZWZldGNoX3Jlc2V0ID0gTWluKHByZWZldGNoX3RhcmdldCwg bm9kZS0+c3MucHMucGxhbi0+cGxhbl9yb3dzKTsKKwkJcHJlZmV0Y2hfbWF4ID0gTWluKGdl dF90YWJsZXNwYWNlX2lvX2NvbmN1cnJlbmN5KGhlYXBSZWwtPnJkX3JlbC0+cmVsdGFibGVz cGFjZSksCisJCQkJCQkgICBub2RlLT5zcy5wcy5wbGFuLT5wbGFuX3Jvd3MpOwogCiAJCS8q CiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYgdGhlIGluZGV4IHNjYW4gaXMgbm90IHBhcmFsbGVs LCBvciBpZiB3ZSdyZQpAQCAtMjQ0LDggKzI0MSw3IEBAIEluZGV4TmV4dFdpdGhSZW9yZGVy KEluZGV4U2NhblN0YXRlICpub2RlKQogCQkJCQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90 LAogCQkJCQkJCQkgICBub2RlLT5pc3NfTnVtU2NhbktleXMsCiAJCQkJCQkJCSAgIG5vZGUt Pmlzc19OdW1PcmRlckJ5S2V5cywKLQkJCQkJCQkJICAgcHJlZmV0Y2hfdGFyZ2V0LAotCQkJ CQkJCQkgICBwcmVmZXRjaF9yZXNldCk7CisJCQkJCQkJCSAgIHByZWZldGNoX21heCk7CiAK IAkJbm9kZS0+aXNzX1NjYW5EZXNjID0gc2NhbmRlc2M7CiAKQEAgLTE3MDEsOSArMTY5Nyw4 IEBAIEV4ZWNJbmRleFNjYW5Jbml0aWFsaXplRFNNKEluZGV4U2NhblN0YXRlICpub2RlLAog ewogCUVTdGF0ZQkgICAqZXN0YXRlID0gbm9kZS0+c3MucHMuc3RhdGU7CiAJUGFyYWxsZWxJ bmRleFNjYW5EZXNjIHBpc2NhbjsKLQlSZWxhdGlvbgloZWFwUmVsOwotCWludAkJCXByZWZl dGNoX3RhcmdldDsKLQlpbnQJCQlwcmVmZXRjaF9yZXNldDsKKwlSZWxhdGlvbgloZWFwUmVs ID0gbm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uOworCWludAkJCXByZWZldGNoX21heDsK IAogCS8qCiAJICogRGV0ZXJtaW5lIG51bWJlciBvZiBoZWFwIHBhZ2VzIHRvIHByZWZldGNo IGZvciB0aGlzIGluZGV4LiBUaGlzIGlzCkBAIC0xNzE3LDEwICsxNzEyLDkgQEAgRXhlY0lu ZGV4U2NhbkluaXRpYWxpemVEU00oSW5kZXhTY2FuU3RhdGUgKm5vZGUsCiAJICoKIAkgKiBY WFggTWF5YmUgcmVkdWNlIHRoZSB2YWx1ZSB3aXRoIHBhcmFsbGVsIHdvcmtlcnM/CiAJICov Ci0JaGVhcFJlbCA9IG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbjsKIAotCXByZWZldGNo X3RhcmdldCA9IGdldF90YWJsZXNwYWNlX2lvX2NvbmN1cnJlbmN5KGhlYXBSZWwtPnJkX3Jl bC0+cmVsdGFibGVzcGFjZSk7Ci0JcHJlZmV0Y2hfcmVzZXQgPSBNaW4ocHJlZmV0Y2hfdGFy Z2V0LCBub2RlLT5zcy5wcy5wbGFuLT5wbGFuX3Jvd3MpOworCXByZWZldGNoX21heCA9IE1p bihnZXRfdGFibGVzcGFjZV9pb19jb25jdXJyZW5jeShoZWFwUmVsLT5yZF9yZWwtPnJlbHRh Ymxlc3BhY2UpLAorCQkJCQkgICBub2RlLT5zcy5wcy5wbGFuLT5wbGFuX3Jvd3MpOwogCiAJ cGlzY2FuID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIG5vZGUtPmlzc19Qc2Nhbkxl bik7CiAJaW5kZXhfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUobm9kZS0+c3Muc3NfY3VycmVu dFJlbGF0aW9uLApAQCAtMTczNCw4ICsxNzI4LDcgQEAgRXhlY0luZGV4U2NhbkluaXRpYWxp emVEU00oSW5kZXhTY2FuU3RhdGUgKm5vZGUsCiAJCQkJCQkJCSBub2RlLT5pc3NfTnVtU2Nh bktleXMsCiAJCQkJCQkJCSBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMsCiAJCQkJCQkJCSBw aXNjYW4sCi0JCQkJCQkJCSBwcmVmZXRjaF90YXJnZXQsCi0JCQkJCQkJCSBwcmVmZXRjaF9y ZXNldCk7CisJCQkJCQkJCSBwcmVmZXRjaF9tYXgpOwogCiAJLyoKIAkgKiBJZiBubyBydW4t dGltZSBrZXlzIHRvIGNhbGN1bGF0ZSBvciB0aGV5IGFyZSByZWFkeSwgZ28gYWhlYWQgYW5k IHBhc3MKQEAgLTE3NzEsOSArMTc2NCw4IEBAIEV4ZWNJbmRleFNjYW5Jbml0aWFsaXplV29y a2VyKEluZGV4U2NhblN0YXRlICpub2RlLAogCQkJCQkJCSAgUGFyYWxsZWxXb3JrZXJDb250 ZXh0ICpwd2N4dCkKIHsKIAlQYXJhbGxlbEluZGV4U2NhbkRlc2MgcGlzY2FuOwotCVJlbGF0 aW9uCWhlYXBSZWw7Ci0JaW50CQkJcHJlZmV0Y2hfdGFyZ2V0OwotCWludAkJCXByZWZldGNo X3Jlc2V0OworCVJlbGF0aW9uCWhlYXBSZWwgPSBub2RlLT5zcy5zc19jdXJyZW50UmVsYXRp b247CisJaW50CQkJcHJlZmV0Y2hfbWF4OwogCiAJLyoKIAkgKiBEZXRlcm1pbmUgbnVtYmVy IG9mIGhlYXAgcGFnZXMgdG8gcHJlZmV0Y2ggZm9yIHRoaXMgaW5kZXguIFRoaXMgaXMKQEAg LTE3ODcsMTAgKzE3NzksOCBAQCBFeGVjSW5kZXhTY2FuSW5pdGlhbGl6ZVdvcmtlcihJbmRl eFNjYW5TdGF0ZSAqbm9kZSwKIAkgKgogCSAqIFhYWCBNYXliZSByZWR1Y2UgdGhlIHZhbHVl IHdpdGggcGFyYWxsZWwgd29ya2Vycz8KIAkgKi8KLQloZWFwUmVsID0gbm9kZS0+c3Muc3Nf Y3VycmVudFJlbGF0aW9uOwotCi0JcHJlZmV0Y2hfdGFyZ2V0ID0gZ2V0X3RhYmxlc3BhY2Vf aW9fY29uY3VycmVuY3koaGVhcFJlbC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlKTsKLQlwcmVm ZXRjaF9yZXNldCA9IE1pbihwcmVmZXRjaF90YXJnZXQsIG5vZGUtPnNzLnBzLnBsYW4tPnBs YW5fcm93cyk7CisJcHJlZmV0Y2hfbWF4ID0gTWluKGdldF90YWJsZXNwYWNlX2lvX2NvbmN1 cnJlbmN5KGhlYXBSZWwtPnJkX3JlbC0+cmVsdGFibGVzcGFjZSksCisJCQkJCSAgIG5vZGUt PnNzLnBzLnBsYW4tPnBsYW5fcm93cyk7CiAKIAlwaXNjYW4gPSBzaG1fdG9jX2xvb2t1cChw d2N4dC0+dG9jLCBub2RlLT5zcy5wcy5wbGFuLT5wbGFuX25vZGVfaWQsIGZhbHNlKTsKIAlu b2RlLT5pc3NfU2NhbkRlc2MgPQpAQCAtMTc5OSw4ICsxNzg5LDcgQEAgRXhlY0luZGV4U2Nh bkluaXRpYWxpemVXb3JrZXIoSW5kZXhTY2FuU3RhdGUgKm5vZGUsCiAJCQkJCQkJCSBub2Rl LT5pc3NfTnVtU2NhbktleXMsCiAJCQkJCQkJCSBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMs CiAJCQkJCQkJCSBwaXNjYW4sCi0JCQkJCQkJCSBwcmVmZXRjaF90YXJnZXQsCi0JCQkJCQkJ CSBwcmVmZXRjaF9yZXNldCk7CisJCQkJCQkJCSBwcmVmZXRjaF9tYXgpOwogCiAJLyoKIAkg KiBJZiBubyBydW4tdGltZSBrZXlzIHRvIGNhbGN1bGF0ZSBvciB0aGV5IGFyZSByZWFkeSwg Z28gYWhlYWQgYW5kIHBhc3MKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9z ZWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMKaW5kZXggMGIw MmI2MjY1ZDAuLjUyZTNhYWFmMjBhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvc2VsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYwpA QCAtNjIxNiw5ICs2MjE2LDEwIEBAIGdldF9hY3R1YWxfdmFyaWFibGVfZW5kcG9pbnQoUmVs YXRpb24gaGVhcFJlbCwKIAlJbml0Tm9uVmFjdXVtYWJsZVNuYXBzaG90KFNuYXBzaG90Tm9u VmFjdXVtYWJsZSwKIAkJCQkJCQkgIEdsb2JhbFZpc1Rlc3RGb3IoaGVhcFJlbCkpOwogCisJ LyogWFhYIE1heWJlIHNob3VsZCBkbyBwcmVmZXRjaGluZyB1c2luZyB0aGUgZGVmYXVsdCBw cmVmZXRjaCBwYXJhbWV0ZXJzPyAqLwogCWluZGV4X3NjYW4gPSBpbmRleF9iZWdpbnNjYW4o aGVhcFJlbCwgaW5kZXhSZWwsCiAJCQkJCQkJCSAmU25hcHNob3ROb25WYWN1dW1hYmxlLAot CQkJCQkJCQkgMSwgMCwgMCwgMCk7CS8qIFhYWCBtYXliZSBkbyBwcmVmZXRjaD8gKi8KKwkJ CQkJCQkJIDEsIDAsIDApOwogCS8qIFNldCBpdCB1cCBmb3IgaW5kZXgtb25seSBzY2FuICov CiAJaW5kZXhfc2Nhbi0+eHNfd2FudF9pdHVwID0gdHJ1ZTsKIAlpbmRleF9yZXNjYW4oaW5k ZXhfc2Nhbiwgc2NhbmtleXMsIDEsIE5VTEwsIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvYWNjZXNzL2dlbmFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAppbmRleCA5 MDdhYjg4NmQzZS4uY2ViNjI3OWIwYjAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9nZW5hbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCkBAIC0xNTQsOCAr MTU0LDcgQEAgZXh0ZXJuIEluZGV4U2NhbkRlc2MgaW5kZXhfYmVnaW5zY2FuKFJlbGF0aW9u IGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJCSBSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogCQkJ CQkJCQkJIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJIGludCBua2V5cywgaW50IG5v cmRlcmJ5cywKLQkJCQkJCQkJCSBpbnQgcHJlZmV0Y2hfdGFyZ2V0LAotCQkJCQkJCQkJIGlu dCBwcmVmZXRjaF9yZXNldCk7CisJCQkJCQkJCQkgaW50IHByZWZldGNoX21heCk7CiBleHRl cm4gSW5kZXhTY2FuRGVzYyBpbmRleF9iZWdpbnNjYW5fYml0bWFwKFJlbGF0aW9uIGluZGV4 UmVsYXRpb24sCiAJCQkJCQkJCQkJCVNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJCQlp bnQgbmtleXMpOwpAQCAtMTczLDggKzE3Miw3IEBAIGV4dGVybiB2b2lkIGluZGV4X3BhcmFs bGVscmVzY2FuKEluZGV4U2NhbkRlc2Mgc2Nhbik7CiBleHRlcm4gSW5kZXhTY2FuRGVzYyBp bmRleF9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gaGVhcHJlbCwKIAkJCQkJCQkJCQkJ ICBSZWxhdGlvbiBpbmRleHJlbCwgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzLAogCQkJCQkJ CQkJCQkgIFBhcmFsbGVsSW5kZXhTY2FuRGVzYyBwc2NhbiwKLQkJCQkJCQkJCQkJICBpbnQg cHJlZmV0Y2hfdGFyZ2V0LAotCQkJCQkJCQkJCQkgIGludCBwcmVmZXRjaF9yZXNldCk7CisJ CQkJCQkJCQkJCSAgaW50IHByZWZldGNoX21heCk7CiBleHRlcm4gSXRlbVBvaW50ZXIgaW5k ZXhfZ2V0bmV4dF90aWQoSW5kZXhTY2FuRGVzYyBzY2FuLAogCQkJCQkJCQkJIFNjYW5EaXJl Y3Rpb24gZGlyZWN0aW9uKTsKIHN0cnVjdCBUdXBsZVRhYmxlU2xvdDsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVs c2Nhbi5oCmluZGV4IGMxMTlmZTU5N2Q4Li4yMzFhMzBlY2M0NiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVs c2Nhbi5oCkBAIC0xMDcsNyArMTA3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhGZXRjaFRh YmxlRGF0YQogfSBJbmRleEZldGNoVGFibGVEYXRhOwogCiAvKgotICogRm9yd2FyZCBkZWNs YXJhdGlvbiwgZGVmaW5lZCBpbiBnZW5hbS5oLgorICogRm9yd2FyZCBkZWNsYXJhdGlvbnMs IGRlZmluZWQgaW4gZ2VuYW0uaC4KICAqLwogdHlwZWRlZiBzdHJ1Y3QgSW5kZXhQcmVmZXRj aERhdGEgSW5kZXhQcmVmZXRjaERhdGE7CiB0eXBlZGVmIHN0cnVjdCBJbmRleFByZWZldGNo RGF0YSAqSW5kZXhQcmVmZXRjaDsKQEAgLTE2OCw3ICsxNjgsNyBAQCB0eXBlZGVmIHN0cnVj dCBJbmRleFNjYW5EZXNjRGF0YQogCWJvb2wJICAgKnhzX29yZGVyYnludWxsczsKIAlib29s CQl4c19yZWNoZWNrb3JkZXJieTsKIAotCS8qIHByZWZldGNoaW5nIHN0YXRlIChvciBOVUxM IGlmIGRpc2FibGVkKSAqLworCS8qIHByZWZldGNoaW5nIHN0YXRlIChvciBOVUxMIGlmIGRp c2FibGVkIGZvciB0aGlzIHNjYW4pICovCiAJSW5kZXhQcmVmZXRjaERhdGEgKnhzX3ByZWZl dGNoOwogCiAJLyogcGFyYWxsZWwgaW5kZXggc2NhbiBpbmZvcm1hdGlvbiwgaW4gc2hhcmVk IG1lbW9yeSAqLwotLSAKMi40MS4wCgo= --------------a1GjYnA7k79ug88wdVKlHsRH Content-Type: text/x-patch; charset=UTF-8; name="0004-PoC-prefetch-for-IOS-20231012.patch" Content-Disposition: attachment; filename="0004-PoC-prefetch-for-IOS-20231012.patch" Content-Transfer-Encoding: base64 RnJvbSAwNDdlZGE0ZmEzOWU1YjM3YjViZWFhYTNmMjQxOTVhOGQ3YWE2YTVlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogU2F0LCAxNCBPY3QgMjAyMyAwMDoxMzoyNiArMDIwMApTdWJqZWN0OiBb UEFUQ0ggNC80XSBQb0MgcHJlZmV0Y2ggZm9yIElPUwoKLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaW5kZXgvaW5kZXhhbS5jICAgICAgIHwgMTQwICsrKysrKysrKysrKysrKysrKysrKyst CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jIHwgIDYzICsrKysr KysrKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oICAgICAgICAgICAgICAgfCAgIDIg KwogMyBmaWxlcyBjaGFuZ2VkLCAxOTUgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKaW5kZXggOGM1NmFjZmQ2MzguLjRh ZTRlODY3NzcwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhh bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKQEAgLTQ5LDYg KzQ5LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvcmVsc2Nhbi5oIgogI2luY2x1ZGUgImFjY2Vz cy90YWJsZWFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIKKyNpbmNsdWRlICJh Y2Nlc3MvdmlzaWJpbGl0eW1hcC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9pbmRleC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfYW1wcm9jLmgi CkBAIC0xMTEsNyArMTEyLDcgQEAgc3RhdGljIEluZGV4U2NhbkRlc2MgaW5kZXhfYmVnaW5z Y2FuX2ludGVybmFsKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAJCQkJCQkJCQkJCSAgUGFy YWxsZWxJbmRleFNjYW5EZXNjIHBzY2FuLCBib29sIHRlbXBfc25hcCwKIAkJCQkJCQkJCQkJ ICBpbnQgcHJlZmV0Y2hfbWF4KTsKIAotc3RhdGljIHZvaWQgaW5kZXhfcHJlZmV0Y2goSW5k ZXhTY2FuRGVzYyBzY2FuLCBJdGVtUG9pbnRlciB0aWQpOworc3RhdGljIHZvaWQgaW5kZXhf cHJlZmV0Y2goSW5kZXhTY2FuRGVzYyBzY2FuLCBJdGVtUG9pbnRlciB0aWQsIGJvb2wgc2tp cF9hbGxfdmlzaWJsZSk7CiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzU1LDcgKzc1Niw3IEBA IGluZGV4X2dldG5leHRfc2xvdChJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24g ZGlyZWN0aW9uLCBUdXBsZVRhYmxlU2xvdCAqCiAJCQkJICogRklYTUUgRm9yIElPUywgdGhp cyBzaG91bGQgcHJlZmV0Y2ggb25seSBwYWdlcyB0aGF0IGFyZSBub3QKIAkJCQkgKiBmdWxs eSB2aXNpYmxlLgogCQkJCSAqLwotCQkJCWluZGV4X3ByZWZldGNoKHNjYW4sIHRpZCk7CisJ CQkJaW5kZXhfcHJlZmV0Y2goc2NhbiwgdGlkLCBmYWxzZSk7CiAJCQl9CiAJCX0KIApAQCAt MTQzOSw3ICsxNDQwLDcgQEAgaW5kZXhfcHJlZmV0Y2hfYWRkX2NhY2hlKEluZGV4UHJlZmV0 Y2ggcHJlZmV0Y2gsIEJsb2NrTnVtYmVyIGJsb2NrKQogICogaW4gQlRTY2FuUG9zRGF0YS5u ZXh0UGFnZS4KICAqLwogc3RhdGljIHZvaWQKLWluZGV4X3ByZWZldGNoKEluZGV4U2NhbkRl c2Mgc2NhbiwgSXRlbVBvaW50ZXIgdGlkKQoraW5kZXhfcHJlZmV0Y2goSW5kZXhTY2FuRGVz YyBzY2FuLCBJdGVtUG9pbnRlciB0aWQsIGJvb2wgc2tpcF9hbGxfdmlzaWJsZSkKIHsKIAlJ bmRleFByZWZldGNoIHByZWZldGNoID0gc2Nhbi0+eHNfcHJlZmV0Y2g7CiAJQmxvY2tOdW1i ZXIgYmxvY2s7CkBAIC0xNDYyLDEwICsxNDYzLDM2IEBAIGluZGV4X3ByZWZldGNoKEluZGV4 U2NhbkRlc2Mgc2NhbiwgSXRlbVBvaW50ZXIgdGlkKQogCSAqLwogCUFzc2VydChzY2FuLT5o ZWFwUmVsYXRpb24pOwogCi0JcHJlZmV0Y2gtPmNvdW50QWxsKys7Ci0KIAlibG9jayA9IEl0 ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIodGlkKTsKIAorCS8qCisJICogV2hlbiBwcmVmZXRj aGluZyBmb3IgSU9TLCB3ZSB3YW50IHRvIG9ubHkgcHJlZmV0Y2ggcGFnZXMgdGhhdCBhcmUg bm90CisJICogbWFya2VkIGFzIGFsbC12aXNpYmxlIChiZWNhdXNlIG5vdCBmZXRjaGluZyBh bGwtdmlzaWJsZSBwYWdlcyBpcyB0aGUKKwkgKiBwb2ludCBvZiBJT1MpLgorCSAqCisJICog WFhYIFRoaXMgaXMgbm90IGdyZWF0LCBiZWNhdXNlIGl0IHJlbGVhc2VzIHRoZSBWTSBidWZm ZXIgZm9yIGVhY2ggVElECisJICogd2UgY29uc2lkZXIgdG8gcHJlZmV0Y2guIFdlIHNob3Vs ZCByZXVzZSB0aGF0IHNvbWVob3csIHNpbWlsYXIgdG8gdGhlCisJICogYWN0dWFsIElPUyBj b2RlLiBJZGVhbGx5LCB3ZSBzaG91bGQgdXNlIHRoZSBzYW1lIGlvc3NfVk1CdWZmZXIgKGlm CisJICogd2UgY2FuIHByb3BhZ2F0ZSBpdCBoZXJlKS4gT3IgYXQgbGVhc3QgZG8gaXQgZm9y IGEgYnVsayBvZiBwcmVmZXRjaGVzLAorCSAqIGFsdGhvdWdoIHRoYXQncyBub3QgdmVyeSB1 c2VmdWwgLSBhZnRlciB0aGUgcmFtcC11cCB3ZSB3aWxsIHByZWZldGNoCisJICogdGhlIHBh Z2VzIG9uZSBieSBvbmUgYW55d2F5LgorCSAqLworCWlmIChza2lwX2FsbF92aXNpYmxlKQor CXsKKwkJYm9vbAlhbGxfdmlzaWJsZTsKKwkJQnVmZmVyCXZtYnVmZmVyID0gSW52YWxpZEJ1 ZmZlcjsKKworCQlhbGxfdmlzaWJsZSA9IFZNX0FMTF9WSVNJQkxFKHNjYW4tPmhlYXBSZWxh dGlvbiwKKwkJCQkJCQkJCSBibG9jaywKKwkJCQkJCQkJCSAmdm1idWZmZXIpOworCisJCWlm ICh2bWJ1ZmZlciAhPSBJbnZhbGlkQnVmZmVyKQorCQkJUmVsZWFzZUJ1ZmZlcih2bWJ1ZmZl cik7CisKKwkJaWYgKGFsbF92aXNpYmxlKQorCQkJcmV0dXJuOworCX0KKwogCS8qCiAJICog RG8gbm90IHByZWZldGNoIHRoZSBzYW1lIGJsb2NrIG92ZXIgYW5kIG92ZXIgYWdhaW4sCiAJ ICoKQEAgLTE0ODAsNCArMTUwNywxMDcgQEAgaW5kZXhfcHJlZmV0Y2goSW5kZXhTY2FuRGVz YyBzY2FuLCBJdGVtUG9pbnRlciB0aWQpCiAJCVByZWZldGNoQnVmZmVyKHNjYW4tPmhlYXBS ZWxhdGlvbiwgTUFJTl9GT1JLTlVNLCBibG9jayk7CiAJCXBnQnVmZmVyVXNhZ2UuYmxrc19w cmVmZXRjaGVzKys7CiAJfQorCisJcHJlZmV0Y2gtPmNvdW50QWxsKys7Cit9CisKKy8qIC0t LS0tLS0tLS0tLS0tLS0KKyAqIGluZGV4X2dldG5leHRfdGlkX3ByZWZldGNoIC0gZ2V0IHRo ZSBuZXh0IFRJRCBmcm9tIGEgc2NhbgorICoKKyAqIFRoZSByZXN1bHQgaXMgdGhlIG5leHQg VElEIHNhdGlzZnlpbmcgdGhlIHNjYW4ga2V5cywKKyAqIG9yIE5VTEwgaWYgbm8gbW9yZSBt YXRjaGluZyB0dXBsZXMgZXhpc3QuCisgKgorICogRklYTUUgbm90IHN1cmUgdGhpcyBoYW5k bGVzIHhzX2hlYXBmZXRjaCBjb3JyZWN0bHkuCisgKiAtLS0tLS0tLS0tLS0tLS0tCisgKi8K K0l0ZW1Qb2ludGVyCitpbmRleF9nZXRuZXh0X3RpZF9wcmVmZXRjaChJbmRleFNjYW5EZXNj IHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uKQoreworCUluZGV4UHJlZmV0Y2ggcHJl ZmV0Y2ggPSBzY2FuLT54c19wcmVmZXRjaDsgLyogZm9yIGNvbnZlbmllbmNlICovCisKKwkv KgorCSAqIElmIHRoZSBwcmVmZXRjaGluZyBpcyBzdGlsbCBhY3RpdmUgKGkuZS4gZW5hYmxl ZCBhbmQgd2Ugc3RpbGwKKwkgKiBoYXZlbid0IGZpbmlzaGVkIHJlYWRpbmcgVElEcyBmcm9t IHRoZSBzY2FuKSwgcmVhZCBlbm91Z2ggVElEcyBpbnRvCisJICogdGhlIHF1ZXVlIHVudGls IHdlIGhpdCB0aGUgY3VycmVudCB0YXJnZXQuCisJICovCisJaWYgKFBSRUZFVENIX0FDVElW RShwcmVmZXRjaCkpCisJeworCQkvKgorCQkgKiBSYW1wIHVwIHRoZSBwcmVmZXRjaCBkaXN0 YW5jZSBpbmNyZW1lbnRhbGx5LgorCQkgKgorCQkgKiBJbnRlbnRpb25hbGx5IGRvbmUgYXMg Zmlyc3QsIGJlZm9yZSByZWFkaW5nIHRoZSBUSURzIGludG8gdGhlCisJCSAqIHF1ZXVlLCBz byB0aGF0IHRoZXJlJ3MgYWx3YXlzIGF0IGxlYXN0IG9uZSBpdGVtLiBPdGhlcndpc2Ugd2UK KwkJICogbWlnaHQgZ2V0IGludG8gYSBzaXR1YXRpb24gd2hlcmUgd2Ugc3RhcnQgd2l0aCB0 YXJnZXQ9MCBhbmQgbm8KKwkJICogVElEcyBsb2FkZWQuCisJCSAqLworCQlwcmVmZXRjaC0+ cHJlZmV0Y2hUYXJnZXQgPSBNaW4ocHJlZmV0Y2gtPnByZWZldGNoVGFyZ2V0ICsgMSwKKwkJ CQkJCQkJCSAgIHByZWZldGNoLT5wcmVmZXRjaE1heFRhcmdldCk7CisKKwkJLyoKKwkJICog Tm93IHJlYWQgVElEcyBmcm9tIHRoZSBpbmRleCB1bnRpbCB0aGUgcXVldWUgaXMgZnVsbCAo d2l0aAorCQkgKiByZXNwZWN0IHRvIHRoZSBjdXJyZW50IHByZWZldGNoIHRhcmdldCkuCisJ CSAqLworCQl3aGlsZSAoIVBSRUZFVENIX0ZVTEwocHJlZmV0Y2gpKQorCQl7CisJCQlJdGVt UG9pbnRlciB0aWQ7CisKKwkJCS8qIFRpbWUgdG8gZmV0Y2ggdGhlIG5leHQgVElEIGZyb20g dGhlIGluZGV4ICovCisJCQl0aWQgPSBpbmRleF9nZXRuZXh0X3RpZChzY2FuLCBkaXJlY3Rp b24pOworCisJCQkvKgorCQkJICogSWYgd2UncmUgb3V0IG9mIGluZGV4IGVudHJpZXMsIHdl J3JlIGRvbmUgKGFuZCB3ZSBtYXJrIHRoZQorCQkJICogdGhlIHByZWZldGNoZXIgYXMgaW5h Y3RpdmUpLgorCQkJICovCisJCQlpZiAodGlkID09IE5VTEwpCisJCQl7CisJCQkJcHJlZmV0 Y2gtPnByZWZldGNoRG9uZSA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCUFzc2Vy dChJdGVtUG9pbnRlckVxdWFscyh0aWQsICZzY2FuLT54c19oZWFwdGlkKSk7CisKKwkJCXBy ZWZldGNoLT5xdWV1ZUl0ZW1zW1BSRUZFVENIX1FVRVVFX0lOREVYKHByZWZldGNoLT5xdWV1 ZUVuZCldID0gKnRpZDsKKwkJCXByZWZldGNoLT5xdWV1ZUVuZCsrOworCisJCQkvKgorCQkJ ICogSXNzdWUgdGhlIGFjdHVhbGwgcHJlZmV0Y2ggcmVxdWVzdHMgZm9yIHRoZSBuZXcgVElE LgorCQkJICoKKwkJCSAqIFhYWCBpbmRleF9nZXRuZXh0X3RpZF9wcmVmZXRjaCBpcyBvbmx5 IGNhbGxlZCBmb3IgSU9TIChmb3Igbm93KSwKKwkJCSAqIHNvIHNraXAgcHJlZmV0Y2hpbmcg b2YgYWxsLXZpc2libGUgcGFnZXMuCisJCQkgKi8KKwkJCWluZGV4X3ByZWZldGNoKHNjYW4s IHRpZCwgdHJ1ZSk7CisJCX0KKwl9CisKKwkvKgorCSAqIFdpdGggcHJlZmV0Y2hpbmcgZW5h YmxlZCAoZXZlbiBpZiB3ZSBhbHJlYWR5IGZpbmlzaGVkIHJlYWRpbmcKKwkgKiBhbGwgVElE cyBmcm9tIHRoZSBpbmRleCBzY2FuKSwgd2UgbmVlZCB0byByZXR1cm4gYSBUSUQgZnJvbSB0 aGUKKwkgKiBxdWV1ZS4gT3RoZXJ3aXNlLCB3ZSBqdXN0IGdldCB0aGUgbmV4dCBUSUQgZnJv bSB0aGUgc2NhbgorCSAqIGRpcmVjdGx5LgorCSAqLworCWlmIChQUkVGRVRDSF9FTkFCTEVE KHByZWZldGNoKSkKKwl7CisJCS8qIERpZCB3ZSByZWFjaCB0aGUgZW5kIG9mIHRoZSBzY2Fu IGFuZCB0aGUgcXVldWUgaXMgZW1wdHk/ICovCisJCWlmIChQUkVGRVRDSF9ET05FKHByZWZl dGNoKSkKKwkJCXJldHVybiBOVUxMOworCisJCXNjYW4tPnhzX2hlYXB0aWQgPSBwcmVmZXRj aC0+cXVldWVJdGVtc1tQUkVGRVRDSF9RVUVVRV9JTkRFWChwcmVmZXRjaC0+cXVldWVJbmRl eCldOworCQlwcmVmZXRjaC0+cXVldWVJbmRleCsrOworCX0KKwllbHNlCQkJCS8qIG5vdCBw cmVmZXRjaGluZywganVzdCBkbyB0aGUgcmVndWxhciB3b3JrICAqLworCXsKKwkJSXRlbVBv aW50ZXIgdGlkOworCisJCS8qIFRpbWUgdG8gZmV0Y2ggdGhlIG5leHQgVElEIGZyb20gdGhl IGluZGV4ICovCisJCXRpZCA9IGluZGV4X2dldG5leHRfdGlkKHNjYW4sIGRpcmVjdGlvbik7 CisKKwkJLyogSWYgd2UncmUgb3V0IG9mIGluZGV4IGVudHJpZXMsIHdlJ3JlIGRvbmUgKi8K KwkJaWYgKHRpZCA9PSBOVUxMKQorCQkJcmV0dXJuIE5VTEw7CisKKwkJQXNzZXJ0KEl0ZW1Q b2ludGVyRXF1YWxzKHRpZCwgJnNjYW4tPnhzX2hlYXB0aWQpKTsKKwl9CisKKwkvKiBSZXR1 cm4gdGhlIFRJRCBvZiB0aGUgdHVwbGUgd2UgZm91bmQuICovCisJcmV0dXJuICZzY2FuLT54 c19oZWFwdGlkOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUlu ZGV4b25seXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2Fu LmMKaW5kZXggN2MyNzkxMzUwMmMuLjg1NWFmZDViYTc2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRl ICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAj aW5jbHVkZSAidXRpbHMvcmVsLmgiCi0KKyNpbmNsdWRlICJ1dGlscy9zcGNjYWNoZS5oIgog CiBzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKkluZGV4T25seU5leHQoSW5kZXhPbmx5U2NhblN0 YXRlICpub2RlKTsKIHN0YXRpYyB2b2lkIFN0b3JlSW5kZXhUdXBsZShUdXBsZVRhYmxlU2xv dCAqc2xvdCwgSW5kZXhUdXBsZSBpdHVwLApAQCAtNjUsNiArNjUsNyBAQCBJbmRleE9ubHlO ZXh0KEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSkKIAlJbmRleFNjYW5EZXNjIHNjYW5kZXNj OwogCVR1cGxlVGFibGVTbG90ICpzbG90OwogCUl0ZW1Qb2ludGVyIHRpZDsKKwlSZWxhdGlv bgloZWFwUmVsID0gbm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uOwogCiAJLyoKIAkgKiBl eHRyYWN0IG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBmcm9tIGluZGV4IHNjYW4gbm9kZQpAQCAt ODMsNiArODQsMjMgQEAgSW5kZXhPbmx5TmV4dChJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUp CiAKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CisJCWludAkJCXByZWZldGNoX21heDsK KworCQkvKgorCQkgKiBEZXRlcm1pbmUgbnVtYmVyIG9mIGhlYXAgcGFnZXMgdG8gcHJlZmV0 Y2ggZm9yIHRoaXMgaW5kZXguIFRoaXMgaXMKKwkJICogZXNzZW50aWFsbHkganVzdCBlZmZl Y3RpdmVfaW9fY29uY3VycmVuY3kgZm9yIHRoZSB0YWJsZSAob3IgdGhlCisJCSAqIHRhYmxl c3BhY2UgaXQncyBpbikuCisJCSAqCisJCSAqIFhYWCBTaG91bGQgdGhpcyBhbHNvIGxvb2sg YXQgcGxhbi5wbGFuX3Jvd3MgYW5kIG1heWJlIGNhcCB0aGUgdGFyZ2V0CisJCSAqIHRvIHRo YXQ/IFBvaW50bGVzcyB0byBwcmVmZXRjaCBtb3JlIHRoYW4gd2UgZXhwZWN0IHRvIHVzZS4g T3IgbWF5YmUKKwkJICoganVzdCByZXNldCB0byB0aGF0IHZhbHVlIGR1cmluZyBwcmVmZXRj aGluZywgYWZ0ZXIgcmVhZGluZyB0aGUgbmV4dAorCQkgKiBpbmRleCBwYWdlIChvciByYXRo ZXIgYWZ0ZXIgcmVzY2FuKT8KKwkJICoKKwkJICogWFhYIE1heWJlIHJlZHVjZSB0aGUgdmFs dWUgd2l0aCBwYXJhbGxlbCB3b3JrZXJzPworCQkgKi8KKwkJcHJlZmV0Y2hfbWF4ID0gTWlu KGdldF90YWJsZXNwYWNlX2lvX2NvbmN1cnJlbmN5KGhlYXBSZWwtPnJkX3JlbC0+cmVsdGFi bGVzcGFjZSksCisJCQkJCQkgICBub2RlLT5zcy5wcy5wbGFuLT5wbGFuX3Jvd3MpOworCiAJ CS8qCiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYgdGhlIGluZGV4IG9ubHkgc2NhbiBpcyBub3Qg cGFyYWxsZWwsIG9yIGlmIHdlJ3JlCiAJCSAqIHNlcmlhbGx5IGV4ZWN1dGluZyBhbiBpbmRl eCBvbmx5IHNjYW4gdGhhdCB3YXMgcGxhbm5lZCB0byBiZQpAQCAtMTAwLDcgKzExOCw3IEBA IEluZGV4T25seU5leHQoSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCQkJCQkJCQkgICBl c3RhdGUtPmVzX3NuYXBzaG90LAogCQkJCQkJCQkgICBub2RlLT5pb3NzX051bVNjYW5LZXlz LAogCQkJCQkJCQkgICBub2RlLT5pb3NzX051bU9yZGVyQnlLZXlzLAotCQkJCQkJCQkgICAw KTsJLyogbm8gcHJlZmV0Y2hpbmcgZm9yIElPUyAqLworCQkJCQkJCQkgICBwcmVmZXRjaF9t YXgpOwogCiAJCW5vZGUtPmlvc3NfU2NhbkRlc2MgPSBzY2FuZGVzYzsKIApAQCAtMTI0LDcg KzE0Miw3IEBAIEluZGV4T25seU5leHQoSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCS8q CiAJICogT0ssIG5vdyB0aGF0IHdlIGhhdmUgd2hhdCB3ZSBuZWVkLCBmZXRjaCB0aGUgbmV4 dCB0dXBsZS4KIAkgKi8KLQl3aGlsZSAoKHRpZCA9IGluZGV4X2dldG5leHRfdGlkKHNjYW5k ZXNjLCBkaXJlY3Rpb24pKSAhPSBOVUxMKQorCXdoaWxlICgodGlkID0gaW5kZXhfZ2V0bmV4 dF90aWRfcHJlZmV0Y2goc2NhbmRlc2MsIGRpcmVjdGlvbikpICE9IE5VTEwpCiAJewogCQli b29sCQl0dXBsZV9mcm9tX2hlYXAgPSBmYWxzZTsKIApAQCAtNjU0LDYgKzY3MiwyNCBAQCBF eGVjSW5kZXhPbmx5U2NhbkluaXRpYWxpemVEU00oSW5kZXhPbmx5U2NhblN0YXRlICpub2Rl LAogewogCUVTdGF0ZQkgICAqZXN0YXRlID0gbm9kZS0+c3MucHMuc3RhdGU7CiAJUGFyYWxs ZWxJbmRleFNjYW5EZXNjIHBpc2NhbjsKKwlSZWxhdGlvbgloZWFwUmVsID0gbm9kZS0+c3Mu c3NfY3VycmVudFJlbGF0aW9uOworCWludAkJCXByZWZldGNoX21heDsKKworCS8qCisJICog RGV0ZXJtaW5lIG51bWJlciBvZiBoZWFwIHBhZ2VzIHRvIHByZWZldGNoIGZvciB0aGlzIGlu ZGV4LiBUaGlzIGlzCisJICogZXNzZW50aWFsbHkganVzdCBlZmZlY3RpdmVfaW9fY29uY3Vy cmVuY3kgZm9yIHRoZSB0YWJsZSAob3IgdGhlCisJICogdGFibGVzcGFjZSBpdCdzIGluKS4K KwkgKgorCSAqIFhYWCBTaG91bGQgdGhpcyBhbHNvIGxvb2sgYXQgcGxhbi5wbGFuX3Jvd3Mg YW5kIG1heWJlIGNhcCB0aGUgdGFyZ2V0CisJICogdG8gdGhhdD8gUG9pbnRsZXNzIHRvIHBy ZWZldGNoIG1vcmUgdGhhbiB3ZSBleHBlY3QgdG8gdXNlLiBPciBtYXliZQorCSAqIGp1c3Qg cmVzZXQgdG8gdGhhdCB2YWx1ZSBkdXJpbmcgcHJlZmV0Y2hpbmcsIGFmdGVyIHJlYWRpbmcg dGhlIG5leHQKKwkgKiBpbmRleCBwYWdlIChvciByYXRoZXIgYWZ0ZXIgcmVzY2FuKT8KKwkg KgorCSAqIFhYWCBNYXliZSByZWR1Y2UgdGhlIHZhbHVlIHdpdGggcGFyYWxsZWwgd29ya2Vy cz8KKwkgKi8KKworCXByZWZldGNoX21heCA9IE1pbihnZXRfdGFibGVzcGFjZV9pb19jb25j dXJyZW5jeShoZWFwUmVsLT5yZF9yZWwtPnJlbHRhYmxlc3BhY2UpLAorCQkJCQkgICBub2Rl LT5zcy5wcy5wbGFuLT5wbGFuX3Jvd3MpOwogCiAJcGlzY2FuID0gc2htX3RvY19hbGxvY2F0 ZShwY3h0LT50b2MsIG5vZGUtPmlvc3NfUHNjYW5MZW4pOwogCWluZGV4X3BhcmFsbGVsc2Nh bl9pbml0aWFsaXplKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKQEAgLTY2Nyw3ICs3 MDMsNyBAQCBFeGVjSW5kZXhPbmx5U2NhbkluaXRpYWxpemVEU00oSW5kZXhPbmx5U2NhblN0 YXRlICpub2RlLAogCQkJCQkJCQkgbm9kZS0+aW9zc19OdW1TY2FuS2V5cywKIAkJCQkJCQkJ IG5vZGUtPmlvc3NfTnVtT3JkZXJCeUtleXMsCiAJCQkJCQkJCSBwaXNjYW4sCi0JCQkJCQkJ CSAwKTsJLyogbm8gcHJlZmV0Y2hpbmcgZm9yIElPUyAqLworCQkJCQkJCQkgcHJlZmV0Y2hf bWF4KTsKIAlub2RlLT5pb3NzX1NjYW5EZXNjLT54c193YW50X2l0dXAgPSB0cnVlOwogCW5v ZGUtPmlvc3NfVk1CdWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCkBAIC03MDUsNiArNzQxLDIz IEBAIEV4ZWNJbmRleE9ubHlTY2FuSW5pdGlhbGl6ZVdvcmtlcihJbmRleE9ubHlTY2FuU3Rh dGUgKm5vZGUsCiAJCQkJCQkJCSAgUGFyYWxsZWxXb3JrZXJDb250ZXh0ICpwd2N4dCkKIHsK IAlQYXJhbGxlbEluZGV4U2NhbkRlc2MgcGlzY2FuOworCVJlbGF0aW9uCWhlYXBSZWwgPSBu b2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb247CisJaW50CQkJcHJlZmV0Y2hfbWF4OworCisJ LyoKKwkgKiBEZXRlcm1pbmUgbnVtYmVyIG9mIGhlYXAgcGFnZXMgdG8gcHJlZmV0Y2ggZm9y IHRoaXMgaW5kZXguIFRoaXMgaXMKKwkgKiBlc3NlbnRpYWxseSBqdXN0IGVmZmVjdGl2ZV9p b19jb25jdXJyZW5jeSBmb3IgdGhlIHRhYmxlIChvciB0aGUKKwkgKiB0YWJsZXNwYWNlIGl0 J3MgaW4pLgorCSAqCisJICogWFhYIFNob3VsZCB0aGlzIGFsc28gbG9vayBhdCBwbGFuLnBs YW5fcm93cyBhbmQgbWF5YmUgY2FwIHRoZSB0YXJnZXQKKwkgKiB0byB0aGF0PyBQb2ludGxl c3MgdG8gcHJlZmV0Y2ggbW9yZSB0aGFuIHdlIGV4cGVjdCB0byB1c2UuIE9yIG1heWJlCisJ ICoganVzdCByZXNldCB0byB0aGF0IHZhbHVlIGR1cmluZyBwcmVmZXRjaGluZywgYWZ0ZXIg cmVhZGluZyB0aGUgbmV4dAorCSAqIGluZGV4IHBhZ2UgKG9yIHJhdGhlciBhZnRlciByZXNj YW4pPworCSAqCisJICogWFhYIE1heWJlIHJlZHVjZSB0aGUgdmFsdWUgd2l0aCBwYXJhbGxl bCB3b3JrZXJzPworCSAqLworCXByZWZldGNoX21heCA9IE1pbihnZXRfdGFibGVzcGFjZV9p b19jb25jdXJyZW5jeShoZWFwUmVsLT5yZF9yZWwtPnJlbHRhYmxlc3BhY2UpLAorCQkJCQkg ICBub2RlLT5zcy5wcy5wbGFuLT5wbGFuX3Jvd3MpOwogCiAJcGlzY2FuID0gc2htX3RvY19s b29rdXAocHdjeHQtPnRvYywgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2RlX2lkLCBmYWxz ZSk7CiAJbm9kZS0+aW9zc19TY2FuRGVzYyA9CkBAIC03MTMsNyArNzY2LDcgQEAgRXhlY0lu ZGV4T25seVNjYW5Jbml0aWFsaXplV29ya2VyKEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSwK IAkJCQkJCQkJIG5vZGUtPmlvc3NfTnVtU2NhbktleXMsCiAJCQkJCQkJCSBub2RlLT5pb3Nz X051bU9yZGVyQnlLZXlzLAogCQkJCQkJCQkgcGlzY2FuLAotCQkJCQkJCQkgMCk7CS8qIG5v IHByZWZldGNoaW5nIGZvciBJT1MgKi8KKwkJCQkJCQkJIHByZWZldGNoX21heCk7CiAJbm9k ZS0+aW9zc19TY2FuRGVzYy0+eHNfd2FudF9pdHVwID0gdHJ1ZTsKIAogCS8qCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9n ZW5hbS5oCmluZGV4IGNlYjYyNzliMGIwLi42ZTkyNzU4Y2VkNSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFt LmgKQEAgLTE3NSw2ICsxNzUsOCBAQCBleHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9iZWdp bnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gaGVhcHJlbCwKIAkJCQkJCQkJCQkJICBpbnQgcHJl ZmV0Y2hfbWF4KTsKIGV4dGVybiBJdGVtUG9pbnRlciBpbmRleF9nZXRuZXh0X3RpZChJbmRl eFNjYW5EZXNjIHNjYW4sCiAJCQkJCQkJCQkgU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24pOwor ZXh0ZXJuIEl0ZW1Qb2ludGVyIGluZGV4X2dldG5leHRfdGlkX3ByZWZldGNoKEluZGV4U2Nh bkRlc2Mgc2NhbiwKKwkJCQkJCQkJCQkJICBTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbik7CiBz dHJ1Y3QgVHVwbGVUYWJsZVNsb3Q7CiBleHRlcm4gYm9vbCBpbmRleF9mZXRjaF9oZWFwKElu ZGV4U2NhbkRlc2Mgc2Nhbiwgc3RydWN0IFR1cGxlVGFibGVTbG90ICpzbG90KTsKIGV4dGVy biBib29sIGluZGV4X2dldG5leHRfc2xvdChJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJl Y3Rpb24gZGlyZWN0aW9uLAotLSAKMi40MS4wCgo= --------------a1GjYnA7k79ug88wdVKlHsRH--