From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2C3781DFF0 for ; Mon, 27 Oct 2025 10:08:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.51 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761559707; cv=none; b=MVQROUGDRGfxBy/lDkOTEFB8ox9q9fot2iklyvFRP67oion+sB+DcH9dJASRXfdHJq2o1VlaSgQNRp4xnzrFroXEiusx2juOvjI+HBFU1NFJyVIseJFBRWYEY+rF7F0DkEKbU6SDzZAZ9rJbL6+G/28VyBp6CLV1y5pUh5I2CPg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761559707; c=relaxed/simple; bh=j/2mQ1jRt1tFnleSZJqnP+vmt9hVwwqjikF0Kex3awI=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=GrL+1eyPdcqaWj9h1qRnQs3qCHYDTk+seQk8hRxqEIzWqiUSUjS0rVKUPF5FNLyjfxIiT2FjWR67+JniPy+5j21+ES0dq5tCoy0KBvx6aHxvcnMEMEZtqZtwaePgMxBUyTTbYWSRjc0T2IdIuQDn12AY5w7ob8gyZsSI4GvzLak= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ZbyBUkJz; arc=none smtp.client-ip=209.85.218.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZbyBUkJz" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-b3b3a6f4dd4so839776866b.0 for ; Mon, 27 Oct 2025 03:08:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1761559703; x=1762164503; darn=vger.kernel.org; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date:message-id:reply-to; bh=j/2mQ1jRt1tFnleSZJqnP+vmt9hVwwqjikF0Kex3awI=; b=ZbyBUkJzBHE4nAHEbtv69yKoEHeUlXCaYxBdaofaGdY7wabHzFgSc7tvKc8x01259x l3X37ent/3MvyFxfgx1JA3x+YPLH7QjiOaS8TXfg+iteIAdWAu1CTl+tsmNrFALP1XvC W73+2auvje2xDLXoV42CuQeDZeZOIpctudx4ESFg2zOzV0zCSAmX2nUsNF/SQdbu8jfO wZraA3GiRQP7yc+WWl2gVVkdRcB4PYFAIvCXNSbb3BMo3tcvTpbMn/gVa9bJKvbcKmzx 6+7AhaRm+Wj7Kux+11WTH3p56Zm+NxvN/P1JuUWhH/lKLsRJHvJ7FJIKKcha1LFDH+mu xcDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761559703; x=1762164503; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=j/2mQ1jRt1tFnleSZJqnP+vmt9hVwwqjikF0Kex3awI=; b=t3zq4MXchoYIXkPDiMMNghsx/VsUhSYX6NrMt65oQOllltvUvcY4JxMU5W563P9hw5 DkjK01+PzaDiKMPpNoV0mJngBOI8tuDIUYP9c7oSas1yv2TpPCj2nsoN4sKT2XYcsgLt 3/fxzzFHRv8whfAZu4L4HxoDzfi31RQ72Ei5HaeL96gtRH/WXKNUIAi/SSqBjfllEVy4 rFq8x6IU5xkm5s8NiUordaQERO9uSXNfcRKUjHwvvjvDRlFn5qq/qZ5pgn/fVAQL/OVo zhIK8I2DKW3i4K5cmSFD9z7omT4kuzg0BMd5RxfMr4q/zHdamrNvy2twrt4d6EXs7Svk Pj0Q== X-Forwarded-Encrypted: i=1; AJvYcCWbdw/1jUeIvYOtUZrK7SDYstq6pHuzIaZEkLQnjWqDLtrBKcX5T7tDmpxOrA5PTe9qk1TLKDtKQuO2@vger.kernel.org X-Gm-Message-State: AOJu0Yy3qsNXQpiBQESIFFKmXzFoFa4DscjgeFlz1DpbnAmsWl2fKTZq peSKqXhF/qvc4602bG7Di1iigwFzr+Fe4gstHX+j0YnFQrQva6zecPfN X-Gm-Gg: ASbGnctVw0sHR4uCVyjghP0p3B+vB29vPtqixuf4IFtCKOoHixZhEKe8dKVMBRNe6wf jUoEURKSK1zS78QiXeelBVcbS/YCsnLvvyvXyl3+C88T5occFn04qctWg8PtYBnC0oM9csrJU3h D4ujMLXyQ1Gbg6LnxIlATRUSThtjJqsaWz5rXu6MdMzGD03D7z1yoDj4o80jsj7FThVChR2oi5p VWBln40BVMgejbYbGfnIZ05cIKpfCJEW9CCZYHDy2d7GZ761w9uDL1EOT5bhLj7cYeIyp4bDN0k leAWmej2nOkUIKRH+MMWKKrIQ//tRcS2YLNBkmz8dY0+jPfy1Wdr/NK1+MYzAnI0cMBPmHjY1cV UuCyn2Vgu2zDAQfxSeyiyG8QVIVulpRFSeHZMppNXDhgo6avOWxnWWH0EHWtdCuIwFkhKdZhKJ3 QxAb0B/8hjLRNyFw== X-Google-Smtp-Source: AGHT+IF1qdeO0qovRnYDfnOQp9CioKQSNTxCRIBAMGkLHtNm/bbU6elEVtpwM0ngFHo0y00R/zuL6Q== X-Received: by 2002:a17:907:3f94:b0:afe:7b8c:a583 with SMTP id a640c23a62f3a-b6d6fe01940mr1141830166b.13.1761559703171; Mon, 27 Oct 2025 03:08:23 -0700 (PDT) Received: from [10.176.235.211] ([137.201.254.43]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b6d85398463sm701732266b.34.2025.10.27.03.08.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Oct 2025 03:08:22 -0700 (PDT) Message-ID: <3faec3c28d82b60efaa77592632c973ed39401a5.camel@gmail.com> Subject: Re: [PATCH v6 3/3] scsi: ufs: core: Add OP-TEE based RPMB driver for UFS devices From: Bean Huo To: kernel test robot , avri.altman@wdc.com, avri.altman@sandisk.com, bvanassche@acm.org, alim.akhtar@samsung.com, jejb@linux.ibm.com, martin.petersen@oracle.com, can.guo@oss.qualcomm.com, ulf.hansson@linaro.org, beanhuo@micron.com, jens.wiklander@linaro.org Cc: oe-kbuild-all@lists.linux.dev, linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Date: Mon, 27 Oct 2025 11:08:21 +0100 In-Reply-To: <202510271043.ptLcyAfD-lkp@intel.com> References: <20251026212506.4136610-4-beanhuo@iokpp.de> <202510271043.ptLcyAfD-lkp@intel.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.44.4-0ubuntu2 Precedence: bulk X-Mailing-List: linux-scsi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 aGFsbG8sIAoKRGVwZW5kZW5jeSBwYXRjaCBoYXMgYmVlbiBtZXJnZWQgaW50bzoKCmh0dHBzOi8v Z2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4Lmdp dC9jb21taXQvP2lkPTdlODI0MjQwNWI5NGNlYWM2ZGI4MjBkZTdkNGZkOTMxOGNiYzEyMTksCgoK CktpbmQgcmVnYXJkcywgCkJlYW4KCgpPbiBNb24sIDIwMjUtMTAtMjcgYXQgMTE6MjcgKzA4MDAs IGtlcm5lbCB0ZXN0IHJvYm90IHdyb3RlOgo+IEhpIEJlYW4sCj4gCj4ga2VybmVsIHRlc3Qgcm9i b3Qgbm90aWNlZCB0aGUgZm9sbG93aW5nIGJ1aWxkIGVycm9yczoKPiAKPiBbYXV0byBidWlsZCB0 ZXN0IEVSUk9SIG9uIGplamItc2NzaS9mb3ItbmV4dF0KPiBbYWxzbyBidWlsZCB0ZXN0IEVSUk9S IG9uIGNoYXItbWlzYy9jaGFyLW1pc2MtdGVzdGluZyBjaGFyLW1pc2MvY2hhci1taXNjLW5leHQK PiBjaGFyLW1pc2MvY2hhci1taXNjLWxpbnVzIGxpbnVzL21hc3RlciB2Ni4xOC1yYzNdCj4gW2Nh bm5vdCBhcHBseSB0byBta3Atc2NzaS9mb3ItbmV4dCBuZXh0LTIwMjUxMDI0XQo+IFtJZiB5b3Vy IHBhdGNoIGlzIGFwcGxpZWQgdG8gdGhlIHdyb25nIGdpdCB0cmVlLCBraW5kbHkgZHJvcCB1cyBh IG5vdGUuCj4gQW5kIHdoZW4gc3VibWl0dGluZyBwYXRjaCwgd2Ugc3VnZ2VzdCB0byB1c2UgJy0t YmFzZScgYXMgZG9jdW1lbnRlZCBpbgo+IGh0dHBzOi8vZ2l0LXNjbS5jb20vZG9jcy9naXQtZm9y bWF0LXBhdGNoI19iYXNlX3RyZWVfaW5mb3JtYXRpb25dCj4gCj4gdXJsOsKgwqDCoAo+IGh0dHBz Oi8vZ2l0aHViLmNvbS9pbnRlbC1sYWItbGtwL2xpbnV4L2NvbW1pdHMvQmVhbi1IdW8vc2NzaS11 ZnMtY29yZS1Db252ZXJ0LXN0cmluZy1kZXNjcmlwdG9yLWZvcm1hdC1tYWNyb3MtdG8tZW51bS8y MDI1MTAyNy0wNTMzMzkKPiBiYXNlOsKgwqAgaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2Nt L2xpbnV4L2tlcm5lbC9naXQvamVqYi9zY3NpLmdpdMKgZm9yLW5leHQKPiBwYXRjaCBsaW5rOsKg wqDCoAo+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3IvMjAyNTEwMjYyMTI1MDYuNDEzNjYxMC00 LWJlYW5odW8lNDBpb2twcC5kZQo+IHBhdGNoIHN1YmplY3Q6IFtQQVRDSCB2NiAzLzNdIHNjc2k6 IHVmczogY29yZTogQWRkIE9QLVRFRSBiYXNlZCBSUE1CIGRyaXZlcgo+IGZvciBVRlMgZGV2aWNl cwo+IGNvbmZpZzogeDg2XzY0LWJ1aWxkb25seS1yYW5kY29uZmlnLTAwMS0yMDI1MTAyNwo+ICho dHRwczovL2Rvd25sb2FkLjAxLm9yZy8wZGF5LWNpL2FyY2hpdmUvMjAyNTEwMjcvMjAyNTEwMjcx MDQzLnB0TGN5QWZELWxrcEBpbgo+IHRlbC5jb20vY29uZmlnKQo+IGNvbXBpbGVyOiBnY2MtMTQg KERlYmlhbiAxNC4yLjAtMTkpIDE0LjIuMAo+IHJlcHJvZHVjZSAodGhpcyBpcyBhIFc9MSBidWls ZCk6Cj4gKGh0dHBzOi8vZG93bmxvYWQuMDEub3JnLzBkYXktY2kvYXJjaGl2ZS8yMDI1MTAyNy8y MDI1MTAyNzEwNDMucHRMY3lBZkQtbGtwQGluCj4gdGVsLmNvbS9yZXByb2R1Y2UpCj4gCj4gSWYg eW91IGZpeCB0aGUgaXNzdWUgaW4gYSBzZXBhcmF0ZSBwYXRjaC9jb21taXQgKGkuZS4gbm90IGp1 c3QgYSBuZXcgdmVyc2lvbgo+IG9mCj4gdGhlIHNhbWUgcGF0Y2gvY29tbWl0KSwga2luZGx5IGFk ZCBmb2xsb3dpbmcgdGFncwo+ID4gUmVwb3J0ZWQtYnk6IGtlcm5lbCB0ZXN0IHJvYm90IDxsa3BA aW50ZWwuY29tPgo+ID4gQ2xvc2VzOgo+ID4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvb2Uta2J1 aWxkLWFsbC8yMDI1MTAyNzEwNDMucHRMY3lBZkQtbGtwQGludGVsLmNvbS8KPiAKPiBBbGwgZXJy b3JzIChuZXcgb25lcyBwcmVmaXhlZCBieSA+Pik6Cj4gCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZnJvbSBpbmNsdWRlL2FzbS1nZW5lcmljL3Fyd2xvY2tfdHlwZXMu aDo2LAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZyb20gYXJjaC94 ODYvaW5jbHVkZS9hc20vc3BpbmxvY2tfdHlwZXMuaDo3LAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGZyb20gaW5jbHVkZS9saW51eC9zcGlubG9ja190eXBlc19yYXcu aDo3LAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZyb20gaW5jbHVk ZS9saW51eC9yYXRlbGltaXRfdHlwZXMuaDo3LAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGZyb20gaW5jbHVkZS9saW51eC9wcmludGsuaDo5LAo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZyb20gaW5jbHVkZS9hc20tZ2VuZXJpYy9idWcu aDoyMiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmcm9tIGFyY2gv eDg2L2luY2x1ZGUvYXNtL2J1Zy5oOjEwOCwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBmcm9tIGFyY2gveDg2L2luY2x1ZGUvYXNtL2FsdGVybmF0aXZlLmg6OSwKPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmcm9tIGFyY2gveDg2L2luY2x1 ZGUvYXNtL2JhcnJpZXIuaDo1LAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGZyb20gaW5jbHVkZS9saW51eC9saXN0Lmg6MTEsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZnJvbSBpbmNsdWRlL2xpbnV4L21vZHVsZS5oOjEyLAo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZyb20gZHJpdmVycy91ZnMvY29yZS91 ZnMtcnBtYi5jOjEzOgo+IMKgwqAgZHJpdmVycy91ZnMvY29yZS91ZnMtcnBtYi5jOiBJbiBmdW5j dGlvbiAndWZzX3JwbWJfcm91dGVfZnJhbWVzJzoKPiDCoMKgIGRyaXZlcnMvdWZzL2NvcmUvdWZz LXJwbWIuYzo3MjozOTogZXJyb3I6IGludmFsaWQgdXNlIG9mIHVuZGVmaW5lZCB0eXBlCj4gJ3N0 cnVjdCBycG1iX2ZyYW1lJwo+IMKgwqDCoMKgwqAgNzIgfMKgwqDCoMKgwqDCoMKgwqAgcmVxX3R5 cGUgPSBiZTE2X3RvX2NwdShmcm1fb3V0LT5yZXFfcmVzcCk7Cj4gwqDCoMKgwqDCoMKgwqDCoCB8 wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBefgo+IMKgwqAgaW5jbHVkZS91YXBpL2xpbnV4L3N3YWIuaDox MDI6NTQ6IG5vdGU6IGluIGRlZmluaXRpb24gb2YgbWFjcm8gJ19fc3dhYjE2Jwo+IMKgwqDCoMKg IDEwMiB8ICNkZWZpbmUgX19zd2FiMTYoeCkgKF9fdTE2KV9fYnVpbHRpbl9ic3dhcDE2KChfX3Ux NikoeCkpCj4gwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBeCj4gwqDCoCBpbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9nZW5l cmljLmg6OTc6MjE6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybwo+ICdfX2JlMTZfdG9fY3B1 Jwo+IMKgwqDCoMKgwqAgOTcgfCAjZGVmaW5lIGJlMTZfdG9fY3B1IF9fYmUxNl90b19jcHUKPiDC oMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IF5+fn5+fn5+fn5+fn4KPiDCoMKgIGRyaXZlcnMvdWZzL2NvcmUvdWZzLXJwbWIuYzo3MjoyMDog bm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvCj4gJ2JlMTZfdG9fY3B1Jwo+IMKgwqDCoMKgwqAg NzIgfMKgwqDCoMKgwqDCoMKgwqAgcmVxX3R5cGUgPSBiZTE2X3RvX2NwdShmcm1fb3V0LT5yZXFf cmVzcCk7Cj4gwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgXn5+fn5+fn5+fn4KPiDCoMKgIGRyaXZlcnMvdWZzL2NvcmUvdWZzLXJwbWIuYzo3 NToxNDogZXJyb3I6ICdSUE1CX1BST0dSQU1fS0VZJyB1bmRlY2xhcmVkCj4gKGZpcnN0IHVzZSBp biB0aGlzIGZ1bmN0aW9uKQo+IMKgwqDCoMKgwqAgNzUgfMKgwqDCoMKgwqDCoMKgwqAgY2FzZSBS UE1CX1BST0dSQU1fS0VZOgo+IMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIF5+fn5+fn5+fn5+fn5+fn4KPiDCoMKgIGRyaXZlcnMvdWZzL2NvcmUvdWZzLXJwbWIu Yzo3NToxNDogbm90ZTogZWFjaCB1bmRlY2xhcmVkIGlkZW50aWZpZXIgaXMKPiByZXBvcnRlZCBv bmx5IG9uY2UgZm9yIGVhY2ggZnVuY3Rpb24gaXQgYXBwZWFycyBpbgo+IMKgwqAgZHJpdmVycy91 ZnMvY29yZS91ZnMtcnBtYi5jOjc2OjM5OiBlcnJvcjogaW52YWxpZCBhcHBsaWNhdGlvbiBvZiAn c2l6ZW9mJwo+IHRvIGluY29tcGxldGUgdHlwZSAnc3RydWN0IHJwbWJfZnJhbWUnCj4gwqDCoMKg wqDCoCA3NiB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJlcV9sZW4gIT0g c2l6ZW9mKHN0cnVjdCBycG1iX2ZyYW1lKSB8fAo+IHJlc3BfbGVuICE9IHNpemVvZihzdHJ1Y3Qg cnBtYl9mcmFtZSkpCj4gwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBefn5+ fn4KPiDCoMKgIGRyaXZlcnMvdWZzL2NvcmUvdWZzLXJwbWIuYzo3Njo4MDogZXJyb3I6IGludmFs aWQgYXBwbGljYXRpb24gb2YgJ3NpemVvZicKPiB0byBpbmNvbXBsZXRlIHR5cGUgJ3N0cnVjdCBy cG1iX2ZyYW1lJwo+IMKgwqDCoMKgwqAgNzYgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlmIChyZXFfbGVuICE9IHNpemVvZihzdHJ1Y3QgcnBtYl9mcmFtZSkgfHwKPiByZXNwX2xl biAhPSBzaXplb2Yoc3RydWN0IHJwbWJfZnJhbWUpKQo+IMKgwqDCoMKgwqDCoMKgwqAKPiB8wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+IMKgwqAgXn5+fn5+Cj4gwqDC oCBkcml2ZXJzL3Vmcy9jb3JlL3Vmcy1ycG1iLmM6Nzk6MTQ6IGVycm9yOiAnUlBNQl9HRVRfV1JJ VEVfQ09VTlRFUicKPiB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKPiDC oMKgwqDCoMKgIDc5IHzCoMKgwqDCoMKgwqDCoMKgIGNhc2UgUlBNQl9HRVRfV1JJVEVfQ09VTlRF UjoKPiDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBefn5+fn5+ fn5+fn5+fn5+fn5+fn5+Cj4gwqDCoCBkcml2ZXJzL3Vmcy9jb3JlL3Vmcy1ycG1iLmM6ODA6Mzk6 IGVycm9yOiBpbnZhbGlkIGFwcGxpY2F0aW9uIG9mICdzaXplb2YnCj4gdG8gaW5jb21wbGV0ZSB0 eXBlICdzdHJ1Y3QgcnBtYl9mcmFtZScKPiDCoMKgwqDCoMKgIDgwIHzCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpZiAocmVxX2xlbiAhPSBzaXplb2Yoc3RydWN0IHJwbWJfZnJhbWUp IHx8Cj4gcmVzcF9sZW4gIT0gc2l6ZW9mKHN0cnVjdCBycG1iX2ZyYW1lKSkKPiDCoMKgwqDCoMKg wqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF5+fn5+fgo+IMKgwqAgZHJpdmVycy91ZnMvY29y ZS91ZnMtcnBtYi5jOjgwOjgwOiBlcnJvcjogaW52YWxpZCBhcHBsaWNhdGlvbiBvZiAnc2l6ZW9m Jwo+IHRvIGluY29tcGxldGUgdHlwZSAnc3RydWN0IHJwbWJfZnJhbWUnCj4gwqDCoMKgwqDCoCA4 MCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJlcV9sZW4gIT0gc2l6ZW9m KHN0cnVjdCBycG1iX2ZyYW1lKSB8fAo+IHJlc3BfbGVuICE9IHNpemVvZihzdHJ1Y3QgcnBtYl9m cmFtZSkpCj4gwqDCoMKgwqDCoMKgwqDCoAo+IHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgCj4gwqDCoCBefn5+fn4KPiDCoMKgIGRyaXZlcnMvdWZzL2NvcmUvdWZzLXJw bWIuYzo4NDoxNDogZXJyb3I6ICdSUE1CX1dSSVRFX0RBVEEnIHVuZGVjbGFyZWQKPiAoZmlyc3Qg dXNlIGluIHRoaXMgZnVuY3Rpb24pCj4gwqDCoMKgwqDCoCA4NCB8wqDCoMKgwqDCoMKgwqDCoCBj YXNlIFJQTUJfV1JJVEVfREFUQToKPiDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBefn5+fn5+fn5+fn5+fn4KPiDCoMKgIGRyaXZlcnMvdWZzL2NvcmUvdWZzLXJw bWIuYzo4NTozODogZXJyb3I6IGludmFsaWQgYXBwbGljYXRpb24gb2YgJ3NpemVvZicKPiB0byBp bmNvbXBsZXRlIHR5cGUgJ3N0cnVjdCBycG1iX2ZyYW1lJwo+IMKgwqDCoMKgwqAgODUgfMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZXFfbGVuICUgc2l6ZW9mKHN0cnVjdCBy cG1iX2ZyYW1lKSB8fCByZXNwX2xlbgo+ICE9IHNpemVvZihzdHJ1Y3QgcnBtYl9mcmFtZSkpCj4g wqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXn5+fn5+Cj4gwqDCoCBkcml2ZXJz L3Vmcy9jb3JlL3Vmcy1ycG1iLmM6ODU6Nzk6IGVycm9yOiBpbnZhbGlkIGFwcGxpY2F0aW9uIG9m ICdzaXplb2YnCj4gdG8gaW5jb21wbGV0ZSB0eXBlICdzdHJ1Y3QgcnBtYl9mcmFtZScKPiDCoMKg wqDCoMKgIDg1IHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocmVxX2xlbiAl IHNpemVvZihzdHJ1Y3QgcnBtYl9mcmFtZSkgfHwgcmVzcF9sZW4KPiAhPSBzaXplb2Yoc3RydWN0 IHJwbWJfZnJhbWUpKQo+IMKgwqDCoMKgwqDCoMKgwqAKPiB8wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoAo+IMKgIF5+fn5+fgo+IMKgwqAgZHJpdmVycy91ZnMvY29yZS91 ZnMtcnBtYi5jOjg4OjE0OiBlcnJvcjogJ1JQTUJfUkVBRF9EQVRBJyB1bmRlY2xhcmVkCj4gKGZp cnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKTsgZGlkIHlvdSBtZWFuICdEX1JFQUxfREFUQSc/Cj4g wqDCoMKgwqDCoCA4OCB8wqDCoMKgwqDCoMKgwqDCoCBjYXNlIFJQTUJfUkVBRF9EQVRBOgo+IMKg wqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF5+fn5+fn5+fn5+fn5+ Cj4gwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRF9SRUFMX0RB VEEKPiDCoMKgIGRyaXZlcnMvdWZzL2NvcmUvdWZzLXJwbWIuYzo4OTozOTogZXJyb3I6IGludmFs aWQgYXBwbGljYXRpb24gb2YgJ3NpemVvZicKPiB0byBpbmNvbXBsZXRlIHR5cGUgJ3N0cnVjdCBy cG1iX2ZyYW1lJwo+IMKgwqDCoMKgwqAgODkgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlmIChyZXFfbGVuICE9IHNpemVvZihzdHJ1Y3QgcnBtYl9mcmFtZSkgfHwKPiByZXNwX2xl biAlIHNpemVvZihzdHJ1Y3QgcnBtYl9mcmFtZSkpCj4gwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBefn5+fn4KPiDCoMKgIGRyaXZlcnMvdWZzL2NvcmUvdWZzLXJwbWIuYzo4 OTo3OTogZXJyb3I6IGludmFsaWQgYXBwbGljYXRpb24gb2YgJ3NpemVvZicKPiB0byBpbmNvbXBs ZXRlIHR5cGUgJ3N0cnVjdCBycG1iX2ZyYW1lJwo+IMKgwqDCoMKgwqAgODkgfMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZXFfbGVuICE9IHNpemVvZihzdHJ1Y3QgcnBtYl9m cmFtZSkgfHwKPiByZXNwX2xlbiAlIHNpemVvZihzdHJ1Y3QgcnBtYl9mcmFtZSkpCj4gwqDCoMKg wqDCoMKgwqDCoAo+IHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4g wqAgXn5+fn5+Cj4gwqDCoCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gaW5jbHVkZS9saW51eC9zdHJp bmcuaDozODIsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZnJvbSBp bmNsdWRlL2xpbnV4L2JpdG1hcC5oOjEzLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGZyb20gaW5jbHVkZS9saW51eC9jcHVtYXNrLmg6MTIsCj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZnJvbSBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVt YXNrLmg6NSwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmcm9tIGFy Y2gveDg2L2luY2x1ZGUvYXNtL21zci5oOjExLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGZyb20gYXJjaC94ODYvaW5jbHVkZS9hc20vdHNjLmg6MTEsCj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZnJvbSBhcmNoL3g4Ni9pbmNsdWRlL2Fz bS90aW1leC5oOjYsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZnJv bSBpbmNsdWRlL2xpbnV4L3RpbWV4Lmg6NjcsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZnJvbSBpbmNsdWRlL2xpbnV4L3RpbWUzMi5oOjEzLAo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZyb20gaW5jbHVkZS9saW51eC90aW1lLmg6NjAs Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZnJvbSBpbmNsdWRlL2xp bnV4L3N0YXQuaDoxOSwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBm cm9tIGluY2x1ZGUvbGludXgvbW9kdWxlLmg6MTM6Cj4gwqDCoCBkcml2ZXJzL3Vmcy9jb3JlL3Vm cy1ycG1iLmM6MTA5OjQzOiBlcnJvcjogaW52YWxpZCBhcHBsaWNhdGlvbiBvZiAnc2l6ZW9mJwo+ IHRvIGluY29tcGxldGUgdHlwZSAnc3RydWN0IHJwbWJfZnJhbWUnCj4gwqDCoMKgwqAgMTA5IHzC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtZW1zZXQoZnJtX3Jlc3AsIDAsIHNpemVv ZigqZnJtX3Jlc3ApKTsKPiDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgXgo+IMKgwqAgaW5jbHVkZS9saW51eC9mb3J0aWZ5LXN0cmluZy5oOjUwMjo0Mjogbm90 ZTogaW4gZGVmaW5pdGlvbiBvZiBtYWNybwo+ICdfX2ZvcnRpZnlfbWVtc2V0X2NoaycKPiDCoMKg wqDCoCA1MDIgfMKgwqDCoMKgwqDCoMKgwqAgc2l6ZV90IF9fZm9ydGlmeV9zaXplID0KPiAoc2l6 ZV90KShzaXplKTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgXAo+IMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXn5+fgo+ IMKgwqAgZHJpdmVycy91ZnMvY29yZS91ZnMtcnBtYi5jOjEwOToxNzogbm90ZTogaW4gZXhwYW5z aW9uIG9mIG1hY3JvICdtZW1zZXQnCj4gwqDCoMKgwqAgMTA5IHzCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBtZW1zZXQoZnJtX3Jlc3AsIDAsIHNpemVvZigqZnJtX3Jlc3ApKTsKPiDC oMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBefn5+fn4K PiDCoMKgIGRyaXZlcnMvdWZzL2NvcmUvdWZzLXJwbWIuYzoxMTA6MjU6IGVycm9yOiBpbnZhbGlk IHVzZSBvZiB1bmRlZmluZWQgdHlwZQo+ICdzdHJ1Y3QgcnBtYl9mcmFtZScKPiDCoMKgwqDCoCAx MTAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZybV9yZXNwLT5yZXFfcmVzcCA9 IGNwdV90b19iZTE2KFJQTUJfUkVTVUxUX1JFQUQpOwo+IMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBefgo+IMKgwqAgZHJp dmVycy91ZnMvY29yZS91ZnMtcnBtYi5jOjExMDo1MDogZXJyb3I6ICdSUE1CX1JFU1VMVF9SRUFE JyB1bmRlY2xhcmVkCj4gKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQo+IMKgwqDCoMKgIDEx MCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZnJtX3Jlc3AtPnJlcV9yZXNwID0g Y3B1X3RvX2JlMTYoUlBNQl9SRVNVTFRfUkVBRCk7Cj4gwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXn5+fn5+fn5+fn5+fn5+fgo+IMKg wqAgaW5jbHVkZS91YXBpL2xpbnV4L3N3YWIuaDoxMDI6NTQ6IG5vdGU6IGluIGRlZmluaXRpb24g b2YgbWFjcm8gJ19fc3dhYjE2Jwo+IMKgwqDCoMKgIDEwMiB8ICNkZWZpbmUgX19zd2FiMTYoeCkg KF9fdTE2KV9fYnVpbHRpbl9ic3dhcDE2KChfX3UxNikoeCkpCj4gwqDCoMKgwqDCoMKgwqDCoCB8 wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBeCj4gwqDC oCBpbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9nZW5lcmljLmg6OTY6MjE6IG5vdGU6IGluIGV4cGFu c2lvbiBvZiBtYWNybwo+ICdfX2NwdV90b19iZTE2Jwo+IMKgwqDCoMKgwqAgOTYgfCAjZGVmaW5l IGNwdV90b19iZTE2IF9fY3B1X3RvX2JlMTYKPiDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF5+fn5+fn5+fn5+fn4KPiDCoMKgIGRyaXZl cnMvdWZzL2NvcmUvdWZzLXJwbWIuYzoxMTA6Mzg6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNy bwo+ICdjcHVfdG9fYmUxNicKPiDCoMKgwqDCoCAxMTAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGZybV9yZXNwLT5yZXFfcmVzcCA9IGNwdV90b19iZTE2KFJQTUJfUkVTVUxUX1JF QUQpOwo+IMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF5+fn5+fn5+fn5+Cj4g wqDCoCBkcml2ZXJzL3Vmcy9jb3JlL3Vmcy1ycG1iLmM6IEF0IHRvcCBsZXZlbDoKPiA+ID4gZHJp dmVycy91ZnMvY29yZS91ZnMtcnBtYi5jOjEzNTo1OiBlcnJvcjogcmVkZWZpbml0aW9uIG9mICd1 ZnNfcnBtYl9wcm9iZScKPiDCoMKgwqDCoCAxMzUgfCBpbnQgdWZzX3JwbWJfcHJvYmUoc3RydWN0 IHVmc19oYmEgKmhiYSkKPiDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoCBefn5+fn5+fn5+fn5+ fgo+IMKgwqAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGRyaXZlcnMvdWZzL2NvcmUvdWZzLXJwbWIu YzoyMjoKPiDCoMKgIGRyaXZlcnMvdWZzL2NvcmUvdWZzaGNkLXByaXYuaDo0MjQ6MTk6IG5vdGU6 IHByZXZpb3VzIGRlZmluaXRpb24gb2YKPiAndWZzX3JwbWJfcHJvYmUnIHdpdGggdHlwZSAnaW50 KHN0cnVjdCB1ZnNfaGJhICopJwo+IMKgwqDCoMKgIDQyNCB8IHN0YXRpYyBpbmxpbmUgaW50IHVm c19ycG1iX3Byb2JlKHN0cnVjdCB1ZnNfaGJhICpoYmEpCj4gwqDCoMKgwqDCoMKgwqDCoCB8wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF5+fn5+fn5+fn5+fn5+Cj4gPiA+IGRy aXZlcnMvdWZzL2NvcmUvdWZzLXJwbWIuYzoyMzQ6NjogZXJyb3I6IHJlZGVmaW5pdGlvbiBvZgo+ ID4gPiAndWZzX3JwbWJfcmVtb3ZlJwo+IMKgwqDCoMKgIDIzNCB8IHZvaWQgdWZzX3JwbWJfcmVt b3ZlKHN0cnVjdCB1ZnNfaGJhICpoYmEpCj4gwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoCBe fn5+fn5+fn5+fn5+fn4KPiDCoMKgIGRyaXZlcnMvdWZzL2NvcmUvdWZzaGNkLXByaXYuaDo0Mjg6 MjA6IG5vdGU6IHByZXZpb3VzIGRlZmluaXRpb24gb2YKPiAndWZzX3JwbWJfcmVtb3ZlJyB3aXRo IHR5cGUgJ3ZvaWQoc3RydWN0IHVmc19oYmEgKiknCj4gwqDCoMKgwqAgNDI4IHwgc3RhdGljIGlu bGluZSB2b2lkIHVmc19ycG1iX3JlbW92ZShzdHJ1Y3QgdWZzX2hiYSAqaGJhKQo+IMKgwqDCoMKg wqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF5+fn5+fn5+ fn5+fn5+fgo+IAo+IEtjb25maWcgd2FybmluZ3M6IChmb3IgcmVmZXJlbmNlIG9ubHkpCj4gwqDC oCBXQVJOSU5HOiB1bm1ldCBkaXJlY3QgZGVwZW5kZW5jaWVzIGRldGVjdGVkIGZvciBPRl9HUElP Cj4gwqDCoCBEZXBlbmRzIG9uIFtuXTogR1BJT0xJQiBbPXldICYmIE9GIFs9bl0gJiYgSEFTX0lP TUVNIFs9eV0KPiDCoMKgIFNlbGVjdGVkIGJ5IFt5XToKPiDCoMKgIC0gR1BJT19UQjEwWCBbPXld ICYmIEdQSU9MSUIgWz15XSAmJiBIQVNfSU9NRU0gWz15XSAmJiAoQVJDX1BMQVRfVEIxMFggfHwK PiBDT01QSUxFX1RFU1QgWz15XSkKPiDCoMKgIFdBUk5JTkc6IHVubWV0IGRpcmVjdCBkZXBlbmRl bmNpZXMgZGV0ZWN0ZWQgZm9yIEdQSU9fU1lTQ09OCj4gwqDCoCBEZXBlbmRzIG9uIFtuXTogR1BJ T0xJQiBbPXldICYmIEhBU19JT01FTSBbPXldICYmIE1GRF9TWVNDT04gWz15XSAmJiBPRgo+IFs9 bl0KPiDCoMKgIFNlbGVjdGVkIGJ5IFt5XToKPiDCoMKgIC0gR1BJT19TQU1BNUQyX1BJT0JVIFs9 eV0gJiYgR1BJT0xJQiBbPXldICYmIEhBU19JT01FTSBbPXldICYmIE1GRF9TWVNDT04KPiBbPXld ICYmIE9GX0dQSU8gWz15XSAmJiAoQVJDSF9BVDkxIHx8IENPTVBJTEVfVEVTVCBbPXldKQo+IMKg wqAgV0FSTklORzogdW5tZXQgZGlyZWN0IGRlcGVuZGVuY2llcyBkZXRlY3RlZCBmb3IgSTJDX0sx Cj4gwqDCoCBEZXBlbmRzIG9uIFtuXTogSTJDIFs9eV0gJiYgSEFTX0lPTUVNIFs9eV0gJiYgKEFS Q0hfU1BBQ0VNSVQgfHwKPiBDT01QSUxFX1RFU1QgWz15XSkgJiYgT0YgWz1uXQo+IMKgwqAgU2Vs ZWN0ZWQgYnkgW21dOgo+IMKgwqAgLSBNRkRfU1BBQ0VNSVRfUDEgWz1tXSAmJiBIQVNfSU9NRU0g Wz15XSAmJiAoQVJDSF9TUEFDRU1JVCB8fCBDT01QSUxFX1RFU1QKPiBbPXldKSAmJiBJMkMgWz15 XQo+IAo+IAo+IHZpbSArL3Vmc19ycG1iX3Byb2JlICsxMzUgZHJpdmVycy91ZnMvY29yZS91ZnMt cnBtYi5jCj4gCj4gwqDCoCAxMzPCoMKgCj4gwqDCoCAxMzTCoMKgLyogVUZTIFJQTUIgZGV2aWNl IHJlZ2lzdHJhdGlvbiAqLwo+IMKgPiAxMzXCoMKgaW50IHVmc19ycG1iX3Byb2JlKHN0cnVjdCB1 ZnNfaGJhICpoYmEpCj4gwqDCoCAxMzbCoMKgewo+IMKgwqAgMTM3wqDCoMKgwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgdWZzX3JwbWJfZGV2ICp1ZnNfcnBtYiwgKml0LCAqdG1wOwo+IMKgwqAgMTM4wqDC oMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcnBtYl9kZXYgKnJkZXY7Cj4gwqDCoCAxMznCoMKgwqDC oMKgwqDCoMKgwqDCoGNoYXIgKmNpZCA9IE5VTEw7Cj4gwqDCoCAxNDDCoMKgwqDCoMKgwqDCoMKg wqDCoGludCByZWdpb247Cj4gwqDCoCAxNDHCoMKgwqDCoMKgwqDCoMKgwqDCoHUzMiBjYXA7Cj4g wqDCoCAxNDLCoMKgwqDCoMKgwqDCoMKgwqDCoGludCByZXQ7Cj4gwqDCoCAxNDPCoMKgCj4gwqDC oCAxNDTCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghaGJhLT51ZnNfcnBtYl93bHVuIHx8IGhiYS0+ ZGV2X2luZm8uYl9hZHZhbmNlZF9ycG1iX2VuKSB7Cj4gwqDCoCAxNDXCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBkZXZfaW5mbyhoYmEtPmRldiwgIlNraXAgT1AtVEVFIFJQTUIg cmVnaXN0cmF0aW9uXG4iKTsKPiDCoMKgIDE0NsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldHVybiAtRU5PREVWOwo+IMKgwqAgMTQ3wqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4g wqDCoCAxNDjCoMKgCj4gwqDCoCAxNDnCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIENoZWNrIGlmIGRl dmljZV9pZCBpcyBhdmFpbGFibGUgKi8KPiDCoMKgIDE1MMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYg KCFoYmEtPmRldl9pbmZvLmRldmljZV9pZCkgewo+IMKgwqAgMTUxwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZGV2X2VycihoYmEtPmRldiwgIlVGUyBEZXZpY2UgSUQgbm90IGF2 YWlsYWJsZVxuIik7Cj4gwqDCoCAxNTLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gLUVJTlZBTDsKPiDCoMKgIDE1M8KgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgwqAg MTU0wqDCoAo+IMKgwqAgMTU1wqDCoMKgwqDCoMKgwqDCoMKgwqBJTklUX0xJU1RfSEVBRCgmaGJh LT5ycG1icyk7Cj4gwqDCoCAxNTbCoMKgCj4gwqDCoCAxNTfCoMKgwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCBycG1iX2Rlc2NyIGRlc2NyID0gewo+IMKgwqAgMTU4wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgLnR5cGUgPSBSUE1CX1RZUEVfVUZTLAo+IMKgwqAgMTU5wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLnJvdXRlX2ZyYW1lcyA9IHVmc19ycG1iX3JvdXRl X2ZyYW1lcywKPiDCoMKgIDE2MMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC5y ZWxpYWJsZV93cl9jb3VudCA9IGhiYS0+ZGV2X2luZm8ucnBtYl9pb19zaXplLAo+IMKgwqAgMTYx wqDCoMKgwqDCoMKgwqDCoMKgwqB9Owo+IMKgwqAgMTYywqDCoAo+IMKgwqAgMTYzwqDCoMKgwqDC oMKgwqDCoMKgwqBmb3IgKHJlZ2lvbiA9IDA7IHJlZ2lvbiA8IEFSUkFZX1NJWkUoaGJhLQo+ID5k ZXZfaW5mby5ycG1iX3JlZ2lvbl9zaXplKTsgcmVnaW9uKyspIHsKPiDCoMKgIDE2NMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhcCA9IGhiYS0+ZGV2X2luZm8ucnBtYl9yZWdp b25fc2l6ZVtyZWdpb25dOwo+IMKgwqAgMTY1wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKCFjYXApCj4gwqDCoCAxNjbCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7Cj4gwqDCoCAxNjfCoMKgCj4gwqDCoCAxNjjC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1ZnNfcnBtYiA9IGRldm1fa3phbGxv YyhoYmEtPmRldiwgc2l6ZW9mKCp1ZnNfcnBtYiksCj4gR0ZQX0tFUk5FTCk7Cj4gwqDCoCAxNjnC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIXVmc19ycG1iKSB7Cj4gwqDC oCAxNzDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cmV0ID0gLUVOT01FTTsKPiDCoMKgIDE3McKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIGVycl9vdXQ7Cj4gwqDCoCAxNzLCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqDCoCAxNzPCoMKgCj4gwqDCoCAxNzTCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1ZnNfcnBtYi0+aGJhID0gaGJhOwo+IMKgwqAg MTc1wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWZzX3JwbWItPmRldi5wYXJl bnQgPSAmaGJhLT51ZnNfcnBtYl93bHVuLQo+ID5zZGV2X2dlbmRldjsKPiDCoMKgIDE3NsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVmc19ycG1iLT5kZXYuYnVzID0gJnVmc19y cG1iX2J1c190eXBlOwo+IMKgwqAgMTc3wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgdWZzX3JwbWItPmRldi5yZWxlYXNlID0gdWZzX3JwbWJfZGV2aWNlX3JlbGVhc2U7Cj4gwqDC oCAxNzjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZXZfc2V0X25hbWUoJnVm c19ycG1iLT5kZXYsICJ1ZnNfcnBtYiVkIiwgcmVnaW9uKTsKPiDCoMKgIDE3OcKgwqAKPiDCoMKg IDE4MMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIFNldCBkcml2ZXIgZGF0 YSBCRUZPUkUgZGV2aWNlX3JlZ2lzdGVyICovCj4gwqDCoCAxODHCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBkZXZfc2V0X2RydmRhdGEoJnVmc19ycG1iLT5kZXYsIHVmc19ycG1i KTsKPiDCoMKgIDE4MsKgwqAKPiDCoMKgIDE4M8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldCA9IGRldmljZV9yZWdpc3RlcigmdWZzX3JwbWItPmRldik7Cj4gwqDCoCAxODTC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KSB7Cj4gwqDCoCAxODXC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2X2Vy cihoYmEtPmRldiwgIkZhaWxlZCB0byByZWdpc3RlciBVRlMgUlBNQgo+IGRldmljZSAlZFxuIiwg cmVnaW9uKTsKPiDCoMKgIDE4NsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBwdXRfZGV2aWNlKCZ1ZnNfcnBtYi0+ZGV2KTsKPiDCoMKgIDE4N8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIGVycl9v dXQ7Cj4gwqDCoCAxODjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqDC oCAxODnCoMKgCj4gwqDCoCAxOTDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAv KiBDcmVhdGUgdW5pcXVlIElEIGJ5IGFwcGVuZGluZyByZWdpb24gbnVtYmVyIHRvCj4gZGV2aWNl X2lkICovCj4gwqDCoCAxOTHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaWQg PSBrYXNwcmludGYoR0ZQX0tFUk5FTCwgIiVzLVIlZCIsIGhiYS0KPiA+ZGV2X2luZm8uZGV2aWNl X2lkLCByZWdpb24pOwo+IMKgwqAgMTkywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWYgKCFjaWQpIHsKPiDCoMKgIDE5M8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBkZXZpY2VfdW5yZWdpc3RlcigmdWZzX3JwbWItPmRldik7Cj4g wqDCoCAxOTTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgcmV0ID0gLUVOT01FTTsKPiDCoMKgIDE5NcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIGVycl9vdXQ7Cj4gwqDCoCAxOTbCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqDCoCAxOTfCoMKgCj4gwqDCoCAxOTjCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZXNjci5kZXZfaWQgPSBjaWQ7Cj4gwqDC oCAxOTnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZXNjci5kZXZfaWRfbGVu ID0gc3RybGVuKGNpZCk7Cj4gwqDCoCAyMDDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBkZXNjci5jYXBhY2l0eSA9IGNhcDsKPiDCoMKgIDIwMcKgwqAKPiDCoMKgIDIwMsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIFJlZ2lzdGVyIFJQTUIgZGV2aWNlICov Cj4gwqDCoCAyMDPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZGV2ID0gcnBt Yl9kZXZfcmVnaXN0ZXIoJnVmc19ycG1iLT5kZXYsICZkZXNjcik7Cj4gwqDCoCAyMDTCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoSVNfRVJSKHJkZXYpKSB7Cj4gwqDCoCAy MDXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2 X2VycihoYmEtPmRldiwgIkZhaWxlZCB0byByZWdpc3RlciBVRlMgUlBNQgo+IGRldmljZS5cbiIp Owo+IMKgwqAgMjA2wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGRldmljZV91bnJlZ2lzdGVyKCZ1ZnNfcnBtYi0+ZGV2KTsKPiDCoMKgIDIwN8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXQgPSBQVFJf RVJSKHJkZXYpOwo+IMKgwqAgMjA4wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGdvdG8gZXJyX291dDsKPiDCoMKgIDIwOcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoH0KPiDCoMKgIDIxMMKgwqAKPiDCoMKgIDIxMcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGtmcmVlKGNpZCk7Cj4gwqDCoCAyMTLCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjaWQgPSBOVUxMOwo+IMKgwqAgMjEzwqDCoAo+IMKg wqAgMjE0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWZzX3JwbWItPnJkZXYg PSByZGV2Owo+IMKgwqAgMjE1wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdWZz X3JwbWItPnJlZ2lvbl9pZCA9IHJlZ2lvbjsKPiDCoMKgIDIxNsKgwqAKPiDCoMKgIDIxN8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxpc3RfYWRkX3RhaWwoJnVmc19ycG1iLT5u b2RlLCAmaGJhLT5ycG1icyk7Cj4gwqDCoCAyMTjCoMKgCj4gwqDCoCAyMTnCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZXZfaW5mbyhoYmEtPmRldiwgIlVGUyBSUE1CIHJlZ2lv biAlZCByZWdpc3RlcmVkCj4gKGNhcGFjaXR5PSV1KVxuIiwgcmVnaW9uLCBjYXApOwo+IMKgwqAg MjIwwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqDCoCAyMjHCoMKgCj4gwqDCoCAyMjLCoMKgwqDC oMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgwqAgMjIzwqDCoGVycl9vdXQ6Cj4gwqDCoCAyMjTC oMKgwqDCoMKgwqDCoMKgwqDCoGtmcmVlKGNpZCk7Cj4gwqDCoCAyMjXCoMKgwqDCoMKgwqDCoMKg wqDCoGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShpdCwgdG1wLCAmaGJhLT5ycG1icywgbm9kZSkg ewo+IMKgwqAgMjI2wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGlzdF9kZWwo Jml0LT5ub2RlKTsKPiDCoMKgIDIyN8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGRldmljZV91bnJlZ2lzdGVyKCZpdC0+ZGV2KTsKPiDCoMKgIDIyOMKgwqDCoMKgwqDCoMKgwqDC oMKgfQo+IMKgwqAgMjI5wqDCoAo+IMKgwqAgMjMwwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4g cmV0Owo+IMKgwqAgMjMxwqDCoH0KPiDCoMKgIDIzMsKgwqAKPiDCoMKgIDIzM8KgwqAvKiBVRlMg UlBNQiByZW1vdmUgaGFuZGxlciAqLwo+IMKgPiAyMzTCoMKgdm9pZCB1ZnNfcnBtYl9yZW1vdmUo c3RydWN0IHVmc19oYmEgKmhiYSkKPiDCoMKgIDIzNcKgwqB7Cj4gwqDCoCAyMzbCoMKgwqDCoMKg wqDCoMKgwqDCoHN0cnVjdCB1ZnNfcnBtYl9kZXYgKnVmc19ycG1iLCAqdG1wOwo+IMKgwqAgMjM3 wqDCoAo+IMKgwqAgMjM4wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAobGlzdF9lbXB0eSgmaGJhLT5y cG1icykpCj4gwqDCoCAyMznCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1 cm47Cj4gwqDCoCAyNDDCoMKgCj4gwqDCoCAyNDHCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIFJlbW92 ZSBhbGwgcmVnaXN0ZXJlZCBSUE1CIGRldmljZXMgKi8KPiDCoMKgIDI0MsKgwqDCoMKgwqDCoMKg wqDCoMKgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHVmc19ycG1iLCB0bXAsICZoYmEtPnJwbWJz LCBub2RlKSB7Cj4gwqDCoCAyNDPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBk ZXZfaW5mbyhoYmEtPmRldiwgIlJlbW92aW5nIFVGUyBSUE1CIHJlZ2lvbiAlZFxuIiwKPiB1ZnNf cnBtYi0+cmVnaW9uX2lkKTsKPiDCoMKgIDI0NMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoC8qIFJlbW92ZSBmcm9tIGxpc3QgZmlyc3QgKi8KPiDCoMKgIDI0NcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxpc3RfZGVsKCZ1ZnNfcnBtYi0+bm9kZSk7Cj4gwqDC oCAyNDbCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBVbnJlZ2lzdGVyIGRl dmljZSAqLwo+IMKgwqAgMjQ3wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGV2 aWNlX3VucmVnaXN0ZXIoJnVmc19ycG1iLT5kZXYpOwo+IMKgwqAgMjQ4wqDCoMKgwqDCoMKgwqDC oMKgwqB9Cj4gwqDCoCAyNDnCoMKgCj4gwqDCoCAyNTDCoMKgwqDCoMKgwqDCoMKgwqDCoGRldl9p bmZvKGhiYS0+ZGV2LCAiQWxsIFVGUyBSUE1CIGRldmljZXMgdW5yZWdpc3RlcmVkXG4iKTsKPiDC oMKgIDI1McKgwqB9Cj4gwqDCoCAyNTLCoMKgCj4gCgo=