From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from azure-sdnproxy.icoremail.net (azure-sdnproxy.icoremail.net [207.46.229.174]) by sourceware.org (Postfix) with SMTP id D20723858C78 for ; Fri, 3 Mar 2023 09:12:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D20723858C78 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=eswincomputing.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=eswincomputing.com Received: from E0001792LT (unknown [113.200.72.66]) by app1 (Coremail) with SMTP id EwgMCgBHspUNugFk1HACAA--.2753S2; Fri, 03 Mar 2023 17:12:45 +0800 (CST) Date: Fri, 3 Mar 2023 17:12:45 +0800 From: "Feng Wang" To: jiawei Cc: gcc-patches Subject: Re: Re: [PATCH] RISC-V: Optimize the MASK opt generation References: <3dea2b5d.ca8e.186a6ae5ae9.Coremail.jiawei@iscas.ac.cn> X-Priority: 3 X-GUID: 3DDFAE86-F020-45E7-A863-8A461B6F7119 X-Has-Attach: no X-Mailer: Foxmail 7.2.15.80[cn] Mime-Version: 1.0 Message-ID: <2023030317124502639214@eswincomputing.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-CM-TRANSID:EwgMCgBHspUNugFk1HACAA--.2753S2 X-Coremail-Antispam: 1UD129KBjvAXoW3ZF1xKw1xXry7Kw4DCryUWrg_yoW8Cr4DWo WIgrZ8tF15Jr4fur48Ww1UJr98X3WDAr1DXF4DAr4fJFnxXF1qg348Ka9YqayUA34fWFW5 JFnrXFyDZa45Jr15n29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73VFW2AGmfu7bjvjm3 AaLaJ3UjIYCTnIWjp_UUUYO7k0a2IF6w4kM7kC6x804xWl1xkIjI8I6I8E6xAIw20EY4v2 0xvaj40_Wr0E3s1l8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xvwVC0I7 IYx2IY67AKxVWDJVCq3wA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVWxJr0_GcWl84ACjcxK 6I8E87Iv67AKxVW0oVCq3wA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_GcCE3s1le2I262IYc4 CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E74AGY7Cv6cx26r4U Jr1UJwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41lFcxC0VAYjxAxZF0Ew4 CEw7xC0wCY02Avz4vE14v_GFWl42xK82IYc2Ij64vIr41l42xK82IY6x8ErcxFaVAv8VW8 Jr1UJr1l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s026x 8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r1Y6r17MIIYrxkI7VAKI48JMIIF0xvE 2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r1j6r4UMIIF0xvE42 xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6xkF 7I0E14v26r1j6r4UMVCEFcxC0VAYjxAxZFUvcSsGvfC2KfnxnUUI43ZEXa7IUerpnJUUUU U== X-CM-SenderInfo: pzdqwwxhqjqvxvzl0uprps33xlqjhudrp/ X-Spam-Status: No, score=-10.3 required=5.0 tests=BAYES_00,BODY_8BITS,GIT_PATCH_0,KAM_DMARC_STATUS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: T24gMjAyMy0wMy0wMyAxNjo1NCDCoGppYXdlaTxqaWF3ZWlAaXNjYXMuYWMuY24+IHdyb3RlOgo+ Cj5UaGUgTWFzayBmbGFnIGluIHRoZSBzaW5nbGUgVGFyZ2V0VmFyaWFibGUgaXMgbm90IGVub3Vn aCBkdWUgdG8gbW9yZQo+YW5kIG1vcmUgZXh0ZW5zaW9ucyB3ZXJlIGFkZGVkLlNvIEkgb3B0aW1p emUgdGhlIGRlZmluYXRpb24gb2YgTWFzawo+ZmxhZywgcGxlYXNlIHJlZmVyIHRvIHRoZSBiZWxv dyBjYXNlOgo+VGhlcmUgYXJlIHNvbWUgbmV3IE1BU0sgZmxhZ3MgZm9yICd2JyBleHRlbnNpb24o WlZMMzJCLFpWTDY0QiwuLi4sWlZMNjU1MzZCKSwKPmJ1dCB0aGVzZSBNQVNLIGZsYWdzIGNhbid0 IHN0b3JlIGludG8geF90YXJnZXRfZmxhZ3MsYmVjYXVzZSB0aGUgdG90YWwgbnVtYmVyCj5vZiBN QVNLIGZsYWdzIGV4Y2VlZCAzMi4gSW4gdGhpcyBwYXRjaCB3ZSBjYW4gd3JpdGUgaXQgbGlrZSB0 aGlzIGluIHRoaXMgc2NlbmNlLgo+Cj5UYXJnZXRWYXJpYWJsZQo+aW50IHJpc2N2X3p2bF9mbGFn cwo+Cj5NYXNrKFpWTDMyQikgaW4gVGFyZ2V0VmFyaWFibGUocmlzY3ZfenZsX2ZsYWdzKQo+Cj5U aGUgY29ycmVzcG9uZGluZyBNQVNLIGFuZCBUQVJHRVQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGdl bmVyYXRlZC4KPgo+Z2NjL0NoYW5nZUxvZzoKPgo+wqDCoMKgwqDCoMKgwqAgKiBjb25maWcvcmlz Y3YvcmlzY3Ytb3B0cy5owqDCoCBEZWxldGUgYmVsb3cgZGVmaW5hdGlvbnMKPsKgwqDCoMKgwqDC oMKgIChNQVNLX1pJQ1NSKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWklGRU5DRUkp OiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pJQ1NSKTogRGVsZXRlOwo+wqDCoMKg wqDCoMKgwqAgKFRBUkdFVF9aSUZFTkNFSSk6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChNQVNL X1pBV1JTKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aQVdSUyk6IERlbGV0ZTsK PsKgwqDCoMKgwqDCoMKgIChNQVNLX1pCQSk6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChNQVNL X1pCQik6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChNQVNLX1pCQyk6IERlbGV0ZTsKPsKgwqDC oMKgwqDCoMKgIChNQVNLX1pCUyk6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChUQVJHRVRfWkJB KTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aQkIpOiBEZWxldGU7Cj7CoMKgwqDC oMKgwqDCoCAoVEFSR0VUX1pCQyk6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChUQVJHRVRfWkJT KTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWkZJTlgpOiBEZWxldGU7Cj7CoMKgwqDC oMKgwqDCoCAoTUFTS19aRElOWCk6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChNQVNLX1pISU5Y KTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWkhJTlhNSU4pOiBEZWxldGU7Cj7CoMKg wqDCoMKgwqDCoCAoVEFSR0VUX1pGSU5YKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdF VF9aRElOWCk6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChUQVJHRVRfWkhJTlgpOiBEZWxldGU7 Cj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pISU5YTUlOKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKg wqAgKE1BU0tfWkJLQik6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChNQVNLX1pCS0MpOiBEZWxl dGU7Cj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aQktYKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAg KE1BU0tfWktORSk6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChNQVNLX1pLTkQpOiBEZWxldGU7 Cj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aS05IKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKE1B U0tfWktSKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWktTRUQpOiBEZWxldGU7Cj7C oMKgwqDCoMKgwqDCoCAoTUFTS19aS1NIKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKE1BU0tf WktUKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aQktCKTogRGVsZXRlOwo+wqDC oMKgwqDCoMKgwqAgKFRBUkdFVF9aQktDKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdF VF9aQktYKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aS05FKTogRGVsZXRlOwo+ wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aS05EKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRB UkdFVF9aS05IKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aS1IpOiBEZWxldGU7 Cj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pLU0VEKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAg KFRBUkdFVF9aS1NIKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aS1QpOiBEZWxl dGU7Cj7CoMKgwqDCoMKgwqDCoCAoTUFTS19WRUNUT1JfRUxFTl8zMik6IERlbGV0ZTsKPsKgwqDC oMKgwqDCoMKgIChNQVNLX1ZFQ1RPUl9FTEVOXzY0KTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAg KE1BU0tfVkVDVE9SX0VMRU5fRlBfMzIpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoTUFTS19W RUNUT1JfRUxFTl9GUF82NCk6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChUQVJHRVRfVkVDVE9S X0VMRU5fMzIpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1ZFQ1RPUl9FTEVOXzY0 KTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9WRUNUT1JfRUxFTl9GUF8zMik6IERl bGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChUQVJHRVRfVkVDVE9SX0VMRU5fRlBfNjQpOiBEZWxldGU7 Cj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aVkwzMkIpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAo TUFTS19aVkw2NEIpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aVkwxMjhCKTogRGVs ZXRlOwo+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWlZMMjU2Qik6IERlbGV0ZTsKPsKgwqDCoMKgwqDC oMKgIChNQVNLX1pWTDUxMkIpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoTUFTS19aVkwxMDI0 Qik6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChNQVNLX1pWTDIwNDhCKTogRGVsZXRlOwo+wqDC oMKgwqDCoMKgwqAgKE1BU0tfWlZMNDA5NkIpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoTUFT S19aVkw4MTkyQik6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChNQVNLX1pWTDE2Mzg0Qik6IERl bGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChNQVNLX1pWTDMyNzY4Qik6IERlbGV0ZTsKPsKgwqDCoMKg wqDCoMKgIChNQVNLX1pWTDY1NTM2Qik6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChUQVJHRVRf WlZMMzJCKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aVkw2NEIpOiBEZWxldGU7 Cj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pWTDEyOEIpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDC oCAoVEFSR0VUX1pWTDI1NkIpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pWTDUx MkIpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pWTDEwMjRCKTogRGVsZXRlOwo+ wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aVkwyMDQ4Qik6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKg IChUQVJHRVRfWlZMNDA5NkIpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pWTDgx OTJCKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aVkwxNjM4NEIpOiBEZWxldGU7 Cj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pWTDMyNzY4Qik6IERlbGV0ZTsKPsKgwqDCoMKgwqDC oMKgIChUQVJHRVRfWlZMNjU1MzZCKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWklD Qk9aKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWklDQk9NKTogRGVsZXRlOwo+wqDC oMKgwqDCoMKgwqAgKE1BU0tfWklDQk9QKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdF VF9aSUNCT1opOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoVEFSR0VUX1pJQ0JPTSk6IERlbGV0 ZTsKPsKgwqDCoMKgwqDCoMKgIChUQVJHRVRfWklDQk9QKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKg wqAgKE1BU0tfWkZITUlOKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKE1BU0tfWkZIKTogRGVs ZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aRkhNSU4pOiBEZWxldGU7Cj7CoMKgwqDCoMKg wqDCoCAoVEFSR0VUX1pGSCk6IERlbGV0ZTsKPsKgwqDCoMKgwqDCoMKgIChNQVNLX1pNTVVMKTog RGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9aTU1VTCk6IERlbGV0ZTsKPsKgwqDCoMKg wqDCoMKgIChNQVNLX1NWSU5WQUwpOiBEZWxldGU7Cj7CoMKgwqDCoMKgwqDCoCAoTUFTS19TVk5B UE9UKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9TVklOVkFMKTogRGVsZXRlOwo+ wqDCoMKgwqDCoMKgwqAgKFRBUkdFVF9TVk5BUE9UKTogRGVsZXRlOwo+wqDCoMKgwqDCoMKgwqAg KiBjb25maWcvcmlzY3YvcmlzY3Yub3B0OiBBZGQgbmV3IE1hc2sgZGVmaW5hdGlvbi4KPsKgwqDC oMKgwqDCoMKgICogb3B0LWZ1bmN0aW9ucy5hd2s6wqDCoMKgwqDCoCBBZGQgbmV3IGZ1bmN0aW9u IHRvIGZpbmQgdGhlIGluZGV4Cj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb2YgdGFyZ2V0IHZhcmlhYmxlIGZyb20gZXh0 cmFfdGFyZ2V0X3ZhcnMuCj7CoMKgwqDCoMKgwqDCoCAqIG9wdC1yZWFkLmF3azrCoMKgwqDCoMKg wqDCoMKgwqDCoCBBZGQgbmV3IGZ1bmN0aW9uIHRvIHN0b3JlIHRoZSBNYXNrIGZsYWdzLgo+wqDC oMKgwqDCoMKgwqAgKiBvcHRoLWdlbi5hd2s6wqDCoMKgwqDCoMKgwqDCoMKgwqAgQWRkIG5ldyBm dW5jdGlvbiB0byBvdXRwdXQgdGhlIGRlZmluYXRpb24gb2YKPsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBNYXNrIE1hY3Jv IGFuZCBUYXJnZXQgTWFjcm8uCj4tLS0KPiBnY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LW9wdHMuaCB8 IDExNSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gZ2NjL2NvbmZpZy9yaXNj di9yaXNjdi5vcHTCoMKgwqAgfMKgIDkwICsrKysrKysrKysrKysrKysrKysrKysrKysrCj4gZ2Nj L29wdC1mdW5jdGlvbnMuYXdrwqDCoMKgwqDCoMKgwqDCoCB8wqAgMTEgKysrKwo+IGdjYy9vcHQt cmVhZC5hd2vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMTYgKysrKy0KPiBnY2Mvb3B0 aC1nZW4uYXdrwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDIyICsrKysrKysKPiA1IGZp bGVzIGNoYW5nZWQsIDEzOCBpbnNlcnRpb25zKCspLCAxMTYgZGVsZXRpb25zKC0pCj4KPmRpZmYg LS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LW9wdHMuaCBiL2djYy9jb25maWcvcmlzY3Yv cmlzY3Ytb3B0cy5oCj5pbmRleCAyNWZkODViMDliMS4uN2NmMjg4MzhjYjUgMTAwNjQ0Cj4tLS0g YS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LW9wdHMuaAo+KysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9y aXNjdi1vcHRzLmgKPkBAIC02NiwxMjEgKzY2LDYgQEAgZW51bSBzdGFja19wcm90ZWN0b3JfZ3Vh cmQgewo+wqDCoCBTU1BfVExTLAkvKiBwZXItdGhyZWFkIGNhbmFyeSBpbiBUTFMgYmxvY2sgKi8K PsKgwqAgU1NQX0dMT0JBTAkvKiBnbG9iYWwgY2FuYXJ5ICovCj4gfTsKPi0KPi0jZGVmaW5lIE1B U0tfWklDU1LCoMKgwqAgKDEgPDwgMCkKPi0jZGVmaW5lIE1BU0tfWklGRU5DRUkgKDEgPDwgMSkK Pi0KPi0jZGVmaW5lIFRBUkdFVF9aSUNTUsKgwqDCoCAoKHJpc2N2X3ppX3N1YmV4dCAmIE1BU0tf WklDU1IpICE9IDApCj4tI2RlZmluZSBUQVJHRVRfWklGRU5DRUkgKChyaXNjdl96aV9zdWJleHQg JiBNQVNLX1pJRkVOQ0VJKSAhPSAwKQo+LQo+LSNkZWZpbmUgTUFTS19aQVdSU8KgwqAgKDEgPDwg MCkKPi0jZGVmaW5lIFRBUkdFVF9aQVdSUyAoKHJpc2N2X3phX3N1YmV4dCAmIE1BU0tfWkFXUlMp ICE9IDApCj4tCj4tI2RlZmluZSBNQVNLX1pCQcKgwqDCoMKgwqAgKDEgPDwgMCkKPi0jZGVmaW5l IE1BU0tfWkJCwqDCoMKgwqDCoCAoMSA8PCAxKQo+LSNkZWZpbmUgTUFTS19aQkPCoMKgwqDCoMKg ICgxIDw8IDIpCj4tI2RlZmluZSBNQVNLX1pCU8KgwqDCoMKgwqAgKDEgPDwgMykKPi0KPi0jZGVm aW5lIFRBUkdFVF9aQkHCoMKgwqAgKChyaXNjdl96Yl9zdWJleHQgJiBNQVNLX1pCQSkgIT0gMCkK Pi0jZGVmaW5lIFRBUkdFVF9aQkLCoMKgwqAgKChyaXNjdl96Yl9zdWJleHQgJiBNQVNLX1pCQikg IT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aQkPCoMKgwqAgKChyaXNjdl96Yl9zdWJleHQgJiBNQVNL X1pCQykgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aQlPCoMKgwqAgKChyaXNjdl96Yl9zdWJleHQg JiBNQVNLX1pCUykgIT0gMCkKPi0KPi0jZGVmaW5lIE1BU0tfWkZJTljCoMKgwqDCoMKgICgxIDw8 IDApCj4tI2RlZmluZSBNQVNLX1pESU5YwqDCoMKgwqDCoCAoMSA8PCAxKQo+LSNkZWZpbmUgTUFT S19aSElOWMKgwqDCoMKgwqAgKDEgPDwgMikKPi0jZGVmaW5lIE1BU0tfWkhJTlhNSU7CoMKgICgx IDw8IDMpCj4tCj4tI2RlZmluZSBUQVJHRVRfWkZJTljCoMKgwqAgKChyaXNjdl96aW54X3N1YmV4 dCAmIE1BU0tfWkZJTlgpICE9IDApCj4tI2RlZmluZSBUQVJHRVRfWkRJTljCoMKgwqAgKChyaXNj dl96aW54X3N1YmV4dCAmIE1BU0tfWkRJTlgpICE9IDApCj4tI2RlZmluZSBUQVJHRVRfWkhJTljC oMKgwqAgKChyaXNjdl96aW54X3N1YmV4dCAmIE1BU0tfWkhJTlgpICE9IDApCj4tI2RlZmluZSBU QVJHRVRfWkhJTlhNSU4gKChyaXNjdl96aW54X3N1YmV4dCAmIE1BU0tfWkhJTlhNSU4pICE9IDAp Cj4tCj4tI2RlZmluZSBNQVNLX1pCS0LCoMKgwqDCoCAoMSA8PCAwKQo+LSNkZWZpbmUgTUFTS19a QktDwqDCoMKgwqAgKDEgPDwgMSkKPi0jZGVmaW5lIE1BU0tfWkJLWMKgwqDCoMKgICgxIDw8IDIp Cj4tI2RlZmluZSBNQVNLX1pLTkXCoMKgwqDCoCAoMSA8PCAzKQo+LSNkZWZpbmUgTUFTS19aS05E wqDCoMKgwqAgKDEgPDwgNCkKPi0jZGVmaW5lIE1BU0tfWktOSMKgwqDCoMKgICgxIDw8IDUpCj4t I2RlZmluZSBNQVNLX1pLUsKgwqDCoMKgwqAgKDEgPDwgNikKPi0jZGVmaW5lIE1BU0tfWktTRUTC oMKgwqAgKDEgPDwgNykKPi0jZGVmaW5lIE1BU0tfWktTSMKgwqDCoMKgICgxIDw8IDgpCj4tI2Rl ZmluZSBNQVNLX1pLVMKgwqDCoMKgwqAgKDEgPDwgOSkKPi0KPi0jZGVmaW5lIFRBUkdFVF9aQktC wqDCoCAoKHJpc2N2X3prX3N1YmV4dCAmIE1BU0tfWkJLQikgIT0gMCkKPi0jZGVmaW5lIFRBUkdF VF9aQktDwqDCoCAoKHJpc2N2X3prX3N1YmV4dCAmIE1BU0tfWkJLQykgIT0gMCkKPi0jZGVmaW5l IFRBUkdFVF9aQktYwqDCoCAoKHJpc2N2X3prX3N1YmV4dCAmIE1BU0tfWkJLWCkgIT0gMCkKPi0j ZGVmaW5lIFRBUkdFVF9aS05FwqDCoCAoKHJpc2N2X3prX3N1YmV4dCAmIE1BU0tfWktORSkgIT0g MCkKPi0jZGVmaW5lIFRBUkdFVF9aS05EwqDCoCAoKHJpc2N2X3prX3N1YmV4dCAmIE1BU0tfWktO RCkgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aS05IwqDCoCAoKHJpc2N2X3prX3N1YmV4dCAmIE1B U0tfWktOSCkgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aS1LCoMKgwqAgKChyaXNjdl96a19zdWJl eHQgJiBNQVNLX1pLUikgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aS1NFRMKgICgocmlzY3Zfemtf c3ViZXh0ICYgTUFTS19aS1NFRCkgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aS1NIwqDCoCAoKHJp c2N2X3prX3N1YmV4dCAmIE1BU0tfWktTSCkgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aS1TCoMKg wqAgKChyaXNjdl96a19zdWJleHQgJiBNQVNLX1pLVCkgIT0gMCkKPi0KPi0jZGVmaW5lIE1BU0tf VkVDVE9SX0VMRU5fMzLCoMKgwqAgKDEgPDwgMCkKPi0jZGVmaW5lIE1BU0tfVkVDVE9SX0VMRU5f NjTCoMKgwqAgKDEgPDwgMSkKPi0jZGVmaW5lIE1BU0tfVkVDVE9SX0VMRU5fRlBfMzIgKDEgPDwg MikKPi0jZGVmaW5lIE1BU0tfVkVDVE9SX0VMRU5fRlBfNjQgKDEgPDwgMykKPi0KPi0jZGVmaW5l IFRBUkdFVF9WRUNUT1JfRUxFTl8zMiBcCj4twqAgKChyaXNjdl92ZWN0b3JfZWxlbl9mbGFncyAm IE1BU0tfVkVDVE9SX0VMRU5fMzIpICE9IDApCj4tI2RlZmluZSBUQVJHRVRfVkVDVE9SX0VMRU5f NjQgXAo+LcKgICgocmlzY3ZfdmVjdG9yX2VsZW5fZmxhZ3MgJiBNQVNLX1ZFQ1RPUl9FTEVOXzY0 KSAhPSAwKQo+LSNkZWZpbmUgVEFSR0VUX1ZFQ1RPUl9FTEVOX0ZQXzMyIFwKPi3CoCAoKHJpc2N2 X3ZlY3Rvcl9lbGVuX2ZsYWdzICYgTUFTS19WRUNUT1JfRUxFTl9GUF8zMikgIT0gMCkKPi0jZGVm aW5lIFRBUkdFVF9WRUNUT1JfRUxFTl9GUF82NCBcCj4twqAgKChyaXNjdl92ZWN0b3JfZWxlbl9m bGFncyAmIE1BU0tfVkVDVE9SX0VMRU5fRlBfNjQpICE9IDApCj4tCj4tI2RlZmluZSBNQVNLX1pW TDMyQsKgwqDCoCAoMSA8PMKgIDApCj4tI2RlZmluZSBNQVNLX1pWTDY0QsKgwqDCoCAoMSA8PMKg IDEpCj4tI2RlZmluZSBNQVNLX1pWTDEyOELCoMKgICgxIDw8wqAgMikKPi0jZGVmaW5lIE1BU0tf WlZMMjU2QsKgwqAgKDEgPDzCoCAzKQo+LSNkZWZpbmUgTUFTS19aVkw1MTJCwqDCoCAoMSA8PMKg IDQpCj4tI2RlZmluZSBNQVNLX1pWTDEwMjRCwqAgKDEgPDzCoCA1KQo+LSNkZWZpbmUgTUFTS19a VkwyMDQ4QsKgICgxIDw8wqAgNikKPi0jZGVmaW5lIE1BU0tfWlZMNDA5NkLCoCAoMSA8PMKgIDcp Cj4tI2RlZmluZSBNQVNLX1pWTDgxOTJCwqAgKDEgPDzCoCA4KQo+LSNkZWZpbmUgTUFTS19aVkwx NjM4NEIgKDEgPDzCoCA5KQo+LSNkZWZpbmUgTUFTS19aVkwzMjc2OEIgKDEgPDwgMTApCj4tI2Rl ZmluZSBNQVNLX1pWTDY1NTM2QiAoMSA8PCAxMSkKPi0KPi0jZGVmaW5lIFRBUkdFVF9aVkwzMkLC oMKgwqAgKChyaXNjdl96dmxfZmxhZ3MgJiBNQVNLX1pWTDMyQikgIT0gMCkKPi0jZGVmaW5lIFRB UkdFVF9aVkw2NELCoMKgwqAgKChyaXNjdl96dmxfZmxhZ3MgJiBNQVNLX1pWTDY0QikgIT0gMCkK Pi0jZGVmaW5lIFRBUkdFVF9aVkwxMjhCwqDCoCAoKHJpc2N2X3p2bF9mbGFncyAmIE1BU0tfWlZM MTI4QikgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aVkwyNTZCwqDCoCAoKHJpc2N2X3p2bF9mbGFn cyAmIE1BU0tfWlZMMjU2QikgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aVkw1MTJCwqDCoCAoKHJp c2N2X3p2bF9mbGFncyAmIE1BU0tfWlZMNTEyQikgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aVkwx MDI0QsKgICgocmlzY3ZfenZsX2ZsYWdzICYgTUFTS19aVkwxMDI0QikgIT0gMCkKPi0jZGVmaW5l IFRBUkdFVF9aVkwyMDQ4QsKgICgocmlzY3ZfenZsX2ZsYWdzICYgTUFTS19aVkwyMDQ4QikgIT0g MCkKPi0jZGVmaW5lIFRBUkdFVF9aVkw0MDk2QsKgICgocmlzY3ZfenZsX2ZsYWdzICYgTUFTS19a Vkw0MDk2QikgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aVkw4MTkyQsKgICgocmlzY3ZfenZsX2Zs YWdzICYgTUFTS19aVkw4MTkyQikgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aVkwxNjM4NEIgKChy aXNjdl96dmxfZmxhZ3MgJiBNQVNLX1pWTDE2Mzg0QikgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9a VkwzMjc2OEIgKChyaXNjdl96dmxfZmxhZ3MgJiBNQVNLX1pWTDMyNzY4QikgIT0gMCkKPi0jZGVm aW5lIFRBUkdFVF9aVkw2NTUzNkIgKChyaXNjdl96dmxfZmxhZ3MgJiBNQVNLX1pWTDY1NTM2Qikg IT0gMCkKPi0KPi0jZGVmaW5lIE1BU0tfWklDQk9awqDCoCAoMSA8PCAwKQo+LSNkZWZpbmUgTUFT S19aSUNCT03CoMKgICgxIDw8IDEpCj4tI2RlZmluZSBNQVNLX1pJQ0JPUMKgwqAgKDEgPDwgMikK Pi0KPi0jZGVmaW5lIFRBUkdFVF9aSUNCT1ogKChyaXNjdl96aWNtb19zdWJleHQgJiBNQVNLX1pJ Q0JPWikgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aSUNCT00gKChyaXNjdl96aWNtb19zdWJleHQg JiBNQVNLX1pJQ0JPTSkgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9aSUNCT1AgKChyaXNjdl96aWNt b19zdWJleHQgJiBNQVNLX1pJQ0JPUCkgIT0gMCkKPi0KPi0jZGVmaW5lIE1BU0tfWkZITUlOwqDC oCAoMSA8PCAwKQo+LSNkZWZpbmUgTUFTS19aRkjCoMKgwqDCoMKgICgxIDw8IDEpCj4tCj4tI2Rl ZmluZSBUQVJHRVRfWkZITUlOICgocmlzY3ZfemZfc3ViZXh0ICYgTUFTS19aRkhNSU4pICE9IDAp Cj4tI2RlZmluZSBUQVJHRVRfWkZIwqDCoMKgICgocmlzY3ZfemZfc3ViZXh0ICYgTUFTS19aRkgp ICE9IDApCj4tCj4tI2RlZmluZSBNQVNLX1pNTVVMwqDCoMKgwqDCoCAoMSA8PCAwKQo+LSNkZWZp bmUgVEFSR0VUX1pNTVVMwqDCoMKgICgocmlzY3Zfem1fc3ViZXh0ICYgTUFTS19aTU1VTCkgIT0g MCkKPi0KPi0jZGVmaW5lIE1BU0tfU1ZJTlZBTCAoMSA8PCAwKQo+LSNkZWZpbmUgTUFTS19TVk5B UE9UICgxIDw8IDEpCj4tCj4tI2RlZmluZSBUQVJHRVRfU1ZJTlZBTCAoKHJpc2N2X3N2X3N1YmV4 dCAmIE1BU0tfU1ZJTlZBTCkgIT0gMCkKPi0jZGVmaW5lIFRBUkdFVF9TVk5BUE9UICgocmlzY3Zf c3Zfc3ViZXh0ICYgTUFTS19TVk5BUE9UKSAhPSAwKQo+LQo+IC8qIEJpdCBvZiByaXNjdl96dmxf ZmxhZ3Mgd2lsbCBzZXQgY29udGludHVseSwgTi0xIGJpdCB3aWxsIHNldCBpZiBOLWJpdCBpcwo+ wqDCoMKgIHNldCwgZS5nLiBNQVNLX1pWTDY0QiBoYXMgc2V0IHRoZW4gTUFTS19aVkwzMkIgaXMg c2V0LCBzbyB3ZSBjYW4gdXNlCj7CoMKgwqAgcG9wY291bnQgdG8gY2FjbHVsYXRlIHRoZSBtaW5p bWFsIFZMRU4uwqAgKi8KPmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2Lm9wdCBi L2djYy9jb25maWcvcmlzY3YvcmlzY3Yub3B0Cj5pbmRleCA3YzNjYTQ4ZDFjYy4uNzdmNTUzMzU2 YjEgMTAwNjQ0Cj4tLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2Lm9wdAo+KysrIGIvZ2NjL2Nv bmZpZy9yaXNjdi9yaXNjdi5vcHQKPkBAIC0yMDMsMzYgKzIwMywxMjYgQEAgbG9uZyByaXNjdl9z dGFja19wcm90ZWN0b3JfZ3VhcmRfb2Zmc2V0ID0gMAo+IFRhcmdldFZhcmlhYmxlCj4gaW50IHJp c2N2X3ppX3N1YmV4dAo+Cj4rTWFzayhaSUNTUikgaW4gVGFyZ2V0VmFyaWFibGUocmlzY3Zfemlf c3ViZXh0KQo+Kwo+K01hc2soWklGRU5DRUkpIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3ppX3N1 YmV4dCkKPisKPiBUYXJnZXRWYXJpYWJsZQo+IGludCByaXNjdl96YV9zdWJleHQKPgo+K01hc2so WkFXUlMpIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3phX3N1YmV4dCkKPisKPiBUYXJnZXRWYXJp YWJsZQo+IGludCByaXNjdl96Yl9zdWJleHQKPgo+K01hc2soWkJBKSBpbiBUYXJnZXRWYXJpYWJs ZShyaXNjdl96Yl9zdWJleHQpCj4rCj4rTWFzayhaQkIpIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2 X3piX3N1YmV4dCkKPisKPitNYXNrKFpCQykgaW4gVGFyZ2V0VmFyaWFibGUocmlzY3ZfemJfc3Vi ZXh0KQo+Kwo+K01hc2soWkJTKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96Yl9zdWJleHQpCj4r Cj4gVGFyZ2V0VmFyaWFibGUKPiBpbnQgcmlzY3ZfemlueF9zdWJleHQKPgo+K01hc2soWkZJTlgp IGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3ppbnhfc3ViZXh0KQo+Kwo+K01hc2soWkRJTlgpIGlu IFRhcmdldFZhcmlhYmxlKHJpc2N2X3ppbnhfc3ViZXh0KQo+Kwo+K01hc2soWkhJTlgpIGluIFRh cmdldFZhcmlhYmxlKHJpc2N2X3ppbnhfc3ViZXh0KQo+Kwo+K01hc2soWkhJTlhNSU4pIGluIFRh cmdldFZhcmlhYmxlKHJpc2N2X3ppbnhfc3ViZXh0KQo+Kwo+IFRhcmdldFZhcmlhYmxlCj4gaW50 IHJpc2N2X3prX3N1YmV4dAo+Cj4rTWFzayhaQktCKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96 a19zdWJleHQpCj4rCj4rTWFzayhaQktDKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96a19zdWJl eHQpCj4rCj4rTWFzayhaQktYKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96a19zdWJleHQpCj4r Cj4rTWFzayhaS05FKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96a19zdWJleHQpCj4rCj4rTWFz ayhaS05EKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96a19zdWJleHQpCj4rCj4rTWFzayhaS05I KSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96a19zdWJleHQpCj4rCj4rTWFzayhaS1IpIGluIFRh cmdldFZhcmlhYmxlKHJpc2N2X3prX3N1YmV4dCkKPisKPitNYXNrKFpLU0VEKSBpbiBUYXJnZXRW YXJpYWJsZShyaXNjdl96a19zdWJleHQpCj4rCj4rTWFzayhaS1NIKSBpbiBUYXJnZXRWYXJpYWJs ZShyaXNjdl96a19zdWJleHQpCj4rCj4rTWFzayhaS1QpIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2 X3prX3N1YmV4dCkKPisKPiBUYXJnZXRWYXJpYWJsZQo+IGludCByaXNjdl92ZWN0b3JfZWxlbl9m bGFncwo+Cj4rTWFzayhWRUNUT1JfRUxFTl8zMikgaW4gVGFyZ2V0VmFyaWFibGUocmlzY3ZfdmVj dG9yX2VsZW5fZmxhZ3MpCj4rCj4rTWFzayhWRUNUT1JfRUxFTl82NCkgaW4gVGFyZ2V0VmFyaWFi bGUocmlzY3ZfdmVjdG9yX2VsZW5fZmxhZ3MpCj4rCj4rTWFzayhWRUNUT1JfRUxFTl9GUF8zMikg aW4gVGFyZ2V0VmFyaWFibGUocmlzY3ZfdmVjdG9yX2VsZW5fZmxhZ3MpCj4rCj4rTWFzayhWRUNU T1JfRUxFTl9GUF82NCkgaW4gVGFyZ2V0VmFyaWFibGUocmlzY3ZfdmVjdG9yX2VsZW5fZmxhZ3Mp Cj4rCj4gVGFyZ2V0VmFyaWFibGUKPiBpbnQgcmlzY3ZfenZsX2ZsYWdzCj4KPitNYXNrKFpWTDMy QikgaW4gVGFyZ2V0VmFyaWFibGUocmlzY3ZfenZsX2ZsYWdzKQo+Kwo+K01hc2soWlZMNjRCKSBp biBUYXJnZXRWYXJpYWJsZShyaXNjdl96dmxfZmxhZ3MpCj4rCj4rTWFzayhaVkwxMjhCKSBpbiBU YXJnZXRWYXJpYWJsZShyaXNjdl96dmxfZmxhZ3MpCj4rCj4rTWFzayhaVkwyNTZCKSBpbiBUYXJn ZXRWYXJpYWJsZShyaXNjdl96dmxfZmxhZ3MpCj4rCj4rTWFzayhaVkw1MTJCKSBpbiBUYXJnZXRW YXJpYWJsZShyaXNjdl96dmxfZmxhZ3MpCj4rCj4rTWFzayhaVkwxMDI0QikgaW4gVGFyZ2V0VmFy aWFibGUocmlzY3ZfenZsX2ZsYWdzKQo+Kwo+K01hc2soWlZMMjA0OEIpIGluIFRhcmdldFZhcmlh YmxlKHJpc2N2X3p2bF9mbGFncykKPisKPitNYXNrKFpWTDQwOTZCKSBpbiBUYXJnZXRWYXJpYWJs ZShyaXNjdl96dmxfZmxhZ3MpCj4rCj4rTWFzayhaVkw4MTkyQikgaW4gVGFyZ2V0VmFyaWFibGUo cmlzY3ZfenZsX2ZsYWdzKQo+Kwo+K01hc2soWlZMMTYzODRCKSBpbiBUYXJnZXRWYXJpYWJsZShy aXNjdl96dmxfZmxhZ3MpCj4rCj4rTWFzayhaVkwzMjc2OEIpIGluIFRhcmdldFZhcmlhYmxlKHJp c2N2X3p2bF9mbGFncykKPisKPitNYXNrKFpWTDY1NTM2QikgaW4gVGFyZ2V0VmFyaWFibGUocmlz Y3ZfenZsX2ZsYWdzKQo+Kwo+IFRhcmdldFZhcmlhYmxlCj4gaW50IHJpc2N2X3ppY21vX3N1YmV4 dAo+Cj4rTWFzayhaSUNCT1opIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3ppY21vX3N1YmV4dCkK PisKPitNYXNrKFpJQ0JPTSkgaW4gVGFyZ2V0VmFyaWFibGUocmlzY3ZfemljbW9fc3ViZXh0KQo+ Kwo+K01hc2soWklDQk9QKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96aWNtb19zdWJleHQpCj4r Cj4gVGFyZ2V0VmFyaWFibGUKPiBpbnQgcmlzY3ZfemZfc3ViZXh0Cj4KPitNYXNrKFpGSE1JTikg aW4gVGFyZ2V0VmFyaWFibGUocmlzY3ZfemZfc3ViZXh0KQo+Kwo+K01hc2soWkZIKSBpbiBUYXJn ZXRWYXJpYWJsZShyaXNjdl96Zl9zdWJleHQpCj4rCj4gVGFyZ2V0VmFyaWFibGUKPiBpbnQgcmlz Y3Zfem1fc3ViZXh0Cj4KPitNYXNrKFpNTVVMKSBpbiBUYXJnZXRWYXJpYWJsZShyaXNjdl96bV9z dWJleHQpCj4rCj4gVGFyZ2V0VmFyaWFibGUKPiBpbnQgcmlzY3Zfc3Zfc3ViZXh0Cj4KPitNYXNr KFNWSU5WQUwpIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3N2X3N1YmV4dCkKPisKPitNYXNrKFNW TkFQT1QpIGluIFRhcmdldFZhcmlhYmxlKHJpc2N2X3N2X3N1YmV4dCkKPitJdCBsb29rcyBsaWtl IGEgZ29vZCBpZGVhLiBIb3dldmVyLCB0aGVyZSBhcmUgc3RpbGwgbWFueSBtb2R1bGVzIHRoYXQg bG9vayB2ZXJ5IHNpbWlsYXIsIGNhbiB3ZSBmdXJ0aGVyIG9wdGltaXplIHRoZXNlIGNvZGVzLkJS LEppYXdlaQo+Cj4gRW51bQo+IE5hbWUoaXNhX3NwZWNfY2xhc3MpIFR5cGUoZW51bSByaXNjdl9p c2Ffc3BlY19jbGFzcykKPiBTdXBwb3J0ZWQgSVNBIHNwZWNzIChmb3IgdXNlIHdpdGggdGhlIC1t aXNhLXNwZWM9IG9wdGlvbik6Cj5kaWZmIC0tZ2l0IGEvZ2NjL29wdC1mdW5jdGlvbnMuYXdrIGIv Z2NjL29wdC1mdW5jdGlvbnMuYXdrCj5pbmRleCAyYWVlMGI5ZjFjMy4uOWQ2MDgwZDY0YTggMTAw NjQ0Cj4tLS0gYS9nY2Mvb3B0LWZ1bmN0aW9ucy5hd2sKPisrKyBiL2djYy9vcHQtZnVuY3Rpb25z LmF3awo+QEAgLTM4NywzICszODcsMTQgQEAgZnVuY3Rpb24gaW50ZWdlcl9yYW5nZV9pbmZvKHJh bmdlX29wdGlvbiwgaW5pdCwgb3B0aW9uLCB1aW50ZWdlcl91c2VkKQo+wqDCoMKgwqAgZWxzZQo+ wqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gIi0xLCAtMSIKPiB9Cj4rCj4rIyBGaW5kIHRoZSBpbmRl eCBvZiB0YXJnZXQgdmFyaWFibGUgZnJvbSBleHRyYV90YXJnZXRfdmFycwo+K2Z1bmN0aW9uIGZp bmRfaW5kZXgodmFyLCB2YXJfYXJyeSwgbl92YXJfYXJyeSkKPit7Cj4rwqDCoMKgIGZvciAodmFy X2luZGV4ID0gMDsgdmFyX2luZGV4IDwgbl92YXJfYXJyeTsgdmFyX2luZGV4KyspCj4rwqDCoMKg IHsKPivCoMKgwqDCoMKgwqDCoCBpZiAodmFyX2FycnlbdmFyX2luZGV4XSA9PSB2YXIpCj4rwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhawo+K8KgwqDCoCB9Cj4rwqDCoMKgIHJldHVybiB2YXJf aW5kZXgKPit9Cj5cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKPmRpZmYgLS1naXQgYS9nY2Mv b3B0LXJlYWQuYXdrIGIvZ2NjL29wdC1yZWFkLmF3awo+aW5kZXggY2UzNjE3YzhkNGEuLmViZTQ4 ZGI5NjhiIDEwMDY0NAo+LS0tIGEvZ2NjL29wdC1yZWFkLmF3awo+KysrIGIvZ2NjL29wdC1yZWFk LmF3awo+QEAgLTIyLDYgKzIyLDcgQEAgQkVHSU4gewo+IG5fb3B0cyA9IDAKPiBuX2xhbmdzID0g MAo+IG5fdGFyZ2V0X3NhdmUgPSAwCj4rCW5fdGFyZ2V0X3ZhcnMgPSAwCj4gbl9leHRyYV92YXJz ID0gMAo+IG5fZXh0cmFfdGFyZ2V0X3ZhcnMgPSAwCj4gbl9leHRyYV9tYXNrcyA9IDAKPkBAIC0x MjEsNyArMTIyLDIwIEBAIEJFR0lOIHsKPiBuX29wdHMrKzsKPiB9Cj4gZWxzZSB7Cj4tCWV4dHJh X21hc2tzW25fZXh0cmFfbWFza3MrK10gPSBuYW1lCj4rCWlmKCQwIH4gImluIikKPisJewo+Kwl0 YXJnZXRfdmFyID0gb3B0X2FyZ3MoIlRhcmdldFZhcmlhYmxlIiwgJDEpCj4rCXZhcl9pbmRleCA9 IGZpbmRfaW5kZXgodGFyZ2V0X3ZhciwgdGFyZ2V0X3ZhcnMsIG5fdGFyZ2V0X3ZhcnMpCj4rCWlm ICh2YXJfaW5kZXggPT0gbl90YXJnZXRfdmFycykKPisJewo+Kwl0YXJnZXRfdmFyc1tuX3Rhcmdl dF92YXJzKytdID0gdGFyZ2V0X3Zhcgo+Kwl9Cj4rCW90aGVyX21hc2tzW3Zhcl9pbmRleF1bbl9v dGhlcl9tYXNrW3Zhcl9pbmRleF0rK10gPSBuYW1lCj4rCX0KPisJZWxzZQo+Kwl7Cj4rCWV4dHJh X21hc2tzW25fZXh0cmFfbWFza3MrK10gPSBuYW1lCj4rCX0KPiB9Cj4gfQo+IH0KPmRpZmYgLS1n aXQgYS9nY2Mvb3B0aC1nZW4uYXdrIGIvZ2NjL29wdGgtZ2VuLmF3awo+aW5kZXggOGJiYThlYzQ1 NDkuLjI0N2E5ZmI4OTQ0IDEwMDY0NAo+LS0tIGEvZ2NjL29wdGgtZ2VuLmF3awo+KysrIGIvZ2Nj L29wdGgtZ2VuLmF3awo+QEAgLTQwNiw2ICs0MDYsMTggQEAgZm9yIChpID0gMDsgaSA8IG5fZXh0 cmFfbWFza3M7IGkrKykgewo+IHByaW50ICIjZGVmaW5lIE1BU0tfIiBleHRyYV9tYXNrc1tpXSAi ICgxVSA8PCAiIG1hc2tudW1bIiJdKysgIikiCj4gfQo+Cj4rZm9yIChpID0gMDsgaSA8IG5fdGFy Z2V0X3ZhcnM7IGkrKykKPit7Cj4rCWlmIChmaW5kX2luZGV4KHRhcmdldF92YXJzW2ldLCBleHRy YV90YXJnZXRfdmFycywgbl9leHRyYV90YXJnZXRfdmFycykgPT0gbl9leHRyYV90YXJnZXRfdmFy cykKPisJY29udGludWUKPisJZm9yIChqID0gMDsgaiA8IG5fb3RoZXJfbWFza1tpXTsgaisrKQo+ Kwl7Cj4rCXByaW50ICIjZGVmaW5lIE1BU0tfIiBvdGhlcl9tYXNrc1tpXVtqXSAiICgxVSA8PCAi IG90aGVyX21hc2tudW1baV1bIiJdKysgIikiCj4rCX0KPisJaWYgKG90aGVyX21hc2tudW1baV1b IiJdID4gMzIpCj4rCXByaW50ICIjZXJyb3IgdG9vIG1hbnkgdGFyZ2V0IG1hc2tzIGZvciIgZXh0 cmFfdGFyZ2V0X3ZhcnNbaV0KPit9Cj4rCj4gZm9yICh2YXIgaW4gbWFza251bSkgewo+IGlmICh2 YXIgIT0gIiIgJiYgaG9zdF93aWRlX2ludFt2YXJdID09ICJ5ZXMiKSB7Cj4gcHJpbnQgIiNpZiBk ZWZpbmVkKEhPU1RfQklUU19QRVJfV0lERV9JTlQpICYmICIgbWFza251bVt2YXJdICIgPiBIT1NU X0JJVFNfUEVSX1dJREVfSU5UIgo+QEAgLTQ1Nyw2ICs0NjksMTYgQEAgZm9yIChpID0gMDsgaSA8 IG5fZXh0cmFfbWFza3M7IGkrKykgewo+IHByaW50ICIjZGVmaW5lIFRBUkdFVF8iIGV4dHJhX21h c2tzW2ldIFwKPiDCoMKgwqDCoMKgICIgKCh0YXJnZXRfZmxhZ3MgJiBNQVNLXyIgZXh0cmFfbWFz a3NbaV0gIikgIT0gMCkiCj4gfQo+K2ZvciAoaSA9IDA7IGkgPCBuX3RhcmdldF92YXJzOyBpKysp Cj4rewo+KwlpZiAoZmluZF9pbmRleCh0YXJnZXRfdmFyc1tpXSwgZXh0cmFfdGFyZ2V0X3ZhcnMs IG5fZXh0cmFfdGFyZ2V0X3ZhcnMpID09IG5fZXh0cmFfdGFyZ2V0X3ZhcnMpCj4rCWNvbnRpbnVl Cj4rCWZvciAoaiA9IDA7IGogPCBuX290aGVyX21hc2tbaV07IGorKykKPisJewo+KwlwcmludCAi I2RlZmluZSBUQVJHRVRfIiBvdGhlcl9tYXNrc1tpXVtqXSBcCj4rCcKgwqDCoMKgwqAgIiAoKCIg dGFyZ2V0X3ZhcnNbaV0gIiAmIE1BU0tfIiBvdGhlcl9tYXNrc1tpXVtqXSAiKSAhPSAwKSIKPisJ fQo+K30KPiBwcmludCAiIgo+Cj4gZm9yIChpID0gMDsgaSA8IG5fb3B0czsgaSsrKSB7Cj4tLQo+ Mi4xNy4xIAoKSGkgSmlhd2VpLAoKVGhhbmtzIGZvciB5b3VyIHJlcGxheSwgSSB3aWxsIHRyeSB0 byBvcHRpbWl6ZSB0aGUgZ2VuZXJhdGlvbiBjb2RlIHRvIGVsaW1pbmF0ZSB0aGUgcmVkdW5kYW50 IGNvZGVzLgoKV2FuZyBGZW5nCkJlc3QgcmVnYXJkcwoK