From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id SLe3JWpcv2LsLwAAbAwnHQ (envelope-from ) for ; Fri, 01 Jul 2022 22:43:22 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id mIa8JGpcv2LkcgAAG6o9tA (envelope-from ) for ; Fri, 01 Jul 2022 22:43:22 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 0147E40393 for ; Fri, 1 Jul 2022 22:43:21 +0200 (CEST) Received: from localhost ([::1]:47316 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1o7NTz-0007tf-NS for larch@yhetil.org; Fri, 01 Jul 2022 16:43:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42086) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o7NTj-0007tI-DB for help-guix@gnu.org; Fri, 01 Jul 2022 16:43:03 -0400 Received: from mail-40133.protonmail.ch ([185.70.40.133]:44650) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o7NTc-0007rI-1M; Fri, 01 Jul 2022 16:43:03 -0400 Date: Fri, 01 Jul 2022 20:42:38 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1656708168; x=1656967368; bh=jI0MH/tMWh24bzBTfe2+2aGTFguuhenN6ARiqw5o0QI=; h=Date:To:From:Cc:Reply-To:Subject:Message-ID:In-Reply-To: References:Feedback-ID:From:To:Cc:Date:Subject:Reply-To: Feedback-ID:Message-ID; b=G6msY9hYMR8ttgcrnWm3leRsVpYFDAvxNANiHw6Q8GWUboblT3xEdWcowhLBYag/I Nf/mXUajLYFST8Lo2um8GEsPXuYP47t+oi+eVamJWwbV5cAeoLiV66ZjCPmgA+56UM YPP66bq0OSBeE0roy+WxjPzAiiBUFNuZEcFtfXAiN7wbNn5IPRgHecYcZezsB3xyIb 2+OkXu+zCz2OkhT0SfHL0LDCADdClAXP2otEqVBBu7Pq5CxKmjZB3Ga7JB0BmsvIFw GpkI7xHIZSCHz2QS2AWsgvNggWQH7uioS5lRWA/LEZQJNIxVySRLlr85KJ+PS7x+u5 MkRusAoFFJmXg== To: Vagrant Cascadian From: phodina Cc: help-guix , Mathieu Othacehe , "janneke@gnu.org" Subject: Re: linux and u-boot for pinenote-rk3568 Message-ID: In-Reply-To: <874k022ct8.fsf@contorta> References: <874k022ct8.fsf@contorta> Feedback-ID: 14143818:user:proton MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_qPVRHYZdf1KbGW55q1iGrB6QbWsYuO5kogVUydE0" Received-SPF: pass client-ip=185.70.40.133; envelope-from=phodina@protonmail.com; helo=mail-40133.protonmail.ch X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: help-guix@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: phodina Errors-To: help-guix-bounces+larch=yhetil.org@gnu.org Sender: "Help-Guix" X-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1656708201; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=jI0MH/tMWh24bzBTfe2+2aGTFguuhenN6ARiqw5o0QI=; b=ifOrndxq8LN6uluOo3xArX3JuXCCIsCZ4Tf+QSg0JJfyDDV/WVKj6RTJB1dg9jhnp7j/5z /f2d1qnLivzMgy4hdaU84FQ1JCjdKxADgbbFFDT3JcTO0SZys20fLaUmiGbRuwx5eLsYCc u/O/cHEH8fKkqceuKPFohiaVAZN1uhLwBUx4NoSMKT7Kb5oi789LtHJ6TYGeDgjhE8zT5w w1kiyAWo1VjY+CkwkWJcO0zV70vQUugeef5DK/g9aim+RP+9SLnfNT2wS5r0uiLNyW6AJo E0Ik0UyeySKkhuTWo4je3Si5B/3d67s1J7swzMtTCwOf4lGOUZYLgo32eD694w== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1656708201; a=rsa-sha256; cv=none; b=dmrLCs/sBl4bvXvmG6PWs0xRVo5on7A+VoNMKmSZCvyL/4tNBEHlBF7HHGEB/leLHUxO50 kB3qIFOtYCCFMh60fhrg3gs+bOX9TDAEZc3I4tXDmVYIZ4geIPn1BzHeAubL8T5GUKTa1k 2S7Ce8+h85B/FisfQUjdSlWtSPJEe82eK/0RGkfv+SBS6tPOgY+JhC72j3f9+an6q95R2n ZouiIxDUi49kni+Pbc3J4jElqbKN+Pd6WkmzARMlqzDBIqWrBTPjEeesjTDXUsuOnH5OD+ PmgTZA8r/9UoCIimwDwp6jHQ2ayxab3KbxeJqzsBbDl9CIvM2p0Rl5ibsTGHSQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=protonmail.com header.s=protonmail3 header.b=G6msY9hY; dmarc=pass (policy=quarantine) header.from=protonmail.com; spf=pass (aspmx1.migadu.com: domain of "help-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="help-guix-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -1.35 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=protonmail.com header.s=protonmail3 header.b=G6msY9hY; dmarc=pass (policy=quarantine) header.from=protonmail.com; spf=pass (aspmx1.migadu.com: domain of "help-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="help-guix-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 0147E40393 X-Spam-Score: -1.35 X-Migadu-Scanner: scn1.migadu.com X-TUID: OVgWFOLqXyzi This is a multi-part message in MIME format. --b1_qPVRHYZdf1KbGW55q1iGrB6QbWsYuO5kogVUydE0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi! > On 2022-06-30, phodina via wrote: > > > I'm attempting to build the Linux kernel and u-boot for ARM64 target - > > eink tablet. > > > I can infer what you're talking about from the later patches, but it > would be good to mention what specific hardware you're talking about up > front and/or in the subject. :) Sorry for the confusion. I should have stated it's Pinenote eink tablet dir= ectly. > > > Unfotutnately the patches are not yet in the upstream so I had to > > tweak little bit in the gnu/packages/linux.scm and > > gnu/bootloader/bootloaders.scm files. > > > Had to do similar things early on to get the pinebook-pro support > available in guix before it was fully upstream... wheee! Thanks! I do have Guix running on Pinebook Pro laptop so I'd CC you in the = help :-) > > > A partial review with comments inline follows... > > > Subject: [PATCH 4/7] gnu: Provide private implementation with selection= of the > > u-boot package. > > Sent with Proton Mail secure email. ------- Original Message ------- On Thursday, June 30th, 2022 at 9:04 PM, Vagrant Cascadian wrote: > > * gnu/packages/bootloaders.scm: Provide private implementation of > > make-u-boot-package and make-u-boot-sunxi64-package so that the public = API > > does not change. The private allows to specify the u-boot package. > > > This seems unecessarily complicated; you could just use a different > source for the eventual u-boot-pinenote* packages rather than renaming > existing functions and/or adding new ones... see what > u-boot-nintendo-nes-classic-edition does, mentioned below... Thanks for the hint. I had a look and reimplemented the u-boot. No there is= no need to provide private implementation! > > From 44b1385e6dbcc79bafebddc7699ed302fcb5fe91 Mon Sep 17 00:00:00 2001 > > From: Petr Hodina phodina@protonmail.com > > Date: Thu, 30 Jun 2022 11:20:55 +0200 > > Subject: [PATCH 6/7] gnu: Add install-pinenote-rk3568-u-boot and > > u-boot-pinenote-rk3568-bootloader. > > > > * gnu/bootloader/u-boot.scm (install-pinenote-rk3568-u-boot, > > u-boot-pinenote-rk3568-bootloader): New variables. > > > The patch order is wrong, this is patch 6/7 followed by patch 5/7 > ... sometimes the order doesn't matter, but this order was actually a > bit confusing for me. Please submit patches in the appropriate order. :) This was done by mistake as I build the system image in the last step so th= e order didn't matter. It's fixed in the new patch set. > > > diff --git a/gnu/bootloader/u-boot.scm b/gnu/bootloader/u-boot.scm > > index 6cad33b741..4410cc497a 100644 > > --- a/gnu/bootloader/u-boot.scm > > +++ b/gnu/bootloader/u-boot.scm > > ... > > > @@ -127,6 +129,15 @@ (define install-rockpro64-rk3399-u-boot > > > > (define install-pinebook-pro-rk3399-u-boot install-rockpro64-rk3399-u-b= oot) > > > > +;; TODO: Supply correct offsets > > +(define install-pinenote-rk3568-u-boot > > + #~(lambda (bootloader root-index image) > > + (let ((idb (string-append bootloader "/libexec/idbloader.img")) > > + (u-boot (string-append bootloader "/libexec/u-boot.itb"))) > > + (write-file-on-device idb (stat:size (stat idb)) > > + image (* 64 512)) > > + (write-file-on-device u-boot (stat:size (stat u-boot)) > > + image (* 16384 512))))) > > > Does it really use different offsets than other rockchip platforms, or > is that just a note to confirm if it does? The TODO note is here more as a warning as I do put it there as a check. Slight issue here is that the ATF is not released so even though I have gon= e through some patches form downstream and applied them on the upstream I t= hink it won't work. Prefereably I'd like to use it on Quartz64 board which I now use as Guix Aa= rch64 native build machine before flashing to the Pinenote. > > > From 4d53d2bdb8526f72ed6cd3183ff2a2141990c900 Mon Sep 17 00:00:00 2001 > > From: Petr Hodina phodina@protonmail.com > > Date: Thu, 30 Jun 2022 11:19:33 +0200 > > Subject: [PATCH 5/7] gnu: Add u-boot-pinenote-rk3568. > > > > * gnu/packages/bootloaders.scm (u-boot-pinenote-rk3568): New variable. > > > > diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.sc= m > > index cab97852f1..9c266b7bed 100644 > > --- a/gnu/packages/bootloaders.scm > > +++ b/gnu/packages/bootloaders.scm > > @@ -834,6 +834,9 @@ (define-public u-boot-pine64-plus > > (define-public u-boot-pine64-lts > > (make-u-boot-sunxi64-package "pine64-lts" "aarch64-linux-gnu")) > > > > +(define-public u-boot-pinenote-rk3568 > > + (make-u-boot-sunxi64-package-priv "pinenote" "aarch64-linux-gnu" u-bo= ot-pinenote)) > > + > > (define-public u-boot-pinebook > > (let ((base (make-u-boot-sunxi64-package "pinebook" "aarch64-linux-gnu"= ))) > > (package > > > Definitely not u-boot-sunxi64-package. Probably more similar to the > u-boot-pinebook-pro-rk3399 or u-boot-rock64-rk3328, which i think use > the standard make-u-boot-package. I've applied the change. Haven't built the downstream u-boot yet but I'll c= heck the dump from Pinenote. > > For using an entirely different source repository for a specific > package, see the u-boot-nintendo-nes-classic-edition and how that uses a > different source, e.g. > > (define-public u-boot-nintendo-nes-classic-edition > (let ((base (make-u-boot-package "Nintendo_NES_Classic_Edition" > "arm-linux-gnueabihf"))) > (package > (inherit base) > ;; Starting with 2019.01, FEL doesn't work anymore on A33. > (version "2018.11") > (source (origin > ... > > > From a6499c4c384dd3c0e06968cc6987da0e47af6290 Mon Sep 17 00:00:00 2001 > > From: Petr Hodina phodina@protonmail.com > > Date: Thu, 30 Jun 2022 10:12:39 +0200 > > Subject: [PATCH 1/7] gnu: Add linux-libre-arm64-pinenote. > > > > * gnu/packages/linux.scm (linux-libre-arm64-pinenote): New variable. > > * gnu/local.mk: Add patches. > > * linux-libre-arm64-pinenote-battery-level.patch: New file. > > * linux-libre-arm64-pinenote-defconfig.patch: New file. > > * linux-libre-arm64-pinenote-dtsi.patch: New file. > > * linux-libre-arm64-pinenote-ebc-patches.patch: New file. > > * linux-libre-arm64-pinenote-touchscreen-1.patch: New file. > > * linux-libre-arm64-pinenote-touchscreen-2.patch: New file. > > * linux-libre-arm64-rockchip-add-hdmi-sound.patch: New file. > > > I'm going to make some comments on this patch, but I get plenty confused > with patches in gnu/packages/linux.scm as it can be a little more > complicated than your typical packaging, so any other reviewers really > ought to jump in too! :) I've removed some patches as they are not for this kernel release and will = need more polishing. > > > diff --git a/gnu/local.mk b/gnu/local.mk > > index 353b91cfd2..c19f1f418b 100644 > > --- a/gnu/local.mk > > +++ b/gnu/local.mk > > @@ -1444,6 +1444,13 @@ dist_patch_DATA =3D \ > > %D%/packages/patches/linbox-fix-pkgconfig.patch \ > > %D%/packages/patches/linphone-desktop-without-sdk.patch \ > > %D%/packages/patches/linux-libre-support-for-Pinebook-Pro.patch \ > > + %D%/packages/patches/linux-libre-arm64-pinenote-touchscreen-1.patch \ > > + %D%/packages/patches/linux-libre-arm64-pinenote-touchscreen-2.patch \ > > + %D%/packages/patches/linux-libre-arm64-pinenote-battery-level.patch \ > > + %D%/packages/patches/linux-libre-arm64-rockchip-add-hdmi-sound.patch = \ > > + %D%/packages/patches/linux-libre-arm64-pinenote-defconfig.patch \ > > + %D%/packages/patches/linux-libre-arm64-pinenote-dtsi.patch \ > > > whitespace inconsistancy on the previous few lines... It was meant more for the process of porting rather than packing it into Gu= ix atm so there inconsistencies are there unfortunately now. > > > diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm > > index 8f7b4f4f5b..bae8ffb959 100644 > > --- a/gnu/packages/linux.scm > > +++ b/gnu/packages/linux.scm > > @@ -349,6 +349,12 @@ (define (%upstream-linux-source version hash) > > "linux-" version ".tar.xz")) > > (sha256 hash))) > > > > +(define (%pinenote-linux-source version hash) > > + (origin > > + (method url-fetch) > > + (uri (string-append "https://github.com/phodina/linux-pinenote/tarbal= l/" version)) > > + (sha256 hash))) > > + > > > I think tarballs from github are generally discouraged; although with > the kernel that can be quite a large git checkout... but... > > > ;; The current "stable" kernels. That is, the most recently released ma= jor > > ;; versions that are still supported upstream. The tarball is smaller than the git checkout. Now there are defines for the= exact kernel version. > > > > @@ -367,6 +373,14 @@ (define-public linux-libre-5.17-pristine-source > > (%upstream-linux-source version hash) > > deblob-scripts-5.17))) > > > > +(define-public linux-libre-arm64-pinenote-pristine-source > > + (let ((version linux-libre-5.17-version) > > + (commit "c91a48e028fe1f6a0e5748fd87c446aa7e31811b") > > + (hash (base32 "1xwyvvps1r3zl1n9szlgrj8ylw5sgj6fr52fig9f2cc6ai331bbn")= )) > > + (make-linux-libre-source version > > + (%pinenote-linux-source commit hash) > > + deblob-scripts-5.17))) > > + > > > Oh, wait, you do pull from git? Is the tarball used, or the git > checkout? Seems like you shouldn't need both. I do download the tarball just specify the exact commit rather than to say = the name of branch as that can change and break the build due to sha has mi= smatch. > > > +(define-public linux-libre-arm64-pinenote-source > > + (source-with-patches linux-libre-arm64-pinenote-pristine-source > > + (list %boot-logo-patch > > + %linux-libre-arm-export-__sync_icache_dcache-patch > > + (search-patch > > +"linux-libre-arm64-pinenote-touchscreen-1.patch") > > + (search-patch > > +"linux-libre-arm64-pinenote-touchscreen-2.patch") > > + (search-patch > > +"linux-libre-arm64-pinenote-battery-level.patch") > > + (search-patch > > +"linux-libre-arm64-rockchip-add-hdmi-sound.patch") > > + (search-patch > > +"linux-libre-arm64-pinenote-defconfig.patch") > > + (search-patch > > +"linux-libre-arm64-pinenote-dtsi.patch") > > + (search-patch > > +"linux-libre-arm64-pinenote-ebc-patches.patch")))) > > + > > > Maybe use: > > (search-patches "A.patch" > "B.patch" > ... > "N.patch") > > Though you may have to append two lists together for that to work. As to > how... ask someone who understands guile. :) That's what I attempted but failed. Now it's fixed. > > Also wondering if there is a branch with all the patches you need > already applied, since you're using a separate source origin already... Well, I could apply them to the kernel fork. I'll open the issue on the git= hub to discuss them. > > > +(define-public linux-libre-arm64-pinenote > > + (make-linux-libre* linux-libre-version > > + linux-libre-gnu-revision > > + linux-libre-arm64-pinenote-source > > + '("aarch64-linux") > > + #:defconfig "pinenote_defconfig" > > + #:extra-options > > + %default-extra-linux-options)) > > > You might want to not assume to use the same versions as > (linux-libre-version, linux-libre-gnu-revision), as they might change > out from under you... those were recently updated to 5.18.x ... instead > just pick the versions relevent to the upstream source. > > > Hope that's helpful, good luck and thanks for working on adding support > for this very interesting platform! Thanks Vagrant for the support and help. It now builds the system image. It= 's still not something that will work but we're getting there. In the original email I attached the build log. The deblobing the kernel so= urces still fails and therefore I commented out now the list of the blobs. = However, I'd like remove this modification. I assume it fails due to some a= ssembly file which is neccessary for the eink driver to work. Is there a way how to exclude it? It's in assembly so the source code is th= ere (not machine code but also not that readable, there are some attempts t= o replace it). Also it's little bit pointless to remove it if the device wi= ll loose the display :-D Also how do I specify the system image format so I can that I get the bootl= oader, kernel, initramfs and the rootfs on separate partitions that can be = later flashed to the board using the rkdeveloptool? ---- Petr --b1_qPVRHYZdf1KbGW55q1iGrB6QbWsYuO5kogVUydE0 Content-Type: text/x-patch; name=v2-0003-gnu-Add-u-boot-pinenote-rk3568.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0003-gnu-Add-u-boot-pinenote-rk3568.patch RnJvbSA1YjdjZDg2ZGQyZmI4MmFmN2EwMWMwMGM2ODZmYmM3NmUwNjIyZDlhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRyIEhvZGluYSA8cGhvZGluYUBwcm90b25tYWlsLmNvbT4K RGF0ZTogRnJpLCAxIEp1bCAyMDIyIDEyOjE0OjE4ICswMjAwClN1YmplY3Q6IFtQQVRDSCB2MiAz LzVdIGdudTogQWRkIHUtYm9vdC1waW5lbm90ZS1yazM1NjguCgoqIGdudS9wYWNrYWdlcy9ib290 bG9hZGVycy5zY20gKHUtYm9vdC1waW5lbm90ZS1yazM1NjgpOiBOZXcgdmFyaWFibGUuCgpkaWZm IC0tZ2l0IGEvZ251L3BhY2thZ2VzL2Jvb3Rsb2FkZXJzLnNjbSBiL2dudS9wYWNrYWdlcy9ib290 bG9hZGVycy5zY20KaW5kZXggOWY1ZTI2ZmQyOC4uOGQ1MGE3ZTQ4MSAxMDA2NDQKLS0tIGEvZ251 L3BhY2thZ2VzL2Jvb3Rsb2FkZXJzLnNjbQorKysgYi9nbnUvcGFja2FnZXMvYm9vdGxvYWRlcnMu c2NtCkBAIC04MTQsNiArODE0LDIxIEBAIChkZWZpbmUtcHVibGljIHUtYm9vdC1waW5lNjQtcGx1 cwogKGRlZmluZS1wdWJsaWMgdS1ib290LXBpbmU2NC1sdHMKICAgKG1ha2UtdS1ib290LXN1bnhp NjQtcGFja2FnZSAicGluZTY0LWx0cyIgImFhcmNoNjQtbGludXgtZ251IikpCiAKKyhkZWZpbmUt cHVibGljIHUtYm9vdC1waW5lbm90ZS1yazM1NjgKKyAgKGxldCAoKGJhc2UgKG1ha2UtdS1ib290 LXBhY2thZ2UgInBpbmVub3RlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi YWFyY2g2NC1saW51eC1nbnUiKSkpCisgICAgKHBhY2thZ2UKKyAgICAgIChpbmhlcml0IGJhc2Up CisgICAgICAodmVyc2lvbiAiMjAyMi4wNyIpCisgICAgICAoc291cmNlIChvcmlnaW4KKyAgICAg ICAgICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICAgICAgICAodXJpIChnaXQt cmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAodXJsICJodHRwczovL2dpdGxhYi5jb20vcGhv ZGluYS91LWJvb3QtcXVhcnR6NjQiKQorICAgICAgICAgICAgICAgICAgKGNvbW1pdCAicXVhcnR6 NjQiKSkpCisgICAgICAgICAgICAgICAgKHNoYTI1NgorICAgICAgICAgICAgICAgICAoYmFzZTMy CisgICAgICAgICAgICAgICAgICAiMmwxdzEzZHpuajB6MWlicXYyZDZsangybWExZ25mNXg1YXkz ZHFrcXd4cjY3NTBuYnEzOCIpKSkpKSkpCisKIChkZWZpbmUtcHVibGljIHUtYm9vdC1waW5lYm9v awogICAobGV0ICgoYmFzZSAobWFrZS11LWJvb3Qtc3VueGk2NC1wYWNrYWdlICJwaW5lYm9vayIg ImFhcmNoNjQtbGludXgtZ251IikpKQogICAgIChwYWNrYWdlCi0tIAoyLjM2LjEKCg== --b1_qPVRHYZdf1KbGW55q1iGrB6QbWsYuO5kogVUydE0 Content-Type: text/x-patch; name=v2-0005-gnu-Add-image-for-pinenote.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0005-gnu-Add-image-for-pinenote.patch RnJvbSBkOWU3NDcxMDBkMjllNzE4M2QxOGQxMDE2YjM1YWQ1YjdjM2U1NGQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRyIEhvZGluYSA8cGhvZGluYUBwcm90b25tYWlsLmNvbT4K RGF0ZTogVGh1LCAzMCBKdW4gMjAyMiAxMToyMjowNSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjIg NS81XSBnbnU6IEFkZCBpbWFnZSBmb3IgcGluZW5vdGUuCgoqIGdudS9zeXN0ZW0vaW1hZ2VzL3Bp bmVub3RlLnNjbTogTmV3IGZpbGUuCgpkaWZmIC0tZ2l0IGEvZ251L3N5c3RlbS9pbWFnZXMvcGlu ZW5vdGUuc2NtIGIvZ251L3N5c3RlbS9pbWFnZXMvcGluZW5vdGUuc2NtCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmZlMDIxZDk2OGUKLS0tIC9kZXYvbnVsbAorKysgYi9n bnUvc3lzdGVtL2ltYWdlcy9waW5lbm90ZS5zY20KQEAgLTAsMCArMSw3NCBAQAorOzs7IEdOVSBH dWl4IC0tLSBGdW5jdGlvbmFsIHBhY2thZ2UgbWFuYWdlbWVudCBmb3IgR05VCis7OzsgQ29weXJp Z2h0IMKpIDIwMjIgUGV0ciBIb2RpbmEgPHBob2RpbmFAcHJvdG9ubWFpbC5jb20+Cis7OzsKKzs7 OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgR3VpeC4KKzs7OworOzs7IEdOVSBHdWl4IGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKzs7 OyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorOzs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdAorOzs7IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKzs7OworOzs7IEdOVSBHdWl4IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorOzs7IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKzs7OyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCis7OzsgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKzs7OworOzs7IFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCis7 OzsgYWxvbmcgd2l0aCBHTlUgR3VpeC4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKworKGRlZmluZS1tb2R1bGUgKGdudSBzeXN0ZW0gaW1hZ2VzIHBpbmVub3Rl KQorICAjOnVzZS1tb2R1bGUgKGdudSBib290bG9hZGVyKQorICAjOnVzZS1tb2R1bGUgKGdudSBi b290bG9hZGVyIHUtYm9vdCkKKyAgIzp1c2UtbW9kdWxlIChnbnUgaW1hZ2UpCisgICM6dXNlLW1v ZHVsZSAoZ251IHBhY2thZ2VzIGxpbnV4KQorICAjOnVzZS1tb2R1bGUgKGd1aXggcGxhdGZvcm1z IGFybSkKKyAgIzp1c2UtbW9kdWxlIChnbnUgc2VydmljZXMpCisgICM6dXNlLW1vZHVsZSAoZ251 IHNlcnZpY2VzIGJhc2UpCisgICM6dXNlLW1vZHVsZSAoZ251IHN5c3RlbSkKKyAgIzp1c2UtbW9k dWxlIChnbnUgc3lzdGVtIGZpbGUtc3lzdGVtcykKKyAgIzp1c2UtbW9kdWxlIChnbnUgc3lzdGVt IGltYWdlKQorICAjOnVzZS1tb2R1bGUgKHNyZmkgc3JmaS0yNikKKyAgIzpleHBvcnQgKHBpbmVu b3RlLWJhcmVib25lcy1vcworICAgICAgICAgICAgcGluZW5vdGUtaW1hZ2UtdHlwZQorICAgICAg ICAgICAgcGluZW5vdGUtcmF3LWltYWdlKSkKKworKGRlZmluZSBwaW5lbm90ZS1iYXJlYm9uZXMt b3MKKyAgKG9wZXJhdGluZy1zeXN0ZW0KKyAgICAoaG9zdC1uYW1lICJlaW5rIikKKyAgICAodGlt ZXpvbmUgIkV1cm9wZS9QcmFndWUiKQorICAgIChsb2NhbGUgImVuX1VTLnV0ZjgiKQorICAgIChi b290bG9hZGVyIChib290bG9hZGVyLWNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgKGJv b3Rsb2FkZXIgdS1ib290LXBpbmVib29rLXByby1yazMzOTktYm9vdGxvYWRlcikKKzsgICAgICAg ICAgICAgICAgIChib290bG9hZGVyIHUtYm9vdC1waW5lbm90ZS1yazM1NjgtYm9vdGxvYWRlcikK KyAgICAgICAgICAgICAgICAgKHRhcmdldHMgJygiL2Rldi92ZGEiKSkpKQorICAgIChpbml0cmQt bW9kdWxlcyAnKCkpCisgICAgKGtlcm5lbCBsaW51eC1saWJyZS1hcm02NC1waW5lbm90ZSkKKyAg ICAoZmlsZS1zeXN0ZW1zIChjb25zIChmaWxlLXN5c3RlbQorICAgICAgICAgICAgICAgICAgICAg ICAgICAoZGV2aWNlIChmaWxlLXN5c3RlbS1sYWJlbCAibXktcm9vdCIpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAobW91bnQtcG9pbnQgIi8iKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAodHlwZSAiZXh0NCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgJWJhc2UtZmlsZS1zeXN0 ZW1zKSkKKyAgICAoc2VydmljZXMgKGNvbnMgKHNlcnZpY2UgYWdldHR5LXNlcnZpY2UtdHlwZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWdldHR5LWNvbmZpZ3VyYXRpb24KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChleHRyYS1vcHRpb25zICcoIi1MIikpIDsgbm8gY2Fy cmllciBkZXRlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiYXVkLXJhdGUgIjE1 MDAwMDAiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRlcm0gInZ0MTAwIikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0dHkgInR0eVMyIikpKQorICAgICAgICAgICAg ICAgICAgICAlYmFzZS1zZXJ2aWNlcykpKSkKKworKGRlZmluZSBwaW5lbm90ZS1pbWFnZS10eXBl CisgIChpbWFnZS10eXBlCisgICAobmFtZSAncGluZW5vdGUtcHJvLXJhdykKKyAgIChjb25zdHJ1 Y3RvciAoY3V0IGltYWdlLXdpdGgtb3MKKyAgICAgICAgICAgICAgICAgICAgIChyYXctd2l0aC1v ZmZzZXQtZGlzay1pbWFnZSAoKiA5IChleHB0IDIgMjApKSkgOzlNaUIKKyAgICAgICAgICAgICAg ICAgICAgIDw+KSkpKQorCisoZGVmaW5lIHBpbmVub3RlLWJhcmVib25lcy1yYXctaW1hZ2UKKyAg KGltYWdlCisgICAoaW5oZXJpdAorICAgIChvcytwbGF0Zm9ybS0+aW1hZ2UgcGluZW5vdGUtYmFy ZWJvbmVzLW9zIGFhcmNoNjQtbGludXgKKyAgICAgICAgICAgICAgICAgICAgICAgICM6dHlwZSBw aW5lbm90ZS1pbWFnZS10eXBlKSkKKyAgIChuYW1lICdwaW5lbm90ZS1iYXJlYm9uZXMtcmF3LWlt YWdlKSkpCisKKzs7IFJldHVybiB0aGUgZGVmYXVsdCBpbWFnZS4KK3BpbmVub3RlLWJhcmVib25l cy1yYXctaW1hZ2UKLS0gCjIuMzYuMQoK --b1_qPVRHYZdf1KbGW55q1iGrB6QbWsYuO5kogVUydE0 Content-Type: text/x-patch; name=v2-0002-gnu-u-boot-Remove-input-labels.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0002-gnu-u-boot-Remove-input-labels.patch RnJvbSAwOWUxNzRiMGZlMWY5NDU5NGJjOGFiMDliOTIwYmMzMmU3MTZiNmNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRyIEhvZGluYSA8cGhvZGluYUBwcm90b25tYWlsLmNvbT4K RGF0ZTogVGh1LCAzMCBKdW4gMjAyMiAxMToxNDoyNSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjIg Mi81XSBnbnU6IHUtYm9vdDogUmVtb3ZlIGlucHV0IGxhYmVscy4KCiogcGFja2FnZXMvYm9vdGxv YWRlcnMuc2NtICh1LWJvb3QpOiBSZW1vdmUgaW5wdXQgbGFiZWxzLgoKZGlmZiAtLWdpdCBhL2du dS9wYWNrYWdlcy9ib290bG9hZGVycy5zY20gYi9nbnUvcGFja2FnZXMvYm9vdGxvYWRlcnMuc2Nt CmluZGV4IDcxYTEwZjU0ZDUuLjlmNWUyNmZkMjggMTAwNjQ0Ci0tLSBhL2dudS9wYWNrYWdlcy9i b290bG9hZGVycy5zY20KKysrIGIvZ251L3BhY2thZ2VzL2Jvb3Rsb2FkZXJzLnNjbQpAQCAtMTYs NiArMTYsNyBAQAogOzs7IENvcHlyaWdodCDCqSAyMDIxIFZpbmNlbnQgTGVnb2xsIDx2aW5jZW50 LmxlZ29sbEBnbWFpbC5jb20+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMjEgQnJpY2UgV2FlZ2VuZWly ZSA8YnJpY2VAd2FlZ2VuZWkucmU+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMjIgRGVuaXMgJ0dOVXRv bycgQ2FyaWtsaSA8R05VdG9vQGN5YmVyZGltZW5zaW9uLm9yZz4KKzs7OyBDb3B5cmlnaHQgwqkg MjAyMiBQZXRyIEhvZGluYSA8cGhvZGluYUBwcm90b25tYWlsLmNvbT4KIDs7OwogOzs7IFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIEdOVSBHdWl4LgogOzs7CkBAIC01NDUsMjAgKzU0NiwyMCBAQCAoZGVm aW5lIHUtYm9vdAogICAgICAgICAgICAgICAgKGJhc2UzMgogICAgICAgICAgICAgICAgICIxbDV3 MTNkem5qMHoxaWJxdjJkNmxqeDJtYTFnbmY1eDVheTNkcWtxd3hyNjc1MG5icTM4IikpKSkKICAg ICAobmF0aXZlLWlucHV0cwotICAgICBgKCgiYmMiICxiYykKLSAgICAgICAoImJpc29uIiAsYmlz b24pCi0gICAgICAgKCJkdGMiICxkdGMpCi0gICAgICAgKCJnbnV0bHMiICxnbnV0bHMpCi0gICAg ICAgKCJmbGV4IiAsZmxleCkKLSAgICAgICAoImx6NCIgLGx6NCkKLSAgICAgICAoInRpbmZvIiAs bmN1cnNlcy90aW5mbykKLSAgICAgICAoInBlcmwiICxwZXJsKQotICAgICAgICgicHl0aG9uIiAs cHl0aG9uKQotICAgICAgICgicHl0aG9uLWNvdmVyYWdlIiAscHl0aG9uLWNvdmVyYWdlKQotICAg ICAgICgicHl0aG9uLXB5Y3J5cHRvZG9tZXgiICxweXRob24tcHljcnlwdG9kb21leCkKLSAgICAg ICAoInB5dGhvbi1weXRlc3QiICxweXRob24tcHl0ZXN0KQotICAgICAgICgic3dpZyIgLHN3aWcp Ci0gICAgICAgKCJsaWJ1dWlkIiAsdXRpbC1saW51eCAibGliIikpKQorICAgICAobGlzdCBiYwor ICAgICAgICAgICBiaXNvbgorICAgICAgICAgICBkdGMKKyAgICAgICAgICAgZ251dGxzCisgICAg ICAgICAgIGZsZXgKKyAgICAgICAgICAgbHo0CisgICAgICAgICAgIG5jdXJzZXMvdGluZm8KKyAg ICAgICAgICAgcGVybAorICAgICAgICAgICBweXRob24KKyAgICAgICAgICAgcHl0aG9uLWNvdmVy YWdlCisgICAgICAgICAgIHB5dGhvbi1weWNyeXB0b2RvbWV4CisgICAgICAgICAgIHB5dGhvbi1w eXRlc3QKKyAgICAgICAgICAgc3dpZworICAgICAgICAgICBgKCx1dGlsLWxpbnV4ICJsaWIiKSkp CiAgICAgKGJ1aWxkLXN5c3RlbSAgZ251LWJ1aWxkLXN5c3RlbSkKICAgICAoaG9tZS1wYWdlICJo dHRwczovL3d3dy5kZW54LmRlL3dpa2kvVS1Cb290LyIpCiAgICAgKHN5bm9wc2lzICJBUk0gYm9v dGxvYWRlciIpCi0tIAoyLjM2LjEKCg== --b1_qPVRHYZdf1KbGW55q1iGrB6QbWsYuO5kogVUydE0 Content-Type: text/x-patch; name=v2-0004-gnu-Add-install-pinenote-rk3568-u-boot-and-u-boot.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0004-gnu-Add-install-pinenote-rk3568-u-boot-and-u-boot.patch RnJvbSA2MWRhYjc2OWZmMDYyZmE2OWQ5NGE0YTEyNjMzM2Y1NDI0ODliZTUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRyIEhvZGluYSA8cGhvZGluYUBwcm90b25tYWlsLmNvbT4K RGF0ZTogVGh1LCAzMCBKdW4gMjAyMiAxMToyMDo1NSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjIg NC81XSBnbnU6IEFkZCBpbnN0YWxsLXBpbmVub3RlLXJrMzU2OC11LWJvb3QgYW5kCiB1LWJvb3Qt cGluZW5vdGUtcmszNTY4LWJvb3Rsb2FkZXIuCgoqIGdudS9ib290bG9hZGVyL3UtYm9vdC5zY20g KGluc3RhbGwtcGluZW5vdGUtcmszNTY4LXUtYm9vdCwKICB1LWJvb3QtcGluZW5vdGUtcmszNTY4 LWJvb3Rsb2FkZXIpOiBOZXcgdmFyaWFibGVzLgoKZGlmZiAtLWdpdCBhL2dudS9ib290bG9hZGVy L3UtYm9vdC5zY20gYi9nbnUvYm9vdGxvYWRlci91LWJvb3Quc2NtCmluZGV4IDZjYWQzM2I3NDEu LjQ0MTBjYzQ5N2EgMTAwNjQ0Ci0tLSBhL2dudS9ib290bG9hZGVyL3UtYm9vdC5zY20KKysrIGIv Z251L2Jvb3Rsb2FkZXIvdS1ib290LnNjbQpAQCAtMyw2ICszLDcgQEAKIDs7OyBDb3B5cmlnaHQg wqkgMjAxNywgMjAxOSBNYXRoaWV1IE90aGFjZWhlIDxtLm90aGFjZWhlQGdtYWlsLmNvbT4KIDs7 OyBDb3B5cmlnaHQgwqkgMjAyMCBKdWxpZW4gTGVwaWxsZXIgPGp1bGllbkBsZXBpbGxlci5ldT4K IDs7OyBDb3B5cmlnaHQgwqkgMjAyMCBKYW4gKGphbm5la2UpIE5pZXV3ZW5odWl6ZW4gPGphbm5l a2VAZ251Lm9yZz4KKzs7OyBDb3B5cmlnaHQgwqkgMjAyMiBQZXRyIEhvZGluYSA8cGhvZGluYUBw cm90b25tYWlsLmNvbT4KIDs7OwogOzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBHdWl4Lgog Ozs7CkBAIC0zNyw2ICszOCw3IEBAIChkZWZpbmUtbW9kdWxlIChnbnUgYm9vdGxvYWRlciB1LWJv b3QpCiAgICAgICAgICAgICB1LWJvb3Qtbm92ZW5hLWJvb3Rsb2FkZXIKICAgICAgICAgICAgIHUt Ym9vdC1waW5lNjQtcGx1cy1ib290bG9hZGVyCiAgICAgICAgICAgICB1LWJvb3QtcGluZTY0LWx0 cy1ib290bG9hZGVyCisgICAgICAgICAgICB1LWJvb3QtcGluZW5vdGUtcmszNTY4LWJvb3Rsb2Fk ZXIKICAgICAgICAgICAgIHUtYm9vdC1waW5lYm9vay1ib290bG9hZGVyCiAgICAgICAgICAgICB1 LWJvb3QtcGluZWJvb2stcHJvLXJrMzM5OS1ib290bG9hZGVyCiAgICAgICAgICAgICB1LWJvb3Qt cHVtYS1yazMzOTktYm9vdGxvYWRlcgpAQCAtMTI3LDYgKzEyOSwxNSBAQCAoZGVmaW5lIGluc3Rh bGwtcm9ja3BybzY0LXJrMzM5OS11LWJvb3QKIAogKGRlZmluZSBpbnN0YWxsLXBpbmVib29rLXBy by1yazMzOTktdS1ib290IGluc3RhbGwtcm9ja3BybzY0LXJrMzM5OS11LWJvb3QpCiAKKzs7IFRP RE86IFN1cHBseSBjb3JyZWN0IG9mZnNldHMKKyhkZWZpbmUgaW5zdGFsbC1waW5lbm90ZS1yazM1 NjgtdS1ib290CisgICN+KGxhbWJkYSAoYm9vdGxvYWRlciByb290LWluZGV4IGltYWdlKQorICAg ICAgKGxldCAoKGlkYiAoc3RyaW5nLWFwcGVuZCBib290bG9hZGVyICIvbGliZXhlYy9pZGJsb2Fk ZXIuaW1nIikpCisgICAgICAgICAgICAodS1ib290IChzdHJpbmctYXBwZW5kIGJvb3Rsb2FkZXIg Ii9saWJleGVjL3UtYm9vdC5pdGIiKSkpCisgICAgICAgICh3cml0ZS1maWxlLW9uLWRldmljZSBp ZGIgKHN0YXQ6c2l6ZSAoc3RhdCBpZGIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW1hZ2UgKCogNjQgNTEyKSkKKyAgICAgICAgKHdyaXRlLWZpbGUtb24tZGV2aWNlIHUtYm9vdCAo c3RhdDpzaXplIChzdGF0IHUtYm9vdCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bWFnZSAoKiAxNjM4NCA1MTIpKSkpKQogDAogCiA7OzsKQEAgLTI1NSwzICsyNjYsOSBAQCAoZGVm aW5lIHUtYm9vdC1waW5lYm9vay1wcm8tcmszMzk5LWJvb3Rsb2FkZXIKICAgIChpbmhlcml0IHUt Ym9vdC1ib290bG9hZGVyKQogICAgKHBhY2thZ2UgdS1ib290LXBpbmVib29rLXByby1yazMzOTkp CiAgICAoZGlzay1pbWFnZS1pbnN0YWxsZXIgaW5zdGFsbC1waW5lYm9vay1wcm8tcmszMzk5LXUt Ym9vdCkpKQorCisoZGVmaW5lIHUtYm9vdC1waW5lbm90ZS1yazM1NjgtYm9vdGxvYWRlcgorICAo Ym9vdGxvYWRlcgorICAgKGluaGVyaXQgdS1ib290LWJvb3Rsb2FkZXIpCisgICAocGFja2FnZSB1 LWJvb3QtcGluZW5vdGUtcmszNTY4KQorICAgKGRpc2staW1hZ2UtaW5zdGFsbGVyIGluc3RhbGwt cGluZW5vdGUtcmszNTY4LXUtYm9vdCkpKQotLSAKMi4zNi4xCgo= --b1_qPVRHYZdf1KbGW55q1iGrB6QbWsYuO5kogVUydE0 Content-Type: text/x-patch; name=v2-0001-gnu-Add-linux-libre-arm64-pinenote.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v2-0001-gnu-Add-linux-libre-arm64-pinenote.patch RnJvbSBjNDA4NWJiNDVmY2UxN2JjZDU1ZTZlNDliZDk5ZjM1NDNjMTE2YWI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRyIEhvZGluYSA8cGhvZGluYUBwcm90b25tYWlsLmNvbT4K RGF0ZTogVGh1LCAzMCBKdW4gMjAyMiAxMDoxMjozOSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjIg MS81XSBnbnU6IEFkZCBsaW51eC1saWJyZS1hcm02NC1waW5lbm90ZS4KCiogZ251L3BhY2thZ2Vz L2xpbnV4LnNjbSAobGludXgtbGlicmUtYXJtNjQtcGluZW5vdGUpOiBOZXcgdmFyaWFibGUuCiog Z251L2xvY2FsLm1rOiBBZGQgcGF0Y2hlcy4KKiBnbnUvcGFja2FnZXMvcGF0Y2hlcy9saW51eC1s aWJyZS1hcm02NC1waW5lbm90ZS1kZWZjb25maWcucGF0Y2g6IE5ldyBmaWxlLgoqIGdudS9wYWNr YWdlcy9wYXRjaGVzL2xpbnV4LWxpYnJlLWFybTY0LXBpbmVub3RlLXRvdWNoc2NyZWVuLTEucGF0 Y2g6IE5ldyBmaWxlLgoqIGdudS9wYWNrYWdlcy9wYXRjaGVzL2xpbnV4LWxpYnJlLWFybTY0LXBp bmVub3RlLXRvdWNoc2NyZWVuLTIucGF0Y2g6IE5ldyBmaWxlLgoKZGlmZiAtLWdpdCBhL2dudS9s b2NhbC5tayBiL2dudS9sb2NhbC5tawppbmRleCAzNTNiOTFjZmQyLi4yNGQxNjYwMjA2IDEwMDY0 NAotLS0gYS9nbnUvbG9jYWwubWsKKysrIGIvZ251L2xvY2FsLm1rCkBAIC0xNDQ0LDYgKzE0NDQs OSBAQCBkaXN0X3BhdGNoX0RBVEEgPQkJCQkJCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbGlu Ym94LWZpeC1wa2djb25maWcucGF0Y2gJCVwKICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbGlucGhv bmUtZGVza3RvcC13aXRob3V0LXNkay5wYXRjaCAgICAgICAgICAgXAogICAlRCUvcGFja2FnZXMv cGF0Y2hlcy9saW51eC1saWJyZS1zdXBwb3J0LWZvci1QaW5lYm9vay1Qcm8ucGF0Y2ggXAorICAl RCUvcGFja2FnZXMvcGF0Y2hlcy9saW51eC1saWJyZS1hcm02NC1waW5lbm90ZS10b3VjaHNjcmVl bi0xLnBhdGNoIFwKKyAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbGludXgtbGlicmUtYXJtNjQtcGlu ZW5vdGUtdG91Y2hzY3JlZW4tMi5wYXRjaCBcCisgICAgJUQlL3BhY2thZ2VzL3BhdGNoZXMvbGlu dXgtbGlicmUtYXJtNjQtcGluZW5vdGUtZGVmY29uZmlnLnBhdGNoIFwKICAgJUQlL3BhY2thZ2Vz L3BhdGNoZXMvbGludXgtcGFtLW5vLXNldGZzdWlkLnBhdGNoCQlcCiAgICVEJS9wYWNrYWdlcy9w YXRjaGVzL2xpbnV4ZGNwcC1vcGVuc3NsLTEuMS5wYXRjaAkJXAogICAlRCUvcGFja2FnZXMvcGF0 Y2hlcy9saXJjLWxvY2Fsc3RhdGVkaXIucGF0Y2gJCQlcCmRpZmYgLS1naXQgYS9nbnUvcGFja2Fn ZXMvbGludXguc2NtIGIvZ251L3BhY2thZ2VzL2xpbnV4LnNjbQppbmRleCA1OGQzMzE0MGJkLi5i N2IzYTlmNTlhIDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMvbGludXguc2NtCisrKyBiL2dudS9w YWNrYWdlcy9saW51eC5zY20KQEAgLTYwLDcgKzYwLDcgQEAKIDs7OyBDb3B5cmlnaHQgwqkgMjAy MSBKb3NzZWxpbiBQb2lyZXQgPGpvc3NlbGluLnBvaXJldEBwcm90b25tYWlsLmNoPgogOzs7IENv cHlyaWdodCDCqSAyMDIxIE9saXZpZXIgRGlvbiA8b2xpdmllci5kaW9uQHBvbHltdGwuY2E+CiA7 OzsgQ29weXJpZ2h0IMKpIDIwMjEgU29sZW5lIFJhcGVubmUgPHNvbGVuZUBwZXJzby5wdz4KLTs7 OyBDb3B5cmlnaHQgwqkgMjAyMSBQZXRyIEhvZGluYSA8cGhvZGluYUBwcm90b25tYWlsLmNvbT4K Kzs7OyBDb3B5cmlnaHQgwqkgMjAyMSwgMjAyMiBQZXRyIEhvZGluYSA8cGhvZGluYUBwcm90b25t YWlsLmNvbT4KIDs7OyBDb3B5cmlnaHQgwqkgMjAyMiBBcnR5b20gVi4gUG9wdHNvdiA8cG9wdHNv di5hcnR5b21AZ21haWwuY29tPgogOzs7IENvcHlyaWdodCDCqSAyMDIyIFJlbmUgU2FhdmVkcmEg PG5hbnV1aUBwcm90b25tYWlsLmNvbT4KIApAQCAtMzE2LDkgKzMxNiw5IEBAIChkZWZpbmUgKG1h a2UtbGludXgtbGlicmUtc291cmNlIHZlcnNpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAg Ii0taGFyZC1kZXJlZmVyZW5jZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyKQogCi0g ICAgICAgICAgICAgICAgICAoZm9ybWF0ICN0ICJ+JVNjYW5uaW5nIHRoZSBnZW5lcmF0ZWQgdGFy YmFsbCBmb3IgYmxvYnMuLi5+JSIpCi0gICAgICAgICAgICAgICAgICAoaW52b2tlICIvdG1wL2Jp bi9kZWJsb2ItY2hlY2siICItLXVzZS1hd2siICItLWxpc3QtYmxvYnMiCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICMkb3V0cHV0KSkpKSkpKSkpKQorICAgICAgICAgICAgICAgICAgOyhmb3Jt YXQgI3QgIn4lU2Nhbm5pbmcgdGhlIGdlbmVyYXRlZCB0YXJiYWxsIGZvciBibG9icy4uLn4lIikK KyAgICAgICAgICAgICAgICAgIDsoaW52b2tlICIvdG1wL2Jpbi9kZWJsb2ItY2hlY2siICItLXVz ZS1hd2siICItLWxpc3QtYmxvYnMiICMkb3V0cHV0KQorCQkJCSAgKSkpKSkpKSkpCiAKIAwKIDs7 OwpAQCAtMzQ5LDYgKzM0OSwxMiBAQCAoZGVmaW5lICgldXBzdHJlYW0tbGludXgtc291cmNlIHZl cnNpb24gaGFzaCkKICAgICAgICAgICAgICAgICAgICAgICAgICJsaW51eC0iIHZlcnNpb24gIi50 YXIueHoiKSkKICAgICAoc2hhMjU2IGhhc2gpKSkKIAorKGRlZmluZSAoJXBpbmVub3RlLWxpbnV4 LXNvdXJjZSB2ZXJzaW9uIGhhc2gpCisgIChvcmlnaW4KKyAgICAobWV0aG9kIHVybC1mZXRjaCkK KyAgICAodXJpIChzdHJpbmctYXBwZW5kICJodHRwczovL2dpdGh1Yi5jb20vc21hZXVsL2xpbnV4 L3RhcmJhbGwvIiB2ZXJzaW9uKSkKKyAgICAoc2hhMjU2IGhhc2gpKSkKKwogOzsgVGhlIGN1cnJl bnQgInN0YWJsZSIga2VybmVscy4gVGhhdCBpcywgdGhlIG1vc3QgcmVjZW50bHkgcmVsZWFzZWQg bWFqb3IKIDs7IHZlcnNpb25zIHRoYXQgYXJlIHN0aWxsIHN1cHBvcnRlZCB1cHN0cmVhbS4KIApA QCAtMzYwLDYgKzM2Niw3IEBAIChkZWZpbmUgZGVibG9iLXNjcmlwdHMtNS4xOAogICAgbGludXgt bGlicmUtNS4xOC1nbnUtcmV2aXNpb24KICAgIChiYXNlMzIgIjA5YWlrZGhpajRkODl3cWQ4bW1r ZHIwbnJmd3F6NmR4M243NHFtNnd4ODE1cmZuZ2QyZHoiKQogICAgKGJhc2UzMiAiMHZqcG44aXc5 eWczOXNyNmpmaHp5dml2ZjE1OWg5emZnbmphbXdhMjgzemZsbDBoMGE1MyIpKSkKKwogKGRlZmlu ZS1wdWJsaWMgbGludXgtbGlicmUtNS4xOC1wcmlzdGluZS1zb3VyY2UKICAgKGxldCAoKHZlcnNp b24gbGludXgtbGlicmUtNS4xOC12ZXJzaW9uKQogICAgICAgICAoaGFzaCAoYmFzZTMyICIwbnNq NDRwMXduN3lzY2todjRhOTluY2owYTl4eGh2aTU0djYzdzEwNDdzc3B4amQxOG0xIikpKQpAQCAt MzY3LDYgKzM3NCwyMyBAQCAoZGVmaW5lLXB1YmxpYyBsaW51eC1saWJyZS01LjE4LXByaXN0aW5l LXNvdXJjZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgldXBzdHJlYW0tbGludXgtc291 cmNlIHZlcnNpb24gaGFzaCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJsb2Itc2Ny aXB0cy01LjE4KSkpCiAKKyhkZWZpbmUtcHVibGljIGxpbnV4LWxpYnJlLTUuMTYtdmVyc2lvbiAi NS4xNiIpCisoZGVmaW5lLXB1YmxpYyBsaW51eC1saWJyZS01LjE2LWdudS1yZXZpc2lvbiAiZ251 IikKKyhkZWZpbmUgZGVibG9iLXNjcmlwdHMtNS4xNgorICAobGludXgtbGlicmUtZGVibG9iLXNj cmlwdHMKKyAgIGxpbnV4LWxpYnJlLTUuMTYtdmVyc2lvbgorICAgbGludXgtbGlicmUtNS4xNi1n bnUtcmV2aXNpb24KKyAgIChiYXNlMzIgIjBjOWM4emQ4NXA4NHI4azR4aHlzOHh3MTVwZHM3MXYw Y2EyYjZobTFwcjRmNmxwemNrMGciKQorICAgKGJhc2UzMiAiMGM1bGQzaWkzaXhucjI3c3A1OW1i aDQwMzQwamxteGF4azd6MXhibDR2OTRtbnptd3ozeCIpKSkKKworKGRlZmluZS1wdWJsaWMgbGlu dXgtbGlicmUtYXJtNjQtcGluZW5vdGUtcHJpc3RpbmUtc291cmNlCisgIChsZXQgKCh2ZXJzaW9u IGxpbnV4LWxpYnJlLTUuMTYtdmVyc2lvbikKKyAgICAgICAgKGNvbW1pdCAiNDZlODdmMWY5Yzdk ZDIyYWYyNmQ5OWY2MGViODNkMmNhY2U0M2NiNSIpCisgICAgICAgIChoYXNoIChiYXNlMzIgIjF5 bWtnY3EzcnlmMzA2aHp5cm0zbnZoNWNmYWFuNzdqa3BkNGI2cTR6M3pmcDhxZHl5MWgiKSkpCisg ICAobWFrZS1saW51eC1saWJyZS1zb3VyY2UgdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICglcGluZW5vdGUtbGludXgtc291cmNlIGNvbW1pdCBoYXNoKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRlYmxvYi1zY3JpcHRzLTUuMTYpKSkKKwogOzsgVGhlICJsb25ndGVy bSIga2VybmVscyDigJQgdGhlIG9sZGVyIHJlbGVhc2VzIHdpdGggbG9uZy10ZXJtIHVwc3RyZWFt IHN1cHBvcnQuCiA7OyBIZXJlIGFyZSB0aGUgc3VwcG9ydCB0aW1lbGluZXM6CiA7OyA8aHR0cHM6 Ly93d3cua2VybmVsLm9yZy9jYXRlZ29yeS9yZWxlYXNlcy5odG1sPgpAQCAtNDg4LDYgKzUxMiwx NSBAQCAoZGVmaW5lIChzb3VyY2Utd2l0aC1wYXRjaGVzIHNvdXJjZSBwYXRjaGVzKQogICAgIChw YXRjaGVzIChhcHBlbmQgKG9yaWdpbi1wYXRjaGVzIHNvdXJjZSkKICAgICAgICAgICAgICAgICAg ICAgIHBhdGNoZXMpKSkpCiAKKyhkZWZpbmUtcHVibGljIGxpbnV4LWxpYnJlLWFybTY0LXBpbmVu b3RlLXNvdXJjZQorICAoc291cmNlLXdpdGgtcGF0Y2hlcyBsaW51eC1saWJyZS1hcm02NC1waW5l bm90ZS1wcmlzdGluZS1zb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMqICVib290 LWxvZ28tcGF0Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVsaW51eC1saWJyZS1h cm0tZXhwb3J0LV9fc3luY19pY2FjaGVfZGNhY2hlLXBhdGNoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc2VhcmNoLXBhdGNoZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgImxpbnV4LWxpYnJlLWFybTY0LXBpbmVub3RlLXRvdWNoc2NyZWVuLTEucGF0Y2giCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW51eC1saWJyZS1hcm02NC1waW5lbm90ZS10 b3VjaHNjcmVlbi0yLnBhdGNoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlu dXgtbGlicmUtYXJtNjQtcGluZW5vdGUtZGVmY29uZmlnLnBhdGNoIikpKSkKKwogKGRlZmluZS1w dWJsaWMgbGludXgtbGlicmUtNS4xOC1zb3VyY2UKICAgKHNvdXJjZS13aXRoLXBhdGNoZXMgbGlu dXgtbGlicmUtNS4xOC1wcmlzdGluZS1zb3VyY2UKICAgICAgICAgICAgICAgICAgICAgICAgKGxp c3QgJWJvb3QtbG9nby1wYXRjaApAQCAtMTA3Miw2ICsxMTA1LDE0IEBAIChkZWZpbmUtcHVibGlj IGxpbnV4LWxpYnJlLWFybS1vbWFwMnBsdXMtNC4xNAogICAgICAgICAgICAgICAgICAgICAgIzpk ZWZjb25maWcgIm9tYXAycGx1c19kZWZjb25maWciCiAgICAgICAgICAgICAgICAgICAgICAjOmV4 dHJhLXZlcnNpb24gImFybS1vbWFwMnBsdXMiKSkKIAorKGRlZmluZS1wdWJsaWMgbGludXgtbGli cmUtYXJtNjQtcGluZW5vdGUKKyAgKG1ha2UtbGludXgtbGlicmUqIGxpbnV4LWxpYnJlLXZlcnNp b24KKyAgICAgICAgICAgICAgICAgICAgIGxpbnV4LWxpYnJlLWdudS1yZXZpc2lvbgorICAgICAg ICAgICAgICAgICAgICAgbGludXgtbGlicmUtYXJtNjQtcGluZW5vdGUtc291cmNlCisgICAgICAg ICAgICAgICAgICAgICAnKCJhYXJjaDY0LWxpbnV4IikKKworICAgICAgICAgICAgICAgICAgICAg IzpkZWZjb25maWcgInBpbmVub3RlX2RlZmNvbmZpZyIpKQorCiAoZGVmaW5lLXB1YmxpYyBsaW51 eC1saWJyZS1hcm02NC1nZW5lcmljCiAgIChtYWtlLWxpbnV4LWxpYnJlKiBsaW51eC1saWJyZS12 ZXJzaW9uCiAgICAgICAgICAgICAgICAgICAgICBsaW51eC1saWJyZS1nbnUtcmV2aXNpb24KZGlm ZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9wYXRjaGVzL2xpbnV4LWxpYnJlLWFybTY0LXBpbmVub3Rl LWJhdHRlcnktbGV2ZWwucGF0Y2ggYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9saW51eC1saWJyZS1h cm02NC1waW5lbm90ZS1iYXR0ZXJ5LWxldmVsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLmEwZGY4YzM3NjMKLS0tIC9kZXYvbnVsbAorKysgYi9nbnUvcGFja2Fn ZXMvcGF0Y2hlcy9saW51eC1saWJyZS1hcm02NC1waW5lbm90ZS1iYXR0ZXJ5LWxldmVsLnBhdGNo CkBAIC0wLDAgKzEsNjIgQEAKK0Zyb20gODIyMjk0NjY0OTA2NDk5NjgyYjU1MjY0YWUwNTUzZWUw NWNhYTM1MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERvcmlhbiBSdWRvbHBoIDxt YWlsQGRvcmlhbnJ1ZG9scGguY29tPgorRGF0ZTogU2F0LCAxNCBNYXkgMjAyMiAxNDoyODozNyAr MDIwMAorU3ViamVjdDogW1BBVENIXSBmaXggcG93ZXJfc3VwcGx5X3RlbXAycmVzaXN0X3NpbXBs ZSBhbmQKKyBwb3dlcl9zdXBwbHlfb2N2MmNhcF9zaW1wbGUKKworLS0tCisgZHJpdmVycy9wb3dl ci9zdXBwbHkvcG93ZXJfc3VwcGx5X2NvcmUuYyB8IDI0ICsrKysrKysrKysrKy0tLS0tLS0tLS0t LQorIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKKwor ZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG93ZXIvc3VwcGx5L3Bvd2VyX3N1cHBseV9jb3JlLmMgYi9k cml2ZXJzL3Bvd2VyL3N1cHBseS9wb3dlcl9zdXBwbHlfY29yZS5jCitpbmRleCBlYzgzOGM5YmNj MGE1ZS4uMzgyOGJhOWQwZWFiOTAgMTAwNjQ0CistLS0gYS9kcml2ZXJzL3Bvd2VyL3N1cHBseS9w b3dlcl9zdXBwbHlfY29yZS5jCisrKysgYi9kcml2ZXJzL3Bvd2VyL3N1cHBseS9wb3dlcl9zdXBw bHlfY29yZS5jCitAQCAtODAxLDE3ICs4MDEsMTcgQEAgaW50IHBvd2VyX3N1cHBseV90ZW1wMnJl c2lzdF9zaW1wbGUoc3RydWN0IHBvd2VyX3N1cHBseV9yZXNpc3RhbmNlX3RlbXBfdGFibGUgKnQK KyB7CisgCWludCBpLCBoaWdoLCBsb3c7CisgCistCS8qIEJyZWFrIGxvb3AgYXQgdGFibGVfbGVu IC0gMSBiZWNhdXNlIHRoYXQgaXMgdGhlIGhpZ2hlc3QgaW5kZXggKi8KKy0JZm9yIChpID0gMDsg aSA8IHRhYmxlX2xlbiAtIDE7IGkrKykKKysJZm9yIChpID0gMDsgaSA8IHRhYmxlX2xlbjsgaSsr KQorIAkJaWYgKHRlbXAgPiB0YWJsZVtpXS50ZW1wKQorIAkJCWJyZWFrOworIAorIAkvKiBUaGUg bGlicmFyeSBmdW5jdGlvbiB3aWxsIGRlYWwgd2l0aCBoaWdoID09IGxvdyAqLworLQlpZiAoKGkg PT0gMCkgfHwgKGkgPT0gKHRhYmxlX2xlbiAtIDEpKSkKKy0JCWhpZ2ggPSBpOworKwlpZiAoaSA9 PSAwKQorKwkJaGlnaCA9IGxvdyA9IGk7CisrCWVsc2UgaWYgKGkgPT0gdGFibGVfbGVuKQorKwkJ aGlnaCA9IGxvdyA9IGkgLSAxOworIAllbHNlCistCQloaWdoID0gaSAtIDE7CistCWxvdyA9IGk7 CisrCQloaWdoID0gKGxvdyA9IGkpIC0gMTsKKyAKKyAJcmV0dXJuIGZpeHBfbGluZWFyX2ludGVy cG9sYXRlKHRhYmxlW2xvd10udGVtcCwKKyAJCQkJICAgICAgIHRhYmxlW2xvd10ucmVzaXN0YW5j ZSwKK0BAIC04MzgsMTcgKzgzOCwxNyBAQCBpbnQgcG93ZXJfc3VwcGx5X29jdjJjYXBfc2ltcGxl KHN0cnVjdCBwb3dlcl9zdXBwbHlfYmF0dGVyeV9vY3ZfdGFibGUgKnRhYmxlLAorIHsKKyAJaW50 IGksIGhpZ2gsIGxvdzsKKyAKKy0JLyogQnJlYWsgbG9vcCBhdCB0YWJsZV9sZW4gLSAxIGJlY2F1 c2UgdGhhdCBpcyB0aGUgaGlnaGVzdCBpbmRleCAqLworLQlmb3IgKGkgPSAwOyBpIDwgdGFibGVf bGVuIC0gMTsgaSsrKQorKwlmb3IgKGkgPSAwOyBpIDwgdGFibGVfbGVuOyBpKyspCisgCQlpZiAo b2N2ID4gdGFibGVbaV0ub2N2KQorIAkJCWJyZWFrOworIAorIAkvKiBUaGUgbGlicmFyeSBmdW5j dGlvbiB3aWxsIGRlYWwgd2l0aCBoaWdoID09IGxvdyAqLworLQlpZiAoKGkgPT0gMCkgfHwgKGkg PT0gKHRhYmxlX2xlbiAtIDEpKSkKKy0JCWhpZ2ggPSBpIC0gMTsKKysJaWYgKGkgPT0gMCkKKysJ CWhpZ2ggPSBsb3cgPSBpOworKwllbHNlIGlmIChpID09IHRhYmxlX2xlbikKKysJCWhpZ2ggPSBs b3cgPSBpIC0gMTsKKyAJZWxzZQorLQkJaGlnaCA9IGk7IC8qIGkuZS4gaSA9PSAwICovCistCWxv dyA9IGk7CisrCQloaWdoID0gKGxvdyA9IGkpIC0gMTsKKyAKKyAJcmV0dXJuIGZpeHBfbGluZWFy X2ludGVycG9sYXRlKHRhYmxlW2xvd10ub2N2LAorIAkJCQkgICAgICAgdGFibGVbbG93XS5jYXBh Y2l0eSwKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9wYXRjaGVzL2xpbnV4LWxpYnJlLWFybTY0 LXBpbmVub3RlLWRlZmNvbmZpZy5wYXRjaCBiL2dudS9wYWNrYWdlcy9wYXRjaGVzL2xpbnV4LWxp YnJlLWFybTY0LXBpbmVub3RlLWRlZmNvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi45Nzg5OGExNDFlCi0tLSAvZGV2L251bGwKKysrIGIvZ251L3BhY2th Z2VzL3BhdGNoZXMvbGludXgtbGlicmUtYXJtNjQtcGluZW5vdGUtZGVmY29uZmlnLnBhdGNoCkBA IC0wLDAgKzEsNDggQEAKK2RpZmYgLS1naXQgYS9hcmNoL2FybTY0L2NvbmZpZ3MvcGluZW5vdGVf ZGVmY29uZmlnIGIvYXJjaC9hcm02NC9jb25maWdzL3BpbmVub3RlX2RlZmNvbmZpZworaW5kZXgg YmVhNDM1ZGM5MmM0Li44NmNkYWE5MmNjMmYgMTAwNjQ0CistLS0gYS9hcmNoL2FybTY0L2NvbmZp Z3MvcGluZW5vdGVfZGVmY29uZmlnCisrKysgYi9hcmNoL2FybTY0L2NvbmZpZ3MvcGluZW5vdGVf ZGVmY29uZmlnCitAQCAtODYsNiArODYsNyBAQCBDT05GSUdfQVJDSF9ST0NLQ0hJUD15CisgIyBD T05GSUdfTlZJRElBX0NBUk1FTF9DTlBfRVJSQVRVTSBpcyBub3Qgc2V0CisgIyBDT05GSUdfU09D SU9ORVhUX1NZTlFVQUNFUl9QUkVJVFMgaXMgbm90IHNldAorIENPTkZJR19TQ0hFRF9NQz15Cisr Q09ORklHX1NDSEVEX1NNVD15CisgQ09ORklHX05SX0NQVVM9NAorIENPTkZJR19IWl8xMDAwPXkK KyAjIENPTkZJR19VTk1BUF9LRVJORUxfQVRfRUwwIGlzIG5vdCBzZXQKK0BAIC0xNTUsNyArMTU2 LDcgQEAgQ09ORklHX0NHUk9VUF9ORVRfUFJJTz15CisgQ09ORklHX0JUPW0KKyBDT05GSUdfQlRf UkZDT01NPXkKKyBDT05GSUdfQlRfUkZDT01NX1RUWT15CistQ09ORklHX0JUX0hJRFA9eQorK0NP TkZJR19CVF9ISURQPW0KKyBDT05GSUdfQlRfSFM9eQorIENPTkZJR19CVF9MRURTPXkKKyBDT05G SUdfQlRfSENJVUFSVD1tCitAQCAtMjIzLDE0ICsyMjQsMTYgQEAgQ09ORklHX0JSQ01GTUFDPW0K KyAjIENPTkZJR19XTEFOX1ZFTkRPUl9USSBpcyBub3Qgc2V0CisgIyBDT05GSUdfV0xBTl9WRU5E T1JfWllEQVMgaXMgbm90IHNldAorICMgQ09ORklHX1dMQU5fVkVORE9SX1FVQU5URU5OQSBpcyBu b3Qgc2V0CisrQ09ORklHX0lOUFVUX01PVVNFREVWPW0KKyBDT05GSUdfSU5QVVRfRVZERVY9eQor IENPTkZJR19LRVlCT0FSRF9BREM9bQorICMgQ09ORklHX0tFWUJPQVJEX0FUS0JEIGlzIG5vdCBz ZXQKKyBDT05GSUdfS0VZQk9BUkRfR1BJTz15CistIyBDT05GSUdfSU5QVVRfTU9VU0UgaXMgbm90 IHNldAorK0NPTkZJR19JTlBVVF9NT1VTRT15CisgQ09ORklHX0lOUFVUX1RPVUNIU0NSRUVOPXkK KyBDT05GSUdfVE9VQ0hTQ1JFRU5fQ1lUVFNQNF9DT1JFPW0KKyBDT05GSUdfVE9VQ0hTQ1JFRU5f Q1lUVFNQNF9JMkM9bQorK0NPTkZJR19UT1VDSFNDUkVFTl9DWVRUU1A1PW0KKyBDT05GSUdfSU5Q VVRfTUlTQz15CisgQ09ORklHX0lOUFVUX1JLODA1X1BXUktFWT15CisgQ09ORklHX0lOUFVUX1dT ODEwMF9QRU49bQorQEAgLTQ1OSw2ICs0NjIsOCBAQCBDT05GSUdfU05EX1NPQ19TSU1QTEVfQU1Q TElGSUVSPW0KKyBDT05GSUdfU05EX1NJTVBMRV9DQVJEPW0KKyBDT05GSUdfSElEX0JBVFRFUllf U1RSRU5HVEg9eQorIENPTkZJR19ISURSQVc9eQorK0NPTkZJR19VSElEPW0KKytDT05GSUdfSElE X01JQ1JPU09GVD15CisgQ09ORklHX1VTQl9ISURERVY9eQorIENPTkZJR19JMkNfSElEX09GPW0K KyBDT05GSUdfSTJDX0hJRF9PRl9HT09ESVg9bQpkaWZmIC0tZ2l0IGEvZ251L3BhY2thZ2VzL3Bh dGNoZXMvbGludXgtbGlicmUtYXJtNjQtcGluZW5vdGUtZHRzaS5wYXRjaCBiL2dudS9wYWNrYWdl cy9wYXRjaGVzL2xpbnV4LWxpYnJlLWFybTY0LXBpbmVub3RlLWR0c2kucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZTEyYjg0YTg2ZAotLS0gL2Rldi9udWxsCisr KyBiL2dudS9wYWNrYWdlcy9wYXRjaGVzL2xpbnV4LWxpYnJlLWFybTY0LXBpbmVub3RlLWR0c2ku cGF0Y2gKQEAgLTAsMCArMSwxNjcgQEAKK2RpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRz L3JvY2tjaGlwL3JrMzU2Ni1waW5lbm90ZS5kdHNpIGIvYXJjaC9hcm02NC9ib290L2R0cy9yb2Nr Y2hpcC9yazM1NjYtcGluZW5vdGUuZHRzaQoraW5kZXggNTlhYzE3ODg4MWIzLi5lYzcxODMzMzBi NDAgMTAwNjQ0CistLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2Ni1waW5l bm90ZS5kdHNpCisrKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2Ni1waW5l bm90ZS5kdHNpCitAQCAtNTEsMTEgKzUxLDExIEBAIGJhdHRlcnlfY2VsbDogYmF0dGVyeS1jZWxs IHsKKworIAkJb2N2LWNhcGFjaXR5LWNlbHNpdXMgPSA8MjA+OworIAkJb2N2LWNhcGFjaXR5LXRh YmxlLTAgPSA8NDE2ODAwMCAxMDA+LAorLQkJCQkgICAgICAgPDQxMDkwMDAgOTU+LCA8NDA2NjAw MCA5MD4sIDw0MDIzMDAwIDg1PiwgPDM5ODUwMDAgODA+LAorLQkJCQkgICAgICAgPDM5NTQwMDAg NzU+LCA8MzkyNDAwMCA3MD4sIDwzODk3MDAwIDY1PiwgPDM4NjYwMDAgNjA+LAorLQkJCQkgICAg ICAgPDM4MjYwMDAgNTU+LCA8MzgwNDAwMCA1MD4sIDwzNzg5MDAwIDQ1PiwgPDM3NzcwMDAgNDA+ LAorLQkJCQkgICAgICAgPDM3NzAwMDAgMzU+LCA8Mzc2MzAwMCAzMD4sIDwzNzUwMDAwIDI1Piwg PDM3MzIwMDAgMjA+LAorLQkJCQkgICAgICAgPDM3MTAwMDAgMTU+LCA8MzY4MDAwMCAxMD4sIDwz NjcwMDAwICA1PiwgPDM1MDAwMDAgIDA+OworKwkJCQkJICAgPDQxMDkwMDAgOTU+LCA8NDA2NjAw MCA5MD4sIDw0MDIzMDAwIDg1PiwgPDM5ODUwMDAgODA+LAorKwkJCQkJICAgPDM5NTQwMDAgNzU+ LCA8MzkyNDAwMCA3MD4sIDwzODk3MDAwIDY1PiwgPDM4NjYwMDAgNjA+LAorKwkJCQkJICAgPDM4 MjYwMDAgNTU+LCA8MzgwNDAwMCA1MD4sIDwzNzg5MDAwIDQ1PiwgPDM3NzcwMDAgNDA+LAorKwkJ CQkJICAgPDM3NzAwMDAgMzU+LCA8Mzc2MzAwMCAzMD4sIDwzNzUwMDAwIDI1PiwgPDM3MzIwMDAg MjA+LAorKwkJCQkJICAgPDM3MTAwMDAgMTU+LCA8MzY4MDAwMCAxMD4sIDwzNjcwMDAwICA1Piwg PDM1MDAwMDAgIDA+OworIAl9OworCisgCWJ0X3Njb19jb2RlYzogYnQtc2NvLWNvZGVjIHsKK0BA IC02MywyNiArNjMsMjYgQEAgYnRfc2NvX2NvZGVjOiBidC1zY28tY29kZWMgeworIAkJI3NvdW5k LWRhaS1jZWxscyA9IDwxPjsKKyAJfTsKKworLQlidC1zb3VuZCB7CistCQljb21wYXRpYmxlID0g InNpbXBsZS1hdWRpby1jYXJkIjsKKy0JCSNhZGRyZXNzLWNlbGxzID0gPDE+OworLQkJI3NpemUt Y2VsbHMgPSA8MD47CistCQlzaW1wbGUtYXVkaW8tY2FyZCxuYW1lID0gIlBpbmVOb3RlIEJsdWV0 b290aCI7CistCistCQlzaW1wbGUtYXVkaW8tY2FyZCxkYWktbGlua0AwIHsKKy0JCQlmb3JtYXQg PSAiaTJzIjsKKy0JCQlmcmFtZS1tYXN0ZXIgPSA8JmJ0X2xpbmswX2NwdT47CistCQkJYml0Y2xv Y2stbWFzdGVyID0gPCZidF9saW5rMF9jcHU+OworLQorLQkJCWJ0X2xpbmswX2NwdTogY3B1IHsK Ky0JCQkJc291bmQtZGFpID0gPCZpMnMyXzJjaD47CistCQkJfTsKKy0KKy0JCQlidF9saW5rMF9j b2RlYzogY29kZWMgeworLQkJCQlzb3VuZC1kYWkgPSA8JmJ0X3Njb19jb2RlYyAwPjsKKy0JCQl9 OworLQkJfTsKKy0JfTsKKysJLy8gYnQtc291bmQgeworKwkJLy8gY29tcGF0aWJsZSA9ICJzaW1w bGUtYXVkaW8tY2FyZCI7CisrCQkvLyAjYWRkcmVzcy1jZWxscyA9IDwxPjsKKysJCS8vICNzaXpl LWNlbGxzID0gPDA+OworKwkJLy8gc2ltcGxlLWF1ZGlvLWNhcmQsbmFtZSA9ICJQaW5lTm90ZSBC bHVldG9vdGgiOworKy8vCisrCQkvLyBzaW1wbGUtYXVkaW8tY2FyZCxkYWktbGlua0AwIHsKKysJ CQkvLyBmb3JtYXQgPSAiaTJzIjsKKysJCQkvLyBmcmFtZS1tYXN0ZXIgPSA8JmJ0X2xpbmswX2Nw dT47CisrCQkJLy8gYml0Y2xvY2stbWFzdGVyID0gPCZidF9saW5rMF9jcHU+OworKy8vCisrCQkJ Ly8gYnRfbGluazBfY3B1OiBjcHUgeworKwkJCQkvLyBzb3VuZC1kYWkgPSA8JmkyczJfMmNoPjsK KysJCQkvLyB9OworKy8vCisrCQkJLy8gYnRfbGluazBfY29kZWM6IGNvZGVjIHsKKysJCQkJLy8g c291bmQtZGFpID0gPCZidF9zY29fY29kZWMgMD47CisrCQkJLy8gfTsKKysJCS8vIH07CisrCS8v IH07CisKKyAJZG1pY19jb2RlYzogZG1pYy1jb2RlYyB7CisgCQljb21wYXRpYmxlID0gImRtaWMt Y29kZWMiOworQEAgLTk1LDE1ICs5NSwxNSBAQCBncGlvLWtleXMgeworIAkJcGluY3RybC0wID0g PCZoYWxsX2ludF9sPjsKKyAJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisKKy0JCWNvdmVy IHsKKy0JCQlsYWJlbCA9ICJjb3ZlciI7CistCQkJZ3Bpb3MgPSA8JmdwaW8wIFJLX1BDNyBHUElP X0FDVElWRV9MT1c+OworLQkJCWxpbnV4LGlucHV0LXR5cGUgPSA8RVZfU1c+OworLQkJCWxpbnV4 LGNvZGUgPSA8U1dfTUFDSElORV9DT1ZFUj47CistCQkJbGludXgsY2FuLWRpc2FibGU7CistCQkJ d2FrZXVwLWV2ZW50LWFjdGlvbiA9IDxFVl9BQ1RfREVBU1NFUlRFRD47CistCQkJd2FrZXVwLXNv dXJjZTsKKy0JCX07CisrCQkvKiBjb3ZlciB7ICovCisrCQkvKglsYWJlbCA9ICJjb3ZlciI7ICov CisrCQkvKglncGlvcyA9IDwmZ3BpbzAgUktfUEM3IEdQSU9fQUNUSVZFX0xPVz47ICovCisrCQkv KglsaW51eCxpbnB1dC10eXBlID0gPEVWX1NXPjsgKi8KKysJCS8qCWxpbnV4LGNvZGUgPSA8U1df TUFDSElORV9DT1ZFUj47ICovCisrCQkvKglsaW51eCxjYW4tZGlzYWJsZTsgKi8KKysJCS8qCXdh a2V1cC1ldmVudC1hY3Rpb24gPSA8RVZfQUNUX0RFQVNTRVJURUQ+OyAqLworKwkJLyoJd2FrZXVw LXNvdXJjZTsgKi8KKysJCS8qIH07ICovCisgCX07CisKKyAJZ3Bpby1sZWRzIHsKK0BAIC0xNjYs MTMgKzE2NiwxMyBAQCBzb3VuZCB7CisgCQlzaW1wbGUtYXVkaW8tY2FyZCxuYW1lID0gIlBpbmVO b3RlIjsKKyAJCXNpbXBsZS1hdWRpby1jYXJkLGF1eC1kZXZzID0gPCZzcGtfYW1wPjsKKyAJCXNp bXBsZS1hdWRpby1jYXJkLHdpZGdldHMgPSAiSGVhZHBob25lIiwgIkhlYWRwaG9uZXMiLAorLQkJ CQkJICAgICJTcGVha2VyIiwgIkludGVybmFsIFNwZWFrZXJzIjsKKysJCQkJCQkiU3BlYWtlciIs ICJJbnRlcm5hbCBTcGVha2VycyI7CisgCQlzaW1wbGUtYXVkaW8tY2FyZCxyb3V0aW5nID0gIkhl YWRwaG9uZXMiLCAiSFBPTCIsCistCQkJCQkgICAgIkhlYWRwaG9uZXMiLCAiSFBPUiIsCistCQkJ CQkgICAgIkludGVybmFsIFNwZWFrZXJzIiwgIlNwZWFrZXIgQW1wIE9VVEwiLAorLQkJCQkJICAg ICJJbnRlcm5hbCBTcGVha2VycyIsICJTcGVha2VyIEFtcCBPVVRSIiwKKy0JCQkJCSAgICAiU3Bl YWtlciBBbXAgSU5MIiwgIkhQT0wiLAorLQkJCQkJICAgICJTcGVha2VyIEFtcCBJTlIiLCAiSFBP UiI7CisrCQkJCQkJIkhlYWRwaG9uZXMiLCAiSFBPUiIsCisrCQkJCQkJIkludGVybmFsIFNwZWFr ZXJzIiwgIlNwZWFrZXIgQW1wIE9VVEwiLAorKwkJCQkJCSJJbnRlcm5hbCBTcGVha2VycyIsICJT cGVha2VyIEFtcCBPVVRSIiwKKysJCQkJCQkiU3BlYWtlciBBbXAgSU5MIiwgIkhQT0wiLAorKwkJ CQkJCSJTcGVha2VyIEFtcCBJTlIiLCAiSFBPUiI7CisgCQlzaW1wbGUtYXVkaW8tY2FyZCxwaW4t c3dpdGNoZXMgPSAiSW50ZXJuYWwgU3BlYWtlcnMiOworIAkJI2FkZHJlc3MtY2VsbHMgPSA8MT47 CisgCQkjc2l6ZS1jZWxscyA9IDwwPjsKK0BAIC0zNDAsNyArMzQwLDcgQEAgJmVpbmsgeworCisg JmdwdSB7CisgCW1hbGktc3VwcGx5ID0gPCZ2ZGRfZ3B1X25wdT47CistCS8vIHN0YXR1cyA9ICJv a2F5IjsKKysJc3RhdHVzID0gIm9rYXkiOworIH07CisKKyAmaTJjMCB7CitAQCAtNjY5LDE5ICs2 NjksMzEgQEAgYWNjZWxlcm9tZXRlckAxOCB7CisgCQlzdCxkcmR5LWludC1waW4gPSA8MT47Cisg CQl2ZGQtc3VwcGx5ID0gPCZ2Y2NfM3YzPjsKKyAJCXZkZGlvLXN1cHBseSA9IDwmdmNjXzN2Mz47 CistCX07CistCistCXRvdWNoc2NyZWVuQDI0IHsKKy0JCWNvbXBhdGlibGUgPSAiY3lwcmVzcyx0 dDIxMDAwIjsKKy0JCWhpZC1kZXNjci1hZGRyID0gPDB4MT47CistCQlyZWcgPSA8MHgyND47Cist CQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvMD47CistCQlpbnRlcnJ1cHRzID0gPFJLX1BBNiBJ UlFfVFlQRV9MRVZFTF9MT1c+OworLQkJcGluY3RybC0wID0gPCZ0c19pbnRfbD4sIDwmdHNfcnN0 X2w+OworLQkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKy0JCXJlc2V0LWdwaW9zID0gPCZn cGlvMCBSS19QQTUgR1BJT19BQ1RJVkVfTE9XPjsKKy0JCXZkZC1zdXBwbHkgPSA8JnZjY18zdjNf cG11PjsKKy0JfTsKKysJCW1vdW50LW1hdHJpeCA9ICItMSIsICIwIiwgIjAiLAorKwkJCQkJIjAi LCAiMSIsICIwIiwKKysJCQkJCSIwIiwgIjAiLCAiMSI7CisrCX07CisrCisrCS8vIGZyb20gcGd3 aXBlb3V0cyBkdHNpCisrICAgIHRvdWNoc2NyZWVuQDI0IHsKKysgICAgICAgIGNvbXBhdGlibGUg PSAiY3lwcmVzcyx0bWE0NDgiOworKy8vICAgICAgY29tcGF0aWJsZSA9ICJjeXByZXNzLHR0MjEw MDAiOworKyAgICAgICAgaGlkLWRlc2NyLWFkZHIgPSA8MHgxPjsKKysgICAgICAgIHJlZyA9IDww eDI0PjsKKysgICAgICAgIGludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8wPjsKKysgICAgICAgIGlu dGVycnVwdHMgPSA8UktfUEE2IElSUV9UWVBFX0xFVkVMX0xPVz47CisrICAgICAgICBwaW5jdHJs LTAgPSA8JnRzX2ludF9sPiwgPCZ0c19yc3RfbD47CisrICAgICAgICBwaW5jdHJsLW5hbWVzID0g ImRlZmF1bHQiOworKyAgICAgICAgcmVzZXQtZ3Bpb3MgPSA8JmdwaW8wIFJLX1BBNSBHUElPX0FD VElWRV9MT1c+OworKyAgICAgICAgdmRkLXN1cHBseSA9IDwmdmNjXzN2M19wbXU+OworKyAgICAg ICAgdG91Y2hzY3JlZW4tbWF4LXByZXNzdXJlID0gPDQ2PjsKKysgICAgICAgIHRvdWNoc2NyZWVu LW1pbi14ID0gPDEwPjsKKysgICAgICAgIHRvdWNoc2NyZWVuLW1pbi15ID0gPDU+OworKyAgICAg ICAgdG91Y2hzY3JlZW4tc2l6ZS14ID0gPDE4NjM+OworKyAgICAgICAgdG91Y2hzY3JlZW4tc2l6 ZS15ID0gPDEzOTk+OworKyAgICAgICAgdG91Y2hzY3JlZW4teC1tbSA9IDwxODY0PjsKKysgICAg ICAgIHRvdWNoc2NyZWVuLXktbW0gPSA8MTQwMD47CisrICAgIH07CisgfTsKKworICZpMnMxXzhj aCB7CmRpZmYgLS1naXQgYS9nbnUvcGFja2FnZXMvcGF0Y2hlcy9saW51eC1saWJyZS1hcm02NC1w aW5lbm90ZS1lYmMtcGF0Y2hlcy5wYXRjaCBiL2dudS9wYWNrYWdlcy9wYXRjaGVzL2xpbnV4LWxp YnJlLWFybTY0LXBpbmVub3RlLWViYy1wYXRjaGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjdmY2Q1MDg1OGIKLS0tIC9kZXYvbnVsbAorKysgYi9nbnUvcGFj a2FnZXMvcGF0Y2hlcy9saW51eC1saWJyZS1hcm02NC1waW5lbm90ZS1lYmMtcGF0Y2hlcy5wYXRj aApAQCAtMCwwICsxLDI4NTIgQEAKK0Zyb20gY2I4MGQ5Zjk5Zjc1ZWExZWQ2YzhjNmIxOTQ5MTBi NmFlOTU3NGEwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1heGltaWxpYW4gV2Vp Z2FuZCA8bXdlaWdhbmRAbXdlaWdhbmQubmV0PgorRGF0ZTogTW9uLCAzMCBNYXkgMjAyMiAyMTow NjozMSArMDIwMAorU3ViamVjdDogW1BBVENIIDAxLzM3XSBbcm9ja2NoaXBfZWJjXSB3aGVuIGRv aW5nIHBhcnRpYWwgcmVmcmVzaGVzLCB3YWl0IGZvcgorIGVhY2ggZnJhbWUgdG8gZmluaXNoIChp LmUuIHdhaXQgZm9yIHRoZSBpcmMgZnJvbSB0aGUgZXBkIGNvbnRyb2xsZXIpIGJlZm9yZQorIHN0 YXJ0aW5nIHRvIGZpbGwgaW4gdGhlIGJ1ZmZlcnMgZm9yIHRoZSBuZXh0IGZyYW1lCisKKy0tLQor IGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYyB8IDE1ICsrKysrKysrKyst LS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQor CitkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jIGIv ZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCitpbmRleCAyODVmNDNiYzZk OTEuLmQ3ZWQ5NTRlMTYxOCAxMDA2NDQKKy0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9y b2NrY2hpcF9lYmMuYworKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2Vi Yy5jCitAQCAtNTgwLDExICs1ODAsMTEgQEAgc3RhdGljIHZvaWQgcm9ja2NoaXBfZWJjX3BhcnRp YWxfcmVmcmVzaChzdHJ1Y3Qgcm9ja2NoaXBfZWJjICplYmMsCisgCQlkbWFfc3luY19zaW5nbGVf Zm9yX2RldmljZShkZXYsIHBoYXNlX2hhbmRsZSwKKyAJCQkJCSAgIGN0eC0+cGhhc2Vfc2l6ZSwg RE1BX1RPX0RFVklDRSk7CisgCistCQlpZiAoZnJhbWUpIHsKKy0JCQlpZiAoIXdhaXRfZm9yX2Nv bXBsZXRpb25fdGltZW91dCgmZWJjLT5kaXNwbGF5X2VuZCwKKy0JCQkJCQkJIEVCQ19GUkFNRV9U SU1FT1VUKSkKKy0JCQkJZHJtX2Vycihkcm0sICJGcmFtZSAlZCB0aW1lZCBvdXQhXG4iLCBmcmFt ZSk7CistCQl9CisrCQkvKiBpZiAoZnJhbWUpIHsgKi8KKysJCS8qIAlpZiAoIXdhaXRfZm9yX2Nv bXBsZXRpb25fdGltZW91dCgmZWJjLT5kaXNwbGF5X2VuZCwgKi8KKysJCS8qIAkJCQkJIEVCQ19G UkFNRV9USU1FT1VUKSkgKi8KKysJCS8qIAkJZHJtX2Vycihkcm0sICJGcmFtZSAlZCB0aW1lZCBv dXQhXG4iLCBmcmFtZSk7ICovCisrCQkvKiB9ICovCisgCisgCQlpZiAobGlzdF9lbXB0eSgmYXJl YXMpKQorIAkJCWJyZWFrOworQEAgLTU5Nyw2ICs1OTcsMTEgQEAgc3RhdGljIHZvaWQgcm9ja2No aXBfZWJjX3BhcnRpYWxfcmVmcmVzaChzdHJ1Y3Qgcm9ja2NoaXBfZWJjICplYmMsCisgCQlyZWdt YXBfd3JpdGUoZWJjLT5yZWdtYXAsIEVCQ19EU1BfU1RBUlQsCisgCQkJICAgICBlYmMtPmRzcF9z dGFydCB8CisgCQkJICAgICBFQkNfRFNQX1NUQVJUX0RTUF9GUk1fU1RBUlQpOworKwkJaWYgKGZy YW1lKSB7CisrCQkJaWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoJmViYy0+ZGlzcGxh eV9lbmQsCisrCQkJCQkJCSBFQkNfRlJBTUVfVElNRU9VVCkpCisrCQkJCWRybV9lcnIoZHJtLCAi RnJhbWUgJWQgdGltZWQgb3V0IVxuIiwgZnJhbWUpOworKwkJfQorIAl9CisgfQorIAorLS0gCisy LjMwLjIKKworCitGcm9tIGNkYmZjZWMxODRlZDU1ZGEyZDU1YTg2MjIyNDBlNWEzMGMwM2ViMWUg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXhpbWlsaWFuIFdlaWdhbmQgPG13ZWln YW5kQG13ZWlnYW5kLm5ldD4KK0RhdGU6IE1vbiwgMzAgTWF5IDIwMjIgMjE6MTM6NTcgKzAyMDAK K1N1YmplY3Q6IFtQQVRDSCAwMi8zN10gW3JvY2tjaGlwX2ViY10gY2hhbmdlIHRoZSBkbWEgbWFw cGluZ3MgaW4KKyByb2NrY2hpcF9lYmNfcGFydGlhbF9yZWZyZXNoIGFjY29yZGluZyB0byB0aGUg ZG9jdW1lbnRhdGlvbiBpbgorIERvY3VtZW50YXRpb24vY29yZS1hcGkvZG1hLWFwaS5yc3QgYW5k IHVzZSBkbWFfbWFwX3NpbmdsZSB0byBnZXQgZG1hIGFkZHJlc3MKKworLS0tCisgZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jIHwgMTkgKysrKysrKysrKysrKysrKy0tLQor IDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jIGIvZHJpdmVy cy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCitpbmRleCBkN2VkOTU0ZTE2MTguLmIw ZGZjNDkzYzA1OSAxMDA2NDQKKy0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hp cF9lYmMuYworKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCitA QCAtMTMsNiArMTMsNyBAQAorICNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+CisgI2luY2x1 ZGUgPGxpbnV4L3JlZ21hcC5oPgorICNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIu aD4KKysjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KKyAKKyAjaW5jbHVkZSA8ZHJtL2Ry bV9hdG9taWMuaD4KKyAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CitAQCAtNDc5 LDggKzQ4MCw4IEBAIHN0YXRpYyB2b2lkIHJvY2tjaGlwX2ViY19ibGl0X3BpeGVscyhjb25zdCBz dHJ1Y3Qgcm9ja2NoaXBfZWJjX2N0eCAqY3R4LAorIHN0YXRpYyB2b2lkIHJvY2tjaGlwX2ViY19w YXJ0aWFsX3JlZnJlc2goc3RydWN0IHJvY2tjaGlwX2ViYyAqZWJjLAorIAkJCQkJIHN0cnVjdCBy b2NrY2hpcF9lYmNfY3R4ICpjdHgpCisgeworLQlkbWFfYWRkcl90IG5leHRfaGFuZGxlID0gdmly dF90b19waHlzKGN0eC0+bmV4dCk7CistCWRtYV9hZGRyX3QgcHJldl9oYW5kbGUgPSB2aXJ0X3Rv X3BoeXMoY3R4LT5wcmV2KTsKKysJLy8gZG1hX2FkZHJfdCBuZXh0X2hhbmRsZSA9IHZpcnRfdG9f cGh5cyhjdHgtPm5leHQpOworKwkvLyBkbWFfYWRkcl90IHByZXZfaGFuZGxlID0gdmlydF90b19w aHlzKGN0eC0+cHJldik7CisgCXN0cnVjdCByb2NrY2hpcF9lYmNfYXJlYSAqYXJlYSwgKm5leHRf YXJlYTsKKyAJdTMyIGxhc3RfcGhhc2UgPSBlYmMtPmx1dC5udW1fcGhhc2VzIC0gMTsKKyAJc3Ry dWN0IGRybV9kZXZpY2UgKmRybSA9ICZlYmMtPmRybTsKK0BAIC00ODksMTAgKzQ5MCwxOCBAQCBz dGF0aWMgdm9pZCByb2NrY2hpcF9lYmNfcGFydGlhbF9yZWZyZXNoKHN0cnVjdCByb2NrY2hpcF9l YmMgKmViYywKKyAJTElTVF9IRUFEKGFyZWFzKTsKKyAJdTMyIGZyYW1lOworIAorKwlkbWFfYWRk cl90IG5leHRfaGFuZGxlID0gZG1hX21hcF9zaW5nbGUoZGV2LCBjdHgtPm5leHQsIGN0eC0+Z3Jh eTRfc2l6ZSwgRE1BX1RPX0RFVklDRSk7CisrCWRtYV9hZGRyX3QgcHJldl9oYW5kbGUgPSBkbWFf bWFwX3NpbmdsZShkZXYsIGN0eC0+cHJldiwgY3R4LT5ncmF5NF9zaXplLCBETUFfVE9fREVWSUNF KTsKKysKKysJZG1hX2FkZHJfdCBwaGFzZV9oYW5kbGVzWzJdOworKwlwaGFzZV9oYW5kbGVzWzBd ID0gZG1hX21hcF9zaW5nbGUoZGV2LCBjdHgtPnBoYXNlWzBdLCBjdHgtPmdyYXk0X3NpemUsIERN QV9UT19ERVZJQ0UpOworKwlwaGFzZV9oYW5kbGVzWzFdID0gZG1hX21hcF9zaW5nbGUoZGV2LCBj dHgtPnBoYXNlWzFdLCBjdHgtPmdyYXk0X3NpemUsIERNQV9UT19ERVZJQ0UpOworKworIAlmb3Ig KGZyYW1lID0gMDs7IGZyYW1lKyspIHsKKyAJCS8qIFN3YXAgcGhhc2UgYnVmZmVycyB0byBtaW5p bWl6ZSBsYXRlbmN5IGJldHdlZW4gZnJhbWVzLiAqLworIAkJdTggKnBoYXNlX2J1ZmZlciA9IGN0 eC0+cGhhc2VbZnJhbWUgJSAyXTsKKy0JCWRtYV9hZGRyX3QgcGhhc2VfaGFuZGxlID0gdmlydF90 b19waHlzKHBoYXNlX2J1ZmZlcik7CisrCQkvLyBkbWFfYWRkcl90IHBoYXNlX2hhbmRsZSA9IHZp cnRfdG9fcGh5cyhwaGFzZV9idWZmZXIpOworKwkJZG1hX2FkZHJfdCBwaGFzZV9oYW5kbGUgPSBw aGFzZV9oYW5kbGVzW2ZyYW1lICUgMl07CisgCQlib29sIHN5bmNfbmV4dCA9IGZhbHNlOworIAkJ Ym9vbCBzeW5jX3ByZXYgPSBmYWxzZTsKKyAKK0BAIC02MDMsNiArNjEyLDEwIEBAIHN0YXRpYyB2 b2lkIHJvY2tjaGlwX2ViY19wYXJ0aWFsX3JlZnJlc2goc3RydWN0IHJvY2tjaGlwX2ViYyAqZWJj LAorIAkJCQlkcm1fZXJyKGRybSwgIkZyYW1lICVkIHRpbWVkIG91dCFcbiIsIGZyYW1lKTsKKyAJ CX0KKyAJfQorKwlkbWFfdW5tYXBfc2luZ2xlKGRldiwgbmV4dF9oYW5kbGUsIGN0eC0+Z3JheTRf c2l6ZSwgRE1BX1RPX0RFVklDRSk7CisrCWRtYV91bm1hcF9zaW5nbGUoZGV2LCBwcmV2X2hhbmRs ZSwgY3R4LT5ncmF5NF9zaXplLCBETUFfVE9fREVWSUNFKTsKKysJZG1hX3VubWFwX3NpbmdsZShk ZXYsIHBoYXNlX2hhbmRsZXNbMF0sIGN0eC0+Z3JheTRfc2l6ZSwgRE1BX1RPX0RFVklDRSk7Cisr CWRtYV91bm1hcF9zaW5nbGUoZGV2LCBwaGFzZV9oYW5kbGVzWzFdLCBjdHgtPmdyYXk0X3NpemUs IERNQV9UT19ERVZJQ0UpOworIH0KKyAKKyBzdGF0aWMgdm9pZCByb2NrY2hpcF9lYmNfcmVmcmVz aChzdHJ1Y3Qgcm9ja2NoaXBfZWJjICplYmMsCistLSAKKzIuMzAuMgorCisKK0Zyb20gZjc5ZTE2 ZGY5YThmNzg1M2UyMDZkNWY0Y2IxMjJjYTIzMWEwYjJhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKK0Zyb206IE1heGltaWxpYW4gV2VpZ2FuZCA8bXdlaWdhbmRAbXdlaWdhbmQubmV0PgorRGF0 ZTogTW9uLCAzMCBNYXkgMjAyMiAyMToyNToyOSArMDIwMAorU3ViamVjdDogW1BBVENIIDAzLzM3 XSBbcm9ja2NoaXBfZWJjXSBTb21lIHBlb3BsZSAoaW5jbHVkaW5nIG1lIG9uIGEgRGViaWFuCisg c2lkIGluc3RhbGxhdGlvbikgc2VlIGtlcm5lbCBwYW5pY3MvaGFuZ3Mgb24gcmVib290L3NodXRk b3duIChhbmQgbW9kdWxlCisgdW5sb2FkKSB3aXRoIHRoZSBuZXcgZHJpdmVyLiAgSW52ZXN0aWdh dGlvbiBzaG93cyB0aGF0IHRoZSByZWZyZXNoIHRocmVhZAorIGhhbmdzIG9uIHRoZSBzY2hlZHVs ZSgpIGNvbW1hbmQsIHdoaWNoIGxlYWQgbWUgdG8gYmVsaWV2ZSB0aGF0IHRoZSB0aHJlYWQgaXMK KyBub3QgcHJvcGVybHkgc2h1dCBkb3duIHdoZW4gdGhlIGtlcm5lbCBtb2R1bGUgaXMgdHJpZ2dl cmVkIHRvIHNodXRkb3duLiBUaGlzCisgcGF0Y2ggYXR0ZW1wdHMgdG8KKworLSBleHBsaWNpdGx5 IHNodXQgZG93biB0aGUgcmVmcmVzaCB0aHJlYWQgYmVmb3JlIHRlcm1pbmF0aW9uCistIGFkZHMg c29tZSBjb250cm9sIGNvbW1hbmRzIHRvIHF1aWNrbHkgZmluaXNoIGZvciB2YXJpb3VzIHBhcmsv c3RvcAorICBzdGF0ZXMKKy0gb25seSBhdHRlbXB0cyB0byBwYXJrIHRoZSByZWZyZXNoIHRocmVh ZCBpZiBpdCBpcyBub3QgZGVhZCB5ZXQgKHdoaWNoCisgIGNhdXNlZCBhIGtlcm5lbCBwYW5pYyBv biBzaHV0ZG93bikKKy0tLQorIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMu YyB8IDI0ICsrKysrKysrKysrKysrKy0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNl cnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tj aGlwX2ViYy5jCitpbmRleCBiMGRmYzQ5M2MwNTkuLjRkZjczNzk0MjgxYiAxMDA2NDQKKy0tLSBh L2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYworKysrIGIvZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCitAQCAtMTMsNiArMTMsNyBAQAorICNpbmNs dWRlIDxsaW51eC9wbV9ydW50aW1lLmg+CisgI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorICNp bmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KKysjaW5jbHVkZSA8bGludXgvc2No ZWQuaD4KKyAjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KKyAKKyAjaW5jbHVkZSA8ZHJt L2RybV9hdG9taWMuaD4KK0BAIC03NjAsMTIgKzc2MSwxMyBAQCBzdGF0aWMgaW50IHJvY2tjaGlw X2ViY19yZWZyZXNoX3RocmVhZCh2b2lkICpkYXRhKQorIAkJCXJvY2tjaGlwX2ViY19yZWZyZXNo KGViYywgY3R4LCB0cnVlLCBEUk1fRVBEX1dGX1JFU0VUKTsKKyAJCX0KKyAKKy0JCXdoaWxlICgh a3RocmVhZF9zaG91bGRfcGFyaygpKSB7CisrCQl3aGlsZSAoKCFrdGhyZWFkX3Nob3VsZF9wYXJr KCkpICYmICgha3RocmVhZF9zaG91bGRfc3RvcCgpKSkgeworIAkJCXJvY2tjaGlwX2ViY19yZWZy ZXNoKGViYywgY3R4LCBmYWxzZSwgZGVmYXVsdF93YXZlZm9ybSk7CisgCisgCQkJc2V0X2N1cnJl bnRfc3RhdGUoVEFTS19JRExFKTsKKy0JCQlpZiAobGlzdF9lbXB0eSgmY3R4LT5xdWV1ZSkpCisr CQkJaWYgKGxpc3RfZW1wdHkoJmN0eC0+cXVldWUpICYmICgha3RocmVhZF9zaG91bGRfc3RvcCgp KSAmJiAoIWt0aHJlYWRfc2hvdWxkX3BhcmsoKSkpeworIAkJCQlzY2hlZHVsZSgpOworKwkJCX0K KyAJCQlfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfUlVOTklORyk7CisgCQl9CisgCitAQCAtNzc1 LDggKzc3Nyw5IEBAIHN0YXRpYyBpbnQgcm9ja2NoaXBfZWJjX3JlZnJlc2hfdGhyZWFkKHZvaWQg KmRhdGEpCisgCQkgKi8KKyAJCW1lbXNldChjdHgtPm5leHQsIDB4ZmYsIGN0eC0+Z3JheTRfc2l6 ZSk7CisgCQlyb2NrY2hpcF9lYmNfcmVmcmVzaChlYmMsIGN0eCwgdHJ1ZSwgRFJNX0VQRF9XRl9H QzE2KTsKKy0KKy0JCWt0aHJlYWRfcGFya21lKCk7CisrCQlpZiAoIWt0aHJlYWRfc2hvdWxkX3N0 b3AoKSl7CisrCQkJa3RocmVhZF9wYXJrbWUoKTsKKysJCX0KKyAJfQorIAorIAlyZXR1cm4gMDsK K0BAIC05MjUsNyArOTI4LDcgQEAgc3RhdGljIHZvaWQgcm9ja2NoaXBfZWJjX2NydGNfYXRvbWlj X2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisgCisgCWNydGNfc3RhdGUgPSBkcm1fYXRv bWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7CisgCWlmIChjcnRjX3N0YXRlLT5t b2RlX2NoYW5nZWQpCistCQlrdGhyZWFkX3VucGFyayhlYmMtPnJlZnJlc2hfdGhyZWFkKTsKKysJ CQlrdGhyZWFkX3VucGFyayhlYmMtPnJlZnJlc2hfdGhyZWFkKTsKKyB9CisgCisgc3RhdGljIHZv aWQgcm9ja2NoaXBfZWJjX2NydGNfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRj LAorQEAgLTkzNSw4ICs5MzgsMTEgQEAgc3RhdGljIHZvaWQgcm9ja2NoaXBfZWJjX2NydGNfYXRv bWljX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAorIAlzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKmNydGNfc3RhdGU7CisgCisgCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfY3J0 Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7CistCWlmIChjcnRjX3N0YXRlLT5tb2RlX2NoYW5nZWQpCist CQlrdGhyZWFkX3BhcmsoZWJjLT5yZWZyZXNoX3RocmVhZCk7CisrCWlmIChjcnRjX3N0YXRlLT5t b2RlX2NoYW5nZWQpeworKwkJaWYgKCEgKChlYmMtPnJlZnJlc2hfdGhyZWFkLT5fX3N0YXRlKSAm IChUQVNLX0RFQUQpKSl7CisrCQkJa3RocmVhZF9wYXJrKGViYy0+cmVmcmVzaF90aHJlYWQpOwor KwkJfQorKwl9CisgfQorIAorIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfaGVscGVyX2Z1 bmNzIHJvY2tjaGlwX2ViY19jcnRjX2hlbHBlcl9mdW5jcyA9IHsKK0BAIC0xNTczLDkgKzE1Nzks OCBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX2ViY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikKKyAJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKyAKKyAJZHJtX2Rl dl91bnJlZ2lzdGVyKCZlYmMtPmRybSk7CistCWRybV9hdG9taWNfaGVscGVyX3NodXRkb3duKCZl YmMtPmRybSk7CistCisgCWt0aHJlYWRfc3RvcChlYmMtPnJlZnJlc2hfdGhyZWFkKTsKKysJZHJt X2F0b21pY19oZWxwZXJfc2h1dGRvd24oJmViYy0+ZHJtKTsKKyAKKyAJcG1fcnVudGltZV9kaXNh YmxlKGRldik7CisgCWlmICghcG1fcnVudGltZV9zdGF0dXNfc3VzcGVuZGVkKGRldikpCitAQCAt MTU4OSw2ICsxNTk0LDcgQEAgc3RhdGljIHZvaWQgcm9ja2NoaXBfZWJjX3NodXRkb3duKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCisgCXN0cnVjdCByb2NrY2hpcF9lYmMgKmViYyA9IHBs YXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ ZGV2OworIAorKwlrdGhyZWFkX3N0b3AoZWJjLT5yZWZyZXNoX3RocmVhZCk7CisgCWRybV9hdG9t aWNfaGVscGVyX3NodXRkb3duKCZlYmMtPmRybSk7CisgCisgCWlmICghcG1fcnVudGltZV9zdGF0 dXNfc3VzcGVuZGVkKGRldikpCistLSAKKzIuMzAuMgorCisKK0Zyb20gNzRlOWQ4MTRjMjk4ZjA2 NGEwN2ViYzc3YjFlN2VjNDQ3Y2MzNDBmNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206 IE1heGltaWxpYW4gV2VpZ2FuZCA8bXdlaWdhbmRAbXdlaWdhbmQubmV0PgorRGF0ZTogTW9uLCAz MCBNYXkgMjAyMiAyMjoyMDo0MSArMDIwMAorU3ViamVjdDogW1BBVENIIDA0LzM3XSBbcm9ja2No aXBfZWJjXSB1c2UgZG1hX3N5bmNfc2luZ2xlX2Zvcl9jcHUgYmVmb3JlCisgd3JpdGluZyB0byBk bWEgYnVmZmVycworCistLS0KKyBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJj LmMgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jIGIvZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCitpbmRleCA0ZGY3Mzc5NDI4MWIuLmQ4YWY0 M2ZlOWY0MiAxMDA2NDQKKy0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9l YmMuYworKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCitAQCAt NTA2LDYgKzUwNiw5IEBAIHN0YXRpYyB2b2lkIHJvY2tjaGlwX2ViY19wYXJ0aWFsX3JlZnJlc2go c3RydWN0IHJvY2tjaGlwX2ViYyAqZWJjLAorIAkJYm9vbCBzeW5jX25leHQgPSBmYWxzZTsKKyAJ CWJvb2wgc3luY19wcmV2ID0gZmFsc2U7CisgCisrCQkvLyBub3cgdGhlIENQVSBpcyBhbGxvd2Vk IHRvIGNoYW5nZSB0aGUgcGhhc2UgYnVmZmVyCisrCQlkbWFfc3luY19zaW5nbGVfZm9yX2NwdShk ZXYsIHBoYXNlX2hhbmRsZSwgcGhhc2Vfc2l6ZSwgRE1BX1RPX0RFVklDRSk7CisrCisgCQkvKiBN b3ZlIHRoZSBxdWV1ZWQgZGFtYWdlIGFyZWFzIHRvIHRoZSBsb2NhbCBsaXN0LiAqLworIAkJc3Bp bl9sb2NrKCZjdHgtPnF1ZXVlX2xvY2spOworIAkJbGlzdF9zcGxpY2VfdGFpbF9pbml0KCZjdHgt PnF1ZXVlLCAmYXJlYXMpOworQEAgLTUzMyw2ICs1MzYsNyBAQCBzdGF0aWMgdm9pZCByb2NrY2hp cF9lYmNfcGFydGlhbF9yZWZyZXNoKHN0cnVjdCByb2NrY2hpcF9lYmMgKmViYywKKyAKKyAJCQkv KiBDb3B5IGN0eC0+ZmluYWwgdG8gY3R4LT5uZXh0IG9uIHRoZSBmaXJzdCBmcmFtZS4gKi8KKyAJ CQlpZiAoZnJhbWVfZGVsdGEgPT0gMCkgeworKwkJCQlkbWFfc3luY19zaW5nbGVfZm9yX2NwdShk ZXYsIG5leHRfaGFuZGxlLCBncmF5NF9zaXplLCBETUFfVE9fREVWSUNFKTsKKyAJCQkJcm9ja2No aXBfZWJjX2JsaXRfcGl4ZWxzKGN0eCwgY3R4LT5uZXh0LAorIAkJCQkJCQkgY3R4LT5maW5hbCwK KyAJCQkJCQkJICZhcmVhLT5jbGlwKTsKK0BAIC01NjgsNiArNTcyLDcgQEAgc3RhdGljIHZvaWQg cm9ja2NoaXBfZWJjX3BhcnRpYWxfcmVmcmVzaChzdHJ1Y3Qgcm9ja2NoaXBfZWJjICplYmMsCisg CQkJICogYWxzbyBlbnN1cmVzIGJvdGggcGhhc2UgYnVmZmVycyBnZXQgc2V0IHRvIDB4ZmYuCisg CQkJICovCisgCQkJaWYgKGZyYW1lX2RlbHRhID4gbGFzdF9waGFzZSkgeworKwkJCQlkbWFfc3lu Y19zaW5nbGVfZm9yX2NwdShkZXYsIHByZXZfaGFuZGxlLCBncmF5NF9zaXplLCBETUFfVE9fREVW SUNFKTsKKyAJCQkJcm9ja2NoaXBfZWJjX2JsaXRfcGl4ZWxzKGN0eCwgY3R4LT5wcmV2LAorIAkJ CQkJCQkgY3R4LT5uZXh0LAorIAkJCQkJCQkgJmFyZWEtPmNsaXApOworLS0gCisyLjMwLjIKKwor CitGcm9tIDM5Njg2ZDI3ZjAxOTNhNjI1YjZmNTY5YjhkZTg4ZTFiODVlOTI0ODAgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXhpbWlsaWFuIFdlaWdhbmQgPG13ZWlnYW5kQG13ZWln YW5kLm5ldD4KK0RhdGU6IE1vbiwgMzAgTWF5IDIwMjIgMjI6Mzk6MDAgKzAyMDAKK1N1YmplY3Q6 IFtQQVRDSCAwNS8zN10gcm9ja2NoaXBfZWJjIGZpeCBwcmV2aW91cyBjb21taXQKKworLS0tCisg ZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jIHwgMiArLQorIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jIGIvZHJpdmVycy9ncHUvZHJtL3Jv Y2tjaGlwL3JvY2tjaGlwX2ViYy5jCitpbmRleCBkOGFmNDNmZTlmNDIuLjZhMGYxMjUwNDBkZiAx MDA2NDQKKy0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYworKysr IGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCitAQCAtNTA3LDcgKzUw Nyw3IEBAIHN0YXRpYyB2b2lkIHJvY2tjaGlwX2ViY19wYXJ0aWFsX3JlZnJlc2goc3RydWN0IHJv Y2tjaGlwX2ViYyAqZWJjLAorIAkJYm9vbCBzeW5jX3ByZXYgPSBmYWxzZTsKKyAKKyAJCS8vIG5v dyB0aGUgQ1BVIGlzIGFsbG93ZWQgdG8gY2hhbmdlIHRoZSBwaGFzZSBidWZmZXIKKy0JCWRtYV9z eW5jX3NpbmdsZV9mb3JfY3B1KGRldiwgcGhhc2VfaGFuZGxlLCBwaGFzZV9zaXplLCBETUFfVE9f REVWSUNFKTsKKysJCWRtYV9zeW5jX3NpbmdsZV9mb3JfY3B1KGRldiwgcGhhc2VfaGFuZGxlLCBj dHgtPnBoYXNlX3NpemUsIERNQV9UT19ERVZJQ0UpOworIAorIAkJLyogTW92ZSB0aGUgcXVldWVk IGRhbWFnZSBhcmVhcyB0byB0aGUgbG9jYWwgbGlzdC4gKi8KKyAJCXNwaW5fbG9jaygmY3R4LT5x dWV1ZV9sb2NrKTsKKy0tIAorMi4zMC4yCisKKworRnJvbSBhMzQ3YTA5MDliYjdiZGU3M2JhNTNi OWViYWUwNDRmN2ZkMTc0NjZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF4aW1p bGlhbiBXZWlnYW5kIDxtd2VpZ2FuZEBtd2VpZ2FuZC5uZXQ+CitEYXRlOiBGcmksIDMgSnVuIDIw MjIgMjE6MTM6MjggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAwNi8zN10gW3JvY2tjaGlwX2ViY10g Y29udmVydCBhbGwgcmVtYWluaW5nIHVzZXMgb2YKKyB2aXJ0X3RvX3BoeXMgdG8gdGhlIGRtYSBh cGkKKworLS0tCisgZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jIHwgMzcg KysrKysrKysrKysrKystLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25z KCspLCAxNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2Nr Y2hpcC9yb2NrY2hpcF9lYmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9l YmMuYworaW5kZXggNmEwZjEyNTA0MGRmLi44N2RlYjgwOThkMmQgMTAwNjQ0CistLS0gYS9kcml2 ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKKysrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYworQEAgLTMwOCwxNSArMzA4LDE3IEBAIHRvX2ViY19j cnRjX3N0YXRlKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKKyB9CisgCisgc3Rh dGljIHZvaWQgcm9ja2NoaXBfZWJjX2dsb2JhbF9yZWZyZXNoKHN0cnVjdCByb2NrY2hpcF9lYmMg KmViYywKKy0JCQkJCWNvbnN0IHN0cnVjdCByb2NrY2hpcF9lYmNfY3R4ICpjdHgpCisrCQkJCQlz dHJ1Y3Qgcm9ja2NoaXBfZWJjX2N0eCAqY3R4LAorKwkJCQkJIGRtYV9hZGRyX3QgbmV4dF9oYW5k bGUsCisrCQkJCQkgZG1hX2FkZHJfdCBwcmV2X2hhbmRsZQorKwkJCQkJKQorIHsKKyAJc3RydWN0 IGRybV9kZXZpY2UgKmRybSA9ICZlYmMtPmRybTsKKyAJdTMyIGdyYXk0X3NpemUgPSBjdHgtPmdy YXk0X3NpemU7CisgCXN0cnVjdCBkZXZpY2UgKmRldiA9IGRybS0+ZGV2OworIAorLQlkbWFfc3lu Y19zaW5nbGVfZm9yX2RldmljZShkZXYsIHZpcnRfdG9fcGh5cyhjdHgtPm5leHQpLAorIAkJCQkg ICBncmF5NF9zaXplLCBETUFfVE9fREVWSUNFKTsKKy0JZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZp Y2UoZGV2LCB2aXJ0X3RvX3BoeXMoY3R4LT5wcmV2KSwKKysJZG1hX3N5bmNfc2luZ2xlX2Zvcl9k ZXZpY2UoZGV2LCBwcmV2X2hhbmRsZSwKKyAJCQkJICAgZ3JheTRfc2l6ZSwgRE1BX1RPX0RFVklD RSk7CisgCisgCXJlaW5pdF9jb21wbGV0aW9uKCZlYmMtPmRpc3BsYXlfZW5kKTsKK0BAIC00Nzks MTAgKzQ4MSwxMSBAQCBzdGF0aWMgdm9pZCByb2NrY2hpcF9lYmNfYmxpdF9waXhlbHMoY29uc3Qg c3RydWN0IHJvY2tjaGlwX2ViY19jdHggKmN0eCwKKyB9CisgCisgc3RhdGljIHZvaWQgcm9ja2No aXBfZWJjX3BhcnRpYWxfcmVmcmVzaChzdHJ1Y3Qgcm9ja2NoaXBfZWJjICplYmMsCistCQkJCQkg c3RydWN0IHJvY2tjaGlwX2ViY19jdHggKmN0eCkKKysJCQkJCSBzdHJ1Y3Qgcm9ja2NoaXBfZWJj X2N0eCAqY3R4LAorKwkJCQkJIGRtYV9hZGRyX3QgbmV4dF9oYW5kbGUsCisrCQkJCQkgZG1hX2Fk ZHJfdCBwcmV2X2hhbmRsZQorKwkJCQkJICkKKyB7CistCS8vIGRtYV9hZGRyX3QgbmV4dF9oYW5k bGUgPSB2aXJ0X3RvX3BoeXMoY3R4LT5uZXh0KTsKKy0JLy8gZG1hX2FkZHJfdCBwcmV2X2hhbmRs ZSA9IHZpcnRfdG9fcGh5cyhjdHgtPnByZXYpOworIAlzdHJ1Y3Qgcm9ja2NoaXBfZWJjX2FyZWEg KmFyZWEsICpuZXh0X2FyZWE7CisgCXUzMiBsYXN0X3BoYXNlID0gZWJjLT5sdXQubnVtX3BoYXNl cyAtIDE7CisgCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSAmZWJjLT5kcm07CitAQCAtNDkxLDkg KzQ5NCw2IEBAIHN0YXRpYyB2b2lkIHJvY2tjaGlwX2ViY19wYXJ0aWFsX3JlZnJlc2goc3RydWN0 IHJvY2tjaGlwX2ViYyAqZWJjLAorIAlMSVNUX0hFQUQoYXJlYXMpOworIAl1MzIgZnJhbWU7Cisg CistCWRtYV9hZGRyX3QgbmV4dF9oYW5kbGUgPSBkbWFfbWFwX3NpbmdsZShkZXYsIGN0eC0+bmV4 dCwgY3R4LT5ncmF5NF9zaXplLCBETUFfVE9fREVWSUNFKTsKKy0JZG1hX2FkZHJfdCBwcmV2X2hh bmRsZSA9IGRtYV9tYXBfc2luZ2xlKGRldiwgY3R4LT5wcmV2LCBjdHgtPmdyYXk0X3NpemUsIERN QV9UT19ERVZJQ0UpOworLQorIAlkbWFfYWRkcl90IHBoYXNlX2hhbmRsZXNbMl07CisgCXBoYXNl X2hhbmRsZXNbMF0gPSBkbWFfbWFwX3NpbmdsZShkZXYsIGN0eC0+cGhhc2VbMF0sIGN0eC0+Z3Jh eTRfc2l6ZSwgRE1BX1RPX0RFVklDRSk7CisgCXBoYXNlX2hhbmRsZXNbMV0gPSBkbWFfbWFwX3Np bmdsZShkZXYsIGN0eC0+cGhhc2VbMV0sIGN0eC0+Z3JheTRfc2l6ZSwgRE1BX1RPX0RFVklDRSk7 CitAQCAtNTAxLDcgKzUwMSw2IEBAIHN0YXRpYyB2b2lkIHJvY2tjaGlwX2ViY19wYXJ0aWFsX3Jl ZnJlc2goc3RydWN0IHJvY2tjaGlwX2ViYyAqZWJjLAorIAlmb3IgKGZyYW1lID0gMDs7IGZyYW1l KyspIHsKKyAJCS8qIFN3YXAgcGhhc2UgYnVmZmVycyB0byBtaW5pbWl6ZSBsYXRlbmN5IGJldHdl ZW4gZnJhbWVzLiAqLworIAkJdTggKnBoYXNlX2J1ZmZlciA9IGN0eC0+cGhhc2VbZnJhbWUgJSAy XTsKKy0JCS8vIGRtYV9hZGRyX3QgcGhhc2VfaGFuZGxlID0gdmlydF90b19waHlzKHBoYXNlX2J1 ZmZlcik7CisgCQlkbWFfYWRkcl90IHBoYXNlX2hhbmRsZSA9IHBoYXNlX2hhbmRsZXNbZnJhbWUg JSAyXTsKKyAJCWJvb2wgc3luY19uZXh0ID0gZmFsc2U7CisgCQlib29sIHN5bmNfcHJldiA9IGZh bHNlOworQEAgLTYxOCw4ICs2MTcsNiBAQCBzdGF0aWMgdm9pZCByb2NrY2hpcF9lYmNfcGFydGlh bF9yZWZyZXNoKHN0cnVjdCByb2NrY2hpcF9lYmMgKmViYywKKyAJCQkJZHJtX2Vycihkcm0sICJG cmFtZSAlZCB0aW1lZCBvdXQhXG4iLCBmcmFtZSk7CisgCQl9CisgCX0KKy0JZG1hX3VubWFwX3Np bmdsZShkZXYsIG5leHRfaGFuZGxlLCBjdHgtPmdyYXk0X3NpemUsIERNQV9UT19ERVZJQ0UpOwor LQlkbWFfdW5tYXBfc2luZ2xlKGRldiwgcHJldl9oYW5kbGUsIGN0eC0+Z3JheTRfc2l6ZSwgRE1B X1RPX0RFVklDRSk7CisgCWRtYV91bm1hcF9zaW5nbGUoZGV2LCBwaGFzZV9oYW5kbGVzWzBdLCBj dHgtPmdyYXk0X3NpemUsIERNQV9UT19ERVZJQ0UpOworIAlkbWFfdW5tYXBfc2luZ2xlKGRldiwg cGhhc2VfaGFuZGxlc1sxXSwgY3R4LT5ncmF5NF9zaXplLCBETUFfVE9fREVWSUNFKTsKKyB9CitA QCAtNjMzLDYgKzYzMCw4IEBAIHN0YXRpYyB2b2lkIHJvY2tjaGlwX2ViY19yZWZyZXNoKHN0cnVj dCByb2NrY2hpcF9lYmMgKmViYywKKyAJdTMyIGRzcF9jdHJsID0gMCwgZXBkX2N0cmwgPSAwOwor IAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBkcm0tPmRldjsKKyAJaW50IHJldCwgdGVtcGVyYXR1cmU7 CisrCWRtYV9hZGRyX3QgbmV4dF9oYW5kbGU7CisrCWRtYV9hZGRyX3QgcHJldl9oYW5kbGU7Cisg CisgCS8qIFJlc3VtZSBhc3luY2hyb25vdXNseSB3aGlsZSBwcmVwYXJpbmcgdG8gcmVmcmVzaC4g Ki8KKyAJcmV0ID0gcG1fcnVudGltZV9nZXQoZGV2KTsKK0BAIC03MDAsMTUgKzY5OSwyMSBAQCBz dGF0aWMgdm9pZCByb2NrY2hpcF9lYmNfcmVmcmVzaChzdHJ1Y3Qgcm9ja2NoaXBfZWJjICplYmMs CisgCQkJICAgRUJDX0RTUF9DVFJMX0RTUF9MVVRfTU9ERSwKKyAJCQkgICBkc3BfY3RybCk7Cisg CisrCW5leHRfaGFuZGxlID0gZG1hX21hcF9zaW5nbGUoZGV2LCBjdHgtPm5leHQsIGN0eC0+Z3Jh eTRfc2l6ZSwgRE1BX1RPX0RFVklDRSk7CisrCXByZXZfaGFuZGxlID0gZG1hX21hcF9zaW5nbGUo ZGV2LCBjdHgtPnByZXYsIGN0eC0+Z3JheTRfc2l6ZSwgRE1BX1RPX0RFVklDRSk7CisrCisgCXJl Z21hcF93cml0ZShlYmMtPnJlZ21hcCwgRUJDX1dJTl9NU1QwLAorLQkJICAgICB2aXJ0X3RvX3Bo eXMoY3R4LT5uZXh0KSk7CisrCQkgICAgIG5leHRfaGFuZGxlKTsKKyAJcmVnbWFwX3dyaXRlKGVi Yy0+cmVnbWFwLCBFQkNfV0lOX01TVDEsCistCQkgICAgIHZpcnRfdG9fcGh5cyhjdHgtPnByZXYp KTsKKysJCSAgICAgcHJldl9oYW5kbGUpOworIAorIAlpZiAoZ2xvYmFsX3JlZnJlc2gpCistCQly b2NrY2hpcF9lYmNfZ2xvYmFsX3JlZnJlc2goZWJjLCBjdHgpOworKwkJcm9ja2NoaXBfZWJjX2ds b2JhbF9yZWZyZXNoKGViYywgY3R4LCBuZXh0X2hhbmRsZSwgcHJldl9oYW5kbGUpOworIAllbHNl CistCQlyb2NrY2hpcF9lYmNfcGFydGlhbF9yZWZyZXNoKGViYywgY3R4KTsKKysJCXJvY2tjaGlw X2ViY19wYXJ0aWFsX3JlZnJlc2goZWJjLCBjdHgsIG5leHRfaGFuZGxlLCBwcmV2X2hhbmRsZSk7 CisrCisrCWRtYV91bm1hcF9zaW5nbGUoZGV2LCBuZXh0X2hhbmRsZSwgY3R4LT5ncmF5NF9zaXpl LCBETUFfVE9fREVWSUNFKTsKKysJZG1hX3VubWFwX3NpbmdsZShkZXYsIHByZXZfaGFuZGxlLCBj dHgtPmdyYXk0X3NpemUsIERNQV9UT19ERVZJQ0UpOworIAorIAkvKiBEcml2ZSB0aGUgb3V0cHV0 IHBpbnMgbG93IG9uY2UgdGhlIHJlZnJlc2ggaXMgY29tcGxldGUuICovCisgCXJlZ21hcF93cml0 ZShlYmMtPnJlZ21hcCwgRUJDX0RTUF9TVEFSVCwKKy0tIAorMi4zMC4yCisKKworRnJvbSAyOGEw MjRlYTA3NzEwNWE1NjdmODE1MWYxODJmOWUyOWMxOTAyN2U1IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQorRnJvbTogTWF4aW1pbGlhbiBXZWlnYW5kIDxtd2VpZ2FuZEBtd2VpZ2FuZC5uZXQ+CitE YXRlOiBGcmksIDMgSnVuIDIwMjIgMjE6MTY6MzcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAwNy8z N10gW3JvY2tjaGlwX2ViY10gYWRkIG1pc3NpbmcgZG1hIHNpbmMgY2FsbAorCistLS0KKyBkcml2 ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hp cC9yb2NrY2hpcF9lYmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMu YworaW5kZXggODdkZWI4MDk4ZDJkLi4wNjgxNTA0ZmM4ZDcgMTAwNjQ0CistLS0gYS9kcml2ZXJz L2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKKysrKyBiL2RyaXZlcnMvZ3B1L2RybS9y b2NrY2hpcC9yb2NrY2hpcF9lYmMuYworQEAgLTMxNyw2ICszMTcsNyBAQCBzdGF0aWMgdm9pZCBy b2NrY2hpcF9lYmNfZ2xvYmFsX3JlZnJlc2goc3RydWN0IHJvY2tjaGlwX2ViYyAqZWJjLAorIAl1 MzIgZ3JheTRfc2l6ZSA9IGN0eC0+Z3JheTRfc2l6ZTsKKyAJc3RydWN0IGRldmljZSAqZGV2ID0g ZHJtLT5kZXY7CisgCisrCWRtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKGRldiwgbmV4dF9oYW5k bGUsCisgCQkJCSAgIGdyYXk0X3NpemUsIERNQV9UT19ERVZJQ0UpOworIAlkbWFfc3luY19zaW5n bGVfZm9yX2RldmljZShkZXYsIHByZXZfaGFuZGxlLAorIAkJCQkgICBncmF5NF9zaXplLCBETUFf VE9fREVWSUNFKTsKKy0tIAorMi4zMC4yCisKKworRnJvbSA3ZTllMTlkNTM0MmY1YjliZjc5ZDBk Y2RkZWUyMTA4ZDE5OTFiN2JmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF4aW1p bGlhbiBXZWlnYW5kIDxtd2VpZ2FuZEBtd2VpZ2FuZC5uZXQ+CitEYXRlOiBGcmksIDMgSnVuIDIw MjIgMjE6MTk6MTQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAwOC8zN10gW3JvY2tjaGlwX2ViY10g Z2xvYmFsIHJlZnJlc2ggc2hvdWxkIHVzZSBjdHgtPmZpbmFsCisgaW5zdGVhZCBvZiBjdHgtPm5l eHQgdG8gZ2V0IHRoZSBjdXJyZW50IGltYWdlLiBBbHNvLCBkZWxldGUgYWxsIHBlbmRpbmcgYXJl YQorIHVwZGF0ZXMgd2hlbiBkb2luZyBhIGdsb2JhbCByZWZyZXNoLgorCistLS0KKyBkcml2ZXJz L2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMgfCAxOSArKysrKysrKysrKysrKysrKyst CisgMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYyBiL2RyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYworaW5kZXggMDY4MTUwNGZjOGQ3Li40 NzA2MzhmNTlkNDMgMTAwNjQ0CistLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2No aXBfZWJjLmMKKysrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYwor QEAgLTMxNyw2ICszMTcsMTUgQEAgc3RhdGljIHZvaWQgcm9ja2NoaXBfZWJjX2dsb2JhbF9yZWZy ZXNoKHN0cnVjdCByb2NrY2hpcF9lYmMgKmViYywKKyAJdTMyIGdyYXk0X3NpemUgPSBjdHgtPmdy YXk0X3NpemU7CisgCXN0cnVjdCBkZXZpY2UgKmRldiA9IGRybS0+ZGV2OworIAorKwlzdHJ1Y3Qg cm9ja2NoaXBfZWJjX2FyZWEgKmFyZWEsICpuZXh0X2FyZWE7CisrCUxJU1RfSEVBRChhcmVhcyk7 CisrCisrCXNwaW5fbG9jaygmY3R4LT5xdWV1ZV9sb2NrKTsKKysJbGlzdF9zcGxpY2VfdGFpbF9p bml0KCZjdHgtPnF1ZXVlLCAmYXJlYXMpOworKwlzcGluX3VubG9jaygmY3R4LT5xdWV1ZV9sb2Nr KTsKKysKKysJbWVtY3B5KGN0eC0+bmV4dCwgY3R4LT5maW5hbCwgZ3JheTRfc2l6ZSk7CisrCisg CWRtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKGRldiwgbmV4dF9oYW5kbGUsCisgCQkJCSAgIGdy YXk0X3NpemUsIERNQV9UT19ERVZJQ0UpOworIAlkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShk ZXYsIHByZXZfaGFuZGxlLAorQEAgLTMyOSw2ICszMzgsMTIgQEAgc3RhdGljIHZvaWQgcm9ja2No aXBfZWJjX2dsb2JhbF9yZWZyZXNoKHN0cnVjdCByb2NrY2hpcF9lYmMgKmViYywKKyAJCSAgICAg ZWJjLT5kc3Bfc3RhcnQgfAorIAkJICAgICBFQkNfRFNQX1NUQVJUX0RTUF9GUk1fVE9UQUwoZWJj LT5sdXQubnVtX3BoYXNlcyAtIDEpIHwKKyAJCSAgICAgRUJDX0RTUF9TVEFSVF9EU1BfRlJNX1NU QVJUKTsKKysJLy8gd2hpbGUgd2Ugd2FpdCBmb3IgdGhlIHJlZnJlc2gsIGRlbGV0ZSBhbGwgc2No ZWR1bGVkIGFyZWFzCisrCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShhcmVhLCBuZXh0X2FyZWEs ICZhcmVhcywgbGlzdCkgeworKwkJbGlzdF9kZWwoJmFyZWEtPmxpc3QpOworKwkJa2ZyZWUoYXJl YSk7CisrCX0KKysKKyAJaWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoJmViYy0+ZGlz cGxheV9lbmQsCisgCQkJCQkgRUJDX1JFRlJFU0hfVElNRU9VVCkpCisgCQlkcm1fZXJyKGRybSwg IlJlZnJlc2ggdGltZWQgb3V0IVxuIik7CitAQCAtNzU2LDYgKzc3MSw3IEBAIHN0YXRpYyBpbnQg cm9ja2NoaXBfZWJjX3JlZnJlc2hfdGhyZWFkKHZvaWQgKmRhdGEpCisgCQkgKi8KKyAJCW1lbXNl dChjdHgtPnByZXYsIDB4ZmYsIGN0eC0+Z3JheTRfc2l6ZSk7CisgCQltZW1zZXQoY3R4LT5uZXh0 LCAweGZmLCBjdHgtPmdyYXk0X3NpemUpOworKwkJbWVtc2V0KGN0eC0+ZmluYWwsIDB4ZmYsIGN0 eC0+Z3JheTRfc2l6ZSk7CisgCQkvKiBOT1RFOiBJbiBkaXJlY3QgbW9kZSwgdGhlIHBoYXNlIGJ1 ZmZlcnMgYXJlIHJlcHVycG9zZWQgZm9yCisgCQkgKiBzb3VyY2UgZHJpdmVyIHBvbGFyaXR5IGRh dGEsIHdoZXJlIHRoZSBuby1vcCB2YWx1ZSBpcyAwLiAqLworIAkJbWVtc2V0KGN0eC0+cGhhc2Vb MF0sIGRpcmVjdF9tb2RlID8gMCA6IDB4ZmYsIGN0eC0+cGhhc2Vfc2l6ZSk7CitAQCAtNzg2LDcg KzgwMiw4IEBAIHN0YXRpYyBpbnQgcm9ja2NoaXBfZWJjX3JlZnJlc2hfdGhyZWFkKHZvaWQgKmRh dGEpCisgCQkgKiBDbGVhciB0aGUgZGlzcGxheSBiZWZvcmUgZGlzYWJsaW5nIHRoZSBDUlRDLiBV c2UgdGhlCisgCQkgKiBoaWdoZXN0LXF1YWxpdHkgd2F2ZWZvcm0gdG8gbWluaW1pemUgdmlzaWJs ZSBhcnRpZmFjdHMuCisgCQkgKi8KKy0JCW1lbXNldChjdHgtPm5leHQsIDB4ZmYsIGN0eC0+Z3Jh eTRfc2l6ZSk7CisrCQkvLyBtZW1zZXQoY3R4LT5uZXh0LCAweGZmLCBjdHgtPmdyYXk0X3NpemUp OworKwkJbWVtY3B5KGN0eC0+ZmluYWwsIGViYy0+b2ZmX3NjcmVlbiwgY3R4LT5ncmF5NF9zaXpl KTsKKyAJCXJvY2tjaGlwX2ViY19yZWZyZXNoKGViYywgY3R4LCB0cnVlLCBEUk1fRVBEX1dGX0dD MTYpOworIAkJaWYgKCFrdGhyZWFkX3Nob3VsZF9zdG9wKCkpeworIAkJCWt0aHJlYWRfcGFya21l KCk7CistLSAKKzIuMzAuMgorCisKK0Zyb20gNTNiZjQyY2NhMWFhYWJmMTBlMDNhOGMyZTQ1NWJl YTE2YjJhYzUzOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1heGltaWxpYW4gV2Vp Z2FuZCA8bXdlaWdhbmRAbXdlaWdhbmQubmV0PgorRGF0ZTogRnJpLCAzIEp1biAyMDIyIDIxOjI3 OjM4ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMDkvMzddIFJldmVydCAiW3JvY2tjaGlwX2ViY10g Z2xvYmFsIHJlZnJlc2ggc2hvdWxkIHVzZQorIGN0eC0+ZmluYWwgaW5zdGVhZCBvZiBjdHgtPm5l eHQiCisKK1RoaXMgcmV2ZXJ0cyBjb21taXQgNTk5YTMwNTdkZjAyYWI5MTg4ZDNkNmM5ZGI1YjVk Njg0NmE0NDVjOS4KKy0tLQorIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMu YyB8IDE5ICstLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDE4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tj aGlwL3JvY2tjaGlwX2ViYy5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2Vi Yy5jCitpbmRleCA0NzA2MzhmNTlkNDMuLjA2ODE1MDRmYzhkNyAxMDA2NDQKKy0tLSBhL2RyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYworKysrIGIvZHJpdmVycy9ncHUvZHJt L3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCitAQCAtMzE3LDE1ICszMTcsNiBAQCBzdGF0aWMgdm9p ZCByb2NrY2hpcF9lYmNfZ2xvYmFsX3JlZnJlc2goc3RydWN0IHJvY2tjaGlwX2ViYyAqZWJjLAor IAl1MzIgZ3JheTRfc2l6ZSA9IGN0eC0+Z3JheTRfc2l6ZTsKKyAJc3RydWN0IGRldmljZSAqZGV2 ID0gZHJtLT5kZXY7CisgCistCXN0cnVjdCByb2NrY2hpcF9lYmNfYXJlYSAqYXJlYSwgKm5leHRf YXJlYTsKKy0JTElTVF9IRUFEKGFyZWFzKTsKKy0KKy0Jc3Bpbl9sb2NrKCZjdHgtPnF1ZXVlX2xv Y2spOworLQlsaXN0X3NwbGljZV90YWlsX2luaXQoJmN0eC0+cXVldWUsICZhcmVhcyk7CistCXNw aW5fdW5sb2NrKCZjdHgtPnF1ZXVlX2xvY2spOworLQorLQltZW1jcHkoY3R4LT5uZXh0LCBjdHgt PmZpbmFsLCBncmF5NF9zaXplKTsKKy0KKyAJZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoZGV2 LCBuZXh0X2hhbmRsZSwKKyAJCQkJICAgZ3JheTRfc2l6ZSwgRE1BX1RPX0RFVklDRSk7CisgCWRt YV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKGRldiwgcHJldl9oYW5kbGUsCitAQCAtMzM4LDEyICsz MjksNiBAQCBzdGF0aWMgdm9pZCByb2NrY2hpcF9lYmNfZ2xvYmFsX3JlZnJlc2goc3RydWN0IHJv Y2tjaGlwX2ViYyAqZWJjLAorIAkJICAgICBlYmMtPmRzcF9zdGFydCB8CisgCQkgICAgIEVCQ19E U1BfU1RBUlRfRFNQX0ZSTV9UT1RBTChlYmMtPmx1dC5udW1fcGhhc2VzIC0gMSkgfAorIAkJICAg ICBFQkNfRFNQX1NUQVJUX0RTUF9GUk1fU1RBUlQpOworLQkvLyB3aGlsZSB3ZSB3YWl0IGZvciB0 aGUgcmVmcmVzaCwgZGVsZXRlIGFsbCBzY2hlZHVsZWQgYXJlYXMKKy0JbGlzdF9mb3JfZWFjaF9l bnRyeV9zYWZlKGFyZWEsIG5leHRfYXJlYSwgJmFyZWFzLCBsaXN0KSB7CistCQlsaXN0X2RlbCgm YXJlYS0+bGlzdCk7CistCQlrZnJlZShhcmVhKTsKKy0JfQorLQorIAlpZiAoIXdhaXRfZm9yX2Nv bXBsZXRpb25fdGltZW91dCgmZWJjLT5kaXNwbGF5X2VuZCwKKyAJCQkJCSBFQkNfUkVGUkVTSF9U SU1FT1VUKSkKKyAJCWRybV9lcnIoZHJtLCAiUmVmcmVzaCB0aW1lZCBvdXQhXG4iKTsKK0BAIC03 NzEsNyArNzU2LDYgQEAgc3RhdGljIGludCByb2NrY2hpcF9lYmNfcmVmcmVzaF90aHJlYWQodm9p ZCAqZGF0YSkKKyAJCSAqLworIAkJbWVtc2V0KGN0eC0+cHJldiwgMHhmZiwgY3R4LT5ncmF5NF9z aXplKTsKKyAJCW1lbXNldChjdHgtPm5leHQsIDB4ZmYsIGN0eC0+Z3JheTRfc2l6ZSk7CistCQlt ZW1zZXQoY3R4LT5maW5hbCwgMHhmZiwgY3R4LT5ncmF5NF9zaXplKTsKKyAJCS8qIE5PVEU6IElu IGRpcmVjdCBtb2RlLCB0aGUgcGhhc2UgYnVmZmVycyBhcmUgcmVwdXJwb3NlZCBmb3IKKyAJCSAq IHNvdXJjZSBkcml2ZXIgcG9sYXJpdHkgZGF0YSwgd2hlcmUgdGhlIG5vLW9wIHZhbHVlIGlzIDAu ICovCisgCQltZW1zZXQoY3R4LT5waGFzZVswXSwgZGlyZWN0X21vZGUgPyAwIDogMHhmZiwgY3R4 LT5waGFzZV9zaXplKTsKK0BAIC04MDIsOCArNzg2LDcgQEAgc3RhdGljIGludCByb2NrY2hpcF9l YmNfcmVmcmVzaF90aHJlYWQodm9pZCAqZGF0YSkKKyAJCSAqIENsZWFyIHRoZSBkaXNwbGF5IGJl Zm9yZSBkaXNhYmxpbmcgdGhlIENSVEMuIFVzZSB0aGUKKyAJCSAqIGhpZ2hlc3QtcXVhbGl0eSB3 YXZlZm9ybSB0byBtaW5pbWl6ZSB2aXNpYmxlIGFydGlmYWN0cy4KKyAJCSAqLworLQkJLy8gbWVt c2V0KGN0eC0+bmV4dCwgMHhmZiwgY3R4LT5ncmF5NF9zaXplKTsKKy0JCW1lbWNweShjdHgtPmZp bmFsLCBlYmMtPm9mZl9zY3JlZW4sIGN0eC0+Z3JheTRfc2l6ZSk7CisrCQltZW1zZXQoY3R4LT5u ZXh0LCAweGZmLCBjdHgtPmdyYXk0X3NpemUpOworIAkJcm9ja2NoaXBfZWJjX3JlZnJlc2goZWJj LCBjdHgsIHRydWUsIERSTV9FUERfV0ZfR0MxNik7CisgCQlpZiAoIWt0aHJlYWRfc2hvdWxkX3N0 b3AoKSl7CisgCQkJa3RocmVhZF9wYXJrbWUoKTsKKy0tIAorMi4zMC4yCisKKworRnJvbSBjNGJh YmM1YWU1MjhkM2M4YzI2MGZlNjU4NGYwZDE4MTJkZGE2NWVmIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQorRnJvbTogTWF4aW1pbGlhbiBXZWlnYW5kIDxtd2VpZ2FuZEBtd2VpZ2FuZC5uZXQ+CitE YXRlOiBTYXQsIDQgSnVuIDIwMjIgMTk6Mzk6NDggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAxMC8z N10gW3JvY2tjaGlwX2ViY10gZ2xvYmFsIHJlZnJlc2ggc2hvdWxkIHVzZSBjdHgtPmZpbmFsCisg aW5zdGVhZCBvZiBjdHgtPm5leHQgICAgIHRvIGdldCB0aGUgY3VycmVudCBpbWFnZS4gQWxzbywg ZGVsZXRlIGFsbCBwZW5kaW5nCisgYXJlYSB1cGRhdGVzIHdoZW4gICAgIGRvaW5nIGEgZ2xvYmFs IHJlZnJlc2guCisKKy0tLQorIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMu YyB8IDE3ICsrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMo KykKKworZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMu YyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYworaW5kZXggMDY4MTUw NGZjOGQ3Li40MTg1MmMyMzgwMmUgMTAwNjQ0CistLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2No aXAvcm9ja2NoaXBfZWJjLmMKKysrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hp cF9lYmMuYworQEAgLTMxNyw2ICszMTcsMTUgQEAgc3RhdGljIHZvaWQgcm9ja2NoaXBfZWJjX2ds b2JhbF9yZWZyZXNoKHN0cnVjdCByb2NrY2hpcF9lYmMgKmViYywKKyAJdTMyIGdyYXk0X3NpemUg PSBjdHgtPmdyYXk0X3NpemU7CisgCXN0cnVjdCBkZXZpY2UgKmRldiA9IGRybS0+ZGV2OworIAor KwlzdHJ1Y3Qgcm9ja2NoaXBfZWJjX2FyZWEgKmFyZWEsICpuZXh0X2FyZWE7CisrCUxJU1RfSEVB RChhcmVhcyk7CisrCisrCXNwaW5fbG9jaygmY3R4LT5xdWV1ZV9sb2NrKTsKKysJbGlzdF9zcGxp Y2VfdGFpbF9pbml0KCZjdHgtPnF1ZXVlLCAmYXJlYXMpOworKwlzcGluX3VubG9jaygmY3R4LT5x dWV1ZV9sb2NrKTsKKysKKysJbWVtY3B5KGN0eC0+bmV4dCwgY3R4LT5maW5hbCwgZ3JheTRfc2l6 ZSk7CisrCisgCWRtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKGRldiwgbmV4dF9oYW5kbGUsCisg CQkJCSAgIGdyYXk0X3NpemUsIERNQV9UT19ERVZJQ0UpOworIAlkbWFfc3luY19zaW5nbGVfZm9y X2RldmljZShkZXYsIHByZXZfaGFuZGxlLAorQEAgLTMyOSw2ICszMzgsMTIgQEAgc3RhdGljIHZv aWQgcm9ja2NoaXBfZWJjX2dsb2JhbF9yZWZyZXNoKHN0cnVjdCByb2NrY2hpcF9lYmMgKmViYywK KyAJCSAgICAgZWJjLT5kc3Bfc3RhcnQgfAorIAkJICAgICBFQkNfRFNQX1NUQVJUX0RTUF9GUk1f VE9UQUwoZWJjLT5sdXQubnVtX3BoYXNlcyAtIDEpIHwKKyAJCSAgICAgRUJDX0RTUF9TVEFSVF9E U1BfRlJNX1NUQVJUKTsKKysJLy8gd2hpbGUgd2Ugd2FpdCBmb3IgdGhlIHJlZnJlc2gsIGRlbGV0 ZSBhbGwgc2NoZWR1bGVkIGFyZWFzCisrCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShhcmVhLCBu ZXh0X2FyZWEsICZhcmVhcywgbGlzdCkgeworKwkJbGlzdF9kZWwoJmFyZWEtPmxpc3QpOworKwkJ a2ZyZWUoYXJlYSk7CisrCX0KKysKKyAJaWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQo JmViYy0+ZGlzcGxheV9lbmQsCisgCQkJCQkgRUJDX1JFRlJFU0hfVElNRU9VVCkpCisgCQlkcm1f ZXJyKGRybSwgIlJlZnJlc2ggdGltZWQgb3V0IVxuIik7CitAQCAtNzU2LDYgKzc3MSw4IEBAIHN0 YXRpYyBpbnQgcm9ja2NoaXBfZWJjX3JlZnJlc2hfdGhyZWFkKHZvaWQgKmRhdGEpCisgCQkgKi8K KyAJCW1lbXNldChjdHgtPnByZXYsIDB4ZmYsIGN0eC0+Z3JheTRfc2l6ZSk7CisgCQltZW1zZXQo Y3R4LT5uZXh0LCAweGZmLCBjdHgtPmdyYXk0X3NpemUpOworKwkJbWVtc2V0KGN0eC0+ZmluYWws IDB4ZmYsIGN0eC0+Z3JheTRfc2l6ZSk7CisrCisgCQkvKiBOT1RFOiBJbiBkaXJlY3QgbW9kZSwg dGhlIHBoYXNlIGJ1ZmZlcnMgYXJlIHJlcHVycG9zZWQgZm9yCisgCQkgKiBzb3VyY2UgZHJpdmVy IHBvbGFyaXR5IGRhdGEsIHdoZXJlIHRoZSBuby1vcCB2YWx1ZSBpcyAwLiAqLworIAkJbWVtc2V0 KGN0eC0+cGhhc2VbMF0sIGRpcmVjdF9tb2RlID8gMCA6IDB4ZmYsIGN0eC0+cGhhc2Vfc2l6ZSk7 CistLSAKKzIuMzAuMgorCisKK0Zyb20gYmIwZTk0OTA0YzkxODg2NzViZmI2YjNlMjY0Y2M0MDlj NTU4ZWE3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1heGltaWxpYW4gV2VpZ2Fu ZCA8bXdlaWdhbmRAbXdlaWdhbmQubmV0PgorRGF0ZTogU2F0LCA0IEp1biAyMDIyIDE5OjQ0OjAw ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMTEvMzddIFtyb2NrY2hpcF9lYmNdIGFkZCB0aGUgcG9z c2liaWxpdHkgdG8gdHJpZ2dlciBvbmUKKyBnbG9iYWwgcmVmcmVzaCB1c2luZyBhIG1vZHVsZS1n bG9iYWwgdmFyaWFibGUgZG9fb25lX2Z1bGxfcmVmcmVzaAorCistLS0KKyBkcml2ZXJzL2dwdS9k cm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMgfCAyMCArKysrKysrKysrKysrKysrKysrLQorIDEg ZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMgYi9kcml2ZXJzL2dw dS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK2luZGV4IDQxODUyYzIzODAyZS4uYjFjOGY5 NjczNTBiIDEwMDY0NAorLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2Vi Yy5jCisrKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK0BAIC0x NTQsNiArMTU0LDkgQEAgc3RydWN0IHJvY2tjaGlwX2ViYyB7CisgCXUzMgkJCQlkc3Bfc3RhcnQ7 CisgCWJvb2wJCQkJbHV0X2NoYW5nZWQ7CisgCWJvb2wJCQkJcmVzZXRfY29tcGxldGU7CisrCXNw aW5sb2NrX3QJCQlyZWZyZXNoX29uY2VfbG9jazsKKysJLy8gc2hvdWxkIHRoaXMgZ28gaW50byB0 aGUgY3R4PworKwlib29sIGRvX29uZV9mdWxsX3JlZnJlc2g7CisgfTsKKyAKKyBzdGF0aWMgaW50 IGRlZmF1bHRfd2F2ZWZvcm0gPSBEUk1fRVBEX1dGX0dDMTY7CitAQCAtNzQ0LDYgKzc0Nyw3IEBA IHN0YXRpYyBpbnQgcm9ja2NoaXBfZWJjX3JlZnJlc2hfdGhyZWFkKHZvaWQgKmRhdGEpCisgewor IAlzdHJ1Y3Qgcm9ja2NoaXBfZWJjICplYmMgPSBkYXRhOworIAlzdHJ1Y3Qgcm9ja2NoaXBfZWJj X2N0eCAqY3R4OworKwlib29sIG9uZV9mdWxsX3JlZnJlc2g7CisgCisgCXdoaWxlICgha3RocmVh ZF9zaG91bGRfc3RvcCgpKSB7CisgCQkvKiBUaGUgY29udGV4dCB3aWxsIGNoYW5nZSBlYWNoIHRp bWUgdGhlIHRocmVhZCBpcyB1bnBhcmtlZC4gKi8KK0BAIC03OTAsNyArNzk0LDE4IEBAIHN0YXRp YyBpbnQgcm9ja2NoaXBfZWJjX3JlZnJlc2hfdGhyZWFkKHZvaWQgKmRhdGEpCisgCQl9CisgCisg CQl3aGlsZSAoKCFrdGhyZWFkX3Nob3VsZF9wYXJrKCkpICYmICgha3RocmVhZF9zaG91bGRfc3Rv cCgpKSkgeworLQkJCXJvY2tjaGlwX2ViY19yZWZyZXNoKGViYywgY3R4LCBmYWxzZSwgZGVmYXVs dF93YXZlZm9ybSk7CisrCQkJc3Bpbl9sb2NrKCZlYmMtPnJlZnJlc2hfb25jZV9sb2NrKTsKKysJ CQlvbmVfZnVsbF9yZWZyZXNoID0gZWJjLT5kb19vbmVfZnVsbF9yZWZyZXNoOworKwkJCXNwaW5f dW5sb2NrKCZlYmMtPnJlZnJlc2hfb25jZV9sb2NrKTsKKysKKysJCQlpZiAob25lX2Z1bGxfcmVm cmVzaCkgeworKwkJCQlzcGluX2xvY2soJmViYy0+cmVmcmVzaF9vbmNlX2xvY2spOworKwkJCQll YmMtPmRvX29uZV9mdWxsX3JlZnJlc2ggPSBmYWxzZTsKKysJCQkJc3Bpbl91bmxvY2soJmViYy0+ cmVmcmVzaF9vbmNlX2xvY2spOworKwkJCQlyb2NrY2hpcF9lYmNfcmVmcmVzaChlYmMsIGN0eCwg dHJ1ZSwgZGVmYXVsdF93YXZlZm9ybSk7CisrCQkJfSBlbHNlIHsKKysJCQkJcm9ja2NoaXBfZWJj X3JlZnJlc2goZWJjLCBjdHgsIGZhbHNlLCBkZWZhdWx0X3dhdmVmb3JtKTsKKysJCQl9CisgCisg CQkJc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19JRExFKTsKKyAJCQlpZiAobGlzdF9lbXB0eSgmY3R4 LT5xdWV1ZSkgJiYgKCFrdGhyZWFkX3Nob3VsZF9zdG9wKCkpICYmICgha3RocmVhZF9zaG91bGRf cGFyaygpKSl7CitAQCAtMTUxOSw2ICsxNTM0LDkgQEAgc3RhdGljIGludCByb2NrY2hpcF9lYmNf cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKKyAKKyAJZWJjID0gZGV2bV9kcm1f ZGV2X2FsbG9jKGRldiwgJnJvY2tjaGlwX2ViY19kcm1fZHJpdmVyLAorIAkJCQkgc3RydWN0IHJv Y2tjaGlwX2ViYywgZHJtKTsKKysKKysJc3Bpbl9sb2NrX2luaXQoJmViYy0+cmVmcmVzaF9vbmNl X2xvY2spOworKworIAlpZiAoSVNfRVJSKGViYykpCisgCQlyZXR1cm4gUFRSX0VSUihlYmMpOwor IAorLS0gCisyLjMwLjIKKworCitGcm9tIDJiNjJiNmM1ODUzMjAwY2YxZjFmNjMwMTBkOGVkYjU2 YThhMDhjZWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXhpbWlsaWFuIFdlaWdh bmQgPG13ZWlnYW5kQG13ZWlnYW5kLm5ldD4KK0RhdGU6IFNhdCwgNCBKdW4gMjAyMiAxOTo0Njo0 NiArMDIwMAorU3ViamVjdDogW1BBVENIIDEyLzM3XSBbcm9ja2NoaXBfZWJjXSBhZGQgcG9zc2li aWxpdHkgdG8gY2hhbmdlIHRoZQorIG9mZi1zY3JlZW4sIGkuZS4gdGhlIGNvbnRlbnQgb2YgdGhl IHNjcmVlbiB3aGVuIHRoZSBtb2R1bGUgaXMgdW5sb2FkZWQuIFRoZQorIGNvbnRlbnQgaXMgcmVh ZCBvbiBtb2R1bGUtbG9hZCB0aW1lIGZyb20gdGhlIGZpcm13YXJlIGZpbGUKKyByb2NrY2hpcC9y b2NrY2hpcF9lYmNfZGVmYXVsdF9zY3JlZW4uYmluLiBUaGUgZmlsZSBtdXN0IGJlIG9mIHNpemUg MTMxNDE0NAorIGJ5dGVzIGNvbnRhaW5pbmcgdGhlIDQgYml0IGdyYXkgdmFsdWVzIGZvciBlYWNo IHBpeGVsCisKKy0tLQorIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYyB8 IDI1ICsrKysrKysrKysrKysrKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMjQgaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Jv Y2tjaGlwL3JvY2tjaGlwX2ViYy5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlw X2ViYy5jCitpbmRleCBiMWM4Zjk2NzM1MGIuLmVkZjk4YjA0OGEwNyAxMDA2NDQKKy0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYworKysrIGIvZHJpdmVycy9ncHUv ZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCitAQCAtMTUsNiArMTUsNyBAQAorICNpbmNsdWRl IDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KKyAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4K KyAjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KKysjaW5jbHVkZSA8bGludXgvZmlybXdh cmUuaD4KKyAKKyAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KKyAjaW5jbHVkZSA8ZHJtL2Ry bV9hdG9taWNfaGVscGVyLmg+CitAQCAtMTU0LDYgKzE1NSw5IEBAIHN0cnVjdCByb2NrY2hpcF9l YmMgeworIAl1MzIJCQkJZHNwX3N0YXJ0OworIAlib29sCQkJCWx1dF9jaGFuZ2VkOworIAlib29s CQkJCXJlc2V0X2NvbXBsZXRlOworKwkvLyBvbmUgc2NyZWVuIGNvbnRlbnQ6IDE4NzIgKiAxNDA0 IC8gMgorKwkvLyB0aGUgYXJyYXkgc2l6ZSBzaG91bGQgcHJvYmFibHkgYmUgc2V0IGR5bmFtaWNh bGx5Li4uCisrCWNoYXIgb2ZmX3NjcmVlblsxMzE0MTQ0XTsKKyAJc3BpbmxvY2tfdAkJCXJlZnJl c2hfb25jZV9sb2NrOworIAkvLyBzaG91bGQgdGhpcyBnbyBpbnRvIHRoZSBjdHg/CisgCWJvb2wg ZG9fb25lX2Z1bGxfcmVmcmVzaDsKK0BAIC04MTgsNyArODIyLDcgQEAgc3RhdGljIGludCByb2Nr Y2hpcF9lYmNfcmVmcmVzaF90aHJlYWQodm9pZCAqZGF0YSkKKyAJCSAqIENsZWFyIHRoZSBkaXNw bGF5IGJlZm9yZSBkaXNhYmxpbmcgdGhlIENSVEMuIFVzZSB0aGUKKyAJCSAqIGhpZ2hlc3QtcXVh bGl0eSB3YXZlZm9ybSB0byBtaW5pbWl6ZSB2aXNpYmxlIGFydGlmYWN0cy4KKyAJCSAqLworLQkJ bWVtc2V0KGN0eC0+bmV4dCwgMHhmZiwgY3R4LT5ncmF5NF9zaXplKTsKKysJCW1lbWNweShjdHgt PmZpbmFsLCBlYmMtPm9mZl9zY3JlZW4sIGN0eC0+Z3JheTRfc2l6ZSk7CisgCQlyb2NrY2hpcF9l YmNfcmVmcmVzaChlYmMsIGN0eCwgdHJ1ZSwgRFJNX0VQRF9XRl9HQzE2KTsKKyAJCWlmICgha3Ro cmVhZF9zaG91bGRfc3RvcCgpKXsKKyAJCQlrdGhyZWFkX3BhcmttZSgpOworQEAgLTEzMzQsNiAr MTMzOCw3IEBAIHN0YXRpYyBpbnQgcm9ja2NoaXBfZWJjX2RybV9pbml0KHN0cnVjdCByb2NrY2hp cF9lYmMgKmViYykKKyAJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9ICZlYmMtPmRybTsKKyAJc3Ry dWN0IGRybV9icmlkZ2UgKmJyaWRnZTsKKyAJaW50IHJldDsKKysJY29uc3Qgc3RydWN0IGZpcm13 YXJlICogZGVmYXVsdF9vZmZzY3JlZW47CisgCisgCXJldCA9IGRybW1fZXBkX2x1dF9maWxlX2lu aXQoZHJtLCAmZWJjLT5sdXRfZmlsZSwgInJvY2tjaGlwL2ViYy53YmYiKTsKKyAJaWYgKHJldCkK K0BAIC0xMzkyLDYgKzEzOTcsMjQgQEAgc3RhdGljIGludCByb2NrY2hpcF9lYmNfZHJtX2luaXQo c3RydWN0IHJvY2tjaGlwX2ViYyAqZWJjKQorIAorIAlkcm1fZmJkZXZfZ2VuZXJpY19zZXR1cChk cm0sIDApOworIAorKwkvLyBjaGVjayBpZiB0aGVyZSBpcyBhIGRlZmF1bHQgb2ZmLXNjcmVlbgor KwlpZiAoIXJlcXVlc3RfZmlybXdhcmUoJmRlZmF1bHRfb2Zmc2NyZWVuLCAicm9ja2NoaXAvcm9j a2NoaXBfZWJjX2RlZmF1bHRfc2NyZWVuLmJpbiIsIGRybS0+ZGV2KSkKKysJeworKwkJcHJpbnRr KEtFUk5fSU5GTyAicm9ja2NoaXBfZWJjOiBkZWZhdWx0IG9mZi1zY3JlZW4gZmlsZSBmb3VuZFxu Iik7CisrCQlpZiAoZGVmYXVsdF9vZmZzY3JlZW4tPnNpemUgIT0gMTMxNDE0NCkKKysJCQlkcm1f ZXJyKGRybSwgIlNpemUgb2YgZGVmYXVsdCBvZmZzY3JlZW4gZGF0YSBmaWxlIGlzIG5vdCAxMzE0 MTQ0XG4iKTsKKysJCWVsc2UgeworKwkJCXByaW50ayhLRVJOX0lORk8gInJvY2tjaGlwX2ViYzog bG9hZGluZyBkZWZhdWx0IG9mZi1zY3JlZW5cbiIpOworKwkJCW1lbWNweShlYmMtPm9mZl9zY3Jl ZW4sIGRlZmF1bHRfb2Zmc2NyZWVuLT5kYXRhLCAxMzE0MTQ0KTsKKysJCX0KKysJfSBlbHNlIHsK KysJCXByaW50ayhLRVJOX0lORk8gInJvY2tjaGlwX2ViYzogbm8gZGVmYXVsdCBvZmYtc2NyZWVu IGZpbGUgZm91bmRcbiIpOworKwkJLy8gZmlsbCB0aGUgb2ZmLXNjcmVlbiB3aXRoIHNvbWUgdmFs dWVzCisrCQltZW1zZXQoZWJjLT5vZmZfc2NyZWVuLCAweGZmLCAxMzE0MTQ0KTsKKysJCS8qIG1l bXNldChlYmMtPm9mZl9zY3JlZW4sIDB4MDAsIDU1NjE0NCk7ICovCisrCX0KKysJcmVsZWFzZV9m aXJtd2FyZShkZWZhdWx0X29mZnNjcmVlbik7CisrCisgCXJldHVybiAwOworIH0KKyAKKy0tIAor Mi4zMC4yCisKKworRnJvbSBmN2ZiMjFlMTY0MzljOGUyNzE3ODZhMjA1NDNjN2VkNzRlODkyNzUw IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF4aW1pbGlhbiBXZWlnYW5kIDxtd2Vp Z2FuZEBtd2VpZ2FuZC5uZXQ+CitEYXRlOiBTYXQsIDQgSnVuIDIwMjIgMTk6NDk6MTQgKzAyMDAK K1N1YmplY3Q6IFtQQVRDSCAxMy8zN10gW3JvY2tjaGlwX2ViY10gaW1wbGVtZW50IGEgc2ltcGxl IGF1dG9fcmVmcmVzaCBzY2hlbWUKKyB3aGljaCB0cmlnZ2VycyBhIGdsb2JhbCByZWZyZXNoIGFm dGVyIGEgY2VydGFpbiBhcmVhIGhhcyBiZWVuIGRyYXduIHVzaW5nIHRoZQorIHBhcnRpYWwgcmVm cmVzaCBwYXRoLiBUaGUgdGhyZXNob2xkIG9mIGRyYXduIGFyZWEgYWZ0ZXIgd2hpY2ggdGhlIHJl ZnJlc2ggaXMKKyB0cmlnZ2VyZWQgY2FuIGJlIG1vZGlmaWVkIHVzaW5nIHRoZSBzeXNmcyBmaWxl CisgL3N5cy9tb2R1bGUvcm9ja2NoaXBfZWJjL3BhcmFtZXRlcnMvcmVmcmVzaF90aHJlc2hvbGQu IEEgZGVmYXVsdCB2YWx1ZSBvZiAyMAorIChzY3JlZW4gYXJlYXMpIHNlZW1zIGdvb2QgZW5vdWdo IHRvIGdldCBhIHJlZnJlc2ggYWZ0ZXIgNSBwYWdlcyBvZiBlYm9vaworIHJlYWRpbmcuIFRoaXMg c2VlbXMgdG8gaW1wbHkgdGhhdCBxdWl0ZSBhIGxvdCBvZiBkdXBsaWNhdGUgZHJhd3MgYXJlIG1h ZGUgZm9yCisgZWFjaCBwYWdlIHR1cm4gKG5vdCBpbnZlc3RpZ2F0ZWQgZnVydGhlcikuIFRoZSBh dXRvLXJlZnJlc2ggZmVhdHVyZSBpcworIGRlYWN0aXZhdGVkIGJ5IGRlZmF1bHQgYW5kIGNhbiBi ZSBhY3RpdmF0ZWQgdXNpbmcgdGhlIG1vZHVsZSBwYXJhbWV0ZXIKKyBhdXRvX3JlZnJlc2ggb3Ig Ynkgd3JpdGluZyAxIHRvCisgL3N5cy9tb2R1bGUvcm9ja2NoaXBfZWJjL3BhcmFtZXRlcnMvYXV0 b19yZWZyZXNoCisKKy0tLQorIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMu YyB8IDMzICsrKysrKysrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMzMgaW5z ZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tj aGlwX2ViYy5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCitpbmRl eCBlZGY5OGIwNDhhMDcuLjY5ZWYzNGU4NmJhNyAxMDA2NDQKKy0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYworKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlw L3JvY2tjaGlwX2ViYy5jCitAQCAtMTgzLDYgKzE4MywxNCBAQCBzdGF0aWMgYm9vbCBza2lwX3Jl c2V0ID0gZmFsc2U7CisgbW9kdWxlX3BhcmFtKHNraXBfcmVzZXQsIGJvb2wsIDA0NDQpOworIE1P RFVMRV9QQVJNX0RFU0Moc2tpcF9yZXNldCwgInNraXAgdGhlIGluaXRpYWwgZGlzcGxheSByZXNl dCIpOworIAorK3N0YXRpYyBib29sIGF1dG9fcmVmcmVzaCA9IGZhbHNlOworK21vZHVsZV9wYXJh bShhdXRvX3JlZnJlc2gsIGJvb2wsIFNfSVJVR098U19JV1VTUik7CisrTU9EVUxFX1BBUk1fREVT QyhhdXRvX3JlZnJlc2gsICJhdXRvIHJlZnJlc2ggdGhlIHNjcmVlbiBiYXNlZCBvbiBwYXJ0aWFs IHJlZnJlc2hlZCBhcmVhIik7CisrCisrc3RhdGljIGludCByZWZyZXNoX3RocmVzaG9sZCA9IDIw OworK21vZHVsZV9wYXJhbShyZWZyZXNoX3RocmVzaG9sZCwgaW50LCBTX0lSVUdPfFNfSVdVU1Ip OworK01PRFVMRV9QQVJNX0RFU0MocmVmcmVzaF90aHJlc2hvbGQsICJyZWZyZXNoIHRocmVzaG9s ZCBpbiBzY3JlZW4gYXJlYSBtdWx0aXBsZXMiKTsKKysKKyBERUZJTkVfRFJNX0dFTV9GT1BTKHJv Y2tjaGlwX2ViY19mb3BzKTsKKyAKKyBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kcml2ZXIgcm9j a2NoaXBfZWJjX2RybV9kcml2ZXIgPSB7CitAQCAtMjQzLDYgKzI1MSw3IEBAIHN0cnVjdCByb2Nr Y2hpcF9lYmNfY3R4IHsKKyAJdTMyCQkJCWdyYXk0X3NpemU7CisgCXUzMgkJCQlwaGFzZV9waXRj aDsKKyAJdTMyCQkJCXBoYXNlX3NpemU7CisrCXU2NCBhcmVhX2NvdW50OworIH07CisgCisgc3Rh dGljIHZvaWQgcm9ja2NoaXBfZWJjX2N0eF9mcmVlKHN0cnVjdCByb2NrY2hpcF9lYmNfY3R4ICpj dHgpCitAQCAtMjg4LDYgKzI5NywxMCBAQCBzdGF0aWMgc3RydWN0IHJvY2tjaGlwX2ViY19jdHgg KnJvY2tjaGlwX2ViY19jdHhfYWxsb2ModTMyIHdpZHRoLCB1MzIgaGVpZ2h0KQorIAljdHgtPnBo YXNlX3BpdGNoID0gd2lkdGg7CisgCWN0eC0+cGhhc2Vfc2l6ZSAgPSBwaGFzZV9zaXplOworIAor KwkvLyB3ZSBrZWVwIHRyYWNrIG9mIHRoZSB1cGRhdGVkIGFyZWEgYW5kIHVzZSB0aGlzIHZhbHVl IHRvIHRyaWdnZXIgZ2xvYmFsCisrCS8vIHJlZnJlc2hlcyBpZiBhdXRvX3JlZnJlc2ggaXMgZW5h YmxlZAorKwljdHgtPmFyZWFfY291bnQgPSAwOworKworIAlyZXR1cm4gY3R4OworIH0KKyAKK0BA IC01MTYsNiArNTI5LDcgQEAgc3RhdGljIHZvaWQgcm9ja2NoaXBfZWJjX3BhcnRpYWxfcmVmcmVz aChzdHJ1Y3Qgcm9ja2NoaXBfZWJjICplYmMsCisgCXN0cnVjdCBkZXZpY2UgKmRldiA9IGRybS0+ ZGV2OworIAlMSVNUX0hFQUQoYXJlYXMpOworIAl1MzIgZnJhbWU7CisrCXU2NCBsb2NhbF9hcmVh X2NvdW50ID0gMDsKKyAKKyAJZG1hX2FkZHJfdCBwaGFzZV9oYW5kbGVzWzJdOworIAlwaGFzZV9o YW5kbGVzWzBdID0gZG1hX21hcF9zaW5nbGUoZGV2LCBjdHgtPnBoYXNlWzBdLCBjdHgtPmdyYXk0 X3NpemUsIERNQV9UT19ERVZJQ0UpOworQEAgLTU1OCw2ICs1NzIsOSBAQCBzdGF0aWMgdm9pZCBy b2NrY2hpcF9lYmNfcGFydGlhbF9yZWZyZXNoKHN0cnVjdCByb2NrY2hpcF9lYmMgKmViYywKKyAK KyAJCQkvKiBDb3B5IGN0eC0+ZmluYWwgdG8gY3R4LT5uZXh0IG9uIHRoZSBmaXJzdCBmcmFtZS4g Ki8KKyAJCQlpZiAoZnJhbWVfZGVsdGEgPT0gMCkgeworKwkJCQlsb2NhbF9hcmVhX2NvdW50ICs9 ICh1NjQpICgKKysJCQkJCWFyZWEtPmNsaXAueDIgLSBhcmVhLT5jbGlwLngxKSAqCisrCQkJCQko YXJlYS0+Y2xpcC55MiAtIGFyZWEtPmNsaXAueTEpOworIAkJCQlkbWFfc3luY19zaW5nbGVfZm9y X2NwdShkZXYsIG5leHRfaGFuZGxlLCBncmF5NF9zaXplLCBETUFfVE9fREVWSUNFKTsKKyAJCQkJ cm9ja2NoaXBfZWJjX2JsaXRfcGl4ZWxzKGN0eCwgY3R4LT5uZXh0LAorIAkJCQkJCQkgY3R4LT5m aW5hbCwKK0BAIC02NDIsNiArNjU5LDggQEAgc3RhdGljIHZvaWQgcm9ja2NoaXBfZWJjX3BhcnRp YWxfcmVmcmVzaChzdHJ1Y3Qgcm9ja2NoaXBfZWJjICplYmMsCisgCX0KKyAJZG1hX3VubWFwX3Np bmdsZShkZXYsIHBoYXNlX2hhbmRsZXNbMF0sIGN0eC0+Z3JheTRfc2l6ZSwgRE1BX1RPX0RFVklD RSk7CisgCWRtYV91bm1hcF9zaW5nbGUoZGV2LCBwaGFzZV9oYW5kbGVzWzFdLCBjdHgtPmdyYXk0 X3NpemUsIERNQV9UT19ERVZJQ0UpOworKwkvKiBwcmludGsoS0VSTl9JTkZPICJsb2NhIGFyZWEg Y291bnQ6ICVsbHVcbiIsIGxvY2FsX2FyZWFfY291bnQpOyAqLworKwljdHgtPmFyZWFfY291bnQg Kz0gbG9jYWxfYXJlYV9jb3VudDsKKyB9CisgCisgc3RhdGljIHZvaWQgcm9ja2NoaXBfZWJjX3Jl ZnJlc2goc3RydWN0IHJvY2tjaGlwX2ViYyAqZWJjLAorQEAgLTY1NSw2ICs2NzQsNyBAQCBzdGF0 aWMgdm9pZCByb2NrY2hpcF9lYmNfcmVmcmVzaChzdHJ1Y3Qgcm9ja2NoaXBfZWJjICplYmMsCisg CWludCByZXQsIHRlbXBlcmF0dXJlOworIAlkbWFfYWRkcl90IG5leHRfaGFuZGxlOworIAlkbWFf YWRkcl90IHByZXZfaGFuZGxlOworKwlpbnQgb25lX3NjcmVlbl9hcmVhID0gMTMxNDE0NDsKKyAK KyAJLyogUmVzdW1lIGFzeW5jaHJvbm91c2x5IHdoaWxlIHByZXBhcmluZyB0byByZWZyZXNoLiAq LworIAlyZXQgPSBwbV9ydW50aW1lX2dldChkZXYpOworQEAgLTczOCw2ICs3NTgsMTkgQEAgc3Rh dGljIHZvaWQgcm9ja2NoaXBfZWJjX3JlZnJlc2goc3RydWN0IHJvY2tjaGlwX2ViYyAqZWJjLAor IAlkbWFfdW5tYXBfc2luZ2xlKGRldiwgbmV4dF9oYW5kbGUsIGN0eC0+Z3JheTRfc2l6ZSwgRE1B X1RPX0RFVklDRSk7CisgCWRtYV91bm1hcF9zaW5nbGUoZGV2LCBwcmV2X2hhbmRsZSwgY3R4LT5n cmF5NF9zaXplLCBETUFfVE9fREVWSUNFKTsKKyAKKysJLy8gZG8gd2UgbmVlZCBhIGZ1bGwgcmVm cmVzaAorKwlpZiAoYXV0b19yZWZyZXNoKXsKKysJCWlmIChjdHgtPmFyZWFfY291bnQgPj0gcmVm cmVzaF90aHJlc2hvbGQgKiBvbmVfc2NyZWVuX2FyZWEpeworKwkJCXByaW50ayhLRVJOX0lORk8g InJvY2tjaGlwOiB0cmlnZ2VyaW5nIGZ1bGwgcmVmcmVzaCBkdWUgdG8gZHJhd24gYXJlYSB0aHJl c2hvbGRcbiIpOworKwkJCXNwaW5fbG9jaygmZWJjLT5yZWZyZXNoX29uY2VfbG9jayk7CisrCQkJ ZWJjLT5kb19vbmVfZnVsbF9yZWZyZXNoID0gdHJ1ZTsKKysJCQlzcGluX3VubG9jaygmZWJjLT5y ZWZyZXNoX29uY2VfbG9jayk7CisrCQkJY3R4LT5hcmVhX2NvdW50ID0gMDsKKysJCX0KKysJfSBl bHNlIHsKKysJCWN0eC0+YXJlYV9jb3VudCA9IDA7CisrCX0KKysKKyAJLyogRHJpdmUgdGhlIG91 dHB1dCBwaW5zIGxvdyBvbmNlIHRoZSByZWZyZXNoIGlzIGNvbXBsZXRlLiAqLworIAlyZWdtYXBf d3JpdGUoZWJjLT5yZWdtYXAsIEVCQ19EU1BfU1RBUlQsCisgCQkgICAgIGViYy0+ZHNwX3N0YXJ0 IHwKKy0tIAorMi4zMC4yCisKKworRnJvbSBlZWYyYTgyM2JmOTZmNDkyYTRkMjhmZTBmOTBlYTkx YTNjMWJiOTM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF4aW1pbGlhbiBXZWln YW5kIDxtd2VpZ2FuZEBtd2VpZ2FuZC5uZXQ+CitEYXRlOiBTYXQsIDQgSnVuIDIwMjIgMjA6MDI6 MjYgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAxNC8zN10gW3JvY2tjaGlwX2ViY10gQWRkIHR3byBp b2N0bHMgdG8gdGhlIHJvY2tjaGlwX2ViYworIG1vZHVsZToKKworRFJNX0lPQ1RMX1JPQ0tDSElQ X0VCQ19HTE9CQUxfUkVGUkVTSCB0cmlnZ2VycyBhIGdsb2JhbCBmcmVzaAorCitEUk1fSU9DVExf Uk9DS0NISVBfRUJDX09GRl9TQ1JFRU4gY2FuIGJlIHVzZWQgdG8gc3VwcGx5IG9mZi1zY3JlZW4K K2NvbnRlbnQgdGhhdCBpcyBkaXNwbGF5IG9uIHNodXRkb3duL21vZHVsZS11bmxvYWQuCisKK0Nv cnJlc3BvbmRpbmcgaW9jdGwgc3RydWN0dXJlczoKKworc3RydWN0IGRybV9yb2NrY2hpcF9lYmNf dHJpZ2dlcl9nbG9iYWxfcmVmcmVzaCB7CisgICAgICAgYm9vbCB0cmlnZ2VyX2dsb2JhbF9yZWZy ZXNoOworfTsKKworc3RydWN0IGRybV9yb2NrY2hpcF9lYmNfb2ZmX3NjcmVlbiB7CisgICAgICAg X191NjQgaW5mbzE7IC8vIDwtIG5vdCB1c2VkCisgICAgICAgY2hhciAqIHB0cl9zY3JlZW5fY29u dGVudDsKK307CistLS0KKyBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMg fCA0MSArKysrKysrKysrKysrKysrKysrKysrKysrCisgaW5jbHVkZS91YXBpL2RybS9yb2NrY2hp cF9lYmNfZHJtLmggICAgIHwgMjUgKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA2 NiBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvdWFwaS9kcm0vcm9j a2NoaXBfZWJjX2RybS5oCisKK2RpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv cm9ja2NoaXBfZWJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMK K2luZGV4IDY5ZWYzNGU4NmJhNy4uOWEwYTIzODgyOWJiIDEwMDY0NAorLS0tIGEvZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCisrKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9j a2NoaXAvcm9ja2NoaXBfZWJjLmMKK0BAIC0xNSw2ICsxNSw3IEBACisgI2luY2x1ZGUgPGxpbnV4 L3JlZ3VsYXRvci9jb25zdW1lci5oPgorICNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgorICNpbmNs dWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgorKyNpbmNsdWRlIDxsaW51eC91YWNjZXNzLmg+Cisg I2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJlLmg+CisgCisgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWlj Lmg+CitAQCAtMjksNiArMzAsNyBAQAorICNpbmNsdWRlIDxkcm0vZHJtX2dlbV9zaG1lbV9oZWxw ZXIuaD4KKyAjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4KKyAjaW5jbHVkZSA8ZHJt L2RybV9zaW1wbGVfa21zX2hlbHBlci5oPgorKyNpbmNsdWRlIDxkcm0vcm9ja2NoaXBfZWJjX2Ry bS5oPgorIAorICNkZWZpbmUgRUJDX0RTUF9TVEFSVAkJCTB4MDAwMAorICNkZWZpbmUgRUJDX0RT UF9TVEFSVF9EU1BfT1VUX0xPVwkJQklUKDMxKQorQEAgLTE5Myw2ICsxOTUsNDMgQEAgTU9EVUxF X1BBUk1fREVTQyhyZWZyZXNoX3RocmVzaG9sZCwgInJlZnJlc2ggdGhyZXNob2xkIGluIHNjcmVl biBhcmVhIG11bHRpcGxlcyIKKyAKKyBERUZJTkVfRFJNX0dFTV9GT1BTKHJvY2tjaGlwX2ViY19m b3BzKTsKKyAKKytzdGF0aWMgaW50IGlvY3RsX3RyaWdnZXJfZ2xvYmFsX3JlZnJlc2goc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKysJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9w cml2KQorK3sKKysJc3RydWN0IGRybV9yb2NrY2hpcF9lYmNfdHJpZ2dlcl9nbG9iYWxfcmVmcmVz aCAqYXJncyA9IGRhdGE7CisrCXN0cnVjdCByb2NrY2hpcF9lYmMgKmViYyA9IGRldl9nZXRfZHJ2 ZGF0YShkZXYtPmRldik7CisrCisrCWlmIChhcmdzLT50cmlnZ2VyX2dsb2JhbF9yZWZyZXNoKXsK KysJCXByaW50ayhLRVJOX0lORk8gInJvY2tjaGlwX2ViYzogaW9jdGwgd291bGQgdHJpZ2dlciBm dWxsIHJlZnJlc2ggXG4iKTsKKysJCXNwaW5fbG9jaygmZWJjLT5yZWZyZXNoX29uY2VfbG9jayk7 CisrCQllYmMtPmRvX29uZV9mdWxsX3JlZnJlc2ggPSB0cnVlOworKwkJc3Bpbl91bmxvY2soJmVi Yy0+cmVmcmVzaF9vbmNlX2xvY2spOworKwkJLy8gdHJ5IHRvIHRyaWdnZXIgdGhlIHJlZnJlc2gg aW1tZWRpYXRlbHkKKysJCXdha2VfdXBfcHJvY2VzcyhlYmMtPnJlZnJlc2hfdGhyZWFkKTsKKysJ fQorKworKwlyZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGludCBpb2N0bF9zZXRfb2ZmX3NjcmVl bihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorKwkJc3RydWN0IGRybV9maWxl ICpmaWxlX3ByaXYpCisreworKwlzdHJ1Y3QgZHJtX3JvY2tjaGlwX2ViY19vZmZfc2NyZWVuICph cmdzID0gZGF0YTsKKysJc3RydWN0IHJvY2tjaGlwX2ViYyAqZWJjID0gZGV2X2dldF9kcnZkYXRh KGRldi0+ZGV2KTsKKysJaW50IGNvcHlfcmVzdWx0OworKworKwljb3B5X3Jlc3VsdCA9IGNvcHlf ZnJvbV91c2VyKCZlYmMtPm9mZl9zY3JlZW4sIGFyZ3MtPnB0cl9zY3JlZW5fY29udGVudCwgMTMx MzE0NCk7CisrCisrCXJldHVybiAwOworK30KKysKKytzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9p b2N0bF9kZXNjIGlvY3Rsc1tEUk1fQ09NTUFORF9FTkQgLSBEUk1fQ09NTUFORF9CQVNFXSA9IHsK KysJRFJNX0lPQ1RMX0RFRl9EUlYoUk9DS0NISVBfRUJDX0dMT0JBTF9SRUZSRVNILCBpb2N0bF90 cmlnZ2VyX2dsb2JhbF9yZWZyZXNoLAorKwkJCSAgRFJNX1JFTkRFUl9BTExPVyksCisrCURSTV9J T0NUTF9ERUZfRFJWKFJPQ0tDSElQX0VCQ19PRkZfU0NSRUVOLCBpb2N0bF9zZXRfb2ZmX3NjcmVl biwKKysJCQkgIERSTV9SRU5ERVJfQUxMT1cpLAorK307CisrCisgc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fZHJpdmVyIHJvY2tjaGlwX2ViY19kcm1fZHJpdmVyID0geworIAkubGFzdGNsb3NlCQk9 IGRybV9mYl9oZWxwZXJfbGFzdGNsb3NlLAorIAlEUk1fR0VNX1NITUVNX0RSSVZFUl9PUFMsCitA QCAtMjAzLDYgKzI0Miw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2RyaXZlciByb2NrY2hp cF9lYmNfZHJtX2RyaXZlciA9IHsKKyAJLmRhdGUJCQk9ICIyMDIyMDMwMyIsCisgCS5kcml2ZXJf ZmVhdHVyZXMJPSBEUklWRVJfQVRPTUlDIHwgRFJJVkVSX0dFTSB8IERSSVZFUl9NT0RFU0VULAor IAkuZm9wcwkJCT0gJnJvY2tjaGlwX2ViY19mb3BzLAorKwkuaW9jdGxzID0gaW9jdGxzLAorKwku bnVtX2lvY3RscyA9IERSTV9ST0NLQ0hJUF9FQkNfTlVNX0lPQ1RMUywKKyB9OworIAorIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzIHJvY2tjaGlwX2ViY19tb2RlX2Nv bmZpZ19mdW5jcyA9IHsKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL3JvY2tjaGlwX2Vi Y19kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vcm9ja2NoaXBfZWJjX2RybS5oCituZXcgZmlsZSBt b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAwLi5iZWZhNjJhNjhiZTAKKy0tLSAvZGV2L251 bGwKKysrKyBiL2luY2x1ZGUvdWFwaS9kcm0vcm9ja2NoaXBfZWJjX2RybS5oCitAQCAtMCwwICsx LDI1IEBACisrI2lmbmRlZiBfX1JPQ0tDSElQX0VCQ19EUk1fSF9fCisrI2RlZmluZSBfX1JPQ0tD SElQX0VCQ19EUk1fSF9fCisrCisrI2luY2x1ZGUgImRybS5oIgorKworKyNpZiBkZWZpbmVkKF9f Y3BsdXNwbHVzKQorK2V4dGVybiAiQyIgeworKyNlbmRpZgorKworKworK3N0cnVjdCBkcm1fcm9j a2NoaXBfZWJjX3RyaWdnZXJfZ2xvYmFsX3JlZnJlc2ggeworKwlib29sIHRyaWdnZXJfZ2xvYmFs X3JlZnJlc2g7CisrfTsKKysKKytzdHJ1Y3QgZHJtX3JvY2tjaGlwX2ViY19vZmZfc2NyZWVuIHsK KysJX191NjQgaW5mbzE7CisrCWNoYXIgKiBwdHJfc2NyZWVuX2NvbnRlbnQ7CisrfTsKKysKKysj ZGVmaW5lIERSTV9ST0NLQ0hJUF9FQkNfTlVNX0lPQ1RMUwkJMHgwMgorKworKyNkZWZpbmUgRFJN X0lPQ1RMX1JPQ0tDSElQX0VCQ19HTE9CQUxfUkVGUkVTSAlEUk1fSU9XUihEUk1fQ09NTUFORF9C QVNFICsgMHgwMCwgc3RydWN0IGRybV9yb2NrY2hpcF9lYmNfdHJpZ2dlcl9nbG9iYWxfcmVmcmVz aCkKKysjZGVmaW5lIERSTV9JT0NUTF9ST0NLQ0hJUF9FQkNfT0ZGX1NDUkVFTglEUk1fSU9XUihE Uk1fQ09NTUFORF9CQVNFICsgMHgwMSwgc3RydWN0IGRybV9yb2NrY2hpcF9lYmNfb2ZmX3NjcmVl bikKKysKKysjZW5kaWYgLyogX19ST0NLQ0hJUF9FQkNfRFJNX0hfXyovCistLSAKKzIuMzAuMgor CisKK0Zyb20gMjg1NWZiOGNmNTgyNGI5ZDBkNjJkMTk0NDQwYTRkN2FhZDM2MGMyOCBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1heGltaWxpYW4gV2VpZ2FuZCA8bXdlaWdhbmRAbXdl aWdhbmQubmV0PgorRGF0ZTogVGh1LCA5IEp1biAyMDIyIDA5OjU2OjEzICswMjAwCitTdWJqZWN0 OiBbUEFUQ0ggMTUvMzddIFtyb2NrY2hpcF9lYmNdIHRyeSB0byBzcGxpdCBvdmVybGFwcGluZyBh cmVhcyBpbnRvIGZvdXIKKyBzdWJhcmVhcyBkdXJpbmcgcmVmcmVzaCBzbyB0aGF0IHRoZSBub24t b3ZlcmxhcHBpbmcgcGFydHMgY2FuIHN0YXJ0IHRvCisgcmVmcmVzaCBhcyBzb29uIGFzIHBvc3Np YmxlIGFuZCB3ZSBvbmx5IG5lZWQgdG8gd2FpdCBmb3IgdGhlIG92ZXJsYXBwaW5nCisgcGFydC4K KworVGhlIG51bWJlciBvZiBhcmVhcyB0byBzcGxpdCB3aGlsZSBwcmVwYXJpbmcgZWFjaCBmcmFt ZSBjYW4gYmUgbGltaXRlZC4KK0knbSBub3Qgc3VyZSBpZiB0aGlzIGlzIHJlYWxseSByZXF1aXJl ZCwgYnV0IEkgZmVhciB0aGF0IHRvbyBtYW55IHNwbGl0cworY291bGQgc2xvdyBkb3duIHRoZSBy ZWZyZXNoIHRocmVhZC4KKworU3BsaXR0aW5nIGFyZWFzIGNhbiBwcm9kdWNlIGFyZWFzIHRoYXQg ZG8gbm90IGFsaWduIHdpdGggZnVsbCBieXRlcyAoNAorYml0L2J5dGUpLCBzbyB3ZSBhbHNvIHRy eSB0byBhY2NvdW50IGZvciBvZGQgc3RhcnQvZW5kIGNsaXBzLgorLS0tCisgZHJpdmVycy9ncHUv ZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jIHwgMTc2ICsrKysrKysrKysrKysrKysrKysrKysr LQorIDEgZmlsZSBjaGFuZ2VkLCAxNzIgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKwor ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYworaW5kZXggOWEwYTIzODgyOWJi Li42ZjdiYmUwYmQ3MGYgMTAwNjQ0CistLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9j a2NoaXBfZWJjLmMKKysrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMu YworQEAgLTQxNSwxMCArNDE1LDE1IEBAIHN0YXRpYyB2b2lkIHJvY2tjaGlwX2ViY19nbG9iYWxf cmVmcmVzaChzdHJ1Y3Qgcm9ja2NoaXBfZWJjICplYmMsCisgc3RhdGljIGJvb2wgcm9ja2NoaXBf ZWJjX3NjaGVkdWxlX2FyZWEoc3RydWN0IGxpc3RfaGVhZCAqYXJlYXMsCisgCQkJCSAgICAgICBz dHJ1Y3Qgcm9ja2NoaXBfZWJjX2FyZWEgKmFyZWEsCisgCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2Rl dmljZSAqZHJtLAorLQkJCQkgICAgICAgdTMyIGN1cnJlbnRfZnJhbWUsIHUzMiBudW1fcGhhc2Vz KQorKwkJCQkgICAgICAgdTMyIGN1cnJlbnRfZnJhbWUsIHUzMiBudW1fcGhhc2VzLAorKwkJCQkg ICAgICAgc3RydWN0IHJvY2tjaGlwX2ViY19hcmVhICpuZXh0X2FyZWEsCisrCQkJCQkgICBpbnQg KiBzcGxpdF9jb3VudGVyCisrCQkJCQkgICApCisgeworIAlzdHJ1Y3Qgcm9ja2NoaXBfZWJjX2Fy ZWEgKm90aGVyOworKwkvLyBieSBkZWZhdWx0LCBiZWdpbiBub3cKKyAJdTMyIGZyYW1lX2JlZ2lu ID0gY3VycmVudF9mcmFtZTsKKysJLyogcHJpbnRrKEtFUk5fSU5GTyAic2NoZWR1bGluZyBhcmVh OiAlaS0laSAlaS0laVxuIiwgYXJlYS0+Y2xpcC54MSwgYXJlYS0+Y2xpcC54MiwgYXJlYS0+Y2xp cC55MSwgYXJlYS0+Y2xpcC55Mik7ICovCisgCisgCWxpc3RfZm9yX2VhY2hfZW50cnkob3RoZXIs IGFyZWFzLCBsaXN0KSB7CisgCQlzdHJ1Y3QgZHJtX3JlY3QgaW50ZXJzZWN0aW9uOworQEAgLTQz NywxMSArNDQyLDEyNCBAQCBzdGF0aWMgYm9vbCByb2NrY2hpcF9lYmNfc2NoZWR1bGVfYXJlYShz dHJ1Y3QgbGlzdF9oZWFkICphcmVhcywKKyAJCWludGVyc2VjdGlvbiA9IGFyZWEtPmNsaXA7Cisg CQlpZiAoIWRybV9yZWN0X2ludGVyc2VjdCgmaW50ZXJzZWN0aW9uLCAmb3RoZXItPmNsaXApKQor IAkJCWNvbnRpbnVlOworKwkJLy8gd2UgZ290IGhlcmUsIHNvIHRoZXJlIGlzIGEgY29sbGlzaW9u CisgCisgCQkvKiBJZiB0aGUgb3RoZXIgYXJlYSBhbHJlYWR5IHN0YXJ0ZWQsIHdhaXQgdW50aWwg aXQgZmluaXNoZXMuICovCisgCQlpZiAob3RoZXItPmZyYW1lX2JlZ2luIDwgY3VycmVudF9mcmFt ZSkgeworIAkJCWZyYW1lX2JlZ2luID0gb3RoZXJfZW5kOworLQkJCWNvbnRpbnVlOworKworKwkJ CS8vIHNvIGhlcmUgd2Ugd291bGQgb3B0aW1hbGx5IHdhbnQgdG8gc3BsaXQgdGhlIG5ldyBhcmVh IGludG8gdGhyZWUKKysJCQkvLyBwYXJ0cyB0aGF0IGRvIG5vdCBvdmVybGFwIHdpdGggdGhlIGFs cmVhZHktc3RhcnRlZCBhcmVhLCBhbmQgb25lCisrCQkJLy8gd2hpY2ggaXMgb3ZlcmxhcHBpbmcu IFRoZSBvdmVybGFwcGluZyBvbmUgd2lsbCBiZSBzY2hlZHVsZWQgZm9yCisrCQkJLy8gbGF0ZXIs IGJ1dCB0aGUgb3RoZXIgdGhyZWUgc2hvdWxkIHN0YXJ0IGltbWVkaWF0ZWx5LgorKworKwkJCS8v IGlmIHRoZSBhcmVhIGlzIGVxdWFsIHRvIHRoZSBjbGlwLCBjb250aW51ZQorKwkJCWlmIChkcm1f cmVjdF9lcXVhbHMoJmFyZWEtPmNsaXAsICZpbnRlcnNlY3Rpb24pKQorKwkJCQljb250aW51ZTsK KysKKysJCQkvLyBmb3Igbm93LCBtaW4gc2l6ZSBpZiAyeDIKKysJCQlpZiAoKGFyZWEtPmNsaXAu eDIgLSBhcmVhLT5jbGlwLngxIDwgMikgfCAoYXJlYS0+Y2xpcC55MiAtIGFyZWEtPmNsaXAueTEg PCAyKSkKKysJCQkJY29udGludWU7CisrCisrCQkJLy8gb2ssIHdlIHdhbnQgdG8gc3BsaXQgdGhp cyBhcmVhIGFuZCBzdGFydCB3aXRoIGFueSBwYXJ0aWFsIGFyZWFzCisrCQkJLy8gdGhhdCBhcmUg bm90IG92ZXJsYXBwaW5nICh3ZWxsLCBsZXQgdGhpcyBiZSBkZWNpZGVkIHVwb24gYXQgdGhlCisr CQkJLy8gbmV4dCBvdXRlciBsb29wIC0gd2UgZGVsZXRlIHRoaXMgYXJlYSBzbyB3ZSBuZWVkIG5v dCB0byBqdWdnbGUKKysJCQkvLyBhcm91bmQgdGhlIGZvdXIgYXJlYXMgdW50aWwgd2UgZm91bmQg dGhlIG9uZSB0aGF0IGlzIGFjdHVhbGx5CisrCQkJLy8gb3ZlcmxhcHBpbmcpCisrCQkJaW50IHht aW4sIHhtYXgsIHltaW4sIHltYXgsIHhjZW50ZXIsIHljZW50ZXI7CisrCQkJeG1pbiA9IGFyZWEt PmNsaXAueDE7CisrCQkJaWYgKGludGVyc2VjdGlvbi54MSA+IHhtaW4pCisrCQkJCXhjZW50ZXIg PSBpbnRlcnNlY3Rpb24ueDE7CisrCQkJZWxzZQorKwkJCQl4Y2VudGVyID0gaW50ZXJzZWN0aW9u LngyOworKwkJCXhtYXggPSBhcmVhLT5jbGlwLngyOworKworKwkJCXltaW4gPSBhcmVhLT5jbGlw LnkxOworKwkJCWlmIChpbnRlcnNlY3Rpb24ueTEgPiB5bWluKQorKwkJCQl5Y2VudGVyID0gaW50 ZXJzZWN0aW9uLnkxOworKwkJCWVsc2UKKysJCQkJeWNlbnRlciA9IGludGVyc2VjdGlvbi55MjsK KysJCQl5bWF4ID0gYXJlYS0+Y2xpcC55MjsKKysKKysJCQlpZiAoKHhtaW4gPT0geGNlbnRlcikg fCAoeGNlbnRlciA9PSB4bWF4KSkKKysJCQkJY29udGludWU7CisrCQkJaWYgKCh5bWluID09IHlj ZW50ZXIpIHwgKHljZW50ZXIgPT0geW1heCkpCisrCQkJCWNvbnRpbnVlOworKworKwkJCS8vIHdl IGRvIG5vdCB3YW50IHRvIG92ZXJoZWxtIHRoZSByZWZyZXNoIHRocmVhZCBhbmQgbGltaXQgdXMg dG8gYQorKwkJCS8vIGNlcnRhaW4gbnVtYmVyIG9mIHNwbGl0cy4gVGhlIHJlc3QgbmVlZHMgdG8g d2FpdAorKwkJCWlmICgqc3BsaXRfY291bnRlciA+PSA2KQorKwkJCQljb250aW51ZTsKKysKKysJ CQkvLyB3ZSBuZWVkIGZvdXIgbmV3IHJva2NoaXBfZWJjX2FyZWEgZW50cmllcyB0aGF0IHdlIHNw bGljZSBpbnRvCisrCQkJLy8gdGhlIGxpc3QuIE5vdGUgdGhhdCB0aGUgY3VycmVudGx5IG5leHQg aXRlbSBzaGFsbCBiZSBjb3BpZWQKKysJCQkvLyBiYWNrd2FyZHMgYmVjYXVzZSB0byBwcmV2ZW50 IHRoZSBvdXRlciBsaXN0IGl0ZXJhdGlvbiBmcm9tCisrCQkJLy8gc2tpcHBpbmcgb3ZlciBvdXIg bmV3bHkgY3JlYXRlZCBpdGVtcy4KKysKKysJCQlzdHJ1Y3Qgcm9ja2NoaXBfZWJjX2FyZWEgKiBp dGVtMTsKKysJCQlzdHJ1Y3Qgcm9ja2NoaXBfZWJjX2FyZWEgKiBpdGVtMjsKKysJCQlzdHJ1Y3Qg cm9ja2NoaXBfZWJjX2FyZWEgKiBpdGVtMzsKKysJCQlzdHJ1Y3Qgcm9ja2NoaXBfZWJjX2FyZWEg KiBpdGVtNDsKKysJCQlpdGVtMSA9IGttYWxsb2Moc2l6ZW9mKCppdGVtMSksIEdGUF9LRVJORUwp OworKwkJCWl0ZW0yID0ga21hbGxvYyhzaXplb2YoKml0ZW0yKSwgR0ZQX0tFUk5FTCk7CisrCQkJ aXRlbTMgPSBrbWFsbG9jKHNpemVvZigqaXRlbTMpLCBHRlBfS0VSTkVMKTsKKysJCQlpdGVtNCA9 IGttYWxsb2Moc2l6ZW9mKCppdGVtNCksIEdGUF9LRVJORUwpOworKworKwkJCS8vIFRPRE86IEVy cm9yIGNoZWNraW5nISEhIQorKwkJCS8qIGlmICghYXJlYSkgKi8KKysJCQkvKiAJcmV0dXJuIC1F Tk9NRU07ICovCisrCisrCQkJaWYgKGxpc3RfaXNfbGFzdCgmYXJlYS0+bGlzdCwgYXJlYXMpKXsK KysJCQkJLyogcHJpbnRrKEtFUk5fSU5GTyAiYWRkaW5nIHRvIGVuZCBvZiBsaXN0XG4iKTsgKi8K KysJCQkJbGlzdF9hZGRfdGFpbCgmaXRlbTEtPmxpc3QsIGFyZWFzKTsKKysJCQkJbGlzdF9hZGRf dGFpbCgmaXRlbTItPmxpc3QsIGFyZWFzKTsKKysJCQkJbGlzdF9hZGRfdGFpbCgmaXRlbTMtPmxp c3QsIGFyZWFzKTsKKysJCQkJbGlzdF9hZGRfdGFpbCgmaXRlbTQtPmxpc3QsIGFyZWFzKTsKKysJ CQl9CisrCQkJZWxzZXsKKysJCQkJLyogcHJpbnRrKEtFUk5fSU5GTyAic3BsaWNpbmcgaW50byB0 aGUgbWlkZGxlIG9mIHRoZSBsaXN0XG4iKTsgKi8KKysJCQkJX19saXN0X2FkZCgmaXRlbTQtPmxp c3QsIGFyZWFzLCBhcmVhcy0+bmV4dCk7CisrCQkJCV9fbGlzdF9hZGQoJml0ZW0zLT5saXN0LCBh cmVhcywgYXJlYXMtPm5leHQpOworKwkJCQlfX2xpc3RfYWRkKCZpdGVtMi0+bGlzdCwgYXJlYXMs IGFyZWFzLT5uZXh0KTsKKysJCQkJX19saXN0X2FkZCgmaXRlbTEtPmxpc3QsIGFyZWFzLCBhcmVh cy0+bmV4dCk7CisrCQkJfQorKwkJCW5leHRfYXJlYSA9IGl0ZW0xOworKworKwkJCS8vIG5vdyBm aWxsIHRoZSBhcmVhcworKwkJCS8qIHByaW50ayhLRVJOX0lORk8gImFyZWExOiAlaSAlaSAlaSAl aVxuIiwgeG1pbiwgeGNlbnRlciwgeW1pbiwgeWNlbnRlcik7ICovCisrCQkJLyogcHJpbnRrKEtF Uk5fSU5GTyAiYXJlYTI6ICVpICVpICVpICVpXG4iLCB4bWluLCB4Y2VudGVyLCB5Y2VudGVyLCB5 bWF4KTsgKi8KKysJCQkvKiBwcmludGsoS0VSTl9JTkZPICJhcmVhMzogJWkgJWkgJWkgJWlcbiIs IHhjZW50ZXIsIHhtYXgsIHltaW4sIHljZW50ZXIpOyAqLworKwkJCS8qIHByaW50ayhLRVJOX0lO Rk8gImFyZWE0OiAlaSAlaSAlaSAlaVxuIiwgeGNlbnRlciwgeG1heCwgeWNlbnRlciwgeW1heCk7 ICovCisrCisrCQkJaXRlbTEtPmZyYW1lX2JlZ2luID0gRUJDX0ZSQU1FX1BFTkRJTkc7CisrCQkJ aXRlbTEtPmNsaXAueDEgPSB4bWluOworKwkJCWl0ZW0xLT5jbGlwLngyID0geGNlbnRlcjsKKysJ CQlpdGVtMS0+Y2xpcC55MSA9IHltaW47CisrCQkJaXRlbTEtPmNsaXAueTIgPSB5Y2VudGVyOwor KworKwkJCWl0ZW0yLT5mcmFtZV9iZWdpbiA9IEVCQ19GUkFNRV9QRU5ESU5HOworKwkJCWl0ZW0y LT5jbGlwLngxID0geG1pbjsKKysJCQlpdGVtMi0+Y2xpcC54MiA9IHhjZW50ZXI7CisrCQkJaXRl bTItPmNsaXAueTEgPSB5Y2VudGVyICsgMTsKKysJCQlpdGVtMi0+Y2xpcC55MiA9IHltYXg7Cisr CisrCQkJaXRlbTMtPmZyYW1lX2JlZ2luID0gRUJDX0ZSQU1FX1BFTkRJTkc7CisrCQkJaXRlbTMt PmNsaXAueDEgPSB4Y2VudGVyICsgMTsKKysJCQlpdGVtMy0+Y2xpcC54MiA9IHhtYXg7CisrCQkJ aXRlbTMtPmNsaXAueTEgPSB5bWluOworKwkJCWl0ZW0zLT5jbGlwLnkyID0geWNlbnRlcjsKKysK KysJCQlpdGVtNC0+ZnJhbWVfYmVnaW4gPSBFQkNfRlJBTUVfUEVORElORzsKKysJCQlpdGVtNC0+ Y2xpcC54MSA9IHhjZW50ZXIgKyAxOworKwkJCWl0ZW00LT5jbGlwLngyID0geG1heDsKKysJCQlp dGVtNC0+Y2xpcC55MSA9IHljZW50ZXIgKyAxOworKwkJCWl0ZW00LT5jbGlwLnkyID0geW1heDsK KysKKysJCQkqc3BsaXRfY291bnRlcisrOworKworKwkJCS8vIGxldCB0aGUgb3V0ZXIgbG9vcCBk ZWxldGUgdGhpcyBhcmVhCisrCQkJcmV0dXJuIGZhbHNlOworKwkJCS8qIGNvbnRpbnVlOyAqLwor IAkJfQorIAorIAkJLyoKK0BAIC01MzgsOCArNjU2LDE4IEBAIHN0YXRpYyB2b2lkIHJvY2tjaGlw X2ViY19ibGl0X3BpeGVscyhjb25zdCBzdHJ1Y3Qgcm9ja2NoaXBfZWJjX2N0eCAqY3R4LAorIAkJ CQkgICAgIHU4ICpkc3QsIGNvbnN0IHU4ICpzcmMsCisgCQkJCSAgICAgY29uc3Qgc3RydWN0IGRy bV9yZWN0ICpjbGlwKQorIHsKKysJYm9vbCBzdGFydF94X2lzX29kZCA9IGNsaXAtPngxICYgMTsK KysJYm9vbCBlbmRfeF9pc19vZGQgPSBjbGlwLT54MiAmIDE7CisrCXU4IGZpcnN0X29kZDsKKysJ dTggbGFzdF9vZGQ7CisrCisgCXVuc2lnbmVkIGludCB4MV9ieXRlcyA9IGNsaXAtPngxIC8gMjsK KyAJdW5zaWduZWQgaW50IHgyX2J5dGVzID0gY2xpcC0+eDIgLyAyOworKwkvLyB0aGUgaW50ZWdl ciBkaXZpc2lvbiBmbG9vcnMgYnkgZGVmYXVsdCwgYnV0IHdlIHdhbnQgdG8gaW5jbHVkZSB0aGUg bGFzdAorKwkvLyBieXRlIChwYXJ0aWFsbHkpCisrCWlmIChlbmRfeF9pc19vZGQpCisrCQl4Ml9i eXRlcysrOworKworIAl1bnNpZ25lZCBpbnQgcGl0Y2ggPSBjdHgtPmdyYXk0X3BpdGNoOworIAl1 bnNpZ25lZCBpbnQgd2lkdGggPSB4Ml9ieXRlcyAtIHgxX2J5dGVzOworIAljb25zdCB1OCAqc3Jj X2xpbmU7CitAQCAtNTUwLDggKzY3OCwyOSBAQCBzdGF0aWMgdm9pZCByb2NrY2hpcF9lYmNfYmxp dF9waXhlbHMoY29uc3Qgc3RydWN0IHJvY2tjaGlwX2ViY19jdHggKmN0eCwKKyAJc3JjX2xpbmUg PSBzcmMgKyBjbGlwLT55MSAqIHBpdGNoICsgeDFfYnl0ZXM7CisgCisgCWZvciAoeSA9IGNsaXAt PnkxOyB5IDwgY2xpcC0+eTI7IHkrKykgeworKwkJaWYgKHN0YXJ0X3hfaXNfb2RkKQorKwkJCS8v IGtlZXAgb25seSBsb3dlciBiaXQgdG8gcmVzdG9yZSBpdCBhZnRlciB0aGUgYmxpdHRpbmcKKysJ CQlmaXJzdF9vZGQgPSAqc3JjX2xpbmUgJiAwYjAwMDAxMTExOworKwkJaWYgKGVuZF94X2lzX29k ZCl7CisrCQkJZHN0X2xpbmUgKz0gcGl0Y2ggLSAxOworKwkJCS8vIGtlZXAgb25seSB0aGUgdXBw ZXIgYml0IGZvciByZXN0b3JpbmcgbGF0ZXIKKysJCQlsYXN0X29kZCA9ICpkc3RfbGluZSAmIDBi MTExMTAwMDA7CisrCQkJZHN0X2xpbmUgLT0gcGl0Y2ggLSAxOworKwkJfQorKworIAkJbWVtY3B5 KGRzdF9saW5lLCBzcmNfbGluZSwgd2lkdGgpOworIAorKwkJaWYgKHN0YXJ0X3hfaXNfb2RkKXsK KysJCQkvLyB3cml0ZSBiYWNrIHRoZSBmaXJzdCA0IHNhdmVkIGJpdHMKKysJCQkqZHN0X2xpbmUg PSBmaXJzdF9vZGQgfCAoKmRzdF9saW5lICYgMGIxMTExMDAwMCk7CisrCQl9CisrCQlpZiAoZW5k X3hfaXNfb2RkKXsKKysJCQkvLyB3cml0ZSBiYWNrIHRoZSBsYXN0IDQgc2F2ZWQgYml0cworKwkJ CWRzdF9saW5lICs9IHBpdGNoIC0xOworKwkJCSpkc3RfbGluZSA9ICgqZHN0X2xpbmUgJiAwYjAw MDAxMTExKSB8IGxhc3Rfb2RkOworKwkJCWRzdF9saW5lIC09IHBpdGNoIC0xOworKwkJfQorKwor IAkJZHN0X2xpbmUgKz0gcGl0Y2g7CisgCQlzcmNfbGluZSArPSBwaXRjaDsKKyAJfQorQEAgLTU4 Miw2ICs3MzEsNyBAQCBzdGF0aWMgdm9pZCByb2NrY2hpcF9lYmNfcGFydGlhbF9yZWZyZXNoKHN0 cnVjdCByb2NrY2hpcF9lYmMgKmViYywKKyAJCWRtYV9hZGRyX3QgcGhhc2VfaGFuZGxlID0gcGhh c2VfaGFuZGxlc1tmcmFtZSAlIDJdOworIAkJYm9vbCBzeW5jX25leHQgPSBmYWxzZTsKKyAJCWJv b2wgc3luY19wcmV2ID0gZmFsc2U7CisrCQlpbnQgc3BsaXRfY291bnRlciA9IDA7CisgCisgCQkv LyBub3cgdGhlIENQVSBpcyBhbGxvd2VkIHRvIGNoYW5nZSB0aGUgcGhhc2UgYnVmZmVyCisgCQlk bWFfc3luY19zaW5nbGVfZm9yX2NwdShkZXYsIHBoYXNlX2hhbmRsZSwgY3R4LT5waGFzZV9zaXpl LCBETUFfVE9fREVWSUNFKTsKK0BAIC02MDEsMTggKzc1MSwyMCBAQCBzdGF0aWMgdm9pZCByb2Nr Y2hpcF9lYmNfcGFydGlhbF9yZWZyZXNoKHN0cnVjdCByb2NrY2hpcF9lYmMgKmViYywKKyAJCQkg Ki8KKyAJCQlpZiAoYXJlYS0+ZnJhbWVfYmVnaW4gPT0gRUJDX0ZSQU1FX1BFTkRJTkcgJiYKKyAJ CQkgICAgIXJvY2tjaGlwX2ViY19zY2hlZHVsZV9hcmVhKCZhcmVhcywgYXJlYSwgZHJtLCBmcmFt ZSwKKy0JCQkJCQkJZWJjLT5sdXQubnVtX3BoYXNlcykpIHsKKysJCQkJCQkJZWJjLT5sdXQubnVt X3BoYXNlcywgbmV4dF9hcmVhLCAmc3BsaXRfY291bnRlcikpIHsKKyAJCQkJbGlzdF9kZWwoJmFy ZWEtPmxpc3QpOworIAkJCQlrZnJlZShhcmVhKTsKKyAJCQkJY29udGludWU7CisgCQkJfQorIAor KwkJCS8vIHdlIHdhaXQgYSBsaXR0bGUgYml0IGxvbmdlciB0byBzdGFydAorIAkJCWZyYW1lX2Rl bHRhID0gZnJhbWUgLSBhcmVhLT5mcmFtZV9iZWdpbjsKKyAJCQlpZiAoZnJhbWVfZGVsdGEgPCAw KQorIAkJCQljb250aW51ZTsKKyAKKyAJCQkvKiBDb3B5IGN0eC0+ZmluYWwgdG8gY3R4LT5uZXh0 IG9uIHRoZSBmaXJzdCBmcmFtZS4gKi8KKyAJCQlpZiAoZnJhbWVfZGVsdGEgPT0gMCkgeworKwkJ CQlwcmludGsoS0VSTl9JTkZPICJyb2NrY2hpcCBwYXJ0aWFsIHJlZnJlc2ggc3RhcnRpbmcgYXJl YSBvbiBmcmFtZSAlaSAoJWkvJWkgJWkvJWkpXG4iLCBmcmFtZSwgYXJlYS0+Y2xpcC54MSwgYXJl YS0+Y2xpcC54MiwgYXJlYS0+Y2xpcC55MSwgYXJlYS0+Y2xpcC55Mik7CisgCQkJCWxvY2FsX2Fy ZWFfY291bnQgKz0gKHU2NCkgKAorIAkJCQkJYXJlYS0+Y2xpcC54MiAtIGFyZWEtPmNsaXAueDEp ICoKKyAJCQkJCShhcmVhLT5jbGlwLnkyIC0gYXJlYS0+Y2xpcC55MSk7CitAQCAtMTIxMiw5ICsx MzY0LDEzIEBAIHN0YXRpYyBib29sIHJvY2tjaGlwX2ViY19ibGl0X2ZiKGNvbnN0IHN0cnVjdCBy b2NrY2hpcF9lYmNfY3R4ICpjdHgsCisgCWludCBkZWx0YV94OworIAl2b2lkICpkc3Q7CisgCisr CWJvb2wgc3RhcnRfeF9pc19vZGQgPSBzcmNfY2xpcC0+eDEgJiAxOworKwlib29sIGVuZF94X2lz X29kZCA9IHNyY19jbGlwLT54MiAmIDE7CisrCisgCWRlbHRhX3ggPSBwYW5lbF9yZWZsZWN0aW9u ID8gLTEgOiAxOworIAlzdGFydF94ID0gcGFuZWxfcmVmbGVjdGlvbiA/IHNyY19jbGlwLT54MiAt IDEgOiBzcmNfY2xpcC0+eDE7CisgCisrCS8vIEkgdGhpbmsgdGhpcyBhbHNvIHdvcmtzIGlmIGRz dF9jbGlwLT54MSBpcyBvZGQKKyAJZHN0ID0gY3R4LT5maW5hbCArIGRzdF9jbGlwLT55MSAqIGRz dF9waXRjaCArIGRzdF9jbGlwLT54MSAvIDI7CisgCXNyYyA9IHZhZGRyICsgc3JjX2NsaXAtPnkx ICogc3JjX3BpdGNoICsgc3RhcnRfeCAqIGZiLT5mb3JtYXQtPmNwcFswXTsKKyAKK0BAIC0xMjM2 LDcgKzEzOTIsMTkgQEAgc3RhdGljIGJvb2wgcm9ja2NoaXBfZWJjX2JsaXRfZmIoY29uc3Qgc3Ry dWN0IHJvY2tjaGlwX2ViY19jdHggKmN0eCwKKyAJCQkvKiBVbmJpYXMgdGhlIHZhbHVlIGZvciBy b3VuZGluZyB0byA0IGJpdHMuICovCisgCQkJcmdiMCArPSAweDA3MDAwMDAwVTsgcmdiMSArPSAw eDA3MDAwMDAwVTsKKyAKKy0JCQlncmF5ID0gcmdiMCA+PiAyOCB8IHJnYjEgPj4gMjggPDwgNDsK KysJCQlyZ2IwID4+PSAyODsKKysJCQlyZ2IxID4+PSAyODsKKysKKysJCQlpZiAoeCA9PSBzcmNf Y2xpcC0+eDEgJiYgc3RhcnRfeF9pc19vZGQpIHsKKysJCQkJLy8gcmdiMCBzaG91bGQgYmUgZmls bGVkIHdpdGggdGhlIGNvbnRlbnQgb2YgdGhlIHNyYyBwaXhlbCBoZXJlCisrCQkJCXJnYjAgPSAq ZGJ1ZjsKKysJCQl9CisrCQkJaWYgKHggPT0gc3JjX2NsaXAtPngyICYmIGVuZF94X2lzX29kZCkg eworKwkJCQkvLyByZ2IxIHNob3VsZCBiZSBmaWxsZWQgd2l0aCB0aGUgY29udGVudCBvZiB0aGUg c3JjIHBpeGVsIGhlcmUKKysJCQkJcmdiMSA9ICpkYnVmOworKwkJCX0KKysKKysJCQlncmF5ID0g cmdiMCB8IHJnYjEgPDwgNDsKKyAJCQljaGFuZ2VkIHw9IGdyYXkgXiAqZGJ1ZjsKKyAJCQkqZGJ1 ZisrID0gZ3JheTsKKyAJCX0KKy0tIAorMi4zMC4yCisKKworRnJvbSA1OGNiODE0ZmE4Mzg5YTE1 N2MzMGQ5MDUxMWJlMzNiNzUwNjZhNDE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTog TWF4aW1pbGlhbiBXZWlnYW5kIDxtd2VpZ2FuZEBtd2VpZ2FuZC5uZXQ+CitEYXRlOiBTYXQsIDEx IEp1biAyMDIyIDIwOjU1OjM0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMTYvMzddIFtyb2NrY2hp cF9lYmNdIGFkZCBhIHN5cyBwYXJhbWV0ZXIgc3BsaXRfYXJlYV9saW1pdAorIChkZWZhdWx0OiAx MikgdGhhdCBkZXRlcm1pbmVzIGhvdyBtYW55IGFyZWFzIHRvIG1heGltYWxseSBzcGxpdCBpbiBl YWNoCisgc2NoZWR1bGluZyBydW4uIFNldCB0byAwIHRvIGRpc2FibGUgYXJlYSBzcGxpdHRpbmcu CisKKy0tLQorIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYyB8IDYgKysr KystCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jIGIvZHJp dmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCitpbmRleCA2ZjdiYmUwYmQ3MGYu LmFlOGY2NzI3ZDA1YyAxMDA2NDQKKy0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2Nr Y2hpcF9lYmMuYworKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5j CitAQCAtMTkzLDYgKzE5MywxMCBAQCBzdGF0aWMgaW50IHJlZnJlc2hfdGhyZXNob2xkID0gMjA7 CisgbW9kdWxlX3BhcmFtKHJlZnJlc2hfdGhyZXNob2xkLCBpbnQsIFNfSVJVR098U19JV1VTUik7 CisgTU9EVUxFX1BBUk1fREVTQyhyZWZyZXNoX3RocmVzaG9sZCwgInJlZnJlc2ggdGhyZXNob2xk IGluIHNjcmVlbiBhcmVhIG11bHRpcGxlcyIpOworIAorK3N0YXRpYyBpbnQgc3BsaXRfYXJlYV9s aW1pdCA9IDEyOworK21vZHVsZV9wYXJhbShzcGxpdF9hcmVhX2xpbWl0LCBpbnQsIFNfSVJVR098 U19JV1VTUik7CisrTU9EVUxFX1BBUk1fREVTQyhzcGxpdF9hcmVhX2xpbWl0LCAiaG93IG1hbnkg YXJlYXMgdG8gc3BsaXQgaW4gZWFjaCBzY2hlZHVsaW5nIGNhbGwiKTsKKysKKyBERUZJTkVfRFJN X0dFTV9GT1BTKHJvY2tjaGlwX2ViY19mb3BzKTsKKyAKKyBzdGF0aWMgaW50IGlvY3RsX3RyaWdn ZXJfZ2xvYmFsX3JlZnJlc2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKK0BA IC00ODgsNyArNDkyLDcgQEAgc3RhdGljIGJvb2wgcm9ja2NoaXBfZWJjX3NjaGVkdWxlX2FyZWEo c3RydWN0IGxpc3RfaGVhZCAqYXJlYXMsCisgCisgCQkJLy8gd2UgZG8gbm90IHdhbnQgdG8gb3Zl cmhlbG0gdGhlIHJlZnJlc2ggdGhyZWFkIGFuZCBsaW1pdCB1cyB0byBhCisgCQkJLy8gY2VydGFp biBudW1iZXIgb2Ygc3BsaXRzLiBUaGUgcmVzdCBuZWVkcyB0byB3YWl0CistCQkJaWYgKCpzcGxp dF9jb3VudGVyID49IDYpCisrCQkJaWYgKCpzcGxpdF9jb3VudGVyID49IHNwbGl0X2FyZWFfbGlt aXQpCisgCQkJCWNvbnRpbnVlOworIAorIAkJCS8vIHdlIG5lZWQgZm91ciBuZXcgcm9rY2hpcF9l YmNfYXJlYSBlbnRyaWVzIHRoYXQgd2Ugc3BsaWNlIGludG8KKy0tIAorMi4zMC4yCisKKworRnJv bSAyYjkxY2MyZDEyZDczZTI0YmZiZmFlM2ZkYzlhNzFlODM4ODUwOTJkIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQorRnJvbTogTWF4aW1pbGlhbiBXZWlnYW5kIDxtd2VpZ2FuZEBtd2VpZ2FuZC5u ZXQ+CitEYXRlOiBTYXQsIDExIEp1biAyMDIyIDIwOjU2OjM2ICswMjAwCitTdWJqZWN0OiBbUEFU Q0ggMTcvMzddIFtyb2NrY2hpcF9lYmNdIGZpeCBpb2N0bCBwcmludGsgbWVzc2FnZQorCistLS0K KyBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMgfCAyICstCisgMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMgYi9kcml2ZXJzL2dwdS9kcm0v cm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK2luZGV4IGFlOGY2NzI3ZDA1Yy4uNGQ2YTc5OWQ3YmI0 IDEwMDY0NAorLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCisr KysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK0BAIC0yMDYsNyAr MjA2LDcgQEAgc3RhdGljIGludCBpb2N0bF90cmlnZ2VyX2dsb2JhbF9yZWZyZXNoKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisgCXN0cnVjdCByb2NrY2hpcF9lYmMgKmViYyA9 IGRldl9nZXRfZHJ2ZGF0YShkZXYtPmRldik7CisgCisgCWlmIChhcmdzLT50cmlnZ2VyX2dsb2Jh bF9yZWZyZXNoKXsKKy0JCXByaW50ayhLRVJOX0lORk8gInJvY2tjaGlwX2ViYzogaW9jdGwgd291 bGQgdHJpZ2dlciBmdWxsIHJlZnJlc2ggXG4iKTsKKysJCXByaW50ayhLRVJOX0lORk8gInJvY2tj aGlwX2ViYzogaW9jdGwgdHJpZ2dlcmVkIGZ1bGwgcmVmcmVzaCBcbiIpOworIAkJc3Bpbl9sb2Nr KCZlYmMtPnJlZnJlc2hfb25jZV9sb2NrKTsKKyAJCWViYy0+ZG9fb25lX2Z1bGxfcmVmcmVzaCA9 IHRydWU7CisgCQlzcGluX3VubG9jaygmZWJjLT5yZWZyZXNoX29uY2VfbG9jayk7CistLSAKKzIu MzAuMgorCisKK0Zyb20gMzE0ZWJhZTcyMTE2MTNjY2U5MDg1ODA5MTE1MjEyZjNkYzEwMDJhOCBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1heGltaWxpYW4gV2VpZ2FuZCA8bXdlaWdh bmRAbXdlaWdhbmQubmV0PgorRGF0ZTogU2F0LCAxMSBKdW4gMjAyMiAyMDo1NzoxNCArMDIwMAor U3ViamVjdDogW1BBVENIIDE4LzM3XSBbcm9ja2NoaXBfZWJjXSBmaXggY2xpcHMgb2Ygc3BsaXQg YXJlYXMKKworLS0tCisgZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jIHwg OCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25z KC0pCisKK2RpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJj LmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK2luZGV4IDRkNmE3 OTlkN2JiNC4uNGViNmUxZTBmMjYxIDEwMDY0NAorLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tj aGlwL3JvY2tjaGlwX2ViYy5jCisrKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2No aXBfZWJjLmMKK0BAIC01NDQsMTkgKzU0NCwxOSBAQCBzdGF0aWMgYm9vbCByb2NrY2hpcF9lYmNf c2NoZWR1bGVfYXJlYShzdHJ1Y3QgbGlzdF9oZWFkICphcmVhcywKKyAJCQlpdGVtMi0+ZnJhbWVf YmVnaW4gPSBFQkNfRlJBTUVfUEVORElORzsKKyAJCQlpdGVtMi0+Y2xpcC54MSA9IHhtaW47Cisg CQkJaXRlbTItPmNsaXAueDIgPSB4Y2VudGVyOworLQkJCWl0ZW0yLT5jbGlwLnkxID0geWNlbnRl ciArIDE7CisrCQkJaXRlbTItPmNsaXAueTEgPSB5Y2VudGVyOworIAkJCWl0ZW0yLT5jbGlwLnky ID0geW1heDsKKyAKKyAJCQlpdGVtMy0+ZnJhbWVfYmVnaW4gPSBFQkNfRlJBTUVfUEVORElORzsK Ky0JCQlpdGVtMy0+Y2xpcC54MSA9IHhjZW50ZXIgKyAxOworKwkJCWl0ZW0zLT5jbGlwLngxID0g eGNlbnRlcjsKKyAJCQlpdGVtMy0+Y2xpcC54MiA9IHhtYXg7CisgCQkJaXRlbTMtPmNsaXAueTEg PSB5bWluOworIAkJCWl0ZW0zLT5jbGlwLnkyID0geWNlbnRlcjsKKyAKKyAJCQlpdGVtNC0+ZnJh bWVfYmVnaW4gPSBFQkNfRlJBTUVfUEVORElORzsKKy0JCQlpdGVtNC0+Y2xpcC54MSA9IHhjZW50 ZXIgKyAxOworKwkJCWl0ZW00LT5jbGlwLngxID0geGNlbnRlcjsKKyAJCQlpdGVtNC0+Y2xpcC54 MiA9IHhtYXg7CistCQkJaXRlbTQtPmNsaXAueTEgPSB5Y2VudGVyICsgMTsKKysJCQlpdGVtNC0+ Y2xpcC55MSA9IHljZW50ZXI7CisgCQkJaXRlbTQtPmNsaXAueTIgPSB5bWF4OworIAorIAkJCSpz cGxpdF9jb3VudGVyKys7CistLSAKKzIuMzAuMgorCisKK0Zyb20gNTg5NGEwODY5MzllYzJjOGU4 OGJkYmUyNTA1MDUyZDZkNGZkN2RhNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1h eGltaWxpYW4gV2VpZ2FuZCA8bXdlaWdhbmRAbXdlaWdhbmQubmV0PgorRGF0ZTogU2F0LCAxMSBK dW4gMjAyMiAyMDo1Nzo0NCArMDIwMAorU3ViamVjdDogW1BBVENIIDE5LzM3XSBbcm9ja2NoaXBf ZWJjXSBmaXggaW5jcmVtZW50aW5nIG9mIHNwbGl0dGluZyBjb3VudGVyCisKKy0tLQorIGRyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hp cC9yb2NrY2hpcF9lYmMuYworaW5kZXggNGViNmUxZTBmMjYxLi43ZTE1NTg0MDM5NzMgMTAwNjQ0 CistLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKKysrKyBiL2Ry aXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYworQEAgLTU1OSw3ICs1NTksNyBA QCBzdGF0aWMgYm9vbCByb2NrY2hpcF9lYmNfc2NoZWR1bGVfYXJlYShzdHJ1Y3QgbGlzdF9oZWFk ICphcmVhcywKKyAJCQlpdGVtNC0+Y2xpcC55MSA9IHljZW50ZXI7CisgCQkJaXRlbTQtPmNsaXAu eTIgPSB5bWF4OworIAorLQkJCSpzcGxpdF9jb3VudGVyKys7CisrCQkJKCpzcGxpdF9jb3VudGVy KSsrOworIAorIAkJCS8vIGxldCB0aGUgb3V0ZXIgbG9vcCBkZWxldGUgdGhpcyBhcmVhCisgCQkJ cmV0dXJuIGZhbHNlOworLS0gCisyLjMwLjIKKworCitGcm9tIDMyNWI3NzczYzg5YjQ5OGRlMzU3 ZDI5NTJlZDQ3YmEwNTI2NTgyOTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXhp bWlsaWFuIFdlaWdhbmQgPG13ZWlnYW5kQG13ZWlnYW5kLm5ldD4KK0RhdGU6IFNhdCwgMTEgSnVu IDIwMjIgMjA6NTg6MTcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAyMC8zN10gW3JvY2tjaGlwX2Vi Y10gRml4IGEgYnVnIGluIHRoZSBzY2hlZHVsaW5nIGZ1bmN0aW9uCisgdGhhdCBjb3VsZCBzY2hl ZHVsZSBhbiBhcmVhIHRvbyBlYXJseTogaWYgdGhlIGFyZWEgb3ZlcmxhcHMgd2l0aCBhbgorIGFs cmVhZHktc3RhcnRlZCBhcmVhLCBpdHMgYmVnaW5fZnJhbWUgd2lsbCBiZSBzZXQgdG8gdGhlIGVu ZCBmcmFtZSBvZiB0aGUKKyBvdGhlciBvbmUuIEhvd2V2ZXIsIGlmIGFueSBmcmFtZSBpbiB0aGUg bGlzdCBmb2xsb3dzIHRoYXQgY2FuIHN0YXJ0IGVhcmxpZXIKKyAoYmVjYXVzZSBpdCBkb2VzIG5v dCBvdmVybGFwIG9yIGZpbmlzaGVzIGF0IGFuIGVhcmxpZXIgdGltZSkgdGhhbiB0aGlzCisgZWFy bGllciBlbmQgZnJhbWUgd2lsbCBiZSB1c2VkIHRvIHNjaGVkdWxlIHRoZSBuZXcgYXJlYS4KKwor LS0tCisgZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jIHwgNSArKystLQor IDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMgYi9kcml2ZXJz L2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK2luZGV4IDdlMTU1ODQwMzk3My4uOTcz ZDEzZmZkMGQzIDEwMDY0NAorLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlw X2ViYy5jCisrKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK0BA IC01NzYsOCArNTc2LDkgQEAgc3RhdGljIGJvb2wgcm9ja2NoaXBfZWJjX3NjaGVkdWxlX2FyZWEo c3RydWN0IGxpc3RfaGVhZCAqYXJlYXMsCisgCQkJcmV0dXJuIGZhbHNlOworIAkJfQorIAorLQkJ LyogT3RoZXJ3aXNlLCBzdGFydCBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSBvdGhlciBhcmVhLiAq LworLQkJZnJhbWVfYmVnaW4gPSBvdGhlci0+ZnJhbWVfYmVnaW47CisrCQkvKiBPdGhlcndpc2Us IHRoZSBlYXJsaWVzdCBzdGFydCBpcyB0aGUgc2FtZSB0aW1lIGFzIHRoYXQgb2YgdGhlIG90aGVy CisrCQkgKiBhcmVhLiAqLworKwkJZnJhbWVfYmVnaW4gPSBtYXgoZnJhbWVfYmVnaW4sIG90aGVy LT5mcmFtZV9iZWdpbik7CisgCX0KKyAKKyAJYXJlYS0+ZnJhbWVfYmVnaW4gPSBmcmFtZV9iZWdp bjsKKy0tIAorMi4zMC4yCisKKworRnJvbSAzNTBlNGVjMWRhN2NiNGZlNjdjY2I2ZDU0Yjk4Y2Zl YWQwMzFjNTAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF4aW1pbGlhbiBXZWln YW5kIDxtd2VpZ2FuZEBtd2VpZ2FuZC5uZXQ+CitEYXRlOiBTYXQsIDExIEp1biAyMDIyIDIxOjA4 OjE5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMjEvMzddIFtyb2NrY2hpcF9lYmNdIFRoZSBjdXJy ZW50IGRyaXZlciBpdGVyYXRpb24gZG9lcyBub3QKKyBndWFyYW50ZWUgY29uc2lzdGVuY3kgYmV0 d2VlbiB0aGUgbGlzdCBvZiBjdXJyZW50bHktd29ya2VkIG9uIGRhbWFnZWQgYXJlYXMKKyAoc25h cHNob3Qgb2YgY3R4LT5xdWV1ZSB0YWtlbiBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggZnJhbWUp IGFuZCB0aGUKKyBmcmFtZWJ1ZmZlciBjb250ZW50IChjdHgtPmZpbmFsKS4gQXMgc3VjaCBpdCBp cyBwb3NzaWJsZSB0aGF0IHRoZSBjb250ZW50IG9mCisgdGhlIGZyYW1lYnVmZmVyIGNoYW5nZXMg YmVmb3JlIGEgZ2l2ZW4gYXJlYSBjYW4gYmUgZHJhd24sIHBvdGVudGlhbGx5IGxlYWRpbmcKKyB0 byBnYXJibGVkIHNjcmVlbiBjb250ZW50LiBUaGlzIGVmZmVjdHMgaXMgaHVnZWx5IGRlcGVuZGVu dCBvbiB0aGUgbmF0dXJlIG9mCisgZHJhd2luZyBjYWxscyBlbWl0dGVkIGJ5IGluZGl2aWR1YWwg YXBwbGljYXRpb25zLiBMYXJnZSBzY2hlZHVsZWQgYXJlYXMgdGVuZAorIHRvIGJlIGdvb2QsIGJ1 dCBpZiBhbiBhcHBsaWNhdGlvbiBzZW5kcyBsYXJnZSBidXJzdHMgb2YKKyBvdmVybGFwcGluZy9v dmVyd3JpdGluZyBhcmVhcyB0aGVuIGJhZCB0aGluZ3MgaGFwcGVuLiBUaGUgYnVnL2VmZmVjdCBp cyBhbHNvCisgdHJpZ2dlcmVkIGlmIGFyZWEgc3BsaXR0aW5nIGlzIGRvbmUgdG8gaW5jcmVhc2Ug ZHJhd2luZyBwZXJmb3JtYW5jZS4KKworRm9yIGV4YW1wbGUsIHRoaXMgY2FuIGJlIG5pY2VseSBz ZWVuIHVuZGVyIEdub21lIHdoZW4KK2NoYW90aWNhbGx5IG1vdmluZyB0aGUgbmF1dGlsdXMgd2lu ZG93LgorCitUaGlzIHBhdGNoIGlzIG5vdCBhIGZpeCBidXQgc29tZXdoYXQgcmVkdWNlcyB0aGUg aW1wYWN0IGJ5IG1vdmluZyB0aGUKK3NwbGlubG9jayBndWFyZGluZyB0aGUgY3R4LT5xdWV1ZSBz byBpdCBndWFyZHMgYm90aCB0aGUgd2hvbGUKK2ZyYW1lLXByZXBhcnRpb24gcGhhc2Ugb2YgdGhl IHBhcnRpYWwgcmVmcmVzaCBmdW5jdGlvbiBhbmQgdGhlCitmcmFtZWJ1ZmZlciBibGl0dGluZyBm dW5jdGlvbi4KKworQW4gYWx0ZXJuYXRpdmUgdGhhdCBhbHNvIGdyZWF0bHkgcmVkdWNlcyB0aGUg ZWZmZWN0IGlzIHRvIGNvcHkgdGhlIHdob2xlCitmcmFtZWJ1ZmZlciBiZWZvcmUgcHJlcGFyaW5n IGEgZ2l2ZW4gZnJhbWUuIEhvd2V2ZXIsIHRoaXMgaGFzIGEgaHVnZQorcGVyZm9ybWFuY2UgaW1w YWN0IGFuZCB0aHVzIGlzIG5vdCBmZWFzaWJsZSBpZiB3ZSBzdGlsbCB3YW50IHRvIHRvCityZWFs LXRpbWUgZHJhd2luZ3MuCistLS0KKyBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBf ZWJjLmMgfCA5ICsrKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDMg ZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9j a2NoaXBfZWJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK2lu ZGV4IDk3M2QxM2ZmZDBkMy4uM2VmODk5YzQ3NzlmIDEwMDY0NAorLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCisrKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2No aXAvcm9ja2NoaXBfZWJjLmMKK0BAIC03NDQsNyArNzQ0LDYgQEAgc3RhdGljIHZvaWQgcm9ja2No aXBfZWJjX3BhcnRpYWxfcmVmcmVzaChzdHJ1Y3Qgcm9ja2NoaXBfZWJjICplYmMsCisgCQkvKiBN b3ZlIHRoZSBxdWV1ZWQgZGFtYWdlIGFyZWFzIHRvIHRoZSBsb2NhbCBsaXN0LiAqLworIAkJc3Bp bl9sb2NrKCZjdHgtPnF1ZXVlX2xvY2spOworIAkJbGlzdF9zcGxpY2VfdGFpbF9pbml0KCZjdHgt PnF1ZXVlLCAmYXJlYXMpOworLQkJc3Bpbl91bmxvY2soJmN0eC0+cXVldWVfbG9jayk7CisgCisg CQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYXJlYSwgbmV4dF9hcmVhLCAmYXJlYXMsIGxpc3Qp IHsKKyAJCQlzMzIgZnJhbWVfZGVsdGE7CitAQCAtODMyLDYgKzgzMSw4IEBAIHN0YXRpYyB2b2lk IHJvY2tjaGlwX2ViY19wYXJ0aWFsX3JlZnJlc2goc3RydWN0IHJvY2tjaGlwX2ViYyAqZWJjLAor IAkJZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoZGV2LCBwaGFzZV9oYW5kbGUsCisgCQkJCQkg ICBjdHgtPnBoYXNlX3NpemUsIERNQV9UT19ERVZJQ0UpOworIAorKwkJc3Bpbl91bmxvY2soJmN0 eC0+cXVldWVfbG9jayk7CisrCisgCQkvKiBpZiAoZnJhbWUpIHsgKi8KKyAJCS8qIAlpZiAoIXdh aXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmZWJjLT5kaXNwbGF5X2VuZCwgKi8KKyAJCS8qIAkJ CQkJIEVCQ19GUkFNRV9USU1FT1VUKSkgKi8KK0BAIC0xNDQ4LDYgKzE0NDksNyBAQCBzdGF0aWMg dm9pZCByb2NrY2hpcF9lYmNfcGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwKKyAJZWJjX3BsYW5lX3N0YXRlID0gdG9fZWJjX3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRl KTsKKyAJdmFkZHIgPSBlYmNfcGxhbmVfc3RhdGUtPmJhc2UuZGF0YVswXS52YWRkcjsKKyAKKysJ c3Bpbl9sb2NrKCZjdHgtPnF1ZXVlX2xvY2spOworIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUo YXJlYSwgbmV4dF9hcmVhLCAmZWJjX3BsYW5lX3N0YXRlLT5hcmVhcywgbGlzdCkgeworIAkJc3Ry dWN0IGRybV9yZWN0ICpkc3RfY2xpcCA9ICZhcmVhLT5jbGlwOworIAkJc3RydWN0IGRybV9yZWN0 IHNyY19jbGlwID0gYXJlYS0+Y2xpcDsKK0BAIC0xNDkzLDEwICsxNDk1LDExIEBAIHN0YXRpYyB2 b2lkIHJvY2tjaGlwX2ViY19wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAorIAkJfQorIAl9CisgCistCWlmIChsaXN0X2VtcHR5KCZlYmNfcGxhbmVfc3RhdGUtPmFy ZWFzKSkKKysJaWYgKGxpc3RfZW1wdHkoJmViY19wbGFuZV9zdGF0ZS0+YXJlYXMpKXsKKysJCXNw aW5fdW5sb2NrKCZjdHgtPnF1ZXVlX2xvY2spOworIAkJcmV0dXJuOworKwl9CisgCistCXNwaW5f bG9jaygmY3R4LT5xdWV1ZV9sb2NrKTsKKyAJbGlzdF9zcGxpY2VfdGFpbF9pbml0KCZlYmNfcGxh bmVfc3RhdGUtPmFyZWFzLCAmY3R4LT5xdWV1ZSk7CisgCXNwaW5fdW5sb2NrKCZjdHgtPnF1ZXVl X2xvY2spOworIAorLS0gCisyLjMwLjIKKworCitGcm9tIGIzNjA4NGI3Zjc3N2RkYTY2OWNmODEz MmY1MzljMmViYjg5ZGNhNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXhpbWls aWFuIFdlaWdhbmQgPG13ZWlnYW5kQG13ZWlnYW5kLm5ldD4KK0RhdGU6IEZyaSwgMTcgSnVuIDIw MjIgMTE6MDU6MDYgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAyMi8zN10gW3JvY2tjaGlwX2ViY10g cmVtb3ZlL2NvbW1lbnQgb3V0IGRlYnVnIHByaW50ayBtZXNzYWdlcworCistLS0KKyBkcml2ZXJz L2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMgfCAxMSArKystLS0tLS0tLQorIDEgZmls ZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMgYi9kcml2ZXJzL2dwdS9k cm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK2luZGV4IDNlZjg5OWM0Nzc5Zi4uODE5ZTRiZjI4 NTk1IDEwMDY0NAorLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5j CisrKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK0BAIC0yMDYs NyArMjA2LDYgQEAgc3RhdGljIGludCBpb2N0bF90cmlnZ2VyX2dsb2JhbF9yZWZyZXNoKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisgCXN0cnVjdCByb2NrY2hpcF9lYmMgKmVi YyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYtPmRldik7CisgCisgCWlmIChhcmdzLT50cmlnZ2VyX2ds b2JhbF9yZWZyZXNoKXsKKy0JCXByaW50ayhLRVJOX0lORk8gInJvY2tjaGlwX2ViYzogaW9jdGwg dHJpZ2dlcmVkIGZ1bGwgcmVmcmVzaCBcbiIpOworIAkJc3Bpbl9sb2NrKCZlYmMtPnJlZnJlc2hf b25jZV9sb2NrKTsKKyAJCWViYy0+ZG9fb25lX2Z1bGxfcmVmcmVzaCA9IHRydWU7CisgCQlzcGlu X3VubG9jaygmZWJjLT5yZWZyZXNoX29uY2VfbG9jayk7CitAQCAtNDI3LDcgKzQyNiw3IEBAIHN0 YXRpYyBib29sIHJvY2tjaGlwX2ViY19zY2hlZHVsZV9hcmVhKHN0cnVjdCBsaXN0X2hlYWQgKmFy ZWFzLAorIAlzdHJ1Y3Qgcm9ja2NoaXBfZWJjX2FyZWEgKm90aGVyOworIAkvLyBieSBkZWZhdWx0 LCBiZWdpbiBub3cKKyAJdTMyIGZyYW1lX2JlZ2luID0gY3VycmVudF9mcmFtZTsKKy0JLyogcHJp bnRrKEtFUk5fSU5GTyAic2NoZWR1bGluZyBhcmVhOiAlaS0laSAlaS0laVxuIiwgYXJlYS0+Y2xp cC54MSwgYXJlYS0+Y2xpcC54MiwgYXJlYS0+Y2xpcC55MSwgYXJlYS0+Y2xpcC55Mik7ICovCisr CS8vcHJpbnRrKEtFUk5fSU5GTyAic2NoZWR1bGluZyBhcmVhOiAlaS0laSAlaS0laSAoY3VycmVu dCBmcmFtZTogJWkpXG4iLCBhcmVhLT5jbGlwLngxLCBhcmVhLT5jbGlwLngyLCBhcmVhLT5jbGlw LnkxLCBhcmVhLT5jbGlwLnkyLCBjdXJyZW50X2ZyYW1lKTsKKyAKKyAJbGlzdF9mb3JfZWFjaF9l bnRyeShvdGhlciwgYXJlYXMsIGxpc3QpIHsKKyAJCXN0cnVjdCBkcm1fcmVjdCBpbnRlcnNlY3Rp b247CitAQCAtNzY4LDcgKzc2Nyw3IEBAIHN0YXRpYyB2b2lkIHJvY2tjaGlwX2ViY19wYXJ0aWFs X3JlZnJlc2goc3RydWN0IHJvY2tjaGlwX2ViYyAqZWJjLAorIAorIAkJCS8qIENvcHkgY3R4LT5m aW5hbCB0byBjdHgtPm5leHQgb24gdGhlIGZpcnN0IGZyYW1lLiAqLworIAkJCWlmIChmcmFtZV9k ZWx0YSA9PSAwKSB7CistCQkJCXByaW50ayhLRVJOX0lORk8gInJvY2tjaGlwIHBhcnRpYWwgcmVm cmVzaCBzdGFydGluZyBhcmVhIG9uIGZyYW1lICVpICglaS8laSAlaS8laSlcbiIsIGZyYW1lLCBh cmVhLT5jbGlwLngxLCBhcmVhLT5jbGlwLngyLCBhcmVhLT5jbGlwLnkxLCBhcmVhLT5jbGlwLnky KTsKKysJCQkJLy9wcmludGsoS0VSTl9JTkZPICJyb2NrY2hpcCBwYXJ0aWFsIHJlZnJlc2ggc3Rh cnRpbmcgYXJlYSBvbiBmcmFtZSAlaSAoJWkvJWkgJWkvJWkpXG4iLCBmcmFtZSwgYXJlYS0+Y2xp cC54MSwgYXJlYS0+Y2xpcC54MiwgYXJlYS0+Y2xpcC55MSwgYXJlYS0+Y2xpcC55Mik7CisgCQkJ CWxvY2FsX2FyZWFfY291bnQgKz0gKHU2NCkgKAorIAkJCQkJYXJlYS0+Y2xpcC54MiAtIGFyZWEt PmNsaXAueDEpICoKKyAJCQkJCShhcmVhLT5jbGlwLnkyIC0gYXJlYS0+Y2xpcC55MSk7CitAQCAt ODE3LDYgKzgxNiw3IEBAIHN0YXRpYyB2b2lkIHJvY2tjaGlwX2ViY19wYXJ0aWFsX3JlZnJlc2go c3RydWN0IHJvY2tjaGlwX2ViYyAqZWJjLAorIAkJCQlkcm1fZGJnKGRybSwgImFyZWEgJXAgKCIg RFJNX1JFQ1RfRk1UICIpIGZpbmlzaGVkIG9uICV1XG4iLAorIAkJCQkJYXJlYSwgRFJNX1JFQ1Rf QVJHKCZhcmVhLT5jbGlwKSwgZnJhbWUpOworIAorKwkJCQkvL3ByaW50ayhLRVJOX0lORk8gInJv Y2tjaGlwIHBhcnRpYWwgcmVmcmVzaCBzdG9wcGluZyBhcmVhIG9uIGZyYW1lICVpICglaS8laSAl aS8laSlcbiIsIGZyYW1lLCBhcmVhLT5jbGlwLngxLCBhcmVhLT5jbGlwLngyLCBhcmVhLT5jbGlw LnkxLCBhcmVhLT5jbGlwLnkyKTsKKyAJCQkJbGlzdF9kZWwoJmFyZWEtPmxpc3QpOworIAkJCQlr ZnJlZShhcmVhKTsKKyAJCQl9CitAQCAtODU4LDcgKzg1OCw2IEBAIHN0YXRpYyB2b2lkIHJvY2tj aGlwX2ViY19wYXJ0aWFsX3JlZnJlc2goc3RydWN0IHJvY2tjaGlwX2ViYyAqZWJjLAorIAl9Cisg CWRtYV91bm1hcF9zaW5nbGUoZGV2LCBwaGFzZV9oYW5kbGVzWzBdLCBjdHgtPmdyYXk0X3NpemUs IERNQV9UT19ERVZJQ0UpOworIAlkbWFfdW5tYXBfc2luZ2xlKGRldiwgcGhhc2VfaGFuZGxlc1sx XSwgY3R4LT5ncmF5NF9zaXplLCBETUFfVE9fREVWSUNFKTsKKy0JLyogcHJpbnRrKEtFUk5fSU5G TyAibG9jYSBhcmVhIGNvdW50OiAlbGx1XG4iLCBsb2NhbF9hcmVhX2NvdW50KTsgKi8KKyAJY3R4 LT5hcmVhX2NvdW50ICs9IGxvY2FsX2FyZWFfY291bnQ7CisgfQorIAorQEAgLTk2MCw3ICs5NTks NiBAQCBzdGF0aWMgdm9pZCByb2NrY2hpcF9lYmNfcmVmcmVzaChzdHJ1Y3Qgcm9ja2NoaXBfZWJj ICplYmMsCisgCS8vIGRvIHdlIG5lZWQgYSBmdWxsIHJlZnJlc2gKKyAJaWYgKGF1dG9fcmVmcmVz aCl7CisgCQlpZiAoY3R4LT5hcmVhX2NvdW50ID49IHJlZnJlc2hfdGhyZXNob2xkICogb25lX3Nj cmVlbl9hcmVhKXsKKy0JCQlwcmludGsoS0VSTl9JTkZPICJyb2NrY2hpcDogdHJpZ2dlcmluZyBm dWxsIHJlZnJlc2ggZHVlIHRvIGRyYXduIGFyZWEgdGhyZXNob2xkXG4iKTsKKyAJCQlzcGluX2xv Y2soJmViYy0+cmVmcmVzaF9vbmNlX2xvY2spOworIAkJCWViYy0+ZG9fb25lX2Z1bGxfcmVmcmVz aCA9IHRydWU7CisgCQkJc3Bpbl91bmxvY2soJmViYy0+cmVmcmVzaF9vbmNlX2xvY2spOworQEAg LTE2NTAsMTUgKzE2NDgsMTIgQEAgc3RhdGljIGludCByb2NrY2hpcF9lYmNfZHJtX2luaXQoc3Ry dWN0IHJvY2tjaGlwX2ViYyAqZWJjKQorIAkvLyBjaGVjayBpZiB0aGVyZSBpcyBhIGRlZmF1bHQg b2ZmLXNjcmVlbgorIAlpZiAoIXJlcXVlc3RfZmlybXdhcmUoJmRlZmF1bHRfb2Zmc2NyZWVuLCAi cm9ja2NoaXAvcm9ja2NoaXBfZWJjX2RlZmF1bHRfc2NyZWVuLmJpbiIsIGRybS0+ZGV2KSkKKyAJ eworLQkJcHJpbnRrKEtFUk5fSU5GTyAicm9ja2NoaXBfZWJjOiBkZWZhdWx0IG9mZi1zY3JlZW4g ZmlsZSBmb3VuZFxuIik7CisgCQlpZiAoZGVmYXVsdF9vZmZzY3JlZW4tPnNpemUgIT0gMTMxNDE0 NCkKKyAJCQlkcm1fZXJyKGRybSwgIlNpemUgb2YgZGVmYXVsdCBvZmZzY3JlZW4gZGF0YSBmaWxl IGlzIG5vdCAxMzE0MTQ0XG4iKTsKKyAJCWVsc2UgeworLQkJCXByaW50ayhLRVJOX0lORk8gInJv Y2tjaGlwX2ViYzogbG9hZGluZyBkZWZhdWx0IG9mZi1zY3JlZW5cbiIpOworIAkJCW1lbWNweShl YmMtPm9mZl9zY3JlZW4sIGRlZmF1bHRfb2Zmc2NyZWVuLT5kYXRhLCAxMzE0MTQ0KTsKKyAJCX0K KyAJfSBlbHNlIHsKKy0JCXByaW50ayhLRVJOX0lORk8gInJvY2tjaGlwX2ViYzogbm8gZGVmYXVs dCBvZmYtc2NyZWVuIGZpbGUgZm91bmRcbiIpOworIAkJLy8gZmlsbCB0aGUgb2ZmLXNjcmVlbiB3 aXRoIHNvbWUgdmFsdWVzCisgCQltZW1zZXQoZWJjLT5vZmZfc2NyZWVuLCAweGZmLCAxMzE0MTQ0 KTsKKyAJCS8qIG1lbXNldChlYmMtPm9mZl9zY3JlZW4sIDB4MDAsIDU1NjE0NCk7ICovCistLSAK KzIuMzAuMgorCisKK0Zyb20gNzRjZmE5YWFmODdmMmYwYjkzYTY1MDUyYzI0OGYwYmQyMWI0YjQy MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1heGltaWxpYW4gV2VpZ2FuZCA8bXdl aWdhbmRAbXdlaWdhbmQubmV0PgorRGF0ZTogRnJpLCAxNyBKdW4gMjAyMiAxMTowODowOCArMDIw MAorU3ViamVjdDogW1BBVENIIDIzLzM3XSBbcm9ja2NoaXBfZWJjXSBtb3ZlIHRoZSBhcmVhLXNw bGl0dGluZyBjb2RlIHRvIGl0cyBvd24KKyBmdW5jdGlvbiBhbmQgaG9wZWZ1bGx5IGZpeCB0aGUg cG9pbnRlci11c2FnZSBhbmQgbGlzdC1oYW5kbGluZ3MgYnVncy4KKworQWxzbywgdHJ5IHRvIHNw bGl0IGFyZWFzIGV2ZW4gaWYgdGhlIG90aGVyIGFyZWEgd2FzIG5vdCBzdGFydGVkIHlldC4gSSdt Citub3QgcmVhbGx5IHN1cmUgaWYgdGhpcyBicmluZ3MgYmVuZWZpdHMsIGJ1dCB0aGUgaWRlYSBp cyB0aGF0IGlmIHdlIGhhdmUKK3NtYWxsZXIgYXJlYXMsIHRoZW4gZnV0dXJlIG92ZXJsYXBzIHdp bGwgcHJvYmFibHkgaGFwcGVuIGxlc3MuCistLS0KKyBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv cm9ja2NoaXBfZWJjLmMgfCAyNjUgKysrKysrKysrKysrKysrLS0tLS0tLS0tCisgMSBmaWxlIGNo YW5nZWQsIDE2MiBpbnNlcnRpb25zKCspLCAxMDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMgYi9kcml2ZXJzL2dwdS9k cm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK2luZGV4IDgxOWU0YmYyODU5NS4uNTJiZjVkMTFl YzU3IDEwMDY0NAorLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5j CisrKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK0BAIC00MTUs MTEgKzQxNSwxNTcgQEAgc3RhdGljIHZvaWQgcm9ja2NoaXBfZWJjX2dsb2JhbF9yZWZyZXNoKHN0 cnVjdCByb2NrY2hpcF9lYmMgKmViYywKKyAJbWVtY3B5KGN0eC0+cHJldiwgY3R4LT5uZXh0LCBn cmF5NF9zaXplKTsKKyB9CisgCisrLyoKKysgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGFyZWEgd2Fz IHNwbGl0LCBmYWxzZSBvdGhlcndpc2UKKysgKi8KKytzdGF0aWMgaW50IHRyeV90b19zcGxpdF9h cmVhKAorKwkJc3RydWN0IGxpc3RfaGVhZCAqYXJlYXMsCisrCSAgICBzdHJ1Y3Qgcm9ja2NoaXBf ZWJjX2FyZWEgKmFyZWEsCisrCSAgICBzdHJ1Y3Qgcm9ja2NoaXBfZWJjX2FyZWEgKm90aGVyLAor KwkgICAgaW50ICogc3BsaXRfY291bnRlciwKKysJICAgIHN0cnVjdCByb2NrY2hpcF9lYmNfYXJl YSAqKnBfbmV4dF9hcmVhLAorKwkJc3RydWN0IGRybV9yZWN0ICogaW50ZXJzZWN0aW9uCisrCSAg ICApeworKworKwkvLyBmb3Igbm93LCBtaW4gc2l6ZSBpZiAyeDIKKysJaWYgKChhcmVhLT5jbGlw LngyIC0gYXJlYS0+Y2xpcC54MSA8IDIpIHwgKGFyZWEtPmNsaXAueTIgLSBhcmVhLT5jbGlwLnkx IDwgMikpCisrCQlyZXR1cm4gMDsKKysKKysJLy8gb2ssIHdlIHdhbnQgdG8gc3BsaXQgdGhpcyBh cmVhIGFuZCBzdGFydCB3aXRoIGFueSBwYXJ0aWFsIGFyZWFzCisrCS8vIHRoYXQgYXJlIG5vdCBv dmVybGFwcGluZyAod2VsbCwgbGV0IHRoaXMgYmUgZGVjaWRlZCB1cG9uIGF0IHRoZQorKwkvLyBu ZXh0IG91dGVyIGxvb3AgLSB3ZSBkZWxldGUgdGhpcyBhcmVhIHNvIHdlIG5lZWQgbm90IHRvIGp1 Z2dsZQorKwkvLyBhcm91bmQgdGhlIGZvdXIgYXJlYXMgdW50aWwgd2UgZm91bmQgdGhlIG9uZSB0 aGF0IGlzIGFjdHVhbGx5CisrCS8vIG92ZXJsYXBwaW5nKQorKwlpbnQgeG1pbiwgeG1heCwgeW1p biwgeW1heCwgeGNlbnRlciwgeWNlbnRlcjsKKysKKysJYm9vbCBub194c3BsaXQgPSBmYWxzZTsK KysJYm9vbCBub195c3BsaXQgPSBmYWxzZTsKKysJYm9vbCBzcGxpdF9ib3RoID0gdHJ1ZTsKKysK KysJeG1pbiA9IGFyZWEtPmNsaXAueDE7CisrCWlmIChpbnRlcnNlY3Rpb24tPngxID4geG1pbikK KysJCXhjZW50ZXIgPSBpbnRlcnNlY3Rpb24tPngxOworKwllbHNlCisrCQl4Y2VudGVyID0gaW50 ZXJzZWN0aW9uLT54MjsKKysJeG1heCA9IGFyZWEtPmNsaXAueDI7CisrCisrCXltaW4gPSBhcmVh LT5jbGlwLnkxOworKwlpZiAoaW50ZXJzZWN0aW9uLT55MSA+IHltaW4pCisrCQl5Y2VudGVyID0g aW50ZXJzZWN0aW9uLT55MTsKKysJZWxzZQorKwkJeWNlbnRlciA9IGludGVyc2VjdGlvbi0+eTI7 CisrCXltYXggPSBhcmVhLT5jbGlwLnkyOworKworKwlpZiAoKHhtaW4gPT0geGNlbnRlcikgfCAo eGNlbnRlciA9PSB4bWF4KSl7CisrCQlub194c3BsaXQgPSB0cnVlOworKwkJc3BsaXRfYm90aCA9 IGZhbHNlOworKwl9CisrCWlmICgoeW1pbiA9PSB5Y2VudGVyKSB8ICh5Y2VudGVyID09IHltYXgp KXsKKysJCW5vX3lzcGxpdCA9IHRydWU7CisrCQlzcGxpdF9ib3RoID0gZmFsc2U7CisrCX0KKysK KysJLy8gY2FuIHdlIGxhbmQgaGVyZSBhdCBhbGw/Pz8KKysJaWYgKG5vX3hzcGxpdCAmJiBub195 c3BsaXQpCisrCQlyZXR1cm4gMDsKKysKKysJLy8gd2UgZG8gbm90IHdhbnQgdG8gb3ZlcmhlbG0g dGhlIHJlZnJlc2ggdGhyZWFkIGFuZCBsaW1pdCB1cyB0byBhCisrCS8vIGNlcnRhaW4gbnVtYmVy IG9mIHNwbGl0cy4gVGhlIHJlc3QgbmVlZHMgdG8gd2FpdAorKwlpZiAoKnNwbGl0X2NvdW50ZXIg Pj0gc3BsaXRfYXJlYV9saW1pdCkKKysJCXJldHVybiAwOworKworKwkvLyB3ZSBuZWVkIGZvdXIg bmV3IHJva2NoaXBfZWJjX2FyZWEgZW50cmllcyB0aGF0IHdlIHNwbGljZSBpbnRvCisrCS8vIHRo ZSBsaXN0LiBOb3RlIHRoYXQgdGhlIGN1cnJlbnRseSBuZXh0IGl0ZW0gc2hhbGwgYmUgY29waWVk CisrCS8vIGJhY2t3YXJkcyBiZWNhdXNlIHRvIHByZXZlbnQgdGhlIG91dGVyIGxpc3QgaXRlcmF0 aW9uIGZyb20KKysJLy8gc2tpcHBpbmcgb3ZlciBvdXIgbmV3bHkgY3JlYXRlZCBpdGVtcy4KKysK KysJc3RydWN0IHJvY2tjaGlwX2ViY19hcmVhICogaXRlbTE7CisrCXN0cnVjdCByb2NrY2hpcF9l YmNfYXJlYSAqIGl0ZW0yOworKwlzdHJ1Y3Qgcm9ja2NoaXBfZWJjX2FyZWEgKiBpdGVtMzsKKysJ c3RydWN0IHJvY2tjaGlwX2ViY19hcmVhICogaXRlbTQ7CisrCWl0ZW0xID0ga21hbGxvYyhzaXpl b2YoKml0ZW0xKSwgR0ZQX0tFUk5FTCk7CisrCWlmIChzcGxpdF9ib3RoIHx8IG5vX3hzcGxpdCkK KysJCWl0ZW0yID0ga21hbGxvYyhzaXplb2YoKml0ZW0yKSwgR0ZQX0tFUk5FTCk7CisrCWlmIChz cGxpdF9ib3RoIHx8IG5vX3lzcGxpdCkKKysJCWl0ZW0zID0ga21hbGxvYyhzaXplb2YoKml0ZW0z KSwgR0ZQX0tFUk5FTCk7CisrCWlmIChzcGxpdF9ib3RoKQorKwkJaXRlbTQgPSBrbWFsbG9jKHNp emVvZigqaXRlbTQpLCBHRlBfS0VSTkVMKTsKKysKKysJLy8gVE9ETzogRXJyb3IgY2hlY2tpbmch ISEhCisrCS8qIGlmICghYXJlYSkgKi8KKysJLyogCXJldHVybiAtRU5PTUVNOyAqLworKworKwlp ZiAobm9feHNwbGl0KQorKwkJeGNlbnRlciA9IHhtYXg7CisrCisrCWlmIChub195c3BsaXQpCisr CQl5Y2VudGVyID0geW1heDsKKysKKysJaWYgKGxpc3RfaXNfbGFzdCgmYXJlYS0+bGlzdCwgYXJl YXMpKXsKKysJCWxpc3RfYWRkX3RhaWwoJml0ZW0xLT5saXN0LCBhcmVhcyk7CisrCQlpZiAoc3Bs aXRfYm90aCB8fCBub194c3BsaXQpCisrCQkJbGlzdF9hZGRfdGFpbCgmaXRlbTItPmxpc3QsIGFy ZWFzKTsKKysJCWlmIChzcGxpdF9ib3RoIHx8IG5vX3lzcGxpdCkKKysJCQlsaXN0X2FkZF90YWls KCZpdGVtMy0+bGlzdCwgYXJlYXMpOworKwkJaWYgKHNwbGl0X2JvdGgpCisrCQkJbGlzdF9hZGRf dGFpbCgmaXRlbTQtPmxpc3QsIGFyZWFzKTsKKysJfQorKwllbHNleworKwkJaWYgKHNwbGl0X2Jv dGgpCisrCQkJX19saXN0X2FkZCgmaXRlbTQtPmxpc3QsICZhcmVhLT5saXN0LCBhcmVhLT5saXN0 Lm5leHQpOworKwkJaWYgKHNwbGl0X2JvdGggfHwgbm9feXNwbGl0KQorKwkJCV9fbGlzdF9hZGQo Jml0ZW0zLT5saXN0LCAmYXJlYS0+bGlzdCwgYXJlYS0+bGlzdC5uZXh0KTsKKysJCWlmIChzcGxp dF9ib3RoIHx8IG5vX3hzcGxpdCkKKysJCQlfX2xpc3RfYWRkKCZpdGVtMi0+bGlzdCwgJmFyZWEt Pmxpc3QsIGFyZWEtPmxpc3QubmV4dCk7CisrCQlfX2xpc3RfYWRkKCZpdGVtMS0+bGlzdCwgJmFy ZWEtPmxpc3QsIGFyZWEtPmxpc3QubmV4dCk7CisrCX0KKysJKnBfbmV4dF9hcmVhID0gaXRlbTE7 CisrCisrCS8vIG5vdyBmaWxsIHRoZSBhcmVhcworKworKwkvLyBhbHdheXMKKysJaXRlbTEtPmZy YW1lX2JlZ2luID0gRUJDX0ZSQU1FX1BFTkRJTkc7CisrCWl0ZW0xLT5jbGlwLngxID0geG1pbjsK KysJaXRlbTEtPmNsaXAueDIgPSB4Y2VudGVyOworKwlpdGVtMS0+Y2xpcC55MSA9IHltaW47Cisr CWl0ZW0xLT5jbGlwLnkyID0geWNlbnRlcjsKKysKKysJaWYgKHNwbGl0X2JvdGggfHwgbm9feHNw bGl0KXsKKysJCS8vIG5vIHhzcGxpdAorKwkJaXRlbTItPmZyYW1lX2JlZ2luID0gRUJDX0ZSQU1F X1BFTkRJTkc7CisrCQlpdGVtMi0+Y2xpcC54MSA9IHhtaW47CisrCQlpdGVtMi0+Y2xpcC54MiA9 IHhjZW50ZXI7CisrCQlpdGVtMi0+Y2xpcC55MSA9IHljZW50ZXI7CisrCQlpdGVtMi0+Y2xpcC55 MiA9IHltYXg7CisrCX0KKysKKysJaWYgKHNwbGl0X2JvdGggfHwgbm9feXNwbGl0KXsKKysJCS8v IG5vIHlzcGxpdAorKwkJaXRlbTMtPmZyYW1lX2JlZ2luID0gRUJDX0ZSQU1FX1BFTkRJTkc7Cisr CQlpdGVtMy0+Y2xpcC54MSA9IHhjZW50ZXI7CisrCQlpdGVtMy0+Y2xpcC54MiA9IHhtYXg7Cisr CQlpdGVtMy0+Y2xpcC55MSA9IHltaW47CisrCQlpdGVtMy0+Y2xpcC55MiA9IHljZW50ZXI7Cisr CX0KKysKKysJaWYgKHNwbGl0X2JvdGgpeworKwkJLy8gYm90aCBzcGxpdHMKKysJCWl0ZW00LT5m cmFtZV9iZWdpbiA9IEVCQ19GUkFNRV9QRU5ESU5HOworKwkJaXRlbTQtPmNsaXAueDEgPSB4Y2Vu dGVyOworKwkJaXRlbTQtPmNsaXAueDIgPSB4bWF4OworKwkJaXRlbTQtPmNsaXAueTEgPSB5Y2Vu dGVyOworKwkJaXRlbTQtPmNsaXAueTIgPSB5bWF4OworKwl9CisrCisrCSgqc3BsaXRfY291bnRl cikrKzsKKysJcmV0dXJuIDE7CisrfQorKworIHN0YXRpYyBib29sIHJvY2tjaGlwX2ViY19zY2hl ZHVsZV9hcmVhKHN0cnVjdCBsaXN0X2hlYWQgKmFyZWFzLAorIAkJCQkgICAgICAgc3RydWN0IHJv Y2tjaGlwX2ViY19hcmVhICphcmVhLAorIAkJCQkgICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRy bSwKKyAJCQkJICAgICAgIHUzMiBjdXJyZW50X2ZyYW1lLCB1MzIgbnVtX3BoYXNlcywKKy0JCQkJ ICAgICAgIHN0cnVjdCByb2NrY2hpcF9lYmNfYXJlYSAqbmV4dF9hcmVhLAorKwkJCQkgICAgICAg c3RydWN0IHJvY2tjaGlwX2ViY19hcmVhICoqcF9uZXh0X2FyZWEsCisgCQkJCQkgICBpbnQgKiBz cGxpdF9jb3VudGVyCisgCQkJCQkgICApCisgeworQEAgLTQ2MCwxMDkgKzYwNiwxMyBAQCBzdGF0 aWMgYm9vbCByb2NrY2hpcF9lYmNfc2NoZWR1bGVfYXJlYShzdHJ1Y3QgbGlzdF9oZWFkICphcmVh cywKKyAJCQlpZiAoZHJtX3JlY3RfZXF1YWxzKCZhcmVhLT5jbGlwLCAmaW50ZXJzZWN0aW9uKSkK KyAJCQkJY29udGludWU7CisgCistCQkJLy8gZm9yIG5vdywgbWluIHNpemUgaWYgMngyCistCQkJ aWYgKChhcmVhLT5jbGlwLngyIC0gYXJlYS0+Y2xpcC54MSA8IDIpIHwgKGFyZWEtPmNsaXAueTIg LSBhcmVhLT5jbGlwLnkxIDwgMikpCistCQkJCWNvbnRpbnVlOworLQorLQkJCS8vIG9rLCB3ZSB3 YW50IHRvIHNwbGl0IHRoaXMgYXJlYSBhbmQgc3RhcnQgd2l0aCBhbnkgcGFydGlhbCBhcmVhcwor LQkJCS8vIHRoYXQgYXJlIG5vdCBvdmVybGFwcGluZyAod2VsbCwgbGV0IHRoaXMgYmUgZGVjaWRl ZCB1cG9uIGF0IHRoZQorLQkJCS8vIG5leHQgb3V0ZXIgbG9vcCAtIHdlIGRlbGV0ZSB0aGlzIGFy ZWEgc28gd2UgbmVlZCBub3QgdG8ganVnZ2xlCistCQkJLy8gYXJvdW5kIHRoZSBmb3VyIGFyZWFz IHVudGlsIHdlIGZvdW5kIHRoZSBvbmUgdGhhdCBpcyBhY3R1YWxseQorLQkJCS8vIG92ZXJsYXBw aW5nKQorLQkJCWludCB4bWluLCB4bWF4LCB5bWluLCB5bWF4LCB4Y2VudGVyLCB5Y2VudGVyOwor LQkJCXhtaW4gPSBhcmVhLT5jbGlwLngxOworLQkJCWlmIChpbnRlcnNlY3Rpb24ueDEgPiB4bWlu KQorLQkJCQl4Y2VudGVyID0gaW50ZXJzZWN0aW9uLngxOworLQkJCWVsc2UKKy0JCQkJeGNlbnRl ciA9IGludGVyc2VjdGlvbi54MjsKKy0JCQl4bWF4ID0gYXJlYS0+Y2xpcC54MjsKKy0KKy0JCQl5 bWluID0gYXJlYS0+Y2xpcC55MTsKKy0JCQlpZiAoaW50ZXJzZWN0aW9uLnkxID4geW1pbikKKy0J CQkJeWNlbnRlciA9IGludGVyc2VjdGlvbi55MTsKKy0JCQllbHNlCistCQkJCXljZW50ZXIgPSBp bnRlcnNlY3Rpb24ueTI7CistCQkJeW1heCA9IGFyZWEtPmNsaXAueTI7CistCistCQkJaWYgKCh4 bWluID09IHhjZW50ZXIpIHwgKHhjZW50ZXIgPT0geG1heCkpCistCQkJCWNvbnRpbnVlOworLQkJ CWlmICgoeW1pbiA9PSB5Y2VudGVyKSB8ICh5Y2VudGVyID09IHltYXgpKQorLQkJCQljb250aW51 ZTsKKy0KKy0JCQkvLyB3ZSBkbyBub3Qgd2FudCB0byBvdmVyaGVsbSB0aGUgcmVmcmVzaCB0aHJl YWQgYW5kIGxpbWl0IHVzIHRvIGEKKy0JCQkvLyBjZXJ0YWluIG51bWJlciBvZiBzcGxpdHMuIFRo ZSByZXN0IG5lZWRzIHRvIHdhaXQKKy0JCQlpZiAoKnNwbGl0X2NvdW50ZXIgPj0gc3BsaXRfYXJl YV9saW1pdCkKKysJCQlpZiAodHJ5X3RvX3NwbGl0X2FyZWEoYXJlYXMsIGFyZWEsIG90aGVyLCBz cGxpdF9jb3VudGVyLCBwX25leHRfYXJlYSwgJmludGVyc2VjdGlvbikpCisrCQkJeworKwkJCQkv LyBsZXQgdGhlIG91dGVyIGxvb3AgZGVsZXRlIHRoaXMgYXJlYQorKwkJCQlyZXR1cm4gZmFsc2U7 CisrCQkJfSBlbHNlIHsKKyAJCQkJY29udGludWU7CistCistCQkJLy8gd2UgbmVlZCBmb3VyIG5l dyByb2tjaGlwX2ViY19hcmVhIGVudHJpZXMgdGhhdCB3ZSBzcGxpY2UgaW50bworLQkJCS8vIHRo ZSBsaXN0LiBOb3RlIHRoYXQgdGhlIGN1cnJlbnRseSBuZXh0IGl0ZW0gc2hhbGwgYmUgY29waWVk CistCQkJLy8gYmFja3dhcmRzIGJlY2F1c2UgdG8gcHJldmVudCB0aGUgb3V0ZXIgbGlzdCBpdGVy YXRpb24gZnJvbQorLQkJCS8vIHNraXBwaW5nIG92ZXIgb3VyIG5ld2x5IGNyZWF0ZWQgaXRlbXMu CistCistCQkJc3RydWN0IHJvY2tjaGlwX2ViY19hcmVhICogaXRlbTE7CistCQkJc3RydWN0IHJv Y2tjaGlwX2ViY19hcmVhICogaXRlbTI7CistCQkJc3RydWN0IHJvY2tjaGlwX2ViY19hcmVhICog aXRlbTM7CistCQkJc3RydWN0IHJvY2tjaGlwX2ViY19hcmVhICogaXRlbTQ7CistCQkJaXRlbTEg PSBrbWFsbG9jKHNpemVvZigqaXRlbTEpLCBHRlBfS0VSTkVMKTsKKy0JCQlpdGVtMiA9IGttYWxs b2Moc2l6ZW9mKCppdGVtMiksIEdGUF9LRVJORUwpOworLQkJCWl0ZW0zID0ga21hbGxvYyhzaXpl b2YoKml0ZW0zKSwgR0ZQX0tFUk5FTCk7CistCQkJaXRlbTQgPSBrbWFsbG9jKHNpemVvZigqaXRl bTQpLCBHRlBfS0VSTkVMKTsKKy0KKy0JCQkvLyBUT0RPOiBFcnJvciBjaGVja2luZyEhISEKKy0J CQkvKiBpZiAoIWFyZWEpICovCistCQkJLyogCXJldHVybiAtRU5PTUVNOyAqLworLQorLQkJCWlm IChsaXN0X2lzX2xhc3QoJmFyZWEtPmxpc3QsIGFyZWFzKSl7CistCQkJCS8qIHByaW50ayhLRVJO X0lORk8gImFkZGluZyB0byBlbmQgb2YgbGlzdFxuIik7ICovCistCQkJCWxpc3RfYWRkX3RhaWwo Jml0ZW0xLT5saXN0LCBhcmVhcyk7CistCQkJCWxpc3RfYWRkX3RhaWwoJml0ZW0yLT5saXN0LCBh cmVhcyk7CistCQkJCWxpc3RfYWRkX3RhaWwoJml0ZW0zLT5saXN0LCBhcmVhcyk7CistCQkJCWxp c3RfYWRkX3RhaWwoJml0ZW00LT5saXN0LCBhcmVhcyk7CistCQkJfQorLQkJCWVsc2V7CistCQkJ CS8qIHByaW50ayhLRVJOX0lORk8gInNwbGljaW5nIGludG8gdGhlIG1pZGRsZSBvZiB0aGUgbGlz dFxuIik7ICovCistCQkJCV9fbGlzdF9hZGQoJml0ZW00LT5saXN0LCBhcmVhcywgYXJlYXMtPm5l eHQpOworLQkJCQlfX2xpc3RfYWRkKCZpdGVtMy0+bGlzdCwgYXJlYXMsIGFyZWFzLT5uZXh0KTsK Ky0JCQkJX19saXN0X2FkZCgmaXRlbTItPmxpc3QsIGFyZWFzLCBhcmVhcy0+bmV4dCk7CistCQkJ CV9fbGlzdF9hZGQoJml0ZW0xLT5saXN0LCBhcmVhcywgYXJlYXMtPm5leHQpOworIAkJCX0KKy0J CQluZXh0X2FyZWEgPSBpdGVtMTsKKy0KKy0JCQkvLyBub3cgZmlsbCB0aGUgYXJlYXMKKy0JCQkv KiBwcmludGsoS0VSTl9JTkZPICJhcmVhMTogJWkgJWkgJWkgJWlcbiIsIHhtaW4sIHhjZW50ZXIs IHltaW4sIHljZW50ZXIpOyAqLworLQkJCS8qIHByaW50ayhLRVJOX0lORk8gImFyZWEyOiAlaSAl aSAlaSAlaVxuIiwgeG1pbiwgeGNlbnRlciwgeWNlbnRlciwgeW1heCk7ICovCistCQkJLyogcHJp bnRrKEtFUk5fSU5GTyAiYXJlYTM6ICVpICVpICVpICVpXG4iLCB4Y2VudGVyLCB4bWF4LCB5bWlu LCB5Y2VudGVyKTsgKi8KKy0JCQkvKiBwcmludGsoS0VSTl9JTkZPICJhcmVhNDogJWkgJWkgJWkg JWlcbiIsIHhjZW50ZXIsIHhtYXgsIHljZW50ZXIsIHltYXgpOyAqLworLQorLQkJCWl0ZW0xLT5m cmFtZV9iZWdpbiA9IEVCQ19GUkFNRV9QRU5ESU5HOworLQkJCWl0ZW0xLT5jbGlwLngxID0geG1p bjsKKy0JCQlpdGVtMS0+Y2xpcC54MiA9IHhjZW50ZXI7CistCQkJaXRlbTEtPmNsaXAueTEgPSB5 bWluOworLQkJCWl0ZW0xLT5jbGlwLnkyID0geWNlbnRlcjsKKy0KKy0JCQlpdGVtMi0+ZnJhbWVf YmVnaW4gPSBFQkNfRlJBTUVfUEVORElORzsKKy0JCQlpdGVtMi0+Y2xpcC54MSA9IHhtaW47Cist CQkJaXRlbTItPmNsaXAueDIgPSB4Y2VudGVyOworLQkJCWl0ZW0yLT5jbGlwLnkxID0geWNlbnRl cjsKKy0JCQlpdGVtMi0+Y2xpcC55MiA9IHltYXg7CistCistCQkJaXRlbTMtPmZyYW1lX2JlZ2lu ID0gRUJDX0ZSQU1FX1BFTkRJTkc7CistCQkJaXRlbTMtPmNsaXAueDEgPSB4Y2VudGVyOworLQkJ CWl0ZW0zLT5jbGlwLngyID0geG1heDsKKy0JCQlpdGVtMy0+Y2xpcC55MSA9IHltaW47CistCQkJ aXRlbTMtPmNsaXAueTIgPSB5Y2VudGVyOworLQorLQkJCWl0ZW00LT5mcmFtZV9iZWdpbiA9IEVC Q19GUkFNRV9QRU5ESU5HOworLQkJCWl0ZW00LT5jbGlwLngxID0geGNlbnRlcjsKKy0JCQlpdGVt NC0+Y2xpcC54MiA9IHhtYXg7CistCQkJaXRlbTQtPmNsaXAueTEgPSB5Y2VudGVyOworLQkJCWl0 ZW00LT5jbGlwLnkyID0geW1heDsKKy0KKy0JCQkoKnNwbGl0X2NvdW50ZXIpKys7CistCistCQkJ Ly8gbGV0IHRoZSBvdXRlciBsb29wIGRlbGV0ZSB0aGlzIGFyZWEKKy0JCQlyZXR1cm4gZmFsc2U7 CistCQkJLyogY29udGludWU7ICovCisgCQl9CisgCisgCQkvKgorQEAgLTU3OCw2ICs2MjgsMTUg QEAgc3RhdGljIGJvb2wgcm9ja2NoaXBfZWJjX3NjaGVkdWxlX2FyZWEoc3RydWN0IGxpc3RfaGVh ZCAqYXJlYXMsCisgCQkvKiBPdGhlcndpc2UsIHRoZSBlYXJsaWVzdCBzdGFydCBpcyB0aGUgc2Ft ZSB0aW1lIGFzIHRoYXQgb2YgdGhlIG90aGVyCisgCQkgKiBhcmVhLiAqLworIAkJZnJhbWVfYmVn aW4gPSBtYXgoZnJhbWVfYmVnaW4sIG90aGVyLT5mcmFtZV9iZWdpbik7CisrCisrCQkvLyB0cnkg dG8gc3BsaXQsIG90aGVyd2lzZSBjb250aW51ZQorKwkJaWYgKHRyeV90b19zcGxpdF9hcmVhKGFy ZWFzLCBhcmVhLCBvdGhlciwgc3BsaXRfY291bnRlciwgcF9uZXh0X2FyZWEsICZpbnRlcnNlY3Rp b24pKQorKwkJeworKwkJCS8vIGxldCB0aGUgb3V0ZXIgbG9vcCBkZWxldGUgdGhpcyBhcmVhCisr CQkJcmV0dXJuIGZhbHNlOworKwkJfSBlbHNlIHsKKysJCQljb250aW51ZTsKKysJCX0KKyAJfQor IAorIAlhcmVhLT5mcmFtZV9iZWdpbiA9IGZyYW1lX2JlZ2luOworQEAgLTc1NCw3ICs4MTMsNyBA QCBzdGF0aWMgdm9pZCByb2NrY2hpcF9lYmNfcGFydGlhbF9yZWZyZXNoKHN0cnVjdCByb2NrY2hp cF9lYmMgKmViYywKKyAJCQkgKi8KKyAJCQlpZiAoYXJlYS0+ZnJhbWVfYmVnaW4gPT0gRUJDX0ZS QU1FX1BFTkRJTkcgJiYKKyAJCQkgICAgIXJvY2tjaGlwX2ViY19zY2hlZHVsZV9hcmVhKCZhcmVh cywgYXJlYSwgZHJtLCBmcmFtZSwKKy0JCQkJCQkJZWJjLT5sdXQubnVtX3BoYXNlcywgbmV4dF9h cmVhLCAmc3BsaXRfY291bnRlcikpIHsKKysJCQkJCQkJZWJjLT5sdXQubnVtX3BoYXNlcywgJm5l eHRfYXJlYSwgJnNwbGl0X2NvdW50ZXIpKSB7CisgCQkJCWxpc3RfZGVsKCZhcmVhLT5saXN0KTsK KyAJCQkJa2ZyZWUoYXJlYSk7CisgCQkJCWNvbnRpbnVlOworLS0gCisyLjMwLjIKKworCitGcm9t IDQ5MTM4OGEyZjUzOGVmOTdjOTY5OWM3MjNiM2I1NzQwNzJiMGZkODUgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCitGcm9tOiBNYXhpbWlsaWFuIFdlaWdhbmQgPG13ZWlnYW5kQG13ZWlnYW5kLm5l dD4KK0RhdGU6IEZyaSwgMTcgSnVuIDIwMjIgMTE6MTA6MjQgKzAyMDAKK1N1YmplY3Q6IFtQQVRD SCAyNC8zN10gW3JvY2tjaGlwX2ViY10gcmVtb3ZlIGNvbW1lbnQKKworLS0tCisgZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEg ZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2Nr Y2hpcF9lYmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYworaW5k ZXggNTJiZjVkMTFlYzU3Li41ZDQyYjQ1YWJiNWIgMTAwNjQ0CistLS0gYS9kcml2ZXJzL2dwdS9k cm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKKysrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hp cC9yb2NrY2hpcF9lYmMuYworQEAgLTU5MSw3ICs1OTEsNiBAQCBzdGF0aWMgYm9vbCByb2NrY2hp cF9lYmNfc2NoZWR1bGVfYXJlYShzdHJ1Y3QgbGlzdF9oZWFkICphcmVhcywKKyAJCWludGVyc2Vj dGlvbiA9IGFyZWEtPmNsaXA7CisgCQlpZiAoIWRybV9yZWN0X2ludGVyc2VjdCgmaW50ZXJzZWN0 aW9uLCAmb3RoZXItPmNsaXApKQorIAkJCWNvbnRpbnVlOworLQkJLy8gd2UgZ290IGhlcmUsIHNv IHRoZXJlIGlzIGEgY29sbGlzaW9uCisgCisgCQkvKiBJZiB0aGUgb3RoZXIgYXJlYSBhbHJlYWR5 IHN0YXJ0ZWQsIHdhaXQgdW50aWwgaXQgZmluaXNoZXMuICovCisgCQlpZiAob3RoZXItPmZyYW1l X2JlZ2luIDwgY3VycmVudF9mcmFtZSkgeworLS0gCisyLjMwLjIKKworCitGcm9tIDVhMTc3ZWQz ZjU4MTNkMzFiOGQyYWVkYTQ2ODY2YTA2N2YyOTZmZGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CitGcm9tOiBNYXhpbWlsaWFuIFdlaWdhbmQgPG13ZWlnYW5kQG13ZWlnYW5kLm5ldD4KK0RhdGU6 IEZyaSwgMTcgSnVuIDIwMjIgMTE6MjY6MTMgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAyNS8zN10g W3JvY2tjaGlwX2ViY10gZml4IGFub3RoZXIgc2NoZWR1bGluZyBidWc6IG9ubHkKKyBpbmNyZWFz ZSwgYnV0IG5ldmVyIGRyZWNyZWFzZSB0aGUgZnJhbWVfYmVnaW4gbnVtYmVyCisKKy0tLQorIGRy aXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYyB8IDIgKy0KKyAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2Nr Y2hpcC9yb2NrY2hpcF9lYmMuYworaW5kZXggNWQ0MmI0NWFiYjViLi43ZjVmZTcyNTJhYzQgMTAw NjQ0CistLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKKysrKyBi L2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYworQEAgLTU5NCw3ICs1OTQs NyBAQCBzdGF0aWMgYm9vbCByb2NrY2hpcF9lYmNfc2NoZWR1bGVfYXJlYShzdHJ1Y3QgbGlzdF9o ZWFkICphcmVhcywKKyAKKyAJCS8qIElmIHRoZSBvdGhlciBhcmVhIGFscmVhZHkgc3RhcnRlZCwg d2FpdCB1bnRpbCBpdCBmaW5pc2hlcy4gKi8KKyAJCWlmIChvdGhlci0+ZnJhbWVfYmVnaW4gPCBj dXJyZW50X2ZyYW1lKSB7CistCQkJZnJhbWVfYmVnaW4gPSBvdGhlcl9lbmQ7CisrCQkJZnJhbWVf YmVnaW4gPSBtYXgoZnJhbWVfYmVnaW4sIG90aGVyX2VuZCk7CisgCisgCQkJLy8gc28gaGVyZSB3 ZSB3b3VsZCBvcHRpbWFsbHkgd2FudCB0byBzcGxpdCB0aGUgbmV3IGFyZWEgaW50byB0aHJlZQor IAkJCS8vIHBhcnRzIHRoYXQgZG8gbm90IG92ZXJsYXAgd2l0aCB0aGUgYWxyZWFkeS1zdGFydGVk IGFyZWEsIGFuZCBvbmUKKy0tIAorMi4zMC4yCisKKworRnJvbSAzNWY4ZjY0N2EzZjdiZDY4Y2Q5 NmFiZWU0MWM0NDJhYmRlZDdjMmI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF4 aW1pbGlhbiBXZWlnYW5kIDxtd2VpZ2FuZEBtd2VpZ2FuZC5uZXQ+CitEYXRlOiBGcmksIDE3IEp1 biAyMDIyIDExOjI2OjMyICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMjYvMzddIFtyb2NrY2hpcF9l YmNdIHJld29yayBjb21tZW50CisKKy0tLQorIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2Nr Y2hpcF9lYmMuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIg ZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9j a2NoaXBfZWJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK2lu ZGV4IDdmNWZlNzI1MmFjNC4uOTc0ZTlkMjNjNjQ4IDEwMDY0NAorLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCisrKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2No aXAvcm9ja2NoaXBfZWJjLmMKK0BAIC02MjQsOCArNjI0LDggQEAgc3RhdGljIGJvb2wgcm9ja2No aXBfZWJjX3NjaGVkdWxlX2FyZWEoc3RydWN0IGxpc3RfaGVhZCAqYXJlYXMsCisgCQkJcmV0dXJu IGZhbHNlOworIAkJfQorIAorLQkJLyogT3RoZXJ3aXNlLCB0aGUgZWFybGllc3Qgc3RhcnQgaXMg dGhlIHNhbWUgdGltZSBhcyB0aGF0IG9mIHRoZSBvdGhlcgorLQkJICogYXJlYS4gKi8KKysJCS8q IFRoZXkgZG8gb3ZlcmxhcCBidXQgYXJlIGFyZSBub3QgZXF1YWwgYW5kIGJvdGggbm90IHN0YXJ0 ZWQgeWV0LCBzbworKwkJICogdGhleSBjYW4gcG90ZW50aWFsbHkgc3RhcnQgdG9nZXRoZXIgKi8K KyAJCWZyYW1lX2JlZ2luID0gbWF4KGZyYW1lX2JlZ2luLCBvdGhlci0+ZnJhbWVfYmVnaW4pOwor IAorIAkJLy8gdHJ5IHRvIHNwbGl0LCBvdGhlcndpc2UgY29udGludWUKKy0tIAorMi4zMC4yCisK KworRnJvbSBkNGU3OGMwZTkyYmVjNzliYWNkNmU3M2Q0ZGY1YTY2M2ViMWMyY2M0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF4aW1pbGlhbiBXZWlnYW5kIDxtd2VpZ2FuZEBtd2Vp Z2FuZC5uZXQ+CitEYXRlOiBGcmksIDE3IEp1biAyMDIyIDExOjI3OjM4ICswMjAwCitTdWJqZWN0 OiBbUEFUQ0ggMjcvMzddIFtyb2NrY2hpcF9lYmNdIGV2ZW4gaWYgaXRzIG5vdCByZWFsbHkgY2xl YXIgaWYgaXQgaXMKKyByZXF1aXJlZCwgYWxzbyBzeW5jIHRoZSBuZXh0LWJ1ZmZlciB0byB0aGUg Y3B1IGJlZm9yZSB1c2luZyBpdAorCistLS0KKyBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9j a2NoaXBfZWJjLmMgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jIGIvZHJp dmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCitpbmRleCA5NzRlOWQyM2M2NDgu Ljk3MTczYWVlZDUzYyAxMDA2NDQKKy0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2Nr Y2hpcF9lYmMuYworKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5j CitAQCAtODY2LDEwICs4NjYsMTIgQEAgc3RhdGljIHZvaWQgcm9ja2NoaXBfZWJjX3BhcnRpYWxf cmVmcmVzaChzdHJ1Y3Qgcm9ja2NoaXBfZWJjICplYmMsCisgCQkJICovCisgCQkJaWYgKGZyYW1l X2RlbHRhID4gbGFzdF9waGFzZSkgeworIAkJCQlkbWFfc3luY19zaW5nbGVfZm9yX2NwdShkZXYs IHByZXZfaGFuZGxlLCBncmF5NF9zaXplLCBETUFfVE9fREVWSUNFKTsKKysJCQkJZG1hX3N5bmNf c2luZ2xlX2Zvcl9jcHUoZGV2LCBuZXh0X2hhbmRsZSwgZ3JheTRfc2l6ZSwgRE1BX1RPX0RFVklD RSk7CisgCQkJCXJvY2tjaGlwX2ViY19ibGl0X3BpeGVscyhjdHgsIGN0eC0+cHJldiwKKyAJCQkJ CQkJIGN0eC0+bmV4dCwKKyAJCQkJCQkJICZhcmVhLT5jbGlwKTsKKyAJCQkJc3luY19wcmV2ID0g dHJ1ZTsKKysJCQkJc3luY19wcmV2ID0gdHJ1ZTsKKyAKKyAJCQkJZHJtX2RiZyhkcm0sICJhcmVh ICVwICgiIERSTV9SRUNUX0ZNVCAiKSBmaW5pc2hlZCBvbiAldVxuIiwKKyAJCQkJCWFyZWEsIERS TV9SRUNUX0FSRygmYXJlYS0+Y2xpcCksIGZyYW1lKTsKKy0tIAorMi4zMC4yCisKKworRnJvbSBl Y2JmOWE5M2ZjODlmYTgxMjliZGQ2ZWYwZGI0ZTM5OTg4ZDY1ZDNkIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQorRnJvbTogTWF4aW1pbGlhbiBXZWlnYW5kIDxtd2VpZ2FuZEBtd2VpZ2FuZC5uZXQ+ CitEYXRlOiBGcmksIDE3IEp1biAyMDIyIDEyOjQxOjE1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0gg MjgvMzddIFtyb2NrY2hpcF9lYmNdIGVuYWJsZSBkcmF3aW5nIG9mIGNsaXBzIG5vdCBhbGlnbmVk IHRvCisgZnVsbCBieXRlcyAoaS5lLiBldmVuIHN0YXJ0L2VuZCBjb29yZGluYXRlcykuCisKK05l ZWRzIG1vcmUgdGVzdGluZy4KKy0tLQorIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hp cF9lYmMuYyB8IDYyICsrKysrKysrKysrKysrKystLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwg NDEgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2No aXAvcm9ja2NoaXBfZWJjLmMKK2luZGV4IDk3MTczYWVlZDUzYy4uNGJhZWZjOGI1NDk2IDEwMDY0 NAorLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCisrKysgYi9k cml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK0BAIC0xNDE4LDcgKzE0MTgs MTAgQEAgc3RhdGljIGJvb2wgcm9ja2NoaXBfZWJjX2JsaXRfZmIoY29uc3Qgc3RydWN0IHJvY2tj aGlwX2ViY19jdHggKmN0eCwKKyAJCQkJIGNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqZHN0X2NsaXAs CisgCQkJCSBjb25zdCB2b2lkICp2YWRkciwKKyAJCQkJIGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiLAorLQkJCQkgY29uc3Qgc3RydWN0IGRybV9yZWN0ICpzcmNfY2xpcCkKKysJCQkJ IGNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqc3JjX2NsaXAsCisrCQkJCSBpbnQgYWRqdXN0X3gxLAor KwkJCQkgaW50IGFkanVzdF94MgorKwkJCQkgKQorIHsKKyAJdW5zaWduZWQgaW50IGRzdF9waXRj aCA9IGN0eC0+Z3JheTRfcGl0Y2g7CisgCXVuc2lnbmVkIGludCBzcmNfcGl0Y2ggPSBmYi0+cGl0 Y2hlc1swXTsKK0BAIC0xNDI4LDEzICsxNDMxLDkgQEAgc3RhdGljIGJvb2wgcm9ja2NoaXBfZWJj X2JsaXRfZmIoY29uc3Qgc3RydWN0IHJvY2tjaGlwX2ViY19jdHggKmN0eCwKKyAJaW50IGRlbHRh X3g7CisgCXZvaWQgKmRzdDsKKyAKKy0JYm9vbCBzdGFydF94X2lzX29kZCA9IHNyY19jbGlwLT54 MSAmIDE7CistCWJvb2wgZW5kX3hfaXNfb2RkID0gc3JjX2NsaXAtPngyICYgMTsKKy0KKyAJZGVs dGFfeCA9IHBhbmVsX3JlZmxlY3Rpb24gPyAtMSA6IDE7CisgCXN0YXJ0X3ggPSBwYW5lbF9yZWZs ZWN0aW9uID8gc3JjX2NsaXAtPngyIC0gMSA6IHNyY19jbGlwLT54MTsKKyAKKy0JLy8gSSB0aGlu ayB0aGlzIGFsc28gd29ya3MgaWYgZHN0X2NsaXAtPngxIGlzIG9kZAorIAlkc3QgPSBjdHgtPmZp bmFsICsgZHN0X2NsaXAtPnkxICogZHN0X3BpdGNoICsgZHN0X2NsaXAtPngxIC8gMjsKKyAJc3Jj ID0gdmFkZHIgKyBzcmNfY2xpcC0+eTEgKiBzcmNfcGl0Y2ggKyBzdGFydF94ICogZmItPmZvcm1h dC0+Y3BwWzBdOworIAorQEAgLTE0NDUsNiArMTQ0NCw3IEBAIHN0YXRpYyBib29sIHJvY2tjaGlw X2ViY19ibGl0X2ZiKGNvbnN0IHN0cnVjdCByb2NrY2hpcF9lYmNfY3R4ICpjdHgsCisgCQlmb3Ig KHggPSBzcmNfY2xpcC0+eDE7IHggPCBzcmNfY2xpcC0+eDI7IHggKz0gMikgeworIAkJCXUzMiBy Z2IwLCByZ2IxOworIAkJCXU4IGdyYXk7CisrCQkJdTggdG1wX3BpeGVsOworIAorIAkJCXJnYjAg PSAqc2J1Zjsgc2J1ZiArPSBkZWx0YV94OworIAkJCXJnYjEgPSAqc2J1Zjsgc2J1ZiArPSBkZWx0 YV94OworQEAgLTE0NTksMTMgKzE0NTksMjEgQEAgc3RhdGljIGJvb2wgcm9ja2NoaXBfZWJjX2Js aXRfZmIoY29uc3Qgc3RydWN0IHJvY2tjaGlwX2ViY19jdHggKmN0eCwKKyAJCQlyZ2IwID4+PSAy ODsKKyAJCQlyZ2IxID4+PSAyODsKKyAKKy0JCQlpZiAoeCA9PSBzcmNfY2xpcC0+eDEgJiYgc3Rh cnRfeF9pc19vZGQpIHsKKysJCQkvLyBEb2VzIHRoaXMgYWNjb3VudCBmb3IgcGFuZWwgcmVmbGVj dGlvbj8KKysJCQlpZiAoeCA9PSBzcmNfY2xpcC0+eDEgJiYgKGFkanVzdF94MSA9PSAxKSkgewor IAkJCQkvLyByZ2IwIHNob3VsZCBiZSBmaWxsZWQgd2l0aCB0aGUgY29udGVudCBvZiB0aGUgc3Jj IHBpeGVsIGhlcmUKKy0JCQkJcmdiMCA9ICpkYnVmOworKwkJCQkvLyBrZWVwIGxvd2VyIDQgYml0 cworKwkJCQkvLyBJJ20gbm90IHN1cmUgaG93IHRvIGRpcmVjdGx5IHJlYWQgb25seSBvbmUgYnl0 ZSBmcm9tIHRoZSB1MzIKKysJCQkJLy8gcG9pbnRlciBkYnVmIC4uLgorKwkJCQl0bXBfcGl4ZWwg PSAqZGJ1ZiAmIDBiMDAwMDExMTE7CisrCQkJCXJnYjAgPSB0bXBfcGl4ZWw7CisgCQkJfQorLQkJ CWlmICh4ID09IHNyY19jbGlwLT54MiAmJiBlbmRfeF9pc19vZGQpIHsKKy0JCQkJLy8gcmdiMSBz aG91bGQgYmUgZmlsbGVkIHdpdGggdGhlIGNvbnRlbnQgb2YgdGhlIHNyYyBwaXhlbCBoZXJlCist CQkJCXJnYjEgPSAqZGJ1ZjsKKysJCQlpZiAoeCA9PSBzcmNfY2xpcC0+eDIgJiYgKGFkanVzdF94 MiA9PSAxKSkgeworKwkJCQkvLyByZ2IxIHNob3VsZCBiZSBmaWxsZWQgd2l0aCB0aGUgY29udGVu dCBvZiB0aGUgZHN0IHBpeGVsIHdlCisrCQkJCS8vIHdhbnQgdG8ga2VlcCBoZXJlCisrCQkJCS8v IGtlZXAgNCBoaWdoZXIgYml0cworKwkJCQl0bXBfcGl4ZWwgPSAqZGJ1ZiAmIDBiMTExMTAwMDA7 CisrCQkJCXJnYjEgPSB0bXBfcGl4ZWw7CisgCQkJfQorIAorIAkJCWdyYXkgPSByZ2IwIHwgcmdi MSA8PCA0OworQEAgLTE1MTEsNyArMTUxOSw5IEBAIHN0YXRpYyB2b2lkIHJvY2tjaGlwX2ViY19w bGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorIAlsaXN0X2Zvcl9l YWNoX2VudHJ5X3NhZmUoYXJlYSwgbmV4dF9hcmVhLCAmZWJjX3BsYW5lX3N0YXRlLT5hcmVhcywg bGlzdCkgeworIAkJc3RydWN0IGRybV9yZWN0ICpkc3RfY2xpcCA9ICZhcmVhLT5jbGlwOworIAkJ c3RydWN0IGRybV9yZWN0IHNyY19jbGlwID0gYXJlYS0+Y2xpcDsKKy0JCWludCBhZGp1c3Q7Cisr CQlpbnQgYWRqdXN0X3gxOworKwkJaW50IGFkanVzdF94MjsKKysJCWJvb2wgY2xpcF9jaGFuZ2Vk X2ZiOworIAorIAkJLyogQ29udmVydCBmcm9tIHBsYW5lIGNvb3JkaW5hdGVzIHRvIENSVEMgY29v cmRpbmF0ZXMuICovCisgCQlkcm1fcmVjdF90cmFuc2xhdGUoZHN0X2NsaXAsIHRyYW5zbGF0ZV94 LCB0cmFuc2xhdGVfeSk7CitAQCAtMTUxOSwxOCArMTUyOSwyMCBAQCBzdGF0aWMgdm9pZCByb2Nr Y2hpcF9lYmNfcGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKyAJ CS8qIEFkanVzdCB0aGUgY2xpcHMgdG8gYWx3YXlzIHByb2Nlc3MgZnVsbCBieXRlcyAoMiBwaXhl bHMpLiAqLworIAkJLyogTk9URTogaW4gZGlyZWN0IG1vZGUsIHRoZSBtaW5pbXVtIGJsb2NrIHNp emUgaXMgNCBwaXhlbHMuICovCisgCQlpZiAoZGlyZWN0X21vZGUpCistCQkJYWRqdXN0ID0gZHN0 X2NsaXAtPngxICYgMzsKKysJCQlhZGp1c3RfeDEgPSBkc3RfY2xpcC0+eDEgJiAzOworIAkJZWxz ZQorLQkJCWFkanVzdCA9IGRzdF9jbGlwLT54MSAmIDE7CistCQlkc3RfY2xpcC0+eDEgLT0gYWRq dXN0OworLQkJc3JjX2NsaXAueDEgIC09IGFkanVzdDsKKysJCQlhZGp1c3RfeDEgPSBkc3RfY2xp cC0+eDEgJiAxOworKworKwkJZHN0X2NsaXAtPngxIC09IGFkanVzdF94MTsKKysJCXNyY19jbGlw LngxICAtPSBhZGp1c3RfeDE7CisgCisgCQlpZiAoZGlyZWN0X21vZGUpCistCQkJYWRqdXN0ID0g KChkc3RfY2xpcC0+eDIgKyAzKSBeIDMpICYgMzsKKysJCQlhZGp1c3RfeDIgPSAoKGRzdF9jbGlw LT54MiArIDMpIF4gMykgJiAzOworIAkJZWxzZQorLQkJCWFkanVzdCA9IGRzdF9jbGlwLT54MiAm IDE7CistCQlkc3RfY2xpcC0+eDIgKz0gYWRqdXN0OworLQkJc3JjX2NsaXAueDIgICs9IGFkanVz dDsKKysJCQlhZGp1c3RfeDIgPSBkc3RfY2xpcC0+eDIgJiAxOworKworKwkJZHN0X2NsaXAtPngy ICs9IGFkanVzdF94MjsKKysJCXNyY19jbGlwLngyICArPSBhZGp1c3RfeDI7CisgCisgCQlpZiAo cGFuZWxfcmVmbGVjdGlvbikgeworIAkJCWludCB4MSA9IGRzdF9jbGlwLT54MSwgeDIgPSBkc3Rf Y2xpcC0+eDI7CitAQCAtMTUzOSw4ICsxNTUxLDE2IEBAIHN0YXRpYyB2b2lkIHJvY2tjaGlwX2Vi Y19wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorIAkJCWRzdF9j bGlwLT54MiA9IHBsYW5lX3N0YXRlLT5kc3QueDIgLSB4MTsKKyAJCX0KKyAKKy0JCWlmICghcm9j a2NoaXBfZWJjX2JsaXRfZmIoY3R4LCBkc3RfY2xpcCwgdmFkZHIsCistCQkJCQkgIHBsYW5lX3N0 YXRlLT5mYiwgJnNyY19jbGlwKSkgeworKwkJY2xpcF9jaGFuZ2VkX2ZiID0gcm9ja2NoaXBfZWJj X2JsaXRfZmIoY3R4LCBkc3RfY2xpcCwgdmFkZHIsCisrCQkJCQkgIHBsYW5lX3N0YXRlLT5mYiwg JnNyY19jbGlwLCBhZGp1c3RfeDEsIGFkanVzdF94Mik7CisrCisrCQkvLyByZXZlcnNlIGNvb3Jk aW5hdGVzCisrCQlkc3RfY2xpcC0+eDEgKz0gYWRqdXN0X3gxOworKwkJc3JjX2NsaXAueDEgICs9 IGFkanVzdF94MTsKKysJCWRzdF9jbGlwLT54MiAtPSBhZGp1c3RfeDI7CisrCQlzcmNfY2xpcC54 MiAgLT0gYWRqdXN0X3gyOworKworKwkJaWYgKCFjbGlwX2NoYW5nZWRfZmIpIHsKKyAJCQlkcm1f ZGJnKHBsYW5lLT5kZXYsICJhcmVhICVwICgiIERSTV9SRUNUX0ZNVCAiKSA8PSAoIiBEUk1fUkVD VF9GTVQgIikgc2tpcHBlZFxuIiwKKyAJCQkJYXJlYSwgRFJNX1JFQ1RfQVJHKCZhcmVhLT5jbGlw KSwgRFJNX1JFQ1RfQVJHKCZzcmNfY2xpcCkpOworIAorLS0gCisyLjMwLjIKKworCitGcm9tIGNi ZTA5YjFlZmEzMDdkYjBhNWRkOTI3Yzc0ZjIzNjYzYzIxNTk0OTQgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCitGcm9tOiBNYXhpbWlsaWFuIFdlaWdhbmQgPG13ZWlnYW5kQG13ZWlnYW5kLm5ldD4K K0RhdGU6IEZyaSwgMTcgSnVuIDIwMjIgMTI6NDE6NTggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAy OS8zN10gW3JvY2tjaGlwX2ViY10gbW92ZSB0aGUgcXVldWVfbG9jayBhIGxpdHRsZSBiaXQgZnVy dGhlcgorIHVwLiBOb3Qgc3VyZSBpZiB0aGlzIGlzIHJlcXVpcmVkLCBidXQgdGhpcyB3YXkgd2Ug bG9jayBhcyBzb29uIGFzIHBvc3NpYmxlIGluCisgdGhlIHVwZGF0ZSByb3V0aW5lLgorCitOb3Rl IHRoYXQgdGhpcyBzdGlsbCBkb2VzIG5vdCBwcmV2ZW50IHRoZSBkYW1hZ2VkLWFyZWEgbGlzdCBh bmQgdGhlCitmaW5hbCBmcmFtZWJ1ZmZlciBjb250ZW50IHRvIGdldCBvdXQgb2Ygc3luYyBkdXJp bmcgZWJjIHJlZnJlc2hlcy4KK0hvd2V2ZXIsIGl0IHNob3VsZCBwcmV2ZW50IGFueSBjb2hlcmVu Y3kgaXNzdWVzIGFuZCBlbnN1cmUgY29uc2lzdGVudAorZnJhbWVidWZmZXIgY29udGVudCBkdXJp bmcgZWFjaCBmcmFtZSB1cGRhdGUuCistLS0KKyBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9j a2NoaXBfZWJjLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2No aXBfZWJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK2luZGV4 IDRiYWVmYzhiNTQ5Ni4uMTViMTRhY2JmZDJiIDEwMDY0NAorLS0tIGEvZHJpdmVycy9ncHUvZHJt L3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCisrKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv cm9ja2NoaXBfZWJjLmMKK0BAIC0xNTA4LDYgKzE1MDgsNyBAQCBzdGF0aWMgdm9pZCByb2NrY2hp cF9lYmNfcGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKyAJY3J0 Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBwbGFuZV9zdGF0 ZS0+Y3J0Yyk7CisgCWN0eCA9IHRvX2ViY19jcnRjX3N0YXRlKGNydGNfc3RhdGUpLT5jdHg7Cisg CisrCXNwaW5fbG9jaygmY3R4LT5xdWV1ZV9sb2NrKTsKKyAJZHJtX3JlY3RfZnBfdG9faW50KCZz cmMsICZwbGFuZV9zdGF0ZS0+c3JjKTsKKyAJdHJhbnNsYXRlX3ggPSBwbGFuZV9zdGF0ZS0+ZHN0 LngxIC0gc3JjLngxOworIAl0cmFuc2xhdGVfeSA9IHBsYW5lX3N0YXRlLT5kc3QueTEgLSBzcmMu eTE7CitAQCAtMTUxNSw3ICsxNTE2LDYgQEAgc3RhdGljIHZvaWQgcm9ja2NoaXBfZWJjX3BsYW5l X2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisgCWViY19wbGFuZV9zdGF0 ZSA9IHRvX2ViY19wbGFuZV9zdGF0ZShwbGFuZV9zdGF0ZSk7CisgCXZhZGRyID0gZWJjX3BsYW5l X3N0YXRlLT5iYXNlLmRhdGFbMF0udmFkZHI7CisgCistCXNwaW5fbG9jaygmY3R4LT5xdWV1ZV9s b2NrKTsKKyAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGFyZWEsIG5leHRfYXJlYSwgJmViY19w bGFuZV9zdGF0ZS0+YXJlYXMsIGxpc3QpIHsKKyAJCXN0cnVjdCBkcm1fcmVjdCAqZHN0X2NsaXAg PSAmYXJlYS0+Y2xpcDsKKyAJCXN0cnVjdCBkcm1fcmVjdCBzcmNfY2xpcCA9IGFyZWEtPmNsaXA7 CistLSAKKzIuMzAuMgorCisKK0Zyb20gYWY5YzRkODA0YzdlZjJlZmRiNWVlMjczMGIyZmQ5ZDZj Njk3NGU2MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1heGltaWxpYW4gV2VpZ2Fu ZCA8bXdlaWdhbmRAbXdlaWdhbmQubmV0PgorRGF0ZTogTW9uLCAyMCBKdW4gMjAyMiAxMzoxOToz MSArMDIwMAorU3ViamVjdDogW1BBVENIIDMwLzM3XSBbcm9ja2NoaXBfZWJjXSAJKiBhZGQgYSBz eXNmcyBoYW5kbGVyIAkgCisgKC9zeXMvbW9kdWxlL3JvY2tjaGlwX2ViYy9wYXJhbWV0ZXJzL2xp bWl0X2ZiX2JsaXRzKSB0byBsaW1pdCB0aGUgbnVtYmVycyBvZgorIGZyYW1lYnVmZmVyIGJsaXRz LiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiAtMSBkb2VzIG5vdCBsaW1pdCBibGl0cyBhdCBhbGwuIENh bgorIGJlIHVzZWQgdG8gaW52ZXN0aWdhdGUgdGhlIGJ1ZmZlciBjb250ZW50cyB3aGlsZSBkZWJ1 Z2dpbmcgY29tcGxleCBkcmF3aW5nCisgY2hhaW5zLiAJKiBhZGQgYW4gaW9jdGwgdG8gcmV0cmll dmUgdGhlIGZpbmFsLCBuZXh0LCBwcmV2IGFuZAorIHBoYXNlWzAsMV0gCSAgYnVmZmVyIGNvbnRl bnRzIHRvIHVzZXIgc3BhY2UuCisKKy0tLQorIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2Nr Y2hpcF9lYmMuYyB8IDEyMyArKysrKysrKysrKysrKystLS0tLS0tLS0KKyBpbmNsdWRlL3VhcGkv ZHJtL3JvY2tjaGlwX2ViY19kcm0uaCAgICAgfCAgMTIgKystCisgMiBmaWxlcyBjaGFuZ2VkLCA5 MSBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hp cC9yb2NrY2hpcF9lYmMuYworaW5kZXggMTViMTRhY2JmZDJiLi4yNzhhMzUyMDkwNDQgMTAwNjQ0 CistLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKKysrKyBiL2Ry aXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYworQEAgLTE5Nyw2ICsxOTcsMTAg QEAgc3RhdGljIGludCBzcGxpdF9hcmVhX2xpbWl0ID0gMTI7CisgbW9kdWxlX3BhcmFtKHNwbGl0 X2FyZWFfbGltaXQsIGludCwgU19JUlVHT3xTX0lXVVNSKTsKKyBNT0RVTEVfUEFSTV9ERVNDKHNw bGl0X2FyZWFfbGltaXQsICJob3cgbWFueSBhcmVhcyB0byBzcGxpdCBpbiBlYWNoIHNjaGVkdWxp bmcgY2FsbCIpOworIAorK3N0YXRpYyBpbnQgbGltaXRfZmJfYmxpdHMgPSAtMTsKKyttb2R1bGVf cGFyYW0obGltaXRfZmJfYmxpdHMsIGludCwgU19JUlVHT3xTX0lXVVNSKTsKKytNT0RVTEVfUEFS TV9ERVNDKHNwbGl0X2FyZWFfbGltaXQsICJob3cgbWFueSBmYiBibGl0cyB0byBhbGxvdy4gLTEg ZG9lcyBub3QgbGltaXQiKTsKKysKKyBERUZJTkVfRFJNX0dFTV9GT1BTKHJvY2tjaGlwX2ViY19m b3BzKTsKKyAKKyBzdGF0aWMgaW50IGlvY3RsX3RyaWdnZXJfZ2xvYmFsX3JlZnJlc2goc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKK0BAIC0yMjgsMTEgKzIzMiw3NSBAQCBzdGF0 aWMgaW50IGlvY3RsX3NldF9vZmZfc2NyZWVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCisgCXJldHVybiAwOworIH0KKyAKKysKKysvKioKKysgKiBzdHJ1Y3Qgcm9ja2NoaXBf ZWJjX2N0eCAtIGNvbnRleHQgZm9yIHBlcmZvcm1pbmcgZGlzcGxheSByZWZyZXNoZXMKKysgKgor KyAqIEBrcmVmOiBSZWZlcmVuY2UgY291bnQsIG1haW50YWluZWQgYXMgcGFydCBvZiB0aGUgQ1JU QydzIGF0b21pYyBzdGF0ZQorKyAqIEBxdWV1ZTogUXVldWUgb2YgZGFtYWdlZCBhcmVhcyB0byBi ZSByZWZyZXNoZWQKKysgKiBAcXVldWVfbG9jazogTG9jayBwcm90ZWN0aW5nIGFjY2VzcyB0byBA cXVldWUKKysgKiBAcHJldjogRGlzcGxheSBjb250ZW50cyAoWTQpIGJlZm9yZSB0aGlzIHJlZnJl c2gKKysgKiBAbmV4dDogRGlzcGxheSBjb250ZW50cyAoWTQpIGFmdGVyIHRoaXMgcmVmcmVzaAor KyAqIEBmaW5hbDogRGlzcGxheSBjb250ZW50cyAoWTQpIGFmdGVyIGFsbCBwZW5kaW5nIHJlZnJl c2hlcworKyAqIEBwaGFzZTogQnVmZmVycyBmb3Igc2VsZWN0aW5nIGEgcGhhc2UgZnJvbSB0aGUg RUJDJ3MgTFVULCAxIGJ5dGUvcGl4ZWwKKysgKiBAZ3JheTRfcGl0Y2g6IEhvcml6b250YWwgbGlu ZSBsZW5ndGggb2YgYSBZNCBwaXhlbCBidWZmZXIgaW4gYnl0ZXMKKysgKiBAZ3JheTRfc2l6ZTog U2l6ZSBvZiBhIFk0IHBpeGVsIGJ1ZmZlciBpbiBieXRlcworKyAqIEBwaGFzZV9waXRjaDogSG9y aXpvbnRhbCBsaW5lIGxlbmd0aCBvZiBhIHBoYXNlIGJ1ZmZlciBpbiBieXRlcworKyAqIEBwaGFz ZV9zaXplOiBTaXplIG9mIGEgcGhhc2UgYnVmZmVyIGluIGJ5dGVzCisrICovCisrc3RydWN0IHJv Y2tjaGlwX2ViY19jdHggeworKwlzdHJ1Y3Qga3JlZgkJCWtyZWY7CisrCXN0cnVjdCBsaXN0X2hl YWQJCXF1ZXVlOworKwlzcGlubG9ja190CQkJcXVldWVfbG9jazsKKysJdTgJCQkJKnByZXY7Cisr CXU4CQkJCSpuZXh0OworKwl1OAkJCQkqZmluYWw7CisrCXU4CQkJCSpwaGFzZVsyXTsKKysJdTMy CQkJCWdyYXk0X3BpdGNoOworKwl1MzIJCQkJZ3JheTRfc2l6ZTsKKysJdTMyCQkJCXBoYXNlX3Bp dGNoOworKwl1MzIJCQkJcGhhc2Vfc2l6ZTsKKysJdTY0IGFyZWFfY291bnQ7CisrfTsKKysKKytz dHJ1Y3QgZWJjX2NydGNfc3RhdGUgeworKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUJCWJhc2U7Cisr CXN0cnVjdCByb2NrY2hpcF9lYmNfY3R4CQkqY3R4OworK307CisrCisrc3RhdGljIGlubGluZSBz dHJ1Y3QgZWJjX2NydGNfc3RhdGUgKgorK3RvX2ViY19jcnRjX3N0YXRlKHN0cnVjdCBkcm1fY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKKyt7CisrCXJldHVybiBjb250YWluZXJfb2YoY3J0Y19zdGF0 ZSwgc3RydWN0IGViY19jcnRjX3N0YXRlLCBiYXNlKTsKKyt9Cisrc3RhdGljIGludCBpb2N0bF9l eHRyYWN0X2ZicyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorKwkJc3RydWN0 IGRybV9maWxlICpmaWxlX3ByaXYpCisreworKwlzdHJ1Y3QgZHJtX3JvY2tjaGlwX2ViY19leHRy YWN0X2ZicyAqYXJncyA9IGRhdGE7CisrCXN0cnVjdCByb2NrY2hpcF9lYmMgKmViYyA9IGRldl9n ZXRfZHJ2ZGF0YShkZXYtPmRldik7CisrCWludCBjb3B5X3Jlc3VsdCA9IDA7CisrCXN0cnVjdCBy b2NrY2hpcF9lYmNfY3R4ICogY3R4OworKworKwkvLyB0b2RvOiB1c2UgYWNjZXNzX29rIGhlcmUK KysJYWNjZXNzX29rKGFyZ3MtPnB0cl9uZXh0LCAxMzEzMTQ0KTsKKysJY3R4ID0gdG9fZWJjX2Ny dGNfc3RhdGUoUkVBRF9PTkNFKGViYy0+Y3J0Yy5zdGF0ZSkpLT5jdHg7CisrCWNvcHlfcmVzdWx0 IHw9IGNvcHlfdG9fdXNlcihhcmdzLT5wdHJfcHJldiwgY3R4LT5wcmV2LCAxMzEzMTQ0KTsKKysJ Y29weV9yZXN1bHQgfD0gY29weV90b191c2VyKGFyZ3MtPnB0cl9uZXh0LCBjdHgtPm5leHQsIDEz MTMxNDQpOworKwljb3B5X3Jlc3VsdCB8PSBjb3B5X3RvX3VzZXIoYXJncy0+cHRyX2ZpbmFsLCBj dHgtPmZpbmFsLCAxMzEzMTQ0KTsKKysKKysJY29weV9yZXN1bHQgfD0gY29weV90b191c2VyKGFy Z3MtPnB0cl9waGFzZTEsIGN0eC0+cGhhc2VbMF0sIDIgKiAxMzEzMTQ0KTsKKysJY29weV9yZXN1 bHQgfD0gY29weV90b191c2VyKGFyZ3MtPnB0cl9waGFzZTIsIGN0eC0+cGhhc2VbMV0sIDIgKiAx MzEzMTQ0KTsKKysKKysJcmV0dXJuIGNvcHlfcmVzdWx0OworK30KKysKKyBzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9pb2N0bF9kZXNjIGlvY3Rsc1tEUk1fQ09NTUFORF9FTkQgLSBEUk1fQ09NTUFO RF9CQVNFXSA9IHsKKyAJRFJNX0lPQ1RMX0RFRl9EUlYoUk9DS0NISVBfRUJDX0dMT0JBTF9SRUZS RVNILCBpb2N0bF90cmlnZ2VyX2dsb2JhbF9yZWZyZXNoLAorIAkJCSAgRFJNX1JFTkRFUl9BTExP VyksCisgCURSTV9JT0NUTF9ERUZfRFJWKFJPQ0tDSElQX0VCQ19PRkZfU0NSRUVOLCBpb2N0bF9z ZXRfb2ZmX3NjcmVlbiwKKyAJCQkgIERSTV9SRU5ERVJfQUxMT1cpLAorKwlEUk1fSU9DVExfREVG X0RSVihST0NLQ0hJUF9FQkNfRVhUUkFDVF9GQlMsIGlvY3RsX2V4dHJhY3RfZmJzLAorKwkJCSAg RFJNX1JFTkRFUl9BTExPVyksCisgfTsKKyAKKyBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kcml2 ZXIgcm9ja2NoaXBfZWJjX2RybV9kcml2ZXIgPSB7CitAQCAtMjY4LDM2ICszMzYsNiBAQCBzdHJ1 Y3Qgcm9ja2NoaXBfZWJjX2FyZWEgeworIAl1MzIJCQkJZnJhbWVfYmVnaW47CisgfTsKKyAKKy0v KioKKy0gKiBzdHJ1Y3Qgcm9ja2NoaXBfZWJjX2N0eCAtIGNvbnRleHQgZm9yIHBlcmZvcm1pbmcg ZGlzcGxheSByZWZyZXNoZXMKKy0gKgorLSAqIEBrcmVmOiBSZWZlcmVuY2UgY291bnQsIG1haW50 YWluZWQgYXMgcGFydCBvZiB0aGUgQ1JUQydzIGF0b21pYyBzdGF0ZQorLSAqIEBxdWV1ZTogUXVl dWUgb2YgZGFtYWdlZCBhcmVhcyB0byBiZSByZWZyZXNoZWQKKy0gKiBAcXVldWVfbG9jazogTG9j ayBwcm90ZWN0aW5nIGFjY2VzcyB0byBAcXVldWUKKy0gKiBAcHJldjogRGlzcGxheSBjb250ZW50 cyAoWTQpIGJlZm9yZSB0aGlzIHJlZnJlc2gKKy0gKiBAbmV4dDogRGlzcGxheSBjb250ZW50cyAo WTQpIGFmdGVyIHRoaXMgcmVmcmVzaAorLSAqIEBmaW5hbDogRGlzcGxheSBjb250ZW50cyAoWTQp IGFmdGVyIGFsbCBwZW5kaW5nIHJlZnJlc2hlcworLSAqIEBwaGFzZTogQnVmZmVycyBmb3Igc2Vs ZWN0aW5nIGEgcGhhc2UgZnJvbSB0aGUgRUJDJ3MgTFVULCAxIGJ5dGUvcGl4ZWwKKy0gKiBAZ3Jh eTRfcGl0Y2g6IEhvcml6b250YWwgbGluZSBsZW5ndGggb2YgYSBZNCBwaXhlbCBidWZmZXIgaW4g Ynl0ZXMKKy0gKiBAZ3JheTRfc2l6ZTogU2l6ZSBvZiBhIFk0IHBpeGVsIGJ1ZmZlciBpbiBieXRl cworLSAqIEBwaGFzZV9waXRjaDogSG9yaXpvbnRhbCBsaW5lIGxlbmd0aCBvZiBhIHBoYXNlIGJ1 ZmZlciBpbiBieXRlcworLSAqIEBwaGFzZV9zaXplOiBTaXplIG9mIGEgcGhhc2UgYnVmZmVyIGlu IGJ5dGVzCistICovCistc3RydWN0IHJvY2tjaGlwX2ViY19jdHggeworLQlzdHJ1Y3Qga3JlZgkJ CWtyZWY7CistCXN0cnVjdCBsaXN0X2hlYWQJCXF1ZXVlOworLQlzcGlubG9ja190CQkJcXVldWVf bG9jazsKKy0JdTgJCQkJKnByZXY7CistCXU4CQkJCSpuZXh0OworLQl1OAkJCQkqZmluYWw7Cist CXU4CQkJCSpwaGFzZVsyXTsKKy0JdTMyCQkJCWdyYXk0X3BpdGNoOworLQl1MzIJCQkJZ3JheTRf c2l6ZTsKKy0JdTMyCQkJCXBoYXNlX3BpdGNoOworLQl1MzIJCQkJcGhhc2Vfc2l6ZTsKKy0JdTY0 IGFyZWFfY291bnQ7CistfTsKKy0KKyBzdGF0aWMgdm9pZCByb2NrY2hpcF9lYmNfY3R4X2ZyZWUo c3RydWN0IHJvY2tjaGlwX2ViY19jdHggKmN0eCkKKyB7CisgCXN0cnVjdCByb2NrY2hpcF9lYmNf YXJlYSAqYXJlYTsKK0BAIC0zNjAsMTcgKzM5OCw2IEBAIHN0YXRpYyB2b2lkIHJvY2tjaGlwX2Vi Y19jdHhfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZikKKyAgKiBDUlRDCisgICovCisgCistc3Ry dWN0IGViY19jcnRjX3N0YXRlIHsKKy0Jc3RydWN0IGRybV9jcnRjX3N0YXRlCQliYXNlOworLQlz dHJ1Y3Qgcm9ja2NoaXBfZWJjX2N0eAkJKmN0eDsKKy19OworLQorLXN0YXRpYyBpbmxpbmUgc3Ry dWN0IGViY19jcnRjX3N0YXRlICoKKy10b19lYmNfY3J0Y19zdGF0ZShzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCisteworLQlyZXR1cm4gY29udGFpbmVyX29mKGNydGNfc3RhdGUs IHN0cnVjdCBlYmNfY3J0Y19zdGF0ZSwgYmFzZSk7CistfQorLQorIHN0YXRpYyB2b2lkIHJvY2tj aGlwX2ViY19nbG9iYWxfcmVmcmVzaChzdHJ1Y3Qgcm9ja2NoaXBfZWJjICplYmMsCisgCQkJCQlz dHJ1Y3Qgcm9ja2NoaXBfZWJjX2N0eCAqY3R4LAorIAkJCQkJIGRtYV9hZGRyX3QgbmV4dF9oYW5k bGUsCitAQCAtMTU1MSw4ICsxNTc4LDE4IEBAIHN0YXRpYyB2b2lkIHJvY2tjaGlwX2ViY19wbGFu ZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorIAkJCWRzdF9jbGlwLT54 MiA9IHBsYW5lX3N0YXRlLT5kc3QueDIgLSB4MTsKKyAJCX0KKyAKKy0JCWNsaXBfY2hhbmdlZF9m YiA9IHJvY2tjaGlwX2ViY19ibGl0X2ZiKGN0eCwgZHN0X2NsaXAsIHZhZGRyLAorLQkJCQkJICBw bGFuZV9zdGF0ZS0+ZmIsICZzcmNfY2xpcCwgYWRqdXN0X3gxLCBhZGp1c3RfeDIpOworKwkJaWYg KGxpbWl0X2ZiX2JsaXRzICE9IDApeworKwkJCXByaW50ayhLRVJOX0lORk8gImF0b21pYyB1cGRh dGU6IGJsaXR0aW5nOiAlaVxuIiwgbGltaXRfZmJfYmxpdHMpOworKwkJCWNsaXBfY2hhbmdlZF9m YiA9IHJvY2tjaGlwX2ViY19ibGl0X2ZiKGN0eCwgZHN0X2NsaXAsIHZhZGRyLAorKwkJCQkJCSAg cGxhbmVfc3RhdGUtPmZiLCAmc3JjX2NsaXAsIGFkanVzdF94MSwgYWRqdXN0X3gyKTsKKysJCQkv LyB0aGUgY291bnRlciBzaG91bGQgb25seSByZWFjaCAwIGhlcmUsIC0xIGNhbiBvbmx5IGJlIGV4 dGVybmFsbHkgc2V0CisrCQkJbGltaXRfZmJfYmxpdHMgLT0gKGxpbWl0X2ZiX2JsaXRzID4gMCkg PyAxIDogMDsKKysJCX0gZWxzZSB7CisrCQkJLy8gd2UgZG8gbm90IHdhbnQgdG8gYmxpdCBhbnl0 aGluZworKwkJCXByaW50ayhLRVJOX0lORk8gImF0b21pYyB1cGRhdGU6IG5vdCBibGl0dGluZzog JWlcbiIsIGxpbWl0X2ZiX2JsaXRzKTsKKysJCQljbGlwX2NoYW5nZWRfZmIgPSBmYWxzZTsKKysJ CX0KKysKKyAKKyAJCS8vIHJldmVyc2UgY29vcmRpbmF0ZXMKKyAJCWRzdF9jbGlwLT54MSArPSBh ZGp1c3RfeDE7CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9yb2NrY2hpcF9lYmNfZHJt LmggYi9pbmNsdWRlL3VhcGkvZHJtL3JvY2tjaGlwX2ViY19kcm0uaAoraW5kZXggYmVmYTYyYTY4 YmUwLi41ZThjODdhZTZhZjIgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3VhcGkvZHJtL3JvY2tjaGlw X2ViY19kcm0uaAorKysrIGIvaW5jbHVkZS91YXBpL2RybS9yb2NrY2hpcF9lYmNfZHJtLmgKK0BA IC0xNyw5ICsxNywxOSBAQCBzdHJ1Y3QgZHJtX3JvY2tjaGlwX2ViY19vZmZfc2NyZWVuIHsKKyAJ Y2hhciAqIHB0cl9zY3JlZW5fY29udGVudDsKKyB9OworIAorLSNkZWZpbmUgRFJNX1JPQ0tDSElQ X0VCQ19OVU1fSU9DVExTCQkweDAyCisrc3RydWN0IGRybV9yb2NrY2hpcF9lYmNfZXh0cmFjdF9m YnMgeworKwljaGFyICogcHRyX3ByZXY7CisrCWNoYXIgKiBwdHJfbmV4dDsKKysJY2hhciAqIHB0 cl9maW5hbDsKKysJY2hhciAqIHB0cl9waGFzZTE7CisrCWNoYXIgKiBwdHJfcGhhc2UyOworK307 CisrCisrCisrI2RlZmluZSBEUk1fUk9DS0NISVBfRUJDX05VTV9JT0NUTFMJCTB4MDMKKyAKKyAj ZGVmaW5lIERSTV9JT0NUTF9ST0NLQ0hJUF9FQkNfR0xPQkFMX1JFRlJFU0gJRFJNX0lPV1IoRFJN X0NPTU1BTkRfQkFTRSArIDB4MDAsIHN0cnVjdCBkcm1fcm9ja2NoaXBfZWJjX3RyaWdnZXJfZ2xv YmFsX3JlZnJlc2gpCisgI2RlZmluZSBEUk1fSU9DVExfUk9DS0NISVBfRUJDX09GRl9TQ1JFRU4J RFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIDB4MDEsIHN0cnVjdCBkcm1fcm9ja2NoaXBfZWJj X29mZl9zY3JlZW4pCisrI2RlZmluZSBEUk1fSU9DVExfUk9DS0NISVBfRUJDX0VYVFJBQ1RfRkJT CURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyAweDAyLCBzdHJ1Y3QgZHJtX3JvY2tjaGlwX2Vi Y19leHRyYWN0X2ZicykKKyAKKyAjZW5kaWYgLyogX19ST0NLQ0hJUF9FQkNfRFJNX0hfXyovCist LSAKKzIuMzAuMgorCisKK0Zyb20gZDIzOGE1MDg1M2MzMGM2NWJlZTZlN2E2YTJkNTU2NTI1MDk4 MDI0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1heGltaWxpYW4gV2VpZ2FuZCA8 bXdlaWdhbmRAbXdlaWdhbmQubmV0PgorRGF0ZTogV2VkLCAyMiBKdW4gMjAyMiAxMDoxNzoxMCAr MDIwMAorU3ViamVjdDogW1BBVENIIDMxLzM3XSBbcm9ja2NoaXBfZWJjXSBmaXggY29tcGlsZXIg d2FybmluZ3MgYnkgbW92aW5nIHZhcmlhYmxlCisgZGVjbGFyYXRpb24gdG8gdGhlIHRvcCBvZiB0 aGUgZnVuY3Rpb25zCisKKy0tLQorIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9l YmMuYyB8IDQ0ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjQg aW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv cm9ja2NoaXBfZWJjLmMKK2luZGV4IDI3OGEzNTIwOTA0NC4uZDA2NzBkNDgyNDMyIDEwMDY0NAor LS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCisrKysgYi9kcml2 ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK0BAIC00NTMsNiArNDUzLDIyIEBA IHN0YXRpYyBpbnQgdHJ5X3RvX3NwbGl0X2FyZWEoCisgCSAgICBzdHJ1Y3Qgcm9ja2NoaXBfZWJj X2FyZWEgKipwX25leHRfYXJlYSwKKyAJCXN0cnVjdCBkcm1fcmVjdCAqIGludGVyc2VjdGlvbgor IAkgICAgKXsKKysJaW50IHhtaW4sIHhtYXgsIHltaW4sIHltYXgsIHhjZW50ZXIsIHljZW50ZXI7 CisrCisrCWJvb2wgbm9feHNwbGl0ID0gZmFsc2U7CisrCWJvb2wgbm9feXNwbGl0ID0gZmFsc2U7 CisrCWJvb2wgc3BsaXRfYm90aCA9IHRydWU7CisrCisrCXN0cnVjdCByb2NrY2hpcF9lYmNfYXJl YSAqIGl0ZW0xOworKwlzdHJ1Y3Qgcm9ja2NoaXBfZWJjX2FyZWEgKiBpdGVtMjsKKysJc3RydWN0 IHJvY2tjaGlwX2ViY19hcmVhICogaXRlbTM7CisrCXN0cnVjdCByb2NrY2hpcF9lYmNfYXJlYSAq IGl0ZW00OworKworKwkvLyB3ZSBkbyBub3Qgd2FudCB0byBvdmVyaGVsbSB0aGUgcmVmcmVzaCB0 aHJlYWQgYW5kIGxpbWl0IHVzIHRvIGEKKysJLy8gY2VydGFpbiBudW1iZXIgb2Ygc3BsaXRzLiBU aGUgcmVzdCBuZWVkcyB0byB3YWl0CisrCWlmICgqc3BsaXRfY291bnRlciA+PSBzcGxpdF9hcmVh X2xpbWl0KQorKwkJcmV0dXJuIDA7CisrCisgCisgCS8vIGZvciBub3csIG1pbiBzaXplIGlmIDJ4 MgorIAlpZiAoKGFyZWEtPmNsaXAueDIgLSBhcmVhLT5jbGlwLngxIDwgMikgfCAoYXJlYS0+Y2xp cC55MiAtIGFyZWEtPmNsaXAueTEgPCAyKSkKK0BAIC00NjMsMTIgKzQ3OSw2IEBAIHN0YXRpYyBp bnQgdHJ5X3RvX3NwbGl0X2FyZWEoCisgCS8vIG5leHQgb3V0ZXIgbG9vcCAtIHdlIGRlbGV0ZSB0 aGlzIGFyZWEgc28gd2UgbmVlZCBub3QgdG8ganVnZ2xlCisgCS8vIGFyb3VuZCB0aGUgZm91ciBh cmVhcyB1bnRpbCB3ZSBmb3VuZCB0aGUgb25lIHRoYXQgaXMgYWN0dWFsbHkKKyAJLy8gb3Zlcmxh cHBpbmcpCistCWludCB4bWluLCB4bWF4LCB5bWluLCB5bWF4LCB4Y2VudGVyLCB5Y2VudGVyOwor LQorLQlib29sIG5vX3hzcGxpdCA9IGZhbHNlOworLQlib29sIG5vX3lzcGxpdCA9IGZhbHNlOwor LQlib29sIHNwbGl0X2JvdGggPSB0cnVlOworLQorIAl4bWluID0gYXJlYS0+Y2xpcC54MTsKKyAJ aWYgKGludGVyc2VjdGlvbi0+eDEgPiB4bWluKQorIAkJeGNlbnRlciA9IGludGVyc2VjdGlvbi0+ eDE7CitAQCAtNDk2LDIwICs1MDYsMTEgQEAgc3RhdGljIGludCB0cnlfdG9fc3BsaXRfYXJlYSgK KyAJaWYgKG5vX3hzcGxpdCAmJiBub195c3BsaXQpCisgCQlyZXR1cm4gMDsKKyAKKy0JLy8gd2Ug ZG8gbm90IHdhbnQgdG8gb3ZlcmhlbG0gdGhlIHJlZnJlc2ggdGhyZWFkIGFuZCBsaW1pdCB1cyB0 byBhCistCS8vIGNlcnRhaW4gbnVtYmVyIG9mIHNwbGl0cy4gVGhlIHJlc3QgbmVlZHMgdG8gd2Fp dAorLQlpZiAoKnNwbGl0X2NvdW50ZXIgPj0gc3BsaXRfYXJlYV9saW1pdCkKKy0JCXJldHVybiAw OworLQorIAkvLyB3ZSBuZWVkIGZvdXIgbmV3IHJva2NoaXBfZWJjX2FyZWEgZW50cmllcyB0aGF0 IHdlIHNwbGljZSBpbnRvCisgCS8vIHRoZSBsaXN0LiBOb3RlIHRoYXQgdGhlIGN1cnJlbnRseSBu ZXh0IGl0ZW0gc2hhbGwgYmUgY29waWVkCisgCS8vIGJhY2t3YXJkcyBiZWNhdXNlIHRvIHByZXZl bnQgdGhlIG91dGVyIGxpc3QgaXRlcmF0aW9uIGZyb20KKyAJLy8gc2tpcHBpbmcgb3ZlciBvdXIg bmV3bHkgY3JlYXRlZCBpdGVtcy4KKyAKKy0Jc3RydWN0IHJvY2tjaGlwX2ViY19hcmVhICogaXRl bTE7CistCXN0cnVjdCByb2NrY2hpcF9lYmNfYXJlYSAqIGl0ZW0yOworLQlzdHJ1Y3Qgcm9ja2No aXBfZWJjX2FyZWEgKiBpdGVtMzsKKy0Jc3RydWN0IHJvY2tjaGlwX2ViY19hcmVhICogaXRlbTQ7 CisgCWl0ZW0xID0ga21hbGxvYyhzaXplb2YoKml0ZW0xKSwgR0ZQX0tFUk5FTCk7CisgCWlmIChz cGxpdF9ib3RoIHx8IG5vX3hzcGxpdCkKKyAJCWl0ZW0yID0ga21hbGxvYyhzaXplb2YoKml0ZW0y KSwgR0ZQX0tFUk5FTCk7CitAQCAtNzUyLDE3ICs3NTMsMjAgQEAgc3RhdGljIHZvaWQgcm9ja2No aXBfZWJjX2JsaXRfcGl4ZWxzKGNvbnN0IHN0cnVjdCByb2NrY2hpcF9lYmNfY3R4ICpjdHgsCisg CisgCXVuc2lnbmVkIGludCB4MV9ieXRlcyA9IGNsaXAtPngxIC8gMjsKKyAJdW5zaWduZWQgaW50 IHgyX2J5dGVzID0gY2xpcC0+eDIgLyAyOworLQkvLyB0aGUgaW50ZWdlciBkaXZpc2lvbiBmbG9v cnMgYnkgZGVmYXVsdCwgYnV0IHdlIHdhbnQgdG8gaW5jbHVkZSB0aGUgbGFzdAorLQkvLyBieXRl IChwYXJ0aWFsbHkpCistCWlmIChlbmRfeF9pc19vZGQpCistCQl4Ml9ieXRlcysrOworIAorIAl1 bnNpZ25lZCBpbnQgcGl0Y2ggPSBjdHgtPmdyYXk0X3BpdGNoOworLQl1bnNpZ25lZCBpbnQgd2lk dGggPSB4Ml9ieXRlcyAtIHgxX2J5dGVzOworKwl1bnNpZ25lZCBpbnQgd2lkdGg7CisgCWNvbnN0 IHU4ICpzcmNfbGluZTsKKyAJdW5zaWduZWQgaW50IHk7CisgCXU4ICpkc3RfbGluZTsKKyAKKysJ Ly8gdGhlIGludGVnZXIgZGl2aXNpb24gZmxvb3JzIGJ5IGRlZmF1bHQsIGJ1dCB3ZSB3YW50IHRv IGluY2x1ZGUgdGhlIGxhc3QKKysJLy8gYnl0ZSAocGFydGlhbGx5KQorKwlpZiAoZW5kX3hfaXNf b2RkKQorKwkJeDJfYnl0ZXMrKzsKKysKKysJd2lkdGggPSB4Ml9ieXRlcyAtIHgxX2J5dGVzOwor KworIAlkc3RfbGluZSA9IGRzdCArIGNsaXAtPnkxICogcGl0Y2ggKyB4MV9ieXRlczsKKyAJc3Jj X2xpbmUgPSBzcmMgKyBjbGlwLT55MSAqIHBpdGNoICsgeDFfYnl0ZXM7CisgCistLSAKKzIuMzAu MgorCisKK0Zyb20gZTA0MzQ1ODZmMzFkYjliZWI5NjJmODE4NWZkNTY3YTFlYWU0YTg3OSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1heGltaWxpYW4gV2VpZ2FuZCA8bXdlaWdhbmRA bXdlaWdhbmQubmV0PgorRGF0ZTogV2VkLCAyMiBKdW4gMjAyMiAxMDoxOTowNiArMDIwMAorU3Vi amVjdDogW1BBVENIIDMyLzM3XSBbcm9ja2NoaXBfZWJjXSBhZGQgZGVidWcgcHJpbnRrIHN0YXRl bWVudHMgYnV0IGNvbW1lbnQKKyB0aGVtIG91dAorCistLS0KKyBkcml2ZXJzL2dwdS9kcm0vcm9j a2NoaXAvcm9ja2NoaXBfZWJjLmMgfCAyOCArKysrKysrKysrKysrKysrKysrKystLS0tCisgMSBm aWxlIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMgYi9kcml2ZXJzL2dw dS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK2luZGV4IGQwNjcwZDQ4MjQzMi4uNDkxZWZk MjBmMmU5IDEwMDY0NAorLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2Vi Yy5jCisrKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK0BAIC02 MDUsMjQgKzYwNSwzMiBAQCBzdGF0aWMgYm9vbCByb2NrY2hpcF9lYmNfc2NoZWR1bGVfYXJlYShz dHJ1Y3QgbGlzdF9oZWFkICphcmVhcywKKyAJbGlzdF9mb3JfZWFjaF9lbnRyeShvdGhlciwgYXJl YXMsIGxpc3QpIHsKKyAJCXN0cnVjdCBkcm1fcmVjdCBpbnRlcnNlY3Rpb247CisgCQl1MzIgb3Ro ZXJfZW5kOworKwkJLy9wcmludGsoS0VSTl9JTkZPICIgICAgdGVzdCBvdGhlciBhcmVhOiAlaS0l aSAlaS0laVxuIiwgb3RoZXItPmNsaXAueDEsIG90aGVyLT5jbGlwLngyLCBvdGhlci0+Y2xpcC55 MSwgb3RoZXItPmNsaXAueTIpOworIAorIAkJLyogT25seSBjb25zaWRlciBhcmVhcyBiZWZvcmUg dGhpcyBvbmUgaW4gdGhlIGxpc3QuICovCistCQlpZiAob3RoZXIgPT0gYXJlYSkKKysJCWlmIChv dGhlciA9PSBhcmVhKXsKKysJCQkvL3ByaW50ayhLRVJOX0lORk8gIiAgICAgICAgb3RoZXI9PWFy ZWFcbiIpOworIAkJCWJyZWFrOworKwkJfQorIAorIAkJLyogU2tpcCBhcmVhcyB0aGF0IGZpbmlz aCByZWZyZXNoIGJlZm9yZSB0aGlzIGFyZWEgYmVnaW5zLiAqLworIAkJb3RoZXJfZW5kID0gb3Ro ZXItPmZyYW1lX2JlZ2luICsgbnVtX3BoYXNlczsKKy0JCWlmIChvdGhlcl9lbmQgPD0gZnJhbWVf YmVnaW4pCisrCQlpZiAob3RoZXJfZW5kIDw9IGZyYW1lX2JlZ2luKXsKKysJCQkvL3ByaW50ayhL RVJOX0lORk8gIiAgICAgICAgb3RoZXIgZmluaXNoZXMgYmVmb3JlOiAlaSAlaVxuIiwgb3RoZXJf ZW5kLCBmcmFtZV9iZWdpbik7CisgCQkJY29udGludWU7CisrCQl9CisgCisgCQkvKiBJZiB0aGVy ZSBpcyBubyBjb2xsaXNpb24sIHRoZSBhcmVhcyBhcmUgaW5kZXBlbmRlbnQuICovCisgCQlpbnRl cnNlY3Rpb24gPSBhcmVhLT5jbGlwOworLQkJaWYgKCFkcm1fcmVjdF9pbnRlcnNlY3QoJmludGVy c2VjdGlvbiwgJm90aGVyLT5jbGlwKSkKKysJCWlmICghZHJtX3JlY3RfaW50ZXJzZWN0KCZpbnRl cnNlY3Rpb24sICZvdGhlci0+Y2xpcCkpeworKwkJCS8vcHJpbnRrKEtFUk5fSU5GTyAiICAgICAg ICBubyBjb2xsaXNpb25cbiIpOworIAkJCWNvbnRpbnVlOworKwkJfQorIAorIAkJLyogSWYgdGhl IG90aGVyIGFyZWEgYWxyZWFkeSBzdGFydGVkLCB3YWl0IHVudGlsIGl0IGZpbmlzaGVzLiAqLwor IAkJaWYgKG90aGVyLT5mcmFtZV9iZWdpbiA8IGN1cnJlbnRfZnJhbWUpIHsKKyAJCQlmcmFtZV9i ZWdpbiA9IG1heChmcmFtZV9iZWdpbiwgb3RoZXJfZW5kKTsKKysJCQkvL3ByaW50ayhLRVJOX0lO Rk8gIiAgICAgICAgb3RoZXIgYWxyZWFkeSBzdGFydGVkLCBzZXR0aW5nIHRvICVpXG4iLCBmcmFt ZV9iZWdpbik7CisgCisgCQkJLy8gc28gaGVyZSB3ZSB3b3VsZCBvcHRpbWFsbHkgd2FudCB0byBz cGxpdCB0aGUgbmV3IGFyZWEgaW50byB0aHJlZQorIAkJCS8vIHBhcnRzIHRoYXQgZG8gbm90IG92 ZXJsYXAgd2l0aCB0aGUgYWxyZWFkeS1zdGFydGVkIGFyZWEsIGFuZCBvbmUKK0BAIC02MzAsMTIg KzYzOCwxNSBAQCBzdGF0aWMgYm9vbCByb2NrY2hpcF9lYmNfc2NoZWR1bGVfYXJlYShzdHJ1Y3Qg bGlzdF9oZWFkICphcmVhcywKKyAJCQkvLyBsYXRlciwgYnV0IHRoZSBvdGhlciB0aHJlZSBzaG91 bGQgc3RhcnQgaW1tZWRpYXRlbHkuCisgCisgCQkJLy8gaWYgdGhlIGFyZWEgaXMgZXF1YWwgdG8g dGhlIGNsaXAsIGNvbnRpbnVlCistCQkJaWYgKGRybV9yZWN0X2VxdWFscygmYXJlYS0+Y2xpcCwg JmludGVyc2VjdGlvbikpCisrCQkJaWYgKGRybV9yZWN0X2VxdWFscygmYXJlYS0+Y2xpcCwgJmlu dGVyc2VjdGlvbikpeworKwkJCQkvL3ByaW50ayhLRVJOX0lORk8gIiAgICAgICAgaW50ZXJzZWN0 aW9uIGNvbXBsZXRlbHkgY29udGFpbnMgYXJlYVxuIik7CisgCQkJCWNvbnRpbnVlOworKwkJCX0K KyAKKyAJCQlpZiAodHJ5X3RvX3NwbGl0X2FyZWEoYXJlYXMsIGFyZWEsIG90aGVyLCBzcGxpdF9j b3VudGVyLCBwX25leHRfYXJlYSwgJmludGVyc2VjdGlvbikpCisgCQkJeworIAkJCQkvLyBsZXQg dGhlIG91dGVyIGxvb3AgZGVsZXRlIHRoaXMgYXJlYQorKwkJCQkvL3ByaW50ayhLRVJOX0lORk8g IiAgICAgICAgZHJvcHBpbmcgYWZ0ZXIgdHJ5aW5nIHRvIHNwbGl0XG4iKTsKKyAJCQkJcmV0dXJu IGZhbHNlOworIAkJCX0gZWxzZSB7CisgCQkJCWNvbnRpbnVlOworQEAgLTY0OSwxNyArNjYwLDIw IEBAIHN0YXRpYyBib29sIHJvY2tjaGlwX2ViY19zY2hlZHVsZV9hcmVhKHN0cnVjdCBsaXN0X2hl YWQgKmFyZWFzLAorIAkJaWYgKGRybV9yZWN0X2VxdWFscygmYXJlYS0+Y2xpcCwgJmludGVyc2Vj dGlvbikpIHsKKyAJCQlkcm1fZGJnKGRybSwgImFyZWEgJXAgKCIgRFJNX1JFQ1RfRk1UICIpIGRy b3BwZWQsIGluc2lkZSAiIERSTV9SRUNUX0ZNVCAiXG4iLAorIAkJCQlhcmVhLCBEUk1fUkVDVF9B UkcoJmFyZWEtPmNsaXApLCBEUk1fUkVDVF9BUkcoJm90aGVyLT5jbGlwKSk7CisrCQkJLy9wcmlu dGsoS0VSTl9JTkZPICIgICAgZHJvcHBpbmdcbiIpOworIAkJCXJldHVybiBmYWxzZTsKKyAJCX0K KyAKKyAJCS8qIFRoZXkgZG8gb3ZlcmxhcCBidXQgYXJlIGFyZSBub3QgZXF1YWwgYW5kIGJvdGgg bm90IHN0YXJ0ZWQgeWV0LCBzbworIAkJICogdGhleSBjYW4gcG90ZW50aWFsbHkgc3RhcnQgdG9n ZXRoZXIgKi8KKyAJCWZyYW1lX2JlZ2luID0gbWF4KGZyYW1lX2JlZ2luLCBvdGhlci0+ZnJhbWVf YmVnaW4pOworKwkJLy9wcmludGsoS0VSTl9JTkZPICIgICAgc2V0dGluZyB0bzogJWlcbiIsIGZy YW1lX2JlZ2luKTsKKyAKKyAJCS8vIHRyeSB0byBzcGxpdCwgb3RoZXJ3aXNlIGNvbnRpbnVlCisg CQlpZiAodHJ5X3RvX3NwbGl0X2FyZWEoYXJlYXMsIGFyZWEsIG90aGVyLCBzcGxpdF9jb3VudGVy LCBwX25leHRfYXJlYSwgJmludGVyc2VjdGlvbikpCisgCQl7CisgCQkJLy8gbGV0IHRoZSBvdXRl ciBsb29wIGRlbGV0ZSB0aGlzIGFyZWEKKysJCQkvL3ByaW50ayhLRVJOX0lORk8gIiAgICBkcm9w cGluZyBhZnRlciB0cnlpbmcgdG8gc3BsaXRcbiIpOworIAkJCXJldHVybiBmYWxzZTsKKyAJCX0g ZWxzZSB7CisgCQkJY29udGludWU7CitAQCAtNjY3LDYgKzY4MSw3IEBAIHN0YXRpYyBib29sIHJv Y2tjaGlwX2ViY19zY2hlZHVsZV9hcmVhKHN0cnVjdCBsaXN0X2hlYWQgKmFyZWFzLAorIAl9Cisg CisgCWFyZWEtPmZyYW1lX2JlZ2luID0gZnJhbWVfYmVnaW47CisrCS8vcHJpbnRrKEtFUk5fSU5G TyAiICAgIGFyZWEgc2NoZWR1bGVkIHRvIHN0YXJ0IGF0IGZyYW1lOiAlaSAoY3VycmVudDogJWkp XG4iLCBmcmFtZV9iZWdpbiwgY3VycmVudF9mcmFtZSk7CisgCisgCXJldHVybiB0cnVlOworIH0K K0BAIC0xNTQ3LDEyICsxNTYyLDE1IEBAIHN0YXRpYyB2b2lkIHJvY2tjaGlwX2ViY19wbGFuZV9h dG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorIAllYmNfcGxhbmVfc3RhdGUg PSB0b19lYmNfcGxhbmVfc3RhdGUocGxhbmVfc3RhdGUpOworIAl2YWRkciA9IGViY19wbGFuZV9z dGF0ZS0+YmFzZS5kYXRhWzBdLnZhZGRyOworIAorKwkvL3ByaW50ayhLRVJOX0lORk8gIm5ldyBm YiBjbGlwc1xuIik7CisgCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShhcmVhLCBuZXh0X2FyZWEs ICZlYmNfcGxhbmVfc3RhdGUtPmFyZWFzLCBsaXN0KSB7CisgCQlzdHJ1Y3QgZHJtX3JlY3QgKmRz dF9jbGlwID0gJmFyZWEtPmNsaXA7CisgCQlzdHJ1Y3QgZHJtX3JlY3Qgc3JjX2NsaXAgPSBhcmVh LT5jbGlwOworIAkJaW50IGFkanVzdF94MTsKKyAJCWludCBhZGp1c3RfeDI7CisgCQlib29sIGNs aXBfY2hhbmdlZF9mYjsKKysJCS8vcHJpbnRrKEtFUk5fSU5GTyAiICAgIGNoZWNraW5nIGZyb20g bGlzdDogKCIgRFJNX1JFQ1RfRk1UICIpIFxuIiwKKysJCQkvKiBEUk1fUkVDVF9BUkcoJmFyZWEt PmNsaXApKTsgKi8KKyAKKyAJCS8qIENvbnZlcnQgZnJvbSBwbGFuZSBjb29yZGluYXRlcyB0byBD UlRDIGNvb3JkaW5hdGVzLiAqLworIAkJZHJtX3JlY3RfdHJhbnNsYXRlKGRzdF9jbGlwLCB0cmFu c2xhdGVfeCwgdHJhbnNsYXRlX3kpOworQEAgLTE2MTEsNiArMTYyOSw4IEBAIHN0YXRpYyB2b2lk IHJvY2tjaGlwX2ViY19wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l LAorIAkJfSBlbHNlIHsKKyAJCQlkcm1fZGJnKHBsYW5lLT5kZXYsICJhcmVhICVwICgiIERSTV9S RUNUX0ZNVCAiKSA8PSAoIiBEUk1fUkVDVF9GTVQgIikgYmxpdHRlZFxuIiwKKyAJCQkJYXJlYSwg RFJNX1JFQ1RfQVJHKCZhcmVhLT5jbGlwKSwgRFJNX1JFQ1RfQVJHKCZzcmNfY2xpcCkpOworKwkJ CS8vcHJpbnRrKEtFUk5fSU5GTyAiICAgIGFkZGluZyB0byBsaXN0OiAoIiBEUk1fUkVDVF9GTVQg IikgPD0gKCIgRFJNX1JFQ1RfRk1UICIpIGJsaXR0ZWRcbiIsCisrCQkJCS8qIERSTV9SRUNUX0FS RygmYXJlYS0+Y2xpcCksIERSTV9SRUNUX0FSRygmc3JjX2NsaXApKTsgKi8KKyAJCX0KKyAJfQor IAorLS0gCisyLjMwLjIKKworCitGcm9tIGJiNGUxMzc3OWRlOGQ0Mjc4NjhkYTAyNGU3ODFjZmY2 MjVlODI4N2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXhpbWlsaWFuIFdlaWdh bmQgPG13ZWlnYW5kQG13ZWlnYW5kLm5ldD4KK0RhdGU6IFdlZCwgMjIgSnVuIDIwMjIgMTA6MjE6 NDIgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAzMy8zN10gW3JvY2tjaGlwX2ViY10gYWRkIGNvbW1l bnRlZC1vdXQgc3Bpbl91bmxvY2sgdG8KKyBpbmRpY2F0ZSBvbGQgcG9zaXRpb24KKworLS0tCisg ZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jIHwgMSArCisgMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9j a2NoaXAvcm9ja2NoaXBfZWJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBf ZWJjLmMKK2luZGV4IDQ5MWVmZDIwZjJlOS4uMzUxY2FlMzZiYzRkIDEwMDY0NAorLS0tIGEvZHJp dmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCisrKysgYi9kcml2ZXJzL2dwdS9k cm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK0BAIC04NDcsNiArODQ3LDcgQEAgc3RhdGljIHZv aWQgcm9ja2NoaXBfZWJjX3BhcnRpYWxfcmVmcmVzaChzdHJ1Y3Qgcm9ja2NoaXBfZWJjICplYmMs CisgCQkvKiBNb3ZlIHRoZSBxdWV1ZWQgZGFtYWdlIGFyZWFzIHRvIHRoZSBsb2NhbCBsaXN0LiAq LworIAkJc3Bpbl9sb2NrKCZjdHgtPnF1ZXVlX2xvY2spOworIAkJbGlzdF9zcGxpY2VfdGFpbF9p bml0KCZjdHgtPnF1ZXVlLCAmYXJlYXMpOworKwkJLyogc3Bpbl91bmxvY2soJmN0eC0+cXVldWVf bG9jayk7ICovCisgCisgCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYXJlYSwgbmV4dF9hcmVh LCAmYXJlYXMsIGxpc3QpIHsKKyAJCQlzMzIgZnJhbWVfZGVsdGE7CistLSAKKzIuMzAuMgorCisK K0Zyb20gMzQwYzVlZWM5NzMwOTRmOTM3ZDY3NTI3Zjg2OGE0NmUyNzI5Y2JiYSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1heGltaWxpYW4gV2VpZ2FuZCA8bXdlaWdhbmRAbXdlaWdh bmQubmV0PgorRGF0ZTogV2VkLCAyMiBKdW4gMjAyMiAxMDoyMjoxOCArMDIwMAorU3ViamVjdDog W1BBVENIIDM0LzM3XSBbcm9ja2NoaXBfZWJjXSBub3Qgc3VyZSBpZiB0aGlzIGhhcyBhbnkgYmFk CisgY29uc2VxdWVuY2VzLCBidXQgYWxzbyB3YWl0IG9uIHRoZSBoYXJkd2FyZSB0byBmaW5pc2gg dGhlIGZpcnN0IGZyYW1lCisKKy0tLQorIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hp cF9lYmMuYyB8IDEzICsrKysrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25z KCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tj aGlwL3JvY2tjaGlwX2ViYy5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2Vi Yy5jCitpbmRleCAzNTFjYWUzNmJjNGQuLmU4ZDEwODcyN2M3NSAxMDA2NDQKKy0tLSBhL2RyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMuYworKysrIGIvZHJpdmVycy9ncHUvZHJt L3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCitAQCAtOTU3LDExICs5NTcsMTQgQEAgc3RhdGljIHZv aWQgcm9ja2NoaXBfZWJjX3BhcnRpYWxfcmVmcmVzaChzdHJ1Y3Qgcm9ja2NoaXBfZWJjICplYmMs CisgCQlyZWdtYXBfd3JpdGUoZWJjLT5yZWdtYXAsIEVCQ19EU1BfU1RBUlQsCisgCQkJICAgICBl YmMtPmRzcF9zdGFydCB8CisgCQkJICAgICBFQkNfRFNQX1NUQVJUX0RTUF9GUk1fU1RBUlQpOwor LQkJaWYgKGZyYW1lKSB7CistCQkJaWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoJmVi Yy0+ZGlzcGxheV9lbmQsCistCQkJCQkJCSBFQkNfRlJBTUVfVElNRU9VVCkpCistCQkJCWRybV9l cnIoZHJtLCAiRnJhbWUgJWQgdGltZWQgb3V0IVxuIiwgZnJhbWUpOworLQkJfQorKwkJLyogaWYg KGZyYW1lKSB7ICovCisrCQkvKiAJaWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoJmVi Yy0+ZGlzcGxheV9lbmQsICovCisrCQkvKiAJCQkJCSBFQkNfRlJBTUVfVElNRU9VVCkpICovCisr CQkvKiAJCWRybV9lcnIoZHJtLCAiRnJhbWUgJWQgdGltZWQgb3V0IVxuIiwgZnJhbWUpOyAqLwor KwkJLyogfSAqLworKwkJaWYgKCF3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoJmViYy0+ZGlz cGxheV9lbmQsCisrCQkJCQkJIEVCQ19GUkFNRV9USU1FT1VUKSkKKysJCQlkcm1fZXJyKGRybSwg IkZyYW1lICVkIHRpbWVkIG91dCFcbiIsIGZyYW1lKTsKKyAJfQorIAlkbWFfdW5tYXBfc2luZ2xl KGRldiwgcGhhc2VfaGFuZGxlc1swXSwgY3R4LT5ncmF5NF9zaXplLCBETUFfVE9fREVWSUNFKTsK KyAJZG1hX3VubWFwX3NpbmdsZShkZXYsIHBoYXNlX2hhbmRsZXNbMV0sIGN0eC0+Z3JheTRfc2l6 ZSwgRE1BX1RPX0RFVklDRSk7CistLSAKKzIuMzAuMgorCisKK0Zyb20gMzI0MmQzZDc4YmRjNjgz NjFjMTY1ODM4ZjU5NzI0NzMyY2RiYjBlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206 IE1heGltaWxpYW4gV2VpZ2FuZCA8bXdlaWdhbmRAbXdlaWdhbmQubmV0PgorRGF0ZTogV2VkLCAy MiBKdW4gMjAyMiAxMDoyMzowMyArMDIwMAorU3ViamVjdDogW1BBVENIIDM1LzM3XSBbcm9ja2No aXBfZWJjXSBob3BlZnVsbHkgZml4IHRoZSBibGl0dGluZyByb3V0aW5lIGZvcgorIG9kZCBzdGFy dC9lbmQgY29vcmRpbmF0ZXMgYW5kIHBhbmVsX3JlZmxlY3Rpb249MQorCistLS0KKyBkcml2ZXJz L2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMgfCA5ICsrKysrKy0tLQorIDEgZmlsZSBj aGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMgYi9kcml2ZXJzL2dwdS9kcm0v cm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK2luZGV4IGU4ZDEwODcyN2M3NS4uZjMwMDEwMTUxYzAy IDEwMDY0NAorLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCisr KysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK0BAIC0xNDgwLDkg KzE0ODAsMTMgQEAgc3RhdGljIGJvb2wgcm9ja2NoaXBfZWJjX2JsaXRfZmIoY29uc3Qgc3RydWN0 IHJvY2tjaGlwX2ViY19jdHggKmN0eCwKKyAJdTggY2hhbmdlZCA9IDA7CisgCWludCBkZWx0YV94 OworIAl2b2lkICpkc3Q7CisrCWludCB0ZXN0MSwgdGVzdDI7CisgCisgCWRlbHRhX3ggPSBwYW5l bF9yZWZsZWN0aW9uID8gLTEgOiAxOworIAlzdGFydF94ID0gcGFuZWxfcmVmbGVjdGlvbiA/IHNy Y19jbGlwLT54MiAtIDEgOiBzcmNfY2xpcC0+eDE7CisrCS8vIGRlcGVuZGluZyBvbiB0aGUgZGly ZWN0aW9uIHdlIG11c3QgZWl0aGVyIHNhdmUgdGhlIGZpcnN0IG9yIHRoZSBsYXN0IGJpdAorKwl0 ZXN0MSA9IHBhbmVsX3JlZmxlY3Rpb24gPyBhZGp1c3RfeDEgOiBhZGp1c3RfeDI7CisrCXRlc3Qy ID0gcGFuZWxfcmVmbGVjdGlvbiA/IGFkanVzdF94MiA6IGFkanVzdF94MTsKKyAKKyAJZHN0ID0g Y3R4LT5maW5hbCArIGRzdF9jbGlwLT55MSAqIGRzdF9waXRjaCArIGRzdF9jbGlwLT54MSAvIDI7 CisgCXNyYyA9IHZhZGRyICsgc3JjX2NsaXAtPnkxICogc3JjX3BpdGNoICsgc3RhcnRfeCAqIGZi LT5mb3JtYXQtPmNwcFswXTsKK0BAIC0xNTA5LDggKzE1MTMsNyBAQCBzdGF0aWMgYm9vbCByb2Nr Y2hpcF9lYmNfYmxpdF9mYihjb25zdCBzdHJ1Y3Qgcm9ja2NoaXBfZWJjX2N0eCAqY3R4LAorIAkJ CXJnYjAgPj49IDI4OworIAkJCXJnYjEgPj49IDI4OworIAorLQkJCS8vIERvZXMgdGhpcyBhY2Nv dW50IGZvciBwYW5lbCByZWZsZWN0aW9uPworLQkJCWlmICh4ID09IHNyY19jbGlwLT54MSAmJiAo YWRqdXN0X3gxID09IDEpKSB7CisrCQkJaWYgKHggPT0gc3JjX2NsaXAtPngxICYmICh0ZXN0MSA9 PSAxKSkgeworIAkJCQkvLyByZ2IwIHNob3VsZCBiZSBmaWxsZWQgd2l0aCB0aGUgY29udGVudCBv ZiB0aGUgc3JjIHBpeGVsIGhlcmUKKyAJCQkJLy8ga2VlcCBsb3dlciA0IGJpdHMKKyAJCQkJLy8g SSdtIG5vdCBzdXJlIGhvdyB0byBkaXJlY3RseSByZWFkIG9ubHkgb25lIGJ5dGUgZnJvbSB0aGUg dTMyCitAQCAtMTUxOCw3ICsxNTIxLDcgQEAgc3RhdGljIGJvb2wgcm9ja2NoaXBfZWJjX2JsaXRf ZmIoY29uc3Qgc3RydWN0IHJvY2tjaGlwX2ViY19jdHggKmN0eCwKKyAJCQkJdG1wX3BpeGVsID0g KmRidWYgJiAwYjAwMDAxMTExOworIAkJCQlyZ2IwID0gdG1wX3BpeGVsOworIAkJCX0KKy0JCQlp ZiAoeCA9PSBzcmNfY2xpcC0+eDIgJiYgKGFkanVzdF94MiA9PSAxKSkgeworKwkJCWlmICh4ID09 IHNyY19jbGlwLT54MiAmJiAodGVzdDIgPT0gMSkpIHsKKyAJCQkJLy8gcmdiMSBzaG91bGQgYmUg ZmlsbGVkIHdpdGggdGhlIGNvbnRlbnQgb2YgdGhlIGRzdCBwaXhlbCB3ZQorIAkJCQkvLyB3YW50 IHRvIGtlZXAgaGVyZQorIAkJCQkvLyBrZWVwIDQgaGlnaGVyIGJpdHMKKy0tIAorMi4zMC4yCisK KworRnJvbSAyYjQxNTYzZTIwMmE1ZDU1ZTE5ZmFkMTE2NGVjZmM4OWIxZTQzMjEwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF4aW1pbGlhbiBXZWlnYW5kIDxtd2VpZ2FuZEBtd2Vp Z2FuZC5uZXQ+CitEYXRlOiBXZWQsIDIyIEp1biAyMDIyIDEwOjI0OjA3ICswMjAwCitTdWJqZWN0 OiBbUEFUQ0ggMzYvMzddIFtyb2NrY2hpcF9lYmNdIGFkZCBjb21tZW50ZWQtb3V0IHByaW50ayBz dGF0ZW1lbnRzCisKKy0tLQorIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9lYmMu YyB8IDUgKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9u cygtKQorCitkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2Vi Yy5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCitpbmRleCBmMzAw MTAxNTFjMDIuLmE3MmQxZTIxOTY5MSAxMDA2NDQKKy0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2Nr Y2hpcC9yb2NrY2hpcF9lYmMuYworKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tj aGlwX2ViYy5jCitAQCAtMTYwOCwxOCArMTYwOCwxNyBAQCBzdGF0aWMgdm9pZCByb2NrY2hpcF9l YmNfcGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKyAJCX0KKyAK KyAJCWlmIChsaW1pdF9mYl9ibGl0cyAhPSAwKXsKKy0JCQlwcmludGsoS0VSTl9JTkZPICJhdG9t aWMgdXBkYXRlOiBibGl0dGluZzogJWlcbiIsIGxpbWl0X2ZiX2JsaXRzKTsKKysJCQkvL3ByaW50 ayhLRVJOX0lORk8gImF0b21pYyB1cGRhdGU6IGJsaXR0aW5nOiAlaVxuIiwgbGltaXRfZmJfYmxp dHMpOworIAkJCWNsaXBfY2hhbmdlZF9mYiA9IHJvY2tjaGlwX2ViY19ibGl0X2ZiKGN0eCwgZHN0 X2NsaXAsIHZhZGRyLAorIAkJCQkJCSAgcGxhbmVfc3RhdGUtPmZiLCAmc3JjX2NsaXAsIGFkanVz dF94MSwgYWRqdXN0X3gyKTsKKyAJCQkvLyB0aGUgY291bnRlciBzaG91bGQgb25seSByZWFjaCAw IGhlcmUsIC0xIGNhbiBvbmx5IGJlIGV4dGVybmFsbHkgc2V0CisgCQkJbGltaXRfZmJfYmxpdHMg LT0gKGxpbWl0X2ZiX2JsaXRzID4gMCkgPyAxIDogMDsKKyAJCX0gZWxzZSB7CisgCQkJLy8gd2Ug ZG8gbm90IHdhbnQgdG8gYmxpdCBhbnl0aGluZworLQkJCXByaW50ayhLRVJOX0lORk8gImF0b21p YyB1cGRhdGU6IG5vdCBibGl0dGluZzogJWlcbiIsIGxpbWl0X2ZiX2JsaXRzKTsKKysJCQkvL3By aW50ayhLRVJOX0lORk8gImF0b21pYyB1cGRhdGU6IG5vdCBibGl0dGluZzogJWlcbiIsIGxpbWl0 X2ZiX2JsaXRzKTsKKyAJCQljbGlwX2NoYW5nZWRfZmIgPSBmYWxzZTsKKyAJCX0KKyAKKy0KKyAJ CS8vIHJldmVyc2UgY29vcmRpbmF0ZXMKKyAJCWRzdF9jbGlwLT54MSArPSBhZGp1c3RfeDE7Cisg CQlzcmNfY2xpcC54MSAgKz0gYWRqdXN0X3gxOworLS0gCisyLjMwLjIKKworCitGcm9tIDkxN2Ez MWJiMWFjMmViM2FkYmUyNzJmZDc5ZDQwYWM4YjIxMTY5ZDkgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCitGcm9tOiBNYXhpbWlsaWFuIFdlaWdhbmQgPG13ZWlnYW5kQG13ZWlnYW5kLm5ldD4KK0Rh dGU6IFdlZCwgMjIgSnVuIDIwMjIgMTA6MjU6MDQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAzNy8z N10gW3JvY2tjaGlwX2ViY10gYWRkIGNvbW1lbnRlZC1vdXQgb2xkIHBvc2l0aW9uIG9mIGxvY2sK KworLS0tCisgZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jIHwgMSArCisg MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv cm9ja2NoaXBfZWJjLmMKK2luZGV4IGE3MmQxZTIxOTY5MS4uNjJkYWY1YzEwN2M0IDEwMDY0NAor LS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2ViYy5jCisrKysgYi9kcml2 ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZWJjLmMKK0BAIC0xNjQ1LDYgKzE2NDUsNyBA QCBzdGF0aWMgdm9pZCByb2NrY2hpcF9lYmNfcGxhbmVfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKKyAJCXJldHVybjsKKyAJfQorIAorKwkvKiBzcGluX2xvY2soJmN0eC0+ cXVldWVfbG9jayk7ICovCisgCWxpc3Rfc3BsaWNlX3RhaWxfaW5pdCgmZWJjX3BsYW5lX3N0YXRl LT5hcmVhcywgJmN0eC0+cXVldWUpOworIAlzcGluX3VubG9jaygmY3R4LT5xdWV1ZV9sb2NrKTsK KyAKKy0tIAorMi4zMC4yCisKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9wYXRjaGVzL2xpbnV4 LWxpYnJlLWFybTY0LXBpbmVub3RlLXRvdWNoc2NyZWVuLTEucGF0Y2ggYi9nbnUvcGFja2FnZXMv cGF0Y2hlcy9saW51eC1saWJyZS1hcm02NC1waW5lbm90ZS10b3VjaHNjcmVlbi0xLnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjIwMDI2YjRkZDUKLS0tIC9kZXYv bnVsbAorKysgYi9nbnUvcGFja2FnZXMvcGF0Y2hlcy9saW51eC1saWJyZS1hcm02NC1waW5lbm90 ZS10b3VjaHNjcmVlbi0xLnBhdGNoCkBAIC0wLDAgKzEsOTc2IEBACitGcm9tIGEyNGNiMjllY2Ex YTcyYWZiMTAzN2Y1NDY4ZDMwMzZiMzRlYTFiNjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiA9P1VURi04P3E/TXlsPUMzPUE4bmU9MjBKb3NzZXJhbmQ/PSA8bXlsZW5lLmpvc3NlcmFu ZEBib290bGluLmNvbT4KK0RhdGU6IFN1biwgOSBKYW4gMjAyMiAyMTo1MzoyOCArMTAwMAorU3Vi amVjdDogW1BBVENIXSBJbnB1dDogQWRkIGRyaXZlciBmb3IgQ3lwcmVzcyBHZW5lcmF0aW9uIDUg dG91Y2hzY3JlZW4KK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47 IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVGhpcyBp cyB0aGUgYmFzaWMgZHJpdmVyIGZvciB0aGUgQ3lwcmVzcyBUcnVlVG91Y2ggR2VuNSB0b3VjaHNj cmVlbgorY29udHJvbGxlcnMuIFRoaXMgZHJpdmVyIHN1cHBvcnRzIG9ubHkgdGhlIEkyQyBidXMg YnV0IGl0IHVzZXMgcmVnbWFwCitzbyBTUEkgc3VwcG9ydCBjb3VsZCBiZSBhZGRlZCBsYXRlci4K K1RoZSB0b3VjaHNjcmVlbiBjYW4gcmV0cmlldmUgc29tZSBkZWZpbmVkIHpvbmUgdGhhdCBhcmUg aGFuZGxlZCBhcworYnV0dG9ucyAoYWNjb3JkaW5nIHRvIHRoZSBoYXJkd2FyZSkuIFRoYXQgaXMg d2h5IGl0IGhhbmRsZXMKK2J1dHRvbiBhbmQgbXVsdGl0b3VjaCBldmVudHMuCisKK1Jldmlld2Vk LWJ5OiBNYXhpbWUgUmlwYXJkIDxtYXhpbWUucmlwYXJkQGJvb3RsaW4uY29tPgorU2lnbmVkLW9m Zi1ieTogTXlsw6huZSBKb3NzZXJhbmQgPG15bGVuZS5qb3NzZXJhbmRAYm9vdGxpbi5jb20+CitT aWduZWQtb2ZmLWJ5OiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpckBhbGlzdGFpcjIzLm1lPgor VGVzdGVkLWJ5OiBBbmRyZWFzIEtlbW5hZGUgPGFuZHJlYXNAa2VtbmFkZS5pbmZvPiAjIEtvYm8g Q2xhcmEgSEQKKy0tLQorIGRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vS2NvbmZpZyAgIHwgIDE2 ICsKKyBkcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL01ha2VmaWxlICB8ICAgMSArCisgZHJpdmVy cy9pbnB1dC90b3VjaHNjcmVlbi9jeXR0c3A1LmMgfCA5MDIgKysrKysrKysrKysrKysrKysrKysr KysrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgOTE5IGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9jeXR0c3A1LmMKKworZGlmZiAtLWdp dCBhL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vS2NvbmZpZyBiL2RyaXZlcnMvaW5wdXQvdG91 Y2hzY3JlZW4vS2NvbmZpZworaW5kZXggMmY2YWRmYjdiOTM4Li5lYjRlMWIxNTY2ODMgMTAwNjQ0 CistLS0gYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL0tjb25maWcKKysrKyBiL2RyaXZlcnMv aW5wdXQvdG91Y2hzY3JlZW4vS2NvbmZpZworQEAgLTI4NCw2ICsyODQsMjIgQEAgY29uZmlnIFRP VUNIU0NSRUVOX0NZVFRTUDRfU1BJCisgCSAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1v ZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCisgCSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGN5dHRz cDRfc3BpLgorIAorK2NvbmZpZyBUT1VDSFNDUkVFTl9DWVRUU1A1CisrCXRyaXN0YXRlICJDeXBy ZXNzIFRydWVUb3VjaCBHZW41IFRvdWNoc2NyZWVuIERyaXZlciIKKysJZGVwZW5kcyBvbiBJMkMK KysJc2VsZWN0IFJFR01BUF9JMkMKKysJc2VsZWN0IENSQ19JVFVfVAorKwloZWxwCisrCSAgRHJp dmVyIGZvciBQYXJhZGUgVHJ1ZVRvdWNoIFN0YW5kYXJkIFByb2R1Y3QgR2VuZXJhdGlvbiA1Cisr CSAgdG91Y2hzY3JlZW4gY29udHJvbGxlcnMuIEkyQyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgb25s eS4KKysKKysJICBTYXkgWSBoZXJlIGlmIHlvdSBoYXZlIGEgQ3lwcmVzcyBHZW41IHRvdWNoc2Ny ZWVuLgorKworKwkgIElmIHVuc3VyZSwgc2F5IE4uCisrCisrCSAgVG8gY29tcGlsZSB0aGlzIGRy aXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlCisrCSAgbW9kdWxlIHdpbGwgYmUg Y2FsbGVkIGN5dHRzcDUuCisrCisgY29uZmlnIFRPVUNIU0NSRUVOX0RBOTAzNAorIAl0cmlzdGF0 ZSAiVG91Y2hzY3JlZW4gc3VwcG9ydCBmb3IgRGlhbG9nIFNlbWljb25kdWN0b3IgREE5MDM0Igor IAlkZXBlbmRzIG9uIFBNSUNfREE5MDNYCitkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC90b3Vj aHNjcmVlbi9NYWtlZmlsZSBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vTWFrZWZpbGUKK2lu ZGV4IDM5YTgxMjdjZjZhNS4uMGVhNWM0N2Y3ZmQ5IDEwMDY0NAorLS0tIGEvZHJpdmVycy9pbnB1 dC90b3VjaHNjcmVlbi9NYWtlZmlsZQorKysrIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9N YWtlZmlsZQorQEAgLTMwLDYgKzMwLDcgQEAgb2JqLSQoQ09ORklHX1RPVUNIU0NSRUVOX0NZVFRT UF9TUEkpCSs9IGN5dHRzcF9zcGkubworIG9iai0kKENPTkZJR19UT1VDSFNDUkVFTl9DWVRUU1A0 X0NPUkUpCSs9IGN5dHRzcDRfY29yZS5vCisgb2JqLSQoQ09ORklHX1RPVUNIU0NSRUVOX0NZVFRT UDRfSTJDKQkrPSBjeXR0c3A0X2kyYy5vIGN5dHRzcF9pMmNfY29tbW9uLm8KKyBvYmotJChDT05G SUdfVE9VQ0hTQ1JFRU5fQ1lUVFNQNF9TUEkpCSs9IGN5dHRzcDRfc3BpLm8KKytvYmotJChDT05G SUdfVE9VQ0hTQ1JFRU5fQ1lUVFNQNSkJKz0gY3l0dHNwNS5vCisgb2JqLSQoQ09ORklHX1RPVUNI U0NSRUVOX0RBOTAzNCkJKz0gZGE5MDM0LXRzLm8KKyBvYmotJChDT05GSUdfVE9VQ0hTQ1JFRU5f REE5MDUyKQkrPSBkYTkwNTJfdHNpLm8KKyBvYmotJChDT05GSUdfVE9VQ0hTQ1JFRU5fRFlOQVBS TykJKz0gZHluYXByby5vCitkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9j eXR0c3A1LmMgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2N5dHRzcDUuYworbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwMC4uM2FjNDUxMDgwOTBjCistLS0gL2Rldi9u dWxsCisrKysgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2N5dHRzcDUuYworQEAgLTAsMCAr MSw5MDIgQEAKKysvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorKy8qCisrICog UGFyYWRlIFRydWVUb3VjaChUTSkgU3RhbmRhcmQgUHJvZHVjdCBWNSBNb2R1bGUuCisrICoKKysg KiBDb3B5cmlnaHQgKEMpIDIwMTUgUGFyYWRlIFRlY2hub2xvZ2llcworKyAqIENvcHlyaWdodCAo QykgMjAxMi0yMDE1IEN5cHJlc3MgU2VtaWNvbmR1Y3RvcgorKyAqIENvcHlyaWdodCAoQykgMjAx OCBCb290bGluCisrICoKKysgKiBBdXRob3JzOiBNeWzDqG5lIEpvc3NlcmFuZCA8bXlsZW5lLmpv c3NlcmFuZEBib290bGluLmNvbT4KKysgKiAgICAgICAgICAgICAgICBBbGlzdGFpciBGcmFuY2lz IDxhbGlzdGFpckBhbGlzdGFpcjIzLm1lPgorKyAqLworKworKyNpbmNsdWRlIDxsaW51eC9jcmMt aXR1LXQuaD4KKysjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKysjaW5jbHVkZSA8bGludXgvZGV2 aWNlLmg+CisrI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KKysjaW5jbHVkZSA8bGlu dXgvaW5wdXQvbXQuaD4KKysjaW5jbHVkZSA8bGludXgvaW5wdXQvdG91Y2hzY3JlZW4uaD4KKysj aW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisrI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgorKyNp bmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKysjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+Cisr I2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorKyNpbmNsdWRlIDxhc20vdW5hbGlnbmVkLmg+Cisr CisrI2RlZmluZSBDWVRUU1A1X05BTUUJCQkJImN5dHRzcDUiCisrI2RlZmluZSBDWV9JMkNfREFU QV9TSVpFCQkJKDIgKiAyNTYpCisrI2RlZmluZSBISURfVkVSU0lPTgkJCQkweDAxMDAKKysjZGVm aW5lIENZX01BWF9JTlBVVAkJCQk1MTIKKysjZGVmaW5lIENZVFRTUDVfUFJFQUxMT0NBVEVEX0NN RF9CVUZGRVIJMzIKKysjZGVmaW5lIENZX0JJVFNfUEVSX0JUTgkJCTEKKysjZGVmaW5lIENZX05V TV9CVE5fRVZFTlRfSUQJCQlHRU5NQVNLKENZX0JJVFNfUEVSX0JUTiwgMCkKKysKKysjZGVmaW5l IE1BWF9BUkVBCQkJCTI1NQorKyNkZWZpbmUgSElEX09VVFBVVF9CTF9TT1AJCQkweDEKKysjZGVm aW5lIEhJRF9PVVRQVVRfQkxfRU9QCQkJMHgxNworKyNkZWZpbmUgSElEX09VVFBVVF9CTF9MQVVO Q0hfQVBQCQkweDNCCisrI2RlZmluZSBISURfT1VUUFVUX0JMX0xBVU5DSF9BUFBfU0laRQkJMTEK KysjZGVmaW5lIEhJRF9PVVRQVVRfR0VUX1NZU0lORk8JCQkweDIKKysjZGVmaW5lIEhJRF9PVVRQ VVRfR0VUX1NZU0lORk9fU0laRQkJNQorKyNkZWZpbmUgSElEX09VVFBVVF9NQVhfQ01EX1NJWkUJ CTEyCisrCisrI2RlZmluZSBISURfREVTQ19SRUcJCQkJMHgxCisrI2RlZmluZSBISURfSU5QVVRf UkVHCQkJCTB4MworKyNkZWZpbmUgSElEX09VVFBVVF9SRUcJCQkJMHg0CisrCisrI2RlZmluZSBS RVBPUlRfSURfVE9VQ0gJCQkweDEKKysjZGVmaW5lIFJFUE9SVF9JRF9CVE4JCQkJMHgzCisrI2Rl ZmluZSBSRVBPUlRfU0laRV81CQkJCTUKKysjZGVmaW5lIFJFUE9SVF9TSVpFXzgJCQkJOAorKyNk ZWZpbmUgUkVQT1JUX1NJWkVfMTYJCQkJMTYKKysKKysvKiBUb3VjaCByZXBvcnRzIG9mZnNldHMg Ki8KKysvKiBIZWFkZXIgb2Zmc2V0cyAqLworKyNkZWZpbmUgVE9VQ0hfUkVQT1JUX0RFU0NfSERS X0NPTlRBQ1RDT1VOVAkxNgorKy8qIFJlY29yZCBvZmZzZXRzICovCisrI2RlZmluZSBUT1VDSF9S RVBPUlRfREVTQ19DT05UQUNUSUQJCTgKKysjZGVmaW5lIFRPVUNIX1JFUE9SVF9ERVNDX1gJCQkx NgorKyNkZWZpbmUgVE9VQ0hfUkVQT1JUX0RFU0NfWQkJCTMyCisrI2RlZmluZSBUT1VDSF9SRVBP UlRfREVTQ19QCQkJNDgKKysjZGVmaW5lIFRPVUNIX1JFUE9SVF9ERVNDX01BSgkJCTU2CisrI2Rl ZmluZSBUT1VDSF9SRVBPUlRfREVTQ19NSU4JCQk2NAorKworKy8qIEhJRCAqLworKyNkZWZpbmUg SElEX1RPVUNIX1JFUE9SVF9JRAkJCTB4MQorKyNkZWZpbmUgSElEX0JUTl9SRVBPUlRfSUQJCQkw eDMKKysjZGVmaW5lIEhJRF9BUFBfUkVTUE9OU0VfUkVQT1JUX0lECQkweDFGCisrI2RlZmluZSBI SURfQVBQX09VVFBVVF9SRVBPUlRfSUQJCTB4MkYKKysjZGVmaW5lIEhJRF9CTF9SRVNQT05TRV9S RVBPUlRfSUQJCTB4MzAKKysjZGVmaW5lIEhJRF9CTF9PVVRQVVRfUkVQT1JUX0lECQkweDQwCisr CisrI2RlZmluZSBISURfT1VUUFVUX1JFU1BPTlNFX1JFUE9SVF9PRkZTRVQJMgorKyNkZWZpbmUg SElEX09VVFBVVF9SRVNQT05TRV9DTURfT0ZGU0VUCQk0CisrI2RlZmluZSBISURfT1VUUFVUX1JF U1BPTlNFX0NNRF9NQVNLCQlHRU5NQVNLKDYsIDApCisrCisrI2RlZmluZSBISURfU1lTSU5GT19T RU5TSU5HX09GRlNFVAkJMzMKKysjZGVmaW5lIEhJRF9TWVNJTkZPX0JUTl9PRkZTRVQJCQk0OAor KyNkZWZpbmUgSElEX1NZU0lORk9fQlROX01BU0sJCQlHRU5NQVNLKDcsIDApCisrI2RlZmluZSBI SURfU1lTSU5GT19NQVhfQlROCQkJOAorKworKyNkZWZpbmUgQ1lfSElEX09VVFBVVF9USU1FT1VU X01TCQkJMjAwCisrI2RlZmluZSBDWV9ISURfT1VUUFVUX0dFVF9TWVNJTkZPX1RJTUVPVVRfTVMJ MzAwMAorKyNkZWZpbmUgQ1lfSElEX0dFVF9ISURfREVTQ1JJUFRPUl9USU1FT1VUX01TCTQwMDAK KysKKysvKiBtYXhpbXVtIG51bWJlciBvZiBjb25jdXJyZW50IHRyYWNrcyAqLworKyNkZWZpbmUg VE9VQ0hfUkVQT1JUX1NJWkUJCQkxMAorKyNkZWZpbmUgVE9VQ0hfSU5QVVRfSEVBREVSX1NJWkUJ CTcKKysjZGVmaW5lIEJUTl9SRVBPUlRfU0laRQkJCTkKKysjZGVmaW5lIEJUTl9JTlBVVF9IRUFE RVJfU0laRQkJCTUKKysKKysjZGVmaW5lIE1BWF9DWV9UQ0hfVF9JRFMJMzIKKysKKysvKiBBbGwg dXNhZ2UgcGFnZXMgZm9yIFRvdWNoIFJlcG9ydCAqLworKyNkZWZpbmUgVE9VQ0hfUkVQT1JUX1VT QUdFX1BHX1gJCTB4MDAwMTAwMzAKKysjZGVmaW5lIFRPVUNIX1JFUE9SVF9VU0FHRV9QR19ZCQkw eDAwMDEwMDMxCisrI2RlZmluZSBUT1VDSF9SRVBPUlRfVVNBR0VfUEdfUAkJMHgwMDBEMDAzMAor KyNkZWZpbmUgVE9VQ0hfUkVQT1JUX1VTQUdFX1BHX0NPTlRBQ1RJRAkweDAwMEQwMDUxCisrI2Rl ZmluZSBUT1VDSF9SRVBPUlRfVVNBR0VfUEdfQ09OVEFDVENPVU5UCTB4MDAwRDAwNTQKKysjZGVm aW5lIFRPVUNIX1JFUE9SVF9VU0FHRV9QR19NQUoJCTB4RkYwMTAwNjIKKysjZGVmaW5lIFRPVUNI X1JFUE9SVF9VU0FHRV9QR19NSU4JCTB4RkYwMTAwNjMKKysjZGVmaW5lIFRPVUNIX0NPTF9VU0FH RV9QRwkJCTB4MDAwRDAwMjIKKysKKysvKiBTeXN0ZW0gSW5mb3JtYXRpb24gaW50ZXJmYWNlIGRl ZmluaXRpb25zICovCisrc3RydWN0IGN5dHRzcDVfc2Vuc2luZ19jb25mX2RhdGFfZGV2IHsKKysJ dTggZWxlY3Ryb2Rlc194OworKwl1OCBlbGVjdHJvZGVzX3k7CisrCV9fbGUxNiBsZW5feDsKKysJ X19sZTE2IGxlbl95OworKwlfX2xlMTYgcmVzX3g7CisrCV9fbGUxNiByZXNfeTsKKysJX19sZTE2 IG1heF96OworKwl1OCBvcmlnaW5feDsKKysJdTggb3JpZ2luX3k7CisrCXU4IGJ0bjsKKysJdTgg c2Nhbl9tb2RlOworKwl1OCBtYXhfbnVtX29mX3RjaF9wZXJfcmVmcmVzaF9jeWNsZTsKKyt9IF9f cGFja2VkOworKworK3N0cnVjdCBjeXR0c3A1X3NlbnNpbmdfY29uZl9kYXRhIHsKKysJdTE2IHJl c194OworKwl1MTYgcmVzX3k7CisrCXUxNiBtYXhfejsKKysJdTE2IGxlbl94OworKwl1MTYgbGVu X3k7CisrCXU4IG9yaWdpbl94OworKwl1OCBvcmlnaW5feTsKKysJdTggbWF4X3RjaDsKKyt9Owor KworK2VudW0gY3l0dHNwNV90Y2hfYWJzIHsJLyogZm9yIG9yZGVyaW5nIHdpdGhpbiB0aGUgZXh0 cmFjdGVkIHRvdWNoIGRhdGEgYXJyYXkgKi8KKysJQ1lfVENIX1gsCS8qIFggKi8KKysJQ1lfVENI X1ksCS8qIFkgKi8KKysJQ1lfVENIX1AsCS8qIFAgKFopICovCisrCUNZX1RDSF9ULAkvKiBUT1VD SCBJRCAqLworKwlDWV9UQ0hfTUFKLAkvKiBUT1VDSF9NQUpPUiAqLworKwlDWV9UQ0hfTUlOLAkv KiBUT1VDSF9NSU5PUiAqLworKwlDWV9UQ0hfTlVNX0FCUworK307CisrCisrc3RydWN0IGN5dHRz cDVfdGNoX2Fic19wYXJhbXMgeworKwlzaXplX3Qgb2ZzOwkvKiBhYnMgYnl0ZSBvZmZzZXQgKi8K KysJc2l6ZV90IHNpemU7CS8qIHNpemUgaW4gYml0cyAqLworKwlzaXplX3QgbWluOwkvKiBtaW4g dmFsdWUgKi8KKysJc2l6ZV90IG1heDsJLyogbWF4IHZhbHVlICovCisrCXNpemVfdCBib2ZzOwkv KiBiaXQgb2Zmc2V0ICovCisrfTsKKysKKytzdHJ1Y3QgY3l0dHNwNV90b3VjaCB7CisrCWludCBh YnNbQ1lfVENIX05VTV9BQlNdOworK307CisrCisrc3RydWN0IGN5dHRzcDVfc3lzaW5mbyB7Cisr CXN0cnVjdCBjeXR0c3A1X3NlbnNpbmdfY29uZl9kYXRhIHNlbnNpbmdfY29uZl9kYXRhOworKwlp bnQgbnVtX2J0bnM7CisrCXN0cnVjdCBjeXR0c3A1X3RjaF9hYnNfcGFyYW1zIHRjaF9oZHI7Cisr CXN0cnVjdCBjeXR0c3A1X3RjaF9hYnNfcGFyYW1zIHRjaF9hYnNbQ1lfVENIX05VTV9BQlNdOwor Kwl1MzIga2V5X2NvZGVbSElEX1NZU0lORk9fTUFYX0JUTl07CisrfTsKKysKKytzdHJ1Y3QgY3l0 dHNwNV9oaWRfZGVzYyB7CisrCV9fbGUxNiBoaWRfZGVzY19sZW47CisrCXU4IHBhY2tldF9pZDsK KysJdTggcmVzZXJ2ZWRfYnl0ZTsKKysJX19sZTE2IGJjZF92ZXJzaW9uOworKwlfX2xlMTYgcmVw b3J0X2Rlc2NfbGVuOworKwlfX2xlMTYgcmVwb3J0X2Rlc2NfcmVnaXN0ZXI7CisrCV9fbGUxNiBp bnB1dF9yZWdpc3RlcjsKKysJX19sZTE2IG1heF9pbnB1dF9sZW47CisrCV9fbGUxNiBvdXRwdXRf cmVnaXN0ZXI7CisrCV9fbGUxNiBtYXhfb3V0cHV0X2xlbjsKKysJX19sZTE2IGNvbW1hbmRfcmVn aXN0ZXI7CisrCV9fbGUxNiBkYXRhX3JlZ2lzdGVyOworKwlfX2xlMTYgdmVuZG9yX2lkOworKwlf X2xlMTYgcHJvZHVjdF9pZDsKKysJX19sZTE2IHZlcnNpb25faWQ7CisrCXU4IHJlc2VydmVkWzRd OworK30gX19wYWNrZWQ7CisrCisrc3RydWN0IGN5dHRzcDUgeworKwlzdHJ1Y3QgZGV2aWNlICpk ZXY7CisrCXN0cnVjdCBjb21wbGV0aW9uIGNtZF9kb25lOworKwlzdHJ1Y3QgY3l0dHNwNV9zeXNp bmZvIHN5c2luZm87CisrCXN0cnVjdCBjeXR0c3A1X2hpZF9kZXNjIGhpZF9kZXNjOworKwl1OCBj bWRfYnVmW0NZVFRTUDVfUFJFQUxMT0NBVEVEX0NNRF9CVUZGRVJdOworKwl1OCBpbnB1dF9idWZb Q1lfTUFYX0lOUFVUXTsKKysJdTggcmVzcG9uc2VfYnVmW0NZX01BWF9JTlBVVF07CisrCXN0cnVj dCBncGlvX2Rlc2MgKnJlc2V0X2dwaW87CisrCXN0cnVjdCBpbnB1dF9kZXYgKmlucHV0OworKwlj aGFyIHBoeXNbTkFNRV9NQVhdOworKwlpbnQgbnVtX3Bydl9yZWM7CisrCXN0cnVjdCByZWdtYXAg KnJlZ21hcDsKKysJc3RydWN0IHRvdWNoc2NyZWVuX3Byb3BlcnRpZXMgcHJvcDsKKysJc3RydWN0 IHJlZ3VsYXRvciAqdmRkOworK307CisrCisrLyoKKysgKiBGb3Igd2hhdCBpcyB1bmRlcnN0b29k IGluIHRoZSBkYXRhc2hlZXQsIHRoZSByZWdpc3RlciBkb2VzIG5vdAorKyAqIG1hdHRlci4gRm9y IGNvbnNpc3RlbmN5LCB1c2UgdGhlIElucHV0IFJlZ2lzdGVyIGFkZHJlc3MKKysgKiBidXQgaXQg ZG9lcyBtZWFuIGFueXRoaW5nIHRvIHRoZSBkZXZpY2UuIFRoZSBpbXBvcnRhbnQgZGF0YQorKyAq IHRvIHNlbmQgaXMgdGhlIEkyQyBhZGRyZXNzCisrICovCisrc3RhdGljIGludCBjeXR0c3A1X3Jl YWQoc3RydWN0IGN5dHRzcDUgKnRzLCB1OCAqYnVmLCB1MzIgbWF4KQorK3sKKysJaW50IGVycm9y OworKwl1MzIgc2l6ZTsKKysJdTggdGVtcFsyXTsKKysKKysJLyogUmVhZCB0aGUgZnJhbWUgdG8g cmV0cmlldmUgdGhlIHNpemUgKi8KKysJZXJyb3IgPSByZWdtYXBfYnVsa19yZWFkKHRzLT5yZWdt YXAsIEhJRF9JTlBVVF9SRUcsIHRlbXAsIHNpemVvZih0ZW1wKSk7CisrCWlmIChlcnJvcikKKysJ CXJldHVybiBlcnJvcjsKKysKKysJc2l6ZSA9IGdldF91bmFsaWduZWRfbGUxNih0ZW1wKTsKKysJ aWYgKCFzaXplIHx8IHNpemUgPT0gMikKKysJCXJldHVybiAwOworKworKwlpZiAoc2l6ZSA+IG1h eCkKKysJCXJldHVybiAtRUlOVkFMOworKworKwkvKiBHZXQgdGhlIHJlYWwgdmFsdWUgKi8KKysJ cmV0dXJuIHJlZ21hcF9idWxrX3JlYWQodHMtPnJlZ21hcCwgSElEX0lOUFVUX1JFRywgYnVmLCBz aXplKTsKKyt9CisrCisrc3RhdGljIGludCBjeXR0c3A1X3dyaXRlKHN0cnVjdCBjeXR0c3A1ICp0 cywgdW5zaWduZWQgaW50IHJlZywgdTggKmRhdGEsCisrCQkJIHNpemVfdCBzaXplKQorK3sKKysJ dTggY21kW0hJRF9PVVRQVVRfTUFYX0NNRF9TSVpFXTsKKysKKysJaWYgKHNpemUgKyAxID4gSElE X09VVFBVVF9NQVhfQ01EX1NJWkUpCisrCQlyZXR1cm4gLUUyQklHOworKworKwkvKiBIaWdoIGJ5 dGVzIG9mIHJlZ2lzdGVyIGFkZHJlc3MgbmVlZGVkIGFzIGZpcnN0IGJ5dGUgb2YgY21kICovCisr CWNtZFswXSA9IChyZWcgPj4gOCkgJiAweEZGIDsKKysKKysJLyogQ29weSB0aGUgcmVzdCBvZiB0 aGUgZGF0YSAqLworKwlpZiAoZGF0YSkKKysJCW1lbWNweSgmY21kWzFdLCBkYXRhLCBzaXplKTsK KysKKysJLyoKKysJICogVGhlIGhhcmR3YXJlIHdhbnRzIHRvIHJlY2VpdmUgYSBmcmFtZSB3aXRo IHRoZSBhZGRyZXNzIHJlZ2lzdGVyCisrCSAqIGNvbnRhaW5lZCBpbiB0aGUgZmlyc3QgdHdvIGJ5 dGVzLiBBcyB0aGUgcmVnbWFwX3dyaXRlIGZ1bmN0aW9uCisrCSAqIGFkZCB0aGUgcmVnaXN0ZXIg YWRyZXNzZSBpbiB0aGUgZnJhbWUsIHdlIHVzZSB0aGUgbG93IGJ5dGUgYXMKKysJICogZmlyc3Qg ZnJhbWUgYnl0ZSBmb3IgdGhlIGFkZHJlc3MgcmVnaXN0ZXIgYW5kIHRoZSBmaXJzdAorKwkgKiBk YXRhIGJ5dGUgaXMgdGhlIGhpZ2ggcmVnaXN0ZXIgKyBsZWZ0IG9mIHRoZSBjbWQgdG8gc2VuZAor KwkgKi8KKysJcmV0dXJuIHJlZ21hcF9idWxrX3dyaXRlKHRzLT5yZWdtYXAsIHJlZyAmIDB4RkYs IGNtZCwgc2l6ZSArIDEpOworK30KKysKKytzdGF0aWMgdm9pZCBjeXR0c3A1X2dldF90b3VjaF9h eGlzKGludCAqYXhpcywgaW50IHNpemUsIGludCBtYXgsIHU4ICp4eV9kYXRhLAorKwkJCQkgICBp bnQgYm9mcykKKyt7CisrCWludCBuYnl0ZTsKKysKKysJZm9yIChuYnl0ZSA9IDAsICpheGlzID0g MDsgbmJ5dGUgPCBzaXplOyBuYnl0ZSsrKQorKwkJKmF4aXMgKz0gKCh4eV9kYXRhW25ieXRlXSA+ PiBib2ZzKSA8PCAobmJ5dGUgKiA4KSk7CisrCisrCSpheGlzICY9IG1heCAtIDE7CisrfQorKwor K3N0YXRpYyB2b2lkIGN5dHRzcDVfZ2V0X3RvdWNoX3JlY29yZChzdHJ1Y3QgY3l0dHNwNSAqdHMs CisrCQkJCSAgICAgc3RydWN0IGN5dHRzcDVfdG91Y2ggKnRvdWNoLCB1OCAqeHlfZGF0YSkKKyt7 CisrCXN0cnVjdCBjeXR0c3A1X3N5c2luZm8gKnNpID0gJnRzLT5zeXNpbmZvOworKwllbnVtIGN5 dHRzcDVfdGNoX2FicyBhYnM7CisrCisrCWZvciAoYWJzID0gQ1lfVENIX1g7IGFicyA8IENZX1RD SF9OVU1fQUJTOyBhYnMrKykKKysJCWN5dHRzcDVfZ2V0X3RvdWNoX2F4aXMoJnRvdWNoLT5hYnNb YWJzXSwKKysJCQkJICAgICAgIHNpLT50Y2hfYWJzW2Fic10uc2l6ZSwKKysJCQkJICAgICAgIHNp LT50Y2hfYWJzW2Fic10ubWF4LAorKwkJCQkgICAgICAgeHlfZGF0YSArIHNpLT50Y2hfYWJzW2Fi c10ub2ZzLAorKwkJCQkgICAgICAgc2ktPnRjaF9hYnNbYWJzXS5ib2ZzKTsKKyt9CisrCisrc3Rh dGljIHZvaWQgY3l0dHNwNV9nZXRfbXRfdG91Y2hlcyhzdHJ1Y3QgY3l0dHNwNSAqdHMsCisrCQkJ CSAgIHN0cnVjdCBjeXR0c3A1X3RvdWNoICp0Y2gsIGludCBudW1fY3VyX3RjaCkKKyt7CisrCXN0 cnVjdCBjeXR0c3A1X3N5c2luZm8gKnNpID0gJnRzLT5zeXNpbmZvOworKwlpbnQgaSwgdCA9IDAs IG9mZnNldCA9IDA7CisrCURFQ0xBUkVfQklUTUFQKGlkcywgTUFYX0NZX1RDSF9UX0lEUyk7Cisr CXU4ICp0Y2hfYWRkcjsKKysJaW50IHRtcDsKKysKKysJYml0bWFwX3plcm8oaWRzLCBNQVhfQ1lf VENIX1RfSURTKTsKKysJbWVtc2V0KHRjaC0+YWJzLCAwLCBzaXplb2YodGNoLT5hYnMpKTsKKysK KysJc3dpdGNoICh0cy0+aW5wdXRfYnVmWzJdKSB7CisrCWNhc2UgSElEX1RPVUNIX1JFUE9SVF9J RDoKKysJCW9mZnNldCA9IFRPVUNIX0lOUFVUX0hFQURFUl9TSVpFOworKwkJYnJlYWs7CisrCWNh c2UgSElEX0JUTl9SRVBPUlRfSUQ6CisrCQlvZmZzZXQgPSBCVE5fSU5QVVRfSEVBREVSX1NJWkU7 CisrCQlicmVhazsKKysJfQorKworKwlmb3IgKGkgPSAwOyBpIDwgbnVtX2N1cl90Y2g7IGkrKykg eworKwkJdGNoX2FkZHIgPSB0cy0+aW5wdXRfYnVmICsgb2Zmc2V0ICsgKGkgKiBUT1VDSF9SRVBP UlRfU0laRSk7CisrCQljeXR0c3A1X2dldF90b3VjaF9yZWNvcmQodHMsIHRjaCwgdGNoX2FkZHIp OworKworKwkJLyogQ29udmVydCBNQUpPUi9NSU5PUiBmcm9tIG1tIHRvIHJlc29sdXRpb24gKi8K KysJCXRtcCA9IHRjaC0+YWJzW0NZX1RDSF9NQUpdICogMTAwICogc2ktPnNlbnNpbmdfY29uZl9k YXRhLnJlc194OworKwkJdGNoLT5hYnNbQ1lfVENIX01BSl0gPSB0bXAgLyBzaS0+c2Vuc2luZ19j b25mX2RhdGEubGVuX3g7CisrCQl0bXAgPSB0Y2gtPmFic1tDWV9UQ0hfTUlOXSAqIDEwMCAqIHNp LT5zZW5zaW5nX2NvbmZfZGF0YS5yZXNfeDsKKysJCXRjaC0+YWJzW0NZX1RDSF9NSU5dID0gdG1w IC8gc2ktPnNlbnNpbmdfY29uZl9kYXRhLmxlbl94OworKworKwkJdCA9IHRjaC0+YWJzW0NZX1RD SF9UXTsKKysJCWlucHV0X210X3Nsb3QodHMtPmlucHV0LCB0KTsKKysJCWlucHV0X210X3JlcG9y dF9zbG90X3N0YXRlKHRzLT5pbnB1dCwgTVRfVE9PTF9GSU5HRVIsIHRydWUpOworKwkJX19zZXRf Yml0KHQsIGlkcyk7CisrCisrCQkvKiBwb3NpdGlvbiBhbmQgcHJlc3N1cmUgZmllbGRzICovCisr CQl0b3VjaHNjcmVlbl9yZXBvcnRfcG9zKHRzLT5pbnB1dCwgJnRzLT5wcm9wLAorKwkJCQkgICAg ICAgdGNoLT5hYnNbQ1lfVENIX1hdLCB0Y2gtPmFic1tDWV9UQ0hfWV0sCisrCQkJCSAgICAgICB0 cnVlKTsKKysJCWlucHV0X3JlcG9ydF9hYnModHMtPmlucHV0LCBBQlNfTVRfUFJFU1NVUkUsCisr CQkJCSB0Y2gtPmFic1tDWV9UQ0hfUF0pOworKworKwkJLyogR2V0IHRoZSBleHRlbmRlZCB0b3Vj aCBmaWVsZHMgKi8KKysJCWlucHV0X3JlcG9ydF9hYnModHMtPmlucHV0LCBBQlNfTVRfVE9VQ0hf TUFKT1IsCisrCQkJCSB0Y2gtPmFic1tDWV9UQ0hfTUFKXSk7CisrCQlpbnB1dF9yZXBvcnRfYWJz KHRzLT5pbnB1dCwgQUJTX01UX1RPVUNIX01JTk9SLAorKwkJCQkgdGNoLT5hYnNbQ1lfVENIX01J Tl0pOworKwl9CisrCisrCXRzLT5udW1fcHJ2X3JlYyA9IG51bV9jdXJfdGNoOworK30KKysKKytz dGF0aWMgaW50IGN5dHRzcDVfbXRfYXR0ZW50aW9uKHN0cnVjdCBkZXZpY2UgKmRldikKKyt7Cisr CXN0cnVjdCBjeXR0c3A1ICp0cyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworKwlzdHJ1Y3QgY3l0 dHNwNV9zeXNpbmZvICpzaSA9ICZ0cy0+c3lzaW5mbzsKKysJaW50IG1heF90Y2ggPSBzaS0+c2Vu c2luZ19jb25mX2RhdGEubWF4X3RjaDsKKysJc3RydWN0IGN5dHRzcDVfdG91Y2ggdGNoOworKwl1 OCBudW1fY3VyX3RjaDsKKysKKysJY3l0dHNwNV9nZXRfdG91Y2hfYXhpcygoaW50ICopICZudW1f Y3VyX3RjaCwgc2ktPnRjaF9oZHIuc2l6ZSwKKysJCQkgICAgICAgc2ktPnRjaF9oZHIubWF4LAor KwkJCSAgICAgICB0cy0+aW5wdXRfYnVmICsgMyArIHNpLT50Y2hfaGRyLm9mcywKKysJCQkgICAg ICAgc2ktPnRjaF9oZHIuYm9mcyk7CisrCisrCWlmIChudW1fY3VyX3RjaCA+IG1heF90Y2gpIHsK KysJCWRldl9lcnIoZGV2LCAiTnVtIHRvdWNoIGVyciBkZXRlY3RlZCAobj0lZClcbiIsIG51bV9j dXJfdGNoKTsKKysJCW51bV9jdXJfdGNoID0gbWF4X3RjaDsKKysJfQorKworKwlpZiAobnVtX2N1 cl90Y2ggPT0gMCAmJiB0cy0+bnVtX3Bydl9yZWMgPT0gMCkKKysJCXJldHVybiAwOworKworKwkv KiBleHRyYWN0IHh5X2RhdGEgZm9yIGFsbCBjdXJyZW50bHkgcmVwb3J0ZWQgdG91Y2hlcyAqLwor KwlpZiAobnVtX2N1cl90Y2gpCisrCQljeXR0c3A1X2dldF9tdF90b3VjaGVzKHRzLCAmdGNoLCBu dW1fY3VyX3RjaCk7CisrCisrCWlucHV0X210X3N5bmNfZnJhbWUodHMtPmlucHV0KTsKKysJaW5w dXRfc3luYyh0cy0+aW5wdXQpOworKworKwlyZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGludCBj eXR0c3A1X3NldHVwX2lucHV0X2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCisreworKwlzdHJ1 Y3QgY3l0dHNwNSAqdHMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKysJc3RydWN0IGN5dHRzcDVf c3lzaW5mbyAqc2kgPSAmdHMtPnN5c2luZm87CisrCWludCBtYXhfeCwgbWF4X3ksIG1heF9wOwor KwlpbnQgbWF4X3hfdG1wLCBtYXhfeV90bXA7CisrCWludCBlcnJvcjsKKysKKysJbWF4X3hfdG1w ID0gc2ktPnNlbnNpbmdfY29uZl9kYXRhLnJlc194OworKwltYXhfeV90bXAgPSBzaS0+c2Vuc2lu Z19jb25mX2RhdGEucmVzX3k7CisrCW1heF94ID0gbWF4X3hfdG1wIC0gMTsKKysJbWF4X3kgPSBt YXhfeV90bXAgLSAxOworKwltYXhfcCA9IHNpLT5zZW5zaW5nX2NvbmZfZGF0YS5tYXhfejsKKysK KysJaW5wdXRfc2V0X2Fic19wYXJhbXModHMtPmlucHV0LCBBQlNfTVRfUE9TSVRJT05fWCwgMCwg bWF4X3gsIDAsIDApOworKwlpbnB1dF9zZXRfYWJzX3BhcmFtcyh0cy0+aW5wdXQsIEFCU19NVF9Q T1NJVElPTl9ZLCAwLCBtYXhfeSwgMCwgMCk7CisrCWlucHV0X3NldF9hYnNfcGFyYW1zKHRzLT5p bnB1dCwgQUJTX01UX1BSRVNTVVJFLCAwLCBtYXhfcCwgMCwgMCk7CisrCisrCWlucHV0X3NldF9h YnNfcGFyYW1zKHRzLT5pbnB1dCwgQUJTX01UX1RPVUNIX01BSk9SLCAwLCBNQVhfQVJFQSwgMCwg MCk7CisrCWlucHV0X3NldF9hYnNfcGFyYW1zKHRzLT5pbnB1dCwgQUJTX01UX1RPVUNIX01JTk9S LCAwLCBNQVhfQVJFQSwgMCwgMCk7CisrCisrCWVycm9yID0gaW5wdXRfbXRfaW5pdF9zbG90cyh0 cy0+aW5wdXQsIHNpLT50Y2hfYWJzW0NZX1RDSF9UXS5tYXgsCisrCQlJTlBVVF9NVF9EUk9QX1VO VVNFRCB8IElOUFVUX01UX0RJUkVDVCk7CisrCWlmIChlcnJvciA8IDApCisrCQlyZXR1cm4gZXJy b3I7CisrCisrCWVycm9yID0gaW5wdXRfcmVnaXN0ZXJfZGV2aWNlKHRzLT5pbnB1dCk7CisrCWlm IChlcnJvciA8IDApCisrCQlkZXZfZXJyKGRldiwgIkVycm9yLCBmYWlsZWQgcmVnaXN0ZXIgaW5w dXQgZGV2aWNlIHI9JWRcbiIsIGVycm9yKTsKKysKKysJcmV0dXJuIGVycm9yOworK30KKysKKytz dGF0aWMgaW50IGN5dHRzcDVfcGFyc2VfZHRfa2V5X2NvZGUoc3RydWN0IGRldmljZSAqZGV2KQor K3sKKysJc3RydWN0IGN5dHRzcDUgKnRzID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisrCXN0cnVj dCBjeXR0c3A1X3N5c2luZm8gKnNpID0gJnRzLT5zeXNpbmZvOworKworKwlpZiAoIXNpLT5udW1f YnRucykKKysJCXJldHVybiAwOworKworKwkvKiBJbml0aWFsaXplIHRoZSBidXR0b24gdG8gUkVT RVJWRUQgKi8KKysJbWVtc2V0MzIoc2ktPmtleV9jb2RlLCBLRVlfUkVTRVJWRUQsICBzaS0+bnVt X2J0bnMpOworKworKwlyZXR1cm4gZGV2aWNlX3Byb3BlcnR5X3JlYWRfdTMyX2FycmF5KGRldiwg ImxpbnV4LGtleWNvZGVzIiwKKysJCQkJICAgc2ktPmtleV9jb2RlLCBzaS0+bnVtX2J0bnMpOwor K30KKysKKytzdGF0aWMgaW50IGN5dHRzcDVfYnRuX2F0dGVudGlvbihzdHJ1Y3QgZGV2aWNlICpk ZXYpCisreworKwlzdHJ1Y3QgY3l0dHNwNSAqdHMgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKysJ c3RydWN0IGN5dHRzcDVfc3lzaW5mbyAqc2kgPSAmdHMtPnN5c2luZm87CisrCWludCBjdXJfYnRu LCBvZmZzZXQgPSAwOworKwlpbnQgY3VyX2J0bl9zdGF0ZTsKKysKKysJc3dpdGNoICh0cy0+aW5w dXRfYnVmWzJdKSB7CisrCWNhc2UgSElEX1RPVUNIX1JFUE9SVF9JRDoKKysJCW9mZnNldCA9IFRP VUNIX0lOUFVUX0hFQURFUl9TSVpFOworKwkJYnJlYWs7CisrCWNhc2UgSElEX0JUTl9SRVBPUlRf SUQ6CisrCQlvZmZzZXQgPSBCVE5fSU5QVVRfSEVBREVSX1NJWkU7CisrCQlicmVhazsKKysJfQor KworKwlpZiAodHMtPmlucHV0X2J1ZlsyXSAhPSBISURfQlROX1JFUE9SVF9JRCB8fCAhc2ktPm51 bV9idG5zKQorKwkJcmV0dXJuIDA7CisrCisrCS8qIGV4dHJhY3QgYnV0dG9uIHByZXNzL3JlbGVh c2UgdG91Y2ggaW5mb3JtYXRpb24gKi8KKysJZm9yIChjdXJfYnRuID0gMDsgY3VyX2J0biA8IHNp LT5udW1fYnRuczsgY3VyX2J0bisrKSB7CisrCQkvKiBHZXQgY3VycmVudCBidXR0b24gc3RhdGUg Ki8KKysJCWN1cl9idG5fc3RhdGUgPSAodHMtPmlucHV0X2J1ZltvZmZzZXRdID4+IChjdXJfYnRu ICogQ1lfQklUU19QRVJfQlROKSkKKysJCQkmIENZX05VTV9CVE5fRVZFTlRfSUQ7CisrCisrCQlp bnB1dF9yZXBvcnRfa2V5KHRzLT5pbnB1dCwgc2ktPmtleV9jb2RlW2N1cl9idG5dLAorKwkJCQkg Y3VyX2J0bl9zdGF0ZSk7CisrCQlpbnB1dF9zeW5jKHRzLT5pbnB1dCk7CisrCX0KKysKKysJcmV0 dXJuIDA7CisrfQorKworK3N0YXRpYyBpbnQgY3l0dHNwNV92YWxpZGF0ZV9jbWRfcmVzcG9uc2Uo c3RydWN0IGN5dHRzcDUgKnRzLCB1OCBjb2RlKQorK3sKKysJdTE2IHNpemUsIGNyYzsKKysJdTgg c3RhdHVzLCByZXBvcnRfaWQ7CisrCWludCBjb21tYW5kX2NvZGU7CisrCisrCXNpemUgPSBnZXRf dW5hbGlnbmVkX2xlMTYoJnRzLT5yZXNwb25zZV9idWZbMF0pOworKworKwlpZiAoIXNpemUpCisr CQlyZXR1cm4gMDsKKysKKysJcmVwb3J0X2lkID0gdHMtPnJlc3BvbnNlX2J1ZltISURfT1VUUFVU X1JFU1BPTlNFX1JFUE9SVF9PRkZTRVRdOworKworKwlzd2l0Y2ggKHJlcG9ydF9pZCkgeworKwlj YXNlIEhJRF9CTF9SRVNQT05TRV9SRVBPUlRfSUQ6IHsKKysJCWlmICh0cy0+cmVzcG9uc2VfYnVm WzRdICE9IEhJRF9PVVRQVVRfQkxfU09QKSB7CisrCQkJZGV2X2Vycih0cy0+ZGV2LCAiSElEIG91 dHB1dCByZXNwb25zZSwgd3JvbmcgU09QXG4iKTsKKysJCQlyZXR1cm4gLUVQUk9UTzsKKysJCX0K KysKKysJCWlmICh0cy0+cmVzcG9uc2VfYnVmW3NpemUgLSAxXSAhPSBISURfT1VUUFVUX0JMX0VP UCkgeworKwkJCWRldl9lcnIodHMtPmRldiwgIkhJRCBvdXRwdXQgcmVzcG9uc2UsIHdyb25nIEVP UFxuIik7CisrCQkJcmV0dXJuIC1FUFJPVE87CisrCQl9CisrCisrCQljcmMgPSBjcmNfaXR1X3Qo MHhGRkZGLCAmdHMtPnJlc3BvbnNlX2J1Zls0XSwgc2l6ZSAtIDcpOworKwkJaWYgKGdldF91bmFs aWduZWRfbGUxNigmdHMtPnJlc3BvbnNlX2J1ZltzaXplIC0gM10pICE9IGNyYykgeworKwkJCWRl dl9lcnIodHMtPmRldiwgIkhJRCBvdXRwdXQgcmVzcG9uc2UsIHdyb25nIENSQyAweCVYXG4iLAor KwkJCQljcmMpOworKwkJCXJldHVybiAtRVBST1RPOworKwkJfQorKworKwkJc3RhdHVzID0gdHMt PnJlc3BvbnNlX2J1Zls1XTsKKysJCWlmIChzdGF0dXMpIHsKKysJCQlkZXZfZXJyKHRzLT5kZXYs ICJISUQgb3V0cHV0IHJlc3BvbnNlLCBFUlJPUjolZFxuIiwKKysJCQkJc3RhdHVzKTsKKysJCQly ZXR1cm4gLUVQUk9UTzsKKysJCX0KKysJCWJyZWFrOworKwl9CisrCWNhc2UgSElEX0FQUF9SRVNQ T05TRV9SRVBPUlRfSUQ6IHsKKysJCWNvbW1hbmRfY29kZSA9IHRzLT5yZXNwb25zZV9idWZbSElE X09VVFBVVF9SRVNQT05TRV9DTURfT0ZGU0VUXQorKwkJCSYgSElEX09VVFBVVF9SRVNQT05TRV9D TURfTUFTSzsKKysJCWlmIChjb21tYW5kX2NvZGUgIT0gY29kZSkgeworKwkJCWRldl9lcnIodHMt PmRldiwKKysJCQkJIkhJRCBvdXRwdXQgcmVzcG9uc2UsIHdyb25nIGNvbW1hbmRfY29kZTolWFxu IiwKKysJCQkJY29tbWFuZF9jb2RlKTsKKysJCQlyZXR1cm4gLUVQUk9UTzsKKysJCX0KKysJCWJy ZWFrOworKwl9CisrCX0KKysKKysJcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyB2b2lkIGN5dHRz cDVfc2lfZ2V0X2J0bl9kYXRhKHN0cnVjdCBjeXR0c3A1ICp0cykKKyt7CisrCXN0cnVjdCBjeXR0 c3A1X3N5c2luZm8gKnNpID0gJnRzLT5zeXNpbmZvOworKwl1bnNpZ25lZCBpbnQgYnRucyA9IHRz LT5yZXNwb25zZV9idWZbSElEX1NZU0lORk9fQlROX09GRlNFVF0KKysJCSYgSElEX1NZU0lORk9f QlROX01BU0s7CisrCisrCXNpLT5udW1fYnRucyA9IGh3ZWlnaHQ4KGJ0bnMpOworK30KKysKKytz dGF0aWMgaW50IGN5dHRzcDVfZ2V0X3N5c2luZm9fcmVncyhzdHJ1Y3QgY3l0dHNwNSAqdHMpCisr eworKwlzdHJ1Y3QgY3l0dHNwNV9zZW5zaW5nX2NvbmZfZGF0YSAqc2NkID0gJnRzLT5zeXNpbmZv LnNlbnNpbmdfY29uZl9kYXRhOworKwlzdHJ1Y3QgY3l0dHNwNV9zZW5zaW5nX2NvbmZfZGF0YV9k ZXYgKnNjZF9kZXYgPQorKwkJKHN0cnVjdCBjeXR0c3A1X3NlbnNpbmdfY29uZl9kYXRhX2RldiAq KQorKwkJJnRzLT5yZXNwb25zZV9idWZbSElEX1NZU0lORk9fU0VOU0lOR19PRkZTRVRdOworKwor KwljeXR0c3A1X3NpX2dldF9idG5fZGF0YSh0cyk7CisrCisrCXNjZC0+bWF4X3RjaCA9IHNjZF9k ZXYtPm1heF9udW1fb2ZfdGNoX3Blcl9yZWZyZXNoX2N5Y2xlOworKwlzY2QtPnJlc194ID0gZ2V0 X3VuYWxpZ25lZF9sZTE2KCZzY2RfZGV2LT5yZXNfeCk7CisrCXNjZC0+cmVzX3kgPSBnZXRfdW5h bGlnbmVkX2xlMTYoJnNjZF9kZXYtPnJlc195KTsKKysJc2NkLT5tYXhfeiA9IGdldF91bmFsaWdu ZWRfbGUxNigmc2NkX2Rldi0+bWF4X3opOworKwlzY2QtPmxlbl94ID0gZ2V0X3VuYWxpZ25lZF9s ZTE2KCZzY2RfZGV2LT5sZW5feCk7CisrCXNjZC0+bGVuX3kgPSBnZXRfdW5hbGlnbmVkX2xlMTYo JnNjZF9kZXYtPmxlbl95KTsKKysKKysJcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyBpbnQgY3l0 dHNwNV9oaWRfb3V0cHV0X2dldF9zeXNpbmZvKHN0cnVjdCBjeXR0c3A1ICp0cykKKyt7CisrCWlu dCByYzsKKysJdTggY21kW0hJRF9PVVRQVVRfR0VUX1NZU0lORk9fU0laRV07CisrCisrCS8qIEhJ IGJ5dGVzIG9mIE91dHB1dCByZWdpc3RlciBhZGRyZXNzICovCisrCXB1dF91bmFsaWduZWRfbGUx NihISURfT1VUUFVUX0dFVF9TWVNJTkZPX1NJWkUsIGNtZCk7CisrCWNtZFsyXSA9IEhJRF9BUFBf T1VUUFVUX1JFUE9SVF9JRDsKKysJY21kWzNdID0gMHgwOyAvKiBSZXNlcnZlZCAqLworKwljbWRb NF0gPSBISURfT1VUUFVUX0dFVF9TWVNJTkZPOworKworKwlyYyA9IGN5dHRzcDVfd3JpdGUodHMs IEhJRF9PVVRQVVRfUkVHLCBjbWQsCisrCQkJICAgSElEX09VVFBVVF9HRVRfU1lTSU5GT19TSVpF KTsKKysJaWYgKHJjKSB7CisrCQlkZXZfZXJyKHRzLT5kZXYsICJGYWlsZWQgdG8gd3JpdGUgY29t bWFuZCAlZCIsIHJjKTsKKysJCXJldHVybiByYzsKKysJfQorKworKwlyYyA9IHdhaXRfZm9yX2Nv bXBsZXRpb25faW50ZXJydXB0aWJsZV90aW1lb3V0KCZ0cy0+Y21kX2RvbmUsCisrCQkJCQkJbXNl Y3NfdG9famlmZmllcyhDWV9ISURfT1VUUFVUX0dFVF9TWVNJTkZPX1RJTUVPVVRfTVMpKTsKKysJ aWYgKHJjIDw9IDApIHsKKysJCWRldl9lcnIodHMtPmRldiwgIkhJRCBvdXRwdXQgY21kIGV4ZWN1 dGlvbiB0aW1lZCBvdXRcbiIpOworKwkJcmMgPSAtRVRJTUVET1VUOworKwkJcmV0dXJuIHJjOwor Kwl9CisrCisrCXJjID0gY3l0dHNwNV92YWxpZGF0ZV9jbWRfcmVzcG9uc2UodHMsIEhJRF9PVVRQ VVRfR0VUX1NZU0lORk8pOworKwlpZiAocmMpIHsKKysJCWRldl9lcnIodHMtPmRldiwgIlZhbGlk YXRpb24gb2YgdGhlIHJlc3BvbnNlIGZhaWxlZFxuIik7CisrCQlyZXR1cm4gcmM7CisrCX0KKysK KysJcmV0dXJuIGN5dHRzcDVfZ2V0X3N5c2luZm9fcmVncyh0cyk7CisrfQorKworK3N0YXRpYyBp bnQgY3l0dHNwNV9oaWRfb3V0cHV0X2JsX2xhdW5jaF9hcHAoc3RydWN0IGN5dHRzcDUgKnRzKQor K3sKKysJaW50IHJjOworKwl1OCBjbWRbSElEX09VVFBVVF9CTF9MQVVOQ0hfQVBQXTsKKysJdTE2 IGNyYzsKKysKKysJcHV0X3VuYWxpZ25lZF9sZTE2KEhJRF9PVVRQVVRfQkxfTEFVTkNIX0FQUF9T SVpFLCBjbWQpOworKwljbWRbMl0gPSBISURfQkxfT1VUUFVUX1JFUE9SVF9JRDsKKysJY21kWzNd ID0gMHgwOyAvKiBSZXNlcnZlZCAqLworKwljbWRbNF0gPSBISURfT1VUUFVUX0JMX1NPUDsKKysJ Y21kWzVdID0gSElEX09VVFBVVF9CTF9MQVVOQ0hfQVBQOworKwlwdXRfdW5hbGlnbmVkX2xlMTYo MHgwMCwgJmNtZFs2XSk7CisrCWNyYyA9IGNyY19pdHVfdCgweEZGRkYsICZjbWRbNF0sIDQpOwor KwlwdXRfdW5hbGlnbmVkX2xlMTYoY3JjLCAmY21kWzhdKTsKKysJY21kWzEwXSA9IEhJRF9PVVRQ VVRfQkxfRU9QOworKworKwlyYyA9IGN5dHRzcDVfd3JpdGUodHMsIEhJRF9PVVRQVVRfUkVHLCBj bWQsCisrCQkJICAgSElEX09VVFBVVF9CTF9MQVVOQ0hfQVBQX1NJWkUpOworKwlpZiAocmMpIHsK KysJCWRldl9lcnIodHMtPmRldiwgIkZhaWxlZCB0byB3cml0ZSBjb21tYW5kICVkIiwgcmMpOwor KwkJcmV0dXJuIHJjOworKwl9CisrCisrCXJjID0gd2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1 cHRpYmxlX3RpbWVvdXQoJnRzLT5jbWRfZG9uZSwKKysJCQkJCQltc2Vjc190b19qaWZmaWVzKENZ X0hJRF9PVVRQVVRfVElNRU9VVF9NUykpOworKwlpZiAocmMgPD0gMCkgeworKwkJZGV2X2Vycih0 cy0+ZGV2LCAiSElEIG91dHB1dCBjbWQgZXhlY3V0aW9uIHRpbWVkIG91dFxuIik7CisrCQlyYyA9 IC1FVElNRURPVVQ7CisrCQlyZXR1cm4gcmM7CisrCX0KKysKKysJcmMgPSBjeXR0c3A1X3ZhbGlk YXRlX2NtZF9yZXNwb25zZSh0cywgSElEX09VVFBVVF9CTF9MQVVOQ0hfQVBQKTsKKysJaWYgKHJj KSB7CisrCQlkZXZfZXJyKHRzLT5kZXYsICJWYWxpZGF0aW9uIG9mIHRoZSByZXNwb25zZSBmYWls ZWRcbiIpOworKwkJcmV0dXJuIHJjOworKwl9CisrCisrCXJldHVybiAwOworK30KKysKKytzdGF0 aWMgaW50IGN5dHRzcDVfZ2V0X2hpZF9kZXNjcmlwdG9yKHN0cnVjdCBjeXR0c3A1ICp0cywKKysJ CQkJICAgICAgc3RydWN0IGN5dHRzcDVfaGlkX2Rlc2MgKmRlc2MpCisreworKwlzdHJ1Y3QgZGV2 aWNlICpkZXYgPSB0cy0+ZGV2OworKwlfX2xlMTYgaGlkX2Rlc2NfcmVnaXN0ZXIgPSBISURfREVT Q19SRUc7CisrCWludCByYzsKKysJdTggY21kWzJdOworKworKwkvKiBTZXQgSElEIGRlc2NyaXB0 b3IgcmVnaXN0ZXIgKi8KKysJbWVtY3B5KGNtZCwgJmhpZF9kZXNjX3JlZ2lzdGVyLCBzaXplb2Yo aGlkX2Rlc2NfcmVnaXN0ZXIpKTsKKysKKysJcmMgPSBjeXR0c3A1X3dyaXRlKHRzLCBISURfREVT Q19SRUcsIE5VTEwsIDApOworKwlpZiAocmMpIHsKKysJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRv IGdldCBISUQgZGVzY3JpcHRvciwgcmM9JWRcbiIsIHJjKTsKKysJCXJldHVybiByYzsKKysJfQor KworKwlyYyA9IHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZV90aW1lb3V0KCZ0cy0+ Y21kX2RvbmUsCisrCQkJCQkJbXNlY3NfdG9famlmZmllcyhDWV9ISURfR0VUX0hJRF9ERVNDUklQ VE9SX1RJTUVPVVRfTVMpKTsKKysJaWYgKHJjIDw9IDApIHsKKysJCWRldl9lcnIodHMtPmRldiwg IkhJRCBnZXQgZGVzY3JpcHRvciB0aW1lZCBvdXRcbiIpOworKwkJcmMgPSAtRVRJTUVET1VUOwor KwkJcmV0dXJuIHJjOworKwl9CisrCisrCW1lbWNweShkZXNjLCB0cy0+cmVzcG9uc2VfYnVmLCBz aXplb2YoKmRlc2MpKTsKKysKKysJLyogQ2hlY2sgSElEIGRlc2NyaXB0b3IgbGVuZ3RoIGFuZCB2 ZXJzaW9uICovCisrCWlmIChsZTE2X3RvX2NwdShkZXNjLT5oaWRfZGVzY19sZW4pICE9IHNpemVv ZigqZGVzYykgfHwKKysJICAgIGxlMTZfdG9fY3B1KGRlc2MtPmJjZF92ZXJzaW9uKSAhPSBISURf VkVSU0lPTikgeworKwkJZGV2X2VycihkZXYsICJVbnN1cHBvcnRlZCBISUQgdmVyc2lvblxuIik7 CisrCQlyZXR1cm4gLUVOT0RFVjsKKysJfQorKworKwlyZXR1cm4gMDsKKyt9CisrCisrc3RhdGlj IGludCBmaWxsX3RjaF9hYnMoc3RydWN0IGN5dHRzcDVfdGNoX2Fic19wYXJhbXMgKnRjaF9hYnMs IGludCByZXBvcnRfc2l6ZSwKKysJCQlpbnQgb2Zmc2V0KQorK3sKKysJdGNoX2Ficy0+b2ZzID0g b2Zmc2V0IC8gODsKKysJdGNoX2Ficy0+c2l6ZSA9IHJlcG9ydF9zaXplIC8gODsKKysJaWYgKHJl cG9ydF9zaXplICUgOCkKKysJCXRjaF9hYnMtPnNpemUgKz0gMTsKKysJdGNoX2Ficy0+bWluID0g MDsKKysJdGNoX2Ficy0+bWF4ID0gMSA8PCByZXBvcnRfc2l6ZTsKKysJdGNoX2Ficy0+Ym9mcyA9 IG9mZnNldCAtICh0Y2hfYWJzLT5vZnMgPDwgMyk7CisrCisrCXJldHVybiAwOworK30KKysKKytz dGF0aWMgaXJxcmV0dXJuX3QgY3l0dHNwNV9oYW5kbGVfaXJxKGludCBpcnEsIHZvaWQgKmhhbmRs ZSkKKyt7CisrCXN0cnVjdCBjeXR0c3A1ICp0cyA9IGhhbmRsZTsKKysJaW50IHJlcG9ydF9pZDsK KysJaW50IHNpemU7CisrCWludCBlcnJvcjsKKysKKysJZXJyb3IgPSBjeXR0c3A1X3JlYWQodHMs IHRzLT5pbnB1dF9idWYsIENZX01BWF9JTlBVVCk7CisrCWlmIChlcnJvcikKKysJCXJldHVybiBJ UlFfSEFORExFRDsKKysKKysJc2l6ZSA9IGdldF91bmFsaWduZWRfbGUxNigmdHMtPmlucHV0X2J1 ZlswXSk7CisrCWlmIChzaXplID09IDApIHsKKysJCS8qIHJlc2V0ICovCisrCQlyZXBvcnRfaWQg PSAwOworKwkJc2l6ZSA9IDI7CisrCX0gZWxzZSB7CisrCQlyZXBvcnRfaWQgPSB0cy0+aW5wdXRf YnVmWzJdOworKwl9CisrCisrCXN3aXRjaCAocmVwb3J0X2lkKSB7CisrCWNhc2UgSElEX1RPVUNI X1JFUE9SVF9JRDoKKysJCWN5dHRzcDVfbXRfYXR0ZW50aW9uKHRzLT5kZXYpOworKwkJYnJlYWs7 CisrCWNhc2UgSElEX0JUTl9SRVBPUlRfSUQ6CisrCQljeXR0c3A1X2J0bl9hdHRlbnRpb24odHMt PmRldik7CisrCQlicmVhazsKKysJZGVmYXVsdDoKKysJCS8qIEl0IGlzIG5vdCBhbiBpbnB1dCBi dXQgYSBjb21tYW5kIHJlc3BvbnNlICovCisrCQltZW1jcHkodHMtPnJlc3BvbnNlX2J1ZiwgdHMt PmlucHV0X2J1Ziwgc2l6ZSk7CisrCQljb21wbGV0ZSgmdHMtPmNtZF9kb25lKTsKKysJfQorKwor KwlyZXR1cm4gSVJRX0hBTkRMRUQ7CisrfQorKworK3N0YXRpYyBpbnQgY3l0dHNwNV9kZWFzc2Vy dF9pbnQoc3RydWN0IGN5dHRzcDUgKnRzKQorK3sKKysJdTE2IHNpemU7CisrCXU4IGJ1ZlsyXTsK KysJaW50IGVycm9yOworKworKwllcnJvciA9IHJlZ21hcF9idWxrX3JlYWQodHMtPnJlZ21hcCwg SElEX0lOUFVUX1JFRywgYnVmLCBzaXplb2YoYnVmKSk7CisrCWlmIChlcnJvciA8IDApCisrCQly ZXR1cm4gZXJyb3I7CisrCisrCXNpemUgPSBnZXRfdW5hbGlnbmVkX2xlMTYoJmJ1ZlswXSk7Cisr CWlmIChzaXplID09IDIgfHwgc2l6ZSA9PSAwKQorKwkJcmV0dXJuIDA7CisrCisrCXJldHVybiAt RUlOVkFMOworK30KKysKKytzdGF0aWMgaW50IGN5dHRzcDVfZmlsbF9hbGxfdG91Y2goc3RydWN0 IGN5dHRzcDUgKnRzKQorK3sKKysJc3RydWN0IGN5dHRzcDVfc3lzaW5mbyAqc2kgPSAmdHMtPnN5 c2luZm87CisrCisrCWZpbGxfdGNoX2Ficygmc2ktPnRjaF9hYnNbQ1lfVENIX1hdLCBSRVBPUlRf U0laRV8xNiwKKysJCSAgICAgVE9VQ0hfUkVQT1JUX0RFU0NfWCk7CisrCWZpbGxfdGNoX2Ficygm c2ktPnRjaF9hYnNbQ1lfVENIX1ldLCBSRVBPUlRfU0laRV8xNiwKKysJCSAgICAgVE9VQ0hfUkVQ T1JUX0RFU0NfWSk7CisrCWZpbGxfdGNoX2Ficygmc2ktPnRjaF9hYnNbQ1lfVENIX1BdLCBSRVBP UlRfU0laRV84LAorKwkJICAgICBUT1VDSF9SRVBPUlRfREVTQ19QKTsKKysJZmlsbF90Y2hfYWJz KCZzaS0+dGNoX2Fic1tDWV9UQ0hfVF0sIFJFUE9SVF9TSVpFXzUsCisrCQkgICAgIFRPVUNIX1JF UE9SVF9ERVNDX0NPTlRBQ1RJRCk7CisrCWZpbGxfdGNoX2Ficygmc2ktPnRjaF9oZHIsIFJFUE9S VF9TSVpFXzUsCisrCQkgICAgIFRPVUNIX1JFUE9SVF9ERVNDX0hEUl9DT05UQUNUQ09VTlQpOwor KwlmaWxsX3RjaF9hYnMoJnNpLT50Y2hfYWJzW0NZX1RDSF9NQUpdLCBSRVBPUlRfU0laRV84LAor KwkJICAgICBUT1VDSF9SRVBPUlRfREVTQ19NQUopOworKwlmaWxsX3RjaF9hYnMoJnNpLT50Y2hf YWJzW0NZX1RDSF9NSU5dLCBSRVBPUlRfU0laRV84LAorKwkJICAgICBUT1VDSF9SRVBPUlRfREVT Q19NSU4pOworKworKwlyZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGludCBjeXR0c3A1X3N0YXJ0 dXAoc3RydWN0IGN5dHRzcDUgKnRzKQorK3sKKysJaW50IGVycm9yOworKworKwllcnJvciA9IGN5 dHRzcDVfZGVhc3NlcnRfaW50KHRzKTsKKysJaWYgKGVycm9yKSB7CisrCQlkZXZfZXJyKHRzLT5k ZXYsICJFcnJvciBvbiBkZWFzc2VydCBpbnQgcj0lZFxuIiwgZXJyb3IpOworKwkJcmV0dXJuIC1F Tk9ERVY7CisrCX0KKysKKysJLyoKKysJICogTGF1bmNoIHRoZSBhcHBsaWNhdGlvbiBhcyB0aGUg ZGV2aWNlIHN0YXJ0cyBpbiBib290bG9hZGVyIG1vZGUKKysJICogYmVjYXVzZSBvZiBhIHBvd2Vy LW9uLXJlc2V0CisrCSAqLworKwllcnJvciA9IGN5dHRzcDVfaGlkX291dHB1dF9ibF9sYXVuY2hf YXBwKHRzKTsKKysJaWYgKGVycm9yIDwgMCkgeworKwkJZGV2X2Vycih0cy0+ZGV2LCAiRXJyb3Ig b24gbGF1bmNoIGFwcCByPSVkXG4iLCBlcnJvcik7CisrCQlyZXR1cm4gZXJyb3I7CisrCX0KKysK KysJZXJyb3IgPSBjeXR0c3A1X2dldF9oaWRfZGVzY3JpcHRvcih0cywgJnRzLT5oaWRfZGVzYyk7 CisrCWlmIChlcnJvciA8IDApIHsKKysJCWRldl9lcnIodHMtPmRldiwgIkVycm9yIG9uIGdldHRp bmcgSElEIGRlc2NyaXB0b3Igcj0lZFxuIiwgZXJyb3IpOworKwkJcmV0dXJuIGVycm9yOworKwl9 CisrCisrCWVycm9yID0gY3l0dHNwNV9maWxsX2FsbF90b3VjaCh0cyk7CisrCWlmIChlcnJvciA8 IDApIHsKKysJCWRldl9lcnIodHMtPmRldiwgIkVycm9yIG9uIHJlcG9ydCBkZXNjcmlwdG9yIHI9 JWRcbiIsIGVycm9yKTsKKysJCXJldHVybiBlcnJvcjsKKysJfQorKworKwllcnJvciA9IGN5dHRz cDVfaGlkX291dHB1dF9nZXRfc3lzaW5mbyh0cyk7CisrCWlmIChlcnJvcikgeworKwkJZGV2X2Vy cih0cy0+ZGV2LCAiRXJyb3Igb24gZ2V0dGluZyBzeXNpbmZvIHI9JWRcbiIsIGVycm9yKTsKKysJ CXJldHVybiBlcnJvcjsKKysJfQorKworKwlyZXR1cm4gZXJyb3I7CisrfQorKworK3N0YXRpYyB2 b2lkIGN5dHRzcDVfY2xlYW51cCh2b2lkICpkYXRhKQorK3sKKysJc3RydWN0IGN5dHRzcDUgKnRz ID0gZGF0YTsKKysKKysJcmVndWxhdG9yX2Rpc2FibGUodHMtPnZkZCk7CisrfQorKworK3N0YXRp YyBpbnQgY3l0dHNwNV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCByZWdtYXAgKnJl Z21hcCwgaW50IGlycSwKKysJCQkgY29uc3QgY2hhciAqbmFtZSkKKyt7CisrCXN0cnVjdCBjeXR0 c3A1ICp0czsKKysJc3RydWN0IGN5dHRzcDVfc3lzaW5mbyAqc2k7CisrCWludCBlcnJvciwgaTsK KysKKysJdHMgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnRzKSwgR0ZQX0tFUk5FTCk7Cisr CWlmICghdHMpCisrCQlyZXR1cm4gLUVOT01FTTsKKysKKysJLyogSW5pdGlhbGl6ZSBkZXZpY2Ug aW5mbyAqLworKwl0cy0+cmVnbWFwID0gcmVnbWFwOworKwl0cy0+ZGV2ID0gZGV2OworKwlzaSA9 ICZ0cy0+c3lzaW5mbzsKKysJZGV2X3NldF9kcnZkYXRhKGRldiwgdHMpOworKworKwlpbml0X2Nv bXBsZXRpb24oJnRzLT5jbWRfZG9uZSk7CisrCisrCS8qIFBvd2VyIHVwIHRoZSBkZXZpY2UgKi8K KysJdHMtPnZkZCA9IGRldm1fcmVndWxhdG9yX2dldChkZXYsICJ2ZGQiKTsKKysJaWYgKElTX0VS Uih0cy0+dmRkKSkgeworKwkJZXJyb3IgPSBQVFJfRVJSKHRzLT52ZGQpOworKwkJcmV0dXJuIGVy cm9yOworKwl9CisrCisrCWVycm9yID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KGRldiwgY3l0 dHNwNV9jbGVhbnVwLCB0cyk7CisrCWlmIChlcnJvcikgeworKwkJcmV0dXJuIGVycm9yOworKwl9 CisrCisrCWVycm9yID0gcmVndWxhdG9yX2VuYWJsZSh0cy0+dmRkKTsKKysJaWYgKGVycm9yKSB7 CisrCQlyZXR1cm4gZXJyb3I7CisrCX0KKysKKysJdHMtPmlucHV0ID0gZGV2bV9pbnB1dF9hbGxv Y2F0ZV9kZXZpY2UoZGV2KTsKKysJaWYgKCF0cy0+aW5wdXQpIHsKKysJCWRldl9lcnIoZGV2LCAi RXJyb3IsIGZhaWxlZCB0byBhbGxvY2F0ZSBpbnB1dCBkZXZpY2VcbiIpOworKwkJcmV0dXJuIC1F Tk9ERVY7CisrCX0KKysKKysJdHMtPmlucHV0LT5uYW1lID0gImN5dHRzcDUiOworKwlzY25wcmlu dGYodHMtPnBoeXMsIHNpemVvZih0cy0+cGh5cyksICIlcy9pbnB1dDAiLCBkZXZfbmFtZShkZXYp KTsKKysJdHMtPmlucHV0LT5waHlzID0gdHMtPnBoeXM7CisrCWlucHV0X3NldF9kcnZkYXRhKHRz LT5pbnB1dCwgdHMpOworKworKwkvKiBSZXNldCB0aGUgZ3BpbyB0byBiZSBpbiBhIHJlc2V0IHN0 YXRlICovCisrCXRzLT5yZXNldF9ncGlvID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoZGV2LCAi cmVzZXQiLCBHUElPRF9PVVRfSElHSCk7CisrCWlmIChJU19FUlIodHMtPnJlc2V0X2dwaW8pKSB7 CisrCQllcnJvciA9IFBUUl9FUlIodHMtPnJlc2V0X2dwaW8pOworKwkJZGV2X2VycihkZXYsICJG YWlsZWQgdG8gcmVxdWVzdCByZXNldCBncGlvLCBlcnJvciAlZFxuIiwgZXJyb3IpOworKwkJcmV0 dXJuIGVycm9yOworKwl9CisrCWdwaW9kX3NldF92YWx1ZSh0cy0+cmVzZXRfZ3BpbywgMCk7Cisr CisrCS8qIE5lZWQgYSBkZWxheSB0byBoYXZlIGRldmljZSB1cCAqLworKwltc2xlZXAoMjApOwor KworKwllcnJvciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoZGV2LCBpcnEsIE5VTEwsIGN5 dHRzcDVfaGFuZGxlX2lycSwKKysJCQkJICAgICAgIElSUUZfT05FU0hPVCwgbmFtZSwgdHMpOwor KwlpZiAoZXJyb3IpIHsKKysJCWRldl9lcnIoZGV2LCAidW5hYmxlIHRvIHJlcXVlc3QgSVJRXG4i KTsKKysJCXJldHVybiBlcnJvcjsKKysJfQorKworKwllcnJvciA9IGN5dHRzcDVfc3RhcnR1cCh0 cyk7CisrCWlmIChlcnJvcikgeworKwkJZGV2X2Vycih0cy0+ZGV2LCAiRmFpbCBpbml0aWFsIHN0 YXJ0dXAgcj0lZFxuIiwgZXJyb3IpOworKwkJcmV0dXJuIGVycm9yOworKwl9CisrCisrCWVycm9y ID0gY3l0dHNwNV9wYXJzZV9kdF9rZXlfY29kZShkZXYpOworKwlpZiAoZXJyb3IgPCAwKSB7Cisr CQlkZXZfZXJyKHRzLT5kZXYsICJFcnJvciB3aGlsZSBwYXJzaW5nIGR0cyAlZFxuIiwgZXJyb3Ip OworKwkJcmV0dXJuIGVycm9yOworKwl9CisrCisrCXRvdWNoc2NyZWVuX3BhcnNlX3Byb3BlcnRp ZXModHMtPmlucHV0LCB0cnVlLCAmdHMtPnByb3ApOworKworKwlfX3NldF9iaXQoRVZfS0VZLCB0 cy0+aW5wdXQtPmV2Yml0KTsKKysJZm9yIChpID0gMDsgaSA8IHNpLT5udW1fYnRuczsgaSsrKQor KwkJX19zZXRfYml0KHNpLT5rZXlfY29kZVtpXSwgdHMtPmlucHV0LT5rZXliaXQpOworKworKwly ZXR1cm4gY3l0dHNwNV9zZXR1cF9pbnB1dF9kZXZpY2UoZGV2KTsKKyt9CisrCisrc3RhdGljIGlu dCBjeXR0c3A1X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAorKwkJCSAgICAg Y29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQorK3sKKysJc3RydWN0IHJlZ21hcCAqcmVn bWFwOworKwlzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgY29uZmlnID0geworKwkJ LnJlZ19iaXRzID0gOCwKKysJCS52YWxfYml0cyA9IDgsCisrCX07CisrCisrCXJlZ21hcCA9IGRl dm1fcmVnbWFwX2luaXRfaTJjKGNsaWVudCwgJmNvbmZpZyk7CisrCWlmIChJU19FUlIocmVnbWFw KSkgeworKwkJZGV2X2VycigmY2xpZW50LT5kZXYsICJyZWdtYXAgYWxsb2NhdGlvbiBmYWlsZWQ6 ICVsZFxuIiwKKysJCQlQVFJfRVJSKHJlZ21hcCkpOworKwkJcmV0dXJuIFBUUl9FUlIocmVnbWFw KTsKKysJfQorKworKwlyZXR1cm4gY3l0dHNwNV9wcm9iZSgmY2xpZW50LT5kZXYsIHJlZ21hcCwg Y2xpZW50LT5pcnEsIGNsaWVudC0+bmFtZSk7CisrfQorKworK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg b2ZfZGV2aWNlX2lkIGN5dHRzcDVfb2ZfbWF0Y2hbXSA9IHsKKysJeyAuY29tcGF0aWJsZSA9ICJj eXByZXNzLHR0MjEwMDAiLCB9LAorKwl7IH0KKyt9OworK01PRFVMRV9ERVZJQ0VfVEFCTEUob2Ys IGN5dHRzcDVfb2ZfbWF0Y2gpOworKworK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9p ZCBjeXR0c3A1X2kyY19pZFtdID0geworKwl7IENZVFRTUDVfTkFNRSwgMCwgfSwKKysJeyB9Cisr fTsKKytNT0RVTEVfREVWSUNFX1RBQkxFKGkyYywgY3l0dHNwNV9pMmNfaWQpOworKworK3N0YXRp YyBzdHJ1Y3QgaTJjX2RyaXZlciBjeXR0c3A1X2kyY19kcml2ZXIgPSB7CisrCS5kcml2ZXIgPSB7 CisrCQkubmFtZSA9IENZVFRTUDVfTkFNRSwKKysJCS5vZl9tYXRjaF90YWJsZSA9IGN5dHRzcDVf b2ZfbWF0Y2gsCisrCX0sCisrCS5wcm9iZSA9IGN5dHRzcDVfaTJjX3Byb2JlLAorKwkuaWRfdGFi bGUgPSBjeXR0c3A1X2kyY19pZCwKKyt9OworK21vZHVsZV9pMmNfZHJpdmVyKGN5dHRzcDVfaTJj X2RyaXZlcik7CisrCisrTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworK01PRFVMRV9ERVNDUklQVElP TigiVG91Y2hzY3JlZW4gZHJpdmVyIGZvciBDeXByZXNzIFRydWVUb3VjaCBHZW4gNSBQcm9kdWN0 Iik7CisrTU9EVUxFX0FVVEhPUigiTXlsw6huZSBKb3NzZXJhbmQgPG15bGVuZS5qb3NzZXJhbmRA Ym9vdGxpbi5jb20+Iik7CistLSAKK0dpdExhYgorCmRpZmYgLS1naXQgYS9nbnUvcGFja2FnZXMv cGF0Y2hlcy9saW51eC1saWJyZS1hcm02NC1waW5lbm90ZS10b3VjaHNjcmVlbi0yLnBhdGNoIGIv Z251L3BhY2thZ2VzL3BhdGNoZXMvbGludXgtbGlicmUtYXJtNjQtcGluZW5vdGUtdG91Y2hzY3Jl ZW4tMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi45Y2NlZjky YWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZ251L3BhY2thZ2VzL3BhdGNoZXMvbGludXgtbGlicmUt YXJtNjQtcGluZW5vdGUtdG91Y2hzY3JlZW4tMi5wYXRjaApAQCAtMCwwICsxLDEwOCBAQAorRnJv bSBkNmJiOGE2YjVhNTIxMGZlYTcwYmM1OTAzNTBiZmNhM2E5ZTNhN2EyIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQorRnJvbTogUGV0ZXIgR2VpcyA8cGd3aXBlb3V0QGdtYWlsLmNvbT4KK0RhdGU6 IFNhdCwgMTUgSmFuIDIwMjIgMjE6NTA6NDUgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gSW5wdXQ6 IGN5dHRzcDU6IHN1cHBvcnQgdG91Y2hzY3JlZW4gZGV2aWNlIHRyZWUgb3ZlcnJpZGVzCisKK0l0 IGlzIHBvc3NpYmxlIGZvciB0aGUgY3l0dHNwNSBjaGlwIHRvIG5vdCBoYXZlIGEgY29uZmlndXJh dGlvbiBidXJuZWQKK3RvIGl0LgorVGhpcyBsZWFkcyB0byBhIHNpdGF0dWlvbiB3aGVyZSBhbGwg Y2FsaWJyYXRpb24gdmFsdWVzIHJldHVybiB6ZXJvLAorbGVhZGluZyB0byBhIGJyb2tlbiB0b3Vj aHNjcmVlbiBjb25maWd1cmF0aW9uLgorCitUaGUgY3VycmVudCBkcml2ZXIgZG9lcyBub3Qgc3Vw cG9ydCB1dGlsaXppbmcgb3ZlcnJpZGVzIGZyb20gdGhlIGRldmljZQordHJlZS4KK0V4dGVuZCB0 aGUgZHJpdmVyIHRvIHN1cHBvcnQgdGhpcywgYW5kIHBlcm1pdCBpdCB0byBkbyBzb21lIGJhc2lj IHNhbml0eQorY2hlY2tpbmcgb2YgdGhlIHZhbHVlcyBmb3IgdGhlIHRvdWNoc2NyZWVuIGFuZCBh Ym9ydCBpZiB0aGV5IGFyZQoraW52YWxpZC4KKworU2lnbmVkLW9mZi1ieTogUGV0ZXIgR2VpcyA8 cGd3aXBlb3V0QGdtYWlsLmNvbT4KKy0tLQorIGRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vY3l0 dHNwNS5jIHwgNjIgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KKyAxIGZpbGUgY2hhbmdl ZCwgNTcgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RyaXZl cnMvaW5wdXQvdG91Y2hzY3JlZW4vY3l0dHNwNS5jIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVl bi9jeXR0c3A1LmMKK2luZGV4IDNhYzQ1MTA4MDkwYy4uZTgzNzk4NWQxOTlhIDEwMDY0NAorLS0t IGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9jeXR0c3A1LmMKKysrKyBiL2RyaXZlcnMvaW5w dXQvdG91Y2hzY3JlZW4vY3l0dHNwNS5jCitAQCAtNTA3LDE1ICs1MDcsNjYgQEAgc3RhdGljIGlu dCBjeXR0c3A1X2dldF9zeXNpbmZvX3JlZ3Moc3RydWN0IGN5dHRzcDUgKnRzKQorIAlzdHJ1Y3Qg Y3l0dHNwNV9zZW5zaW5nX2NvbmZfZGF0YV9kZXYgKnNjZF9kZXYgPQorIAkJKHN0cnVjdCBjeXR0 c3A1X3NlbnNpbmdfY29uZl9kYXRhX2RldiAqKQorIAkJJnRzLT5yZXNwb25zZV9idWZbSElEX1NZ U0lORk9fU0VOU0lOR19PRkZTRVRdOworKwl1MzIgdG1wOworIAorIAljeXR0c3A1X3NpX2dldF9i dG5fZGF0YSh0cyk7CisgCisgCXNjZC0+bWF4X3RjaCA9IHNjZF9kZXYtPm1heF9udW1fb2ZfdGNo X3Blcl9yZWZyZXNoX2N5Y2xlOworLQlzY2QtPnJlc194ID0gZ2V0X3VuYWxpZ25lZF9sZTE2KCZz Y2RfZGV2LT5yZXNfeCk7CistCXNjZC0+cmVzX3kgPSBnZXRfdW5hbGlnbmVkX2xlMTYoJnNjZF9k ZXYtPnJlc195KTsKKy0Jc2NkLT5tYXhfeiA9IGdldF91bmFsaWduZWRfbGUxNigmc2NkX2Rldi0+ bWF4X3opOworLQlzY2QtPmxlbl94ID0gZ2V0X3VuYWxpZ25lZF9sZTE2KCZzY2RfZGV2LT5sZW5f eCk7CistCXNjZC0+bGVuX3kgPSBnZXRfdW5hbGlnbmVkX2xlMTYoJnNjZF9kZXYtPmxlbl95KTsK KysKKysJaWYgKHNjZC0+bWF4X3RjaCA9PSAwKSB7CisrCQlkZXZfZGJnKHRzLT5kZXYsICJNYXgg dG91Y2ggcG9pbnRzIGNhbm5vdCBiZSB6ZXJvXG4iKTsKKysJCXNjZC0+bWF4X3RjaCA9IDI7Cisr CX0KKysKKysJaWYoZGV2aWNlX3Byb3BlcnR5X3JlYWRfdTMyKHRzLT5kZXYsICJ0b3VjaHNjcmVl bi1zaXplLXgiLCAmdG1wKSkKKysJCXNjZC0+cmVzX3ggPSBnZXRfdW5hbGlnbmVkX2xlMTYoJnNj ZF9kZXYtPnJlc194KTsKKysJZWxzZQorKwkJc2NkLT5yZXNfeCA9IHRtcDsKKysKKysJaWYgKHNj ZC0+cmVzX3ggPT0gMCkgeworKwkJZGV2X2Vycih0cy0+ZGV2LCAiQUJTX1ggY2Fubm90IGJlIHpl cm9cbiIpOworKwkJcmV0dXJuIC1FTk9EQVRBOworKwl9CisrCisrCWlmKGRldmljZV9wcm9wZXJ0 eV9yZWFkX3UzMih0cy0+ZGV2LCAidG91Y2hzY3JlZW4tc2l6ZS15IiwgJnRtcCkpCisrCQlzY2Qt PnJlc195ID0gZ2V0X3VuYWxpZ25lZF9sZTE2KCZzY2RfZGV2LT5yZXNfeSk7CisrCWVsc2UKKysJ CXNjZC0+cmVzX3kgPSB0bXA7CisrCisrCWlmIChzY2QtPnJlc195ID09IDApIHsKKysJCWRldl9l cnIodHMtPmRldiwgIkFCU19ZIGNhbm5vdCBiZSB6ZXJvXG4iKTsKKysJCXJldHVybiAtRU5PREFU QTsKKysJfQorKworKwlpZihkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIodHMtPmRldiwgInRvdWNo c2NyZWVuLW1heC1wcmVzc3VyZSIsICZ0bXApKQorKwkJc2NkLT5tYXhfeiA9IGdldF91bmFsaWdu ZWRfbGUxNigmc2NkX2Rldi0+bWF4X3opOworKwllbHNlCisrCQlzY2QtPm1heF96ID0gdG1wOwor KworKwlpZiAoc2NkLT5tYXhfeiA9PSAwKSB7CisrCQlkZXZfZXJyKHRzLT5kZXYsICJBQlNfUFJF U1NVUkUgY2Fubm90IGJlIHplcm9cbiIpOworKwkJcmV0dXJuIC1FTk9EQVRBOworKwl9CisrCisr CWlmKGRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMih0cy0+ZGV2LCAidG91Y2hzY3JlZW4teC1tbSIs ICZ0bXApKQorKwkJc2NkLT5sZW5feCA9IGdldF91bmFsaWduZWRfbGUxNigmc2NkX2Rldi0+bGVu X3gpOworKwllbHNlCisrCQlzY2QtPmxlbl94ID0gdG1wOworKworKwlpZiAoc2NkLT5sZW5feCA9 PSAwKSB7CisrCQlkZXZfZGJnKHRzLT5kZXYsICJUb3VjaHNjcmVlbiBzaXplIHggY2Fubm90IGJl IHplcm9cbiIpOworKwkJc2NkLT5sZW5feCA9IHNjZC0+cmVzX3ggKyAxOworKwl9CisrCisrCWlm KGRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMih0cy0+ZGV2LCAidG91Y2hzY3JlZW4teS1tbSIsICZ0 bXApKQorKwkJc2NkLT5sZW5feSA9IGdldF91bmFsaWduZWRfbGUxNigmc2NkX2Rldi0+bGVuX3kp OworKwllbHNlCisrCQlzY2QtPmxlbl95ID0gdG1wOworKworKwlpZiAoc2NkLT5sZW5feSA9PSAw KSB7CisrCQlkZXZfZGJnKHRzLT5kZXYsICJUb3VjaHNjcmVlbiBzaXplIHkgY2Fubm90IGJlIHpl cm9cbiIpOworKwkJc2NkLT5sZW5feSA9IHNjZC0+cmVzX3kgKyAxOworKwl9CisgCisgCXJldHVy biAwOworIH0KK0BAIC04NzcsNiArOTI4LDcgQEAgc3RhdGljIGludCBjeXR0c3A1X2kyY19wcm9i ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAorIAorIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2Zf ZGV2aWNlX2lkIGN5dHRzcDVfb2ZfbWF0Y2hbXSA9IHsKKyAJeyAuY29tcGF0aWJsZSA9ICJjeXBy ZXNzLHR0MjEwMDAiLCB9LAorKwl7IC5jb21wYXRpYmxlID0gImN5cHJlc3MsdG1hNDQ4IiwgfSwK KyAJeyB9CisgfTsKKyBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBjeXR0c3A1X29mX21hdGNoKTsK Ky0tIAorR2l0TGFiCisKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9wYXRjaGVzL2xpbnV4LWxp YnJlLWFybTY0LXJvY2tjaGlwLWFkZC1oZG1pLXNvdW5kLnBhdGNoIGIvZ251L3BhY2thZ2VzL3Bh dGNoZXMvbGludXgtbGlicmUtYXJtNjQtcm9ja2NoaXAtYWRkLWhkbWktc291bmQucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uODQ3OWMxZWUxMQotLS0gL2Rldi9u dWxsCisrKyBiL2dudS9wYWNrYWdlcy9wYXRjaGVzL2xpbnV4LWxpYnJlLWFybTY0LXJvY2tjaGlw LWFkZC1oZG1pLXNvdW5kLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gNDFiMjI0YjkyN2Jl NDFhY2IxOWIxYWY4NjkzOTRhNjJiYzY4NmI5MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy b206IERhbiBKb2hhbnNlbiA8c3RyaXRAbWFuamFyby5vcmc+CitEYXRlOiBGcmksIDEwIEp1biAy MDIyIDE2OjEzOjIzICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBhcm02NDogZHRzOiByb2Nr Y2hpcDogQWRkIEhETUkgc291bmQgbm9kZSB0byBRdWFydHo2NC1CCisKK1NpZ25lZC1vZmYtYnk6 IERhbiBKb2hhbnNlbiA8c3RyaXRAbWFuamFyby5vcmc+CistLS0KKyBhcmNoL2FybTY0L2Jvb3Qv ZHRzL3JvY2tjaGlwL3JrMzU2Ni1xdWFydHo2NC1iLmR0cyB8IDggKysrKysrKysKKyAxIGZpbGUg Y2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3Qv ZHRzL3JvY2tjaGlwL3JrMzU2Ni1xdWFydHo2NC1iLmR0cyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMv cm9ja2NoaXAvcmszNTY2LXF1YXJ0ejY0LWIuZHRzCitpbmRleCA4ZDA1ZDhhNDQ2OTkuLmY3YTcw NDcwYTkwZSAxMDA2NDQKKy0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcm9ja2NoaXAvcmszNTY2 LXF1YXJ0ejY0LWIuZHRzCisrKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3JvY2tjaGlwL3JrMzU2 Ni1xdWFydHo2NC1iLmR0cworQEAgLTIwMyw2ICsyMDMsMTAgQEAgaGRtaV9vdXRfY29uOiBlbmRw b2ludCB7CisgCX07CisgfTsKKyAKKysmaGRtaV9zb3VuZCB7CisrCXN0YXR1cyA9ICJva2F5IjsK Kyt9OworKworICZpMmMwIHsKKyAJc3RhdHVzID0gIm9rYXkiOworIAorQEAgLTQ3OCw2ICs0ODIs MTAgQEAgJmkyYzUgeworIAlzdGF0dXMgPSAiZGlzYWJsZWQiOworIH07CisgCisrJmkyczBfOGNo IHsKKysJc3RhdHVzID0gIm9rYXkiOworK307CisrCisgJm1kaW8xIHsKKyAJcmdtaWlfcGh5MTog ZXRoZXJuZXQtcGh5QDEgeworIAkJY29tcGF0aWJsZSA9ICJldGhlcm5ldC1waHktaWVlZTgwMi4z LWMyMiI7CistLSAKKzIuMzYuMQorCisKLS0gCjIuMzYuMQoK --b1_qPVRHYZdf1KbGW55q1iGrB6QbWsYuO5kogVUydE0--