From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mx.groups.io with SMTP id smtpd.web12.8193.1642658736518582056 for ; Wed, 19 Jan 2022 22:05:36 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=XHcb33me; spf=pass (domain: intel.com, ip: 134.134.136.65, mailfrom: di.zhang@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1642658736; x=1674194736; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=Wdc52gtHuVurqVnAc5uIfFCl1g455DH2iL+M2ocieUg=; b=XHcb33meX7HfNaCpbLqYh8mOKbEiH+KYZCpRXVtIshaonTR5qXif0tea cjNisGhUnF8oUSqZf8h5KRiGD8fY5IKSKIxS20bfmc4z2wz+4tnfS3/Uz xnDSjSVkneHjtl5b+G/6nMrBjs6ZRWPR/YyaCpu1V2nYMTK8aS7se4F2B Y7A0QxFU0rRD8/oUv69EieGJLJB39a85V2lQCya3JC4eT+OZI3dCX+tew f1wuAK+NnG7i2WzjTPl0p2LQdM+7HjlclTJRscCqOilvhPhb1tayjawuQ hgdELAbwgG/7oXBp5OPRZ0gujJP60LKKnbSM4rfKN81JmdhTg8sGsV5eD Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10232"; a="245233868" X-IronPort-AV: E=Sophos;i="5.88,301,1635231600"; d="scan'208";a="245233868" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Jan 2022 22:05:36 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,301,1635231600"; d="scan'208";a="626176323" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga004.jf.intel.com with ESMTP; 19 Jan 2022 22:05:35 -0800 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Wed, 19 Jan 2022 22:05:34 -0800 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20 via Frontend Transport; Wed, 19 Jan 2022 22:05:34 -0800 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.170) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.20; Wed, 19 Jan 2022 22:05:33 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=l9hazPA6t6Af+81wBtKEb8QA8PC1xjhUZw4gejblz6JllW9HSn4jJvip/lEGc7d4MOg7CKdxst2mEiFHDqd9kPU5o0sCLkdDYH2wu1RjpNq3lzdGjGu4Cm618KfYzDc5xSS5JVAJRtMp9id6JASfI5DTpx6I9NPYyJxXDCw7brO0SuC03SsAuIfCA/wHbOqVWhPM6zOsJ6GrkqzaTyYmP2RvzqIWQ5nsHhAjRFlcm3NKvU7PHwOJlSpSOW9He5WaGYS+Ta9JUNcA4Vt/ktJpiBaBG8gKuYBaZqHIFXNzCSGVt74ARPHqVNhAg7I7EoW40W8sb5bf10eKLAZL9u+1Fw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Wdc52gtHuVurqVnAc5uIfFCl1g455DH2iL+M2ocieUg=; b=Wkr+sCERWLlauxy+5yMdV/ohFitXFd5IQ/a50r9fZkqf2DwK3qenje+QRnbeZ9j8v/T7dHH6+nT+hWtpcKPaJEfWbTIKFSvFX+OA9YGM6EqDneCsoDqsSMPmj/ZiBcarIi9n9mBBPMQt6iagwUFeQJZQKDtDJoaZm46KemDGFDqefRVvWYOnSRbzYz5UIi61pWLGDYJEmXGfPoYlfFrVR9Z/izMEp8gk8ULuHj/W+K9i0skJuIIDD9tCN3d+CT7QE0lb3foB/ish0d0+sxE2c0fUeMLmEW+Pt/BLdM5Aj+c0JrpocYFjRH/ZRhVnqm45Y5lXpQ6PpsCIcLkoKgpHpQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from PH0PR11MB4966.namprd11.prod.outlook.com (2603:10b6:510:42::21) by BL0PR11MB3364.namprd11.prod.outlook.com (2603:10b6:208:69::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4888.12; Thu, 20 Jan 2022 06:05:10 +0000 Received: from PH0PR11MB4966.namprd11.prod.outlook.com ([fe80::143c:310d:4a0:ce8c]) by PH0PR11MB4966.namprd11.prod.outlook.com ([fe80::143c:310d:4a0:ce8c%3]) with mapi id 15.20.4888.014; Thu, 20 Jan 2022 06:05:10 +0000 From: "Zhang, Di" To: "Gao, Liming" , "Chen, Lin Z" , "devel@edk2.groups.io" , "Huang, Long1" CC: "Bi, Dandan" , "Feng, Bob C" , "Li, Zhuangzhi" Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/HiiDatabaseDxe: Add Support for authenticated variable Thread-Topic: [edk2-devel] [PATCH] MdeModulePkg/HiiDatabaseDxe: Add Support for authenticated variable Thread-Index: AQHYBgAkWD0utY1K8Uq6mu7hIOGU7qxnFZMAgADhqXCAAb0qAIABxGQA Date: Thu, 20 Jan 2022 06:05:10 +0000 Message-ID: References: <035601d80b90$cab5fc30$6021f490$@byosoft.com.cn> <011701d80ce0$33d786c0$9b869440$@byosoft.com.cn> In-Reply-To: <011701d80ce0$33d786c0$9b869440$@byosoft.com.cn> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.6.200.16 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e10c39f1-4adc-436f-1f42-08d9dbdad107 x-ms-traffictypediagnostic: BL0PR11MB3364:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ca8wM5D1bD75KQKzjGcuNLYEnHFjTKbG9mKu8bgj7fFomKWiO1LhFoFtt2Zw88+zsZ16pW3TZhl1vS+MtJ+hfG/Uf7AzRSAXzHTvSC6wN1xUXi+19NHrvivXzqNSTGW1tQj/VycTQ32GXqSzEeHpyvHjNEI1CT3vAur2/uVzef/bINQrCHaIihMy2s+cwMNpg+htkDiQvlLPTW6mxdrz2hh9Sb6E5wnCmAvIW6X4u6vXfKsyCubFJ7O3Ton5xoITRaa5icWsi2bs2b19sdjdi+DYJJACeeoM185rUcm/1Lp1UsEjIcMDqVaBg7S+5j+e9IuWmI+xSxWPksWJzM4XL8InY/Hktu/MIz6r2ipC1W80DmC7AdUvfrTysAn0dYps1cR27GY9zZ2QTid0h/Cv6B75Wrqs2GBqipf19M4lcNFLccrc2dIjtpnq3AikM33ncDwyGcujMo+aeHyNH3G7CZr4YZAM02lvWtw/ng3a5xYCPzv62fJfgypor+Lyd4FVUn/uJ6dCvGGS7UIX5XeDAn0LbdAKR56J/PfSDf6Tw0Eh/6S7pWywJOHQa00+IrGVIyOYCCVdDNWRet1Wl0mH9BuEReV0G9JP7KOPLmNuDkqfaklH4/D9sBacc14wD3T2e7kfdESU0MWWbuuJSHVGn+7sTTwE25QQb94OJrmS8ris8vElQSdxpIubEzgZoYG/XoHZdEMhpf1ycFfQgDYcoCP8FInEtuA6nmaYE0/vJRKjFysOgJJ+Mo+Kqd7LXMl4zKYyT8GJ5t0aP4pLaUFgLpEsf1XMdGQd6tzUVz2zihj6cZ2Ebwc7LAH4CCdCCwCp9q6MNz3JRHz/GjQqBMfzhQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB4966.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(54906003)(33656002)(316002)(4326008)(82960400001)(8936002)(71200400001)(38100700002)(186003)(110136005)(2906002)(26005)(5660300002)(52536014)(966005)(66946007)(8676002)(83380400001)(7696005)(6636002)(19627235002)(107886003)(66556008)(122000001)(66446008)(76116006)(66476007)(53546011)(508600001)(64756008)(9686003)(30864003)(6506007)(55016003)(86362001)(38070700005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?L2dmV2JXQnpHcGdYWDY3cUlpbFRwb3pON0FHV2dQZXE3YWJrMm9EanZ5bWI3?= =?utf-8?B?bnRZYjlxckM5K3ViZC9YQk1wMmlLUTdTeFlNcGhZV1lEU21rQm91S1R3Qkcx?= =?utf-8?B?SlRVS2x5VTBROWp6bkFVTitKR2Q1aGpWVDlJWTZlekIyWUlsRnA1MmpaSFhV?= =?utf-8?B?b2U3Vm1Bc0FWS0NnQTRMVFJVbXZrMlUzS1NQclppdXlJejJwUjlZdCtLNkpu?= =?utf-8?B?d0RlWStUQzRaaE9GQStSUlRkN2hmbWtYTnRDcklqSExUNTdHWmtHSzNCVHNq?= =?utf-8?B?S3hXTlIwdDVpMHQ3R3B2UzVFQnFIUmNKTkJPYUNBSWZaMzh4MlhXQ0trMWgv?= =?utf-8?B?Vkk5VTZERVNsYjhYdEN4VDB3T3liaXZ3OWh0MUpGTWwzSVdTMVFOMmhSMWFR?= =?utf-8?B?YVYxQWJ2WjRON1psaERvWlRlbTdZK2FOakRWamtVV2U3ZTBWS24xQXZUQnRW?= =?utf-8?B?UFBCSW5ITkNzb0d3Q1B2dXhPWWFZQ2Q3aS8zbU5qL2tDelVhQ0o3OTR0djVu?= =?utf-8?B?SDA3aGwySFVqVitERnJTTUxZMkJEcHVTT0VISzNWdzMrbytYTzloZkoyYVdu?= =?utf-8?B?Y1FNR3JZTHFwamhFckJ2VjRCOFVPSXcvT09mM05tOFY4RDF3R21aMnZhWVRE?= =?utf-8?B?djFZVnhJdkVvT2N5R3B4OUNWQUtxeWh1MlM1Mi9qTDFQTjJFMDBOM0V0N0Nv?= =?utf-8?B?bzUvUmtRVGNFVmZ5SzhOeWxNRFlqekg3THZtV2N6YlNDRjVBV2ZjRnNldFZI?= =?utf-8?B?V1lIWDRrQ0crLzIvTnhRWmh4MVRFbnloa09LRlBqTXZWZWZCR0h3WVE3SDUx?= =?utf-8?B?OTArRlpMazArOTRwSGJQVDhhRGtwSjViOWU3SUlXNGRSMHEyNnY4bGZic3pz?= =?utf-8?B?MmxvYkxTcHgrZWg4cEN6YU1PN1UyUGFtcXlQZFFCcEJiOVVJeHlzZi82Z1Z6?= =?utf-8?B?d1NtTFJSdHYyL0E4SVJmT2ZhcjNGMTE3YTd6NksxQW9qNUZHTEZ6QnNHa3RE?= =?utf-8?B?MVBvdzlPOUNiK0IyVjZVM2x6U1d2b0tLSXNaaXpIVklueFIveFZidHYzVExF?= =?utf-8?B?S3lVeU9ScmpHNlpDV3llSUVleVdEYUt1N3N5UStaK3NoSUVGeUYvNXk4UndR?= =?utf-8?B?YlY5ak5na0xQQlB0MDJyZ3JTR2JYbC8yTUtMdGsvd2VDMUJQZ0dzWEo3dXkw?= =?utf-8?B?d2hPUTZwSlpkcGh5L1o1M1ZIalN3cDJ1dXd2dE5EVUZ5TllyOEdHL216aElu?= =?utf-8?B?Y0dnN09HOHFYZ0ZQMTByZlpGNzRWVUhQV3Q0bFJjbVlWR3RhRDVVY2NmbnBu?= =?utf-8?B?cmhpMHN1Qzg1QVJKSEowdFN3ZnVGTG9LNmthU0ExclBiS3dEbDBMVGpoaUlp?= =?utf-8?B?SzRJSEJxMU1qL25Tbk9LWFAvbmNQS2l3SzFVSzlIeHZ1Rzl3N0dMQ1BnekdF?= =?utf-8?B?dXlVZzVha2JLZ01JQi90TldDWUtzZGJWOUpFRDJxSkxJdE9VeUx6cXlsWXpz?= =?utf-8?B?MnVKWFpUUlJvdzM1cFFsckdmUlZMTmJCZElNaVBCdURhQU5KZlFZdnJmeFpE?= =?utf-8?B?Yzh6TVdtUVZBK2Q0clpnUGloaWo0djREb0F1djlOQ25DNG1VOGdtaTA4REts?= =?utf-8?B?eDRuZ0hzc1oxQVRORldVQkFUK0pqbnVFMWxHMWxuTGUzU2hBNW0rNFhEdXdR?= =?utf-8?B?TnRNMVNyMm4xQktWVkpzRFBpVVB1czd2cURpLzg1VXprSE1HL0VPVWJ2ZWFj?= =?utf-8?B?Z0hrNGFJNE9CdFRrK0VnUW5oM2J4aHcwRWpJOFJmTHZCajBSTy9abHpsV1ZO?= =?utf-8?B?Y1NJWEZEUXhyRXptMEpHcGFFaGZTaU9pcmNWckZESk5sVHVWelBvbFF4cXE1?= =?utf-8?B?enJ4bkU1ODJORWFVcHNUU3VLSUNyUE9ueGVJWDlEeG43c042TFhwRTBGYXRP?= =?utf-8?B?L0hUWFJKTXJHWEt1U2xZbVdwblVKaldJMFAyRnhBeVprbnBYeEtaYzhlMStO?= =?utf-8?B?cTd0YVR4REFxNlduUUNFQXlhMy9PZVlTQkhUSTNXaUZWNHI2cFF4SVk5Ti9U?= =?utf-8?B?VnVwYkx6akJuQTVkK29CYWFwUzJCLzYyVWNZbjk0UFVUWGpWVkU1RnkvTmVl?= =?utf-8?B?RFdMS243R2V5dDdCajRLWEpoazdFdUNEM25NclZRTzd4L2tuRkMvc25BQ0NM?= =?utf-8?Q?JBFoRMR/FUxZfxEuzLoFfH8=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB4966.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e10c39f1-4adc-436f-1f42-08d9dbdad107 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Jan 2022 06:05:10.4175 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: tpzV5LpTQFi+BYhk0jYq/PVWs4HGY/gM9B6SPZ0eBU+YnRihb6MKk4Zvh9m+IYcnqfaoNZMkd21UIUQZKxGpzA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR11MB3364 Return-Path: di.zhang@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQpMaW1pbmc6DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZ2FvbGlt aW5nIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+DQo+IFNlbnQ6IFdlZG5lc2RheSwgSmFudWFy eSAxOSwgMjAyMiAxMDo1NyBBTQ0KPiBUbzogQ2hlbiwgTGluIFogPGxpbi56LmNoZW5AaW50ZWwu Y29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW87IEh1YW5nLCBMb25nMQ0KPiA8bG9uZzEuaHVhbmdA aW50ZWwuY29tPg0KPiBDYzogQmksIERhbmRhbiA8ZGFuZGFuLmJpQGludGVsLmNvbT47IEZlbmcs IEJvYiBDIDxib2IuYy5mZW5nQGludGVsLmNvbT47DQo+IFpoYW5nLCBEaSA8ZGkuemhhbmdAaW50 ZWwuY29tPjsgTGksIFpodWFuZ3poaSA8emh1YW5nemhpLmxpQGludGVsLmNvbT4NCj4gU3ViamVj dDog5Zue5aSNOiBbZWRrMi1kZXZlbF0gW1BBVENIXSBNZGVNb2R1bGVQa2cvSGlpRGF0YWJhc2VE eGU6IEFkZA0KPiBTdXBwb3J0IGZvciBhdXRoZW50aWNhdGVkIHZhcmlhYmxlDQo+IA0KPiBMaW46 DQo+IA0KPiA+IC0tLS0t6YKu5Lu25Y6f5Lu2LS0tLS0NCj4gPiDlj5Hku7bkuro6IENoZW4sIExp biBaIDxsaW4uei5jaGVuQGludGVsLmNvbT4NCj4gPiDlj5HpgIHml7bpl7Q6IDIwMjLlubQx5pyI MTjml6UgODo0Mg0KPiA+IOaUtuS7tuS6ujogR2FvLCBMaW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0 LmNvbS5jbj47IGRldmVsQGVkazIuZ3JvdXBzLmlvOw0KPiA+IEh1YW5nLCBMb25nMSA8bG9uZzEu aHVhbmdAaW50ZWwuY29tPg0KPiA+IOaKhOmAgTogQmksIERhbmRhbiA8ZGFuZGFuLmJpQGludGVs LmNvbT47IEZlbmcsIEJvYiBDDQo+ID4gPGJvYi5jLmZlbmdAaW50ZWwuY29tPjsgWmhhbmcsIERp IDxkaS56aGFuZ0BpbnRlbC5jb20+OyBMaSwgWmh1YW5nemhpDQo+ID4gPHpodWFuZ3poaS5saUBp bnRlbC5jb20+DQo+ID4g5Li76aKYOiBSRTogW2VkazItZGV2ZWxdIFtQQVRDSF0gTWRlTW9kdWxl UGtnL0hpaURhdGFiYXNlRHhlOiBBZGQNCj4gPiBTdXBwb3J0IGZvciBhdXRoZW50aWNhdGVkIHZh cmlhYmxlDQo+ID4NCj4gPiBIaSBMaW1pbmcsDQo+ID4NCj4gPiAgICBQbHMgc2VlIG15IGNvbW1l bnRzIGJlbG93Lg0KPiA+DQo+ID4gMS4NCj4gPiBQY2ROdlN0b3JlRGVmYXVsdFZhbHVlQnVmZmVy IHR5cGUgaXMgRHluYW1pY0V4LiBJdHMgUGNkR2V0UHRyIGlzIHNhbWUgdG8NCj4gPiBQY2RHZXRF eFB0ci4gVGhpcyBjaGFuZ2UgaXMgbm90IHJlcXVpcmVkLg0KPiA+DQo+ID4gW0xpbl0gSXQnbGwg Z2V0IGFsaWdubWVudCB3aXRoIFBFSSBwaGFzZSByZWZlcmVuY2UgSWYgdXNpbmcgUGNkR2V0RXhQ dHINCj4gdmVyc2lvbi4NCj4gPiBFZGsyL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvUENEL1BlaS9Q Y2QuYyMxNjYNCj4gPiBEYXRhQnVmZmVyID0gKFVJTlQ4ICopUGVpUGNkR2V0UHRyRXggKCZnRWZp TWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQsDQo+ID4gUGNkVG9rZW4gKFBjZE52U3RvcmVEZWZh dWx0VmFsdWVCdWZmZXIpKTsNCj4gPg0KPiBQY2RQZWkgaXMgZGlmZmVyZW50LiBJdCBpcyBQY2Qg ZHJpdmVyLiBJdCBjYW4ndCBjb25zdW1lIHRoZSByZWFsIFBjZExpYi4NCj4gU28sIGl0IGRvZXNu J3QgdXNlIFBjZExpYiBQY2RHZXRQdHIoKSBBUEkuDQo+IEl0IHVzZXMgdGhlIGludGVybmFsIGZ1 bmN0aW9uIFBlaVBjZEdldFB0ckV4KCkgdG8gZ2V0IFBDRCB2YWx1ZSBhbmQgc2l6ZS4NCj4gDQo+ IEhpaURhdGFCYXNlIGlzIG5vcm1hbCBEWEUgZHJpdmVyLiBJdCBjYW4gZGVwZW5kIG9uIHRoZSBy ZWFsIFBjZExpYi4gU28sIGl0DQo+IHVzZXMgUGNkTGliIFBjZEdldFB0cigpIEFQSS4NCj4gU2Vl bWx5LCBjdXJyZW50IGNvZGUgYnJpbmdzIGNvbmZ1c2UuIElmIHNvLCBJIGFtIE9LIHRvIG1ha2Ug dGhpcyBjaGFuZ2UuDQo+IEFuZCwgcGxlYXNlIGFsc28gdXBkYXRlIFBjZEdldFNpemUgKFBjZE52 U3RvcmVEZWZhdWx0VmFsdWVCdWZmZXIpIHdpdGgNCj4gTGliUGNkR2V0RXhTaXplKCkNCj4gDQo+ ID4gMi4NCj4gPiBWYXJpYWJsZVN0b3JhZ2UgZGF0YSBidWZmZXIgaXMgZnJvbSBQY2ROdlN0b3Jl RGVmYXVsdFZhbHVlQnVmZmVyLg0KPiA+IFBjZE52U3RvcmVEZWZhdWx0VmFsdWVCdWZmZXIgaXMg YXV0byBnZW5lcmF0ZWQgYnkgQmFzZVRvb2xzLg0KPiA+IEJ5IGRlc2lnbiwgaXRzIGRhdGEgZm9y bWF0IGlzIGFsd2F5cyBub3JtYWwgdmFyaWFibGUgc3RvcmFnZSBmb3JtYXQuDQo+ID4gU28sIGl0 cyB2YWx1ZSBjYW4ndCBiZSBhdXRoIHZhcmlhYmxlIGZvcm1hdC4NCj4gPg0KPiA+IFtMaW5dIEJh c2VUb29scyBjYW4gZ2VuZXJhdGUgYXV0aGVudGljYXRlZCB2YXJpYWJsZSBzdG9yYWdlIGZvcm1h dCBub3cNCj4gKHNlZQ0KPiA+IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8vZy9kZXZlbC9tZXNzYWdl LzgzMzI5KSwNCj4gPiAgc2luY2UgcHJldmlvdXMgRkNFIHRvb2wgZ2VuZXJhdGVzIGF1dGhlbnRp Y2F0ZWQgZm9ybWF0LCB3ZSB3YW50IHRvIGtlZXANCj4gPiB2YXJpYWJsZSBzdG9yYWdlIGZvcm1h dCBubyBjaGFuZ2VzIGFmdGVyIHN3aXRjaGluZyB0byBTdHJ1Y3R1cmVQY2QuDQo+ID4NCj4gU29y cnksIEkgbWlzcyB0aGUgcHJldmlvdXMgY2hhbmdlIGluIEJhc2VUb29scy4gTm9ybWFsIHZhcmlh YmxlIHN0b3JhZ2UgaXMNCj4gZW5vdWdoIGZvciBUb29scyBhbmQgQ29kZS4NCj4gVGhlIGRlZmF1 bHQgc2V0dGluZyBmb3JtYXQgY2FuIGJlIGFsd2F5cyBub3JtYWwgdmFyaWFibGUgc3RvcmFnZS4g VGhlDQo+IGNvbnN1bWVyIGNvZGUgbG9naWMgY2FuIGJlIHNpbXBsZS4NCj4gSSBkb24ndCBrbm93 IHdoYXQgcHVycG9zZSB0byBrZWVwIHRoZSBhbGlnbm1lbnQgd2l0aCBGQ0UgdG9vbCBiZWhhdmlv ci4gSXMNCj4gdGhlcmUgb3RoZXIgdG9vbCBvciBjb2RlIHRvIHVzZQ0KPiB0aGUgZ2VuZXJhdGVk IFBjZE52U3RvcmVEZWZhdWx0VmFsdWVCdWZmZXI/DQo+IA0KDQpXZSBoYXZlIHRoZSB1c2FnZSB0 aGF0IHdyaXRpbmcgdGhlIGVudGlyZSBWUEQgKHdoaWNoIGhhcyBkZWZhdWx0IHNldHVwIHZhbHVl KQ0KdG8gdmFyaWFibGUgcmVnaW9uIHVwb24gZmlyc3QgYm9vdC4gQW5kIHRoZSB2YXJpYWJsZSBy ZWdpb24gbmVlZHMgdG8gYmUgaW4NCmF1dGhlbnRpY2F0ZWQgZm9ybWF0IHdoZW4gc2VjdXJlIGJv b3QgaXMgZW5hYmxlZCwgc28gd2UgYWxzbyBuZWVkIHRoZSBWUEQgaW4NCmF1dGhlbnRpY2F0ZWQg Zm9ybWF0LiBIb3BlIGl0IGNsYXJpZmllcyB5b3VyIHF1ZXN0aW9uLg0KDQo+IFRoYW5rcw0KPiBM aW1pbmcNCj4gPiBUaGFua3MsDQo+ID4gTGluDQo+ID4NCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiA+IEZyb206IGdhb2xpbWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPg0K PiA+IFNlbnQ6IE1vbmRheSwgSmFudWFyeSAxNywgMjAyMiA2OjU2IFBNDQo+ID4gVG86IGRldmVs QGVkazIuZ3JvdXBzLmlvOyBIdWFuZywgTG9uZzEgPGxvbmcxLmh1YW5nQGludGVsLmNvbT4NCj4g PiBDYzogQ2hlbiwgTGluIFogPGxpbi56LmNoZW5AaW50ZWwuY29tPjsgQmksIERhbmRhbiA8ZGFu ZGFuLmJpQGludGVsLmNvbT47DQo+ID4gRmVuZywgQm9iIEMgPGJvYi5jLmZlbmdAaW50ZWwuY29t Pg0KPiA+IFN1YmplY3Q6IOWbnuWkjTogW2VkazItZGV2ZWxdIFtQQVRDSF0gTWRlTW9kdWxlUGtn L0hpaURhdGFiYXNlRHhlOiBBZGQNCj4gPiBTdXBwb3J0IGZvciBhdXRoZW50aWNhdGVkIHZhcmlh YmxlDQo+ID4NCj4gPiBMb25nOg0KPiA+ICAgSSBhZGQgbXkgY29tbWVudHMgYmVsb3cuDQo+ID4N Cj4gPiA+IC0tLS0t6YKu5Lu25Y6f5Lu2LS0tLS0NCj4gPiA+IOWPkeS7tuS6ujogZGV2ZWxAZWRr Mi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiDku6PooaggTG9uZzENCj4gPiBIdWFu Zw0KPiA+ID4g5Y+R6YCB5pe26Ze0OiAyMDIy5bm0MeaciDEx5pelIDE6MDMNCj4gPiA+IOaUtuS7 tuS6ujogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiA+IOaKhOmAgTogSHVhbmcgTG9uZyA8bG9u ZzEuaHVhbmdAaW50ZWwuY29tPjsgTGltaW5nIEdhbw0KPiA+ID4gPGdhb2xpbWluZ0BieW9zb2Z0 LmNvbS5jbj47IENoZW4gTGluIFogPGxpbi56LmNoZW5AaW50ZWwuY29tPjsgRGFuZGFuDQo+ID4g PiBCaSA8ZGFuZGFuLmJpQGludGVsLmNvbT4NCj4gPiA+IOS4u+mimDogW2VkazItZGV2ZWxdIFtQ QVRDSF0gTWRlTW9kdWxlUGtnL0hpaURhdGFiYXNlRHhlOiBBZGQgU3VwcG9ydA0KPiA+IGZvcg0K PiA+ID4gYXV0aGVudGljYXRlZCB2YXJpYWJsZQ0KPiA+ID4NCj4gPiA+IFJFRjpodHRwczovL2J1 Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTM3OTYNCj4gPiA+DQo+ID4gPiBE YXRhYmFzZS5jOg0KPiA+ID4gCTEuIFJlcGxhY2UgUGNkR2V0RXhQdHIgd2l0aCBQY2RHZXRFeFB0 ci4NCj4gPiA+IAkyLiBBZGQgRmluZEF1dGhWYXJpYWJsZURhdGEgZnVuY3Rpb24gdG8gcGFyc2Ug YXV0aGVudGljYXRlZCB2YXJpYWJsZQ0KPiA+ID4gdHlwZSBmb3IgZ2V0dGluZyBhIGNvcnJlY3Qg ZGVmYXVsdCB2YWx1ZSBpbg0KPiBQY2ROdlN0b3JlRGVmYXVsdFZhbHVlQnVmZmVyLg0KPiA+ID4N Cj4gPiA+IENjOiBMaW1pbmcgR2FvIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+DQo+ID4gPiBD YzogQ2hlbiBMaW4gWiA8bGluLnouY2hlbkBpbnRlbC5jb20+DQo+ID4gPiBDYzogRGFuZGFuIEJp IDxkYW5kYW4uYmlAaW50ZWwuY29tPg0KPiA+ID4NCj4gPiA+IFNpZ25lZC1vZmYtYnk6IEh1YW5n IExvbmcgPGxvbmcxLmh1YW5nQGludGVsLmNvbT4NCj4gPiA+IC0tLQ0KPiA+ID4gIC4uLi9Vbml2 ZXJzYWwvSGlpRGF0YWJhc2VEeGUvRGF0YWJhc2UuYyAgICAgICB8IDE0Nw0KPiA+ICsrKysrKysr KysrKystLS0tLQ0KPiA+ID4gIC4uLi9IaWlEYXRhYmFzZUR4ZS9IaWlEYXRhYmFzZUR4ZS5pbmYg ICAgICAgICB8ICAgMyArDQo+ID4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMTQgaW5zZXJ0aW9ucygr KSwgMzYgZGVsZXRpb25zKC0pDQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBr Zy9Vbml2ZXJzYWwvSGlpRGF0YWJhc2VEeGUvRGF0YWJhc2UuYw0KPiA+ID4gYi9NZGVNb2R1bGVQ a2cvVW5pdmVyc2FsL0hpaURhdGFiYXNlRHhlL0RhdGFiYXNlLmMNCj4gPiA+IGluZGV4IDBiMDlj MjRkNTIuLmMwNTVmYTBmMjkgMTAwNjQ0DQo+ID4gPiAtLS0gYS9NZGVNb2R1bGVQa2cvVW5pdmVy c2FsL0hpaURhdGFiYXNlRHhlL0RhdGFiYXNlLmMNCj4gPiA+ICsrKyBiL01kZU1vZHVsZVBrZy9V bml2ZXJzYWwvSGlpRGF0YWJhc2VEeGUvRGF0YWJhc2UuYw0KPiA+ID4gQEAgLTYwMyw2ICs2MDMs NDUgQEAgRmluZFZhcmlhYmxlRGF0YSAoDQo+ID4gPiAgICByZXR1cm4gTlVMTDsNCj4gPiA+DQo+ ID4gPiAgfQ0KPiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gKy8qKg0KPiA+ID4NCj4gPiA+ICsg IEZpbmQgdGhlIG1hdGNoZWQgYXV0aGVudGljYXRlZCB2YXJpYWJsZSBmcm9tIHRoZSBpbnB1dCB2 YXJpYWJsZQ0KPiA+IHN0b3JhZ2UuDQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+ICsgIEBw YXJhbVtpbl0gVmFyaWFibGVTdG9yYWdlIFBvaW50IHRvIHRoZSB2YXJpYWJsZSBzdG9yYWdlIGhl YWRlci4NCj4gPiA+DQo+ID4gPiArICBAcGFyYW1baW5dIFZhckd1aWQgICAgICAgICBBIHVuaXF1 ZSBpZGVudGlmaWVyIGZvciB0aGUgdmFyaWFibGUuDQo+ID4gPg0KPiA+ID4gKyAgQHBhcmFtW2lu XSBWYXJBdHRyaWJ1dGUgICAgVGhlIGF0dHJpYnV0ZXMgYml0bWFzayBmb3IgdGhlIHZhcmlhYmxl Lg0KPiA+ID4NCj4gPiA+ICsgIEBwYXJhbVtpbl0gVmFyTmFtZSAgICAgICAgIEEgTnVsbC10ZXJt aW5hdGVkIGFzY2lpIHN0cmluZyB0aGF0IGlzDQo+ID4gdGhlDQo+ID4gPiBuYW1lIG9mIHRoZSB2 YXJpYWJsZS4NCj4gPiA+DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4gKyAgQHJldHVybiBQb2ludGVy IHRvIHRoZSBtYXRjaGVkIHZhcmlhYmxlIGhlYWRlciBvciBOVUxMIGlmIG5vdCBmb3VuZC4NCj4g PiA+DQo+ID4gPiArKiovDQo+ID4gPg0KPiA+ID4gK0FVVEhFTlRJQ0FURURfVkFSSUFCTEVfSEVB REVSICoNCj4gPiA+DQo+ID4gPiArRmluZEF1dGhWYXJpYWJsZURhdGEgKA0KPiA+ID4NCj4gPiA+ ICsgIElOICBWQVJJQUJMRV9TVE9SRV9IRUFERVIgICpWYXJpYWJsZVN0b3JhZ2UsDQo+ID4gPg0K PiA+ID4gKyAgSU4gIEVGSV9HVUlEICAgICAgICAgICAgICAgKlZhckd1aWQsDQo+ID4gPg0KPiA+ ID4gKyAgSU4gIFVJTlQzMiAgICAgICAgICAgICAgICAgVmFyQXR0cmlidXRlLA0KPiA+ID4NCj4g PiA+ICsgIElOICBDSEFSMTYgICAgICAgICAgICAgICAgICpWYXJOYW1lDQo+ID4gPg0KPiA+ID4g KyAgKQ0KPiA+ID4NCj4gPiA+ICt7DQo+ID4gPg0KPiA+ID4gKyAgQVVUSEVOVElDQVRFRF9WQVJJ QUJMRV9IRUFERVIgICpBdXRoVmFyaWFibGVIZWFkZXI7DQo+ID4gPg0KPiA+ID4gKyAgQVVUSEVO VElDQVRFRF9WQVJJQUJMRV9IRUFERVIgICpBdXRoVmFyaWFibGVFbmQ7DQo+ID4gPg0KPiA+ID4g Kw0KPiA+ID4NCj4gPiA+ICsgIEF1dGhWYXJpYWJsZUVuZCAgICA9IChBVVRIRU5USUNBVEVEX1ZB UklBQkxFX0hFQURFUg0KPiA+ICopKChVSU5UOA0KPiA+ID4gKilWYXJpYWJsZVN0b3JhZ2UgKyBW YXJpYWJsZVN0b3JhZ2UtPlNpemUpOw0KPiA+ID4NCj4gPiA+ICsgIEF1dGhWYXJpYWJsZUhlYWRl ciA9IChBVVRIRU5USUNBVEVEX1ZBUklBQkxFX0hFQURFUg0KPiA+ID4gKikoVmFyaWFibGVTdG9y YWdlICsgMSk7DQo+ID4gPg0KPiA+ID4gKyAgQXV0aFZhcmlhYmxlSGVhZGVyID0gKEFVVEhFTlRJ Q0FURURfVkFSSUFCTEVfSEVBREVSDQo+ID4gPiAqKUhFQURFUl9BTElHTiAoQXV0aFZhcmlhYmxl SGVhZGVyKTsNCj4gPiA+DQo+ID4gPiArICB3aGlsZSAoQXV0aFZhcmlhYmxlSGVhZGVyIDwgQXV0 aFZhcmlhYmxlRW5kKSB7DQo+ID4gPg0KPiA+ID4gKyAgICBpZiAoQ29tcGFyZUd1aWQgKCZBdXRo VmFyaWFibGVIZWFkZXItPlZlbmRvckd1aWQsIFZhckd1aWQpICYmDQo+ID4gPg0KPiA+ID4gKyAg ICAgICAgKEF1dGhWYXJpYWJsZUhlYWRlci0+QXR0cmlidXRlcyA9PSBWYXJBdHRyaWJ1dGUpICYm DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgKFN0ckNtcCAoVmFyTmFtZSwgKENIQVIxNiAqKShBdXRo VmFyaWFibGVIZWFkZXIgKyAxKSkgPT0gMCkpDQo+ID4gPg0KPiA+ID4gKyAgICB7DQo+ID4gPg0K PiA+ID4gKyAgICAgIHJldHVybiBBdXRoVmFyaWFibGVIZWFkZXI7DQo+ID4gPg0KPiA+ID4gKyAg ICB9DQo+ID4gPg0KPiA+ID4gKw0KPiA+ID4NCj4gPiA+ICsgICAgQXV0aFZhcmlhYmxlSGVhZGVy ID0gKEFVVEhFTlRJQ0FURURfVkFSSUFCTEVfSEVBREVSDQo+ID4gPiAqKSgoVUlOVDggKilBdXRo VmFyaWFibGVIZWFkZXIgKyBzaXplb2YNCj4gPiA+IChBVVRIRU5USUNBVEVEX1ZBUklBQkxFX0hF QURFUikgKyBBdXRoVmFyaWFibGVIZWFkZXItPk5hbWVTaXplICsNCj4gPiA+IEF1dGhWYXJpYWJs ZUhlYWRlci0+RGF0YVNpemUpOw0KPiA+ID4NCj4gPiA+ICsgICAgQXV0aFZhcmlhYmxlSGVhZGVy ID0gKEFVVEhFTlRJQ0FURURfVkFSSUFCTEVfSEVBREVSDQo+ID4gPiAqKUhFQURFUl9BTElHTiAo QXV0aFZhcmlhYmxlSGVhZGVyKTsNCj4gPiA+DQo+ID4gPiArICB9DQo+ID4gPg0KPiA+ID4gKw0K PiA+ID4NCj4gPiA+ICsgIHJldHVybiBOVUxMOw0KPiA+ID4NCj4gPiA+ICt9DQo+ID4gPg0KPiA+ ID4gKw0KPiA+ID4NCj4gPiA+ICAvKioNCj4gPiA+DQo+ID4gPiAgICBGaW5kIHF1ZXN0aW9uIGRl ZmF1bHQgdmFsdWUgZnJvbSBQY2ROdlN0b3JlRGVmYXVsdFZhbHVlQnVmZmVyDQo+ID4gPg0KPiA+ ID4NCj4gPiA+DQo+ID4gPiBAQCAtNjI2LDI1ICs2NjUsMjcgQEAgRmluZFF1ZXN0aW9uRGVmYXVs dFNldHRpbmcgKA0KPiA+ID4gICAgSU4gIEJPT0xFQU4gICAgICAgICAgICAgICAgICBCaXRGaWVs ZFF1ZXN0aW9uDQo+ID4gPg0KPiA+ID4gICAgKQ0KPiA+ID4NCj4gPiA+ICB7DQo+ID4gPg0KPiA+ ID4gLSAgVkFSSUFCTEVfSEVBREVSICAgICAgICAgICpWYXJpYWJsZUhlYWRlcjsNCj4gPiA+DQo+ ID4gPiAtICBWQVJJQUJMRV9TVE9SRV9IRUFERVIgICAgKlZhcmlhYmxlU3RvcmFnZTsNCj4gPiA+ DQo+ID4gPiAtICBMSVNUX0VOVFJZICAgICAgICAgICAgICAgKkxpbms7DQo+ID4gPg0KPiA+ID4g LSAgVkFSU1RPUkFHRV9ERUZBVUxUX0RBVEEgICpFbnRyeTsNCj4gPiA+DQo+ID4gPiAtICBWQVJJ QUJMRV9TVE9SRV9IRUFERVIgICAgKk52U3RvcmVCdWZmZXI7DQo+ID4gPg0KPiA+ID4gLSAgVUlO VDggICAgICAgICAgICAgICAgICAgICpEYXRhQnVmZmVyOw0KPiA+ID4NCj4gPiA+IC0gIFVJTlQ4 ICAgICAgICAgICAgICAgICAgICAqQnVmZmVyRW5kOw0KPiA+ID4NCj4gPiA+IC0gIEJPT0xFQU4g ICAgICAgICAgICAgICAgICBJc0ZvdW5kOw0KPiA+ID4NCj4gPiA+IC0gIFVJTlROICAgICAgICAg ICAgICAgICAgICBJbmRleDsNCj4gPiA+DQo+ID4gPiAtICBVSU5UMzIgICAgICAgICAgICAgICAg ICAgQnVmZmVyVmFsdWU7DQo+ID4gPg0KPiA+ID4gLSAgVUlOVDMyICAgICAgICAgICAgICAgICAg IEJpdEZpZWxkVmFsOw0KPiA+ID4NCj4gPiA+IC0gIFVJTlROICAgICAgICAgICAgICAgICAgICBC aXRPZmZzZXQ7DQo+ID4gPg0KPiA+ID4gLSAgVUlOVE4gICAgICAgICAgICAgICAgICAgIEJ5dGVP ZmZzZXQ7DQo+ID4gPg0KPiA+ID4gLSAgVUlOVE4gICAgICAgICAgICAgICAgICAgIEJpdFdpZHRo Ow0KPiA+ID4NCj4gPiA+IC0gIFVJTlROICAgICAgICAgICAgICAgICAgICBTdGFydEJpdDsNCj4g PiA+DQo+ID4gPiAtICBVSU5UTiAgICAgICAgICAgICAgICAgICAgRW5kQml0Ow0KPiA+ID4NCj4g PiA+IC0gIFBDRF9ERUZBVUxUX0RBVEEgICAgICAgICAqRGF0YUhlYWRlcjsNCj4gPiA+DQo+ID4g PiAtICBQQ0RfREVGQVVMVF9JTkZPICAgICAgICAgKkRlZmF1bHRJbmZvOw0KPiA+ID4NCj4gPiA+ IC0gIFBDRF9EQVRBX0RFTFRBICAgICAgICAgICAqRGVsdGFEYXRhOw0KPiA+ID4NCj4gPiA+ICsg IFZBUklBQkxFX0hFQURFUiAgICAgICAgICAgICAgICAgICAqVmFyaWFibGVIZWFkZXI7DQo+ID4g Pg0KPiA+ID4gKyAgQVVUSEVOVElDQVRFRF9WQVJJQUJMRV9IRUFERVIgICAgICpBdXRoVmFyaWFi bGVIZWFkZXI7DQo+ID4gPg0KPiA+ID4gKyAgVkFSSUFCTEVfU1RPUkVfSEVBREVSICAgICAgICAg ICAgICpWYXJpYWJsZVN0b3JhZ2U7DQo+ID4gPg0KPiA+ID4gKyAgTElTVF9FTlRSWSAgICAgICAg ICAgICAgICAgICAgICAgICpMaW5rOw0KPiA+ID4NCj4gPiA+ICsgIFZBUlNUT1JBR0VfREVGQVVM VF9EQVRBICAgICAgICAgICAqRW50cnk7DQo+ID4gPg0KPiA+ID4gKyAgVkFSSUFCTEVfU1RPUkVf SEVBREVSICAgICAgICAgICAgICpOdlN0b3JlQnVmZmVyOw0KPiA+ID4NCj4gPiA+ICsgIFVJTlQ4 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGF0YUJ1ZmZlcjsNCj4gPiA+DQo+ID4gPiAr ICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZlckVuZDsNCj4gPiA+DQo+ ID4gPiArICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0aEZvcm1hdDsNCj4g PiA+DQo+ID4gPiArICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAgSXNGb3VuZDsN Cj4gPiA+DQo+ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXg7 DQo+ID4gPg0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZl clZhbHVlOw0KPiA+ID4NCj4gPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBCaXRGaWVsZFZhbDsNCj4gPiA+DQo+ID4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQml0T2Zmc2V0Ow0KPiA+ID4NCj4gPiA+ICsgIFVJTlROICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBCeXRlT2Zmc2V0Ow0KPiA+ID4NCj4gPiA+ICsgIFVJTlROICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBCaXRXaWR0aDsNCj4gPiA+DQo+ID4gPiArICBVSU5UTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnRCaXQ7DQo+ID4gPg0KPiA+ID4gKyAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuZEJpdDsNCj4gPiA+DQo+ID4gPiArICBQQ0Rf REVGQVVMVF9EQVRBICAgICAgICAgICAgICAgICAgKkRhdGFIZWFkZXI7DQo+ID4gPg0KPiA+ID4g KyAgUENEX0RFRkFVTFRfSU5GTyAgICAgICAgICAgICAgICAgICpEZWZhdWx0SW5mbzsNCj4gPiA+ DQo+ID4gPiArICBQQ0RfREFUQV9ERUxUQSAgICAgICAgICAgICAgICAgICAgKkRlbHRhRGF0YTsN Cj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+ICAgIGlmIChnU2t1SWQgPT0gMHhGRkZGRkZGRkZG RkZGRkZGKSB7DQo+ID4gPg0KPiA+ID4gICAgICBnU2t1SWQgPSBMaWJQY2RHZXRTa3UgKCk7DQo+ ID4gPg0KPiA+ID4gQEAgLTY2Niw3ICs3MDcsNyBAQCBGaW5kUXVlc3Rpb25EZWZhdWx0U2V0dGlu ZyAoDQo+ID4gPiAgICB9DQo+ID4gPg0KPiA+ID4NCj4gPiA+DQo+ID4gPiAgICBpZiAoTGluayA9 PSAmZ1ZhclN0b3JhZ2VMaXN0KSB7DQo+ID4gPg0KPiA+ID4gLSAgICBEYXRhQnVmZmVyICAgICAg ICAgID0gKFVJTlQ4ICopUGNkR2V0UHRyDQo+ID4gPiAoUGNkTnZTdG9yZURlZmF1bHRWYWx1ZUJ1 ZmZlcik7DQo+ID4gPg0KPiA+ID4gKyAgICBEYXRhQnVmZmVyICAgICAgICAgID0gKFVJTlQ4ICop UGNkR2V0RXhQdHINCj4gPiA+ICgmZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLCBQY2RO dlN0b3JlRGVmYXVsdFZhbHVlQnVmZmVyKTsNCj4gPiA+DQo+ID4gUGNkTnZTdG9yZURlZmF1bHRW YWx1ZUJ1ZmZlciB0eXBlIGlzIER5bmFtaWNFeC4gSXRzIFBjZEdldFB0ciBpcyBzYW1lIHRvDQo+ ID4gUGNkR2V0RXhQdHIuIFRoaXMgY2hhbmdlIGlzIG5vdCByZXF1aXJlZC4NCj4gPg0KPiA+ID4g ICAgICBnTnZEZWZhdWx0U3RvcmVTaXplID0NCj4gPiAoKFBDRF9OVl9TVE9SRV9ERUZBVUxUX0JV RkZFUl9IRUFERVINCj4gPiA+ICopRGF0YUJ1ZmZlciktPkxlbmd0aDsNCj4gPiA+DQo+ID4gPiAg ICAgIC8vDQo+ID4gPg0KPiA+ID4gICAgICAvLyBUaGUgZmlyc3Qgc2VjdGlvbiBkYXRhIGluY2x1 ZGVzIE5WIHN0b3JhZ2UgZGVmYXVsdCBzZXR0aW5nLg0KPiA+ID4NCj4gPiA+IEBAIC03NTAsMTIg Kzc5MSwyNyBAQCBGaW5kUXVlc3Rpb25EZWZhdWx0U2V0dGluZyAoDQo+ID4gPiAgICAgIHJldHVy biBFRklfTk9UX0ZPVU5EOw0KPiA+ID4NCj4gPiA+ICAgIH0NCj4gPiA+DQo+ID4gPg0KPiA+ID4N Cj4gPiA+ICsgIC8vDQo+ID4gPg0KPiA+ID4gKyAgLy8gSnVkZ2UgaWYgdGhlIHZhcmlhYmxlIHR5 cGUgaXMgYXV0aGVudGljYXRlZCwgZGVmYXVsdCBpcyBmYWxzZQ0KPiA+ID4NCj4gPiA+ICsgIC8v DQo+ID4gPg0KPiA+ID4gKyAgQXV0aEZvcm1hdCA9IEZBTFNFOw0KPiA+ID4NCj4gPiA+ICsgIGlm IChDb21wYXJlR3VpZCAoJlZhcmlhYmxlU3RvcmFnZS0+U2lnbmF0dXJlLA0KPiA+ID4gJmdFZmlB dXRoZW50aWNhdGVkVmFyaWFibGVHdWlkKSkgew0KPiA+ID4NCj4gPiA+ICsgICAgQXV0aEZvcm1h dCA9IFRSVUU7DQo+ID4gPg0KPiA+ID4gKyAgfQ0KPiA+ID4NCj4gPiA+ICsNCj4gPiA+DQo+ID4N Cj4gPg0KPiA+ID4gICAgLy8NCj4gPiA+DQo+ID4gPiAgICAvLyBGaW5kIHRoZSBxdWVzdGlvbiBk ZWZhdWx0IHZhbHVlIGZyb20gdGhlIHZhcmlhYmxlIHN0b3JhZ2UNCj4gPiA+DQo+ID4gPiAgICAv Lw0KPiA+ID4NCj4gPiA+IC0gIFZhcmlhYmxlSGVhZGVyID0gRmluZFZhcmlhYmxlRGF0YSAoVmFy aWFibGVTdG9yYWdlLA0KPiA+ID4gJkVmaVZhclN0b3JlLT5HdWlkLA0KPiA+ID4gRWZpVmFyU3Rv cmUtPkF0dHJpYnV0ZXMsIChDSEFSMTYgKilFZmlWYXJTdG9yZS0+TmFtZSk7DQo+ID4gPg0KPiA+ ID4gLSAgaWYgKFZhcmlhYmxlSGVhZGVyID09IE5VTEwpIHsNCj4gPiA+DQo+ID4gPiAtICAgIHJl dHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+ID4NCj4gPiA+ICsgIGlmKEF1dGhGb3JtYXQpIHsNCj4g PiA+DQo+ID4gPiArICAgIEF1dGhWYXJpYWJsZUhlYWRlciA9IEZpbmRBdXRoVmFyaWFibGVEYXRh IChWYXJpYWJsZVN0b3JhZ2UsDQo+ID4gPiAmRWZpVmFyU3RvcmUtPkd1aWQsIEVmaVZhclN0b3Jl LT5BdHRyaWJ1dGVzLCAoQ0hBUjE2DQo+ID4gPiAqKUVmaVZhclN0b3JlLT5OYW1lKTsNCj4gPiA+ DQo+ID4gPiArICAgIGlmIChBdXRoVmFyaWFibGVIZWFkZXIgPT0gTlVMTCkgew0KPiA+ID4NCj4g PiA+ICsgICAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCj4gPiA+DQo+ID4gPiArICAgIH0NCj4g PiA+DQo+ID4gPiArICB9IGVsc2Ugew0KPiA+ID4NCj4gPiA+ICsgICAgVmFyaWFibGVIZWFkZXIg PSBGaW5kVmFyaWFibGVEYXRhIChWYXJpYWJsZVN0b3JhZ2UsDQo+ID4gPiAmRWZpVmFyU3RvcmUt Pkd1aWQsIEVmaVZhclN0b3JlLT5BdHRyaWJ1dGVzLCAoQ0hBUjE2DQo+ID4gPiAqKUVmaVZhclN0 b3JlLT5OYW1lKTsNCj4gPiA+DQo+ID4gPiArICAgIGlmIChWYXJpYWJsZUhlYWRlciA9PSBOVUxM KSB7DQo+ID4gPg0KPiA+ID4gKyAgICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+ID4NCj4g PiA+ICsgICAgfQ0KPiA+ID4NCj4gPiA+ICAgIH0NCj4gPiA+DQo+ID4gVmFyaWFibGVTdG9yYWdl IGRhdGEgYnVmZmVyIGlzIGZyb20gUGNkTnZTdG9yZURlZmF1bHRWYWx1ZUJ1ZmZlci4NCj4gPiBQ Y2ROdlN0b3JlRGVmYXVsdFZhbHVlQnVmZmVyIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IEJhc2VUb29s cy4NCj4gPiBCeSBkZXNpZ24sIGl0cyBkYXRhIGZvcm1hdCBpcyBhbHdheXMgbm9ybWFsIHZhcmlh YmxlIHN0b3JhZ2UgZm9ybWF0Lg0KPiA+IFNvLCBpdHMgdmFsdWUgY2FuJ3QgYmUgYXV0aCB2YXJp YWJsZSBmb3JtYXQuDQo+ID4NCj4gPiBUaGFua3MNCj4gPiBMaW1pbmcNCj4gPiA+DQo+ID4gPg0K PiA+ID4gICAgU3RhcnRCaXQgICA9IDA7DQo+ID4gPg0KPiA+ID4gQEAgLTc3MCwyMCArODI2LDM5 IEBAIEZpbmRRdWVzdGlvbkRlZmF1bHRTZXR0aW5nICgNCj4gPiA+ICAgICAgV2lkdGggICAgICA9 IEVuZEJpdCAvIDggKyAxOw0KPiA+ID4NCj4gPiA+ICAgIH0NCj4gPiA+DQo+ID4gPg0KPiA+ID4N Cj4gPiA+IC0gIGlmIChWYXJpYWJsZUhlYWRlci0+RGF0YVNpemUgPCBCeXRlT2Zmc2V0ICsgV2lk dGgpIHsNCj4gPiA+DQo+ID4gPiAtICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ ID4gPg0KPiA+ID4gLSAgfQ0KPiA+ID4NCj4gPiA+ICsgIGlmKEF1dGhGb3JtYXQpIHsNCj4gPiA+ DQo+ID4gPiArICAgIGlmIChBdXRoVmFyaWFibGVIZWFkZXItPkRhdGFTaXplIDwgQnl0ZU9mZnNl dCArIFdpZHRoKSB7DQo+ID4gPg0KPiA+ID4gKyAgICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJB TUVURVI7DQo+ID4gPg0KPiA+ID4gKyAgICB9DQo+ID4gPg0KPiA+ID4NCj4gPiA+DQo+ID4gPiAt ICAvLw0KPiA+ID4NCj4gPiA+IC0gIC8vIENvcHkgdGhlIHF1ZXN0aW9uIHZhbHVlDQo+ID4gPg0K PiA+ID4gLSAgLy8NCj4gPiA+DQo+ID4gPiAtICBpZiAoVmFsdWVCdWZmZXIgIT0gTlVMTCkgew0K PiA+ID4NCj4gPiA+IC0gICAgaWYgKEJpdEZpZWxkUXVlc3Rpb24pIHsNCj4gPiA+DQo+ID4gPiAt ICAgICAgQ29weU1lbSAoJkJ1ZmZlclZhbHVlLCAoVUlOVDggKilWYXJpYWJsZUhlYWRlciArIHNp emVvZg0KPiA+ID4gKFZBUklBQkxFX0hFQURFUikgKyBWYXJpYWJsZUhlYWRlci0+TmFtZVNpemUg KyBCeXRlT2Zmc2V0LCBXaWR0aCk7DQo+ID4gPg0KPiA+ID4gLSAgICAgIEJpdEZpZWxkVmFsID0g Qml0RmllbGRSZWFkMzIgKEJ1ZmZlclZhbHVlLCBTdGFydEJpdCwgRW5kQml0KTsNCj4gPiA+DQo+ ID4gPiAtICAgICAgQ29weU1lbSAoVmFsdWVCdWZmZXIsICZCaXRGaWVsZFZhbCwgV2lkdGgpOw0K PiA+ID4NCj4gPiA+IC0gICAgfSBlbHNlIHsNCj4gPiA+DQo+ID4gPiAtICAgICAgQ29weU1lbSAo VmFsdWVCdWZmZXIsIChVSU5UOCAqKVZhcmlhYmxlSGVhZGVyICsgc2l6ZW9mDQo+ID4gPiAoVkFS SUFCTEVfSEVBREVSKSArIFZhcmlhYmxlSGVhZGVyLT5OYW1lU2l6ZSArDQo+ID4gPiBJZnJRdWVz dGlvbkhkci0+VmFyU3RvcmVJbmZvLlZhck9mZnNldCwgV2lkdGgpOw0KPiA+ID4NCj4gPiA+ICsg ICAgLy8NCj4gPiA+DQo+ID4gPiArICAgIC8vIENvcHkgdGhlIHF1ZXN0aW9uIHZhbHVlDQo+ID4g Pg0KPiA+ID4gKyAgICAvLw0KPiA+ID4NCj4gPiA+ICsgICAgaWYgKFZhbHVlQnVmZmVyICE9IE5V TEwpIHsNCj4gPiA+DQo+ID4gPiArICAgICAgaWYgKEJpdEZpZWxkUXVlc3Rpb24pIHsNCj4gPiA+ DQo+ID4gPiArICAgICAgICBDb3B5TWVtICgmQnVmZmVyVmFsdWUsIChVSU5UOCAqKUF1dGhWYXJp YWJsZUhlYWRlciArIHNpemVvZg0KPiA+ID4gKEFVVEhFTlRJQ0FURURfVkFSSUFCTEVfSEVBREVS KSArIEF1dGhWYXJpYWJsZUhlYWRlci0+TmFtZVNpemUgKw0KPiA+ID4gQnl0ZU9mZnNldCwgV2lk dGgpOw0KPiA+ID4NCj4gPiA+ICsgICAgICAgIEJpdEZpZWxkVmFsID0gQml0RmllbGRSZWFkMzIg KEJ1ZmZlclZhbHVlLCBTdGFydEJpdCwgRW5kQml0KTsNCj4gPiA+DQo+ID4gPiArICAgICAgICBD b3B5TWVtIChWYWx1ZUJ1ZmZlciwgJkJpdEZpZWxkVmFsLCBXaWR0aCk7DQo+ID4gPg0KPiA+ID4g KyAgICAgIH0gZWxzZSB7DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgQ29weU1lbSAoVmFsdWVCdWZm ZXIsIChVSU5UOCAqKUF1dGhWYXJpYWJsZUhlYWRlciArIHNpemVvZg0KPiA+ID4gKEFVVEhFTlRJ Q0FURURfVkFSSUFCTEVfSEVBREVSKSArIEF1dGhWYXJpYWJsZUhlYWRlci0+TmFtZVNpemUgKw0K PiA+ID4gSWZyUXVlc3Rpb25IZHItPlZhclN0b3JlSW5mby5WYXJPZmZzZXQsIFdpZHRoKTsNCj4g PiA+DQo+ID4gPiArICAgICAgfQ0KPiA+ID4NCj4gPiA+ICsgICAgfQ0KPiA+ID4NCj4gPiA+ICsg IH0gZWxzZSB7DQo+ID4gPg0KPiA+ID4gKyAgICBpZiAoVmFyaWFibGVIZWFkZXItPkRhdGFTaXpl IDwgQnl0ZU9mZnNldCArIFdpZHRoKSB7DQo+ID4gPg0KPiA+ID4gKyAgICAgIHJldHVybiBFRklf SU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gPg0KPiA+ID4gKyAgICB9DQo+ID4gPg0KPiA+ID4gKw0K PiA+ID4NCj4gPiA+ICsgICAgLy8NCj4gPiA+DQo+ID4gPiArICAgIC8vIENvcHkgdGhlIHF1ZXN0 aW9uIHZhbHVlDQo+ID4gPg0KPiA+ID4gKyAgICAvLw0KPiA+ID4NCj4gPiA+ICsgICAgaWYgKFZh bHVlQnVmZmVyICE9IE5VTEwpIHsNCj4gPiA+DQo+ID4gPiArICAgICAgaWYgKEJpdEZpZWxkUXVl c3Rpb24pIHsNCj4gPiA+DQo+ID4gPiArICAgICAgICBDb3B5TWVtICgmQnVmZmVyVmFsdWUsIChV SU5UOCAqKVZhcmlhYmxlSGVhZGVyICsgc2l6ZW9mDQo+ID4gPiAoVkFSSUFCTEVfSEVBREVSKSAr IFZhcmlhYmxlSGVhZGVyLT5OYW1lU2l6ZSArIEJ5dGVPZmZzZXQsIFdpZHRoKTsNCj4gPiA+DQo+ ID4gPiArICAgICAgICBCaXRGaWVsZFZhbCA9IEJpdEZpZWxkUmVhZDMyIChCdWZmZXJWYWx1ZSwg U3RhcnRCaXQsIEVuZEJpdCk7DQo+ID4gPg0KPiA+ID4gKyAgICAgICAgQ29weU1lbSAoVmFsdWVC dWZmZXIsICZCaXRGaWVsZFZhbCwgV2lkdGgpOw0KPiA+ID4NCj4gPiA+ICsgICAgICB9IGVsc2Ug ew0KPiA+ID4NCj4gPiA+ICsgICAgICAgIENvcHlNZW0gKFZhbHVlQnVmZmVyLCAoVUlOVDggKilW YXJpYWJsZUhlYWRlciArIHNpemVvZg0KPiA+ID4gKFZBUklBQkxFX0hFQURFUikgKyBWYXJpYWJs ZUhlYWRlci0+TmFtZVNpemUgKw0KPiA+ID4gSWZyUXVlc3Rpb25IZHItPlZhclN0b3JlSW5mby5W YXJPZmZzZXQsIFdpZHRoKTsNCj4gPiA+DQo+ID4gPiArICAgICAgfQ0KPiA+ID4NCj4gPiA+ICAg ICAgfQ0KPiA+ID4NCj4gPiA+ICAgIH0NCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+IGRpZmYg LS1naXQgYS9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0hpaURhdGFiYXNlRHhlL0hpaURhdGFiYXNl RHhlLmluZg0KPiA+ID4gYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0hpaURhdGFiYXNlRHhlL0hp aURhdGFiYXNlRHhlLmluZg0KPiA+ID4gaW5kZXggMDExNmZiNmVjYi4uZGFjNGQ2MTRhOCAxMDA2 NDQNCj4gPiA+IC0tLSBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvSGlpRGF0YWJhc2VEeGUvSGlp RGF0YWJhc2VEeGUuaW5mDQo+ID4gPiArKysgYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0hpaURh dGFiYXNlRHhlL0hpaURhdGFiYXNlRHhlLmluZg0KPiA+ID4gQEAgLTg2LDYgKzg2LDkgQEANCj4g PiA+ICAgIGdFZmlIaWlJbWFnZURlY29kZXJOYW1lSnBlZ0d1aWQNCj4gPiA+IHxnRWZpTWRlTW9k dWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkU3VwcG9ydEhpaUltYWdlUHJvdG9jb2wgICMjDQo+ID4g PiBTT01FVElNRVNfQ09OU1VNRVMgIyMgR1VJRA0KPiA+ID4NCj4gPiA+ICAgIGdFZmlIaWlJbWFn ZURlY29kZXJOYW1lUG5nR3VpZA0KPiA+ID4gfGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3Vp ZC5QY2RTdXBwb3J0SGlpSW1hZ2VQcm90b2NvbCAgIyMNCj4gPiA+IFNPTUVUSU1FU19DT05TVU1F UyAjIyBHVUlEDQo+ID4gPg0KPiA+ID4gICAgZ0Vka2lpSWZyQml0VmFyc3RvcmVHdWlkDQo+ID4g PiAjIyBTT01FVElNRVNfQ09OU1VNRVMgIyMgR1VJRA0KPiA+ID4NCj4gPiA+ICsgIGdFZmlBdXRo ZW50aWNhdGVkVmFyaWFibGVHdWlkDQo+ID4gPg0KPiA+ID4gKyAgZ0VmaVZhcmlhYmxlR3VpZA0K PiA+ID4NCj4gPiA+ICsgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZA0KPiA+ID4NCj4g PiA+DQo+ID4gPg0KPiA+ID4gIFtEZXBleF0NCj4gPiA+DQo+ID4gPiAgICBUUlVFDQo+ID4gPg0K PiA+ID4gLS0NCj4gPiA+IDIuMjUuMQ0KPiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gLT0tPS09 LT0tPS09DQo+ID4gPiBHcm91cHMuaW8gTGlua3M6IFlvdSByZWNlaXZlIGFsbCBtZXNzYWdlcyBz ZW50IHRvIHRoaXMgZ3JvdXAuDQo+ID4gPiBWaWV3L1JlcGx5IE9ubGluZSAoIzg1NDQ3KToNCj4g PiA+IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8vZy9kZXZlbC9tZXNzYWdlLzg1NDQ3DQo+ID4gPiBN dXRlIFRoaXMgVG9waWM6IGh0dHBzOi8vZ3JvdXBzLmlvL210Lzg4MzE5NDQ4LzQ5MDU5NTMNCj4g PiA+IEdyb3VwIE93bmVyOiBkZXZlbCtvd25lckBlZGsyLmdyb3Vwcy5pbw0KPiA+ID4gVW5zdWJz Y3JpYmU6IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8vZy9kZXZlbC91bnN1Yg0KPiA+ID4gW2dhb2xp bWluZ0BieW9zb2Z0LmNvbS5jbl0NCj4gPiA+IC09LT0tPS09LT0tPQ0KPiA+ID4NCj4gPg0KPiA+ DQo+IA0KPiANCg0K