From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web11.8078.1636621610644465259 for ; Thu, 11 Nov 2021 01:06:50 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=PnlhAG43; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: w.sheng@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10164"; a="233125044" X-IronPort-AV: E=Sophos;i="5.87,225,1631602800"; d="scan'208";a="233125044" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Nov 2021 01:06:49 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,225,1631602800"; d="scan'208";a="534355413" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga001.jf.intel.com with ESMTP; 11 Nov 2021 01:06:49 -0800 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Thu, 11 Nov 2021 01:06:48 -0800 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Thu, 11 Nov 2021 01:06:48 -0800 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Thu, 11 Nov 2021 01:06:48 -0800 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.173) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Thu, 11 Nov 2021 01:06:48 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ORAmmCKtigNxbke9wV0fmbhc5oK+OOYxhMz7dZg9GRR/UcqIcWub20hHRqUsozBcB+vNLZYdxR4p8TcHlP1DkvudQkq6nFlqwdXgiY7cu7+CcsCWdW34tF7+TvxqK6Fb1E5ViSPnejGr6keJz1qq7eRjBk4bdJxBjDhYN85qgLkDTuB7XhzlCHk+6egv4XFyuNGm5G6Ilmc3hoTlw1vQsSSkSPBbe/8lxOnp3L4a6Pd3yr/zKRPt3kF7aSQ9FG+Uf4G31QjoTtTakHcrcJHGtQRvJVN0zY/7i9tElMXDfmJYdHdbr7WupklDSPBHBlUGijaNmLJxWzJF1LQ5/dUmOA== 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=KDFre/Pc+JKl2vA9BQ1kHChA5KSlUGpXq/aHIDi8DZc=; b=SzB69y4cm5/XZvrqivr9BcCVANZ8R4OpbvLOt/nw286/km9KXpZ/yx8ALVq7NUmeH035uCwBPdqJDB9G7K8GZ7U+RaEdvhkLTWmCInO20GQKPdsUHtL52Rx/pTomGjeTZV+4DNT0OEXwKMYdJdSB5V1ZuZEsUbJwwotQyRW0Q2KSoj4mNStt9928zbUChHHAZVXROCNRLkD4Lhnt7nCHBOZNWY9IfHaDnfPpNqr8BU2l3faViUFmpLlgUODtBbPVx4gp021zh4WSo23qZCXGXrdiJiobtD5bVmuemP6FJaOz5zTlmc1ePAk7x5zHuMFoZRJrIDkpBDWIyuEOS9gApA== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KDFre/Pc+JKl2vA9BQ1kHChA5KSlUGpXq/aHIDi8DZc=; b=PnlhAG43Mi94LR+ftDo+idZJACMIKNsmTVGo7gZb5OxEgmuMfCGkWT+rwtJq63WLJ778k/gzqgfSlwl+PR6B7EgBiea8VdtOfkKV/dL2TgyIH4Db1cuNvjfCMuqcLBbgFHzS6dkaNy9dAbZZ70Yk29XL+lScAku5un29MAgbn5Y= Received: from PH0PR11MB4870.namprd11.prod.outlook.com (2603:10b6:510:34::16) by PH7PR11MB5885.namprd11.prod.outlook.com (2603:10b6:510:134::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.15; Thu, 11 Nov 2021 09:06:46 +0000 Received: from PH0PR11MB4870.namprd11.prod.outlook.com ([fe80::a004:6b47:8868:1473]) by PH0PR11MB4870.namprd11.prod.outlook.com ([fe80::a004:6b47:8868:1473%8]) with mapi id 15.20.4690.017; Thu, 11 Nov 2021 09:06:46 +0000 From: "Sheng Wei" To: "devel@edk2.groups.io" , "Sheng, W" CC: "Dong, Eric" , "Ni, Ray" , "Kumar, Rahul1" Subject: Re: [edk2-devel] [PATCH v2] UefiCpuPkg/PiSmmCpuDxeSmm: Use SMM Interrupt Shadow Stack Thread-Topic: [edk2-devel] [PATCH v2] UefiCpuPkg/PiSmmCpuDxeSmm: Use SMM Interrupt Shadow Stack Thread-Index: AQHX1tsisJDXdfiBnkmYWMwCc3+p7qv+CORA Date: Thu, 11 Nov 2021 09:06:46 +0000 Message-ID: References: <16B6728A0DB9CC25.25195@groups.io> In-Reply-To: <16B6728A0DB9CC25.25195@groups.io> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.200.16 authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ce33c4f8-9460-4243-4f4d-08d9a4f296bd x-ms-traffictypediagnostic: PH7PR11MB5885: 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: gGY78Y7ibVtK9a9Zk77YmAzUszxZ4p4j6fOYUx0s66YfvsqZyTAnjas3JjKKMqjD2Fs+yFiJ+0wblz1DtF05DRDGUUIuaBkBypfL+JRieD9396MNNHiYrZ2hZpRU9XLgAVlHFpek+62G39TApPGhBmIc1R5ar6tEkgrEbxkHRiAeELY1piGis1gO2DHb2elhb71qku8Utgac8Lrt3zkvlQ/6AyIViwKMAa5CgO2AAToTN7dF3HJ8Nf5aiS/T604N8nxvsugcwC2fPXe6j0NHmpEf3pjkkylr7L1hfGHpk4yXwFOiK5wVRW5u4zeBW2xjAtgTm+n0UZsoorEHlX3FtsGwt/zfh8pJjyzSnW5jqk16R8Du57BvSiG3hajShqNiAkVAxY8T0yRADbKwmEqJZnC8MSIEACAJLyl4JRBvR+8mTOCz7vJbpe1yuffE0krpEdjsHexSGc+7SUf+tVACLZZxmBlJfVMgZ9rd99OIE0FKf+EKE/In7sJ2BDPkaMdqwccK7Fz42g8s0Aag1tGJYVPD2krW2vxg3qylxp2VFutoE5pKtE56bxZTdgwrTMa+B2c9T5zYFFcuL7jMUXytwBj5lSCkhtBA2X5v+/Jm9qXC1ljtbhndtfjs89vuJQihSNtj7kVbDaFKEshId4Ip5qkai6/f71Op5Nj+TpqRHk23H3WryQQvBiCMdyxClLjKyfjPin69qKUVPceDoDs/CJ1EylSVOiTuzapE4gSTkRvTd+pARLztRtQpOUnQtyNnbGgFT5VL50F2z35FzGSqCUXi/GvdX896uko36/990pPa8ErjM1TE55/VJ5I0Tf4b0yCKkOuPmHJI/ywPPf6ALQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB4870.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(366004)(2906002)(52536014)(7696005)(53546011)(55016002)(54906003)(8676002)(6506007)(66556008)(30864003)(83380400001)(76116006)(316002)(110136005)(122000001)(107886003)(64756008)(186003)(66476007)(66946007)(33656002)(8936002)(71200400001)(38100700002)(5660300002)(82960400001)(9686003)(38070700005)(508600001)(19627235002)(966005)(4326008)(26005)(86362001)(66446008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?gb2312?B?T2ZPNnpHRGN1Ym9NTVM0czN0UWVQWm5VcjVuTjJyUVlsVVA2d01ZSE92SkF6?= =?gb2312?B?WGNyMEJEa1lTWFhjbGgvalpYejFkRzR2RWIwNmVvdGRWQ0t3QXVDdmhWbkVk?= =?gb2312?B?bm1PRTlKTG40VFJPMmN5bXBqeXluUTRaaFJTZEUyZjlmcUZCendCNjZ3SytM?= =?gb2312?B?TllnOFY1MzJtV3FaOFVKZENUSmE3YnRNUTRTR29idXp4bTREQjl4QmlsR01Q?= =?gb2312?B?MWs4bzl4ak80ZmhKR1FDMlNFTU1WanFFVHNrZnpVTitHQnY2amw4SXFGNk1n?= =?gb2312?B?VHpQWWtyM1ZjUTBLZUNpTEw0M0ZIK1ZWQnJFa0t6VkRFU2NVTDJsNnkxQ0Z2?= =?gb2312?B?WVF6emlyTnB4UjRNZU1qWWkzNVZnZ2hSUDZlZUFabzZvNUU1WWNla0FZSXJS?= =?gb2312?B?TVlEaFZqVkErWWh4THNpMG9WUzVZelU4TE9xTHNkQ3VuWVR2aE5UYzNCRWFP?= =?gb2312?B?MVpkYUEzZWVQTjZKZlFwUDV2QU1pMm1IdHdPbjNHYmpBOTBzeERBNHhQUEpu?= =?gb2312?B?d1Bxb2RlQk55VXVISG5oTTZ2d291dGlvREd3ZlErZmhFa3FLdk1RNDhjMmVZ?= =?gb2312?B?eFBoaURMaXFOWmk0RjN2VFA1eWo4RmwxZ1UyTEhYY1pYNm9aUjV3S0ZlNWxl?= =?gb2312?B?UHBrVzQ2UUxRaUNtY1RYSytDN1ZtMFVDSGNpSy9ROU8wYlhKOVE4enY1bVZ0?= =?gb2312?B?TU1sZE9lYUZPU2NkMlRkTmRIUUY0YXlSTnVnaGd4Z2xDWUJWY1NEbFhOWnZM?= =?gb2312?B?K2ZQN2ZOVm1GYU5pMUhmR0UwZVAvVC9jZXMxb2xWYWVXZlJxWXYwT3cwTmJY?= =?gb2312?B?TDFQTmxERUhWdW80cEJycXc2MndEWDlBVHArSkJ3ZWV2ZE50N3cyY0sxQlNr?= =?gb2312?B?Z3RzVE00eXVTTFdIcVczeXdDVmlvVnFML2R6cU8rTHJwMXJlSGU4dXJNSzFT?= =?gb2312?B?K3JWYThXelk1QXhGZDlWOXYrVVJvK3RrTXhweGxzSXYwcHQzbzdSOEplaWJ5?= =?gb2312?B?UFBnMkdPcmFlNDJFRTdFUVhya2tSak9QY0ozc3RmRVR0Qk4yRzZCc3pqUjJp?= =?gb2312?B?WGlDci8zMURXSkREbHM1WWQ4UExpbWNHdHFVTzlJQldjMWtFWFZFQkR6MUgy?= =?gb2312?B?VE1seEc0bXFHWHI1eVlZWVZ3WEVwcE1xd0pTdkRpb0prU0ZVMnlOMnkvempW?= =?gb2312?B?RXBiUUxJM21ocWpGMGZDbGVxenppRzE4UnI3Z2U4VkZIY2VyRnprWFRWc1g3?= =?gb2312?B?OWhJVk5zakw3RVd0NWltSm8zWjBjdzZVY0dTcUR6cWY0WHlOQUVZWXhzR1dr?= =?gb2312?B?M3pPZUh6TkhXVWJKSEN0RXkzTmJicVM4K1l1bHZlR0hEWlBVOUcrbFdOVk9z?= =?gb2312?B?dEo1VW9CUlRkTWJ3NlpKVUxLOHNOK3RkRndUUnd3Y043eGVwVkNXWmlxMHlL?= =?gb2312?B?QWFUelBBL1VwbHA1UnVhRlRwTlZ6V1U1L1RsYVIxb1l5REcxSkJKbjE4cUZq?= =?gb2312?B?T0JZMVRZbDllNjAvL0t5Y2hpclFodG5nWERhS29LWHNOU0RiVEl2cFByK3RB?= =?gb2312?B?ZHlzODNQelZLcVoxRkU0RHpkaXBvSm5vWEVEeWJleTRYcVNKc0FHYkErS1oy?= =?gb2312?B?UDk5aWVGY0xzZVE4Y0d2Z3lkeExLMHpzVk5FS0F3QURSWWVOU0YxWDlaZ3Yx?= =?gb2312?B?aGJmSVFDQmVpeTlVSWRBWHdpd2hxVmQzdk5qalJqcjUyS1VPdGZjRDh3dUtF?= =?gb2312?B?eWRtTk13RVpyeXYySWJic0JtZ04xWlZadnA3dEQybnBtVTFEOHFGQXVpOC9u?= =?gb2312?B?STRnS25QZ3llalB1QkJ0dVVDSisycS9vU1hjNldZWklaYUdzUFBBR2gzZ3Uv?= =?gb2312?B?U2V4R1VSOU5yYjdzSld6dWhVczNqYjlFc09FZEF4cmJjYzZybUVuNWdsOGcw?= =?gb2312?B?WDJvQjgwRSs4UHRYZzJyYkhGUjY5MzVxV29pUWxDR0Jqb0xBK0NaU24xZmM0?= =?gb2312?B?MFpUNW1zT0JTSnpkOUNEZEw3d1Bxdyt5WHpabkZwOFZEaDlYZmVEd21DZUdO?= =?gb2312?B?OXcyL1Nvcy80WmxMQUcrUHd0NVVTd1V4d3J1ZE1tZlhidFBxWnp0S082MXFa?= =?gb2312?B?dzkxcS9oRXB6U1ZCU2djMTlKRjk5ZHlqSGp6a2ZGM3BSTy9COXdRZkFDbEo1?= =?gb2312?Q?/Gu+IvKnFqxWBQJmZkzdVqQ=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB4870.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ce33c4f8-9460-4243-4f4d-08d9a4f296bd X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Nov 2021 09:06:46.5953 (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: A6XLAIL+XU3N0Oa7PidUurWHb9md995hPeCTIJNVxMmKa4LkfYIS9MmN7gRb2NQaCLLN6MSlNeMx+vgZ7LDfmQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB5885 Return-Path: w.sheng@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 U29ycnkgLCBwbGVhc2UgaWdub3JlIHRoaXMgcGF0Y2ggVjIuIEkgd2lsbCB1cGRhdGUgdG8gVjMu DQpUaGFuayB5b3UNCkJSDQpTaGVuZyBXZWkNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9u IEJlaGFsZiBPZiBTaGVuZw0KPiBXZWkNCj4gU2VudDogMjAyMcTqMTHUwjExyNUgMTc6MDQNCj4g VG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50 ZWwuY29tPjsgTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT47IEt1bWFyLA0KPiBSYWh1bDEgPHJh aHVsMS5rdW1hckBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjJd IFVlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW06IFVzZQ0KPiBTTU0gSW50ZXJydXB0IFNoYWRvdyBT dGFjaw0KPiANCj4gV2hlbiBDRVQgc2hhZG93IHN0YWNrIGZlYXR1cmUgaXMgZW5hYmxlZCwgaXQg bmVlZHMgdG8gdXNlIElTVCBmb3IgdGhlDQo+IGV4Y2VwdGlvbnMsIGFuZCB1c2VzIGludGVycnVw dCBzaGFkb3cgc3RhY2sgZm9yIHRoZSBzdGFjayBzd2l0Y2guDQo+IFNoYWRvdyBzdGFjayBzaG91 bGQgYmUgMzIgYnl0ZXMgYWxpZ25lZC4NCj4gQ2hlY2sgSVNUIGZpZWxkLCB3aGVuIGNsZWFyIHNo YWRvdyBzdGFjayB0b2tlbiBidXN5IGJpdCB3aGVuIHVzaW5nIHJldGYuDQo+IA0KPiBSRUY6IGh0 dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcyOA0KPiANCj4g U2lnbmVkLW9mZi1ieTogU2hlbmcgV2VpIDx3LnNoZW5nQGludGVsLmNvbT4NCj4gQ2M6IEVyaWMg RG9uZyA8ZXJpYy5kb25nQGludGVsLmNvbT4NCj4gQ2M6IFJheSBOaSA8cmF5Lm5pQGludGVsLmNv bT4NCj4gQ2M6IFJhaHVsIEt1bWFyIDxyYWh1bDEua3VtYXJAaW50ZWwuY29tPg0KPiAtLS0NCj4g IC4uLi9YNjQvWGNvZGU1RXhjZXB0aW9uSGFuZGxlckFzbS5uYXNtICAgICAgICAgICAgIHwgNjYg KysrKysrKysrKy0tLS0tDQo+ICBVZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1BpU21tQ3B1RHhl U21tLmMgICAgICAgICB8IDIzICsrKysrLQ0KPiAgVWVmaUNwdVBrZy9QaVNtbUNwdUR4ZVNtbS9Q aVNtbUNwdUR4ZVNtbS5oICAgICAgICAgfCAxMCArKysNCj4gIFVlZmlDcHVQa2cvUGlTbW1DcHVE eGVTbW0vWDY0L1BhZ2VUYmwuYyAgICAgICAgICAgIHwgIDcgKysNCj4gIFVlZmlDcHVQa2cvUGlT bW1DcHVEeGVTbW0vWDY0L1NtbUZ1bmNzQXJjaC5jICAgICAgIHwgOTQNCj4gKysrKysrKysrKysr KysrLS0tLS0tLQ0KPiAgNSBmaWxlcyBjaGFuZ2VkLCAxNTEgaW5zZXJ0aW9ucygrKSwgNDkgZGVs ZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4 Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L1hjb2RlNUV4Y2VwdGlvbkhhbmRsZQ0KPiByQXNtLm5hc20N Cj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvWGNvZGU1 RXhjZXB0aW9uSGFuZGxlDQo+IHJBc20ubmFzbQ0KPiBpbmRleCA0ODgxYTAyODQ4Li44NGExMmRk Yjg4IDEwMDY0NA0KPiAtLS0NCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFu ZGxlckxpYi9YNjQvWGNvZGU1RXhjZXB0aW9uSGFuZGxlDQo+IHJBc20ubmFzbQ0KPiArKysNCj4g Yi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvWGNvZGU1RXhj ZXB0aW9uSGFuZGwNCj4gKysrIGVyQXNtLm5hc20NCj4gQEAgLTE1LDE3ICsxNSwzNiBAQA0KPiAg Oy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAgJWluY2x1ZGUgIk5hc20uaW5jIg0KPiANCj4gKzsN Cj4gKzsgRXF1aXZhbGVudCBOQVNNIHN0cnVjdHVyZSBvZiBJQTMyX0RFU0NSSVBUT1IgOyBzdHJ1 YyBJQTMyX0RFU0NSSVBUT1INCj4gKyAgLkxpbWl0ICAgICAgICAgICAgICAgICAgICAgICAgIENU WVBFX1VJTlQxNiAxDQo+ICsgIC5CYXNlICAgICAgICAgICAgICAgICAgICAgICAgICBDVFlQRV9V SU5UTiAgMQ0KPiArZW5kc3RydWMNCj4gKw0KPiArOw0KPiArOyBFcXVpdmFsZW50IE5BU00gc3Ry dWN0dXJlIG9mIElBMzJfSURUX0dBVEVfREVTQ1JJUFRPUiA7IHN0cnVjDQo+ICtJQTMyX0lEVF9H QVRFX0RFU0NSSVBUT1INCj4gKyAgLk9mZnNldExvdyAgICAgICAgICAgICAgICAgICAgIENUWVBF X1VJTlQxNiAxDQo+ICsgIC5TZWxlY3RvciAgICAgICAgICAgICAgICAgICAgICBDVFlQRV9VSU5U MTYgMQ0KPiArICAuUmVzZXJ2ZWRfMCAgICAgICAgICAgICAgICAgICAgQ1RZUEVfVUlOVDggMQ0K PiArICAuR2F0ZVR5cGUgICAgICAgICAgICAgICAgICAgICAgQ1RZUEVfVUlOVDggMQ0KPiArICAu T2Zmc2V0SGlnaCAgICAgICAgICAgICAgICAgICAgQ1RZUEVfVUlOVDE2IDENCj4gKyAgLk9mZnNl dFVwcGVyICAgICAgICAgICAgICAgICAgIENUWVBFX1VJTlQzMiAxDQo+ICsgIC5SZXNlcnZlZF8x ICAgICAgICAgICAgICAgICAgICBDVFlQRV9VSU5UMzIgMQ0KPiArZW5kc3RydWMNCj4gKw0KPiAg Ow0KPiAgOyBDb21tb25FeGNlcHRpb25IYW5kbGVyKCkNCj4gIDsNCj4gDQo+ICAlZGVmaW5lIFZD X0VYQ0VQVElPTiAyOQ0KPiAtJWRlZmluZSBQRl9FWENFUFRJT04gMTQNCj4gDQo+ICBleHRlcm4g QVNNX1BGWChtRXJyb3JDb2RlRmxhZykgICAgOyBFcnJvciBjb2RlIGZsYWdzIGZvciBleGNlcHRp b25zDQo+ICBleHRlcm4gQVNNX1BGWChtRG9GYXJSZXR1cm5GbGFnKSAgOyBEbyBmYXIgcmV0dXJu IGZsYWcgIGV4dGVybg0KPiBBU01fUEZYKENvbW1vbkV4Y2VwdGlvbkhhbmRsZXIpIC1leHRlcm4g QVNNX1BGWChGZWF0dXJlUGNkR2V0DQo+IChQY2RDcHVTbW1TdGFja0d1YXJkKSkNCj4gDQo+ICBT RUNUSU9OIC5kYXRhDQo+IA0KPiBAQCAtMjgyLDQyICszMDEsNDkgQEAgRHJGaW5pc2g6DQo+IA0K PiAgICAgIDsgVGhlIGZvbGxvdyBhbGdvcml0aG0gaXMgdXNlZCBmb3IgY2xlYXIgc2hhZG93IHN0 YWNrIHRva2VuIGJ1c3kgYml0Lg0KPiAgICAgIDsgVGhlIGNvbW1lbnQgaXMgYmFzZWQgb24gdGhl IHNhbXBsZSBzaGFkb3cgc3RhY2suDQo+ICsgICAgOyBTaGFkb3cgc3RhY2sgaXMgMzIgYnl0ZXMg YWxpZ25lZC4NCj4gICAgICA7IFRoZSBzYW1wbGUgc2hhZG93IHN0YWNrIGxheW91dCA6DQo+ICAg ICAgOyBBZGRyZXNzIHwgQ29udGV4dA0KPiAgICAgIDsgICAgICAgICArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSsNCj4gLSAgICA7ICAweEZEMCAgfCAgIEZSRUUgICAgICAgICAgICAgICAgICB8 IGl0IGlzIDB4RkQ4fDB4MDJ8KExNQSAmIENTLkwpLCBhZnRlcg0KPiBTQVZFUFJFVlNTUC4NCj4g KyAgICA7ICAweEZCOCAgfCAgIEZSRUUgICAgICAgICAgICAgICAgICB8IEl0IGlzIDB4RkMwfDB4 MDJ8KExNQSAmIENTLkwpLCBhZnRlcg0KPiBTQVZFUFJFVlNTUC4NCj4gICAgICA7ICAgICAgICAg Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IC0gICAgOyAgMHhGRDggIHwgIFByZXYgU1NQ ICAgICAgICAgICAgICAgfA0KPiArICAgIDsgIDB4RkMwICB8ICBQcmV2IFNTUCAgICAgICAgICAg ICAgIHwNCj4gICAgICA7ICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IC0g ICAgOyAgMHhGRTAgIHwgICBSSVAgICAgICAgICAgICAgICAgICAgfA0KPiArICAgIDsgIDB4RkM4 ICB8ICAgUklQICAgICAgICAgICAgICAgICAgIHwNCj4gICAgICA7ICAgICAgICAgKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rDQo+IC0gICAgOyAgMHhGRTggIHwgICBDUyAgICAgICAgICAgICAg ICAgICAgfA0KPiArICAgIDsgIDB4RkQwICB8ICAgQ1MgICAgICAgICAgICAgICAgICAgIHwNCj4g ICAgICA7ICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+IC0gICAgOyAgMHhG RjAgIHwgIDB4RkYwIHwgQlVTWSAgICAgICAgICAgfCBCVVNZIGZsYWcgY2xlYXJlZCBhZnRlciBD TFJTU0JTWQ0KPiArICAgIDsgIDB4RkQ4ICB8ICAweEZEOCB8IEJVU1kgICAgICAgICAgIHwgQlVT WSBmbGFnIGNsZWFyZWQgYWZ0ZXIgQ0xSU1NCU1kNCj4gICAgICA7ICAgICAgICAgKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rDQo+IC0gICAgOyAgMHhGRjggIHwgMHhGRDh8MHgwMnwoTE1BICYg Q1MuTCkgfA0KPiArICAgIDsgIDB4RkUwICB8IDB4RkMwfDB4MDJ8KExNQSAmIENTLkwpIHwNCj4g ICAgICA7ICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+ICAgICAgOyBJbnN0 cnVjdGlvbnMgZm9yIEludGVsIENvbnRyb2wgRmxvdyBFbmZvcmNlbWVudCBUZWNobm9sb2d5IChD RVQpIGFyZQ0KPiBzdXBwb3J0ZWQgc2luY2UgTkFTTSB2ZXJzaW9uIDIuMTUuMDEuDQo+ICAgICAg Y21wICAgICBxd29yZCBbQVNNX1BGWChtRG9GYXJSZXR1cm5GbGFnKV0sIDANCj4gICAgICBqeiAg ICAgIENldERvbmUNCj4gLSAgICBjbXAgICAgIHF3b3JkIFtyYnAgKyA4XSwgUEZfRVhDRVBUSU9O ICAgOyBjaGVjayBpZiBpdCBpcyBhIFBhZ2UgRmF1bHQNCj4gLSAgICBqbnogICAgIENldERvbmUN Cj4gLSAgICBjbXAgICAgIGJ5dGUgW2R3b3JkIEFTTV9QRlgoRmVhdHVyZVBjZEdldCAoUGNkQ3B1 U21tU3RhY2tHdWFyZCkpXSwNCj4gMA0KPiAtICAgIGp6ICAgICAgQ2V0RG9uZQ0KPiAgICAgIG1v diAgICAgcmF4LCBjcjQNCj4gLSAgICBhbmQgICAgIHJheCwgMHg4MDAwMDAgICAgICAgOyBjaGVj ayBpZiBDRVQgaXMgZW5hYmxlZA0KPiArICAgIGFuZCAgICAgcmF4LCAweDgwMDAwMCAgICAgICA7 IENoZWNrIGlmIENFVCBpcyBlbmFibGVkDQo+ICsgICAganogICAgICBDZXREb25lDQo+ICsgICAg c3ViICAgICByc3AsIDB4MTANCj4gKyAgICBzaWR0ICAgIFtyc3BdDQo+ICsgICAgbW92ICAgICBy Y3gsIHF3b3JkIFtyc3AgKyBJQTMyX0RFU0NSSVBUT1IuQmFzZV07IEdldCBJRFQgYmFzZSBhZGRy ZXNzDQo+ICsgICAgYWRkICAgICByc3AsIDB4MTANCj4gKyAgICBtb3YgICAgIHJheCwgcXdvcmQg W3JicCArIDhdOyBHZXQgZXhjZXB0aW9uIG51bWJlcg0KPiArICAgIHNhbCAgICAgcmF4LCAweDA0 ICAgICAgICAgICA7IEdldCBJRFQgb2Zmc2V0DQo+ICsgICAgYWRkICAgICByYXgsIHJjeCAgICAg ICAgICAgIDsgR2V0IElEVCBnYXRlIGRlc2NyaXB0b3IgYWRkcmVzcw0KPiArICAgIG1vdiAgICAg YWwsIGJ5dGUgW3JheCArIElBMzJfSURUX0dBVEVfREVTQ1JJUFRPUi5SZXNlcnZlZF8wXQ0KPiAr ICAgIGFuZCAgICAgcmF4LCAweDAxICAgICAgICAgICA7IENoZWNrIElTVCBmaWVsZA0KPiAgICAg IGp6ICAgICAgQ2V0RG9uZQ0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IFNT UCBzaG91bGQgYmUgMHhGRDggYXQgdGhpcyBwb2ludA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA7IFNTUCBzaG91bGQgYmUgMHhGQzAgYXQgdGhpcyBwb2ludA0KPiAgICAgIG1v diAgICAgcmF4LCAweDA0ICAgICAgICAgICA7IGFkdmFuY2UgcGFzdCBjczpsaXA6cHJldnNzcDtz dXBlcnZpc29yIHNoYWRvdyBzdGFjaw0KPiB0b2tlbg0KPiAtICAgIElOQ1NTUF9SQVggICAgICAg ICAgICAgICAgICA7IEFmdGVyIHRoaXMgU1NQIHNob3VsZCBiZSAweEZGOA0KPiAtICAgIFNBVkVQ UkVWU1NQICAgICAgICAgICAgICAgICA7IG5vdyB0aGUgc2hhZG93IHN0YWNrIHJlc3RvcmUgdG9r ZW4gd2lsbCBiZQ0KPiBjcmVhdGVkIGF0IDB4RkQwDQo+IC0gICAgUkVBRFNTUF9SQVggICAgICAg ICAgICAgICAgIDsgUmVhZCBuZXcgU1NQLCBTU1Agc2hvdWxkIGJlIDB4MTAwMA0KPiArICAgIElO Q1NTUF9SQVggICAgICAgICAgICAgICAgICA7IEFmdGVyIHRoaXMgU1NQIHNob3VsZCBiZSAweEZF MA0KPiArICAgIFNBVkVQUkVWU1NQICAgICAgICAgICAgICAgICA7IG5vdyB0aGUgc2hhZG93IHN0 YWNrIHJlc3RvcmUgdG9rZW4gd2lsbCBiZQ0KPiBjcmVhdGVkIGF0IDB4RkI4DQo+ICsgICAgUkVB RFNTUF9SQVggICAgICAgICAgICAgICAgIDsgUmVhZCBuZXcgU1NQLCBTU1Agc2hvdWxkIGJlIDB4 RkU4DQo+ICAgICAgc3ViICAgICByYXgsIDB4MTANCj4gLSAgICBDTFJTU0JTWV9SQVggICAgICAg ICAgICAgICAgOyBDbGVhciB0b2tlbiBhdCAweEZGMCwgU1NQIHNob3VsZCBiZSAwIGFmdGVyIHRo aXMNCj4gKyAgICBDTFJTU0JTWV9SQVggICAgICAgICAgICAgICAgOyBDbGVhciB0b2tlbiBhdCAw eEZEOCwgU1NQIHNob3VsZCBiZSAwIGFmdGVyIHRoaXMNCj4gICAgICBzdWIgICAgIHJheCwgMHgy MA0KPiAtICAgIFJTVE9SU1NQX1JBWCAgICAgICAgICAgICAgICA7IFJlc3RvcmUgdG8gdG9rZW4g YXQgMHhGRDAsIG5ldyBTU1Agd2lsbCBiZSAweEZEMA0KPiArICAgIFJTVE9SU1NQX1JBWCAgICAg ICAgICAgICAgICA7IFJlc3RvcmUgdG8gdG9rZW4gYXQgMHhGQjgsIG5ldyBTU1Agd2lsbCBiZSAw eEZCOA0KPiAgICAgIG1vdiAgICAgcmF4LCAweDAxICAgICAgICAgICA7IFBvcCBvZmYgdGhlIG5l dyBzYXZlIHRva2VuIGNyZWF0ZWQNCj4gLSAgICBJTkNTU1BfUkFYICAgICAgICAgICAgICAgICAg OyBTU1Agc2hvdWxkIGJlIDB4RkQ4IG5vdw0KPiArICAgIElOQ1NTUF9SQVggICAgICAgICAgICAg ICAgICA7IFNTUCBzaG91bGQgYmUgMHhGQzAgbm93DQo+ICBDZXREb25lOg0KPiANCj4gICAgICBj bGkNCj4gZGlmZiAtLWdpdCBhL1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vUGlTbW1DcHVEeGVT bW0uYw0KPiBiL1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vUGlTbW1DcHVEeGVTbW0uYw0KPiBp bmRleCA2N2FkOWE0YzA3Li5hYzBjOTAxNTkwIDEwMDY0NA0KPiAtLS0gYS9VZWZpQ3B1UGtnL1Bp U21tQ3B1RHhlU21tL1BpU21tQ3B1RHhlU21tLmMNCj4gKysrIGIvVWVmaUNwdVBrZy9QaVNtbUNw dUR4ZVNtbS9QaVNtbUNwdUR4ZVNtbS5jDQo+IEBAIC04NzYsNiArODc2LDIxIEBAIFBpQ3B1U21t RW50cnkgKA0KPiAgICBtU21tU2hhZG93U3RhY2tTaXplID0gMDsNCj4gICAgaWYgKChQY2RHZXQz MiAoUGNkQ29udHJvbEZsb3dFbmZvcmNlbWVudFByb3BlcnR5TWFzaykgIT0gMCkgJiYNCj4gbUNl dFN1cHBvcnRlZCkgew0KPiAgICAgIC8vDQo+ICsgICAgLy8gU01NIFN0YWNrIEd1YXJkIERpc2Fi bGVkDQo+ICsgICAgLy8gMSBtb3JlIHBhZ2VzIGlzIGFsbG9jYXRlZCBmb3IgZWFjaCBwcm9jZXNz b3IsIGl0IGlzIGtub3duIGdvb2Qgc3RhY2suDQo+ICsgICAgLy8gQXBwZW5kIFNoYWRvdyBTdGFj ayBhZnRlciBub3JtYWwgc3RhY2sgd2l0aCAxIG1vcmUgcGFnZSBhcyBrbm93bg0KPiBnb29kIHNo YWRvdyBzdGFjay4NCj4gKyAgICAvLw0KPiArICAgIC8vIHw9IFN0YWNrcw0KPiArICAgIC8vICst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gLS0tLSsNCj4gKyAgICAvLyB8IEtub3duIEdv b2QgU3RhY2sgfCAgICBTTU0gU3RhY2sgICAgIHwgS25vd24gR29vZCBTaGFkb3cgU3RhY2sgfA0K PiBTTU0gU2hhZG93IFN0YWNrICAgIHwNCj4gKyAgICAvLyArLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQo+IC0tLS0rDQo+ICsgICAgLy8gfCAgICAgICAgICAgICAgICAgIHxQY2RDcHVTbW1T dGFja1NpemV8DQo+IHxQY2RDcHVTbW1TaGFkb3dTdGFja1NpemV8DQo+ICsgICAgLy8gfDwtLS0t LS0tLS0tIG1TbW1TdGFja1NpemUgLS0tLS0tLS0tLT58PC0tLS0tLS0tLS0tLS0tLQ0KPiBtU21t U2hhZG93U3RhY2tTaXplIC0tLS0tLS0tLS0tLT58DQo+ICsgICAgLy8gfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8DQo+ICsgICAgLy8gfDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSBQcm9jZXNzb3IgTiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N Cj4gLS0tLS0+fA0KPiArICAgIC8vDQo+ICsgICAgLy8NCj4gKyAgICAvLyBTTU0gU3RhY2sgR3Vh cmQgRW5hYmxlZA0KPiAgICAgIC8vIEFwcGVuZCBTaGFkb3cgU3RhY2sgYWZ0ZXIgbm9ybWFsIHN0 YWNrDQo+ICAgICAgLy8NCj4gICAgICAvLyB8PSBTdGFja3MNCj4gQEAgLTg4OCw4ICs5MDMsMTQg QEAgUGlDcHVTbW1FbnRyeSAoDQo+ICAgICAgLy8gfDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9jZXNzb3IgTiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT58DQo+ICAgICAgLy8NCj4gICAgICBt U21tU2hhZG93U3RhY2tTaXplID0gRUZJX1BBR0VTX1RPX1NJWkUgKEVGSV9TSVpFX1RPX1BBR0VT DQo+IChQY2RHZXQzMiAoUGNkQ3B1U21tU2hhZG93U3RhY2tTaXplKSkpOw0KPiArICAgIC8vDQo+ ICsgICAgLy8gQWRkIDEgcGFnZSBhcyBrbm93biBnb29kIHNoYWRvdyBzdGFjaw0KPiArICAgIC8v DQo+ICsgICAgbVNtbVNoYWRvd1N0YWNrU2l6ZSArPSBFRklfUEFHRVNfVE9fU0laRSAoMSk7DQo+ ICAgICAgaWYgKEZlYXR1cmVQY2RHZXQgKFBjZENwdVNtbVN0YWNrR3VhcmQpKSB7DQo+IC0gICAg ICBtU21tU2hhZG93U3RhY2tTaXplICs9IEVGSV9QQUdFU19UT19TSVpFICgyKTsNCj4gKyAgICAg IG1TbW1TaGFkb3dTdGFja1NpemUgKz0gRUZJX1BBR0VTX1RPX1NJWkUgKDEpOw0KPiArICAgIH0g ZWxzZSB7DQo+ICsgICAgICBtU21tU3RhY2tTaXplICs9IEVGSV9QQUdFU19UT19TSVpFICgxKTsN Cj4gICAgICB9DQo+ICAgIH0NCj4gDQo+IGRpZmYgLS1naXQgYS9VZWZpQ3B1UGtnL1BpU21tQ3B1 RHhlU21tL1BpU21tQ3B1RHhlU21tLmgNCj4gYi9VZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1Bp U21tQ3B1RHhlU21tLmgNCj4gaW5kZXggMjI0OGE4YzVlZS4uNWZlYTQ1YjM0MiAxMDA2NDQNCj4g LS0tIGEvVWVmaUNwdVBrZy9QaVNtbUNwdUR4ZVNtbS9QaVNtbUNwdUR4ZVNtbS5oDQo+ICsrKyBi L1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vUGlTbW1DcHVEeGVTbW0uaA0KPiBAQCAtNTU3LDYg KzU1NywxNiBAQCBJbml0aWFsaXplSURUU21tU3RhY2tHdWFyZCAoDQo+ICAgIFZPSUQNCj4gICAg KTsNCj4gDQo+ICsvKioNCj4gKyAgSW5pdGlhbGl6ZSBJRFQgZm9yIFNNTSBTaGFkb3cgU3RhY2su DQo+ICsNCj4gKyoqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtJbml0aWFsaXplSURUU21tU2hh ZG93U3RhY2sgKA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4gIC8qKg0KPiAgICBJbml0aWFs aXplIEdkdCBmb3IgYWxsIHByb2Nlc3NvcnMuDQo+IA0KPiBkaWZmIC0tZ2l0IGEvVWVmaUNwdVBr Zy9QaVNtbUNwdUR4ZVNtbS9YNjQvUGFnZVRibC5jDQo+IGIvVWVmaUNwdVBrZy9QaVNtbUNwdUR4 ZVNtbS9YNjQvUGFnZVRibC5jDQo+IGluZGV4IGQ2ZjhkZDk0ZDMuLjcxY2YxMTNhZWEgMTAwNjQ0 DQo+IC0tLSBhL1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vWDY0L1BhZ2VUYmwuYw0KPiArKysg Yi9VZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1g2NC9QYWdlVGJsLmMNCj4gQEAgLTQ4NCw2ICs0 ODQsMTMgQEAgU21tSW5pdFBhZ2VUYWJsZSAoDQo+ICAgICAgSW5pdGlhbGl6ZUlEVFNtbVN0YWNr R3VhcmQgKCk7DQo+ICAgIH0NCj4gDQo+ICsgIC8vDQo+ICsgIC8vIEFkZGl0aW9uYWwgU01NIElE VCBpbml0aWFsaXphdGlvbiBmb3IgU01NIENFVCBzaGFkb3cgc3RhY2sgIC8vICBpZg0KPiArICgo UGNkR2V0MzIgKFBjZENvbnRyb2xGbG93RW5mb3JjZW1lbnRQcm9wZXJ0eU1hc2spICE9IDApICYm DQo+IG1DZXRTdXBwb3J0ZWQpIHsNCj4gKyAgICBJbml0aWFsaXplSURUU21tU2hhZG93U3RhY2sg KCk7DQo+ICsgIH0NCj4gKw0KPiAgICAvLw0KPiAgICAvLyBSZXR1cm4gdGhlIGFkZHJlc3Mgb2Yg UE1MNC9QTUw1ICh0byBzZXQgQ1IzKQ0KPiAgICAvLw0KPiBkaWZmIC0tZ2l0IGEvVWVmaUNwdVBr Zy9QaVNtbUNwdUR4ZVNtbS9YNjQvU21tRnVuY3NBcmNoLmMNCj4gYi9VZWZpQ3B1UGtnL1BpU21t Q3B1RHhlU21tL1g2NC9TbW1GdW5jc0FyY2guYw0KPiBpbmRleCBjYTNmNWZmOTFhLi40MzZkZjQx NzM3IDEwMDY0NA0KPiAtLS0gYS9VZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1g2NC9TbW1GdW5j c0FyY2guYw0KPiArKysgYi9VZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1g2NC9TbW1GdW5jc0Fy Y2guYw0KPiBAQCAtNDQsNiArNDQsMzcgQEAgSW5pdGlhbGl6ZUlEVFNtbVN0YWNrR3VhcmQgKA0K PiAgICBJZHRHYXRlLT5CaXRzLlJlc2VydmVkXzAgPSAxOw0KPiAgfQ0KPiANCj4gKy8qKg0KPiAr ICBJbml0aWFsaXplIElEVCBmb3IgU01NIFNoYWRvdyBTdGFjay4NCj4gKw0KPiArKiovDQo+ICtW T0lEDQo+ICtFRklBUEkNCj4gK0luaXRpYWxpemVJRFRTbW1TaGFkb3dTdGFjayAoDQo+ICsgIFZP SUQNCj4gKyAgKQ0KPiArew0KPiArICBJQTMyX0lEVF9HQVRFX0RFU0NSSVBUT1IgICpJZHRHYXRl Ow0KPiArDQo+ICsgIERFQlVHICgoREVCVUdfSU5GTywgIkluaXRpYWxpemVJRFRTbW1TaGFkb3dT dGFja1xuIikpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIElmIFNNTSBTaGFkb3cgU3RhY2sgaXMg ZW5hYmxlZCwgc2V0IHRoZSBJU1QgZmllbGQgb2YgIC8vIHRoZQ0KPiArIGludGVycnVwdCBnYXRl IGZvciBQYWdlIEZhdWx0IEV4Y2VwdGlvbiB0byBiZSAxICAvLyAgSWR0R2F0ZSA9DQo+ICsgKElB MzJfSURUX0dBVEVfREVTQ1JJUFRPUiAqKWdjU21pSWR0ci5CYXNlOyAgSWR0R2F0ZSArPQ0KPiAr IEVYQ0VQVF9JQTMyX1BBR0VfRkFVTFQ7DQo+ICsgIElkdEdhdGUtPkJpdHMuUmVzZXJ2ZWRfMCA9 IDE7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gSWYgU01NIFNoYWRvdyBTdGFjayBpcyBlbmFibGVk LCBzZXQgdGhlIElTVCBmaWVsZCBvZg0KPiArICAvLyB0aGUgaW50ZXJydXB0IGdhdGUgZm9yIE1h Y2hpbmUgQ2hlY2sgRXhjZXB0aW9uIHRvIGJlIDENCj4gKyAgLy8NCj4gKyAgSWR0R2F0ZSA9IChJ QTMyX0lEVF9HQVRFX0RFU0NSSVBUT1IgKilnY1NtaUlkdHIuQmFzZTsNCj4gKyAgSWR0R2F0ZSAr PSBFWENFUFRfSUEzMl9NQUNISU5FX0NIRUNLOw0KPiArICBJZHRHYXRlLT5CaXRzLlJlc2VydmVk XzAgPSAxOw0KPiArfQ0KPiArDQo+ICAvKioNCj4gICAgSW5pdGlhbGl6ZSBHZHQgZm9yIGFsbCBw cm9jZXNzb3JzLg0KPiANCj4gQEAgLTg5LDcgKzEyMCw3IEBAIEluaXRHZHQgKA0KPiAgICAgIEdk dERlc2NyaXB0b3ItPkJpdHMuQmFzZU1pZCA9IChVSU5UOCkoKFVJTlROKVRzc0Jhc2UgPj4gMTYp Ow0KPiAgICAgIEdkdERlc2NyaXB0b3ItPkJpdHMuQmFzZUhpZ2ggPSAoVUlOVDgpKChVSU5UTilU c3NCYXNlID4+IDI0KTsNCj4gDQo+IC0gICAgaWYgKEZlYXR1cmVQY2RHZXQgKFBjZENwdVNtbVN0 YWNrR3VhcmQpKSB7DQo+ICsgICAgaWYgKChGZWF0dXJlUGNkR2V0IChQY2RDcHVTbW1TdGFja0d1 YXJkKSkgfHwgKChQY2RHZXQzMg0KPiArIChQY2RDb250cm9sRmxvd0VuZm9yY2VtZW50UHJvcGVy dHlNYXNrKSAhPSAwKSAmJiBtQ2V0U3VwcG9ydGVkKSkgew0KPiAgICAgICAgLy8NCj4gICAgICAg IC8vIFNldHVwIHRvcCBvZiBrbm93biBnb29kIHN0YWNrIGFzIElTVDEgZm9yIGVhY2ggcHJvY2Vz c29yLg0KPiAgICAgICAgLy8NCj4gQEAgLTE3Nyw4ICsyMDgsMTYgQEAgSW5pdFNoYWRvd1N0YWNr ICgNCj4gDQo+ICAgIGlmICgoUGNkR2V0MzIgKFBjZENvbnRyb2xGbG93RW5mb3JjZW1lbnRQcm9w ZXJ0eU1hc2spICE9IDApICYmDQo+IG1DZXRTdXBwb3J0ZWQpIHsNCj4gICAgICBTbW1TaGFkb3dT dGFja1NpemUgPSBFRklfUEFHRVNfVE9fU0laRSAoRUZJX1NJWkVfVE9fUEFHRVMNCj4gKFBjZEdl dDMyIChQY2RDcHVTbW1TaGFkb3dTdGFja1NpemUpKSk7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBB ZGQgMSBwYWdlIGFzIGtub3duIGdvb2Qgc2hhZG93IHN0YWNrDQo+ICsgICAgLy8NCj4gKyAgICBT bW1TaGFkb3dTdGFja1NpemUgKz0gRUZJX1BBR0VTX1RPX1NJWkUgKDEpOw0KPiArDQo+ICAgICAg aWYgKEZlYXR1cmVQY2RHZXQgKFBjZENwdVNtbVN0YWNrR3VhcmQpKSB7DQo+IC0gICAgICBTbW1T aGFkb3dTdGFja1NpemUgKz0gRUZJX1BBR0VTX1RPX1NJWkUgKDIpOw0KPiArICAgICAgLy8NCj4g KyAgICAgIC8vIEFkZCBvbmUgZ3VhcmQgcGFnZSBiZXR3ZWVuIEtub3duIEdvb2QgU2hhZG93IFN0 YWNrIGFuZCBTTU0NCj4gU2hhZG93IFN0YWNrLg0KPiArICAgICAgLy8NCj4gKyAgICAgIFNtbVNo YWRvd1N0YWNrU2l6ZSArPSBFRklfUEFHRVNfVE9fU0laRSAoMSk7DQo+ICAgICAgfQ0KPiAgICAg IG1DZXRQbDBTc3AgPSAoVUlOVDMyKSgoVUlOVE4pU2hhZG93U3RhY2sgKyBTbW1TaGFkb3dTdGFj a1NpemUgLQ0KPiBzaXplb2YoVUlOVDY0KSk7DQo+ICAgICAgUGF0Y2hJbnN0cnVjdGlvblg4NiAo bVBhdGNoQ2V0UGwwU3NwLCBtQ2V0UGwwU3NwLCA0KTsgQEAgLTE4NiwzMw0KPiArMjI1LDMyIEBA IEluaXRTaGFkb3dTdGFjayAoDQo+ICAgICAgREVCVUcgKChERUJVR19JTkZPLCAiU2hhZG93U3Rh Y2sgLSAweCV4XG4iLCBTaGFkb3dTdGFjaykpOw0KPiAgICAgIERFQlVHICgoREVCVUdfSU5GTywg IiAgU21tU2hhZG93U3RhY2tTaXplIC0gMHgleFxuIiwNCj4gU21tU2hhZG93U3RhY2tTaXplKSk7 DQo+IA0KPiAtICAgIGlmIChGZWF0dXJlUGNkR2V0IChQY2RDcHVTbW1TdGFja0d1YXJkKSkgew0K PiAtICAgICAgaWYgKG1TbW1JbnRlcnJ1cHRTc3BUYWJsZXMgPT0gMCkgew0KPiAtICAgICAgICBt U21tSW50ZXJydXB0U3NwVGFibGVzID0gKFVJTlROKUFsbG9jYXRlWmVyb1Bvb2woc2l6ZW9mKFVJ TlQ2NCkgKg0KPiA4ICogZ1NtbUNwdVByaXZhdGUtPlNtbUNvcmVFbnRyeUNvbnRleHQuTnVtYmVy T2ZDcHVzKTsNCj4gLSAgICAgICAgQVNTRVJUIChtU21tSW50ZXJydXB0U3NwVGFibGVzICE9IDAp Ow0KPiAtICAgICAgICBERUJVRyAoKERFQlVHX0lORk8sICJtU21tSW50ZXJydXB0U3NwVGFibGVz IC0gMHgleFxuIiwNCj4gbVNtbUludGVycnVwdFNzcFRhYmxlcykpOw0KPiAtICAgICAgfQ0KPiAt DQo+IC0gICAgICAvLw0KPiAtICAgICAgLy8gVGhlIGhpZ2hlc3QgYWRkcmVzcyBvbiB0aGUgc3Rh Y2sgKDB4RkY4KSBpcyBhIHNhdmUtcHJldmlvdXMtc3NwIHRva2VuDQo+IHBvaW50aW5nIHRvIGEg bG9jYXRpb24gdGhhdCBpcyA0MCBieXRlcyBhd2F5IC0gMHhGRDAuDQo+IC0gICAgICAvLyBUaGUg c3VwZXJ2aXNvciBzaGFkb3cgc3RhY2sgdG9rZW4gaXMganVzdCBhYm92ZSBpdCBhdCBhZGRyZXNz IDB4RkYwLg0KPiBUaGlzIGlzIHdoZXJlIHRoZSBpbnRlcnJ1cHQgU1NQIHRhYmxlIHBvaW50cy4N Cj4gLSAgICAgIC8vIFNvIHdoZW4gYW4gaW50ZXJydXB0IG9mIGV4Y2VwdGlvbiBvY2N1cnMsIHdl IGNhbiB1c2UNCj4gU0FWRVNTUC9SRVNUT1JFU1NQL0NMRUFSU1NCVVNZIGZvciB0aGUgc3VwZXJ2 aXNvciBzaGFkb3cgc3RhY2ssDQo+IC0gICAgICAvLyBkdWUgdG8gdGhlIHJlYXNvbiB0aGUgUkVU RiBpbiBTTU0gZXhjZXB0aW9uIGhhbmRsZXIgY2Fubm90IGNsZWFyIHRoZQ0KPiBCVVNZIGZsYWcg d2l0aCBzYW1lIENQTC4NCj4gLSAgICAgIC8vIChvbmx5IElSRVQgb3IgUkVURiB3aXRoIGRpZmZl cmVudCBDUEwgY2FuIGNsZWFyIEJVU1kgZmxhZykNCj4gLSAgICAgIC8vIFBsZWFzZSByZWZlciB0 byBVZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQgZm9yDQo+IHRo ZSBmdWxsIHN0YWNrIGZyYW1lIGF0IHJ1bnRpbWUuDQo+IC0gICAgICAvLw0KPiAtICAgICAgSW50 ZXJydXB0U3NwID0gKFVJTlQzMikoKFVJTlROKVNoYWRvd1N0YWNrICsgRUZJX1BBR0VTX1RPX1NJ WkUoMSkgLQ0KPiBzaXplb2YoVUlOVDY0KSk7DQo+IC0gICAgICAqKFVJTlQ2NCAqKShVSU5UTilJ bnRlcnJ1cHRTc3AgPSAoSW50ZXJydXB0U3NwIC0gc2l6ZW9mKFVJTlQ2NCkgKiA0KSB8DQo+IDB4 MjsNCj4gLSAgICAgIG1DZXRJbnRlcnJ1cHRTc3AgPSBJbnRlcnJ1cHRTc3AgLSBzaXplb2YoVUlO VDY0KTsNCj4gLQ0KPiAtICAgICAgbUNldEludGVycnVwdFNzcFRhYmxlID0gKFVJTlQzMikoVUlO VE4pKG1TbW1JbnRlcnJ1cHRTc3BUYWJsZXMgKw0KPiBzaXplb2YoVUlOVDY0KSAqIDggKiBDcHVJ bmRleCk7DQo+IC0gICAgICBJbnRlcnJ1cHRTc3BUYWJsZSA9IChVSU5UNjQgKikoVUlOVE4pbUNl dEludGVycnVwdFNzcFRhYmxlOw0KPiAtICAgICAgSW50ZXJydXB0U3NwVGFibGVbMV0gPSBtQ2V0 SW50ZXJydXB0U3NwOw0KPiAtICAgICAgUGF0Y2hJbnN0cnVjdGlvblg4NiAobVBhdGNoQ2V0SW50 ZXJydXB0U3NwLCBtQ2V0SW50ZXJydXB0U3NwLCA0KTsNCj4gLSAgICAgIFBhdGNoSW5zdHJ1Y3Rp b25YODYgKG1QYXRjaENldEludGVycnVwdFNzcFRhYmxlLA0KPiBtQ2V0SW50ZXJydXB0U3NwVGFi bGUsIDQpOw0KPiAtICAgICAgREVCVUcgKChERUJVR19JTkZPLCAibUNldEludGVycnVwdFNzcCAt IDB4JXhcbiIsDQo+IG1DZXRJbnRlcnJ1cHRTc3ApKTsNCj4gLSAgICAgIERFQlVHICgoREVCVUdf SU5GTywgIm1DZXRJbnRlcnJ1cHRTc3BUYWJsZSAtIDB4JXhcbiIsDQo+IG1DZXRJbnRlcnJ1cHRT c3BUYWJsZSkpOw0KPiArICAgIGlmIChtU21tSW50ZXJydXB0U3NwVGFibGVzID09IDApIHsNCj4g KyAgICAgIG1TbW1JbnRlcnJ1cHRTc3BUYWJsZXMgPSAoVUlOVE4pQWxsb2NhdGVaZXJvUG9vbChz aXplb2YoVUlOVDY0KSAqDQo+IDggKiBnU21tQ3B1UHJpdmF0ZS0+U21tQ29yZUVudHJ5Q29udGV4 dC5OdW1iZXJPZkNwdXMpOw0KPiArICAgICAgQVNTRVJUIChtU21tSW50ZXJydXB0U3NwVGFibGVz ICE9IDApOw0KPiArICAgICAgREVCVUcgKChERUJVR19JTkZPLCAibVNtbUludGVycnVwdFNzcFRh YmxlcyAtIDB4JXhcbiIsDQo+ICsgbVNtbUludGVycnVwdFNzcFRhYmxlcykpOw0KPiAgICAgIH0N Cj4gKw0KPiArICAgIC8vDQo+ICsgICAgLy8gVGhlIGhpZ2hlc3QgYWRkcmVzcyBvbiB0aGUgc3Rh Y2sgKDB4RkUwKSBpcyBhIHNhdmUtcHJldmlvdXMtc3NwIHRva2VuDQo+IHBvaW50aW5nIHRvIGEg bG9jYXRpb24gdGhhdCBpcyA0MCBieXRlcyBhd2F5IC0gMHhGQjguDQo+ICsgICAgLy8gVGhlIHN1 cGVydmlzb3Igc2hhZG93IHN0YWNrIHRva2VuIGlzIGp1c3QgYWJvdmUgaXQgYXQgYWRkcmVzcyAw eEZEOC4NCj4gVGhpcyBpcyB3aGVyZSB0aGUgaW50ZXJydXB0IFNTUCB0YWJsZSBwb2ludHMuDQo+ ICsgICAgLy8gU28gd2hlbiBhbiBpbnRlcnJ1cHQgb2YgZXhjZXB0aW9uIG9jY3Vycywgd2UgY2Fu IHVzZQ0KPiBTQVZFU1NQL1JFU1RPUkVTU1AvQ0xFQVJTU0JVU1kgZm9yIHRoZSBzdXBlcnZpc29y IHNoYWRvdyBzdGFjaywNCj4gKyAgICAvLyBkdWUgdG8gdGhlIHJlYXNvbiB0aGUgUkVURiBpbiBT TU0gZXhjZXB0aW9uIGhhbmRsZXIgY2Fubm90IGNsZWFyIHRoZQ0KPiBCVVNZIGZsYWcgd2l0aCBz YW1lIENQTC4NCj4gKyAgICAvLyAob25seSBJUkVUIG9yIFJFVEYgd2l0aCBkaWZmZXJlbnQgQ1BM IGNhbiBjbGVhciBCVVNZIGZsYWcpDQo+ICsgICAgLy8gUGxlYXNlIHJlZmVyIHRvIFVlZmlDcHVQ a2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NCBmb3INCj4gdGhlIGZ1bGwgc3Rh Y2sgZnJhbWUgYXQgcnVudGltZS4NCj4gKyAgICAvLyBBY2NvcmRpbmcgdG8gU0RNICh2ZXIuIDA3 NSBKdW5lIDIwMjEpLCBzaGFkb3cgc3RhY2sgc2hvdWxkIGJlIDMyDQo+IGJ5dGVzIGFsaWduZWQu DQo+ICsgICAgLy8NCj4gKyAgICBJbnRlcnJ1cHRTc3AgPSAoVUlOVDMyKSgoKFVJTlROKVNoYWRv d1N0YWNrICsgRUZJX1BBR0VTX1RPX1NJWkUoMSkNCj4gLSAoc2l6ZW9mKFVJTlQ2NCkgKiA0KSkg JiB+MHgxZik7DQo+ICsgICAgKihVSU5UNjQgKikoVUlOVE4pSW50ZXJydXB0U3NwID0gKEludGVy cnVwdFNzcCAtIHNpemVvZihVSU5UNjQpICogNCkgfA0KPiAweDI7DQo+ICsgICAgbUNldEludGVy cnVwdFNzcCA9IEludGVycnVwdFNzcCAtIHNpemVvZihVSU5UNjQpOw0KPiArDQo+ICsgICAgbUNl dEludGVycnVwdFNzcFRhYmxlID0gKFVJTlQzMikoVUlOVE4pKG1TbW1JbnRlcnJ1cHRTc3BUYWJs ZXMgKw0KPiBzaXplb2YoVUlOVDY0KSAqIDggKiBDcHVJbmRleCk7DQo+ICsgICAgSW50ZXJydXB0 U3NwVGFibGUgPSAoVUlOVDY0ICopKFVJTlROKW1DZXRJbnRlcnJ1cHRTc3BUYWJsZTsNCj4gKyAg ICBJbnRlcnJ1cHRTc3BUYWJsZVsxXSA9IG1DZXRJbnRlcnJ1cHRTc3A7DQo+ICsgICAgUGF0Y2hJ bnN0cnVjdGlvblg4NiAobVBhdGNoQ2V0SW50ZXJydXB0U3NwLCBtQ2V0SW50ZXJydXB0U3NwLCA0 KTsNCj4gKyAgICBQYXRjaEluc3RydWN0aW9uWDg2IChtUGF0Y2hDZXRJbnRlcnJ1cHRTc3BUYWJs ZSwNCj4gbUNldEludGVycnVwdFNzcFRhYmxlLCA0KTsNCj4gKyAgICBERUJVRyAoKERFQlVHX0lO Rk8sICJtQ2V0SW50ZXJydXB0U3NwIC0gMHgleFxuIiwNCj4gbUNldEludGVycnVwdFNzcCkpOw0K PiArICAgIERFQlVHICgoREVCVUdfSU5GTywgIm1DZXRJbnRlcnJ1cHRTc3BUYWJsZSAtIDB4JXhc biIsDQo+ICsgbUNldEludGVycnVwdFNzcFRhYmxlKSk7DQo+ICAgIH0NCj4gIH0NCj4gDQo+IC0t DQo+IDIuMTYuMi53aW5kb3dzLjENCj4gDQo+IA0KPiANCj4gDQo+IA0KDQo=