From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ZXSHCAS2.zhaoxin.com (unknown [203.148.12.82]) by sourceware.org (Postfix) with ESMTPS id 6D57F385DC30 for ; Fri, 10 Apr 2020 13:24:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 6D57F385DC30 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=zhaoxin.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=Mayshao-oc@zhaoxin.com Received: from zxbjmbx3.zhaoxin.com (10.29.252.165) by ZXSHCAS2.zhaoxin.com (10.28.252.162) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1261.35; Fri, 10 Apr 2020 21:01:30 +0800 Received: from zxbjmbx2.zhaoxin.com (10.29.252.164) by zxbjmbx3.zhaoxin.com (10.29.252.165) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1261.35; Fri, 10 Apr 2020 21:01:29 +0800 Received: from zxbjmbx2.zhaoxin.com ([fe80::4d77:9dba:64a8:8ec3]) by zxbjmbx2.zhaoxin.com ([fe80::4d77:9dba:64a8:8ec3%4]) with mapi id 15.01.1261.035; Fri, 10 Apr 2020 21:01:29 +0800 From: Mayshao-oc To: "H.J. Lu" CC: GNU C Library , "Cooper Yan(BJ-RD)" , "Herry Yang(BJ-RD)" , "Ricky Li(BJ-RD)" , "Qiyuan Wang(BJ-RD)" Subject: RE: [PATCH v2 2/3] x86: Add cache information support for Zhaoxin processors Thread-Topic: [PATCH v2 2/3] x86: Add cache information support for Zhaoxin processors Thread-Index: AQHWDNovloQPjyjpPUK5JXjcoqlquKhxky+ggAAqTYCAABL6YA== Date: Fri, 10 Apr 2020 13:01:28 +0000 Message-ID: <13afd2af201746ef83ac4f506d000192@zhaoxin.com> References: <1585546430-6167-1-git-send-email-MayShao@zhaoxin.com> <1585546430-6167-3-git-send-email-MayShao@zhaoxin.com> <0894bcfa963547c79bdd2d33e6305ce2@zhaoxin.com> In-Reply-To: Accept-Language: en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.29.28.25] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Spam-Status: No, score=-26.6 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Apr 2020 13:24:11 -0000 DQpPbiBGcmksIEFwciAxMCwgMjAyMCBhdCA3OjUzIFBNIEguSi4gTHUgPGhqbC50b29sc0BnbWFp bC5jb20+IHdyb3RlOg0KPiANCj4gT24gVGh1LCBBcHIgOSwgMjAyMCBhdCA3OjM0IFBNIE1heXNo YW8tb2MgPE1heXNoYW8tb2NAemhhb3hpbi5jb20+DQo+IHdyb3RlOg0KPiA+DQo+ID4NCj4gPiBP biBUdWUsIEFwcmlsIDcsIDIwMjAgYXQgODo0NCBQTSBILkouIEx1IDxoamwudG9vbHNAZ21haWwu Y29tPiB3cm90ZToNCj4gPiA+DQo+ID4gPiBPbiBTdW4sIE1hciAyOSwgMjAyMCBhdCAxMDozNSBQ TSBNYXlTaGFvIDxNYXlTaGFvQHpoYW94aW4uY29tPg0KPiB3cm90ZToNCj4gPiA+ID4NCj4gPiA+ ID4gVG8gb2J0YWluIFpoYW94aW4gQ1BVIGNhY2hlIGluZm9ybWF0aW9uLCBhZGQgYSBuZXcgZnVu Y3Rpb24NCj4gPiA+ID4gaGFuZGxlX3poYW94aW4oKS4NCj4gPiA+ID4NCj4gPiA+ID4gQWRkIFpo YW94aW4gYnJhbmNoIGluIGluaXRfY2FjaGVpbmZvKCkgZm9yIGluaXRpYWxpemluZyB2YXJpYWJs ZXMsDQo+ID4gPiA+IHN1Y2ggYXMgX194ODZfc2hhcmVkX2NhY2hlX3NpemUuDQo+ID4gPiA+DQo+ ID4gPiA+IC0tLQ0KPiA+ID4gPiAgc3lzZGVwcy94ODYvY2FjaGVpbmZvLmMgfCAxODUNCj4gPiA+ ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ID4g PiAgMSBmaWxlIGNoYW5nZWQsIDE4NSBpbnNlcnRpb25zKCspDQo+ID4gPiA+DQo+ID4gPiA+IGRp ZmYgLS1naXQgYS9zeXNkZXBzL3g4Ni9jYWNoZWluZm8uYyBiL3N5c2RlcHMveDg2L2NhY2hlaW5m by5jDQo+ID4gPiA+IGluZGV4IGUzZThlZjIuLmU1YTMyODQgMTAwNjQ0DQo+ID4gPiA+IC0tLSBh L3N5c2RlcHMveDg2L2NhY2hlaW5mby5jDQo+ID4gPiA+ICsrKyBiL3N5c2RlcHMveDg2L2NhY2hl aW5mby5jDQo+ID4gPiA+IEBAIC00MzYsNiArNDM2LDU3IEBAIGhhbmRsZV9hbWQgKGludCBuYW1l KQ0KPiA+ID4gPiAgfQ0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiArc3RhdGljIGxvbmcgaW50 IF9fYXR0cmlidXRlX18gKChub2lubGluZSkpDQo+ID4gPiA+ICtoYW5kbGVfemhhb3hpbiAoaW50 IG5hbWUpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsgIHVuc2lnbmVkIGludCBlYXg7DQo+ID4gPiA+ ICsgIHVuc2lnbmVkIGludCBlYng7DQo+ID4gPiA+ICsgIHVuc2lnbmVkIGludCBlY3g7DQo+ID4g PiA+ICsgIHVuc2lnbmVkIGludCBlZHg7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgaW50IGZvbGRl ZF9yZWxfbmFtZSA9IChNKG5hbWUpIC8gMykgKiAzOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgIHVu c2lnbmVkIGludCByb3VuZCA9IDA7DQo+ID4gPiA+ICsgIHdoaWxlICgxKQ0KPiA+ID4gPiArICAg IHsNCj4gPiA+ID4gKyAgICAgIF9fY3B1aWRfY291bnQgKDQsIHJvdW5kLCBlYXgsIGVieCwgZWN4 LCBlZHgpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICBlbnVtIHsgbnVsbCA9IDAsIGRhdGEg PSAxLCBpbnN0ID0gMiwgdW5pID0gMyB9IHR5cGUgPSBlYXggJiAweDFmOw0KPiA+ID4gPiArICAg ICAgaWYgKHR5cGUgPT0gbnVsbCkNCj4gPiA+ID4gKyAgICAgICAgYnJlYWs7DQo+ID4gPiA+ICsN Cj4gPiA+ID4gKyAgICAgIHVuc2lnbmVkIGludCBsZXZlbCA9IChlYXggPj4gNSkgJiAweDc7DQo+ ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgIGlmICgobGV2ZWwgPT0gMSAmJiB0eXBlID09IGRhdGEN Cj4gPiA+ID4gKyAgICAgICAgJiYgZm9sZGVkX3JlbF9uYW1lID09IE0oX1NDX0xFVkVMMV9EQ0FD SEVfU0laRSkpDQo+ID4gPiA+ICsgICAgICAgIHx8IChsZXZlbCA9PSAxICYmIHR5cGUgPT0gaW5z dA0KPiA+ID4gPiArICAgICAgICAgICAgJiYgZm9sZGVkX3JlbF9uYW1lID09IE0oX1NDX0xFVkVM MV9JQ0FDSEVfU0laRSkpDQo+ID4gPiA+ICsgICAgICAgIHx8IChsZXZlbCA9PSAyICYmIGZvbGRl ZF9yZWxfbmFtZSA9PQ0KPiA+ID4gTShfU0NfTEVWRUwyX0NBQ0hFX1NJWkUpKQ0KPiA+ID4gPiAr ICAgICAgICB8fCAobGV2ZWwgPT0gMyAmJiBmb2xkZWRfcmVsX25hbWUgPT0NCj4gPiA+IE0oX1ND X0xFVkVMM19DQUNIRV9TSVpFKSkpDQo+ID4gPiA+ICsgICAgICAgIHsNCj4gPiA+ID4gKyAgICAg ICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0ID0gTShuYW1lKSAtIGZvbGRlZF9yZWxfbmFtZTsNCj4g PiA+ID4gKw0KPiA+ID4gPiArICAgICAgICAgIGlmIChvZmZzZXQgPT0gMCkNCj4gPiA+ID4gKyAg ICAgICAgICAgIC8qIENhY2hlIHNpemUuICAqLw0KPiA+ID4gPiArICAgICAgICAgICAgcmV0dXJu ICgoKGVieCA+PiAyMikgKyAxKQ0KPiA+ID4gPiArICAgICAgICAgICAgICAgICogKCgoZWJ4ID4+ IDEyKSAmIDB4M2ZmKSArIDEpDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgKiAoKGVieCAmIDB4 ZmZmKSArIDEpDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgKiAoZWN4ICsgMSkpOw0KPiA+ID4g PiArICAgICAgICAgIGlmIChvZmZzZXQgPT0gMSkNCj4gPiA+ID4gKyAgICAgICAgICAgIHJldHVy biAoZWJ4ID4+IDIyKSArIDE7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgICAgICBhc3NlcnQg KG9mZnNldCA9PSAyKTsNCj4gPiA+ID4gKyAgICAgICAgICByZXR1cm4gKGVieCAmIDB4ZmZmKSAr IDE7DQo+ID4gPiA+ICsgICAgICAgIH0NCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgKytyb3Vu ZDsNCj4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgLyogTm90aGluZyBmb3Vu ZC4gICovDQo+ID4gPiA+ICsgIHJldHVybiAwOw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4g PiA+ICsNCj4gPiA+ID4gIC8qIEdldCB0aGUgdmFsdWUgb2YgdGhlIHN5c3RlbSB2YXJpYWJsZSBO QU1FLiAgKi8NCj4gPiA+ID4gIGxvbmcgaW50DQo+ID4gPiA+ICBhdHRyaWJ1dGVfaGlkZGVuDQo+ ID4gPiA+IEBAIC00NDksNiArNTAwLDkgQEAgX19jYWNoZV9zeXNjb25mIChpbnQgbmFtZSkNCj4g PiA+ID4gICAgaWYgKGNwdV9mZWF0dXJlcy0+YmFzaWMua2luZCA9PSBhcmNoX2tpbmRfYW1kKQ0K PiA+ID4gPiAgICAgIHJldHVybiBoYW5kbGVfYW1kIChuYW1lKTsNCj4gPiA+ID4NCj4gPiA+ID4g KyAgaWYgKGNwdV9mZWF0dXJlcy0+YmFzaWMua2luZCA9PSBhcmNoX2tpbmRfemhhb3hpbikNCj4g PiA+ID4gKyAgICByZXR1cm4gaGFuZGxlX3poYW94aW4gKG5hbWUpOw0KPiA+ID4gPiArDQo+ID4g PiA+ICAgIC8vIFhYWCBGaWxsIGluIG1vcmUgdmVuZG9ycy4NCj4gPiA+ID4NCj4gPiA+ID4gICAg LyogQ1BVIG5vdCBrbm93biwgd2UgaGF2ZSBubyBpbmZvcm1hdGlvbi4gICovDQo+ID4gPiA+IEBA IC03NTEsNiArODA1LDEzNyBAQCBpbnRlbF9idWdfbm9fY2FjaGVfaW5mbzoNCj4gPiA+ID4gICAg ICAgICB9DQo+ID4gPiA+ICAjZW5kaWYNCj4gPiA+ID4gICAgICB9DQo+ID4gPiA+ICsgIGVsc2Ug aWYgKGNwdV9mZWF0dXJlcy0+YmFzaWMua2luZCA9PSBhcmNoX2tpbmRfemhhb3hpbikNCj4gPiA+ ID4gKyAgICB7DQo+ID4gPiA+ICsgICAgICBkYXRhICAgPSBoYW5kbGVfemhhb3hpbiAoX1NDX0xF VkVMMV9EQ0FDSEVfU0laRSk7DQo+ID4gPiA+ICsgICAgICBsb25nIGludCBjb3JlID0gaGFuZGxl X3poYW94aW4gKF9TQ19MRVZFTDJfQ0FDSEVfU0laRSk7DQo+ID4gPiA+ICsgICAgICBzaGFyZWQg PSBoYW5kbGVfemhhb3hpbiAoX1NDX0xFVkVMM19DQUNIRV9TSVpFKTsNCj4gPiA+ID4gKw0KPiA+ ID4gPiArICAgICAgLyogTnVtYmVyIG9mIGxvZ2ljYWwgcHJvY2Vzc29ycyBzaGFyaW5nIEwyIGNh Y2hlLiAgKi8NCj4gPiA+ID4gKyAgICAgIGludCB0aHJlYWRzX2wyOw0KPiA+ID4gPiArDQo+ID4g PiA+ICsgICAgICAvKiBOdW1iZXIgb2YgbG9naWNhbCBwcm9jZXNzb3JzIHNoYXJpbmcgTDMgY2Fj aGUuICAqLw0KPiA+ID4gPiArICAgICAgaW50IHRocmVhZHNfbDM7DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKyAgICAgIGlmIChzaGFyZWQgPD0gMCkNCj4gPiA+ID4gKyAgICAgICAgew0KPiA+ID4gPiAr ICAgICAgICAgIC8qIE5vIHNoYXJlZCBMMyBjYWNoZS4gIEFsbCB3ZSBoYXZlIGlzIHRoZSBMMiBj YWNoZS4gICovDQo+ID4gPiA+ICsgICAgICAgICAgbGV2ZWwgPSAyOw0KPiA+ID4gPiArICAgICAg ICAgIHNoYXJlZCA9IGNvcmU7DQo+ID4gPiA+ICsgICAgICAgICAgdGhyZWFkc19sMiA9IDA7DQo+ ID4gPiA+ICsgICAgICAgICAgdGhyZWFkc19sMyA9IC0xOw0KPiA+ID4gPiArICAgICAgICB9DQo+ ID4gPiA+ICsgICAgICBlbHNlDQo+ID4gPiA+ICsgICAgICAgIHsNCj4gPiA+ID4gKyAgICAgICAg ICBsZXZlbCA9IDM7DQo+ID4gPiA+ICsgICAgICAgICAgdGhyZWFkc19sMiA9IDA7DQo+ID4gPiA+ ICsgICAgICAgICAgdGhyZWFkc19sMyA9IDA7DQo+ID4gPiA+ICsgICAgICAgIH0NCj4gPiA+ID4g Kw0KPiA+ID4gPiArICAgICAgaW50IGkgPSAwOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICAv KiBRdWVyeSB1bnRpbCBjYWNoZSBsZXZlbCAyIGFuZCAzIGFyZSBlbnVtZXJhdGVkLiAgKi8NCj4g PiA+ID4gKyAgICAgIGludCBjaGVjayA9IDB4MSB8ICh0aHJlYWRzX2wzID09IDApIDw8IDE7DQo+ ID4gPiA+ICsgICAgICBkbw0KPiA+ID4gPiArICAgICAgICB7DQo+ID4gPiA+ICsgICAgICAgICAg X19jcHVpZF9jb3VudCAoNCwgaSsrLCBlYXgsIGVieCwgZWN4LCBlZHgpOw0KPiA+ID4gPiArDQo+ ID4gPiA+ICsgICAgICAgICAgc3dpdGNoICgoZWF4ID4+IDUpICYgMHg3KQ0KPiA+ID4gPiArICAg ICAgICAgICAgew0KPiA+ID4gPiArICAgICAgICAgICAgZGVmYXVsdDoNCj4gPiA+ID4gKyAgICAg ICAgICAgICAgYnJlYWs7DQo+ID4gPiA+ICsgICAgICAgICAgICBjYXNlIDI6DQo+ID4gPiA+ICsg ICAgICAgICAgICAgIGlmICgoY2hlY2sgJiAweDEpKQ0KPiA+ID4gPiArICAgICAgICAgICAgICAg IHsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgIC8qIEdldCBtYXhpbXVtIG51bWJlciBvZiBs b2dpY2FsIHByb2Nlc3NvcnMNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHNoYXJpbmcg TDIgY2FjaGUuICAqLw0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgdGhyZWFkc19sMiA9IChl YXggPj4gMTQpICYgMHgzZmY7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICBjaGVjayAmPSB+ MHgxOw0KPiA+ID4gPiArICAgICAgICAgICAgICAgIH0NCj4gPiA+ID4gKyAgICAgICAgICAgICAg YnJlYWs7DQo+ID4gPiA+ICsgICAgICAgICAgICBjYXNlIDM6DQo+ID4gPiA+ICsgICAgICAgICAg ICAgIGlmICgoY2hlY2sgJiAoMHgxIDw8IDEpKSkNCj4gPiA+ID4gKyAgICAgICAgICAgICAgIHsN Cj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgIC8qIEdldCBtYXhpbXVtIG51bWJlciBvZiBsb2dp Y2FsIHByb2Nlc3NvcnMNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHNoYXJpbmcgTDMg Y2FjaGUuICAqLw0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgdGhyZWFkc19sMyA9IChlYXgg Pj4gMTQpICYgMHgzZmY7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICBjaGVjayAmPSB+KDB4 MSA8PCAxKTsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICB9DQo+ID4gPiA+ICsgICAgICAgICAg ICAgIGJyZWFrOw0KPiA+ID4gPiArICAgICAgICAgICB9DQo+ID4gPiA+ICsgICAgICAgIH0NCj4g PiA+ID4gKyAgICAgIHdoaWxlIChjaGVjayk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgIC8q IElmIG1heF9jcHVpZCA+PSAxMSwgVEhSRUFEU19MMi9USFJFQURTX0wzIGFyZSB0aGUNCj4gbWF4 aW11bQ0KPiA+ID4gPiArICAgICAgICAgbnVtYmVycyBvZiBhZGRyZXNzYWJsZSBJRHMgZm9yIGxv Z2ljYWwgcHJvY2Vzc29ycyBzaGFyaW5nDQo+ID4gPiA+ICsgICAgICAgICB0aGUgY2FjaGUsIGlu c3RlYWQgb2YgdGhlIG1heGltdW0gbnVtYmVyIG9mIHRocmVhZHMNCj4gPiA+ID4gKyAgICAgICAg IHNoYXJpbmcgdGhlIGNhY2hlLiAgKi8NCj4gPiA+ID4gKyAgICAgIGlmIChtYXhfY3B1aWQgPj0g MTEpDQo+ID4gPiA+ICsgICAgICAgIHsNCj4gPiA+ID4gKyAgICAgICAgICAvKiBGaW5kIHRoZSBu dW1iZXIgb2YgbG9naWNhbCBwcm9jZXNzb3JzIHNoaXBwZWQgaW4NCj4gPiA+ID4gKyAgICAgICAg ICAgICBvbmUgY29yZSBhbmQgYXBwbHkgY291bnQgbWFzay4gICovDQo+ID4gPiA+ICsgICAgICAg ICAgaSA9IDA7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgICAgICAvKiBDb3VudCBTTVQgb25s eSBpZiB0aGVyZSBpcyBMMyBjYWNoZS4gIEFsd2F5cyBjb3VudA0KPiA+ID4gPiArICAgICAgICAg ICAgIGNvcmUgaWYgdGhlcmUgaXMgbm8gTDMgY2FjaGUuICAqLw0KPiA+ID4gPiArICAgICAgICAg IGludCBjb3VudCA9ICgodGhyZWFkc19sMiA+IDAgJiYgbGV2ZWwgPT0gMykNCj4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgfCAoKHRocmVhZHNfbDMgPiAwDQo+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICB8fCAodGhyZWFkc19sMiA+IDAgJiYgbGV2ZWwgPT0gMikpIDw8 DQo+IDEpKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgICAgIHdoaWxlIChjb3VudCkNCj4g PiA+ID4gKyAgICAgICAgICAgIHsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgX19jcHVpZF9jb3Vu dCAoMTEsIGkrKywgZWF4LCBlYngsIGVjeCwgZWR4KTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAg ICAgICAgICAgICBpbnQgc2hpcHBlZCA9IGVieCAmIDB4ZmY7DQo+ID4gPiA+ICsgICAgICAgICAg ICAgIGludCB0eXBlID0gZWN4ICYgMHhmZjAwOw0KPiA+ID4gPiArICAgICAgICAgICAgICBpZiAo c2hpcHBlZCA9PSAwIHx8IHR5cGUgPT0gMCkNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICBicmVh azsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSAweDEwMCkNCj4gPiA+ ID4gKyAgICAgICAgICAgICAgICB7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAvKiBDb3Vu dCBTTVQuICAqLw0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgaWYgKChjb3VudCAmIDB4MSkp DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIHsNCj4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICBpbnQgY291bnRfbWFzazsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgIC8qIENvbXB1dGUgY291bnQgbWFzay4gICovDQo+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgYXNtICgiYnNyICUxLCAlMCINCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIDogIj1yIiAoY291bnRfbWFzaykgOiAiZyIgKHRocmVhZHNfbDIpKTsNCj4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICBjb3VudF9tYXNrID0gfigtMSA8PCAoY291bnRfbWFz ayArIDEpKTsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRzX2wyID0gKHNo aXBwZWQgLSAxKSAmIGNvdW50X21hc2s7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg Y291bnQgJj0gfjB4MTsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgfQ0KPiA+ID4gPiAr ICAgICAgICAgICAgICAgIH0NCj4gPiA+ID4gKyAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9 PSAweDIwMCkNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICB7DQo+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAvKiBDb3VudCBjb3JlLiAgKi8NCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgIGlm ICgoY291bnQgJiAoMHgxIDw8IDEpKSkNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgew0K PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudF9tYXNrOw0KPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgIGludCB0aHJlYWRzX2NvcmUNCj4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgID0gKGxldmVsID09IDIgPyB0aHJlYWRzX2wyIDogdGhyZWFkc19sMyk7 DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAvKiBDb21wdXRlIGNv dW50IG1hc2suICAqLw0KPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIGFzbSAoImJzciAl MSwgJTAiDQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI9ciIgKGNvdW50 X21hc2spIDogImciDQo+ICh0aHJlYWRzX2NvcmUpKTsNCj4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICBjb3VudF9tYXNrID0gfigtMSA8PCAoY291bnRfbWFzayArIDEpKTsNCj4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRzX2NvcmUgPSAoc2hpcHBlZCAtIDEpICYgY291 bnRfbWFzazsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICBpZiAobGV2ZWwgPT0gMikN Cj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZHNfbDIgPSB0aHJlYWRzX2Nv cmU7DQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgZWxzZQ0KPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgdGhyZWFkc19sMyA9IHRocmVhZHNfY29yZTsNCj4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICBjb3VudCAmPSB+KDB4MSA8PCAxKTsNCj4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgfQ0KPiA+ID4gPiArICAgICAgICAgICAgICAgIH0NCj4gPiA+ID4gKyAg ICAgICAgICAgIH0NCj4gPiA+ID4gKyAgICAgICAgfQ0KPiA+ID4gPiArICAgICAgaWYgKGxldmVs ID09IDIgJiYgdGhyZWFkc19sMiA+IDApDQo+ID4gPiA+ICsgICAgICAgIHRocmVhZHMgPSB0aHJl YWRzX2wyICsgMTsNCj4gPiA+ID4gKyAgICAgIGlmIChsZXZlbCA9PSAzICYmIHRocmVhZHNfbDMg PiAwKQ0KPiA+ID4gPiArICAgICAgICB0aHJlYWRzID0gdGhyZWFkc19sMyArIDE7DQo+ID4gPiA+ ICsNCj4gPiA+ID4gKyAgICAgIGlmIChzaGFyZWQgPiAwICYmIHRocmVhZHMgPiAwKQ0KPiA+ID4g PiArICAgICAgICBzaGFyZWQgLz0gdGhyZWFkczsNCj4gPiA+ID4gKyAgICB9DQo+ID4gPg0KPiA+ ID4gVGhpcyBjb2RlIGxvb2tzIHZlcnkgc2ltaWxhciB0byBJbnRlbCBjb2RlLiAgIENhbiB5b3Ug ZmFjdG9yIGl0IG91dCBhbmQgcmV1c2UNCj4gPiA+IGl0IGZvciB5b3U/DQo+ID4NCj4gPiBJIHRy aWVkIHRvIGV4dHJhY3QgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlLCBidXQgaXQgZGlkbuKAmXQgbG9v ayB2ZXJ5IGNsZWFuLg0KPiA+IEZvciBFeGFtcGxlLCB0aGUgY2FzZSBvZiBtYXhfY3B1aWQgPCA0 IGRvZXMgbm90IGV4aXN0IG9uIFpoYW94aW4gcHJvY2Vzc29ycy4NCj4gDQo+IFRoZSBzYW1lIGFz IG5ldyBJbnRlbCBwcm9jZXNzb3JzLg0KPiANCj4gPiBaaGFveGluIHByb2Nlc3NvcnMgYXJlIGN1 cnJlbnRseSBpbmNsdXNpdmUgY2FjaGVzLCBhbmQgdGhlIG51bWJlciBvZiB0aHJlYWRzDQo+IA0K PiBEbyBaaGFveGluIHByb2Nlc3NvcnMgdXNlIENQVUlEIGJpdCB0byBpbmRpY2F0ZSBpbmNsdXNp dmUgY2FjaGVzPw0KDQpZZXMsIFpoYW94aW4gdXNlIENQVUlEIGJpdCB0byBpbmRpY2F0ZSBpdC4N Cg0KPiA+IHNoYXJpbmcgTDIgY2FjaGUgaXMgbm90IGFmZmVjdGVkIGJ5IHRoZSBmYW1pbHkgb3Ig bW9kZWwuICBDb25zaWRlcmluZyB0aGUNCj4gcG9zc2libGUNCj4gDQo+IFlvdSBjYW4gY2hlY2sg Y3B1X2ZlYXR1cmVzLT5iYXNpYy5raW5kIGZvciB0aGF0Lg0KPiANCj4gPiBjaGFuZ2VzIG9mIENQ VSBkZXNpZ24gaW4gZnV0dXJlLCBpdCBtYXkgYmUgbW9yZSBjb252ZW5pZW50IHRvIGtlZXAgc2Vw YXJhdGUNCj4gYnJhbmNoZXMuDQo+ID4NCj4gPiBJIHdhcyB3YW5kZXJpbmcgaWYgeW91IGhhZCBh bnkgY29uY2VybnMsIG9yIGlmIHlvdSBjb3VsZCBnaXZlIHNvbWUNCj4gc3VnZ2VzdGlvbnMsDQo+ ID4gdGhhdCB3b3VsZCBiZSBncmVhdC4NCj4gDQo+IExldCdzIGF2b2lkIGNvZGUgZHVwbGljYXRp b24gZm9yIG5vdyBhbmQgcmV2aXNpdCBpdCBpbiB0aGUgZnV0dXJlLg0KPiANCllvdSBhcmUgcmln aHQuICBJIHdpbGwgdHJ5IGFzIHlvdSBzdWdnZXN0IGFuZCBzZW5kIGl0IGFzIHBhdGNoIHYzLg0K DQpUaGFuayB5b3UgZm9yIHlvdXIgY29tbWVudC4NCg0KQmVzdCBSZWdhcmRzLA0KTWF5IFNoYW8N Cg==