From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A1970C43334 for ; Wed, 8 Jun 2022 19:42:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229539AbiFHTmW (ORCPT ); Wed, 8 Jun 2022 15:42:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38096 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229693AbiFHTmU (ORCPT ); Wed, 8 Jun 2022 15:42:20 -0400 Received: from mail-pj1-x1032.google.com (mail-pj1-x1032.google.com [IPv6:2607:f8b0:4864:20::1032]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 579DE2AF7 for ; Wed, 8 Jun 2022 12:42:19 -0700 (PDT) Received: by mail-pj1-x1032.google.com with SMTP id e9so8995281pju.5 for ; Wed, 08 Jun 2022 12:42:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:subject:from:to:cc:date:in-reply-to:references :content-transfer-encoding:user-agent:mime-version; bh=Wyf1FuSzefQAznnuFhKZHRRgC3cYTUZTWTeOH3BIMpo=; b=ctncTZwAfG0feWADl15/EJPnAVe1qwU3vQi5Jl5MROXZyd61Z6TgIlAzRwXE5AC8Op DNOUmBUaqja2/vnbbIVb+ObBmedw4EyYdVgpA+IdfSSi2bd/c24jsFVM/Pkv7oJYR+Q7 9lqjuitianWZzceRgqqE7y4f/sZABVjTZ/7L9OYxCtnIEoIMTu/9PiqCm4KSaKVvaZv5 PZRTK16NgKDX9Coi7ruBLmp0EIW+ShMj0oKsmWFfbgICivB8gjpR9biubFnt9SnVH2yH 4wx0v0ezsRrfZ25wg4J+3Yf6sVzaloA/wpLfx3RqOqXIL9cFzRPmnscKFeVLP00cmAM1 dTPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:content-transfer-encoding:user-agent:mime-version; bh=Wyf1FuSzefQAznnuFhKZHRRgC3cYTUZTWTeOH3BIMpo=; b=BNmXdM72lX/0gghUwh5mxXnkElnQ5PuBYtOBXPVPlbSZZ9SpqwW2BjYfBnYT955FDY PBQwCQY4oG3jDA3Or5X953sXNY8Ix9IbkHZCy4MGIO52vE4WYmrXss8twJ4FtaSGcZl9 Jn7hKwqmHtGMkrbJG5YIgngjblCKiGlS9mpNri9sJADyjGm4OAPooVXVUut1/kw5YzZi qf5BmD/hiw8JXbu5h1Q2dCUSf7K+IgsE2Ra4Yk+NbquGxlaPaU5ZxxuatgC5l0//GA2G /4fJmn0tW5dCYGjItQQEHd8BauC+KF1Ph0rNX4wQkpapPVLMgSO+buNNmofdRuZBaOOg yAYw== X-Gm-Message-State: AOAM533VpdwPdwbO+NCoOSoStiWkuj3AhLsxckWQSoGMyrlxnX7AgAu3 3wDQUVOTV3Q4mwqgv27Bymg= X-Google-Smtp-Source: ABdhPJyq0MCpplXK/w0OXVmQXr2zPL3wC38B/956qfdpYrLWgCtovz1UhLNxmWZ4K33UkH/Apux1Hw== X-Received: by 2002:a17:903:11d2:b0:167:8a0f:8d33 with SMTP id q18-20020a17090311d200b001678a0f8d33mr13286341plh.95.1654717338786; Wed, 08 Jun 2022 12:42:18 -0700 (PDT) Received: from ?IPv6:2405:201:a007:e183:aa6d:fbda:3c70:a6e9? ([2405:201:a007:e183:aa6d:fbda:3c70:a6e9]) by smtp.gmail.com with ESMTPSA id a2-20020a170902710200b0016141e6c5acsm15278280pll.296.2022.06.08.12.41.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jun 2022 12:42:18 -0700 (PDT) Message-ID: Subject: Re: [RFC] platform/x86: hp-wmi: make hp_wmi_perform_query() work with certain devices From: Bedant Patnaik To: Jorge Lopez Cc: Hans de Goede , Andy Shevchenko , "markgross@kernel.org" , "platform-driver-x86@vger.kernel.org" Date: Thu, 09 Jun 2022 01:11:24 +0530 In-Reply-To: <41be46743d21c78741232a47bbb5f1cdbcc3d21e.camel@gmail.com> References: <20220607132428.7221-1-bedant.patnaik@gmail.com> <094f73b7-f618-aa12-762b-3b1a1f4556d2@redhat.com> <41be46743d21c78741232a47bbb5f1cdbcc3d21e.camel@gmail.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.44.2 (3.44.2-1.fc36) MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: platform-driver-x86@vger.kernel.org R3JlZXRpbmdzIEhhbnMsIEpvcmdlLAoKSSBoYXZlIHNlbnQgdGhlIHplcm9faWZfc3VwcCgpIHBh dGNoIHRoYXQgY2FuIGJlIGFwcGxpZWQgb3ZlciBKb3JnZSdzIGJ1ZmZlciBzaXplIHBhdGNoIGlu IHRoZSBtYWlsIHRoYXQgSSdtIHJlcGx5aW5nIHRvLgpUaGlzICpzaG91bGQqIGJlIGVub3VnaCBh cyB0aGUgZmluYWwgcGF0Y2guIFBsZWFzZSBsZXQgbWUga25vdyBpZiBhbnl0aGluZyBuZWVkcyB0 byBiZSByZWN0aWZpZWQuCgpBbGwgeW91ciBpbnB1dCBpcyB3ZWxjb21lLgoKVGhhbmsgeW91LgoK T24gVGh1LCAyMDIyLTA2LTA5IGF0IDAwOjU4ICswNTMwLCBCZWRhbnQgUGF0bmFpayB3cm90ZToK PiBGcm9tIDI2Zjg0ZDgzNTgxOWZhMzg4NzJjNjczZjQ5ZjFiNzc3NzQ5Mjc1NjggTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCj4gRnJvbTogQmVkYW50IFBhdG5haWsgPGJlZGFudC5wYXRuYWlrQGdt YWlsLmNvbT4KPiBEYXRlOiBUaHUsIDkgSnVuIDIwMjIgMDA6NTA6NTMgKzA1MzAKPiBTdWJqZWN0 OiBbUEFUQ0hdIFVzZSB6ZXJvIGluc2l6ZSBwYXJhbWV0ZXIgb25seSB3aGVuIHN1cHBvcnRlZAo+ IAo+IGJlOWQ3M2U2NDk1N2JiZDMxZWU5YTBkMTFhZGMwZjcyMDk3NGM1NTggKCJwbGF0Zm9ybS94 ODY6IGhwLXdtaTogRml4IDB4MDUgZXJyb3IgY29kZSByZXBvcnRlZCBieSBzZXZlcmFsIFdNSSBj YWxscyIpCj4gYW5kIDEyYjE5ZjE0YTIxYTJlZTYzNDg4MjVkOTViNjQyZWYyY2QxNjc5NGYgKCJw bGF0Zm9ybS94ODY6IGhwLXdtaTogRml4IGhwX3dtaV9yZWFkX2ludCgpIHJlcG9ydGluZyBlcnJv ciAoMHgwNSkiKQo+IGNhdXNlIEFDUEkgQklPUyBFcnJvciAoYnVnKTogQXR0ZW1wdCB0byBDcmVh dGVGaWVsZCBvZiBsZW5ndGggemVybyAoMjAyMTEyMTcvZHNvcGNvZGUtMTMzKSBiZWNhdXNlIG9m IHRoZSBBQ1BJCj4gbWV0aG9kIEhXTUMsIHdoaWNoIHVuY29uZGl0aW9uYWxseSBjcmVhdGVzIGEg RmllbGQgb2Ygc2l6ZSAoaW5zaXplKjgpIGJpdHM6Cj4gwqDCoMKgwqDCoMKgwqDCoENyZWF0ZUZp ZWxkIChBcmcxLCAweDgwLCAoTG9jYWw1ICogMHgwOCksIERBSU4pCj4gSW4gY2FzZXMgd2hlcmUg YXJncy0+aW5zaXplID0gMCwgdGhlIEZpZWxkIHNpemUgaXMgMCwgcmVzdWx0aW5nIGluIGFuIGVy cm9yLgo+IEZpeDogdXNlIHplcm8gaW5zaXplIG9ubHkgaWYgMHg1IGVycm9yIGNvZGUgaXMgcmV0 dXJuZWQKPiAKPiBUZXN0ZWQgb24gT21lbiAxNSBBTUQgKDIwMjApIGJvYXJkIElEOiA4Nzg2Lgo+ IAo+IFNpZ25lZC1vZmYtYnk6IEJlZGFudCBQYXRuYWlrIDxiZWRhbnQucGF0bmFpa0BnbWFpbC5j b20+Cj4gLS0tCj4gwqBkcml2ZXJzL3BsYXRmb3JtL3g4Ni9ocC13bWkuYyB8IDIzICsrKysrKysr KysrKysrKy0tLS0tLS0tCj4gwqAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgOCBk ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wbGF0Zm9ybS94ODYvaHAtd21p LmMgYi9kcml2ZXJzL3BsYXRmb3JtL3g4Ni9ocC13bWkuYwo+IGluZGV4IDI3NzM5N2RlNS4uMGUw NzU4MWI4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcGxhdGZvcm0veDg2L2hwLXdtaS5jCj4gKysr IGIvZHJpdmVycy9wbGF0Zm9ybS94ODYvaHAtd21pLmMKPiBAQCAtMzgsNiArMzgsNyBAQCBNT0RV TEVfQUxJQVMoIndtaTo1RkI3RjAzNC0yQzYzLTQ1ZTktQkU5MS0zRDQ0RTJDNzA3RTQiKTsKPiDC oCNkZWZpbmUgSFBXTUlfRVZFTlRfR1VJRCAiOTVGMjQyNzktNEQ3Qi00MzM0LTkzODctQUNDREM2 N0VGNjFDIgo+IMKgI2RlZmluZSBIUFdNSV9CSU9TX0dVSUQgIjVGQjdGMDM0LTJDNjMtNDVlOS1C RTkxLTNENDRFMkM3MDdFNCIKPiDCoCNkZWZpbmUgSFBfT01FTl9FQ19USEVSTUFMX1BST0ZJTEVf T0ZGU0VUIDB4OTUKPiArI2RlZmluZSB6ZXJvX2lmX3N1cCh0bXApICh6ZXJvX2luc2l6ZV9zdXBw b3J0PzA6c2l6ZW9mKHRtcCkpIC8vIHVzZSB3aGVuIHplcm8gaW5zaXplIGlzIHJlcXVpcmVkCj4g wqAKPiDCoC8qIERNSSBib2FyZCBuYW1lcyBvZiBkZXZpY2VzIHRoYXQgc2hvdWxkIHVzZSB0aGUg b21lbiBzcGVjaWZpYyBwYXRoIGZvcgo+IMKgICogdGhlcm1hbCBwcm9maWxlcy4KPiBAQCAtMjIw LDYgKzIyMSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaW5wdXRfZGV2ICpocF93bWlfaW5wdXRfZGV2Owo+ IMKgc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmhwX3dtaV9wbGF0Zm9ybV9kZXY7Cj4g wqBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX3Byb2ZpbGVfaGFuZGxlciBwbGF0Zm9ybV9wcm9maWxl X2hhbmRsZXI7Cj4gwqBzdGF0aWMgYm9vbCBwbGF0Zm9ybV9wcm9maWxlX3N1cHBvcnQ7Cj4gK3N0 YXRpYyBib29sIHplcm9faW5zaXplX3N1cHBvcnQ7Cj4gwqAKPiDCoHN0YXRpYyBzdHJ1Y3QgcmZr aWxsICp3aWZpX3Jma2lsbDsKPiDCoHN0YXRpYyBzdHJ1Y3QgcmZraWxsICpibHVldG9vdGhfcmZr aWxsOwo+IEBAIC0zNzYsNyArMzc4LDcgQEAgc3RhdGljIGludCBocF93bWlfcmVhZF9pbnQoaW50 IHF1ZXJ5KQo+IMKgwqDCoMKgwqDCoMKgwqBpbnQgdmFsID0gMCwgcmV0Owo+IMKgCj4gwqDCoMKg wqDCoMKgwqDCoHJldCA9IGhwX3dtaV9wZXJmb3JtX3F1ZXJ5KHF1ZXJ5LCBIUFdNSV9SRUFELCAm dmFsLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgMCwgc2l6ZW9mKHZhbCkpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgemVyb19pZl9z dXAodmFsKSwgc2l6ZW9mKHZhbCkpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0IDwgMCA/IHJldCA6IC1F SU5WQUw7Cj4gQEAgLTQxMiw3ICs0MTQsOCBAQCBzdGF0aWMgaW50IGhwX3dtaV9nZXRfdGFibGV0 X21vZGUodm9pZCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRU5P REVWOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHJldCA9IGhwX3dtaV9wZXJmb3JtX3F1ZXJ5KEhQ V01JX1NZU1RFTV9ERVZJQ0VfTU9ERSwgSFBXTUlfUkVBRCwKPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN5c3RlbV9k ZXZpY2VfbW9kZSwgMCwgc2l6ZW9mKHN5c3RlbV9kZXZpY2VfbW9kZSkpOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3lzdGVtX2RldmljZV9tb2RlLCB6ZXJvX2lmX3N1cChzeXN0ZW1fZGV2aWNlX21vZGUpLAo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc2l6ZW9mKHN5c3RlbV9kZXZpY2VfbW9kZSkpOwo+IMKgwqDCoMKgwqDCoMKgwqBp ZiAocmV0IDwgMCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7 Cj4gwqAKPiBAQCAtNDk5LDcgKzUwMiw3IEBAIHN0YXRpYyBpbnQgaHBfd21pX2Zhbl9zcGVlZF9t YXhfZ2V0KHZvaWQpCj4gwqDCoMKgwqDCoMKgwqDCoGludCB2YWwgPSAwLCByZXQ7Cj4gwqAKPiDC oMKgwqDCoMKgwqDCoMKgcmV0ID0gaHBfd21pX3BlcmZvcm1fcXVlcnkoSFBXTUlfRkFOX1NQRUVE X01BWF9HRVRfUVVFUlksIEhQV01JX0dNLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnZhbCwgMCwgc2l6ZW9mKHZh bCkpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgJnZhbCwgemVyb19pZl9zdXAodmFsKSwgc2l6ZW9mKHZhbCkpOwo+ IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gcmV0IDwgMCA/IHJldCA6IC1FSU5WQUw7Cj4gQEAgLTUxMSw3ICs1MTQs NyBAQCBzdGF0aWMgaW50IF9faW5pdCBocF93bWlfYmlvc18yMDA4X2xhdGVyKHZvaWQpCj4gwqB7 Cj4gwqDCoMKgwqDCoMKgwqDCoGludCBzdGF0ZSA9IDA7Cj4gwqDCoMKgwqDCoMKgwqDCoGludCBy ZXQgPSBocF93bWlfcGVyZm9ybV9xdWVyeShIUFdNSV9GRUFUVVJFX1FVRVJZLCBIUFdNSV9SRUFE LCAmc3RhdGUsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDAsIHNpemVvZihzdGF0ZSkpOwo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB6ZXJvX2lmX3N1cChzdGF0ZSksIHNpemVvZihzdGF0ZSkpOwo+IMKgwqDC oMKgwqDCoMKgwqBpZiAoIXJldCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJl dHVybiAxOwo+IMKgCj4gQEAgLTUyMiw3ICs1MjUsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBocF93 bWlfYmlvc18yMDA5X2xhdGVyKHZvaWQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHU4IHN0YXRl WzEyOF07Cj4gwqDCoMKgwqDCoMKgwqDCoGludCByZXQgPSBocF93bWlfcGVyZm9ybV9xdWVyeShI UFdNSV9GRUFUVVJFMl9RVUVSWSwgSFBXTUlfUkVBRCwgJnN0YXRlLAo+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAwLCBzaXplb2Yoc3RhdGUpKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgemVyb19pZl9zdXAo c3RhdGUpLCBzaXplb2Yoc3RhdGUpKTsKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCFyZXQpCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMTsKPiDCoAo+IEBAIC02MDAsNyAr NjAzLDcgQEAgc3RhdGljIGludCBocF93bWlfcmZraWxsMl9yZWZyZXNoKHZvaWQpCj4gwqDCoMKg wqDCoMKgwqDCoGludCBlcnIsIGk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgZXJyID0gaHBfd21p X3BlcmZvcm1fcXVlcnkoSFBXTUlfV0lSRUxFU1MyX1FVRVJZLCBIUFdNSV9SRUFELCAmc3RhdGUs Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAwLCBzaXplb2Yoc3RhdGUpKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHplcm9faWZfc3Vw KHN0YXRlKSwgc2l6ZW9mKHN0YXRlKSk7Cj4gwqDCoMKgwqDCoMKgwqDCoGlmIChlcnIpCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJyOwo+IMKgCj4gQEAgLTEwMDks NyArMTAxMiw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGhwX3dtaV9yZmtpbGwyX3NldHVwKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKmRldmljZSkKPiDCoMKgwqDCoMKgwqDCoMKgaW50IGVyciwgaTsK PiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBlcnIgPSBocF93bWlfcGVyZm9ybV9xdWVyeShIUFdNSV9X SVJFTEVTUzJfUVVFUlksIEhQV01JX1JFQUQsICZzdGF0ZSwKPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDAsIHNpemVv ZihzdGF0ZSkpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgemVyb19pZl9zdXAoc3RhdGUpLCBzaXplb2Yoc3RhdGUp KTsKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGVycikKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldHVybiBlcnIgPCAwID8gZXJyIDogLUVJTlZBTDsKPiDCoAo+IEBAIC0xNDg1LDEx ICsxNDg4LDE1IEBAIHN0YXRpYyBpbnQgX19pbml0IGhwX3dtaV9pbml0KHZvaWQpCj4gwqB7Cj4g wqDCoMKgwqDCoMKgwqDCoGludCBldmVudF9jYXBhYmxlID0gd21pX2hhc19ndWlkKEhQV01JX0VW RU5UX0dVSUQpOwo+IMKgwqDCoMKgwqDCoMKgwqBpbnQgYmlvc19jYXBhYmxlID0gd21pX2hhc19n dWlkKEhQV01JX0JJT1NfR1VJRCk7Cj4gLcKgwqDCoMKgwqDCoMKgaW50IGVycjsKPiArwqDCoMKg wqDCoMKgwqBpbnQgZXJyLCB0bXAgPSAwOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGlmICghYmlv c19jYXBhYmxlICYmICFldmVudF9jYXBhYmxlKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcmV0dXJuIC1FTk9ERVY7Cj4gwqAKPiArwqDCoMKgwqDCoMKgwqBpZiAoaHBfd21pX3Bl cmZvcm1fcXVlcnkoSFBXTUlfSEFSRFdBUkVfUVVFUlksIEhQV01JX1JFQUQsICZ0bXAsCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHNpemVvZih0bXApLCBzaXplb2YodG1wKSkgPT0gSFBXTUlfUkVUX0lOVkFMSURfUEFSQU1F VEVSUykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgemVyb19pbnNpemVfc3VwcG9y dCA9IHRydWU7Cj4gKwo+IMKgwqDCoMKgwqDCoMKgwqBpZiAoZXZlbnRfY2FwYWJsZSkgewo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJyID0gaHBfd21pX2lucHV0X3NldHVwKCk7 Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZXJyKQoK