From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 06B961B87CF; Mon, 7 Apr 2025 22:28:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744064888; cv=none; b=eZz4xuSeM0cKtdenp0wb6naWx/RnWzsknlrca7IfFlMUR0VV8l3ctuZh4Xms1TwtSTmFUG/7o2UimM0PTUPu+gHVgKAYB8k2KPw3rgg4ElVqv7/bhaZ6c9At04Y1M97OXSEoAB7qH5uvo8US0RsWfW3/6rDHbb8IzVrULpTw7Pw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744064888; c=relaxed/simple; bh=6idXwPqbUKauYl+/ROVCk0OuBY2aHUha+iuVpPPXTws=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=a9rJHFvsY45nWAqJOmCcOGQnC0D4XGb3dNB99YyuCJcy6jGTIaE131yh8CpZKY3Fwr3biOqr9a39waZfTVzECkuk+wTFVxJD0mqBpLpTT32mK2R+oyOKOZjKq5R+RTeWqu/kopI+2N2gjt3y1SxdnUTO0p5PyQIW2CaJRc86j7o= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Bl0qO2eX; arc=none smtp.client-ip=192.198.163.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Bl0qO2eX" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1744064887; x=1775600887; h=message-id:subject:from:to:cc:date:in-reply-to: references:content-transfer-encoding:mime-version; bh=6idXwPqbUKauYl+/ROVCk0OuBY2aHUha+iuVpPPXTws=; b=Bl0qO2eXHHXEFtmmNp6CmVrlJLsbTZc3Md4hXK+wWrFxhGvrBZg3i7+0 rkEYOvg/tG2kZ34UJweqOxNB915bIGxHjKNtYhFdAA4hW6lG8NkBJL1aS R+gmgi3Ovs+xax/Hzl1zuuHhFfe3MOOhjZ6ieLwrl0W402QJICkSi8L3D wVMBi9xTWPo/nbUwyAxaf9QrXraLCYMRIpaem17WcjNGnu0kMWmNUzK7W +aAEXp71K+ec0xinFr472yqIwZ29/ZULKZPabliqBU3oLdUjApfMbyJR0 xenj16oZhUtNDcU2UAWFp7+qBoyh+heWzI6QQvJ94qDH4353Sen2V21IE Q==; X-CSE-ConnectionGUID: 14hEI+JpQEq0nEIGAf7lZg== X-CSE-MsgGUID: 9CbUmNA2SSuwwzx5oDBlRg== X-IronPort-AV: E=McAfee;i="6700,10204,11397"; a="44724873" X-IronPort-AV: E=Sophos;i="6.15,196,1739865600"; d="scan'208";a="44724873" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa112.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2025 15:28:06 -0700 X-CSE-ConnectionGUID: rZ+xuASHRsOPb1YYwHijnA== X-CSE-MsgGUID: 2ioR69SNQvCzcg5gUgU0qQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,196,1739865600"; d="scan'208";a="128611698" Received: from spandruv-desk1.amr.corp.intel.com ([10.125.111.59]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2025 15:28:06 -0700 Message-ID: <2362a42de1403e99a66551575efd910cc92980bc.camel@linux.intel.com> Subject: Re: [PATCH v1 10/10] cpufreq: Pass policy pointer to ->update_limits() From: srinivas pandruvada To: "Rafael J. Wysocki" , "Rafael J. Wysocki" Cc: Linux PM , LKML , Viresh Kumar , Mario Limonciello , Sudeep Holla Date: Mon, 07 Apr 2025 15:27:59 -0700 In-Reply-To: References: <4651448.LvFx2qVVIh@rjwysocki.net> <8560367.NyiUUSuA9g@rjwysocki.net> Autocrypt: addr=srinivas.pandruvada@linux.intel.com; prefer-encrypt=mutual; keydata=mQGNBGYHNAsBDAC7tv5u9cIsSDvdgBBEDG0/a/nTaC1GXOx5MFNEDL0LWia2p8Asl7igx YrB68fyfPNLSIgtCmps0EbRUkPtoN5/HTbAEZeJUTL8Xdoe6sTywf8/6/DMheEUzprE4Qyjt0HheW y1JGvdOA0f1lkxCnPXeiiDY4FUqQHr3U6X4FPqfrfGlrMmGvntpKzOTutlQl8eSAprtgZ+zm0Jiwq NSiSBOt2SlbkGu9bBYx7mTsrGv+x7x4Ca6/BO9o5dIvwJOcfK/cXC/yxEkr1ajbIUYZFEzQyZQXrT GUGn8j3/cXQgVvMYxrh3pGCq9Q0Q6PAwQYhm97ipXa86GcTpP5B2ip9xclPtDW99sihiL8euTWRfS TUsEI+1YzCyz5DU32w3WiXr3ITicaMV090tMg9phIZsjfFbnR8hY03n0kRNWWFXi/ch2MsZCCqXIB oY/SruNH9Y6mnFKW8HSH762C7On8GXBYJzH6giLGeSsbvis2ZmV/r+LmswwZ6ACcOKLlvvIukAEQE AAbQ5U3Jpbml2YXMgUGFuZHJ1dmFkYSA8c3Jpbml2YXMucGFuZHJ1dmFkYUBsaW51eC5pbnRlbC5j b20+iQHRBBMBCAA7FiEEdki2SeUi0wlk2xcjOqtdDMJyisMFAmYHNAsCGwMFCwkIBwICIgIGFQoJC AsCBBYCAwECHgcCF4AACgkQOqtdDMJyisMobAv+LLYUSKNuWhRN3wS7WocRPCi3tWeBml+qivCwyv oZbmE2LcxYFnkcj6YNoS4N1CHJCr7vwefWTzoKTTDYqz3Ma0D0SbR1p/dH0nDgN34y41HpIHf0tx0 UxGMgOWJAInq3A7/mNkoLQQ3D5siG39X3bh9Ecg0LhMpYwP/AYsd8X1ypCWgo8SE0J/6XX/HXop2a ivimve15VklMhyuu2dNWDIyF2cWz6urHV4jmxT/wUGBdq5j87vrJhLXeosueRjGJb8/xzl34iYv08 wOB0fP+Ox5m0t9N5yZCbcaQug3hSlgp9hittYRgIK4GwZtNO11bOzeCEMk+xFYUoa5V8JWK9/vxrx NZEn58vMJ/nxoJzkb++iV7KBtsqErbs5iDwFln/TRJAQDYrtHJKLLFB9BGUDuaBOmFummR70Rbo55 J9fvUHc2O70qteKOt5A0zv7G8uUdIaaUHrT+VOS7o+MrbPQcSk+bl81L2R7TfWViCmKQ60sD3M90Y oOfCQxricddC Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.52.4 (3.52.4-2.fc40) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 T24gTW9uLCAyMDI1LTA0LTA3IGF0IDIwOjQ4ICswMjAwLCBSYWZhZWwgSi4gV3lzb2NraSB3cm90 ZToKPiBPbiBGcmksIE1hciAyOCwgMjAyNSBhdCA5OjQ54oCvUE0gUmFmYWVsIEouIFd5c29ja2kg PHJqd0Byand5c29ja2kubmV0Pgo+IHdyb3RlOgo+ID4gCj4gPiBGcm9tOiBSYWZhZWwgSi4gV3lz b2NraSA8cmFmYWVsLmoud3lzb2NraUBpbnRlbC5jb20+Cj4gPiAKPiA+IFNpbmNlIGNwdWZyZXFf dXBkYXRlX2xpbWl0cygpIG9idGFpbnMgYSBjcHVmcmVxIHBvbGljeSBwb2ludGVyIGZvcgo+ID4g dGhlCj4gPiBnaXZlbiBDUFUgYW5kIHJlZmVyZW5jZSBjb3VudHMgdGhlIGNvcnJlc3BvbmRpbmcg cG9saWN5IG9iamVjdCwgaXQKPiA+IG1heQo+ID4gYXMgd2VsbCBwYXNzIHRoZSBwb2xpY3kgcG9p bnRlciB0byB0aGUgY3B1ZnJlcSBkcml2ZXIncyAtCj4gPiA+dXBkYXRlX2xpbWl0cygpCj4gPiBj YWxsYmFjayB3aGljaCBhbGxvd3MgdGhhdCBjYWxsYmFjayB0byBhdm9pZCBpbnZva2luZwo+ID4g Y3B1ZnJlcV9jcHVfZ2V0KCkKPiA+IGZvciB0aGUgc2FtZSBDUFUuCj4gPiAKPiA+IEFjY29yZGlu Z2x5LCByZWRlZmluZSAtPnVwZGF0ZV9saW1pdHMoKSB0byB0YWtlIGEgcG9saWN5IHBvaW50ZXIK PiA+IGluc3RlYWQKPiA+IG9mIGEgQ1BVIG51bWJlciBhbmQgdXBkYXRlIGJvdGggZHJpdmVycyBp bXBsZW1lbnRpbmcgaXQsCj4gPiBpbnRlbF9wc3RhdGUKPiA+IGFuZCBhbWQtcHN0YXRlLCBhcyBu ZWVkZWQuCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IFJhZmFlbCBKLiBXeXNvY2tpIDxyYWZhZWwu ai53eXNvY2tpQGludGVsLmNvbT4KPiAKSGkgUmFmYWVsLAoKPiBIaSBTcmluaXZhcywKPiAKPiBJ ZiB5b3UgaGF2ZSBhbnkgY29uY2VybnMgcmVnYXJkaW5nIHRoaXMgcGF0Y2gsIHBsZWFzZSBsZXQg bWUga25vdwo+IChub3RlIHRoYXQgaXQgaXMgYmFzZWQgb24gdGhlIFswNS8xMF0pLgo+IApDaGFu Z2VzIGxvb2tzIGZpbmUsIGJ1dCB3YW50cyB0byB0ZXN0IG91dCBzb21lIHVwZGF0ZSBsaW1pdHMg ZnJvbQppbnRlcnJ1cHQgcGF0aC4KQ2hlY2tlZCB5b3VyIGJyYW5jaGVzIGF0IGxpbnV4LXBtLCBu b3QgYWJsZSB0byBsb2NhdGUgaW4gYW55IGJyYW5jaCB0bwphcHBseS4KUGxlYXNlIHBvaW50IG1l IHRvIGEgYnJhbmNoLgoKVGhhbmtzLApTcmluaXZhcwoKPiA+IC0tLQo+ID4gwqBkcml2ZXJzL2Nw dWZyZXEvYW1kLXBzdGF0ZS5jwqDCoCB8wqDCoMKgIDcgKystLS0tLQo+ID4gwqBkcml2ZXJzL2Nw dWZyZXEvY3B1ZnJlcS5jwqDCoMKgwqDCoCB8wqDCoMKgIDIgKy0KPiA+IMKgZHJpdmVycy9jcHVm cmVxL2ludGVsX3BzdGF0ZS5jIHzCoMKgIDI5ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0K PiA+IC0KPiA+IMKgaW5jbHVkZS9saW51eC9jcHVmcmVxLmjCoMKgwqDCoMKgwqDCoCB8wqDCoMKg IDIgKy0KPiA+IMKgNCBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlv bnMoLSkKPiA+IAo+ID4gLS0tIGEvZHJpdmVycy9jcHVmcmVxL2FtZC1wc3RhdGUuYwo+ID4gKysr IGIvZHJpdmVycy9jcHVmcmVxL2FtZC1wc3RhdGUuYwo+ID4gQEAgLTgyMSwxOSArODIxLDE2IEBA Cj4gPiDCoMKgwqDCoMKgwqDCoCBzY2hlZHVsZV93b3JrKCZzY2hlZF9wcmVmY29yZV93b3JrKTsK PiA+IMKgfQo+ID4gCj4gPiAtc3RhdGljIHZvaWQgYW1kX3BzdGF0ZV91cGRhdGVfbGltaXRzKHVu c2lnbmVkIGludCBjcHUpCj4gPiArc3RhdGljIHZvaWQgYW1kX3BzdGF0ZV91cGRhdGVfbGltaXRz KHN0cnVjdCBjcHVmcmVxX3BvbGljeQo+ID4gKnBvbGljeSkKPiA+IMKgewo+ID4gLcKgwqDCoMKg wqDCoCBzdHJ1Y3QgY3B1ZnJlcV9wb2xpY3kgKnBvbGljeSBfX2ZyZWUocHV0X2NwdWZyZXFfcG9s aWN5KSA9Cj4gPiBjcHVmcmVxX2NwdV9nZXQoY3B1KTsKPiA+IMKgwqDCoMKgwqDCoMKgIHN0cnVj dCBhbWRfY3B1ZGF0YSAqY3B1ZGF0YTsKPiA+IMKgwqDCoMKgwqDCoMKgIHUzMiBwcmV2X2hpZ2gg PSAwLCBjdXJfaGlnaCA9IDA7Cj4gPiDCoMKgwqDCoMKgwqDCoCBib29sIGhpZ2hlc3RfcGVyZl9j aGFuZ2VkID0gZmFsc2U7Cj4gPiArwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCBjcHUgPSBwb2xp Y3ktPmNwdTsKPiA+IAo+ID4gwqDCoMKgwqDCoMKgwqAgaWYgKCFhbWRfcHN0YXRlX3ByZWZjb3Jl KQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybjsKPiA+IAo+ID4gLcKg wqDCoMKgwqDCoCBpZiAoIXBvbGljeSkKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybjsKPiA+IC0KPiA+IMKgwqDCoMKgwqDCoMKgIGlmIChhbWRfZ2V0X2hpZ2hlc3RfcGVy ZihjcHUsICZjdXJfaGlnaCkpCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuOwo+ID4gCj4gPiAtLS0gYS9kcml2ZXJzL2NwdWZyZXEvY3B1ZnJlcS5jCj4gPiArKysgYi9k cml2ZXJzL2NwdWZyZXEvY3B1ZnJlcS5jCj4gPiBAQCAtMjc0MSw3ICsyNzQxLDcgQEAKPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4gPiAKPiA+IMKgwqDCoMKgwqDC oMKgIGlmIChjcHVmcmVxX2RyaXZlci0+dXBkYXRlX2xpbWl0cykKPiA+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGNwdWZyZXFfZHJpdmVyLT51cGRhdGVfbGltaXRzKGNwdSk7Cj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjcHVmcmVxX2RyaXZlci0+dXBkYXRlX2xpbWl0 cyhwb2xpY3kpOwo+ID4gwqDCoMKgwqDCoMKgwqAgZWxzZQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGNwdWZyZXFfcG9saWN5X3JlZnJlc2gocG9saWN5KTsKPiA+IMKgfQo+ID4g LS0tIGEvZHJpdmVycy9jcHVmcmVxL2ludGVsX3BzdGF0ZS5jCj4gPiArKysgYi9kcml2ZXJzL2Nw dWZyZXEvaW50ZWxfcHN0YXRlLmMKPiA+IEBAIC0xMzUzLDE0ICsxMzUzLDkgQEAKPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjcHVmcmVxX3VwZGF0ZV9wb2xpY3koY3B1KTsKPiA+ IMKgfQo+ID4gCj4gPiAtc3RhdGljIGJvb2wgaW50ZWxfcHN0YXRlX3VwZGF0ZV9tYXhfZnJlcShz dHJ1Y3QgY3B1ZGF0YSAqY3B1ZGF0YSkKPiA+ICtzdGF0aWMgdm9pZCBfX2ludGVsX3BzdGF0ZV91 cGRhdGVfbWF4X2ZyZXEoc3RydWN0IGNwdWZyZXFfcG9saWN5Cj4gPiAqcG9saWN5LAo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGNwdWRhdGEgKmNwdWRhdGEpCj4gPiDCoHsK PiA+IC3CoMKgwqDCoMKgwqAgc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3kgX19mcmVlKHB1 dF9jcHVmcmVxX3BvbGljeSk7Cj4gPiAtCj4gPiAtwqDCoMKgwqDCoMKgIHBvbGljeSA9IGNwdWZy ZXFfY3B1X2dldChjcHVkYXRhLT5jcHUpOwo+ID4gLcKgwqDCoMKgwqDCoCBpZiAoIXBvbGljeSkK PiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBmYWxzZTsKPiA+IC0KPiA+ IMKgwqDCoMKgwqDCoMKgIGd1YXJkKGNwdWZyZXFfcG9saWN5X3dyaXRlKShwb2xpY3kpOwo+ID4g Cj4gPiDCoMKgwqDCoMKgwqDCoCBpZiAoaHdwX2FjdGl2ZSkKPiA+IEBAIC0xMzcwLDE2ICsxMzY1 LDI4IEBACj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGNwdWRhdGEtPnBzdGF0ZS5tYXhfZnJlcSA6IGNwdWRhdGEtCj4gPiA+cHN0YXRlLnR1cmJvX2Zy ZXE7Cj4gPiAKPiA+IMKgwqDCoMKgwqDCoMKgIHJlZnJlc2hfZnJlcXVlbmN5X2xpbWl0cyhwb2xp Y3kpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgYm9vbCBpbnRlbF9wc3RhdGVfdXBkYXRlX21h eF9mcmVxKHN0cnVjdCBjcHVkYXRhICpjcHVkYXRhKQo+ID4gK3sKPiA+ICvCoMKgwqDCoMKgwqAg c3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3kgX19mcmVlKHB1dF9jcHVmcmVxX3BvbGljeSk7 Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgIHBvbGljeSA9IGNwdWZyZXFfY3B1X2dldChjcHVkYXRh LT5jcHUpOwo+ID4gK8KgwqDCoMKgwqDCoCBpZiAoIXBvbGljeSkKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiBmYWxzZTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqAgX19p bnRlbF9wc3RhdGVfdXBkYXRlX21heF9mcmVxKHBvbGljeSwgY3B1ZGF0YSk7Cj4gPiAKPiA+IMKg wqDCoMKgwqDCoMKgIHJldHVybiB0cnVlOwo+ID4gwqB9Cj4gPiAKPiA+IC1zdGF0aWMgdm9pZCBp bnRlbF9wc3RhdGVfdXBkYXRlX2xpbWl0cyh1bnNpZ25lZCBpbnQgY3B1KQo+ID4gK3N0YXRpYyB2 b2lkIGludGVsX3BzdGF0ZV91cGRhdGVfbGltaXRzKHN0cnVjdCBjcHVmcmVxX3BvbGljeQo+ID4g KnBvbGljeSkKPiA+IMKgewo+ID4gLcKgwqDCoMKgwqDCoCBzdHJ1Y3QgY3B1ZGF0YSAqY3B1ZGF0 YSA9IGFsbF9jcHVfZGF0YVtjcHVdOwo+ID4gK8KgwqDCoMKgwqDCoCBzdHJ1Y3QgY3B1ZGF0YSAq Y3B1ZGF0YSA9IGFsbF9jcHVfZGF0YVtwb2xpY3ktPmNwdV07Cj4gPiArCj4gPiArwqDCoMKgwqDC oMKgIF9faW50ZWxfcHN0YXRlX3VwZGF0ZV9tYXhfZnJlcShwb2xpY3ksIGNwdWRhdGEpOwo+ID4g Cj4gPiAtwqDCoMKgwqDCoMKgIGlmIChpbnRlbF9wc3RhdGVfdXBkYXRlX21heF9mcmVxKGNwdWRh dGEpKQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaHlicmlkX3VwZGF0ZV9jYXBh Y2l0eShjcHVkYXRhKTsKPiA+ICvCoMKgwqDCoMKgwqAgaHlicmlkX3VwZGF0ZV9jYXBhY2l0eShj cHVkYXRhKTsKPiA+IMKgfQo+ID4gCj4gPiDCoHN0YXRpYyB2b2lkIGludGVsX3BzdGF0ZV91cGRh dGVfbGltaXRzX2Zvcl9hbGwodm9pZCkKPiA+IC0tLSBhL2luY2x1ZGUvbGludXgvY3B1ZnJlcS5o Cj4gPiArKysgYi9pbmNsdWRlL2xpbnV4L2NwdWZyZXEuaAo+ID4gQEAgLTM5OSw3ICszOTksNyBA QAo+ID4gwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50wqDCoMKgICgqZ2V0KSh1bnNpZ25lZCBp bnQgY3B1KTsKPiA+IAo+ID4gwqDCoMKgwqDCoMKgwqAgLyogQ2FsbGVkIHRvIHVwZGF0ZSBwb2xp Y3kgbGltaXRzIG9uIGZpcm13YXJlCj4gPiBub3RpZmljYXRpb25zLiAqLwo+ID4gLcKgwqDCoMKg wqDCoCB2b2lkwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoKnVwZGF0ZV9saW1pdHMpKHVuc2lnbmVk IGludCBjcHUpOwo+ID4gK8KgwqDCoMKgwqDCoCB2b2lkwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAo KnVwZGF0ZV9saW1pdHMpKHN0cnVjdCBjcHVmcmVxX3BvbGljeQo+ID4gKnBvbGljeSk7Cj4gPiAK PiA+IMKgwqDCoMKgwqDCoMKgIC8qIG9wdGlvbmFsICovCj4gPiDCoMKgwqDCoMKgwqDCoCBpbnTC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKCpiaW9zX2xpbWl0KShpbnQgY3B1LCB1bnNpZ25lZCBp bnQKPiA+ICpsaW1pdCk7Cj4gPiAKPiA+IAo+ID4gCj4gPiAKPiAKCg==