From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR05-VI1-obe.outbound.protection.outlook.com (EUR05-VI1-obe.outbound.protection.outlook.com [40.107.21.83]) by mx.groups.io with SMTP id smtpd.web12.5917.1612433837185882861 for ; Thu, 04 Feb 2021 02:17:18 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=utnAtGT5; spf=pass (domain: arm.com, ip: 40.107.21.83, mailfrom: sami.mujawar@arm.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pQDNDm6ky9NoOg+CPEF3JJKpneKh4yaWOO3a0KlM10M=; b=utnAtGT5ufSMFfV6MYbf8CEu68WW5bx4GJ32NnCAtmGPTDmGhw43zGaVisIErC3vQfwB4kNg5yXJXSAlFnd393waNwN6/04SWINa66/Cjr+UAWjBvedkOiU0+WQzGzb8gHqsXMTqt3lUXchAycakIuUAPJLoFPg4sDr/M0DyNA4= Received: from AS8PR05CA0018.eurprd05.prod.outlook.com (2603:10a6:20b:311::23) by AM8PR08MB5729.eurprd08.prod.outlook.com (2603:10a6:20b:1de::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3805.17; Thu, 4 Feb 2021 10:17:13 +0000 Received: from VE1EUR03FT061.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:311:cafe::42) by AS8PR05CA0018.outlook.office365.com (2603:10a6:20b:311::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3825.19 via Frontend Transport; Thu, 4 Feb 2021 10:17:13 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; edk2.groups.io; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;edk2.groups.io; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT061.mail.protection.outlook.com (10.152.19.220) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.11 via Frontend Transport; Thu, 4 Feb 2021 10:17:13 +0000 Received: ("Tessian outbound 4d8113405d55:v71"); Thu, 04 Feb 2021 10:17:12 +0000 X-CR-MTA-TID: 64aa7808 Received: from a4b9426e2148.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id F898026B-8451-4B1A-8570-850BF5F545EF.1; Thu, 04 Feb 2021 10:17:07 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id a4b9426e2148.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 04 Feb 2021 10:17:07 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d7l23LH4OI++FYKLUktBaVz3JltkxK6kL2cpY4H1tKDZJE4Oa7Tv+UknV87Js2tz16EU3LSmJzAjniulDZMbo4FpQw+wHju+sIjxEi/QoIPs3u8dCp5uURNHOHSiITdddY3nKgUlm6i29dow5S8h2F+ejqe/sgQMHbRb6azXkmWKn06Rc6ZtgWjctgtpkbYa2hAYy/sCG2yzb7JoWaOe9VRqUxVFfZB1giIcsqQsHTgpdzJd1xnuBb748Pq4w5BcYWE9ZVbHc2MG0laIhFWTSlpIEKF4iJzI+iH0ENZzme5fmc1iCO/gaBNd+MBqwBqhKfej3PJ4m6vh/oCZwY5m6A== 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-SenderADCheck; bh=pQDNDm6ky9NoOg+CPEF3JJKpneKh4yaWOO3a0KlM10M=; b=TVv5zWf+F1VZoNcVNJjd7Anv6N2kn161rbZs4weeSCnQ08zqZxTSb+KrEyqTb4Y0o2de2ju38BxH0TJpwqxgv1alK5Is/VAVWD86Zq2Pvv/kn/yZsmMbUl7q++DK90OoQSOTpWT1bxzl2or3v5pS9qG/aa99D/R7QP/G6z4dWmJ+tPNU/bJBX/qearDbUzdey3SvTyqtzmr9MHGxTXLxL9xLsYSDhBRzTaypKQwWovGq6QL4w0T3N20S80mi9xY2DkfAFSZRUTfXa4B3yIgb1+Y0qRkmC4Hha7hz8VMxa7hh7qPxh50nnbIfQ7sSeZIaGprnu5/KRKW33NU1a0pjOA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pQDNDm6ky9NoOg+CPEF3JJKpneKh4yaWOO3a0KlM10M=; b=utnAtGT5ufSMFfV6MYbf8CEu68WW5bx4GJ32NnCAtmGPTDmGhw43zGaVisIErC3vQfwB4kNg5yXJXSAlFnd393waNwN6/04SWINa66/Cjr+UAWjBvedkOiU0+WQzGzb8gHqsXMTqt3lUXchAycakIuUAPJLoFPg4sDr/M0DyNA4= Received: from DB7PR08MB3097.eurprd08.prod.outlook.com (2603:10a6:5:1d::27) by DBAPR08MB5830.eurprd08.prod.outlook.com (2603:10a6:10:1a7::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3825.23; Thu, 4 Feb 2021 10:16:56 +0000 Received: from DB7PR08MB3097.eurprd08.prod.outlook.com ([fe80::8c43:eec3:76be:9001]) by DB7PR08MB3097.eurprd08.prod.outlook.com ([fe80::8c43:eec3:76be:9001%4]) with mapi id 15.20.3805.026; Thu, 4 Feb 2021 10:16:56 +0000 From: "Sami Mujawar" To: gaoliming , Pierre Gondois , 'Leif Lindholm' , "devel@edk2.groups.io" CC: "bob.c.feng@intel.com" , 'Laszlo Ersek' , 'Michael D Kinney' , 'Andrew Fish' , nd Subject: =?UTF-8?B?UmU6IFtlZGsyLWRldmVsXSDlm57lpI06IFtQQVRDSCB2MSAxLzFdIEJhc2VUb29sczogQWxpZ24gaW5jbHVkZSBndWFyZHMgcG9saWN5?= Thread-Topic: =?utf-8?B?W2VkazItZGV2ZWxdIOWbnuWkjTogW1BBVENIIHYxIDEvMV0gQmFzZVRvb2xz?= =?utf-8?Q?:_Align_include_guards_policy?= Thread-Index: AQHW8zFMPOTxjraJW0KBx4QKGhaMnKo5HO4AgACjoACADVG7AIAAlckAgAAtemA= Date: Thu, 4 Feb 2021 10:16:56 +0000 Message-ID: References: <20210125154525.18449-1-Pierre.Gondois@arm.com> <00f201d6f381$a8dd8970$fa989c50$@byosoft.com.cn>,<20210126110744.GM1664@vanye> <006501d6fac7$3b08d9c0$b11a8d40$@byosoft.com.cn> In-Reply-To: <006501d6fac7$3b08d9c0$b11a8d40$@byosoft.com.cn> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: E471BDA65552EF4E8FD6752384137CB6.0 x-checkrecipientchecked: true Authentication-Results-Original: byosoft.com.cn; dkim=none (message not signed) header.d=none;byosoft.com.cn; dmarc=none action=none header.from=arm.com; x-originating-ip: [86.132.153.38] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 72ed06ec-e4f9-4bff-76bd-08d8c8f60a67 x-ms-traffictypediagnostic: DBAPR08MB5830:|AM8PR08MB5729: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:10000;OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: rT05F48N9CgcsU1NY2NTKz9Ak5QEI/G9P1vli7DiI6JbQL4RfZqwVlLuuFROK8jKzqnG/53k+lF0yMkHSRyX1xqJVUW4rikkk/CTOOyY0RE9WXy7vPxCCQqoqF6syhjJFGpYwfAJGYN45bGOit79zeGVPA9rDYZmUUgnW94dPV4VteyaJVxvFNo49RQ+4zsv4M93JxCsU5CHbE/e9/LgR+nrdZHn0yRCtarl0k81TIoW15rQ9NuMxaeqaCD99IaJG7YnibIdPG6xp2dOoqEJosEoXu6D/+2qocWcU9bbMIRwQnf0R6xumZhgvUYHG8Zmt3qMglQVxNxycIIhSNUFkCbzaxyk1oW91419Al0U/L0UBqImrBWGUdlSc1LyFwBa6q8o4Zb2PxjH9iLeTOeArcXz4eoxtqArEvacUrsB807ZRLkkPOz+7gyIY/rWbgTQAgMadCSm+eFpWqg2MoCbOZXZajrXp9Z6zBbqbeQadWz6e0/Ef7pT9yb/5K0HZcaR+JjVwVHHfwQiIyhQg1TI1TqjG+hZLiHYODbb4Ln+fcDfc+n4qA5HuUll+G4aYzRI0bx327BrN8WT0/K7WXODUo5hCycgQmPMRpi6ywKa4aM= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB7PR08MB3097.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(396003)(366004)(376002)(39860400002)(346002)(4326008)(224303003)(186003)(26005)(478600001)(7696005)(9686003)(54906003)(55016002)(110136005)(316002)(71200400001)(2906002)(5660300002)(52536014)(76116006)(66476007)(66556008)(64756008)(66446008)(66946007)(83380400001)(8936002)(53546011)(6506007)(966005)(86362001)(33656002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?TkJ3Q09RSE9Va1VSZkRGaWVnVkpBSW16T2J2a2dGMGlSbzc4Q0R0UFhMUkZZ?= =?utf-8?B?SU9OSkpyM1d1blB2L3RUU3o5OTBPQlZ0cHRmTUI5cXh2ekxOWERqZVNKa2tj?= =?utf-8?B?YmhLUTloVHRHeGNBOFNneHdJUUtnME9nUllDc0JKYmJYd1NEdm5RWXJUYndw?= =?utf-8?B?NTZiemZkTVY1Q1BxN0FaZzVESytaY0lkZjZYbkZhb2JDYmttQXg2aHJnMEF4?= =?utf-8?B?U3E1dUg1NnpaZU5Zd3ZLOHlaMFAzWllrV3BMdldoNkZURmdKaTNWdUJncHZX?= =?utf-8?B?MVZlcFJpZjFHMThRc1ZtbnQwNzhxOWx2aXUzZmxPNFU5Y3ArdXhBaWdoS29M?= =?utf-8?B?MEpYRGltUk8xVjExMXYvbXJ4Wm9GV2kzQVZRNUhhQlB1MUF3VmFkRFdSZmU0?= =?utf-8?B?d28zanJwaWFBTXVrUFp5TERuWE1PdnpvSG9wN2NoMU1KdHlXQ0VZaWVuaXBH?= =?utf-8?B?dzc3MldGc2plb0NUTVlRRWtrdzdaclRZVjcwWUl6ZDJnbXd5RmJWZlFLY2JX?= =?utf-8?B?MXZWUzhRYTBVcFJqM3NGSlloK3JFVWJlM0l1YTQzWDgyTjlDZE1qWmVtTnVo?= =?utf-8?B?M2JyNHc3TmdUUmJCdTBaNlN3QldJSW5ZMDVIZEtGNHMrUWlLQXZ1eXRxVXgr?= =?utf-8?B?a1ZUN0M3cG5DQ0hid3hCRStRbWJDS1FNUXdLUmJmcE1WeWhyMWtGdG5ZNHJD?= =?utf-8?B?Q0c1eFVvMjc3MjFnZUo1bzJPbkFIRGVVVzRFRGZITTNXTW4wNGJJYzBSWTll?= =?utf-8?B?R212RE9FVnFqMWt5VWVlS01WUHNLQWNJTTJoU0VyVDhyNzFLcndJd1ErRmlM?= =?utf-8?B?eFBSWjdTVko1U2tQMDZ6M2RiL2JpcklSV05jM1MrTmVzTVhMOVF6b3ZEdyta?= =?utf-8?B?aUhqUlhzQVE4UWFIZ0tvUDc2amJ1Z2pwWVNBVitGWnBvbVd0YmpQbjJnQU1u?= =?utf-8?B?ZUhoVXdqZlpwbXlSWmhvK0IzT2RyUDFLdFhFbFN0ejd4MjNkZnVZYjNCWW8x?= =?utf-8?B?ZlBSN0VrWjgxenRmeitydGxGRXNNSVQ2YVVKb3Y3UjRJRnIySUhDU1M0ZkE2?= =?utf-8?B?SmV3UHRpSEh2anFkRFdKbEJsTHRaTm5BRktwdW81TWREalp2OUhmNkZuK3hS?= =?utf-8?B?WFY5QnZTaURJcmtKemlXcXBYSi8zWXZmN3NENkJ4WXdNdTIxSTlTTC9aOVZa?= =?utf-8?B?YUtDaVlnYzE1OENiR1lYeWxSd2ZLNXVGYXFNc0trZWNxUzhxbmtkUmFmOHI1?= =?utf-8?B?dGs4ZFBKemt3ZDR6eDNxeS85N2JzWDZadlNEZk4vZVBYMCtsMkdFRW84RWlM?= =?utf-8?B?N0pSejBTTXBQOUtxS01ZQWU2b3lDWXhWeklBSzJkTUhlNlJ2czJpVkNmN092?= =?utf-8?B?Y2R4TG9aV0hqSmY1U0U3T2FXNnp1VWdMY0p5U0JGM3Urc3VrUVdmTDJXM3Zv?= =?utf-8?B?Sm1OOVc2QnR3Uk5aamNrdzZ3NkFVQ091eW9MenJ0MHQ5QXFWeEtBOXB3L205?= =?utf-8?B?ekVRVjBIbVo0Vm16VnRQS0pGZnduZUw2elpIWndubHp3NnFuVks5Q2pkdXJR?= =?utf-8?B?S1hTWlFGRnhGS0R4UVJUUktOd1Z3Mno2SWdhSjNZRkNZSUg0QzRIR0NDanFo?= =?utf-8?B?amEyck5tUEkzazVpbVY0bFNYOUJxMkh1ait3UnRlcmtUQXdGUEdUc1ZDT1BB?= =?utf-8?B?eEVuOTBHMXRHZEUvd1p5ZUM0YzgzY2ZLZ2NSeVlxcTA3UTYzWldESWxpQlg2?= =?utf-8?Q?CXld3aAKgBgFLkL5ye5VmL96guk+3sNVKB3ZK0U?= MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR08MB5830 Original-Authentication-Results: byosoft.com.cn; dkim=none (message not signed) header.d=none;byosoft.com.cn; dmarc=none action=none header.from=arm.com; Return-Path: Sami.Mujawar@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT061.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 77d8eafc-cbe5-4d17-92f4-08d8c8f60087 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ojnHe4uAnJFf0X6Iq5zt+JFOJtPDV+0psIAFg7K5T4e0EZ6q4A1wWhpcdS+0b0ers3kZj8naJh+WlatRmAUaYc+tHndAL1e9iyfzyfXfMVbVC4C/dxIlxPUJxirPqaSsjTSKm8o5ISVSqvY4auz/xLx6WmpUSG5oJHEMKSPKs0AbnYzk7nqeyLoUaezCzQVH+/QiqfWqwJXDZALJqo9/Pu3HeZOTTJrNpblss7c2ZfAIKibpAgq9hOHUY2DWLBW93n70OV7BXeVf9cpELUuFZmb+mxLFgEoDu2Ym8IZ1PgOutduTtJd95rJpTUWCODP7Icfoh6aG0UacqDfkuZgF5ClbMftNkPZAd47cLsD1WVKVseRLqVRAX8bDTFQheOJNpZJJaGOjbufzg6NRi3QaoD2Be2CZerSxT+CNiJylnuezuKe9hRi2kcAroDX0TcpSM+jrMLRvwZvZmlglPdXMAc4aa47STC+km/6bUrPTkFJhpienucMZCT6+AXrmzcs/wvcruRArewg2B1kwFmoQZ5zPMnRDgtGkHYcWmfEtpTde7XQm7tQrjtXNORqxSc2o07zXoiBgmAQf/vhFxxokjLvdzM0FarFpII7wJHrNwVw/8WGiLtHLlMxmsZeKBLl9MhnAnNurjd8O+eBbPAX6tY+XygTYRVK59cIPgwF9YXlnjbvyv/ezEVJMup6QMK3zGyn9I4sPs2EeqHlNH8numfTRj8fJlKXYXx6CXaXTtYA= X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(4636009)(346002)(136003)(376002)(39860400002)(396003)(46966006)(36840700001)(186003)(4326008)(26005)(478600001)(82740400003)(224303003)(356005)(82310400003)(6506007)(2906002)(86362001)(33656002)(53546011)(70586007)(70206006)(52536014)(966005)(36860700001)(9686003)(55016002)(83380400001)(54906003)(336012)(316002)(8936002)(110136005)(47076005)(7696005)(81166007)(5660300002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Feb 2021 10:17:13.3268 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 72ed06ec-e4f9-4bff-76bd-08d8c8f60a67 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT061.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB5729 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTGltaW5nLA0KDQpJIGFncmVlIHRoZSBjbGVhbi11cCBhY3Rpdml0eSBpcyBnb2luZyB0byBi ZSBhIGh1Z2UgdGFzayBhbmQgY2FuIGJlIGRvbmUgbGF0ZXIuIE1heWJlIGEgc2NyaXB0IGNvdWxk IGhlbHAgaW4gdGhpcyBlZmZvcnQuDQpBbHNvLCB0aGlzIHBhdGNoIHdpbGwgcHJldmVudCBuZXcg Y29kZSBmcm9tIGRldmlhdGluZyBmcm9tIHRoZSBjb2Rpbmcgc3RhbmRhcmQuDQoNClJlZ2FyZHMs DQoNClNhbWkgTXVqYXdhcg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogZ2Fv bGltaW5nIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+IA0KU2VudDogMDQgRmVicnVhcnkgMjAy MSAwNzoyOCBBTQ0KVG86IFBpZXJyZSBHb25kb2lzIDxQaWVycmUuR29uZG9pc0Bhcm0uY29tPjsg J0xlaWYgTGluZGhvbG0nIDxsZWlmQG51dmlhaW5jLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlv DQpDYzogYm9iLmMuZmVuZ0BpbnRlbC5jb207IFNhbWkgTXVqYXdhciA8U2FtaS5NdWphd2FyQGFy bS5jb20+OyAnTGFzemxvIEVyc2VrJyA8bGVyc2VrQHJlZGhhdC5jb20+OyAnTWljaGFlbCBEIEtp bm5leScgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgJ0FuZHJldyBGaXNoJyA8YWZpc2hA YXBwbGUuY29tPg0KU3ViamVjdDog5Zue5aSNOiBbZWRrMi1kZXZlbF0g5Zue5aSNOiBbUEFUQ0gg djEgMS8xXSBCYXNlVG9vbHM6IEFsaWduIGluY2x1ZGUgZ3VhcmRzIHBvbGljeQ0KDQpQaWVycmU6 DQogIEkgZ2V0IExlaWYgcG9pbnQuIEkgYWxzbyBzZWUgY2xhbmcgd2FybmluZyBodHRwczovL2Ns YW5nLmxsdm0ub3JnL2RvY3MvRGlhZ25vc3RpY3NSZWZlcmVuY2UuaHRtbCN3cmVzZXJ2ZWQtaWQt bWFjcm8NCg0KICBJIGFncmVlIHRoZSBjb21waWxlciBtYXkgcmVzZXJ2ZSB0aGUgbWFjcm8gc3Rh cnRpbmcgd2l0aCBfIHByZWZpeC4gQnV0IHNvIGZhciwgSSBkb24ndCBnZXQgYW55IGVycm9yIHJl cG9ydCB0aGF0IHRoZSBtYWNybyBjb25mbGljdCB3aXRoIHRoZSBjb21waWxlciByZXNlcnZlZCBt YWNyb3MuIFNvLCBJIGRvbid0IHRoaW5rIHRoaXMgY2hhbmdlIGlzIHVyZ2VudC4gDQoNCiAgSSB3 b3VsZCBsaWtlIHRvIGFncmVlIHRvIGFkZCB0aGlzIEVDQyBjaGVja2VyLiBCdXQsIHRoZSBjbGVh biB1cCB0byB0aGUgZXhpc3RpbmcgY29kaW5nIGNhbiBiZSBwbGFubmVkIGxhdGVyLg0KDQpUaGFu a3MNCkxpbWluZw0KPiAtLS0tLemCruS7tuWOn+S7ti0tLS0tDQo+IOWPkeS7tuS6ujogUGllcnJl IEdvbmRvaXMgPFBpZXJyZS5Hb25kb2lzQGFybS5jb20+DQo+IOWPkemAgeaXtumXtDogMjAyMeW5 tDLmnIg05pelIDY6MzINCj4g5pS25Lu25Lq6OiBMZWlmIExpbmRob2xtIDxsZWlmQG51dmlhaW5j LmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvOw0KPiBnYW9saW1pbmdAYnlvc29mdC5jb20uY24N Cj4g5oqE6YCBOiBib2IuYy5mZW5nQGludGVsLmNvbTsgU2FtaSBNdWphd2FyIDxTYW1pLk11amF3 YXJAYXJtLmNvbT47DQo+ICdMYXN6bG8gRXJzZWsnIDxsZXJzZWtAcmVkaGF0LmNvbT47ICdNaWNo YWVsIEQgS2lubmV5Jw0KPiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyAnQW5kcmV3IEZp c2gnIDxhZmlzaEBhcHBsZS5jb20+DQo+IOS4u+mimDogUmU6IFtlZGsyLWRldmVsXSDlm57lpI06 IFtQQVRDSCB2MSAxLzFdIEJhc2VUb29sczogQWxpZ24gaW5jbHVkZSBndWFyZHMNCj4gcG9saWN5 DQo+IA0KPiBIZWxsbywNCj4gSSB3YXMgd29uZGVyaW5nIGlmIHRoZXJlIGhhZCBiZWVuIGFuIGFn cmVlbWVudCBvbiBob3cgdG8gcHJvY2VlZC4NCj4gRm9yIHJlZmVyZW5jZSwgdGhlIGZpcnN0IG1l c3NhZ2VzIGFyZSBhdDoNCj4gaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL3RvcGljLzgw MTA2NDg4DQo+IA0KPiBSZWdhcmRzLA0KPiBQaWVycmUNCj4gDQo+IA0KPiBGcm9tOiBMZWlmIExp bmRob2xtIDxsZWlmQG51dmlhaW5jLmNvbT4NCj4gU2VudDogVHVlc2RheSwgSmFudWFyeSAyNiwg MjAyMSAxMTowNyBBTQ0KPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3Jv dXBzLmlvPjsNCj4gZ2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuIDxnYW9saW1pbmdAYnlvc29mdC5j b20uY24+DQo+IENjOiBQaWVycmUgR29uZG9pcyA8UGllcnJlLkdvbmRvaXNAYXJtLmNvbT47IGJv Yi5jLmZlbmdAaW50ZWwuY29tDQo+IDxib2IuYy5mZW5nQGludGVsLmNvbT47IFNhbWkgTXVqYXdh ciA8U2FtaS5NdWphd2FyQGFybS5jb20+OyAnTGFzemxvDQo+IEVyc2VrJyA8bGVyc2VrQHJlZGhh dC5jb20+OyAnTWljaGFlbCBEIEtpbm5leScNCj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t PjsgJ0FuZHJldyBGaXNoJyA8YWZpc2hAYXBwbGUuY29tPg0KPiBTdWJqZWN0OiBSZTogW2VkazIt ZGV2ZWxdIOWbnuWkjTogW1BBVENIIHYxIDEvMV0gQmFzZVRvb2xzOiBBbGlnbiBpbmNsdWRlDQo+ IGd1YXJkcyBwb2xpY3kNCj4gDQo+IEhpIExpbWluZywNCj4gDQo+IElmIGl0IHdhcyBwdXJlbHkg YSBxdWVzdGlvbiBvZiBzdHlsZSwgSSB3b3VsZCBhZ3JlZSB0aGF0IHdoYXRldmVyIGlzDQo+IDcw JSB1c2VkIHNob3VsZCBiZSB0aGUgbm9ybS4gQnV0IHRoaXMgaXMgbm90IHJlYWxseSBhbiBpc3N1 ZSB1bmRlciBvdXINCj4gY29udHJvbC4NCj4gDQo+IE1hY3JvcyBzdGFydGluZyB3aXRoIGxlYWRp bmcgXyBhcmUgcmVzZXJ2ZWQgZm9yIHRvb2xjaGFpbiB1c2UuDQo+IFNvbWUgdG9vbGNoYWlucywg aS5lLiBjbGFuZywgaGF2ZSBkZWRpY2F0ZWQgd2FybmluZ3MgZm9yIHRoaXMuDQo+IA0KPiBXaGV0 aGVyIHdlIHdhbnQgdG8gZW5mb3JjZSB0aGlzIGxhemlseSAocHJldmVudCBuZXcgYWRkaXRpb25z LCBjaGFuZ2UNCj4gZXhpc3Rpbmcgb25lcyBvbiByZW5hbWUpIG9yIHdpdGggYW4gYWxsLW91dCBz ZWFyY2gtcmVwbGFjZSBpcyBhDQo+IGRpZmZlcmVudCBxdWVzdGlvbi4NCj4gDQo+IEVpdGhlciB3 YXksIHRoaXMgcGF0Y2ggc291bmRzIGxpa2UgYSB1c2VmdWwgY2hhbmdlLg0KPiBBZGRpbmcgdGhl IGNoZWNrIGZvciB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgd291bGQgYWxzbyBoZWxwIGltcHJvdmlu Zw0KPiBjb2RlIGNvbnNpc3RlbmN5Lg0KPiANCj4gLw0KPiAgICAgTGVpZg0KPiANCj4gT24gVHVl LCBKYW4gMjYsIDIwMjEgYXQgMDk6MjI6MDYgKzA4MDAsIGdhb2xpbWluZyB3cm90ZToNCj4gPiBQ aWVycmU6DQo+ID4gICBUaGVyZSBhcmUgc29tZSBkaXNjdXNzaW9uIG9uIHRoZSBzeW50YXggb2Yg dGhlIGhlYWRlciBmaWxlIG1hY3JvLiBJDQo+ID4gc3VnZ2VzdCB3ZSBhbGlnbiB0aGUgc3ludGF4 IGZpcnN0LCB0aGVuIGFkZCB0aGlzIGNoZWNrZXIgaW4gRUNDIHRvb2wuDQo+ID4NCj4gPiAgIElu IE1kZVBrZywgdGhlcmUgYXJlIDU1NSBoZWFkZXIgZmlsZXMuIDcwJSBoZWFkZXIgZmlsZXMgdXNl IHRoZSBzdHlsZQ0KPiA+IF9fQkFTRV9IX18gYXMgdGhlIGZpbGUgaGVhZGVyIG1hY3JvLiBPdGhl cnMgdXNlIHRoZSBzdHlsZSBfQlRUX0hfLg0KPiA+DQo+ID4gICBGb3IgdGhpcyBjYXNlLCBJIHdv dWxkIHByb3Bvc2UgdG8gdXBkYXRlIEVESyBJSSBDIENvZGluZyBTdGFuZGFyZHMNCj4gPiBTcGVj aWZpY2F0aW9uIHRvIGFsaWduIHRoZSBjb2RlLg0KPiA+DQo+ID4gVGhhbmtzDQo+ID4gTGltaW5n DQo+ID4gPiAtLS0tLemCruS7tuWOn+S7ti0tLS0tDQo+ID4gPiDlj5Hku7bkuro6IFBpZXJyZS5H b25kb2lzQGFybS5jb20gPFBpZXJyZS5Hb25kb2lzQGFybS5jb20+DQo+ID4gPiDlj5HpgIHml7bp l7Q6IDIwMjHlubQx5pyIMjXml6UgMjM6NDUNCj4gPiA+IOaUtuS7tuS6ujogZGV2ZWxAZWRrMi5n cm91cHMuaW87IGJvYi5jLmZlbmdAaW50ZWwuY29tOw0KPiA+ID4gZ2FvbGltaW5nQGJ5b3NvZnQu Y29tLmNuDQo+ID4gPiDmioTpgIE6IHNhbWkubXVqYXdhckBhcm0uY29tDQo+ID4gPiDkuLvpopg6 IFtQQVRDSCB2MSAxLzFdIEJhc2VUb29sczogQWxpZ24gaW5jbHVkZSBndWFyZHMgcG9saWN5DQo+ ID4gPg0KPiA+ID4gRnJvbTogUGllcnJlIEdvbmRvaXMgPFBpZXJyZS5Hb25kb2lzQGFybS5jb20+ DQo+ID4gPg0KPiA+ID4gVGhlIEVESyBJSSBDIENvZGluZyBTdGFuZGFyZHMgU3BlY2lmaWNhdGlv biBzdGF0ZXMgdGhhdDoNCj4gPiA+ICJOYW1lcyBzdGFydGluZyB3aXRoIG9uZSBvciB0d28gdW5k ZXJzY29yZXMsIHN1Y2ggYXMNCj4gPiA+IF9NQUNST19HVUFSRF9GSUxFX05BTUVfSF8sIG11c3Qg bm90IGJlIHVzZWQuIFRoZXkgYXJlDQo+ID4gPiByZXNlcnZlZCBmb3IgY29tcGlsZXIgaW1wbGVt ZW50YXRpb24uIiBbMV0NCj4gPiA+DQo+ID4gPiBUaGUgRWNjIHRvb2wgY3VycmVudGx5IGNoZWNr cyB0aGF0IHRoZSBpbmNsdWRlIGd1YXJkIGVuZCB3aXRoDQo+ID4gPiBhIHRyYWlsaW5nIHVuZGVy c2NvcmUuIFRodXMsIHRoZSBjaGVjayBhbmQgdGhlIGVycm9yIG1lc3NhZ2UNCj4gPiA+IHNob3Vs ZCBib3RoIGJlIG1vZGlmaWVkLg0KPiA+ID4NCj4gPiA+IFRoZSBuZXcgY2hlY2sgZm9yY2VzIGhh dmluZyBvbmUgc29sZSB0cmFpbGluZyB1bmRlcnNjb3JlDQo+ID4gPiBjaGFyYWN0ZXIsIGFzIHRo ZSBleGFtcGxlIGluIHRoZSBzcGVjaWZpY2F0aW9uIHNob3dzOg0KPiA+ID4gIkZJTEVfTkFNRV9I XyIgWzFdDQo+ID4gPiBUaGlzIHdvdWxkIGFsbG93IHRvIGhhdmUgbW9yZSBjb25zaXN0ZW5jeS4N Cj4gPiA+DQo+ID4gPiBbMV0gU2VjdGlvbiA1LjMuNSAiQWxsIGluY2x1ZGUgZmlsZSBjb250ZW50 cyBtdXN0IGJlIHByb3RlY3RlZA0KPiA+ID4gYnkgYSAjaW5jbHVkZSBndWFyZCI6DQo+ID4gPiBo dHRwczovL2VkazItZG9jcy5naXRib29rLmlvLw0KPiA+ID4gZWRrLWlpLWMtY29kaW5nLXN0YW5k YXJkcy1zcGVjaWZpY2F0aW9uLw0KPiA+ID4gNV9zb3VyY2VfZmlsZXMvNTNfaW5jbHVkZV9maWxl cw0KPiA+ID4NCj4gPiA+IFNpZ25lZC1vZmYtYnk6IFBpZXJyZSBHb25kb2lzIDxQaWVycmUuR29u ZG9pc0Bhcm0uY29tPg0KPiA+ID4gLS0tDQo+ID4gPiAgQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v RWNjL0NoZWNrLnB5ICAgICAgICB8IDMgKystDQo+ID4gPiAgQmFzZVRvb2xzL1NvdXJjZS9QeXRo b24vRWNjL0VjY1Rvb2xFcnJvci5weSB8IDMgKystDQo+ID4gPiAgMiBmaWxlcyBjaGFuZ2VkLCA0 IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBh L0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0VjYy9DaGVjay5weQ0KPiA+ID4gYi9CYXNlVG9vbHMv U291cmNlL1B5dGhvbi9FY2MvQ2hlY2sucHkNCj4gPiA+IGluZGV4IDYwODdhYmZhNGQ4ZC4uMTQ3 NTlkMjFmNWQ4IDEwMDY0NA0KPiA+ID4gLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vRWNj L0NoZWNrLnB5DQo+ID4gPiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9FY2MvQ2hlY2su cHkNCj4gPiA+IEBAIC0yLDYgKzIsNyBAQA0KPiA+ID4gICMgVGhpcyBmaWxlIGlzIHVzZWQgdG8g ZGVmaW5lIGNoZWNrcG9pbnRzIHVzZWQgYnkgRUNDIHRvb2wNCj4gPiA+ICAjDQo+ID4gPiAgIyBD b3B5cmlnaHQgKGMpIDIwMDggLSAyMDIwLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC48QlI+DQo+ID4gPiArIyBDb3B5cmlnaHQgKGMpIDIwMjEsIEFybSBMaW1pdGVkLiBB bGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiA+ICAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gPiAgIw0KPiA+ID4gIGZyb20gX19mdXR1cmVfXyBp bXBvcnQgYWJzb2x1dGVfaW1wb3J0DQo+ID4gPiBAQCAtMTQzOCw3ICsxNDM5LDcgQEAgY2xhc3Mg Q2hlY2sob2JqZWN0KToNCj4gPiA+ICAgICAgICAgICAgICBSZWNvcmRTZXQgPQ0KPiBFY2NHbG9i YWxEYXRhLmdEYi5UYmxGaWxlLkV4ZWMoU3FsQ29tbWFuZCkNCj4gPiA+ICAgICAgICAgICAgICBm b3IgUmVjb3JkIGluIFJlY29yZFNldDoNCj4gPiA+ICAgICAgICAgICAgICAgICAgTmFtZSA9IFJl Y29yZFsxXS5yZXBsYWNlKCcjaWZuZGVmJywgJycpLnN0cmlwKCkNCj4gPiA+IC0gICAgICAgICAg ICAgICAgaWYgTmFtZVstMV0gIT0gJ18nOg0KPiA+ID4gKyAgICAgICAgICAgICAgICBpZiBOYW1l WzBdID09ICdfJyBvciBOYW1lWy0xXSAhPSAnXycgb3IgTmFtZVstMl0gPT0NCj4gJ18nOg0KPiA+ ID4gICAgICAgICAgICAgICAgICAgICAgaWYgbm90DQo+ID4gPg0KPiBFY2NHbG9iYWxEYXRhLmdF eGNlcHRpb24uSXNFeGNlcHRpb24oRVJST1JfTkFNSU5HX0NPTlZFTlRJT05fQ0hFDQo+ID4gPiBD S19JRk5ERUZfU1RBVEVNRU5ULCBOYW1lKToNCj4gPiA+DQo+ID4gPg0KPiBFY2NHbG9iYWxEYXRh LmdEYi5UYmxSZXBvcnQuSW5zZXJ0KEVSUk9SX05BTUlOR19DT05WRU5USU9OX0NIRUNLDQo+ID4g PiBfSUZOREVGX1NUQVRFTUVOVCwgT3RoZXJNc2c9IlRoZSAjaWZuZGVmIG5hbWUgWyVzXSBkb2Vz IG5vdCBmb2xsb3cNCj4gdGhlDQo+ID4gPiBydWxlcyIgJSAoTmFtZSksIEJlbG9uZ3NUb1RhYmxl PUZpbGVUYWJsZSwgQmVsb25nc1RvSXRlbT1SZWNvcmRbMF0pDQo+ID4gPg0KPiA+ID4gZGlmZiAt LWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0VjYy9FY2NUb29sRXJyb3IucHkNCj4gPiA+ IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vRWNjL0VjY1Rvb2xFcnJvci5weQ0KPiA+ID4gaW5k ZXggMGZmM2I0MjY3NGQ0Li41OGQwNzQ5NDc3YjIgMTAwNjQ0DQo+ID4gPiAtLS0gYS9CYXNlVG9v bHMvU291cmNlL1B5dGhvbi9FY2MvRWNjVG9vbEVycm9yLnB5DQo+ID4gPiArKysgYi9CYXNlVG9v bHMvU291cmNlL1B5dGhvbi9FY2MvRWNjVG9vbEVycm9yLnB5DQo+ID4gPiBAQCAtMiw2ICsyLDcg QEANCj4gPiA+ICAjIFN0YW5kYXJkaXplZCBFcnJvciBIYW5kbGluZyBpbmZyYXN0cnVjdHVyZXMu DQo+ID4gPiAgIw0KPiA+ID4gICMgQ29weXJpZ2h0IChjKSAyMDA4IC0gMjAxOCwgSW50ZWwgQ29y cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ID4gKyMgQ29weXJpZ2h0IChj KSAyMDIxLCBBcm0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gPiAgIyBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ID4gICMNCj4g PiA+DQo+ID4gPiBAQCAtMTYxLDcgKzE2Miw3IEBAIGdFY2NFcnJvck1lc3NhZ2UgPSB7DQo+ID4g PiAgICAgIEVSUk9SX05BTUlOR19DT05WRU5USU9OX0NIRUNLX0FMTCA6ICIiLA0KPiA+ID4gICAg ICBFUlJPUl9OQU1JTkdfQ09OVkVOVElPTl9DSEVDS19ERUZJTkVfU1RBVEVNRU5UIDoNCj4gIk9u bHkNCj4gPiA+IGNhcGl0YWwgbGV0dGVycyBhcmUgYWxsb3dlZCB0byBiZSB1c2VkIGZvciAjZGVm aW5lIGRlY2xhcmF0aW9ucyIsDQo+ID4gPiAgICAgIEVSUk9SX05BTUlOR19DT05WRU5USU9OX0NI RUNLX1RZUEVERUZfU1RBVEVNRU5UIDoNCj4gIk9ubHkNCj4gPiA+IGNhcGl0YWwgbGV0dGVycyBh cmUgYWxsb3dlZCB0byBiZSB1c2VkIGZvciB0eXBlZGVmIGRlY2xhcmF0aW9ucyIsDQo+ID4gPiAt ICAgIEVSUk9SX05BTUlOR19DT05WRU5USU9OX0NIRUNLX0lGTkRFRl9TVEFURU1FTlQgOg0KPiAi VGhlDQo+ID4gPiAjaWZuZGVmIGF0IHRoZSBzdGFydCBvZiBhbiBpbmNsdWRlIGZpbGUgc2hvdWxk IHVzZSBib3RoIHByZWZpeCBhbmQgcG9zdGZpeA0KPiA+ID4gdW5kZXJzY29yZSBjaGFyYWN0ZXJz LCAnXyciLA0KPiA+ID4gKyAgICBFUlJPUl9OQU1JTkdfQ09OVkVOVElPTl9DSEVDS19JRk5ERUZf U1RBVEVNRU5UIDoNCj4gIlRoZQ0KPiA+ID4gI2lmbmRlZiBhdCB0aGUgc3RhcnQgb2YgYW4gaW5j bHVkZSBmaWxlIHNob3VsZCBoYXZlIG9uZSBwb3N0Zml4DQo+ID4gdW5kZXJzY29yZSwgYW5kDQo+ ID4gPiBubyBwcmVmaXggdW5kZXJzY29yZSBjaGFyYWN0ZXIgJ18nIiwNCj4gPiA+ICAgICAgRVJS T1JfTkFNSU5HX0NPTlZFTlRJT05fQ0hFQ0tfUEFUSF9OQU1FIDogIiIiUGF0aA0KPiBuYW1lDQo+ ID4gPiBkb2VzIG5vdCBmb2xsb3cgdGhlIHJ1bGVzOiAxLiBGaXJzdCBjaGFyYWN0ZXIgc2hvdWxk IGJlIHVwcGVyIGNhc2UgMi4gTXVzdA0KPiA+ID4gY29udGFpbiBsb3dlciBjYXNlIGNoYXJhY3Rl cnMgMy4gTm8gd2hpdGUgc3BhY2UgY2hhcmFjdGVycyIiIiwNCj4gPiA+ICAgICAgRVJST1JfTkFN SU5HX0NPTlZFTlRJT05fQ0hFQ0tfVkFSSUFCTEVfTkFNRSA6DQo+ID4gPiAiIiJWYXJpYWJsZSBu YW1lIGRvZXMgbm90IGZvbGxvdyB0aGUgcnVsZXM6IDEuIEZpcnN0IGNoYXJhY3RlciBzaG91bGQg YmUNCj4gPiB1cHBlcg0KPiA+ID4gY2FzZSAyLiBNdXN0IGNvbnRhaW4gbG93ZXIgY2FzZSBjaGFy YWN0ZXJzIDMuIE5vIHdoaXRlIHNwYWNlIGNoYXJhY3RlcnMNCj4gNC4NCj4gPiA+IEdsb2JhbCB2 YXJpYWJsZSBuYW1lIG11c3Qgc3RhcnQgd2l0aCBhICdnJyIiIiwNCj4gPiA+ICAgICAgRVJST1Jf TkFNSU5HX0NPTlZFTlRJT05fQ0hFQ0tfRlVOQ1RJT05fTkFNRSA6DQo+ID4gPiAiIiJGdW5jdGlv biBuYW1lIGRvZXMgbm90IGZvbGxvdyB0aGUgcnVsZXM6IDEuIEZpcnN0IGNoYXJhY3RlciBzaG91 bGQgYmUNCj4gPiB1cHBlcg0KPiA+ID4gY2FzZSAyLiBNdXN0IGNvbnRhaW4gbG93ZXIgY2FzZSBj aGFyYWN0ZXJzIDMuIE5vIHdoaXRlIHNwYWNlDQo+ID4gY2hhcmFjdGVycyIiIiwNCj4gPiA+IC0t DQo+ID4gPiAyLjE3LjENCj4gPg0KPiA+DQo+ID4NCj4gPg0KPiA+DQo+ID4gDQo+ID4NCj4gPg0K PiBJTVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0 dGFjaG1lbnRzIGFyZQ0KPiBjb25maWRlbnRpYWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQu IElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQsDQo+IHBsZWFzZSBub3RpZnkg dGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQgZG8gbm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0 byBhbnkNCj4gb3RoZXIgcGVyc29uLCB1c2UgaXQgZm9yIGFueSBwdXJwb3NlLCBvciBzdG9yZSBv ciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBpbiBhbnkNCj4gbWVkaXVtLiBUaGFuayB5b3UuDQoNCg0K