From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp-fw-33001.amazon.com (smtp-fw-33001.amazon.com [207.171.190.10]) (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 522C62C84F for ; Thu, 4 Jan 2024 21:59:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amazon.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=amazon.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amazon.com header.i=@amazon.com header.b="jYJLUqc8" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1704405568; x=1735941568; h=from:cc:subject:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version; bh=s3Yuu92ujEMhSsloIOyQR+Y7TG+l7zdgwT3wBlXgA4c=; b=jYJLUqc8wr2wQYAE5BLjGstUeMZujlXH3LWU17JnpfrjFS9xoixnGljF WZF4sWGxjS251k/rsHh3juRaDfWBY+g1urVZnxvThDxxRVSFgFzdDXeHf IIa8PnEc8c1g2NfAj4IFBHfdHS8dZtgodOHaZTpOWjZaIRzz1keBPu9h8 k=; X-IronPort-AV: E=Sophos;i="6.04,331,1695686400"; d="scan'208";a="320211564" Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO email-inbound-relay-pdx-2b-m6i4x-32fb4f1a.us-west-2.amazon.com) ([10.43.8.6]) by smtp-border-fw-33001.sea14.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Jan 2024 21:59:27 +0000 Received: from smtpout.prod.us-west-2.prod.farcaster.email.amazon.dev (pdx2-ws-svc-p26-lb5-vlan2.pdx.amazon.com [10.39.38.66]) by email-inbound-relay-pdx-2b-m6i4x-32fb4f1a.us-west-2.amazon.com (Postfix) with ESMTPS id 209C6C0ADB for ; Thu, 4 Jan 2024 21:59:25 +0000 (UTC) Received: from EX19MTAUWB002.ant.amazon.com [10.0.38.20:47454] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.16.178:2525] with esmtp (Farcaster) id 60aa7f20-31f2-4eb0-91e7-6575c5c1f010; Thu, 4 Jan 2024 21:59:24 +0000 (UTC) X-Farcaster-Flow-ID: 60aa7f20-31f2-4eb0-91e7-6575c5c1f010 Received: from EX19D030UWB001.ant.amazon.com (10.13.139.159) by EX19MTAUWB002.ant.amazon.com (10.250.64.231) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Thu, 4 Jan 2024 21:59:24 +0000 Received: from EX19D030UWB002.ant.amazon.com (10.13.139.182) by EX19D030UWB001.ant.amazon.com (10.13.139.159) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Thu, 4 Jan 2024 21:59:24 +0000 Received: from EX19D030UWB002.ant.amazon.com ([fe80::8cbd:fcae:56ad:4dfa]) by EX19D030UWB002.ant.amazon.com ([fe80::8cbd:fcae:56ad:4dfa%6]) with mapi id 15.02.1118.040; Thu, 4 Jan 2024 21:59:24 +0000 From: "Jitindar Singh, Suraj" CC: "linux-cifs@vger.kernel.org" Subject: Re: Patch "cifs: Fix flushing, invalidation and file size with copy_file_range()" has been added to the 6.1-stable tree Thread-Topic: Patch "cifs: Fix flushing, invalidation and file size with copy_file_range()" has been added to the 6.1-stable tree Thread-Index: AQHaPp4tdyQ6VPBk60yAjpQMlA0s2bDKNU8A Date: Thu, 4 Jan 2024 21:59:24 +0000 Message-ID: References: <2023121124-trifle-uncharted-2622@gregkh> In-Reply-To: Accept-Language: en-AU, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Content-Type: text/plain; charset="utf-8" Content-ID: <8E86397BD9F4844CBA29370E8C144DB5@amazon.com> Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-cifs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 KyBDQzogbGludXgtY2lmc0B2Z2VyLmtlcm5lbC5vcmcNCg0KT24gV2VkLCAyMDI0LTAxLTAzIGF0 IDE1OjQwIC0wODAwLCBTdXJhaiBKaXRpbmRhciBTaW5naCB3cm90ZToNCj4gSGksDQo+IA0KPiBX aGVuIHRlc3RpbmcgdGhlIHY2LjEuNjkga2VybmVsIEkgYmlzZWN0ZWQgYW4gaXNzdWUgdG8gdGhl IGJlbG93DQo+IGNvbW1pdA0KPiB3aGljaCB3YXMgYWRkZWQgaW4gdjYuMS42OC4gV2hlbiBydW5u aW5nIHRoZSB4ZnN0ZXN0c1sxXSBvbiBjaWZzIEkNCj4gb2JzZXJ2ZSBhIG51bGwgcG9pbnRlciBk ZXJlZmVyZW5jZSBpbiBjaWZzX2ZsdXNoX2ZvbGlvKCkgYmVjYXVzZQ0KPiBmb2xpbw0KPiBpcyBu dWxsIGFuZCBkZXJlZmVyZW5jZWQgaW4gc2l6ZSA9IGZvbGlvX3NpemUoZm9saW8pLg0KPiANCj4g WzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9rZGF2ZS94ZnN0ZXN0cw0KPiANCj4gVGhpcyBjYW4gYmUg cmVwcm9kdWNlZCB1c2luZyBtYW55IG9mIHRoZSB4ZnN0ZXN0cyBidXQgcmVwcm9kdWNlcyB3aXRo DQo+IGdlbmVyaWMvMDAxIGxpa2UgYmVsb3c6DQo+IA0KPiAkIC4vY2hlY2sgLWNpZnMgZ2VuZXJp Yy8wMDENCj4gDQo+IEZTVFlQwqDCoMKgwqDCoMKgwqDCoCAtLSBjaWZzDQo+IFBMQVRGT1JNwqDC oMKgwqDCoCAtLSBMaW51eC94ODZfNjQgaXAtMTcyLTMxLTM2LTE1MCA2LjEuNjkgIzIgU01QDQo+ IFBSRUVNUFRfRFlOQU1JQyBXZWQgSmFuwqAgMyAyMjozNjo0MyBVVEMgMjAyNA0KPiBNS0ZTX09Q VElPTlPCoCAtLSAvLzE3Mi4zMS4zNC42Ni9zY3JhdGNoDQo+IE1PVU5UX09QVElPTlMgLS0gLW91 c2VybmFtZT1lYzItDQo+IHVzZXIscGFzc3dvcmQ9YWJjMTIzLG5vcGVybSxtZnN5bWxpbmtzLGNp ZnNhY2wsYWN0aW1lbz0wIC1vDQo+IGNvbnRleHQ9c3lzdGVtX3U6b2JqZWN0X3I6cm9vdF90OnMw IC8vMTcyLjMxLjM0LjY2L3NjcmF0Y2gNCj4gL21udC9zY3JhdGNoDQo+IA0KPiBnZW5lcmljLzAw MSAxMHMgLi4uwqAgDQo+IA0KPiBbwqAgMjQ0LjEzNTU1NV0gcnVuIGZzdGVzdHMgZ2VuZXJpYy8w MDEgYXQgMjAyNC0wMS0wMyAyMjo0NDo1OQ0KPiBbwqAgMjQ0LjYzNzQ5OV0gQlVHOiBrZXJuZWwg TlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlLCBhZGRyZXNzOg0KPiAwMDAwMDAwMDAwMDAwMDAwDQo+ IFvCoCAyNDQuNjM4MjA0XSAjUEY6IHN1cGVydmlzb3IgcmVhZCBhY2Nlc3MgaW4ga2VybmVsIG1v ZGUNCj4gW8KgIDI0NC42Mzg2OThdICNQRjogZXJyb3JfY29kZSgweDAwMDApIC0gbm90LXByZXNl bnQgcGFnZQ0KPiBbwqAgMjQ0LjYzOTE5NF0gUEdEIDAgUDREIDAgDQo+IFvCoCAyNDQuNjM5NDY2 XSBPb3BzOiAwMDAwIFsjMV0gUFJFRU1QVCBTTVAgTk9QVEkNCj4gW8KgIDI0NC42OTgwNDddIENQ VTogMTEgUElEOiA0MTIzIENvbW06IGNwIE5vdCB0YWludGVkIDYuMS42OSAjMg0KPiBbwqAgMjQ0 LjY5ODU5OF0gSGFyZHdhcmUgbmFtZTogQW1hem9uIEVDMiBtNmkuNHhsYXJnZS8sIEJJT1MgMS4w DQo+IDEwLzE2LzIwMTcNCj4gW8KgIDI0NC42OTkyMjhdIFJJUDogMDAxMDpjaWZzX2ZsdXNoX2Zv bGlvKzB4M2YvMHgxMDAgW2NpZnNdDQo+IFvCoCAyNDQuNjk5NzgyXSBDb2RlOiBkMiA0MSA1NCA4 OSBjYyAzMSBjOSA1NSA1MyA0OCA4OSBmMyA0OCBjMSBlZSAwYw0KPiA0OA0KPiA4MyBlYyAwOCA0 OCA4YiA3ZiAzMCBlOCA3ZCAyYyBhNiBmOCA0OCAzZCAwMCBmMCBmZiBmZiAwZiA4NyBhNSAwMCAw MA0KPiAwMA0KPiA8NDg+IDhiIDEwIDQ4IDg5IGM1IGI4IDAwIDEwIDAwIDAwIGY3IGMyIDAwIDAw IDAxIDAwIDc0IDA3IDBmIGI2IDRkDQo+IFvCoCAyNDQuNzk5MjYzXSBSU1A6IDAwMTg6ZmZmZmMy NTQ0MWZmYmQyMCBFRkxBR1M6IDAwMDEwMjA3DQo+IFvCoCAyNDQuODg4OTExXSBSQVg6IDAwMDAw MDAwMDAwMDAwMDAgUkJYOiAwMDAwMDAwMDAwMDAwMDAwIFJDWDoNCj4gMDAwMDAwMDAwMDAwMDAw MA0KPiBbwqAgMjQ0Ljg5ODQ0Nl0gUkRYOiAwMDAwMDAwMDAwMDAwMDAwIFJTSTogMDAwMDAwMDAw MDAwMDAwMCBSREk6DQo+IGZmZmY5ZWQ5NDVlYWMwMDANCj4gW8KgIDI0NC44OTkxMzZdIFJCUDog MDAwMDAwMDAwMDAwMDNhMSBSMDg6IDAwMDAwMDAwMDAwMDAwMDEgUjA5Og0KPiAwMDAwMDAwMDAw MDAwMDAwDQo+IFvCoCAyNDQuOTk3Nzc5XSBSMTA6IDAwMDAwMDAwMDAwMDNlN2YgUjExOiAwMDAw MDAwMDAwMDAwMDAwIFIxMjoNCj4gZmZmZmMyNTQ0MWZmYmQ5MA0KPiBbwqAgMjQ0Ljk5ODU2NF0g UjEzOiBmZmZmYzI1NDQxZmZiZDg4IFIxNDogZmZmZjllZDk0YWYyMzg1MCBSMTU6DQo+IDAwMDAw MDAwMDAwMDAwMDENCj4gW8KgIDI0NC45OTkyNjRdIEZTOsKgIDAwMDA3ZjExMTQwNGQzNDAoMDAw MCkgR1M6ZmZmZjllZTdmZWNjMDAwMCgwMDAwKQ0KPiBrbmxHUzowMDAwMDAwMDAwMDAwMDAwDQo+ IFvCoCAyNDUuMDk3NzgyXSBDUzrCoCAwMDEwIERTOiAwMDAwIEVTOiAwMDAwIENSMDogMDAwMDAw MDA4MDA1MDAzMw0KPiBbwqAgMjQ1LjA5ODM0NV0gQ1IyOiAwMDAwMDAwMDAwMDAwMDAwIENSMzog MDAwMDAwMDEyMTFmYzAwMSBDUjQ6DQo+IDAwMDAwMDAwMDA3NzA2ZTANCj4gW8KgIDI0NS4wOTkx MjJdIERSMDogMDAwMDAwMDAwMDAwMDAwMCBEUjE6IDAwMDAwMDAwMDAwMDAwMDAgRFIyOg0KPiAw MDAwMDAwMDAwMDAwMDAwDQo+IFvCoCAyNDUuMDk5ODU0XSBEUjM6IDAwMDAwMDAwMDAwMDAwMDAg RFI2OiAwMDAwMDAwMGZmZmUwZmYwIERSNzoNCj4gMDAwMDAwMDAwMDAwMDQwMA0KPiBbwqAgMjQ1 LjE5ODIwMF0gUEtSVTogNTU1NTU1NTQNCj4gW8KgIDI0NS4xOTg0NzhdIENhbGwgVHJhY2U6DQo+ IFvCoCAyNDUuMTk4NzM1XcKgIDxUQVNLPg0KPiBbwqAgMjQ1LjE5ODk2N13CoCA/IHNob3dfdHJh Y2VfbG9nX2x2bCsweDFjNC8weDJkMg0KPiBbwqAgMjQ1LjE5OTM5OV3CoCA/IHNob3dfdHJhY2Vf bG9nX2x2bCsweDFjNC8weDJkMg0KPiBbwqAgMjQ1LjE5OTgzMF3CoCA/IGNpZnNfcmVtYXBfZmls ZV9yYW5nZSsweDE1ZC8weDVlMCBbY2lmc10NCj4gW8KgIDI0NS4yOTgwMjldwqAgPyBfX2RpZV9i b2R5LmNvbGQrMHg4LzB4ZA0KPiBbwqAgMjQ1LjI5ODQwMl3CoCA/IHBhZ2VfZmF1bHRfb29wcysw eGFjLzB4MTQwDQo+IFvCoCAyNDUuMjk4OTQzXcKgID8gZXhjX3BhZ2VfZmF1bHQrMHg2Mi8weDE0 MA0KPiBbwqAgMjQ1LjI5OTMzNl3CoCA/IGFzbV9leGNfcGFnZV9mYXVsdCsweDIyLzB4MzANCj4g W8KgIDI0NS4yOTk3NTFdwqAgPyBjaWZzX2ZsdXNoX2ZvbGlvKzB4M2YvMHgxMDAgW2NpZnNdDQo+ IFvCoCAyNDUuMzk3ODU4XcKgID8gY2lmc19wcmVjb3B5X3NldF9lb2YrMHg3My8weDExMCBbY2lm c10NCj4gW8KgIDI0NS4zOTgzODNdwqAgY2lmc19yZW1hcF9maWxlX3JhbmdlKzB4MTVkLzB4NWUw IFtjaWZzXQ0KPiBbwqAgMjQ1LjM5ODkwOV3CoCBkb19jbG9uZV9maWxlX3JhbmdlKzB4ZTcvMHgy MzANCj4gW8KgIDI0NS4zOTkzMjldwqAgdmZzX2Nsb25lX2ZpbGVfcmFuZ2UrMHgzNy8weDE0MA0K PiBbwqAgMjQ1LjM5OTg2MV3CoCBpb2N0bF9maWxlX2Nsb25lKzB4NDUvMHhhMA0KPiBbwqAgMjQ1 LjQ5NzkxOF3CoCBkb192ZnNfaW9jdGwrMHg3OS8weDg5MA0KPiBbwqAgMjQ1LjQ5ODMyOF3CoCBf X3g2NF9zeXNfaW9jdGwrMHg2OS8weGMwDQo+IFvCoCAyNDUuNDk4NzA2XcKgIGRvX3N5c2NhbGxf NjQrMHgzOC8weDkwDQo+IFvCoCAyNDUuNDk5MDcwXcKgIGVudHJ5X1NZU0NBTExfNjRfYWZ0ZXJf aHdmcmFtZSsweDY0LzB4Y2UNCj4gW8KgIDI0NS40OTk1NjhdIFJJUDogMDAzMzoweDdmMTExM2Uz ZWM2Yg0KPiBbwqAgMjQ1LjQ5OTkyOV0gQ29kZTogNzMgMDEgYzMgNDggOGIgMGQgOTUwMCBmNyBk OCA2NCA4OSAwMSA0OCA4MyBjOA0KPiBmZg0KPiBjMyA2NiAyZSAwZiAxZiA4NCAwMCAwMCAwMCAw MCAwMCA5MCBmMyAwZiAxZSBmYSBiOCAxMCAwMCAwMCAwMCAwZiAwNQ0KPiA8NDg+IDNkIDAxIGYw IGZmIGZmIDczIDAxIGMzIDQ4IDhiIDBkIDY1IGExIDFiIDAwIGY3IGQ4IDY0IDg5IDAxIDQ4DQo+ IFvCoCAyNDUuNTk5NDEwXSBSU1A6IDAwMmI6MDAwMDdmZmYxNDBlYmI4OCBFRkxBR1M6IDAwMDAw MjQ2IE9SSUdfUkFYOg0KPiAwMDAwMDAwMDAwMDAwMDEwDQo+IFvCoCAyNDUuNjk3OTMwXSBSQVg6 IGZmZmZmZmZmZmZmZmZmZGEgUkJYOiAwMDAwN2ZmZjE0MGVjM2IwIFJDWDoNCj4gMDAwMDdmMTEx M2UzZWM2Yg0KPiBbwqAgMjQ1LjY5ODYyMF0gUkRYOiAwMDAwMDAwMDAwMDAwMDAzIFJTSTogMDAw MDAwMDA0MDA0OTQwOSBSREk6DQo+IDAwMDAwMDAwMDAwMDAwMDQNCj4gW8KgIDI0NS42OTkzMDZd IFJCUDogMDAwMDAwMDAwMDAwMDAwMyBSMDg6IDAwMDAwMDAwMDAwMDAwMDEgUjA5Og0KPiAwMDAw MDAwMDAwMDAwMDA0DQo+IFvCoCAyNDUuNzk3OTQyXSBSMTA6IDAwMDAwMDAwMDAwMDEwMDAgUjEx OiAwMDAwMDAwMDAwMDAwMjQ2IFIxMjoNCj4gMDAwMDdmZmYxNDBlZDYxNg0KPiBbwqAgMjQ1Ljc5 ODc4OV0gUjEzOiAwMDAwN2ZmZjE0MGViZmEwIFIxNDogMDAwMDAwMDAwMDAwMDAwMCBSMTU6DQo+ IDAwMDAwMDAwMDAwMDAwMDINCj4gW8KgIDI0NS43OTk0ODVdwqAgPC9UQVNLPg0KPiBbwqAgMjQ1 Ljc5OTcyMF0gTW9kdWxlcyBsaW5rZWQgaW46IGNtYWMgbmxzX3V0ZjggY2lmcyBjaWZzX2FyYzQN Cj4gY2lmc19tZDQNCj4gZG5zX2x2ZXIgbW91c2VkZXYgc3VucnBjIG5sc19hc2NpaSBubHNfY3A0 MzcgdmZhdCBmYXQgcHNtb3VzZQ0KPiBnaGFzaF9jbG11bG5pX2ludGVsIGF0a2JkIGxpYnBzMiB2 aXZhbGRpX2ZtYXAgYWVzbmlfaW50ZWwgZW5hIGk4MDQyDQo+IGNyeXB0b19zaW1kIHNlcmlvIGNy eXB0ZCBidXR0b24gZHJtIHNjaF9mcV9jb2RlbCBmdXNlIGkyY19jb3JlDQo+IGNvbmZpZ2ZzDQo+ IGRybV9wYW5lbF9vcmllbnRhdGlvbl9xdWlya3MgbG9vcCBiYWNrbGlnaHQgZG1pX3N5c2ZzIGNy YzMyX3BjbG11bA0KPiBpbnRlbCBkbV9taXJyb3IgZG1fcmVnaW9uX2hhc2ggZG1fbG9nIGRtX21v ZCBkYXggZWZpdmFyZnMNCj4gW8KgIDI0NS45OTg0NTddIENSMjogMDAwMDAwMDAwMDAwMDAwMA0K PiBbwqAgMjQ1Ljk5ODgwMF0gLS0tWyBlbmQgdHJhY2UgMDAwMDAwMDAwMDAwMDAwMCBdLS0tDQo+ IFvCoCAyNDYuMDg3OTE2XSBSSVA6IDAwMTA6Y2lmc19mbHVzaF9mb2xpbysweDNmLzB4MTAwIFtj aWZzXQ0KPiBbwqAgMjQ2LjA4ODc5NF0gQ29kZTogZDIgNDEgNTQgNDkgODkgY2MgMzEgYzkgNTUg NTMgNDggODkgZjMgNDggYzEgZWUNCj4gMGMNCj4gNDggODMgZWMgMDggNDggOGIgN2YgMzAgZTgg N2QgMmMgYTYgZjggNDggM2QgMDAgZjAgZmYgZmYgMGYgODcgYTUgMDANCj4gMDANCj4gMDAgPDQ4 PiA4YiAxMCA0OCA4OSBjNSBiOCAwMCAxMCAwMCAwMCBmNyBjMiAwMCAwMCAwMSAwMCA3NCAwNyAw ZiBiNg0KPiA0ZA0KPiBbwqAgMjQ2LjA5OTQzNl0gUlNQOiAwMDE4OmZmZmZjMjU0NDFmZmJkMjAg RUZMQUdTOiAwMDAxMDIwNw0KPiBbwqAgMjQ2LjE4OTI1OF0gUkFYOiAwMDAwMDAwMDAwMDAwMDAw IFJCWDogMDAwMDAwMDAwMDAwMDAwMCBSQ1g6DQo+IDAwMDAwMDAwMDAwMDAwMDANCj4gW8KgIDI0 Ni4xOTg3MjRdIFJEWDogMDAwMDAwMDAwMDAwMDAwMCBSU0k6IDAwMDAwMDAwMDAwMDAwMDAgUkRJ Og0KPiBmZmZmOWVkOTQ1ZWFjMDAwDQo+IFvCoCAyNDYuMTk5NDExXSBSQlA6IDAwMDAwMDAwMDAw MDAzYTEgUjA4OiAwMDAwMDAwMDAwMDAwMDAxIFIwOToNCj4gMDAwMDAwMDAwMDAwMDAwMA0KPiBb wqAgMjQ2LjI5ODAwMl0gUjEwOiAwMDAwMDAwMDAwMDAzZTdmIFIxMTogMDAwMDAwMDAwMDAwMDAw MCBSMTI6DQo+IGZmZmZjMjU0NDFmZmJkOTANCj4gW8KgIDI0Ni4yOTg2ODddIFIxMzogZmZmZmMy NTQ0MWZmYmQ4OCBSMTQ6IGZmZmY5ZWQ5NGFmMjM4NTAgUjE1Og0KPiAwMDAwMDAwMDAwMDAwMDAx DQo+IFvCoCAyNDYuMjk5MzcyXSBGUzrCoCAwMDAwN2YxMTE0MDRkMzQwKDAwMDApIEdTOmZmZmY5 ZWU3ZmVjYzAwMDAoMDAwMCkNCj4ga25sR1M6MDAwMDAwMDAwMDAwMDAwMA0KPiBbwqAgMjQ2LjM5 ODAwNl0gQ1M6wqAgMDAxMCBEUzogMDAwMCBFUzogMDAwMCBDUjA6IDAwMDAwMDAwODAwNTAwMzMN Cj4gW8KgIDI0Ni4zOTg1NjldIENSMjogMDAwMDAwMDAwMDAwMDAwMCBDUjM6IDAwMDAwMDAxMjEx ZmMwMDEgQ1I0Og0KPiAwMDAwMDAwMDAwNzcwNmUwDQo+IFvCoCAyNDYuMzk5MjU0XSBEUjA6IDAw MDAwMDAwMDAwMDAwMDAgRFIxOiAwMDAwMDAwMDAwMDAwMDAwIERSMjoNCj4gMDAwMDAwMDAwMDAw MDAwMA0KPiBbwqAgMjQ2LjM5OTkzNF0gRFIzOiAwMDAwMDAwMDAwMDAwMDAwIERSNjogMDAwMDAw MDBmZmZlMGZmMCBEUjc6DQo+IDAwMDAwMDAwMDAwMDA0MDANCj4gW8KgIDI0Ni40OTg0MTRdIFBL UlU6IDU1NTU1NTU0DQo+IFvCoCAyNDYuNDk4Njk4XSBLZXJuZWwgcGFuaWMgLSBub3Qgc3luY2lu ZzogRmF0YWwgZXhjZXB0aW9uDQo+IFvCoCAyNDYuNTAwMDQyXSBLZXJuZWwgT2Zmc2V0OiAweDM4 MDAwMDAwIGZyb20gMHhmZmZmZmZmZjgxMDAwMDAwDQo+IChyZWxvY2F0aW9uIHJhbmdlOiAweGZm ZmZmZmZmODAwMDAwMDAtMHhmZmZmZmZmZmJmZmZmZmZmKQ0KPiBbwqAgMjQ2LjY5ODA5NF0gUmVi b290aW5nIGluIDUgc2Vjb25kcy4uDQo+IA0KPiBBbnkgaWRlYXMgd2hhdCBpcyBjYXVzaW5nIHRo aXMgYW5kIHdoYXQgdGhlIHJlc29sdXRpb24gaXM/IFRoaXMNCj4gZG9lc24ndA0KPiBvY2N1ciBv biB0aGUgdXBzdHJlYW0vbWFzdGVyIGtlcm5lbC4NCj4gDQo+IFRoYW5rcywNCj4gU3VyYWoNCj4g DQo+IE9uIE1vbiwgMjAyMy0xMi0xMSBhdCAxMzo1NyArMDEwMCwgZ3JlZ2toQGxpbnV4Zm91bmRh dGlvbi5vcmfCoHdyb3RlOg0KPiA+IA0KPiA+IFRoaXMgaXMgYSBub3RlIHRvIGxldCB5b3Uga25v dyB0aGF0IEkndmUganVzdCBhZGRlZCB0aGUgcGF0Y2gNCj4gPiB0aXRsZWQNCj4gPiANCj4gPiDC oMKgwqAgY2lmczogRml4IGZsdXNoaW5nLCBpbnZhbGlkYXRpb24gYW5kIGZpbGUgc2l6ZSB3aXRo DQo+ID4gY29weV9maWxlX3JhbmdlKCkNCj4gPiANCj4gPiB0byB0aGUgNi4xLXN0YWJsZSB0cmVl IHdoaWNoIGNhbiBiZSBmb3VuZCBhdDoNCj4gPiDCoMKgwqANCj4gPiBodHRwOi8vd3d3Lmtlcm5l bC5vcmcvZ2l0Lz9wPWxpbnV4L2tlcm5lbC9naXQvc3RhYmxlL3N0YWJsZS1xdWV1ZS5naXQ7YT1z dW1tYXJ5DQo+ID4gDQo+ID4gVGhlIGZpbGVuYW1lIG9mIHRoZSBwYXRjaCBpczoNCj4gPiDCoMKg wqDCoCBjaWZzLWZpeC1mbHVzaGluZy1pbnZhbGlkYXRpb24tYW5kLWZpbGUtc2l6ZS13aXRoLQ0K PiA+IGNvcHlfZmlsZV9yYW5nZS5wYXRjaA0KPiA+IGFuZCBpdCBjYW4gYmUgZm91bmQgaW4gdGhl IHF1ZXVlLTYuMSBzdWJkaXJlY3RvcnkuDQo+ID4gDQo+ID4gSWYgeW91LCBvciBhbnlvbmUgZWxz ZSwgZmVlbHMgaXQgc2hvdWxkIG5vdCBiZSBhZGRlZCB0byB0aGUgc3RhYmxlDQo+ID4gdHJlZSwN Cj4gPiBwbGVhc2UgbGV0IDxzdGFibGVAdmdlci5rZXJuZWwub3JnPiBrbm93IGFib3V0IGl0Lg0K PiA+IA0KPiA+IA0KPiA+ID4gRnJvbSA3YjI0MDRhODg2ZjhiOTEyNTBjMzE4NTVkMjg3ZTYzMjEy M2UxNzQ2IE1vbiBTZXAgMTcgMDA6MDA6MDANCj4gPiA+IDIwMDENCj4gPiBGcm9tOiBEYXZpZCBI b3dlbGxzIDxkaG93ZWxsc0ByZWRoYXQuY29tPg0KPiA+IERhdGU6IEZyaSwgMSBEZWMgMjAyMyAw MDoyMjowMCArMDAwMA0KPiA+IFN1YmplY3Q6IGNpZnM6IEZpeCBmbHVzaGluZywgaW52YWxpZGF0 aW9uIGFuZCBmaWxlIHNpemUgd2l0aA0KPiA+IGNvcHlfZmlsZV9yYW5nZSgpDQo+ID4gDQo+ID4g RnJvbTogRGF2aWQgSG93ZWxscyA8ZGhvd2VsbHNAcmVkaGF0LmNvbT4NCj4gPiANCj4gPiBjb21t aXQgN2IyNDA0YTg4NmY4YjkxMjUwYzMxODU1ZDI4N2U2MzIxMjNlMTc0NiB1cHN0cmVhbS4NCj4g PiANCj4gPiBGaXggYSBudW1iZXIgb2YgaXNzdWVzIGluIHRoZSBjaWZzIGZpbGVzeXN0ZW0gaW1w bGVtZW50YXRpb24gb2YgdGhlDQo+ID4gY29weV9maWxlX3JhbmdlKCkgc3lzY2FsbCBpbiBjaWZz X2ZpbGVfY29weWNodW5rX3JhbmdlKCkuDQo+ID4gDQo+ID4gRmlyc3RseSwgdGhlIGludmFsaWRh dGlvbiBvZiB0aGUgZGVzdGluYXRpb24gcmFuZ2UgaXMgaGFuZGxlZA0KPiA+IGluY29ycmVjdGx5 Og0KPiA+IFdlIHNob3VsZG4ndCBqdXN0IGludmFsaWRhdGUgdGhlIHdob2xlIGZpbGUgYXMgZGly dHkgZGF0YSBpbiB0aGUNCj4gPiBmaWxlDQo+ID4gbWF5DQo+ID4gZ2V0IGxvc3QgYW5kIHdlIGNh bid0IGp1c3QgY2FsbCB0cnVuY2F0ZV9pbm9kZV9wYWdlc19yYW5nZSgpIHRvDQo+ID4gaW52YWxp ZGF0ZQ0KPiA+IHRoZSBkZXN0aW5hdGlvbiByYW5nZSBhcyB0aGF0IHdpbGwgZXJhc2UgcGFydHMg b2YgYSBwYXJ0aWFsIGZvbGlvDQo+ID4gYXQNCj4gPiBlYWNoDQo+ID4gZW5kIHdoaWxzdCBpbnZh bGlkYXRpbmcgYW5kIGRpc2NhcmRpbmcgYWxsIHRoZSBmb2xpb3MgaW4gdGhlDQo+ID4gbWlkZGxl LsKgDQo+ID4gV2UNCj4gPiBuZWVkIHRvIGZvcmNlIGFsbCB0aGUgZm9saW9zIGNvdmVyaW5nIHRo ZSByYW5nZSB0byBiZSByZWxvYWRlZCwgYnV0DQo+ID4gd2UNCj4gPiBtdXN0bid0IGxvc2UgZGly dHkgZGF0YSBpbiB0aGVtIHRoYXQncyBub3QgaW4gdGhlIGRlc3RpbmF0aW9uDQo+ID4gcmFuZ2Uu DQo+ID4gDQo+ID4gRnVydGhlciwgd2Ugc2hvdWxkbid0IHNpbXBseSByb3VuZCBvdXQgdGhlIHJh bmdlIHRvIFBBR0VfU0laRSBhdA0KPiA+IGVhY2gNCj4gPiBlbmQNCj4gPiBhcyBjaWZzIHNob3Vs ZCBtb3ZlIHRvIHN1cHBvcnQgbXVsdGlwYWdlIGZvbGlvcy4NCj4gPiANCj4gPiBTZWNvbmRseSwg dGhlcmUncyBhbiBpc3N1ZSB3aGVyZWJ5IGEgd3JpdGUgbWF5IGhhdmUgZXh0ZW5kZWQgdGhlDQo+ ID4gZmlsZQ0KPiA+IGxvY2FsbHksIGJ1dCBub3QgaGF2ZSBiZWVuIHdyaXR0ZW4gYmFjayB5ZXQu wqAgVGhpcyBjYW4gbGVhdmVzIHRoZQ0KPiA+IGxvY2FsDQo+ID4gaWRlYSBvZiB0aGUgRU9GIGF0 IGEgbGF0ZXIgcG9pbnQgdGhhbiB0aGUgc2VydmVyJ3MgRU9GLsKgIElmIGEgY29weQ0KPiA+IHJl cXVlc3QNCj4gPiBpcyBpc3N1ZWQsIHRoaXMgd2lsbCBmYWlsIG9uIHRoZSBzZXJ2ZXIgd2l0aA0K PiA+IFNUQVRVU19JTlZBTElEX1ZJRVdfU0laRQ0KPiA+ICh3aGljaCBnZXRzIHRyYW5zbGF0ZWQg dG8gLUVJTyBsb2NhbGx5KSBpZiB0aGUgY29weSBzb3VyY2UgZXh0ZW5kcw0KPiA+IHBhc3QgdGhl DQo+ID4gc2VydmVyJ3MgRU9GLg0KPiA+IA0KPiA+IEZpeCB0aGlzIGJ5Og0KPiA+IA0KPiA+IMKg KDApIEZsdXNoIHRoZSBzb3VyY2UgcmVnaW9uIChhbHJlYWR5IGRvbmUpLsKgIFRoZSBmbHVzaCBk b2VzDQo+ID4gbm90aGluZw0KPiA+IGFuZA0KPiA+IMKgwqDCoMKgIHRoZSBFT0YgaXNuJ3QgbW92 ZWQgaWYgdGhlIHNvdXJjZSByZWdpb24gaGFzIG5vIGRpcnR5IGRhdGEuDQo+ID4gDQo+ID4gwqAo MSkgTW92ZSB0aGUgRU9GIHRvIHRoZSBlbmQgb2YgdGhlIHNvdXJjZSByZWdpb24gaWYgaXQgaXNu J3QNCj4gPiBhbHJlYWR5DQo+ID4gYXQNCj4gPiDCoMKgwqDCoCBsZWFzdCBhdCB0aGlzIHBvaW50 LsKgIElmIHdlIGNhbid0IGRvIHRoaXMsIGZvciBpbnN0YW5jZSBpZiB0aGUNCj4gPiBzZXJ2ZXIN Cj4gPiDCoMKgwqDCoCBkb2Vzbid0IHN1cHBvcnQgaXQsIGp1c3QgZmx1c2ggdGhlIGVudGlyZSBz b3VyY2UgZmlsZS4NCj4gPiANCj4gPiDCoCgyKSBGaW5kIHRoZSBmb2xpbyAoaWYgcHJlc2VudCkg YXQgZWFjaCBlbmQgb2YgdGhlIHJhbmdlLCBmbHVzaGluZw0KPiA+IGl0IGFuZA0KPiA+IMKgwqDC oMKgIGluY3JlYXNpbmcgdGhlIHJlZ2lvbi10by1iZS1pbnZhbGlkYXRlZCB0byBjb3ZlciB0aG9z ZSBpbg0KPiA+IHRoZWlyDQo+ID4gwqDCoMKgwqAgZW50aXJldHkuDQo+ID4gDQo+ID4gwqAoMykg RnVsbHkgZGlzY2FyZCBhbGwgdGhlIGZvbGlvcyBjb3ZlcmluZyB0aGUgcmFuZ2UgYXMgd2Ugd2Fu dA0KPiA+IHRoZW0NCj4gPiB0byBiZQ0KPiA+IMKgwqDCoMKgIHJlbG9hZGVkLg0KPiA+IA0KPiA+ IMKgKDQpIFRoZW4gcGVyZm9ybSB0aGUgY29weS4NCj4gPiANCj4gPiBUaGlyZGx5LCBzZXQgaV9z aXplIGFmdGVyIGRvaW5nIHRoZSBjb3B5Y2h1bmtfcmFuZ2Ugb3BlcmF0aW9uIGFzDQo+ID4gdGhp cw0KPiA+IHZhbHVlDQo+ID4gbWF5IGJlIHVzZWQgYnkgdmFyaW91cyB0aGluZ3MgaW50ZXJuYWxs eS7CoCBzdGF0KCkgaGlkZXMgdGhlIGlzc3VlDQo+ID4gYmVjYXVzZQ0KPiA+IHNldHRpbmcgLT50 aW1lIHRvIDAgY2F1c2VzIGNpZnNfZ2V0YXRyKCkgdG8gcmV2YWxpZGF0ZSB0aGUNCj4gPiBhdHRy aWJ1dGVzLg0KPiA+IA0KPiA+IFRoZXNlIHdlcmUgY2F1c2luZyB0aGUgZ2VuZXJpYy8wNzUgeGZz dGVzdCB0byBmYWlsLg0KPiA+IA0KPiA+IEZpeGVzOiA2MjBkODc0NWIzNWQgKCJJbnRyb2R1Y2Ug Y2lmc19jb3B5X2ZpbGVfcmFuZ2UoKSIpDQo+ID4gQ2M6IHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmcN Cj4gPiBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBIb3dlbGxzIDxkaG93ZWxsc0ByZWRoYXQuY29tPg0K PiA+IGNjOiBQYXVsbyBBbGNhbnRhcmEgPHBjQG1hbmd1ZWJpdC5jb20+DQo+ID4gY2M6IFNoeWFt IFByYXNhZCBOIDxuc3BtYW5nYWxvcmVAZ21haWwuY29tPg0KPiA+IGNjOiBSb2hpdGggU3VyYWJh dHR1bGEgPHJvaGl0aHMubXNmdEBnbWFpbC5jb20+DQo+ID4gY2M6IE1hdHRoZXcgV2lsY294IDx3 aWxseUBpbmZyYWRlYWQub3JnPg0KPiA+IGNjOiBKZWZmIExheXRvbiA8amxheXRvbkBrZXJuZWwu b3JnPg0KPiA+IGNjOiBsaW51eC1jaWZzQHZnZXIua2VybmVsLm9yZw0KPiA+IGNjOiBsaW51eC1t bUBrdmFjay5vcmcNCj4gPiBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBIb3dlbGxzIDxkaG93ZWxsc0By ZWRoYXQuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFN0ZXZlIEZyZW5jaCA8c3RmcmVuY2hAbWlj cm9zb2Z0LmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdr aEBsaW51eGZvdW5kYXRpb24ub3JnPg0KPiA+IC0tLQ0KPiA+IMKgZnMvc21iL2NsaWVudC9jaWZz ZnMuYyB8wqAgMTAyDQo+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLQ0KPiA+IMKgMSBmaWxlIGNoYW5nZWQsIDk5IGluc2VydGlvbnMoKyksIDMgZGVs ZXRpb25zKC0pDQo+ID4gDQo+ID4gLS0tIGEvZnMvc21iL2NsaWVudC9jaWZzZnMuYw0KPiA+ICsr KyBiL2ZzL3NtYi9jbGllbnQvY2lmc2ZzLmMNCj4gPiBAQCAtMTE5MSw2ICsxMTkxLDcyIEBAIGNv bnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGNpZnNfc3ltbGkNCj4gPiDCoMKgwqDCoMKgwqDC oMKgLmxpc3R4YXR0ciA9IGNpZnNfbGlzdHhhdHRyLA0KPiA+IMKgfTsNCj4gPiDCoA0KPiA+ICsv Kg0KPiA+ICsgKiBBZHZhbmNlIHRoZSBFT0YgbWFya2VyIHRvIGFmdGVyIHRoZSBzb3VyY2UgcmFu Z2UuDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW50IGNpZnNfcHJlY29weV9zZXRfZW9mKHN0cnVj dCBpbm9kZSAqc3JjX2lub2RlLCBzdHJ1Y3QNCj4gPiBjaWZzSW5vZGVJbmZvICpzcmNfY2lmc2ks DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgc3RydWN0IGNpZnNfdGNvbiAqc3JjX3Rjb24sDQo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdW5zaWdu ZWQgaW50IHhpZCwgbG9mZl90IHNyY19lbmQpDQo+ID4gK3sNCj4gPiArwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgY2lmc0ZpbGVJbmZvICp3cml0ZWFibGVfc3JjZmlsZTsNCj4gPiArwqDCoMKgwqDCoMKg wqBpbnQgcmMgPSAtRUlOVkFMOw0KPiA+ICsNCj4gPiArwqDCoMKgwqDCoMKgwqB3cml0ZWFibGVf c3JjZmlsZSA9IGZpbmRfd3JpdGFibGVfZmlsZShzcmNfY2lmc2ksDQo+ID4gRklORF9XUl9GU1VJ RF9PTkxZKTsNCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAod3JpdGVhYmxlX3NyY2ZpbGUpIHsNCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHNyY190Y29uLT5zZXMtPnNlcnZl ci0+b3BzLT5zZXRfZmlsZV9zaXplKQ0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcmMgPSBzcmNfdGNvbi0+c2VzLT5zZXJ2ZXItPm9wcy0NCj4gPiA+ IHNldF9maWxlX3NpemUoDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGlkLCBzcmNfdGNvbiwgd3JpdGVhYmxlX3NyY2Zp bGUsDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgc3JjX2lub2RlLT5pX3NpemUsIHRydWUgLyogbm8gbmVlZA0KPiA+IHRv DQo+ID4gc2V0IHNwYXJzZSAqLyk7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGVsc2UNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHJjID0gLUVOT1NZUzsNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2lmc0Zp bGVJbmZvX3B1dCh3cml0ZWFibGVfc3JjZmlsZSk7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGNpZnNfZGJnKEZZSSwgIlNldEZTaXplIGZvciBjb3B5Y2h1bmsgcmMgPSAlZFxu IiwNCj4gPiByYyk7DQo+ID4gK8KgwqDCoMKgwqDCoMKgfQ0KPiA+ICsNCj4gPiArwqDCoMKgwqDC oMKgwqBpZiAocmMgPCAwKQ0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3Rv IHNldF9mYWlsZWQ7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoMKgwqDCoG5ldGZzX3Jlc2l6ZV9maWxl KCZzcmNfY2lmc2ktPm5ldGZzLCBzcmNfZW5kKTsNCj4gPiArwqDCoMKgwqDCoMKgwqBmc2NhY2hl X3Jlc2l6ZV9jb29raWUoY2lmc19pbm9kZV9jb29raWUoc3JjX2lub2RlKSwNCj4gPiBzcmNfZW5k KTsNCj4gPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsNCj4gPiArDQo+ID4gK3NldF9mYWlsZWQ6 DQo+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIGZpbGVtYXBfd3JpdGVfYW5kX3dhaXQoc3JjX2lu b2RlLT5pX21hcHBpbmcpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBGbHVzaCBv dXQgZWl0aGVyIHRoZSBmb2xpbyB0aGF0IG92ZXJsYXBzIHRoZSBiZWdpbm5pbmcgb2YgYQ0KPiA+ IHJhbmdlDQo+ID4gaW4gd2hpY2gNCj4gPiArICogcG9zIHJlc2lkZXMgb3IgdGhlIGZvbGlvIHRo YXQgb3ZlcmxhcHMgdGhlIGVuZCBvZiBhIHJhbmdlDQo+ID4gdW5sZXNzDQo+ID4gdGhhdCBmb2xp bw0KPiA+ICsgKiBpcyBlbnRpcmVseSB3aXRoaW4gdGhlIHJhbmdlIHdlJ3JlIGdvaW5nIHRvIGlu dmFsaWRhdGUuwqAgV2UNCj4gPiBleHRlbmQgdGhlIGZsdXNoDQo+ID4gKyAqIGJvdW5kcyB0byBl bmNvbXBhc3MgdGhlIGZvbGlvLg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGludCBjaWZzX2ZsdXNo X2ZvbGlvKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBwb3MsDQo+ID4gbG9mZl90DQo+ID4g Kl9mc3RhcnQsIGxvZmZfdCAqX2ZlbmQsDQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYm9vbCBmaXJzdCkNCj4gPiArew0KPiA+ICvCoMKg wqDCoMKgwqDCoHN0cnVjdCBmb2xpbyAqZm9saW87DQo+ID4gK8KgwqDCoMKgwqDCoMKgdW5zaWdu ZWQgbG9uZyBsb25nIGZwb3MsIGZlbmQ7DQo+ID4gK8KgwqDCoMKgwqDCoMKgcGdvZmZfdCBpbmRl eCA9IHBvcyAvIFBBR0VfU0laRTsNCj4gPiArwqDCoMKgwqDCoMKgwqBzaXplX3Qgc2l6ZTsNCj4g PiArwqDCoMKgwqDCoMKgwqBpbnQgcmMgPSAwOw0KPiA+ICsNCj4gPiArwqDCoMKgwqDCoMKgwqBm b2xpbyA9IGZpbGVtYXBfZ2V0X2ZvbGlvKGlub2RlLT5pX21hcHBpbmcsIGluZGV4KTsNCj4gPiAr wqDCoMKgwqDCoMKgwqBpZiAoSVNfRVJSKGZvbGlvKSkNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcmV0dXJuIDA7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoMKgwqDCoHNpemUgPSBm b2xpb19zaXplKGZvbGlvKTsNCj4gPiArwqDCoMKgwqDCoMKgwqBmcG9zID0gZm9saW9fcG9zKGZv bGlvKTsNCj4gPiArwqDCoMKgwqDCoMKgwqBmZW5kID0gZnBvcyArIHNpemUgLSAxOw0KPiA+ICvC oMKgwqDCoMKgwqDCoCpfZnN0YXJ0ID0gbWluX3QodW5zaWduZWQgbG9uZyBsb25nLCAqX2ZzdGFy dCwgZnBvcyk7DQo+ID4gK8KgwqDCoMKgwqDCoMKgKl9mZW5kwqDCoCA9IG1heF90KHVuc2lnbmVk IGxvbmcgbG9uZywgKl9mZW5kLCBmZW5kKTsNCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoKGZpcnN0 ICYmIHBvcyA9PSBmcG9zKSB8fCAoIWZpcnN0ICYmIHBvcyA9PSBmZW5kKSkNCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBvdXQ7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoMKg wqDCoHJjID0gZmlsZW1hcF93cml0ZV9hbmRfd2FpdF9yYW5nZShpbm9kZS0+aV9tYXBwaW5nLCBm cG9zLA0KPiA+IGZlbmQpOw0KPiA+ICtvdXQ6DQo+ID4gK8KgwqDCoMKgwqDCoMKgZm9saW9fcHV0 KGZvbGlvKTsNCj4gPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gcmM7DQo+ID4gK30NCj4gPiArDQo+ ID4gwqBzdGF0aWMgbG9mZl90IGNpZnNfcmVtYXBfZmlsZV9yYW5nZShzdHJ1Y3QgZmlsZSAqc3Jj X2ZpbGUsIGxvZmZfdA0KPiA+IG9mZiwNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHN0cnVjdCBmaWxlICpkc3RfZmlsZSwgbG9mZl90IGRlc3RvZmYsIGxvZmZfdCBsZW4sDQo+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgcmVtYXBfZmxh Z3MpDQo+ID4gQEAgLTEyNjAsMTAgKzEzMjYsMTIgQEAgc3NpemVfdCBjaWZzX2ZpbGVfY29weWNo dW5rX3JhbmdlKHVuc2lnbg0KPiA+IMKgew0KPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW5v ZGUgKnNyY19pbm9kZSA9IGZpbGVfaW5vZGUoc3JjX2ZpbGUpOw0KPiA+IMKgwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgaW5vZGUgKnRhcmdldF9pbm9kZSA9IGZpbGVfaW5vZGUoZHN0X2ZpbGUpOw0KPiA+ ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBjaWZzSW5vZGVJbmZvICpzcmNfY2lmc2kgPSBDSUZTX0ko c3JjX2lub2RlKTsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGNpZnNGaWxlSW5mbyAqc21i X2ZpbGVfc3JjOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgY2lmc0ZpbGVJbmZvICpzbWJf ZmlsZV90YXJnZXQ7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBjaWZzX3Rjb24gKnNyY190 Y29uOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgY2lmc190Y29uICp0YXJnZXRfdGNvbjsN Cj4gPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBsb25nIGxvbmcgZGVzdGVuZCwgZnN0YXJ0LCBm ZW5kOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqBzc2l6ZV90IHJjOw0KPiA+IMKgDQo+ID4gwqDCoMKg wqDCoMKgwqDCoGNpZnNfZGJnKEZZSSwgImNvcHljaHVuayByYW5nZVxuIik7DQo+ID4gQEAgLTEz MDMsMTMgKzEzNzEsNDEgQEAgc3NpemVfdCBjaWZzX2ZpbGVfY29weWNodW5rX3JhbmdlKHVuc2ln bg0KPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAocmMpDQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBnb3RvIHVubG9jazsNCj4gPiDCoA0KPiA+IC3CoMKgwqDCoMKgwqDCoC8qIHNo b3VsZCB3ZSBmbHVzaCBmaXJzdCBhbmQgbGFzdCBwYWdlIGZpcnN0ICovDQo+ID4gLcKgwqDCoMKg wqDCoMKgdHJ1bmNhdGVfaW5vZGVfcGFnZXMoJnRhcmdldF9pbm9kZS0+aV9kYXRhLCAwKTsNCj4g PiArwqDCoMKgwqDCoMKgwqAvKiBUaGUgc2VydmVyLXNpZGUgY29weSB3aWxsIGZhaWwgaWYgdGhl IHNvdXJjZSBjcm9zc2VzIHRoZQ0KPiA+IEVPRiBtYXJrZXIuDQo+ID4gK8KgwqDCoMKgwqDCoMKg ICogQWR2YW5jZSB0aGUgRU9GIG1hcmtlciBhZnRlciB0aGUgZmx1c2ggYWJvdmUgdG8gdGhlIGVu ZA0KPiA+IG9mDQo+ID4gdGhlIHJhbmdlDQo+ID4gK8KgwqDCoMKgwqDCoMKgICogaWYgaXQncyBz aG9ydCBvZiB0aGF0Lg0KPiA+ICvCoMKgwqDCoMKgwqDCoCAqLw0KPiA+ICvCoMKgwqDCoMKgwqDC oGlmIChzcmNfY2lmc2ktPnNlcnZlcl9lb2YgPCBvZmYgKyBsZW4pIHsNCj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmMgPSBjaWZzX3ByZWNvcHlfc2V0X2VvZihzcmNfaW5vZGUs IHNyY19jaWZzaSwNCj4gPiBzcmNfdGNvbiwgeGlkLCBvZmYgKyBsZW4pOw0KPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAocmMgPCAwKQ0KPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byB1bmxvY2s7DQo+ID4gK8KgwqDCoMKg wqDCoMKgfQ0KPiA+ICsNCj4gPiArwqDCoMKgwqDCoMKgwqBkZXN0ZW5kID0gZGVzdG9mZiArIGxl biAtIDE7DQo+ID4gKw0KPiA+ICvCoMKgwqDCoMKgwqDCoC8qIEZsdXNoIHRoZSBmb2xpb3MgYXQg ZWl0aGVyIGVuZCBvZiB0aGUgZGVzdGluYXRpb24gcmFuZ2UNCj4gPiB0bw0KPiA+IHByZXZlbnQN Cj4gPiArwqDCoMKgwqDCoMKgwqAgKiBhY2NpZGVudGFsIGxvc3Mgb2YgZGlydHkgZGF0YSBvdXRz aWRlIG9mIHRoZSByYW5nZS4NCj4gPiArwqDCoMKgwqDCoMKgwqAgKi8NCj4gPiArwqDCoMKgwqDC oMKgwqBmc3RhcnQgPSBkZXN0b2ZmOw0KPiA+ICvCoMKgwqDCoMKgwqDCoGZlbmQgPSBkZXN0ZW5k Ow0KPiA+ICsNCj4gPiArwqDCoMKgwqDCoMKgwqByYyA9IGNpZnNfZmx1c2hfZm9saW8odGFyZ2V0 X2lub2RlLCBkZXN0b2ZmLCAmZnN0YXJ0LA0KPiA+ICZmZW5kLA0KPiA+IHRydWUpOw0KPiA+ICvC oMKgwqDCoMKgwqDCoGlmIChyYykNCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Z290byB1bmxvY2s7DQo+ID4gK8KgwqDCoMKgwqDCoMKgcmMgPSBjaWZzX2ZsdXNoX2ZvbGlvKHRh cmdldF9pbm9kZSwgZGVzdGVuZCwgJmZzdGFydCwNCj4gPiAmZmVuZCwNCj4gPiBmYWxzZSk7DQo+ ID4gK8KgwqDCoMKgwqDCoMKgaWYgKHJjKQ0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBnb3RvIHVubG9jazsNCj4gPiArDQo+ID4gK8KgwqDCoMKgwqDCoMKgLyogRGlzY2FyZCBh bGwgdGhlIGZvbGlvcyB0aGF0IG92ZXJsYXAgdGhlIGRlc3RpbmF0aW9uDQo+ID4gcmVnaW9uLiAq Lw0KPiA+ICvCoMKgwqDCoMKgwqDCoHRydW5jYXRlX2lub2RlX3BhZ2VzX3JhbmdlKCZ0YXJnZXRf aW5vZGUtPmlfZGF0YSwgZnN0YXJ0LA0KPiA+IGZlbmQpOw0KPiA+IMKgDQo+ID4gwqDCoMKgwqDC oMKgwqDCoHJjID0gZmlsZV9tb2RpZmllZChkc3RfZmlsZSk7DQo+ID4gLcKgwqDCoMKgwqDCoMKg aWYgKCFyYykNCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoIXJjKSB7DQo+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqByYyA9IHRhcmdldF90Y29uLT5zZXMtPnNlcnZlci0+b3BzLQ0K PiA+ID4gY29weWNodW5rX3JhbmdlKHhpZCwNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzbWJfZmlsZV9zcmMsIHNtYl9maWxlX3RhcmdldCwgb2Zm LCBsZW4sDQo+ID4gZGVzdG9mZik7DQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGlmIChyYyA+IDAgJiYgZGVzdG9mZiArIHJjID4NCj4gPiBpX3NpemVfcmVhZCh0YXJnZXRfaW5v ZGUpKQ0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg dHJ1bmNhdGVfc2V0c2l6ZSh0YXJnZXRfaW5vZGUsIGRlc3RvZmYgKw0KPiA+IHJjKTsNCj4gPiAr wqDCoMKgwqDCoMKgwqB9DQo+ID4gwqANCj4gPiDCoMKgwqDCoMKgwqDCoMKgZmlsZV9hY2Nlc3Nl ZChzcmNfZmlsZSk7DQo+ID4gwqANCj4gPiANCj4gPiANCj4gPiBQYXRjaGVzIGN1cnJlbnRseSBp biBzdGFibGUtcXVldWUgd2hpY2ggbWlnaHQgYmUgZnJvbQ0KPiA+IGRob3dlbGxzQHJlZGhhdC5j b23CoGFyZQ0KPiA+IA0KPiA+IHF1ZXVlLTYuMS9jaWZzLWZpeC1mbHVzaGluZy1pbnZhbGlkYXRp b24tYW5kLWZpbGUtc2l6ZS13aXRoLQ0KPiA+IGNvcHlfZmlsZV9yYW5nZS5wYXRjaA0KPiA+IHF1 ZXVlLTYuMS9jaWZzLWZpeC1mbHVzaGluZy1pbnZhbGlkYXRpb24tYW5kLWZpbGUtc2l6ZS13aXRo LQ0KPiA+IGZpY2xvbmUucGF0Y2gNCj4gPiBxdWV1ZS02LjEvY2lmcy1maXgtbm9uLWF2YWlsYWJp bGl0eS1vZi1kZWR1cC1icmVha2luZy1nZW5lcmljLQ0KPiA+IDMwNC5wYXRjaA0KPiA+IA0KPiAN Cg0K