From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 8030E740040 for ; Mon, 4 Dec 2023 10:31:30 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=wv7RwHDOK7Jz/vh+PaXA40ui7OyhI6JUEUoPWUqfsFU=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1701685889; v=1; b=EG8q7gSWs5yHVP/7gwcICBexrVMmXdaF5VypAGXFHZi5VPhznUohY0cLaZHfbHxpGiC/ac6o 02fyHbmwOGIYFaeNum8vB22Q3w+aQxr8DPkJmhC4CJenXPBi2L1EjcXcvw1rOPzR9Dv7wu30jPl 4FwyZ8i6D+PutAI9R6WoCnok= X-Received: by 127.0.0.2 with SMTP id MOaXYY7687511xCkmqZi8fvV; Mon, 04 Dec 2023 02:31:29 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.31]) by mx.groups.io with SMTP id smtpd.web11.65809.1701685888152359871 for ; Mon, 04 Dec 2023 02:31:28 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10913"; a="458036009" X-IronPort-AV: E=Sophos;i="6.04,249,1695711600"; d="scan'208";a="458036009" X-Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Dec 2023 02:31:27 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10913"; a="840983644" X-IronPort-AV: E=Sophos;i="6.04,249,1695711600"; d="scan'208";a="840983644" X-Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga004.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 04 Dec 2023 02:31:27 -0800 X-Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) 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.2507.35; Mon, 4 Dec 2023 02:31:27 -0800 X-Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Mon, 4 Dec 2023 02:31:27 -0800 X-Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.101) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.34; Mon, 4 Dec 2023 02:31:26 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hKyhDfkd92uYmTCmv5cdgMNSeiT+/Yrao6r9+iW4IqZQhb+lOON3mg1LdwgMZMepxAanXuPiyj0tHD68eBTLnA7/klT92GaW0ByqOB6o1zB/WkXb49H2TI7o4m3ZR5GQ/6eyb3g/5WMdB3BpqiqeIVywdSumgp0UxYuPu0YXNwamHt6+fT2lSiaq3rAwFjZV4PhRFipzV5hc+xYjcK3jYAAEa1XTaOkc+K+XcJ4rmJLcKZCs4n7H6JGDFXBQfSh73CUv3Ve8m4mr5Gj/8RH/RBt/uhdvvgOpXhgHa2xg6MPENU02vWbZJl/1bSSaGbmRm2A9AwGO13kDputeOZHC2Q== 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=RoLRuOo0bWUDcLm+CYOy1ZrgxrZiEkbc8Y9Giu15J5M=; b=G0f18tRzWjWAqDEGZqQP3ETho0Zr1nSb0kImcxBf7Xj7oReGohfr4ZziMP71+st/81x2zi5qmkSBPdJcZus+lF9M+Bez1t7YLHKcM6nnUWNI4VHQCvmlBlHOFQyty91X1lbOyhioTDuF6MT/qXKzna9SJ+mI1CEO/WiAFxRDvZEOG/64wKlB7H2qkGA2SGQloOm3Aq+Ak3osnT3RPdSeU7SZK6ktZBjASokQePzLnrwl6Ac5qCCxcDPR+fQznGPCe6vY8GDnq0Z1QPkGFYwXJxilgZN3QDyztzaTOUxKvKqXwQX1qMowiD4ZAEnSLQbSBdRnhjMuVkWbf379L0amFw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none X-Received: from DM8PR11MB5752.namprd11.prod.outlook.com (2603:10b6:8:13::15) by DS0PR11MB6327.namprd11.prod.outlook.com (2603:10b6:8:d1::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.33; Mon, 4 Dec 2023 10:31:23 +0000 X-Received: from DM8PR11MB5752.namprd11.prod.outlook.com ([fe80::1f3:4ad1:ee6c:ef22]) by DM8PR11MB5752.namprd11.prod.outlook.com ([fe80::1f3:4ad1:ee6c:ef22%5]) with mapi id 15.20.7046.033; Mon, 4 Dec 2023 10:31:23 +0000 From: "Wang Fan" To: "Ni, Ray" , "devel@edk2.groups.io" , "Gao, Liming" , "Kinney, Michael D" CC: "Jiang, Guomin" Subject: Re: [edk2-devel] [PATCH V2 1/1] MdeModulePkg: Support customized FV Migration Information Thread-Topic: [edk2-devel] [PATCH V2 1/1] MdeModulePkg: Support customized FV Migration Information Thread-Index: AQHZ5JWgUm8bwGm6pE24QY/v9huHP7BNHj2AgBBptQCANpKkgIAAItkAgAUoTqA= Date: Mon, 4 Dec 2023 10:31:23 +0000 Message-ID: References: <76cde14616a559c6939f8814d0e79afa7f1a7fcf.1694425833.git.fan.wang@intel.com> <061c01da23f1$e1b27370$a5175a50$@byosoft.com.cn> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM8PR11MB5752:EE_|DS0PR11MB6327:EE_ x-ms-office365-filtering-correlation-id: 90bf020e-7f25-4805-6579-08dbf4b429d6 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: QYGtOlKnZcBx+mnCEpKftCM1l2uqim4ywv7q4xJpC1Zf6+xnLoZ0G64e0WPwIffPb0XANL7unowwJ2pZ071OzZZ6CR7+Ndm0h20ZamIyJu48O+WNT6VOWDj3O6QySH1SBeX497hEw/Wm7WZWCtCq8AlicscLhh2GfqDSB2Z16Gg540Jk0QPDLPI7DZHqwEARtZrJs7uR4JhUNSg+IHv3YrEKYA6pLdTh7lWUnJP36EFE8sCP10/pJa3ZqaKfwEhfKEyA1SAziI3kIQb7SisaNCl+YqD/xOQXTQ7qMvMeTXg64uPd/Q/3bWC20Xcd0Z2Spd7ee4ZG4ix3eoutL2b5BfVRW8bjBlZsECSCpNP+ABt2qZlnfmGk7xmaTqGabIqm+woBvl2qiNwiaG2sePMj6T1AJ/W8n8zL+Y1Kh8+KYXeiMkQ4J+0yW2fCeUhaxZ83uj1YOBycdAiMnY5XffcqzWy0Ax/ty57doZOW9z0UGBI2Y526iPUmmu9VpDSvivaTcS/y2jGWQtSsa9Jb5tx3jE3adz2aC9s6STwrEeTMsh+GYUvaW32deE3UHX8bGgAFefRGsCGbhkoFkkkoNYT6LvPOqqsn5Nl1/kc7mXmbZ6iENml1t0e+RM2fOFEvkAnNBCz7oJe/aoJoxkdMeIWgiA== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?aGVGQnNPY1d2dGo5KzBxWjFVb2EySTFndUlJTjRuQzdJYTNXQTRlRDlTOFA0?= =?utf-8?B?UEQyejR1RVF5ZGUyeXJHQnloUUR3d2s1RUtyZnBXeDd0QnM4SXh6RFlaYWhM?= =?utf-8?B?endMOE9weWg0VElQcEpBL09McEtITzJsZHJwRytNd0N0VGtSL25ZVFh5V3Br?= =?utf-8?B?RnNQTjBURC91Qk9WRDUzVGd0bE04dzVXYTNXalQ0c2N2QWlXenVhMDdudWVl?= =?utf-8?B?TXZpTTI4N1RjS2xKdXVmcWNmelBRWENTVElRbzJjajlOd0YrRmJZdWttbEJ3?= =?utf-8?B?YUk2cC9sdUlXeC9iQ2xqaUcrM3RDVmc4Q0ZjWnUwRjk0Vkswc053R0FSdGpQ?= =?utf-8?B?NDh4VitzZHR6dHZEVE43WjdVOHRLZmQzRHl2WG9wUHF2ZHBVQmoxNVpKVUgx?= =?utf-8?B?NEhqN1F5c1FRQ1ZreDRHWUJOd2VDNWV2dEY3dTdNN1ljTFlPUGN6N3pLNlRu?= =?utf-8?B?TFRFc1RRd2tkdDRsWXRMcjNBZmJta2duMlRnOTdVL1NqMVVBR0liT0FLSTUr?= =?utf-8?B?L1lFaDd1b2lPVlZ3anBhNUhyazBtODlTM1Y5dys1Q3FBZUxvWU0xZjZadTA5?= =?utf-8?B?YkVyb3ljTXJqZkc1ZFVYUnQxUVZDTFlOMHJFTHFRSGJDU1pTYng3TU9PLytq?= =?utf-8?B?SjY2T1oxc21RTkVwL3FHWnI4MzdTZVJSWnlMYXpndVByQ0lrN0Q1cnJIaFNL?= =?utf-8?B?VElrNVB2YUVqTTlRZTc3ZEV3dXJWdFJpYW5QZnNmTC83WTlNNGRrSXRSNVNY?= =?utf-8?B?aFNFNWozajcvTHowME05RUxaQUlkU0NoSzFwU3ozbE9aS3JocnBpVEJMck1z?= =?utf-8?B?dEVOallYcUI3TUVrVmVROFNGcWpOWHkxNkdKaVR2NXI2MjFVVmFvNnlNeE9R?= =?utf-8?B?MlI3Ty92eDJxUzhuQzV4KzN3M1U5bVRQWHVHaldnWHZ6WFFoWTBIS1EyVEs0?= =?utf-8?B?Vy9ldWRwemJNSmtUMXNEb3RwR3FUNFJDdUdEVTBLWHZUMHlKR0daTzNrOTB5?= =?utf-8?B?NTJYaExPeUpHNzBjNEhHMnduSE5wanBmamt2Q3BJZENaRU5VRGJvREhWa01P?= =?utf-8?B?S2s0d0RvbG9DK0hGRlZGdHlMbG16b0lzZ0t1SFBiNnNwZFlDM0psV1BsZCtN?= =?utf-8?B?ZXhUUElONFo5V0dRVllkc281aThZV2poTSt2Wkl2bjh1Y2NZSG8zenpYS1pM?= =?utf-8?B?OFZNR1VEVUpuVVJYRGk3U2lCMU84dUdsWG1xSEFvVkdKaWZqMmhFZGJ3Y3RS?= =?utf-8?B?WWhLRC81aHFrK09jNTBVdnB6M1lFNEgzMEZSU0x1bzV1ZzYvTk5QRzVqdXpy?= =?utf-8?B?SFhWOUtLeHdFMldFcUFSaVVlVFNQUjc0WmtPK0d3QWVHRFRnL3ZwcHl6RDEv?= =?utf-8?B?NDMwN2JJcDE1V2lCY1g4YzFZQVd1SWxHd2FGTFJ1bDVXQUdQeWM3d0FUeFlV?= =?utf-8?B?S1VTUFlzWG5UYlo2MDBzVDRXb3RncHlUY1pxcXlGNmVFSGE0czlQWTF0UFpX?= =?utf-8?B?V3pndWI3d2d6ZStsWEM5bzJvYW8wMXV3L1ZRQUdUNkJpZ1BjaG93a1U1QUta?= =?utf-8?B?Tno0Qnp2ZEJndFJ6ODV2T1Q2Wmt6VTNVNnFHYU13MUlnTU9xZ2EvR0NPcklJ?= =?utf-8?B?S1QwK2pIZDNYNHNpQTZiRmhsMTRvU2paZ3hIcGI5amlRN0pLaldKWStLbk5m?= =?utf-8?B?QVNOdmlhM0ZIOWVNSXFZY3VTQi9XemljZjl3Z2t3eVZjbmVzZzRDTkFuakNM?= =?utf-8?B?OXhmblhLNmxsQ1V2RTBIT25LamxPTXFYbEI4RTg5SWxOb2tDU3VJYzU0ZFJr?= =?utf-8?B?dEZjVmJRSWQwUkF0d3ZmSUYzaXNKTms5ZVhxVHlmQUxnQ2lOVmQwNFNYRzg0?= =?utf-8?B?UVovN3R0Y0dVYXozVHdqZ2p2N0w1NzZsdG5KUWROaE1WNjhDN2pBYzlKUDIr?= =?utf-8?B?cXBVa0Fxd1IrQ05UTjU1S2VwUExlQm1vUkcybUxFVVExQitzUTJvYjhyUmNY?= =?utf-8?B?bXk2MjdZTnZzaEZ4WTE1bnJaejBnV3ZBOVpoeDU3bUxSOGZsbnhIdTVVNmFy?= =?utf-8?B?U3JMT01xY3BaVWR0ZGNjR2kvVjhob2IxRS9wcURaYyt6VWtyb2g0dk8wQTQ5?= =?utf-8?Q?fKj/yQSYZG5WS2gMbAa31Q5nr?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8PR11MB5752.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 90bf020e-7f25-4805-6579-08dbf4b429d6 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Dec 2023 10:31:23.5813 (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: gSC3S6gYWXK4mgRb6f2cx+dOGfHm6IBYNC6hm3jr18FZ2RcQYSQ+M45mPL2h5PiRM93yYICnAW45VO5aVfsjQg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR11MB6327 X-OriginatorOrg: intel.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,fan.wang@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: sOrTvhOGypP1GVHycu0Qal4lx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=EG8q7gSW; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") VGhhbmsgeW91IFJheSBhbmQgTGltaW5nLCBmb3IgeW91ciBjb21tZW50cy4NCg0KUmF5LCANCg0K VGhlcmUncyBzb21ldGhpbmcgdG8gY2xhcmlmeSBvbiB0aGlzIEhPQiB1c2FnZS4gSW4gdGhpcyBw YXRjaCwgd2hlbiB0aGlzIE1pZ3JhdGlvbiBmZWF0dXJlIFBDRCBpcyBzZXQgdG8gVFJVRSwgdGhl IFBlaUNvcmUgd2lsbCBvbmx5IG1pZ3JhdGUgRlZzIHdoaWNoIGFyZSByZWNvcmRlZCBieSBUb01p Z3JhdGVGdkluZm8gaG9iIChlYWNoIEZWIHNob3VsZCBwdWJsaXNoIHRoZWlyIG93biBUb01pZ3Jh dGVGdkluZm8gaG9iIGluIHRoaXMgZmxvdyksIGFuZCBjaGVjayBNaWdyYXRpb25GbGFncyB0byBk ZWNpZGUgYWxzbyBjb3B5IHJhdyBkYXRhIG9yIG5vdC4gSWYgbm8gVG9NaWdyYXRlRnZJbmZvIGhv YnMgcHVibGlzaGVkLCBpdCB3aWxsIGdvIGludG8gdGhlIGxlZ2FjeSBmbG93IHRvIG1pZ3JhdGUg YWxsIEZWcyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4NCg0KQWdyZWUgb24geW91ciBzdWdn ZXN0aW9uIG9uIHRoZSBmbGFnIG5hbWUgY2hhbmdlIHRvICJGTEFHU19CVUlMRF9NSUdSQVRFRF9G Vl9JTkZPIiwgSSB3aWxsIHVwZGF0ZSBpbiBWNCBwYXRjaC4gQnV0IEkgdGhpbmsgYSBsaXR0bGUg ZGlmZmVyZW50IG9uIHlvdXIgbGlzdGVkIGFwcHJvYWNoZXM6IEkgcHJlZmVyIHRvIHJlZmluZSB0 aGUgaG9iIHVzYWdlIHRvIGluY2x1ZGUgYWxsIFRvTWlncmF0ZUZ2SW5mbyBkYXRhIGluIG9uZSBo b2IgKHJhdGhlciB0aGFuIGVhY2ggRlYgcHVibGlzaCB0aGVpciBvd24pIGFuZCBhIGZpZWxkICJN aWdyYXRlQWxsIiBpbiB0aGlzIGhvYiBmb3IgdGhvc2UgcGxhdGZvcm1zIHdobyBoYXZlIG5vIHBl cmZvcm1hbmNlIGNvbmNlcm4uIEluIGZ1dHVyZSwgaWYgd2Ugd2FudCB0byByZXRpcmUgTWlncmF0 aW9uIGZlYXR1cmUgUENELCB3ZSBqdXN0IG5lZWQgcmVwbGFjZSAiY2hlY2sgUENEIFRSVUUgb3Ig RkFMU0UiIHdpdGggImNoZWNrIEhvYiBleGlzdHMgb3Igbm90Ii4gV2hhdCBkbyB5b3UgdGhpbmsg dGhpcyB3YXk/DQoNCkxpbWluZywNCg0KRm9yIHlvdXIgcXVlc3Rpb24gIlJBV19EQVRBX0NPUFkg aXMgZm9yIG1lYXN1cmUgYm9vdCB0byBtYWtlIHN1cmUgUENSMCBoYXZlIHRoZSBzYW1lIHZhbHVl IG9uIHRoZSBkaWZmZXJlbnQgYm9vdC4iLCB3ZSBoYXZlIGdFZmlQZWlGaXJtd2FyZVZvbHVtZUlu Zm9NZWFzdXJlbWVudEV4Y2x1ZGVkUHBpR3VpZCB0byBza2lwIEZWIG1lYXN1cmVtZW50IHdoZW4g Ym9vdCBndWFyZCBhbHJlYWR5IG1lYXN1cmVkIHRoZXNlIEZWcy4gU28gSSdtIHRoaW5raW5nIGl0 J3MgdmFsaWQgdG8gYXNzdW1lIG5vdCBhbGwgRlZzIG5lZWQgY29weSByYXcgZGF0YSBmb3IgbWVh c3VyZW1lbnQuDQogDQpGb3IgeW91ciBhbm90aGVyIHF1ZXN0aW9uICJJZiBSZW1vdmVGdkhvYnNJ blRlbXBvcmFyeU1lbW9yeSAoKSBkb2VzIG5vdGhpbmcgbm93LiIsIGl0J3MgdHJ1ZSBmcm9tIG15 IGludmVzdGlnYXRpb24uDQoNCkJlc3QgUmVnYXJkcw0KRmFuDQoNCi0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQpGcm9tOiBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPiANClNlbnQ6IEZyaWRh eSwgRGVjZW1iZXIgMSwgMjAyMyAxMTowNiBBTQ0KVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBH YW8sIExpbWluZyA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgV2FuZywgRmFuIDxmYW4ud2Fu Z0BpbnRlbC5jb20+OyBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5j b20+DQpDYzogSmlhbmcsIEd1b21pbiA8Z3VvbWluLmppYW5nQGludGVsLmNvbT47IEJpLCBEYW5k YW4gPGRhbmRhbi5iaUBpbnRlbC5jb20+DQpTdWJqZWN0OiBSRTogW2VkazItZGV2ZWxdIFtQQVRD SCBWMiAxLzFdIE1kZU1vZHVsZVBrZzogU3VwcG9ydCBjdXN0b21pemVkIEZWIE1pZ3JhdGlvbiBJ bmZvcm1hdGlvbg0KDQpXaGVuIFBjZE1pZ3JhdGVUZW1wb3JhcnlSYW1GaXJtd2FyZVZvbHVtZXMg aXMgVFJVRSwgRlYgaW4gZmxhc2ggKGNhY2hlZCBpbiBjb2RlIGNhY2hlKSBpcyBjb3BpZWQgdG8g cGh5c2ljYWwgbWVtb3J5IGFuZCBhbGwgQyBnbG9iYWwgcG9pbnRlcnMgKFBQSXMsIEdVSURzKSBh cmUgZml4ZWQgdXAuDQpCdXQgVENHIG5lZWRzIHRvIG1lYXN1cmUgdGhlIG9yaWdpbmFsIEZWIGNv bnRlbnRzLCBzbyB0aGUgb3JpZ2luYWwgRlYgaXMgc2F2ZWQgaW50byBNaWdyYXRlZEZ2SW5mbyBI T0Igd2hlbiB0aGUgRlYgbWlncmF0aW9uIGlzIGRvbmUuDQoNCk5vdyB3ZSBhcmUgZ29pbmcgdG8g YWRkIGEgbmV3IFRvTWlncmF0ZSBIT0IgdG8gdGVsbCBzb21ldGhpbmcuDQoNCkluaXRpYWxseSB3 aXRob3V0IHJlYWRpbmcgdGhlIHBhdGNoLCBJIHRob3VnaHQgdGhlIEhPQiBpcyB0byB0ZWxsIHdo aWNoIEZWIG5lZWRzIHRvIGJlIG1pZ3JhdGVkLg0KQnV0IHdoYXQgdGhlIHBhdGNoIGRvZXMgaXM6 IG1pZ3JhdGlvbiBpcyBhbHdheXMgZG9uZSB3aGVuIFBDRCBpcyB0cnVlLiBUaGUgb25seSB0aGlu ZyB0aGF0J3Mgc2tpcHBlZCBpcyBub3QgdG8gc2F2ZSB0aGUgb3JpZ2luYWwgRlYgY29udGVudHMs IHRoZW4gdGhlIE1pZ3JhdGVkRnZJbmZvIEhPQiBpcyBub3QgcHJvZHVjZWQgYXMgd2VsbC4NCk1v cmUgc3RyYW5nZWx5LCBpZiBhIEZWIGlzIGxpc3RlZCBpbiAiVG9NaWdyYXRlIiBIT0Igd2l0aCBm bGFnIDAsIGl0J3MgdGhlIHNhbWUgYXMgdGhlICJUb01pZ3JhdGUiIEhPQiBkb2VzIG5vdCBleGlz dC4NCg0KSXQncyBhIGJpdCBjb25mdXNpbmcsIGluIG15IG9waW5pb24uDQoNClRoZXJlIGFyZSBz ZXZlcmFsIGFwcHJvYWNoZXM6DQoxLiBEbyBub3QgYWRkICJUb01pZ3JhdGUiIEhPQi4gSW5zdGVh ZCwgYXZvaWQgc2F2aW5nIHRoZSB3aG9sZSBvcmlnaW5hbCBGViBjb250ZW50LCBvbmx5IHNhdmUg dGhlIGRlbHRhIHRoYXQgVENHIGRyaXZlciB1c2VzIHRoZSBuZXcgRlYgY29udGVudCBhbmQgdGhl IGRlbHRhIHRvIGNhbGN1bGF0ZSB0aGUgSEFTSC4gVGhlIHNhdmUgb2YgZGVsdGEgc2hvdWxkIG5v dCBpbXBhY3QgdGhlIHBlcmZvcm1hbmNlIHZlcnkgbXVjaC4NCg0KMi4gQWJhbmRvbiB0aGUgUENE LCBhbmQgdXBkYXRlIHRvZGF5J3MgbG9naWMgdG8gZm9sbG93IHRoZSBuZXcgIlRvTWlncmF0ZSIg SE9CIHRvIHBlcmZvcm0gbWlncmF0aW9uLiBBIG5ldyBmbGFnIHRlbGxzIHdoZXRoZXIgdGhlIG9y aWdpbmFsIEZWIGNvbnRlbnQgbmVlZHMgdG8gYmUgc2F2ZWQuDQoNCjMuIEtlZXAgdGhlIFBDRC4g SWYgIlRvTWlncmF0ZSIgSE9CIGRvZXMgbm90IGV4aXN0LCBmb2xsb3cgUENELiBJZiAiVG9NaWdy YXRlIiBIT0IgZXhpc3RzLCBmb2xsb3cgdGhlIEhPQiBhbmQgaWdub3JlcyB0aGUgUENELiBIT0Ig dGFrZXMgaGlnaGVyIHByaW9yaXR5LiBJdCdzIHN0aWxsIGJhY2t3YXJkIGNvbXBhdGlibGUgYW5k IGFsbG93cyBlZGsyIHRvIGdyYWR1YWxseSByZXRpcmUgdGhhdCBQQ0QuIChIYXZpbmcgbXVsdGlw bGUgaW50ZXJmYWNlcyBjb250cm9sbGluZyBvbmUgYmVoYXZpb3IgaXMgYWx3YXlzIGNvbmZ1c2lu Zy4pDQozLjEgVGhlIGZsYWcgbmFtZSBpbiB0aGUgcGF0Y2ggaXMgIipTS0lQKiIuIEkgcHJlZmVy IHdlIHJldmVyc2UgdGhlIG1lYW5pbmcgb2YgdGhlIGZsYWcsIG1lYW5pbmcgd2hlbiB0aGUgZmxh ZyBpcyBzZXQsIEZWIG9yaWdpbmFsIGNvbnRlbnQgaXMgc2F2ZWQuIFRoZSBmbGFnIG5hbWUgY2Fu IGJlICJGTEFHU19CVUlMRF9NSUdSQVRFRF9GVl9JTkZPIiB3aGljaCBkaXJlY3RseSBtYXBzIHRv IHRoZSBiZWhhdmlvciB0aGUgZmxhZyBjb250cm9scy4gSSBhZ3JlZSAiTWlncmF0ZWRGdkluZm8i IG5hbWUgaXMgY29uZnVzaW5nIGJ1dCBhdCBsZWFzdCB3ZSBhdm9pZCBhZGRpbmcgYW5vdGhlciBj b25mdXNpbmcgIlNLSVBfRlZfUkFXX0RBVEFfQ09QWSIgZmxhZy4NCg0KDQoNClRoYW5rcywNClJh eQ0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vw cy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZiANCj4gZ2FvbGltaW5nIHZp YSBncm91cHMuaW8NCj4gU2VudDogRnJpZGF5LCBEZWNlbWJlciAxLCAyMDIzIDk6MDEgQU0NCj4g VG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBXYW5nLCBGYW4gPGZhbi53YW5nQGludGVsLmNvbT47 IEtpbm5leSwgDQo+IE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IENj OiBKaWFuZywgR3VvbWluIDxndW9taW4uamlhbmdAaW50ZWwuY29tPjsgQmksIERhbmRhbiANCj4g PGRhbmRhbi5iaUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IOWbnuWkjTogW2VkazItZGV2ZWxdIFtQ QVRDSCBWMiAxLzFdIE1kZU1vZHVsZVBrZzogU3VwcG9ydCANCj4gY3VzdG9taXplZCBGViBNaWdy YXRpb24gSW5mb3JtYXRpb24NCj4gDQo+IEZhbjoNCj4gICBJIGFkZCBteSBjb21tZW50IGJlbG93 Lg0KPiANCj4gPiAtLS0tLemCruS7tuWOn+S7ti0tLS0tDQo+ID4g5Y+R5Lu25Lq6OiBkZXZlbEBl ZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IOS7o+ihqCBXYW5nIEZhbg0KPiA+ IOWPkemAgeaXtumXtDogMjAyM+W5tDEw5pyIMjfml6UgMTY6MjQNCj4gPiDmlLbku7bkuro6IEtp bm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IA0KPiA+IGRldmVs QGVkazIuZ3JvdXBzLmlvDQo+ID4g5oqE6YCBOiBHYW8sIExpbWluZyA8Z2FvbGltaW5nQGJ5b3Nv ZnQuY29tLmNuPjsgSmlhbmcsIEd1b21pbiANCj4gPiA8Z3VvbWluLmppYW5nQGludGVsLmNvbT47 IEJpLCBEYW5kYW4gPGRhbmRhbi5iaUBpbnRlbC5jb20+DQo+ID4g5Li76aKYOiBSZTogW2VkazIt ZGV2ZWxdIFtQQVRDSCBWMiAxLzFdIE1kZU1vZHVsZVBrZzogU3VwcG9ydA0KPiBjdXN0b21pemVk DQo+ID4gRlYgTWlncmF0aW9uIEluZm9ybWF0aW9uDQo+ID4NCj4gPiBIaSBNaWtlDQo+ID4NCj4g PiBUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suDQo+ID4NCj4gPiBJIGhhdmUgdXBkYXRlZCB0 aGUgcGF0Y2ggdG8gdjM6DQo+ID4gaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL21lc3Nh Z2UvMTEwMTk3DQo+ID4NCj4gPiBQdWxsIFJlcXVlc3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS90aWFu b2NvcmUvZWRrMi9wdWxsLzQ5NzANCj4gPg0KPiA+IEJhc2VkIG9uIFYyLCB0aGlzIHVwZGF0ZSBp bmNsdWRlcyBjaGFuZ2VzOg0KPiA+IC0gQWRkIG1vcmUgZGVzY3JpcHRpb25zIGZvciAiZ0Vka2lp VG9NaWdyYXRlRnZJbmZvR3VpZCIgUFBJIHVzYWdlcyANCj4gPiBhbmQgYmFja2dyb3VuZCwgYnV0 IHN0aWxsIGtlZXAgdGhlIG5hbWUuDQo+ID4gLSBVcGRhdGUgIkZ2T3JnQmFzZSIgdG8gIkZ2VGVt cG9yYXJ5UmFtQmFzZSIgaW4gDQo+ID4gRURLSUlfVE9fTUlHUkFURV9GVl9JTkZPLg0KPiA+IC0g UmVtb3ZlIGZsYWcgIkZMQUdTX1NLSVBfRlZfTUlHUkFUSU9OIiwgc2luY2UgaXQncyBub3QgbmVl ZGVkLg0KPiA+IC0gQWRkIG1vcmUgZGVzY3JpcHRpb25zIHRvIGZsYWcgIkZMQUdTX1NLSVBfRlZf UkFXX0RBVEFfQ09QWSIuDQo+IFtMaW1pbmddIFJBV19EQVRBX0NPUFkgaXMgZm9yIG1lYXN1cmUg Ym9vdCB0byBtYWtlIHN1cmUgUENSMCBoYXZlIHRoZSANCj4gc2FtZSB2YWx1ZSBvbiB0aGUgZGlm ZmVyZW50IGJvb3QuDQo+IElmIFJBV19EQVRBX0NPUFkgaXMgbm90IHNldCwgaXQgd2lsbCBpbXBh Y3QgdGhlIG1lYXN1cmUgYm9vdC4gU28sIEkgDQo+IGRvbid0IHRoaW5rIHdlIGNhbiBza2lwIHJh dyBkYXRhIGNvcHkuDQo+IA0KPiA+IC0gUmVtb3ZlIHRoZSB2YXJpYWJsZSBNaWdyYXRlQWxsRnZz IHRvIHNpbXBsaWZ5IGxvZ2ljLg0KPiA+IC0gQ29ycmVjdCAiYWxsb2NhdGUgcG9vbCIgdG8gImFs bG9jYXRlIHBhZ2VzIiB0byBhbGlnbiB3aXRoIGRlc2NyaXB0aW9ucy4NCj4gPg0KPiA+IEZvciBv dGhlciB0d28gcXVlc3Rpb25zIHlvdSBhcmUgbWVudGlvbmluZzoNCj4gPg0KPiA+IDEuIEZvciAi U2hvdWxkIEZ2T3JnQmFzZSBiZSBhIFVJTlQ2NCBvciBzdXBwb3J0IHRlbXAgUkFNIGFib3ZlIDRH Qj8iOg0KPiA+IEkgdGhpbmsgVUlOVDMyIHNob3VsZCBiZSBlbm91Z2gsIGFsbCBwcmUtbWVtIEZW cyBhcmUgYmVsb3cgNEcgYXMgZmFyIA0KPiA+IGFzIEkga25vdywgZXZlbiB3ZSBlbmFibGVkIFg2 NCBpbiBwcmUtbWVtIHBoYXNlLiBUaGlzIHNldHRpbmcgaXMgDQo+ID4gYWxzbyBhbGlnbmluZyB3 aXRoICJGdk9yZ0Jhc2UiIGRlZmluZWQgaW4gIkVES0lJX01JR1JBVEVEX0ZWX0lORk8iLg0KPiA+ IDIuIEZvciAiVGhlIGNhbGwgdG8gUmVtb3ZlRnZIb2JzSW5UZW1wb3JhcnlNZW1vcnkgKFByaXZh dGUpIHdhcw0KPiA+IHJlbW92ZWQiOg0KPiA+IFNpbmNlIHRoaXMgZnVuY3Rpb24gd2lsbCByZW1v dmUgYWxsIEZWIGhvYnMgZm9yIHBoeXNpY2FsIGFkZHJlc3NlcywgDQo+ID4gaXQNCj4gc2hvdWxk IGJlDQo+ID4gY2FsbGVkIG9ubHkgd2hlbiBhbGwgcHJlLW1lbSBGVnMgYXJlIG1pZ3JhdGVkLiBJ biBFdmFjdWF0ZVRlbXBSYW0oKSwNCj4gd2hlbg0KPiA+IG9uZSBGViBpcyBtaWdyYXRlZCwgQ29u dmVydEZ2SG9iKCkgd2lsbCBiZSBjYWxsZWQgZm9yIHRoaXMgRlYgYW5kIGFsbCBpdHMnDQo+IGNo aWxkDQo+ID4gRlZzLCB0aGlzIGlzIGVub3VnaCB0byBlbnN1cmUgYWxyZWFkeSBtaWdyYXRlZCBG ViBob2JzIGFyZSBhbGwgDQo+ID4gcG9pbnRpbmcgdG8gYWRkcmVzc2VzIG9uIHBlcm1hbmVudCBh ZGRyZXNzLg0KPiA+DQo+IFtMaW1pbmddIFNvLCBSZW1vdmVGdkhvYnNJblRlbXBvcmFyeU1lbW9y eSAoKSBkb2VzIG5vdGhpbmcgbm93LiBSaWdodD8NCj4gSWYgeWVzLCBpdCBpcyBzYWZlIHRvIHJl bW92ZSBpdC4NCj4gDQo+IFRoYW5rcw0KPiBMaW1pbmcNCj4gPiBXaGF0IGRvIHlvdSB0aGluaz8N Cj4gPg0KPiA+IEJlc3QgUmVnYXJkcw0KPiA+IEZhbg0KPiA+DQo+ID4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5l eUBpbnRlbC5jb20+DQo+ID4gU2VudDogVHVlc2RheSwgT2N0b2JlciAxNywgMjAyMyA1OjAwIEFN DQo+ID4gVG86IFdhbmcsIEZhbiA8ZmFuLndhbmdAaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91 cHMuaW8NCj4gPiBDYzogR2FvLCBMaW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IEpp YW5nLCBHdW9taW4gDQo+ID4gPGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+OyBCaSwgRGFuZGFuIDxk YW5kYW4uYmlAaW50ZWwuY29tPjsgS2lubmV5LCANCj4gPiBNaWNoYWVsIEQgPG1pY2hhZWwuZC5r aW5uZXlAaW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggVjIgMS8xXSBNZGVNb2R1 bGVQa2c6IFN1cHBvcnQgY3VzdG9taXplZCBGViANCj4gPiBNaWdyYXRpb24gSW5mb3JtYXRpb24N Cj4gPg0KPiA+IEhpIEZhbiwNCj4gPg0KPiA+IFRoZSBsb2dpYyBsb29rcyBmdW5jdGlvbmFsLCBi dXQgdGhlcmUgYXJlIHNvbWUgbmFtZXMgYW5kIA0KPiA+IGRlc2NyaXB0aW9ucyB0aGF0IGNvdWxk IGJlIGFkZGVkIHRvIGhlbHAgZGVzY3JpYmUgdGhpcyBmZWF0dXJlIGFuZCANCj4gPiBzb21lIGNv ZGUgY2hhbmdlcyB0byBtYWtlIHRoZSBjb2RlIGVhc2llciB0byB1bmRlcnN0YW5kLg0KPiA+DQo+ ID4gMSkgVGhlIEdVSUQgZ0Vka2lpVG9NaWdyYXRlRnZJbmZvR3VpZCBpcyBoYXJkIHRvIHVuZGVy c3RhbmQgd2hhdA0KPiA+ICAgIGluZm9ybWF0aW9uIGl0IGNvbnZleXMgZnJvbSB0aGUgbmFtZSBv ZiB0aGUgR1VJRCB2YXJpYWJsZS4NCj4gPiAgICBJIGtub3cgdGhhdCB0aGUgaW50ZW50IGlzIHRo YXQgaXQgaXMgYSBHVUlEIHdpdGggZGF0YSB0aGF0DQo+ID4gICAgdGVsbHMgdGhlIFBFSSBjb3Jl IHdoaWNoIEZWcyBpbiB0ZW1wb3JhcnkgUkFNIHNob3VsZCBiZQ0KPiA+ICAgIG1pZ3JhdGVkIHRv IHBlcm1hbmVudCBSQU0uICBBbmQgdGhhdCB0aGUgdXNlIG9mIHRoaXMgaW5mb3JtYXRpb24NCj4g PiAgICBpcyBvbmx5IGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHRvIG5vdCBtaWdyYXRlIEZW cyB0aGF0DQo+ID4gICAgYXJlIG5vdCBuZWVkZWQgYWZ0ZXIgdGhlIFBFSSBDb3JlIG1pZ3JhdGVz IHRlbXAgUkFNIHRvDQo+ID4gICAgcGVybWFuZW50IFJBTS4gIFRoZSBuYW1lIGFuZCBkZXNjcmlw dGlvbiBpbiBjb21tZW50cyBkbyBub3QNCj4gPiAgICBleHByZXNzIGFsbCB0aGVzZSBkZXRhaWxz Lg0KPiA+DQo+ID4gMikgVGhlIHN0cnVjdHVyZSBuYW1lIEVES0lJX1RPX01JR1JBVEVfRlZfSU5G TyBoYXMgdGhlIHNhbWUNCj4gPiAgICBpc3N1ZSBhcyAoMSkuDQo+ID4gICAgYSkgU2hvdWxkIEZ2 T3JnQmFzZSBiZSBhIFVJTlQ2NCBvciBzdXBwb3J0IHRlbXAgUkFNIGFib3ZlIDRHQj8NCj4gPiAg ICBiKSBTaW5jZSBvbmx5IHRlbXAgUkFNIHRvIHBlcm0gUkFNIG1pZ3JhdGlvbnMgYXJlIHN1cHBv cnRlZA0KPiA+ICAgICAgIHRoZSBmaWVsZCBuYW1lICJGdk9yZ0Jhc2UiIHNob3VsZCBiZSAiRnZU ZW1wb3JhcnlSYW1CYXNlIi4NCj4gPg0KPiA+DQo+ID4gMykgVGhlICNkZWZpbmUgZm9yIEZMQUdT X1NLSVBfRlZfTUlHUkFUSU9OIHNob3VsZCBoYXZlIGEgY29tbWVudA0KPiA+ICAgIGJsb2NrIHRo YXQgZGVzY3JpYmVzIHRoZSBtZWFuaW5nIG9mIHRoaXMgYml0LiAgV2hhdCBpcyB0aGUNCj4gPiAg ICBtZWFuaW5nIHdoZW4gdGhlIGJpdCBpcyBzZXQgYW5kIHdoYXQgaXMgdGhlIG1lYW5pbmcgd2hl biB0aGUNCj4gPiAgICBiaXQgaXMgY2xlYXIuDQo+ID4NCj4gPiA0KSBUaGUgI2RlZmluZSBmb3Ig RkxBR1NfU0tJUF9GVl9SQVdfREFUQV9DT1BZIHNob3VsZCBoYXZlIGENCj4gY29tbWVudA0KPiA+ ICAgIGJsb2NrIHRoYXQgZGVzY3JpYmVzIHRoZSBtZWFuaW5nIG9mIHRoaXMgYml0LiAgV2hhdCBp cyB0aGUNCj4gPiAgICBtZWFuaW5nIHdoZW4gdGhlIGJpdCBpcyBzZXQgYW5kIHdoYXQgaXMgdGhl IG1lYW5pbmcgd2hlbiB0aGUNCj4gPiAgICBiaXQgaXMgY2xlYXIuDQo+ID4NCj4gPiA1KSBXaHkg YXJlIHRoZXJlIDIgYml0cz8gIElmIGFuIEZWIGlzIHNraXBwZWQsIHRoZW4gdGhhdCBtZWFucw0K PiA+ICAgIGRvIG5vdCBjb3B5LiAgSWYgYW4gRlYgaXMgbm90IHNraXBwZWQsIHRoZW4gdGhhdCBt ZWFucyBkbw0KPiA+ICAgIGNvcHkuDQo+ID4NCj4gPiA2KSBJIHRoaW5rIHRoZSB2YXJpYWJsZSBN aWdyYXRlQWxsRnZzIGNhbiBiZSByZW1vdmVkLCBhbmQgdGhlIEhPQg0KPiA+ICAgIGxpc3QgY2hl Y2sgY2FuIGJlIG1hZGUgZm9yIGdFZGtpaVRvTWlncmF0ZUZ2SW5mb0d1aWQgY2FuIGJlIG1hZGUN Cj4gPiAgICBvbiBlYWNoIEZWIGZvdW5kIGluIHRlbXBvcmFyeSBSQU0uICBUaGlzIGxvb2tzIGxp a2UgYSBwZXJmb3JtYW5jZQ0KPiA+ICAgIG9wdGltaXphdGlvbiB0aGF0IG1ha2VzIHRoZSBsb2dp YyBoYXJkZXIgdG8gdW5kZXJzdGFuZCBhbmQgaXQNCj4gPiAgICBpcyBub3QgY2xlYXIgdGhhdCB0 aGUgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIGhhcyBhbnkgYmVuZWZpdC4NCj4gPg0KPiA+IDcp IFRoZSBjYWxsIHRvIFJlbW92ZUZ2SG9ic0luVGVtcG9yYXJ5TWVtb3J5IChQcml2YXRlKSB3YXMg cmVtb3ZlZC4NCj4gPiBXaHk/DQo+ID4NCj4gPiA4KSBUaGUgY29tbWVudCB3aGVyZSBtZW1vcnkg aXMgYWxsb2NhdGVkIGZvciB0aGUgbWlncmF0ZWQgRlYgc2F5cw0KPiA+ICAgICJhbGxvY2F0ZSBw b29sIiB3aGVuIFBlaVNlcnZpY2VzQWxsb2NhdGVQYWdlcygpIGlzIHVzZWQuICBQbGVhc2UNCj4g PiAgICB1cGRhdGUgdGhlIGNvbW1lbnQuDQo+ID4NCj4gPiBNaWtlDQo+ID4NCj4gPg0KPiA+DQo+ ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogV2FuZywgRmFuIDxm YW4ud2FuZ0BpbnRlbC5jb20+DQo+ID4gPiBTZW50OiBNb25kYXksIFNlcHRlbWJlciAxMSwgMjAy MyAyOjUyIEFNDQo+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiA+IENjOiBXYW5n LCBGYW4gPGZhbi53YW5nQGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBEIA0KPiA+ID4gPG1p Y2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgR2FvLCBMaW1pbmcgDQo+ID4gPiA8Z2FvbGltaW5n QGJ5b3NvZnQuY29tLmNuPjsgSmlhbmcsIEd1b21pbiANCj4gPiA+IDxndW9taW4uamlhbmdAaW50 ZWwuY29tPjsgQmksIERhbmRhbiA8ZGFuZGFuLmJpQGludGVsLmNvbT4NCj4gPiA+IFN1YmplY3Q6 IFtQQVRDSCBWMiAxLzFdIE1kZU1vZHVsZVBrZzogU3VwcG9ydCBjdXN0b21pemVkIEZWDQo+IE1p Z3JhdGlvbg0KPiA+ID4gSW5mb3JtYXRpb24NCj4gPiA+DQo+ID4gPiBSRUY6IGh0dHBzOi8vYnVn emlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDUzMw0KPiA+ID4NCj4gPiA+IFRo ZXJlIGFyZSB1c2UgY2FzZXMgd2hpY2ggbm90IGFsbCBGVnMgbmVlZCBiZSBtaWdyYXRlZCBmcm9t IA0KPiA+ID4gVGVtcFJhbSB0byBwZXJtYW5lbnQgbWVtb3J5IGJlZm9yZSBUZW1wUmFtIHRlYXJz IGRvd24uIFRoaXMgbmV3IA0KPiA+ID4gZ3VpZCBpcyBpbnRyb2R1Y2VkIHRvIGF2b2lkIHVubmVj ZXNzYXJ5IEZWIG1pZ3JhdGlvbiB0byBpbXByb3ZlIA0KPiA+ID4gYm9vdCBwZXJmb3JtYW5jZS4N Cj4gPiA+IFBsYXRmb3JtDQo+ID4gPiBjYW4gcHVibGlzaCBUb01pZ3JhdGVGdkluZm8gaG9iIHdp dGggdGhpcyBndWlkIHRvIGN1c3RvbWl6ZSBGViANCj4gPiA+IG1pZ3JhdGlvbiBpbmZvLCBhbmQg UGVpQ29yZSB3aWxsIG9ubHkgbWlncmF0ZSBGVnMgaW5kaWNhdGVkIGJ5IA0KPiA+ID4gdGhpcyBI b2IgaW5mby4NCj4gPiA+DQo+ID4gPiBUaGlzIGlzIGEgYmFja3dhcmRzIGNvbXBhdGlibGUgY2hh bmdlLCBQZWlDb3JlIHdpbGwgY2hlY2sgDQo+ID4gPiBUb01pZ3JhdGVGdkluZm8gaG9iIGJlZm9y ZSBtaWdyYXRpb24uIElmIFRvTWlncmF0ZUZ2SW5mbyBob2JzIA0KPiA+ID4gZXhpc3RzLCBvbmx5 IG1pZ3JhdGUgRlZzIHJlY29yZGVkIGJ5IGhvYnMuIElmIFRvTWlncmF0ZUZ2SW5mbyBob2JzIA0K PiA+ID4gbm90IGV4aXN0cywgbWlncmF0ZSBhbGwgRlZzIHRvIHBlcm1hbmVudCBtZW1vcnkuDQo+ ID4gPg0KPiA+ID4gQ2M6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwu Y29tPg0KPiA+ID4gQ2M6IExpbWluZyBHYW8gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj4NCj4g PiA+IENjOiBHdW9taW4gSmlhbmcgPGd1b21pbi5qaWFuZ0BpbnRlbC5jb20+DQo+ID4gPiBDYzog RGFuZGFuIEJpIDxkYW5kYW4uYmlAaW50ZWwuY29tPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogV2Fu ZyBGYW4gPGZhbi53YW5nQGludGVsLmNvbT4NCj4gPiA+IC0tLQ0KPiA+ID4gIE1kZU1vZHVsZVBr Zy9Db3JlL1BlaS9EaXNwYXRjaGVyL0Rpc3BhdGNoZXIuYyB8IDgyDQo+ID4gKysrKysrKysrKysr Ky0tLS0tDQo+ID4gPiAtDQo+ID4gPiAgTWRlTW9kdWxlUGtnL0NvcmUvUGVpL1BlaU1haW4uaW5m ICAgICAgICAgICAgIHwgIDEgKw0KPiA+ID4gIE1kZU1vZHVsZVBrZy9JbmNsdWRlL0d1aWQvTWln cmF0ZWRGdkluZm8uaCAgICB8IDE5ICsrKysrDQo+ID4gPiAgTWRlTW9kdWxlUGtnL01kZU1vZHVs ZVBrZy5kZWMgICAgICAgICAgICAgICAgIHwgIDMgKy0NCj4gPiA+ICA0IGZpbGVzIGNoYW5nZWQs IDc5IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQ0KPiA+ID4NCj4gPiA+IGRpZmYgLS1n aXQgYS9NZGVNb2R1bGVQa2cvQ29yZS9QZWkvRGlzcGF0Y2hlci9EaXNwYXRjaGVyLmMNCj4gPiA+ IGIvTWRlTW9kdWxlUGtnL0NvcmUvUGVpL0Rpc3BhdGNoZXIvRGlzcGF0Y2hlci5jDQo+ID4gPiBp bmRleCA1ZjMyZWJiNTYwYWUuLmU4NDg0OWVjNmRiMSAxMDA2NDQNCj4gPiA+IC0tLSBhL01kZU1v ZHVsZVBrZy9Db3JlL1BlaS9EaXNwYXRjaGVyL0Rpc3BhdGNoZXIuYw0KPiA+ID4gKysrIGIvTWRl TW9kdWxlUGtnL0NvcmUvUGVpL0Rpc3BhdGNoZXIvRGlzcGF0Y2hlci5jDQo+ID4gPiBAQCAtMTE4 NCw3ICsxMTg0LDExIEBAIEV2YWN1YXRlVGVtcFJhbSAoDQo+ID4gPg0KPiA+ID4gICAgUEVJX0NP UkVfRlZfSEFORExFICAgICAgICAgICAgUGVpQ29yZUZ2SGFuZGxlOw0KPiA+ID4gICAgRUZJX1BF SV9DT1JFX0ZWX0xPQ0FUSU9OX1BQSSAgKlBlaUNvcmVGdkxvY2F0aW9uUHBpOw0KPiA+ID4gKyAg RURLSUlfVE9fTUlHUkFURV9GVl9JTkZPICAgICAgKlRvTWlncmF0ZUZ2SW5mbzsNCj4gPiA+ICAg IEVES0lJX01JR1JBVEVEX0ZWX0lORk8gICAgICAgIE1pZ3JhdGVkRnZJbmZvOw0KPiA+ID4gKyAg RUZJX1BFSV9IT0JfUE9JTlRFUlMgICAgICAgICAgSG9iOw0KPiA+ID4gKyAgQk9PTEVBTiAgICAg ICAgICAgICAgICAgICAgICAgTWlncmF0ZUFsbEZ2czsNCj4gPiA+ICsgIFVJTlQzMiAgICAgICAg ICAgICAgICAgICAgICAgIE1pZ3JhdGlvbkZsYWdzOw0KPiA+ID4NCj4gPiA+ICAgIEFTU0VSVCAo UHJpdmF0ZS0+UGVpTWVtb3J5SW5zdGFsbGVkKTsNCj4gPiA+DQo+ID4gPiBAQCAtMTIxMSw2ICsx MjE1LDE3IEBAIEV2YWN1YXRlVGVtcFJhbSAoDQo+ID4gPg0KPiA+ID4gICAgQ29udmVydFBlaUNv cmVQcGlQb2ludGVycyAoUHJpdmF0ZSwgJlBlaUNvcmVGdkhhbmRsZSk7DQo+ID4gPg0KPiA+ID4g KyAgLy8NCj4gPiA+ICsgIC8vIENoZWNrIGlmIHBsYXRmb3JtIGRlZmluZWQgaG9icyB0byBpbmRp Y2F0ZSB3aGljaCBGVnMgYXJlDQo+ID4gPiBleHBlY3RlZCB0byBtaWdyYXRlIG9yIGtlZXAgcmF3 IGRhdGEuDQo+ID4gPiArICAvLyBJZiBUb01pZ3JhdGVGdkluZm8gaG9icyBleGlzdHMsIG9ubHkg bWlncmF0ZSBGVnMgcmVjb3JkZWQgYnkNCj4gPiA+IGhvYnMuDQo+ID4gPiArICAvLyBJZiBUb01p Z3JhdGVGdkluZm8gaG9icyBub3QgZXhpc3RzLCBtaWdyYXRlIGFsbCBGVnMgdG8gDQo+ID4gPiAr IHBlcm1hbmVudA0KPiA+ID4gbWVtb3J5Lg0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIE1pZ3JhdGVB bGxGdnMgPSBUUlVFOw0KPiA+ID4gKyAgSG9iLlJhdyAgICAgICA9IEdldEZpcnN0R3VpZEhvYiAo JmdFZGtpaVRvTWlncmF0ZUZ2SW5mb0d1aWQpOw0KPiA+ID4gKyAgaWYgKEhvYi5SYXcgIT0gTlVM TCkgew0KPiA+ID4gKyAgICBNaWdyYXRlQWxsRnZzID0gRkFMU0U7DQo+ID4gPiArICB9DQo+ID4g PiArDQo+ID4gPiAgICBmb3IgKEZ2SW5kZXggPSAwOyBGdkluZGV4IDwgUHJpdmF0ZS0+RnZDb3Vu dDsgRnZJbmRleCsrKSB7DQo+ID4gPiAgICAgIEZ2SGVhZGVyID0gUHJpdmF0ZS0+RnZbRnZJbmRl eF0uRnZIZWFkZXI7DQo+ID4gPiAgICAgIEFTU0VSVCAoRnZIZWFkZXIgIT0gTlVMTCk7DQo+ID4g PiBAQCAtMTIyNCw2ICsxMjM5LDI1IEBAIEV2YWN1YXRlVGVtcFJhbSAoDQo+ID4gPiAgICAgICAg ICAgICkNCj4gPiA+ICAgICAgICAgICkNCj4gPiA+ICAgICAgew0KPiA+ID4gKyAgICAgIGlmIChN aWdyYXRlQWxsRnZzKSB7DQo+ID4gPiArICAgICAgICBNaWdyYXRpb25GbGFncyA9IDA7DQo+ID4g PiArICAgICAgfSBlbHNlIHsNCj4gPiA+ICsgICAgICAgIE1pZ3JhdGlvbkZsYWdzID0gRkxBR1Nf U0tJUF9GVl9NSUdSQVRJT04gfA0KPiA+ID4gRkxBR1NfU0tJUF9GVl9SQVdfREFUQV9DT1BZOw0K PiA+ID4gKyAgICAgICAgSG9iLlJhdyA9IEdldEZpcnN0R3VpZEhvYiAoJmdFZGtpaVRvTWlncmF0 ZUZ2SW5mb0d1aWQpOw0KPiA+ID4gKyAgICAgICAgd2hpbGUgKEhvYi5SYXcgIT0gTlVMTCkgew0K PiA+ID4gKyAgICAgICAgICBUb01pZ3JhdGVGdkluZm8gPSBHRVRfR1VJRF9IT0JfREFUQSAoSG9i KTsNCj4gPiA+ICsgICAgICAgICAgaWYgKFRvTWlncmF0ZUZ2SW5mby0+RnZPcmdCYXNlID09DQo+ ID4gKFVJTlQzMikoVUlOVE4pRnZIZWFkZXIpDQo+ID4gPiB7DQo+ID4gPiArICAgICAgICAgICAg TWlncmF0aW9uRmxhZ3MgPSBUb01pZ3JhdGVGdkluZm8tPk1pZ3JhdGlvbkZsYWdzOw0KPiA+ID4g KyAgICAgICAgICAgIGJyZWFrOw0KPiA+ID4gKyAgICAgICAgICB9DQo+ID4gPiArICAgICAgICAg IEhvYi5SYXcgPSBHRVRfTkVYVF9IT0IgKEhvYik7DQo+ID4gPiArICAgICAgICAgIEhvYi5SYXcg PSBHZXROZXh0R3VpZEhvYiAoJmdFZGtpaVRvTWlncmF0ZUZ2SW5mb0d1aWQsDQo+ID4gPiBIb2Iu UmF3KTsNCj4gPiA+ICsgICAgICAgIH0NCj4gPiA+ICsgICAgICB9DQo+ID4gPiArICAgICAgaWYg KE1pZ3JhdGlvbkZsYWdzICYgRkxBR1NfU0tJUF9GVl9NSUdSQVRJT04pIHsNCj4gPiA+ICsgICAg ICAgIGNvbnRpbnVlOw0KPiA+ID4gKyAgICAgIH0NCj4gPiA+ICsNCj4gPiA+ICAgICAgICAvLw0K PiA+ID4gICAgICAgIC8vIEFsbG9jYXRlIHBhZ2UgdG8gc2F2ZSB0aGUgcmViYXNlZCBQRUlNcywg dGhlIFBFSU1zIHdpbGwgDQo+ID4gPiBnZXQgZGlzcGF0Y2hlZCBsYXRlci4NCj4gPiA+ICAgICAg ICAvLw0KPiA+ID4gQEAgLTEyMzQsMTggKzEyNjgsNyBAQCBFdmFjdWF0ZVRlbXBSYW0gKA0KPiA+ ID4gICAgICAgICAgICAgICAgICAgICk7DQo+ID4gPiAgICAgICAgQVNTRVJUX0VGSV9FUlJPUiAo U3RhdHVzKTsNCj4gPiA+ICAgICAgICBNaWdyYXRlZEZ2SGVhZGVyID0gKEVGSV9GSVJNV0FSRV9W T0xVTUVfSEVBREVSIA0KPiA+ID4gKikoVUlOVE4pRnZIZWFkZXJBZGRyZXNzOw0KPiA+ID4gLQ0K PiA+ID4gLSAgICAgIC8vDQo+ID4gPiAtICAgICAgLy8gQWxsb2NhdGUgcG9vbCB0byBzYXZlIHRo ZSByYXcgUEVJTXMsIHdoaWNoIGlzIHVzZWQgdG8ga2VlcA0KPiA+ID4gY29uc2lzdGVudCBjb250 ZXh0IGFjcm9zcw0KPiA+ID4gLSAgICAgIC8vIG11bHRpcGxlIGJvb3QgYW5kIFBDUjAgd2lsbCBr ZWVwIHRoZSBzYW1lIG5vIG1hdHRlciBpZiB0aGUNCj4gPiA+IGFkZHJlc3Mgb2YgYWxsb2NhdGVk IHBhZ2UgaXMgY2hhbmdlZC4NCj4gPiA+IC0gICAgICAvLw0KPiA+ID4gLSAgICAgIFN0YXR1cyA9 ICBQZWlTZXJ2aWNlc0FsbG9jYXRlUGFnZXMgKA0KPiA+ID4gLSAgICAgICAgICAgICAgICAgIEVm aUJvb3RTZXJ2aWNlc0NvZGUsDQo+ID4gPiAtICAgICAgICAgICAgICAgICAgRUZJX1NJWkVfVE9f UEFHRVMgKChVSU5UTilGdkhlYWRlci0+RnZMZW5ndGgpLA0KPiA+ID4gLSAgICAgICAgICAgICAg ICAgICZGdkhlYWRlckFkZHJlc3MNCj4gPiA+IC0gICAgICAgICAgICAgICAgICApOw0KPiA+ID4g LSAgICAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ID4gPiAtICAgICAgUmF3RGF0YUZ2 SGVhZGVyID0gKEVGSV9GSVJNV0FSRV9WT0xVTUVfSEVBREVSDQo+ID4gPiAqKShVSU5UTilGdkhl YWRlckFkZHJlc3M7DQo+ID4gPiArICAgICAgQ29weU1lbSAoTWlncmF0ZWRGdkhlYWRlciwgRnZI ZWFkZXIsIChVSU5UTilGdkhlYWRlci0NCj4gPiA+ID5Gdkxlbmd0aCk7DQo+ID4gPg0KPiA+ID4g ICAgICAgIERFQlVHICgoDQo+ID4gPiAgICAgICAgICBERUJVR19WRVJCT1NFLA0KPiA+ID4gQEAg LTEyNTYsMTggKzEyNzksMjkgQEAgRXZhY3VhdGVUZW1wUmFtICgNCj4gPiA+ICAgICAgICAgICkp Ow0KPiA+ID4NCj4gPiA+ICAgICAgICAvLw0KPiA+ID4gLSAgICAgIC8vIENvcHkgdGhlIGNvbnRl eHQgdG8gdGhlIHJlYmFzZWQgcGFnZXMgYW5kIHJhdyBwYWdlcywgYW5kDQo+ID4gPiBjcmVhdGUg aG9iIHRvIHNhdmUgdGhlDQo+ID4gPiAtICAgICAgLy8gaW5mb3JtYXRpb24uIFRoZSBNaWdyYXRl ZEZ2SW5mbyBIT0Igd2lsbCBuZXZlciBiZSBwcm9kdWNlZA0KPiA+ID4gd2hlbg0KPiA+ID4gLSAg ICAgIC8vIFBjZE1pZ3JhdGVUZW1wb3JhcnlSYW1GaXJtd2FyZVZvbHVtZXMgaXMgRkFMU0UsIGJl Y2F1c2UNCj4gPiB0aGUNCj4gPiA+IFBDRCBjb250cm9sIHRoZQ0KPiA+ID4gLSAgICAgIC8vIGZl YXR1cmUuDQo+ID4gPiArICAgICAgLy8gQ29weSB0aGUgY29udGV4dCB0byB0aGUgcmF3IHBhZ2Vz LCBhbmQgY3JlYXRlIGhvYiB0byANCj4gPiA+ICsgc2F2ZQ0KPiA+ID4gdGhlIGluZm9ybWF0aW9u LiBUaGUgTWlncmF0ZWRGdkluZm8NCj4gPiA+ICsgICAgICAvLyBIT0Igd2lsbCBuZXZlciBiZSBw cm9kdWNlZCB3aGVuDQo+ID4gPiBQY2RNaWdyYXRlVGVtcG9yYXJ5UmFtRmlybXdhcmVWb2x1bWVz IGlzIEZBTFNFLCBiZWNhdXNlIHRoZSBQQ0QNCj4gPiA+ICsgICAgICAvLyBjb250cm9scyB0aGUg ZmVhdHVyZS4NCj4gPiA+ICAgICAgICAvLw0KPiA+ID4gLSAgICAgIENvcHlNZW0gKE1pZ3JhdGVk RnZIZWFkZXIsIEZ2SGVhZGVyLCAoVUlOVE4pRnZIZWFkZXItDQo+ID4gPiA+RnZMZW5ndGgpOw0K PiA+ID4gLSAgICAgIENvcHlNZW0gKFJhd0RhdGFGdkhlYWRlciwgTWlncmF0ZWRGdkhlYWRlciwN Cj4gPiAoVUlOVE4pRnZIZWFkZXItDQo+ID4gPiA+RnZMZW5ndGgpOw0KPiA+ID4gLSAgICAgIE1p Z3JhdGVkRnZJbmZvLkZ2T3JnQmFzZSAgPSAoVUlOVDMyKShVSU5UTilGdkhlYWRlcjsNCj4gPiA+ IC0gICAgICBNaWdyYXRlZEZ2SW5mby5Gdk5ld0Jhc2UgID0NCj4gPiAoVUlOVDMyKShVSU5UTilN aWdyYXRlZEZ2SGVhZGVyOw0KPiA+ID4gLSAgICAgIE1pZ3JhdGVkRnZJbmZvLkZ2RGF0YUJhc2Ug PSAoVUlOVDMyKShVSU5UTilSYXdEYXRhRnZIZWFkZXI7DQo+ID4gPiAtICAgICAgTWlncmF0ZWRG dkluZm8uRnZMZW5ndGggICA9DQo+ID4gKFVJTlQzMikoVUlOVE4pRnZIZWFkZXItPkZ2TGVuZ3Ro Ow0KPiA+ID4gLSAgICAgIEJ1aWxkR3VpZERhdGFIb2IgKCZnRWRraWlNaWdyYXRlZEZ2SW5mb0d1 aWQsICZNaWdyYXRlZEZ2SW5mbywNCj4gPiA+IHNpemVvZiAoTWlncmF0ZWRGdkluZm8pKTsNCj4g PiA+ICsgICAgICBpZiAoKE1pZ3JhdGlvbkZsYWdzICYgRkxBR1NfU0tJUF9GVl9SQVdfREFUQV9D T1BZKSAhPQ0KPiA+ID4gRkxBR1NfU0tJUF9GVl9SQVdfREFUQV9DT1BZKSB7DQo+ID4gPiArICAg ICAgICAvLw0KPiA+ID4gKyAgICAgICAgLy8gQWxsb2NhdGUgcG9vbCB0byBzYXZlIHRoZSByYXcg UEVJTXMsIHdoaWNoIGlzIHVzZWQgdG8gDQo+ID4gPiArIGtlZXANCj4gPiA+IGNvbnNpc3RlbnQg Y29udGV4dCBhY3Jvc3MNCj4gPiA+ICsgICAgICAgIC8vIG11bHRpcGxlIGJvb3QgYW5kIFBDUjAg d2lsbCBrZWVwIHRoZSBzYW1lIG5vIG1hdHRlciBpZiANCj4gPiA+ICsgdGhlDQo+ID4gPiBhZGRy ZXNzIG9mIGFsbG9jYXRlZCBwYWdlIGlzIGNoYW5nZWQuDQo+ID4gPiArICAgICAgICAvLw0KPiA+ ID4gKyAgICAgICAgU3RhdHVzID0gIFBlaVNlcnZpY2VzQWxsb2NhdGVQYWdlcyAoDQo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICBFZmlCb290U2VydmljZXNDb2RlLA0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgRUZJX1NJWkVfVE9fUEFHRVMNCj4gPiAoKFVJTlROKUZ2SGVhZGVyLT5Gdkxl bmd0aCksDQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAmRnZIZWFkZXJBZGRyZXNzDQo+ID4g PiArICAgICAgICAgICAgICAgICAgICApOw0KPiA+ID4gKyAgICAgICAgQVNTRVJUX0VGSV9FUlJP UiAoU3RhdHVzKTsNCj4gPiA+ICsgICAgICAgIFJhd0RhdGFGdkhlYWRlciA9IChFRklfRklSTVdB UkVfVk9MVU1FX0hFQURFUg0KPiA+ID4gKikoVUlOVE4pRnZIZWFkZXJBZGRyZXNzOw0KPiA+ID4g KyAgICAgICAgQ29weU1lbSAoUmF3RGF0YUZ2SGVhZGVyLCBNaWdyYXRlZEZ2SGVhZGVyLA0KPiA+ IChVSU5UTilGdkhlYWRlci0NCj4gPiA+ID5Gdkxlbmd0aCk7DQo+ID4gPiArICAgICAgICBNaWdy YXRlZEZ2SW5mby5Gdk9yZ0Jhc2UgID0gKFVJTlQzMikoVUlOVE4pRnZIZWFkZXI7DQo+ID4gPiAr ICAgICAgICBNaWdyYXRlZEZ2SW5mby5Gdk5ld0Jhc2UgID0NCj4gPiAoVUlOVDMyKShVSU5UTilN aWdyYXRlZEZ2SGVhZGVyOw0KPiA+ID4gKyAgICAgICAgTWlncmF0ZWRGdkluZm8uRnZEYXRhQmFz ZSA9DQo+ID4gKFVJTlQzMikoVUlOVE4pUmF3RGF0YUZ2SGVhZGVyOw0KPiA+ID4gKyAgICAgICAg TWlncmF0ZWRGdkluZm8uRnZMZW5ndGggICA9IChVSU5UMzIpKFVJTlROKUZ2SGVhZGVyLQ0KPiA+ ID4gPkZ2TGVuZ3RoOw0KPiA+ID4gKyAgICAgICAgQnVpbGRHdWlkRGF0YUhvYiAoJmdFZGtpaU1p Z3JhdGVkRnZJbmZvR3VpZCwNCj4gPiAmTWlncmF0ZWRGdkluZm8sDQo+ID4gPiBzaXplb2YgKE1p Z3JhdGVkRnZJbmZvKSk7DQo+ID4gPiArICAgICAgfQ0KPiA+ID4NCj4gPiA+ICAgICAgICAvLw0K PiA+ID4gICAgICAgIC8vIE1pZ3JhdGUgYW55IGNoaWxkcmVuIGZvciB0aGlzIEZWIG5vdyBAQCAt MTMzMCw4ICsxMzY0LDYgDQo+ID4gPiBAQCBFdmFjdWF0ZVRlbXBSYW0gKA0KPiA+ID4gICAgICB9 DQo+ID4gPiAgICB9DQo+ID4gPg0KPiA+ID4gLSAgUmVtb3ZlRnZIb2JzSW5UZW1wb3JhcnlNZW1v cnkgKFByaXZhdGUpOw0KPiA+ID4gLQ0KPiA+ID4gICAgcmV0dXJuIFN0YXR1czsNCj4gPiA+ICB9 DQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9Db3JlL1BlaS9QZWlNYWlu LmluZg0KPiA+ID4gYi9NZGVNb2R1bGVQa2cvQ29yZS9QZWkvUGVpTWFpbi5pbmYNCj4gPiA+IGlu ZGV4IDBjZjM1NzM3MWExNi4uOTQ0YjIzMGIwZTE5IDEwMDY0NA0KPiA+ID4gLS0tIGEvTWRlTW9k dWxlUGtnL0NvcmUvUGVpL1BlaU1haW4uaW5mDQo+ID4gPiArKysgYi9NZGVNb2R1bGVQa2cvQ29y ZS9QZWkvUGVpTWFpbi5pbmYNCj4gPiA+IEBAIC03OCw2ICs3OCw3IEBADQo+ID4gPiAgICBnRWZp RmlybXdhcmVGaWxlU3lzdGVtM0d1aWQNCj4gPiA+ICAgIGdTdGF0dXNDb2RlQ2FsbGJhY2tHdWlk DQo+ID4gPiAgICBnRWRraWlNaWdyYXRlZEZ2SW5mb0d1aWQgICAgICAgICAgICAgICAgICAgICAg IyMNCj4gPiBTT01FVElNRVNfUFJPRFVDRVMNCj4gPiA+ICMjIEhPQg0KPiA+ID4gKyAgZ0Vka2lp VG9NaWdyYXRlRnZJbmZvR3VpZCAgICAgICAgICAgICAgICAgICAgICMjDQo+ID4gU09NRVRJTUVT X0NPTlNVTUVTDQo+ID4gPiAjIyBIT0INCj4gPiA+DQo+ID4gPiAgW1BwaXNdDQo+ID4gPiAgICBn RWZpUGVpU3RhdHVzQ29kZVBwaUd1aWQgICAgICAgICAgICAgICAgICAgICAgIyMNCj4gPiBTT01F VElNRVNfQ09OU1VNRVMNCj4gPiA+ICMgUGVpUmVwb3J0U3RhdHVzU2VydmljZSBpcyBub3QgcmVh ZHkgaWYgdGhpcyBQUEkgZG9lc24ndCBleGlzdCANCj4gPiA+IGRpZmYgLS1naXQgYS9NZGVNb2R1 bGVQa2cvSW5jbHVkZS9HdWlkL01pZ3JhdGVkRnZJbmZvLmgNCj4gPiA+IGIvTWRlTW9kdWxlUGtn L0luY2x1ZGUvR3VpZC9NaWdyYXRlZEZ2SW5mby5oDQo+ID4gPiBpbmRleCBhY2EyMzMyYTBlYzYu LjU0M2NkOWJhN2RkZCAxMDA2NDQNCj4gPiA+IC0tLSBhL01kZU1vZHVsZVBrZy9JbmNsdWRlL0d1 aWQvTWlncmF0ZWRGdkluZm8uaA0KPiA+ID4gKysrIGIvTWRlTW9kdWxlUGtnL0luY2x1ZGUvR3Vp ZC9NaWdyYXRlZEZ2SW5mby5oDQo+ID4gPiBAQCAtOSw2ICs5LDI0IEBAIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50ICANCj4gPiA+ICNpZm5kZWYgX19FREtJSV9N SUdSQVRFRF9GVl9JTkZPX0dVSURfSF9fICAjZGVmaW5lIA0KPiA+ID4gX19FREtJSV9NSUdSQVRF RF9GVl9JTkZPX0dVSURfSF9fDQo+ID4gPg0KPiA+ID4gKyNkZWZpbmUgRkxBR1NfU0tJUF9GVl9N SUdSQVRJT04gICAgICAgIEJJVDANCj4gPiA+ICsjZGVmaW5lIEZMQUdTX1NLSVBfRlZfUkFXX0RB VEFfQ09QWSAgICBCSVQxDQo+ID4gPiArDQo+ID4gPiArLy8vDQo+ID4gPiArLy8vIEVES0lJX1RP X01JR1JBVEVfRlZfSU5GTyBIb2IgaW5mb3JtYXRpb24gc2hvdWxkIGJlIHB1Ymxpc2hlZA0KPiBi eQ0KPiA+ID4gcGxhdGZvcm0gdG8gaW5kaWNhdGUNCj4gPiA+ICsvLy8gb25lIEZWIGlzIGV4cGVj dGVkIHRvIG1pZ3JhdGUgdG8gcGVybWFybmFudCBtZW1vcnkgb3Igbm90IA0KPiA+ID4gK2JlZm9y ZQ0KPiA+ID4gVGVtcFJhbSB0ZWFycyBkb3duLg0KPiA+ID4gKy8vLw0KPiA+ID4gK3R5cGVkZWYg c3RydWN0IHsNCj4gPiA+ICsgIFVJTlQzMiAgICAgRnZPcmdCYXNlOyAgICAgICAgLy8gb3JpZ2lu YWwgRlYgYWRkcmVzcw0KPiA+ID4gKyAgLy8NCj4gPiA+ICsgIC8vIE1pZ3JhdGlvbiBGbGFnczoN Cj4gPiA+ICsgIC8vIEJpdDA6IEluZGljYXRlIHRvIHNraXAgRlYgbWlncmF0aW9uIG9yIG5vdA0K PiA+ID4gKyAgLy8gQml0MTogSW5kaWNhdGUgdG8gc2tpcCBGViByYXcgZGF0YSBjb3B5IG9yIG5v dA0KPiA+ID4gKyAgLy8gT3RoZXJzOiBSZXNlcnZlZCBiaXRzDQo+ID4gPiArICAvLw0KPiA+ID4g KyAgVUlOVDMyICAgICBNaWdyYXRpb25GbGFnczsNCj4gPiA+ICt9IEVES0lJX1RPX01JR1JBVEVf RlZfSU5GTzsNCj4gPiA+ICsNCj4gPiA+ICB0eXBlZGVmIHN0cnVjdCB7DQo+ID4gPiAgICBVSU5U MzIgICAgRnZPcmdCYXNlOyAgICAgICAgIC8vIG9yaWdpbmFsIEZWIGFkZHJlc3MNCj4gPiA+ICAg IFVJTlQzMiAgICBGdk5ld0Jhc2U7ICAgICAgICAgLy8gbmV3IEZWIGFkZHJlc3MNCj4gPiA+IEBA IC0xNiw2ICszNCw3IEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gPiA+ICAgIFVJTlQzMiAgICBGdkxl bmd0aDsgICAgICAgICAgLy8gRnYgTGVuZ3RoDQo+ID4gPiAgfSBFREtJSV9NSUdSQVRFRF9GVl9J TkZPOw0KPiA+ID4NCj4gPiA+ICtleHRlcm4gRUZJX0dVSUQgIGdFZGtpaVRvTWlncmF0ZUZ2SW5m b0d1aWQ7DQo+ID4gPiAgZXh0ZXJuIEVGSV9HVUlEICBnRWRraWlNaWdyYXRlZEZ2SW5mb0d1aWQ7 DQo+ID4gPg0KPiA+ID4gICNlbmRpZiAvLyAjaWZuZGVmIF9fRURLSUlfTUlHUkFURURfRlZfSU5G T19HVUlEX0hfXyBkaWZmIC0tZ2l0IA0KPiA+ID4gYS9NZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtn LmRlYw0KPiA+IGIvTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMgaW5kZXgNCj4gPiA+IGRk MTgyYzAyZmRmNi4uZDZjYmNjNzIxYTVlIDEwMDY0NA0KPiA+ID4gLS0tIGEvTWRlTW9kdWxlUGtn L01kZU1vZHVsZVBrZy5kZWMNCj4gPiA+ICsrKyBiL01kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cu ZGVjDQo+ID4gPiBAQCAtNDE2LDcgKzQxNiw4IEBADQo+ID4gPiAgICBnRWRraWlDYXBzdWxlT25E aXNrTmFtZUd1aWQgPSB7IDB4OThjODBhNGYsIDB4ZTE2YiwgMHg0ZDExLCB7IA0KPiA+ID4gMHg5 MywgMHg5YSwgMHhhYiwgMHhlNSwgMHg2MSwgMHgyNiwgMHgzLCAweDMwIH0gfQ0KPiA+ID4NCj4g PiA+ICAgICMjIEluY2x1ZGUvR3VpZC9NaWdyYXRlZEZ2SW5mby5oDQo+ID4gPiAtICBnRWRraWlN aWdyYXRlZEZ2SW5mb0d1aWQgPSB7IDB4YzFhYjEyZjcsIDB4NzRhYSwgMHg0MDhkLCB7IA0KPiA+ ID4gMHhhMiwgMHhmNCwgMHhjNiwgMHhjZSwgMHhmZCwgMHgxNywgMHg5OCwgMHg3MSB9IH0NCj4g PiA+ICsgIGdFZGtpaVRvTWlncmF0ZUZ2SW5mb0d1aWQgPSB7IDB4YjRiMTQwYTUsIDB4NzJmNiwg MHg0YzIxLCB7IA0KPiA+ID4gKyAweDkzLA0KPiA+ID4gMHhlNCwgMHhhYywgMHhjNCwgMHhlYywg MHhjYiwgMHgyMywgMHgyMyB9IH0NCj4gPiA+ICsgIGdFZGtpaU1pZ3JhdGVkRnZJbmZvR3VpZCAg PSB7IDB4YzFhYjEyZjcsIDB4NzRhYSwgMHg0MDhkLCB7IA0KPiA+ID4gKyAweGEyLA0KPiA+ID4g MHhmNCwgMHhjNiwgMHhjZSwgMHhmZCwgMHgxNywgMHg5OCwgMHg3MSB9IH0NCj4gPiA+DQo+ID4g PiAgICAjIyBJbmNsdWRlL0d1aWQvUm5nQWxnb3JpdGhtLmgNCj4gPiA+ICAgIGdFZGtpaVJuZ0Fs Z29yaXRobVVuU2FmZSA9IHsgMHg4NjlmNzI4YywgMHg0MDlkLCAweDRhYjQsIHsweGFjLCANCj4g PiA+IDB4MDMsIDB4NzEsIDB4ZDMsIDB4MDksIDB4YzEsIDB4YjMsIDB4ZjQgfX0NCj4gPiA+IC0t DQo+ID4gPiAyLjI5LjIud2luZG93cy4yDQo+ID4NCj4gPg0KPiA+DQo+ID4NCj4gPg0KPiANCj4g DQo+IA0KPiANCj4gDQo+IA0KPiANCg0KDQoKLT0tPS09LT0tPS09LT0tPS09LT0tPS0KR3JvdXBz LmlvIExpbmtzOiBZb3UgcmVjZWl2ZSBhbGwgbWVzc2FnZXMgc2VudCB0byB0aGlzIGdyb3VwLgpW aWV3L1JlcGx5IE9ubGluZSAoIzExMjAyOSk6IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8vZy9kZXZl bC9tZXNzYWdlLzExMjAyOQpNdXRlIFRoaXMgVG9waWM6IGh0dHBzOi8vZ3JvdXBzLmlvL210LzEw MjkwODU3Mi83Njg2MTc2Ckdyb3VwIE93bmVyOiBkZXZlbCtvd25lckBlZGsyLmdyb3Vwcy5pbwpV bnN1YnNjcmliZTogaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL3Vuc3ViIFtyZWJlY2Nh QG9wZW5mdy5pb10KLT0tPS09LT0tPS09LT0tPS09LT0tPS0KCg0K