From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) by mx.groups.io with SMTP id smtpd.web11.12242.1655927686813103567 for ; Wed, 22 Jun 2022 12:54:47 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@hpe.com header.s=pps0720 header.b=Tx9rPv/9; spf=permerror, err=parse error for token &{10 18 %{ir}.%{v}.%{d}.spf.has.pphosted.com}: invalid domain name (domain: hpe.com, ip: 148.163.143.35, mailfrom: prvs=0172c72e1c=brian.johnson@hpe.com) Received: from pps.filterd (m0134425.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 25MJTRZG005630; Wed, 22 Jun 2022 19:51:53 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=message-id : date : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pps0720; bh=Dz6Ts3ri/bQEMtvzXqouxggXjliqaKbuBQP8lPB6emU=; b=Tx9rPv/91va+nhTH7d+dkacn53aB17GfxGEXXwo9cgVNQv4aQzKh7cbhQatFd8SxLs/k O9RnETI4/RY8vjaaO6VmOqnUHfQQrnfu81p2dsw4w1EpMwK99O0hXa2RspJPHzz9t5li AiD2R0pt/KXllTL+shocVWdPlAknl8+YAS/oaFWoQhJ+9Cgi0hbOFuvdosF0jr2+eytN LXc0Lqk22TbbwhB3etbPuPo5zdOnOaYuZPhy7Pqa+8pyuuMBrQe26VFdTlYZUq9zxsET lG2WS0jWRzOfqH96t5yYY3XcHBXF4MRDhSgVidQNtVjMasEcJ8ZbLT0TBgxDcl3jj3o1 wg== Received: from p1lg14880.it.hpe.com (p1lg14880.it.hpe.com [16.230.97.201]) by mx0b-002e3701.pphosted.com (PPS) with ESMTPS id 3gv99f89b7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 22 Jun 2022 19:51:52 +0000 Received: from p1wg14926.americas.hpqcorp.net (unknown [10.119.18.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by p1lg14880.it.hpe.com (Postfix) with ESMTPS id AE9B4800264; Wed, 22 Jun 2022 19:51:51 +0000 (UTC) Received: from p1wg14927.americas.hpqcorp.net (10.119.18.117) by p1wg14926.americas.hpqcorp.net (10.119.18.115) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.15; Wed, 22 Jun 2022 07:51:51 -1200 Received: from p1wg14926.americas.hpqcorp.net (10.119.18.115) by p1wg14927.americas.hpqcorp.net (10.119.18.117) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.15; Wed, 22 Jun 2022 07:51:50 -1200 Received: from p1wg14921.americas.hpqcorp.net (16.230.19.124) by p1wg14926.americas.hpqcorp.net (10.119.18.115) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.15 via Frontend Transport; Wed, 22 Jun 2022 07:51:50 -1200 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (192.58.206.38) by edge.it.hpe.com (16.230.19.124) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.15; Wed, 22 Jun 2022 07:51:50 -1200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lx2M02/gGDgxs+jE/EIqLC07yBv6UXkcYne5Ht/kd7stHFgSfb9id6tJ/dnb9NFHr/F+eWZyiR8bY3DYsPrNBwUi4ShAwvlvRC58+BtajMX+Bb8X4uH1IGgVOCwTsWVNWv4kshL/MQkQLHxlsreDN43KGPPRkAvucJig780BBUXs/Vk5wxfs3FXtyKsFt3zSsNnmjSr/YBSHrRAk5JN+fomORo/8fsQPZvzUuKgWsKCA/934W9h47oK3K7FcRxpUpyFacdAuIJ1itF0oM13wiSC39HDUYN9W/8Djrgnrn0jfd22jZlgb97O5Ojp442GjX5byG2h4J0/0x9+qa9YmBg== 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=KebnF11B2S7v4Jis9wE5ZPDukgb6DJv/KX41MO2+tUQ=; b=ZV/XxBiMS9aCuzNb4MZOgINcEk/9Se6KLqk8SFoTJe4sAIyoIWl3jhXnZ+h57IBcWl6zs8hJ/MRRqCdZhXr7FleBnCqVczwHgHhGwuvKlo+mxfMVHgSNKfFre4Y6eIJTcjlpT2abNCBi8JvQvvvVVIVOKRe1/Ty2Ez9O/xkiiwHzguXmzMZjYfBm4tbVwHW84JCNIOgoQc6zfrublpHO7QqDsmuesBE/y+YZ8D8qge53IxpAugR4DAikfMXUU4clSrjyeV8sBUFSrojexOd37TnYWH79pr4fw5L0bBR4nDE4T315sfJzTmtXY/6spaBSIz7kfwyQcauSVtTozFOD2Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none Received: from MW5PR84MB1354.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:303:1c0::21) by SJ0PR84MB1919.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:a03:435::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.22; Wed, 22 Jun 2022 19:51:48 +0000 Received: from MW5PR84MB1354.NAMPRD84.PROD.OUTLOOK.COM ([fe80::a8ef:95c0:f06:8b1c]) by MW5PR84MB1354.NAMPRD84.PROD.OUTLOOK.COM ([fe80::a8ef:95c0:f06:8b1c%7]) with mapi id 15.20.5373.015; Wed, 22 Jun 2022 19:51:48 +0000 Message-ID: <0b274bdc-e9dc-3808-21bb-9cf488fcd195@hpe.com> Date: Wed, 22 Jun 2022 14:51:44 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1 Subject: Re: [edk2-devel] [PATCH V1 1/1] MdeModulePkg: Add Definition of EDKII_PEI_VARIABLE_PPI To: , , "Yao, Jiewen" , "michael.kubacki@outlook.com" CC: "Wang, Jian J" , "Gao, Liming" , "Kinney, Michael D" , "Oram, Isaac W" , "Chiu, Chasel" , "Cheng, Gao" , "Zhang, Di" , "Bu, Daocheng" , "Kubacki, Michael" References: <20220610011705.5148-1-nathaniel.l.desimone@intel.com> <20220610011705.5148-2-nathaniel.l.desimone@intel.com> From: "Brian J. Johnson" Organization: HPE In-Reply-To: X-ClientProxiedBy: DM6PR07CA0118.namprd07.prod.outlook.com (2603:10b6:5:330::31) To MW5PR84MB1354.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:303:1c0::21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 20c57f18-88ff-4ded-352d-08da5488a4f5 X-MS-TrafficTypeDiagnostic: SJ0PR84MB1919:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tpKrv1/k0Wl+YydHnoFLgQyCjlNW4wnOkQFXRdkkqowhIYv1U7hLliJbCK0ADgUMVFdC6iAZG+3k/acRjYyzY/KC8Z5wQwYfvUoA83rLHV2tmYo8lzlNLsGcY6balCgRxvWU0MXumztnj/JLmkulSktilX98wqPEFNdUsvRWnOlan9E9qMqa4BavD3lf16Sl4DHztZ6eVxzsKGZmX3aSCA4NSZx+NIQXrE3sQcpawaZaOinj04Y2KaVk0Lc2WUYcwGJeLN/Ak2c3LQu/y2QtPxLmJ6Nwsm8Lv1y7Jc1Z/YkqrKTJLsDLlfyBNNNX8VzKMnMN6Z/eOf66g/5pGd34wIpV8LLryjtcvfbKvvcWArwFVg8eXF+vnx6VjWMllZV30+buzZLwbW6l6FCqa9BbOxa5PpR+FZm/+O4A0FIWwzSCj2d6ZpSxh2oyrSfj5BYBkv0aaQqLF+I/atyxIouYRuOI9/gIwts1KZdLZrRrOPbFt5c3+bGwqZwKm9RTK7xbxyeBbHAK2rGq27fgMDzKXoKCOQAqyHCIuEJnwTzs2ANKmmQi2Iy8Ss6jeQe1CeUSqWyDdYHxrykd0l9MsZShKctPRge7m274Mm9KgSbYv032TaiwtZvPkTpYXJG95HiSLk7FK5OU1kiCIUu8Bh6TULDU/R00VFKLrZIM43mn6++4pCo4h5zQR/8BU0CZ3qAxe/s03Xtv70QbCXZoxrwOwRMy1Ah0f8vMphXqClTcaxXAUNrY6u6blQNPhENC97leZimbO9eVnpiI20Z/6+qWf/v27MLXG8egoiiNcyvk6PrGG6xfMWxtJdhk4D+ZJdSmmv1ABWLERVDGxrEZiEeG2FYaQ/oY8u3n0hch/0IkL4w= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW5PR84MB1354.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230016)(39860400002)(136003)(396003)(346002)(366004)(376002)(41300700001)(2616005)(66556008)(66476007)(4326008)(186003)(53546011)(8676002)(2906002)(26005)(6512007)(6486002)(86362001)(6506007)(8936002)(31696002)(36916002)(6666004)(966005)(478600001)(7416002)(5660300002)(54906003)(45080400002)(38100700002)(31686004)(110136005)(316002)(83380400001)(36756003)(82960400001)(30864003)(66946007)(19627235002)(45980500001)(43740500002);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SDAxUklyNGViWXQ5QnVqVXRNSVdEM3l0RjZiemZrcnVwTXhZWFNzWDQyTms5?= =?utf-8?B?S0EwamhsWlBzRHo1ZXVWK25NUm9hRXl3NXZZMi9GS2hkSERhYTlsTmRBcVY1?= =?utf-8?B?OWRsdUlmazVlbGpPUUIzU2RGOGhIVjBETy90Ym0zalMyTFJxL2M2c2hPc1BQ?= =?utf-8?B?QTV2SUR1bTBpUi9NVVEwMStMWFdXbFpTQXRNVWNpOGN2cGRvd3I5czE5cnhj?= =?utf-8?B?UDRpUUp3ZjF1ZXI5WHVzaVVIQUhBNkMyTkRkVzJRWEgzYkM2SnloZ1V5d3Jz?= =?utf-8?B?S1dCYkJneDNyL2VMbXRHcDZCK3N4bU03Mi8xVHVkNzlHc0kxbHNrSmtUZDgw?= =?utf-8?B?SHhhQm5pYU9pSE9ySm90am9FdEFqb0NXWlY3Vk5rSndtc3Y5OXlzZXRYYWho?= =?utf-8?B?SGh0emZjSHhFZ0pHLy9XNlZwMVg5U2dDeUJveEtFbHhUMm9tV2VXZXF6RndX?= =?utf-8?B?cTh6OUxwTXltdHRTQ09aWk5Uc3RDa3pHMjBtU1VDeWlDQU9qUjd3djExR3RT?= =?utf-8?B?Ulhjbyt4SnZNTXFPQWtqRDBNRElLYjNDMmVnMldXZGdzM3YvSVpVa1Z5THZx?= =?utf-8?B?TmVQNHBibW43aUoxSEJJUGpFZE9Sc2U2VUErVmZ5TWNid1BZMytIYnpQTjZw?= =?utf-8?B?UWNwazJsM3ZKNEE5MmthRXFvZkVTR2wzRVJhb0EzVFlnK1pUQlo5RjN0WjJy?= =?utf-8?B?Q2kydHhBWmI4eWk3QTJHWHpJTXB5Q0huZjI2UWgyc0N3WlgxbU5yOG1BK2x1?= =?utf-8?B?OHVwQm5wWmtJSnZQelp1SmhQNUVKSmsyTEprbFVISlkzUE5uUkxlTVBqSjZx?= =?utf-8?B?RHhNc0FTWXVIT2p4ZENoN2dEandLTUUvTnhmNERDMjZoWGFlZWhML2ZQZ1NN?= =?utf-8?B?bnUzTHpSTCtlS24xdEdNVVZEUGJhTC85ckRTaUc1ZFRISnFQM242eFUvaTNY?= =?utf-8?B?OVVUNDA3ZnlQKzBYQmR4NzFldFdIYVZaS2ZVNXh3M294d3hhaW42Rk1rSVFh?= =?utf-8?B?WmVCMXBwYk1OeHZiUTZvZ090aGpGYXh5VDc4V1dRZjkxdnJ6RU5sa21DaVBX?= =?utf-8?B?Sm9OcjJEUnhtdXhCSmRkcUk4eDlpeTVhZ0grQUlrTU5OWHJCVjkzSnJ0cDBh?= =?utf-8?B?aWxPemZYOHBSMUNhQ3A0ZTgrUlpSWFNsY0VrV281eFFpcThsM3NXYVJCNDgx?= =?utf-8?B?bmR0NitHUVQ2YThuR2hKd0ZGTTdPaXkrRWJya0pLWitVeHhqTFVoMGxXL3dv?= =?utf-8?B?Q054ZVZiMzFicjA2VGxJQW1vcmlJQ3dIclJWd29mcURBOUlxTVlwQlpQQmRK?= =?utf-8?B?b3pQbjVKNXhKZnlTNVNtVCt1TGs3RzN5TkVpWGtadFk0ekp3M2prbGx1UFpB?= =?utf-8?B?KzhXaG9XL2FRL2NBaUVLWFhQSGxDL2l0bDh0eU1uUVI2Y2JMa2dneStMSEhS?= =?utf-8?B?eEk3ZTJrODA4eVFsTURlZUIzVEtVcFVOV0VlWUlKRWF4aUh6dzZ5TTRITUN0?= =?utf-8?B?Qng3c1NqdHpKOElPVThNdHUvU0k0U0FpdisyUDdUeG9KUXZMZldERXNMWWxp?= =?utf-8?B?YXFQWkthVnZ5TmFBTFZ6d3VpZGk1NFByYXE5NTU5TzRwRXNNelVza1EvdjYx?= =?utf-8?B?T2FUMWV6VFI4Ylk4WVEzNHRlSXIwUlF1c1U1VFVTUXF0K2x2L1JzbU5WcXdz?= =?utf-8?B?WnIxVGR3QjZUNWM2TGpUSzBSRklaNzdlYXZTWjF3NS9TWEtBTUFzdFpwU05Z?= =?utf-8?B?cWV5MzQ3NE1laGhoaEo0N2R3cjMrQ21rSzZQUklUeWRIaENoQXVKaTNwV0oy?= =?utf-8?B?a0N2RHZOSWZqQjUybVdxWlJoVXBWM3ZaQXNjVTdIcnByUkVkckRoSUJRd3Bj?= =?utf-8?B?bzBuWjBEZWZ3K05oVWpzbGtLek1CQkZLT0kwek5wT2RwZjgxTTRiMURTWlli?= =?utf-8?B?Y0tkSGhoempYVHF4ais4NEpIejdmTlRVbkZ4UHRvZ3JkZ3AzUjFDQ3lBQmFV?= =?utf-8?B?N0lHUnU1eDVqbzNVWlJVT0Z4b2t6VDlsam9ZVnVYZFB4cVZOdUpmU1pCTDM4?= =?utf-8?B?blpGejR6aU10K2hJcnJBZEQzZWpOakpOSGNPQ2xQcUloVThGZUVBZzJLYjg4?= =?utf-8?Q?Xln5r965Z0Cd/n8FdrDgtTikH?= X-MS-Exchange-CrossTenant-Network-Message-Id: 20c57f18-88ff-4ded-352d-08da5488a4f5 X-MS-Exchange-CrossTenant-AuthSource: MW5PR84MB1354.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2022 19:51:48.7258 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Fdmt5/zadGqb+iDgpBaloilAqygStM9g8eohzed5h0O0rRYRCTbYu1kUSe9DTVP895GdFeae0rAyWoHo+NC9iw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR84MB1919 X-OriginatorOrg: hpe.com X-Proofpoint-ORIG-GUID: EC2eN_p2ZpFSX-EYT5RoyOda9tyZyGCT X-Proofpoint-GUID: EC2eN_p2ZpFSX-EYT5RoyOda9tyZyGCT X-Proofpoint-UnRewURL: 3 URL's were un-rewritten MIME-Version: 1.0 X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-06-22_06,2022-06-22_03,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 priorityscore=1501 mlxlogscore=999 impostorscore=0 malwarescore=0 phishscore=0 suspectscore=0 clxscore=1011 mlxscore=0 adultscore=0 bulkscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2204290000 definitions=main-2206220093 Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 TmF0ZSwNCg0KRldJVyBJIHdlbGNvbWUgaGF2aW5nIGEgc3RhbmRhcmQgaW50ZXJmYWNlIHRvIHdy aXRlIEVGSSB2YXJpYWJsZXMgaW4gDQpQRUkuICBOb3QgYWxsIHBsYXRmb3JtcyBzdG9yZSB2YXJp YWJsZXMgaW4gZmxhc2gsIHNvIHRoZXkgZG9uJ3QgYWxsIGhhdmUgDQp0cmlja3kgaXNzdWVzIHdp dGggZmF1bHQtdG9sZXJhbnQgd3JpdGVzIHRvIGgvdyB3aGljaCBpcyBhbHNvIGJlaW5nIHVzZWQg DQpmb3IgY29kZSBmZXRjaGVzLiAgQW5kIHdyaXRpbmcgdmFyaWFibGVzIGVhcmx5IG1ha2VzIGl0 IHBvc3NpYmxlIHRvIA0KbW9kaWZ5IHNldHRpbmdzIGluIHJlc3BvbnNlIHRvIGgvdyBjaGFuZ2Vz IGFuZCBleHRlcm5hbCByZXF1ZXN0cywgDQp3aXRob3V0IGhhdmluZyB0byBib290IGFsbCB0aGUg d2F5IHRvIERYRSwgd3JpdGUgdGhlIHZhcmlhYmxlcywgdGhlbiANCnRyaWdnZXIgYSByZXNldC4N Cg0KQnJpYW4gSi4gSm9obnNvbg0KLS0tLS0tLS0gT3JpZ2luYWwgTWVzc2FnZSAtLS0tLS0tLQ0K RnJvbTogTmF0ZSBEZVNpbW9uZSBbbWFpbHRvOm5hdGhhbmllbC5sLmRlc2ltb25lQGludGVsLmNv bV0NClNlbnQ6IE1vbmRheSwgSnVuZSAxMywgMjAyMiwgNDozMSBQTQ0KVG86IFlhbywgSmlld2Vu IDxqaWV3ZW4ueWFvQGludGVsLmNvbT4sIGRldmVsQGVkazIuZ3JvdXBzLmlvIA0KPGRldmVsQGVk azIuZ3JvdXBzLmlvPiwgbWljaGFlbC5rdWJhY2tpQG91dGxvb2suY29tIA0KPG1pY2hhZWwua3Vi YWNraUBvdXRsb29rLmNvbT4NCkNjOiBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNv bT4sIEdhbywgTGltaW5nIA0KPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj4sIEtpbm5leSwgTWlj aGFlbCBEIA0KPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPiwgT3JhbSwgSXNhYWMgVyA8aXNh YWMudy5vcmFtQGludGVsLmNvbT4sIA0KQ2hpdSwgQ2hhc2VsIDxjaGFzZWwuY2hpdUBpbnRlbC5j b20+LCBDaGVuZywgR2FvIDxnYW8uY2hlbmdAaW50ZWwuY29tPiwgDQpaaGFuZywgRGkgPGRpLnpo YW5nQGludGVsLmNvbT4sIEJ1LCBEYW9jaGVuZyA8ZGFvY2hlbmcuYnVAaW50ZWwuY29tPiwgDQpL dWJhY2tpLCBNaWNoYWVsIDxtaWNoYWVsLmt1YmFja2lAbWljcm9zb2Z0LmNvbT4NClN1YmplY3Q6 IFtlZGsyLWRldmVsXSBbUEFUQ0ggVjEgMS8xXSBNZGVNb2R1bGVQa2c6IEFkZCBEZWZpbml0aW9u IG9mIA0KRURLSUlfUEVJX1ZBUklBQkxFX1BQSQ0KDQpIaSBKaWV3ZW4sDQoNCkkgYW0gZmluZSB3 aXRoIGRlZmVycmluZyB0aGUgc3VibWlzc2lvbiBvZiB0aGlzIHRvIGVkazIgdW50aWwgdGhlIA0K aW1wbGVtZW50YXRpb24gaXMgcmVhZHkgZm9yIHJldmlldy4gSSBqdXN0IHdhbnRlZCB0byBnZXQg ZmVlZGJhY2sgb24gdGhlIA0KQVBJIHNvIHRoYXQgb25jZSB0aGUgaW1wbGVtZW50YXRpb24gcGF0 Y2ggc2VyaWVzIGFycml2ZXMgd2Ugd2lsbCBhdCANCmxlYXN0IHRoYXQgdGhhdCBwaWVjZSBvZiB0 aGUgcmV2aWV3IGRvbmUuIEkgd291bGQgc2F5IHRoaXMgdGhyZWFkIA0KYWNoaWV2ZWQgdGhhdCBn b2FsLiBUaGFuayB5b3UgZm9yIHRoZSBwb2ludGVyIHRvIHRoZSBwcm90ZWN0ZWQgdmFyaWFibGUg DQpjb2RlLCB3ZSB3aWxsIHJldmlldyBpdCBhbmQgbWFrZSBzdXJlIHRoYXQgbm8gaXNzdWVzIHdv dWxkIGFyaXNlIGZyb20gDQp0aGUgcHJlLW1lbW9yeSBQRUkgaW1wbGVtZW50YXRpb24uDQoNClRo YW5rcywNCk5hdGUNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IFlhbywgSmll d2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NClNlbnQ6IEZyaWRheSwgSnVuZSAxMCwgMjAyMiA2 OjA5IFBNDQpUbzogRGVzaW1vbmUsIE5hdGhhbmllbCBMIDxuYXRoYW5pZWwubC5kZXNpbW9uZUBp bnRlbC5jb20+OyANCmRldmVsQGVkazIuZ3JvdXBzLmlvOyBtaWNoYWVsLmt1YmFja2lAb3V0bG9v ay5jb20NCkNjOiBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT47IEdhbywgTGlt aW5nIA0KPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IEtpbm5leSwgTWljaGFlbCBEIA0KPG1p Y2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgT3JhbSwgSXNhYWMgVyA8aXNhYWMudy5vcmFtQGlu dGVsLmNvbT47IA0KQ2hpdSwgQ2hhc2VsIDxjaGFzZWwuY2hpdUBpbnRlbC5jb20+OyBDaGVuZywg R2FvIDxnYW8uY2hlbmdAaW50ZWwuY29tPjsgDQpaaGFuZywgRGkgPGRpLnpoYW5nQGludGVsLmNv bT47IEJ1LCBEYW9jaGVuZyA8ZGFvY2hlbmcuYnVAaW50ZWwuY29tPjsgDQpLdWJhY2tpLCBNaWNo YWVsIDxtaWNoYWVsLmt1YmFja2lAbWljcm9zb2Z0LmNvbT4NClN1YmplY3Q6IFJFOiBbZWRrMi1k ZXZlbF0gW1BBVENIIFYxIDEvMV0gTWRlTW9kdWxlUGtnOiBBZGQgRGVmaW5pdGlvbiBvZiANCkVE S0lJX1BFSV9WQVJJQUJMRV9QUEkNCg0KVGhhbmtzIGZvciB0aGUgcmVzcG9uc2UuDQoNCjEpIFdo eSB3ZSBuZWVkICJlbmFibGUgVUVGSSB2YXJpYWJsZSB3cml0ZSBiZWZvcmUgcGVybWFuZW50IG1l bW9yeSBpcyANCmF2YWlsYWJsZSI/DQoNCjIpIElmIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBub3Qg cmVhZHksIEkgZG8gaGF2ZSBjb25jZXJuIHRvIGFkZCBpdCBzbyANCmVhcmx5IGluIEVES0lJLg0K SWYgSSBkb27igJl0IGhhdmUgYSBiaWcgcGljdHVyZSwgSSBhbSBub3Qgc3VyZSBob3cgdG8gcmV2 aWV3IHRoZSBjb21wbGV0ZW5lc3MuDQoNCkNhbiB3ZSBwdXQgaXQgdG8gRURLSUktc3RhZ2luZyAN CihodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazItc3RhZ2luZykgZm9yIGEgbW9tZW50 Pw0KSSBkb27igJl0IHNlZSB0aGUgbmVlZCB0byBhZGQgdGhlIGludGVyZmFjZSBub3cgZm9yIHdv cmstaW4tcHJvZ3Jlc3MgDQpmZWF0dXJlLCBzaW5jZSB0aGVyZSBpcyBubyBjb25zdW1lciBhbmQg bm8gcHJvZHVjZXIuDQoNCkFub3RoZXIgcmVhc29uIGlzIHRoYXQgSSBoYXBwZW4gdG8ga25vdyBv dGhlciBmZWF0dXJlIChpbiBFREtJSSBzdGFnZSkgDQppcyBpbXBhY3RpbmcgdmFyaWFibGUgZHJp dmVyLg0KaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyLXN0YWdpbmcvdHJlZS9Qcm90 ZWN0ZWRWYXJpYWJsZS9saWJzDQoNClBsZWFzZSBkbyBjb25zaWRlciB0aGF0IGFzIHdlbGwgLSBo b3cgdG8gd3JpdGUgYSBwcm90ZWN0ZWQgdmFyaWFibGUgaW4gDQpQRUkgcGhhc2UuDQoNClRoYW5r IHlvdQ0KWWFvIEppZXdlbg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206 IERlc2ltb25lLCBOYXRoYW5pZWwgTCA8bmF0aGFuaWVsLmwuZGVzaW1vbmVAaW50ZWwuY29tPg0K PiBTZW50OiBTYXR1cmRheSwgSnVuZSAxMSwgMjAyMiA1OjQ5IEFNDQo+IFRvOiBZYW8sIEppZXdl biA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsNCj4gbWljaGFl bC5rdWJhY2tpQG91dGxvb2suY29tDQo+IENjOiBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGlu dGVsLmNvbT47IEdhbywgTGltaW5nDQo+IDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBLaW5u ZXksIE1pY2hhZWwgRA0KPiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBPcmFtLCBJc2Fh YyBXIDxpc2FhYy53Lm9yYW1AaW50ZWwuY29tPjsNCj4gQ2hpdSwgQ2hhc2VsIDxjaGFzZWwuY2hp dUBpbnRlbC5jb20+OyBDaGVuZywgR2FvDQo+IDxnYW8uY2hlbmdAaW50ZWwuY29tPjsgWmhhbmcs IERpIDxkaS56aGFuZ0BpbnRlbC5jb20+OyBCdSwgRGFvY2hlbmcNCj4gPGRhb2NoZW5nLmJ1QGlu dGVsLmNvbT47IEt1YmFja2ksIE1pY2hhZWwNCj4gPG1pY2hhZWwua3ViYWNraUBtaWNyb3NvZnQu Y29tPg0KPiBTdWJqZWN0OiBSRTogW2VkazItZGV2ZWxdIFtQQVRDSCBWMSAxLzFdIE1kZU1vZHVs ZVBrZzogQWRkIERlZmluaXRpb24NCj4gb2YgRURLSUlfUEVJX1ZBUklBQkxFX1BQSQ0KPg0KPiBI aSBKaWV3ZW4sDQo+DQo+IFRoYW5rcyBmb3IgdGhlIGZlZWRiYWNrLCBwZXIgeW91ciBxdWVzdGlv bnM6DQo+DQo+IDEuIFRoZSBwcmltYXJ5IHVzZSBjYXNlIGZvciB0aGlzIGlzIHRvIGVuYWJsZSBV RUZJIHZhcmlhYmxlIHdyaXRlcw0KPiBiZWZvcmUgcGVybWFuZW50IG1lbW9yeSBpcyBhdmFpbGFi bGUuDQo+IDIuIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBhIHdvcmsgaW4gcHJvZ3Jlc3MuIFdlIHdp bGwgcHJvdmlkZSBpdA0KPiBzaG9ydGx5LiBBcyB0aGlzIHdpbGwgYmUgYSByYXRoZXIgbGFyZ2Ug cGF0Y2ggc2V0LCBJIHdvdWxkIGxpa2UgdG8gZ2V0DQo+IHRoaXMgcGllY2UgaW4gcGxhY2UgYmVm b3JlaGFuZCBzbyB0aGF0IHRoZSByZXZpZXdlcnMgY2FuIGZvY3VzIG9uIHRoZQ0KPiBpbXBsZW1l bnRhdGlvbiBzZXBhcmF0ZSBmcm9tIHRoZSBBUEkgZGVmaW5pdGlvbi4NCj4gMy4gTm8gaW1wYWN0 IHRvIHNlY3VyZSBib290LiBXZSBhcmUgbm90IGdvaW5nIHRvIHN1cHBvcnQgd3JpdGluZyB0bw0K PiBhdXRoZW50aWNhdGVkIHZhcmlhYmxlcyBpbiBQRUkuIEFzIG1lbnRpb25lZCBpbiB0aGUgY29t bWVudHMsIGlmIGENCj4gUEVJTSB3aXNoZXMgdG8gdXBkYXRlIGFueSBvZiB0aGUgYXV0aGVudGlj YXRlZCB2YXJpYWJsZXMgaXQgbXVzdCB1c2UNCj4gdGhlIGV4aXN0aW5nIEhPQiBtZWNoYW5pc20g dG8gaGF2ZSBhIGxhdGVyIERYRSBwaGFzZSBwZXJmb3JtIHRoZSB1cGRhdGUuDQo+IDQuIFdpdGgg cmVnYXJkIHRvIGF0b21pY2l0eSwgd2UgaGF2ZSBhIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIG9m IHRoZQ0KPiBmYXVsdCB0b2xlcmFudCB3cml0ZSBzZXJ2aWNlcyBvcGVyYXRpb25hbCBpbiBQcmUt TWVtb3J5IFBFSS4NCj4gNS4gR29vZCBwb2ludCBvbiB0aGUgUzMgcmVzdW1lLCB3ZSB3aWxsIG5l ZWQgdG8gYWRkIGFuIFNNSSB0byBoYXZlIHRoZQ0KPiB2YXJpYWJsZSBzZXJ2aWNlcyByZS1pbml0 aWFsaXplIHRoZSBtTnZWYXJpYWJsZUNhY2hlLg0KPg0KPiBIb3BlIHRoYXQgaGVscHMsDQo+IE5h dGUNCj4NCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogWWFvLCBKaWV3ZW4g PGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiBTZW50OiBGcmlkYXksIEp1bmUgMTAsIDIwMjIgOTo1 NiBBTQ0KPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IG1pY2hhZWwua3ViYWNraUBvdXRsb29r LmNvbTsgRGVzaW1vbmUsDQo+IE5hdGhhbmllbCBMIDxuYXRoYW5pZWwubC5kZXNpbW9uZUBpbnRl bC5jb20+DQo+IENjOiBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT47IEdhbywg TGltaW5nDQo+IDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBLaW5uZXksIE1pY2hhZWwgRA0K PiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBPcmFtLCBJc2FhYyBXIDxpc2FhYy53Lm9y YW1AaW50ZWwuY29tPjsNCj4gQ2hpdSwgQ2hhc2VsIDxjaGFzZWwuY2hpdUBpbnRlbC5jb20+OyBD aGVuZywgR2FvDQo+IDxnYW8uY2hlbmdAaW50ZWwuY29tPjsgWmhhbmcsIERpIDxkaS56aGFuZ0Bp bnRlbC5jb20+OyBCdSwgRGFvY2hlbmcNCj4gPGRhb2NoZW5nLmJ1QGludGVsLmNvbT47IEt1YmFj a2ksIE1pY2hhZWwNCj4gPG1pY2hhZWwua3ViYWNraUBtaWNyb3NvZnQuY29tPg0KPiBTdWJqZWN0 OiBSRTogW2VkazItZGV2ZWxdIFtQQVRDSCBWMSAxLzFdIE1kZU1vZHVsZVBrZzogQWRkIERlZmlu aXRpb24NCj4gb2YgRURLSUlfUEVJX1ZBUklBQkxFX1BQSQ0KPg0KPiBIaQ0KPg0KPiBJIGFtIGN1 cmlvdXMgd2h5IHdlIG5lZWQgdGhpcyBpbnRlcmZhY2UuIFdoeSB3ZSBuZWVkIHdyaXRlIHZhcmlh YmxlDQo+IGNhcGFiaWxpdHkgaW4gUEVJIHBoYXNlPw0KPg0KPiBXaGVyZSBpcyB0aGUgaW1wbGVt ZW50YXRpb24gb2YgdGhpcz8gSSBwcmVmZXIgdG8gc2VlIGFuIGltcGxlbWVudGF0aW9uDQo+IHN1 Ym1pdHRlZCB0b2dldGhlciB3aXRoIGhlYWRlciBmaWxlLg0KPiBGb3IgZXhhbXBsZSwgd2hhdCBp cyB0aGUgaW1wYWN0IHRvIHNlY3VyZSBib290IHJlbGF0ZWQgZmVhdHVyZSwgaG93IHRvDQo+IHdy aXRlIGF1dGggdmFyaWFibGUgaW4gUEVJLCBob3cgUEVJIHdyaXRlIHZhcmlhYmxlIGNvd29yayB3 aXRoIFNNTQ0KPiB2ZXJzaW9uIGluIFMzIHJlc3VtZSBwaGFzZSwgaG93IHRvIHN1cHBvcnQgdmFy aWFibGUgYXRvbWljaXR5LCBldGMuDQo+DQo+IFRoYW5rIHlvdQ0KPiBZYW8gSmlld2VuDQo+DQo+ DQo+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91 cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YNCj4+IE1pY2hhZWwgS3Vi YWNraQ0KPj4gU2VudDogRnJpZGF5LCBKdW5lIDEwLCAyMDIyIDEwOjAwIEFNDQo+PiBUbzogZGV2 ZWxAZWRrMi5ncm91cHMuaW87IERlc2ltb25lLCBOYXRoYW5pZWwgTA0KPj4gPG5hdGhhbmllbC5s LmRlc2ltb25lQGludGVsLmNvbT4NCj4+IENjOiBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGlu dGVsLmNvbT47IEdhbywgTGltaW5nDQo+PiA8Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuPjsgS2lu bmV5LCBNaWNoYWVsIEQNCj4+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IE9yYW0sIElz YWFjIFcNCj4+IDxpc2FhYy53Lm9yYW1AaW50ZWwuY29tPjsgQ2hpdSwgQ2hhc2VsIDxjaGFzZWwu Y2hpdUBpbnRlbC5jb20+Ow0KPj4gQ2hlbmcsIEdhbyA8Z2FvLmNoZW5nQGludGVsLmNvbT47IFpo YW5nLCBEaSA8ZGkuemhhbmdAaW50ZWwuY29tPjsNCj4+IEJ1LCBEYW9jaGVuZyA8ZGFvY2hlbmcu YnVAaW50ZWwuY29tPjsgS3ViYWNraSwgTWljaGFlbA0KPj4gPG1pY2hhZWwua3ViYWNraUBtaWNy b3NvZnQuY29tPg0KPj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggVjEgMS8xXSBN ZGVNb2R1bGVQa2c6IEFkZA0KPj4gRGVmaW5pdGlvbiBvZiBFREtJSV9QRUlfVkFSSUFCTEVfUFBJ DQo+Pg0KPj4gSXMgdGhpcyBjaGFuZ2UganVzdCBhZGRpbmcgdGhlIGludGVyZmFjZSB0byBUaWFu b2NvcmUgb3IgaXMgdGhlcmUNCj4+IGFkZGl0aW9uYWwgaW1wbGVtZW50YXRpb24gcGxhbm5lZCBh cyB3ZWxsPw0KPj4NCj4+IC0tLQ0KPj4NCj4+IEkgdGhvdWdodCB3ZSB3ZXJlIGZvbGxvd2luZyB0 aGlzIGNvbnZlbnRpb24gbm93Og0KPj4NCj4+ICIjaWZuZGVmIF9fUEVJX1ZBUklBQkxFX1BQSV9I XyIgLT4gIiNpZm5kZWYgUEVJX1ZBUklBQkxFX1BQSV9IXyINCj4+DQo+PiBTb21lIG90aGVyIGNv bW1lbnRzIGFyZSBpbmxpbmUuDQo+Pg0KPj4gUmVnYXJkcywNCj4+IE1pY2hhZWwNCj4+DQo+PiBP biA2LzkvMjAyMiA5OjE3IFBNLCBOYXRlIERlU2ltb25lIHdyb3RlOg0KPj4+IEFkZHMgZGVmaW5p dGlvbiBvZiBFREtJSV9QRUlfVkFSSUFCTEVfUFBJLCBhIHByZS1jdXJzb3IgdG8NCj4+PiBlbmFi bGluZyB2YXJpYWJsZSB3cml0ZXMgaW4gdGhlIFBFSSBlbnZpcm9ubWVudC4NCj4+Pg0KPj4+IENj OiBKaWFuIEogV2FuZyA8amlhbi5qLndhbmdAaW50ZWwuY29tPg0KPj4+IENjOiBMaW1pbmcgR2Fv IDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+DQo+Pj4gQ2M6IE1pY2hhZWwgRCBLaW5uZXkgPG1p Y2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPj4+IENjOiBJc2FhYyBPcmFtIDxpc2FhYy53Lm9y YW1AaW50ZWwuY29tPg0KPj4+IENjOiBDaGFzZWwgQ2hpdSA8Y2hhc2VsLmNoaXVAaW50ZWwuY29t Pg0KPj4+IENjOiBHYW8gQ2hlbmcgPGdhby5jaGVuZ0BpbnRlbC5jb20+DQo+Pj4gQ2M6IERpIFpo YW5nIDxkaS56aGFuZ0BpbnRlbC5jb20+DQo+Pj4gQ2M6IERhb2NoZW5nIEJ1IDxkYW9jaGVuZy5i dUBpbnRlbC5jb20+DQo+Pj4gQ2M6IE1pY2hhZWwgS3ViYWNraSA8bWljaGFlbC5rdWJhY2tpQG1p Y3Jvc29mdC5jb20+DQo+Pj4gU2lnbmVkLW9mZi1ieTogTmF0ZSBEZVNpbW9uZSA8bmF0aGFuaWVs LmwuZGVzaW1vbmVAaW50ZWwuY29tPg0KPj4+IC0tLQ0KPj4+ICAgIE1kZU1vZHVsZVBrZy9JbmNs dWRlL1BwaS9WYXJpYWJsZS5oIHwgMTg5DQo+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysr DQo+Pj4gICAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMgICAgICAgfCAgIDMgKw0KPj4+ ICAgIDIgZmlsZXMgY2hhbmdlZCwgMTkyIGluc2VydGlvbnMoKykNCj4+PiAgICBjcmVhdGUgbW9k ZSAxMDA2NDQgTWRlTW9kdWxlUGtnL0luY2x1ZGUvUHBpL1ZhcmlhYmxlLmgNCj4+Pg0KPj4+IGRp ZmYgLS1naXQgYS9NZGVNb2R1bGVQa2cvSW5jbHVkZS9QcGkvVmFyaWFibGUuaA0KPj4gYi9NZGVN b2R1bGVQa2cvSW5jbHVkZS9QcGkvVmFyaWFibGUuaA0KPj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+Pj4gaW5kZXggMDAwMDAwMDAwMC4uOTdkYzdjZWVmYQ0KPj4+IC0tLSAvZGV2L251bGwNCj4+ PiArKysgYi9NZGVNb2R1bGVQa2cvSW5jbHVkZS9QcGkvVmFyaWFibGUuaA0KPj4+IEBAIC0wLDAg KzEsMTg5IEBADQo+Pj4gKy8qKiBAZmlsZQ0KPj4+ICsgIEVES0lJIFBFSSBWYXJpYWJsZSBQcm90 b2NvbCBwcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlvbiBvZg0KPj4+ICt2YXJpYWJsZXMNCj4+DQo+ PiBbTUtdIFdhcyAiRURLSUkgUEVJIFZhcmlhYmxlIFBQSSIgaW50ZW5kZWQ/DQo+Pg0KPj4+ICsg IGludGVuZGVkIGZvciB1c2UgYXMgYSBtZWFucyB0byBzdG9yZSBkYXRhIGluIHRoZSBQRUkgZW52 aXJvbm1lbnQuDQo+Pj4gKw0KPj4+ICsgIENvcHlyaWdodCAoYykgMjAyMiwgSW50ZWwgQ29ycG9y YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPj4+ICsgIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+Pj4gKw0KPj4+ICsqKi8NCj4+PiArDQo+Pj4g KyNpZm5kZWYgX19QRUlfVkFSSUFCTEVfUFBJX0hfDQo+Pj4gKyNkZWZpbmUgX19QRUlfVkFSSUFC TEVfUFBJX0hfDQo+Pj4gKw0KPj4+ICsjZGVmaW5lIEVES0lJX1BFSV9WQVJJQUJMRV9QUElfR1VJ RCBcDQo+Pj4gKyAgeyBcDQo+Pj4gKyAgICAweGU3YjJjZDA0LCAweDRiMTQsIDB4NDRjMiwgeyAw eGI3LCAweDQ4LCAweGNlLCAweGFmLCAweDJiLA0KPj4+ICsweDY2LCAweDRhLA0KPj4gMHhiMCB9 IFwNCj4+PiArICB9DQo+Pj4gKw0KPj4+ICt0eXBlZGVmIHN0cnVjdCBfRURLSUlfUEVJX1ZBUklB QkxFX1BQSSBFREtJSV9QRUlfVkFSSUFCTEVfUFBJOw0KPj4+ICsNCj4+PiArLyoqDQo+Pj4gKyAg VGhpcyBzZXJ2aWNlIHJldHJpZXZlcyBhIHZhcmlhYmxlJ3MgdmFsdWUgdXNpbmcgaXRzIG5hbWUg YW5kIEdVSUQuDQo+Pj4gKw0KPj4+ICsgIFJlYWQgdGhlIHNwZWNpZmllZCB2YXJpYWJsZSBmcm9t IHRoZSBVRUZJIHZhcmlhYmxlIHN0b3JlLiBJZg0KPj4+ICsgdGhlIERhdGEgIGJ1ZmZlciBpcyB0 b28gc21hbGwgdG8gaG9sZCB0aGUgY29udGVudHMgb2YgdGhlDQo+Pj4gKyB2YXJpYWJsZSwgdGhl IGVycm9yIEVGSV9CVUZGRVJfVE9PX1NNQUxMIGlzIHJldHVybmVkIGFuZA0KPj4+ICsgRGF0YVNp emUgaXMgc2V0IHRvIHRoZSAgcmVxdWlyZWQgYnVmZmVyIHNpemUgdG8gb2J0YWluIHRoZSBkYXRh Lg0KPj4+ICsNCj4+PiArICBAcGFyYW1baW5dICAgICAgICBUaGlzICAgICAgICAgICAgICBBIHBv aW50ZXIgdG8gdGhpcyBpbnN0YW5jZSBvZiB0aGUNCj4+IEVES0lJX1BFSV9WQVJJQUJMRV9QUEku DQo+Pj4gKyAgQHBhcmFtW2luXSAgICAgICAgVmFyaWFibGVOYW1lICAgICAgQSBwb2ludGVyIHRv IGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyB0aGF0DQo+PiBpcyB0aGUgdmFyaWFibGUncyBuYW1l Lg0KPj4+ICsgIEBwYXJhbVtpbl0gICAgICAgIFZhcmlhYmxlR3VpZCAgICAgIEEgcG9pbnRlciB0 byBhbiBFRklfR1VJRCB0aGF0IGlzIHRoZQ0KPj4gdmFyaWFibGUncyBHVUlELiBUaGUgY29tYmlu YXRpb24gb2YNCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYXJp YWJsZUd1aWQgYW5kIFZhcmlhYmxlTmFtZSBtdXN0IGJlIHVuaXF1ZS4NCj4+PiArICBAcGFyYW1b b3V0XSAgICAgICBBdHRyaWJ1dGVzICAgICAgICBJZiBub24tTlVMTCwgb24gcmV0dXJuLCBwb2lu dHMgdG8gdGhlDQo+PiB2YXJpYWJsZSdzIGF0dHJpYnV0ZXMuDQo+Pj4gKyAgQHBhcmFtW2luLCBv dXRdICAgRGF0YVNpemUgICAgICAgICAgT24gZW50cnksIHBvaW50cyB0byB0aGUgc2l6ZSBpbiBi eXRlcyBvZiB0aGUNCj4+IERhdGEgYnVmZmVyLg0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE9uIHJldHVybiwgcG9pbnRzIHRvIHRoZQ0KPj4+ICsgc2l6ZSBvZiB0 aGUgZGF0YSByZXR1cm5lZCBpbg0KPiBEYXRhLg0KPj4+ICsgIEBwYXJhbVtvdXRdICAgICAgIERh dGEgICAgICAgICAgICAgIFBvaW50cyB0byB0aGUgYnVmZmVyIHdoaWNoIHdpbGwgaG9sZCB0aGUN Cj4+IHJldHVybmVkIHZhcmlhYmxlIHZhbHVlLg0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE1heSBiZSBOVUxMIHdpdGggYSB6ZXJvDQo+Pj4gKyBEYXRhU2l6ZSBp biBvcmRlciB0byBkZXRlcm1pbmUNCj4+IHRoZSBzaXplIG9mIHRoZQ0KPj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciBuZWVkZWQuDQo+Pj4gKw0KPj4+ICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSB3YXMgcmVh ZCBzdWNjZXNzZnVsbHkuDQo+Pj4gKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgICAg ICAgVGhlIHZhcmlhYmxlIHdhcyBub3QgZm91bmQuDQo+Pj4gKyAgQHJldHZhbCBFRklfQlVGRkVS X1RPT19TTUFMTCAgICAgICAgVGhlIERhdGFTaXplIGlzIHRvbyBzbWFsbCBmb3IgdGhlDQo+PiBy ZXN1bHRpbmcgZGF0YS4NCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBEYXRhU2l6ZSBpcyB1cGRhdGVkIHdpdGggdGhlIHNpemUgcmVxdWlyZWQgZm9yDQo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNwZWNpZmllZCB2YXJpYWJs ZS4NCj4+PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICAgICBWYXJpYWJsZU5h bWUsIFZhcmlhYmxlR3VpZCwNCj4+IERhdGFTaXplIG9yIERhdGEgaXMgTlVMTC4NCj4+PiArICBA cmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgICAgICAgICBUaGUgdmFyaWFibGUgY291bGQgbm90 IGJlIHJldHJpZXZlZA0KPj4gYmVjYXVzZSBvZiBhIGRldmljZSBlcnJvci4NCj4+PiArDQo+Pj4g KyoqLw0KPj4+ICt0eXBlZGVmDQo+Pj4gK0VGSV9TVEFUVVMNCj4+PiArKEVGSUFQSSAqRURLSUlf UEVJX0dFVF9WQVJJQUJMRSkoDQo+Pj4gKyAgSU4gQ09OU1QgIEVES0lJX1BFSV9WQVJJQUJMRV9Q UEkgICAgKlRoaXMsDQo+Pj4gKyAgSU4gQ09OU1QgIENIQVIxNiAgICAgICAgICAgICAgICAgICAg KlZhcmlhYmxlTmFtZSwNCj4+PiArICBJTiBDT05TVCAgRUZJX0dVSUQgICAgICAgICAgICAgICAg ICAqVmFyaWFibGVHdWlkLA0KPj4+ICsgIE9VVCAgICAgICBVSU5UMzIgICAgICAgICAgICAgICAg ICAgICpBdHRyaWJ1dGVzLA0KPj4NCj4+IFtNS10gQmFzZWQgb24gdGhlIGRlc2NyaXB0aW9uLCBB dHRyaWJ1dGVzIHNob3VsZCBiZSBtYXJrZWQgIk9QVElPTkFMIi4NCj4+DQo+Pj4gKyAgSU4gT1VU ICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgKkRhdGFTaXplLA0KPj4+ICsgIE9VVCAgICAg ICBWT0lEICAgICAgICAgICAgICAgICAgICAgICpEYXRhIE9QVElPTkFMDQo+Pj4gKyAgKTsNCj4+ PiArDQo+Pj4gKy8qKg0KPj4+ICsgIFJldHVybiB0aGUgbmV4dCB2YXJpYWJsZSBuYW1lIGFuZCBH VUlELg0KPj4+ICsNCj4+PiArICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1l cyB0byByZXRyaWV2ZSB0aGUNCj4+PiArIFZhcmlhYmxlTmFtZSAgYW5kIFZhcmlhYmxlR3VpZCBv ZiBhbGwgdmFyaWFibGVzIGN1cnJlbnRseQ0KPj4+ICsgYXZhaWxhYmxlIGluIHRoZQ0KPiBzeXN0 ZW0uDQo+Pj4gKyAgT24gZWFjaCBjYWxsLCB0aGUgcHJldmlvdXMgcmVzdWx0cyBhcmUgcGFzc2Vk IGludG8gdGhlDQo+Pj4gKyBpbnRlcmZhY2UsIGFuZCwgb24gcmV0dXJuLCB0aGUgaW50ZXJmYWNl IHJldHVybnMgdGhlIGRhdGEgZm9yDQo+Pj4gKyB0aGUgbmV4dCBpbnRlcmZhY2UuIFdoZW4gdGhl IGVudGlyZSB2YXJpYWJsZSBsaXN0IGhhcyBiZWVuDQo+Pj4gKyByZXR1cm5lZCwgRUZJX05PVF9G T1VORCBpcyByZXR1cm5lZC4NCj4+PiArDQo+Pg0KPj4gW01LXSBJIGtub3cgb3RoZXIgZGVzY3Jp cHRpb25zIGRvbid0IHVzdWFsbHkgaGF2ZSBpdCBidXQgaXQgd291bGQgYmUNCj4+IG5pY2UgdG8g ZGVzY3JpYmUgdGhlIGluaXRpYWwgY2FsbGluZyB2YWx1ZXMgZXhwZWN0ZWQuDQo+Pg0KPj4+ICsg IEBwYXJhbVtpbl0gICAgICAgIFRoaXMgICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGlzIGlu c3RhbmNlIG9mIHRoZQ0KPj4gRURLSUlfUEVJX1ZBUklBQkxFX1BQSS4NCj4+PiArICBAcGFyYW1b aW4sIG91dF0gICBWYXJpYWJsZU5hbWVTaXplICBPbiBlbnRyeSwgcG9pbnRzIHRvIHRoZSBzaXpl IG9mIHRoZQ0KPj4gYnVmZmVyIHBvaW50ZWQgdG8gYnkgVmFyaWFibGVOYW1lLg0KPj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIHJldHVybiwgdGhlIHNpemUgb2Yg dGhlIHZhcmlhYmxlIG5hbWUgYnVmZmVyLg0KPj4+ICsgIEBwYXJhbVtpbiwgb3V0XSAgIFZhcmlh YmxlTmFtZSAgICAgIE9uIGVudHJ5LCBhIHBvaW50ZXIgdG8gYSBudWxsLQ0KPiB0ZXJtaW5hdGVk DQo+PiBzdHJpbmcgdGhhdCBpcyB0aGUgdmFyaWFibGUncyBuYW1lLg0KPj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIHJldHVybiwgcG9pbnRzIHRvIHRoZQ0KPj4+ ICsgbmV4dCB2YXJpYWJsZSdzIG51bGwtdGVybWluYXRlZA0KPj4gbmFtZSBzdHJpbmcuDQo+Pj4g KyAgQHBhcmFtW2luLCBvdXRdICAgVmFyaWFibGVHdWlkICAgICAgT24gZW50cnksIGEgcG9pbnRl ciB0byBhbiBFRklfR1VJRCB0aGF0DQo+IGlzDQo+PiB0aGUgdmFyaWFibGUncyBHVUlELg0KPj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIHJldHVybiwgYSBwb2lu dGVyIHRvIHRoZSBuZXh0IHZhcmlhYmxlJ3MgR1VJRC4NCj4+PiArDQo+Pj4gKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlIHdhcyByZWFkIHN1Y2Nlc3Nm dWxseS4NCj4+PiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICAgICAgICBUaGUgdmFy aWFibGUgY291bGQgbm90IGJlIGZvdW5kLg0KPj4+ICsgIEByZXR2YWwgRUZJX0JVRkZFUl9UT09f U01BTEwgICAgICAgIFRoZSBWYXJpYWJsZU5hbWVTaXplIGlzIHRvbyBzbWFsbA0KPiBmb3INCj4+ IHRoZSByZXN1bHRpbmcNCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhLiBWYXJpYWJsZU5hbWVTaXplIGlzIHVwZGF0ZWQgd2l0aCB0aGUgc2l6ZQ0KPj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkIGZvciB0aGUgc3Bl Y2lmaWVkIHZhcmlhYmxlLg0KPj4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAg ICAgIFZhcmlhYmxlTmFtZSwgVmFyaWFibGVHdWlkIG9yDQo+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVOYW1lU2l6ZSBpcyBOVUxMLg0KPj4+ICsgIEBy ZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgICAgICAgIFRoZSB2YXJpYWJsZSBjb3VsZCBub3Qg YmUgcmV0cmlldmVkDQo+PiBiZWNhdXNlIG9mIGEgZGV2aWNlIGVycm9yLg0KPj4+ICsNCj4+PiAr KiovDQo+Pj4gK3R5cGVkZWYNCj4+PiArRUZJX1NUQVRVUw0KPj4+ICsoRUZJQVBJICpFREtJSV9Q RUlfR0VUX05FWFRfVkFSSUFCTEVfTkFNRSkoDQo+Pj4gKyAgSU4gQ09OU1QgIEVES0lJX1BFSV9W QVJJQUJMRV9QUEkgICAgKlRoaXMsDQo+Pj4gKyAgSU4gT1VUICAgIFVJTlROICAgICAgICAgICAg ICAgICAgICAgKlZhcmlhYmxlTmFtZVNpemUsDQo+Pj4gKyAgSU4gT1VUICAgIENIQVIxNiAgICAg ICAgICAgICAgICAgICAgKlZhcmlhYmxlTmFtZSwNCj4+PiArICBJTiBPVVQgICAgRUZJX0dVSUQg ICAgICAgICAgICAgICAgICAqVmFyaWFibGVHdWlkDQo+Pj4gKyAgKTsNCj4+PiArDQo+Pj4gKy8q Kg0KPj4+ICsgIFNldHMgdGhlIHZhbHVlIG9mIGEgdmFyaWFibGUuDQo+Pj4gKw0KPj4+ICsgIEBw YXJhbVtpbl0gICAgICAgIFRoaXMgICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGlzIGluc3Rh bmNlIG9mIHRoZQ0KPj4gRURLSUlfUEVJX1ZBUklBQkxFX1BQSS4NCj4+PiArICBAcGFyYW1baW5d ICAgICAgICBWYXJpYWJsZU5hbWUgICAgICBBIE51bGwtdGVybWluYXRlZCBzdHJpbmcgdGhhdCBp cyB0aGUgbmFtZQ0KPj4gb2YgdGhlIHZlbmRvcidzIHZhcmlhYmxlLg0KPj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVhY2ggVmFyaWFibGVOYW1lIGlzIHVuaXF1ZSBm b3IgZWFjaCBWZW5kb3JHdWlkLg0KPj4gVmFyaWFibGVOYW1lIG11c3QNCj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluIDEgb3IgbW9yZSBjaGFyYWN0ZXJz Lg0KPj4+ICsgSWYgVmFyaWFibGVOYW1lIGlzIGFuDQo+PiBlbXB0eSBzdHJpbmcsDQo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBFRklfSU5WQUxJRF9QQVJB TUVURVIgaXMgcmV0dXJuZWQuDQo+Pj4gKyAgQHBhcmFtW2luXSAgICAgICAgVmVuZG9yR3VpZCAg ICAgICAgQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHZlbmRvci4NCj4+PiArICBAcGFyYW1b aW5dICAgICAgICBBdHRyaWJ1dGVzICAgICAgICBBdHRyaWJ1dGVzIGJpdG1hc2sgdG8gc2V0IGZv ciB0aGUgdmFyaWFibGUuDQo+Pj4gKyAgQHBhcmFtW2luXSAgICAgICAgRGF0YVNpemUgICAgICAg ICAgVGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIERhdGEgYnVmZmVyLiBVbmxlc3MNCj4+IHRoZSBF RklfVkFSSUFCTEVfQVBQRU5EX1dSSVRFDQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYXR0cmlidXRlIGlzIHNldCwgYSBzaXplIG9mDQo+Pj4gKyB6ZXJvIGNhdXNl cyB0aGUgdmFyaWFibGUgdG8gYmUNCj4+IGRlbGV0ZWQuIFdoZW4gdGhlDQo+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1ZBUklBQkxFX0FQUEVORF9XUklURQ0K Pj4+ICsgYXR0cmlidXRlIGlzIHNldCwgdGhlbiBhDQo+PiBTZXRWYXJpYWJsZSgpIGNhbGwgd2l0 aCBhDQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVNpemUg b2YgemVybyB3aWxsIG5vdA0KPj4+ICsgY2F1c2UgYW55IGNoYW5nZSB0byB0aGUNCj4+IHZhcmlh YmxlIHZhbHVlLg0KPj4+ICsgIEBwYXJhbVtpbl0gICAgICAgIERhdGEgICAgICAgICAgICAgIFRo ZSBjb250ZW50cyBmb3IgdGhlIHZhcmlhYmxlLg0KPj4+ICsNCj4+PiArICBAcmV0dmFsIEVGSV9T VUNDRVNTICAgICAgICAgICAgICAgICBUaGUgZmlybXdhcmUgaGFzIHN1Y2Nlc3NmdWxseSBzdG9y ZWQgdGhlDQo+PiB2YXJpYWJsZSBhbmQgaXRzIGRhdGEgYXMNCj4+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkIGJ5IHRoZSBBdHRyaWJ1dGVzLg0KPj4+ICsg IEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgICAgIEFuIGludmFsaWQgY29tYmluYXRp b24gb2YgYXR0cmlidXRlDQo+PiBiaXRzLCBuYW1lLCBhbmQgR1VJRCB3YXMgc3VwcGxpZWQsIG9y IHRoZQ0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFTaXpl IGV4Y2VlZHMgdGhlIG1heGltdW0gYWxsb3dlZC4NCj4+PiArICBAcmV0dmFsIEVGSV9JTlZBTElE X1BBUkFNRVRFUiAgICAgICBWYXJpYWJsZU5hbWUgaXMgYW4gZW1wdHkgc3RyaW5nLg0KPj4+ICsg IEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgICAgICAgIE5vdCBlbm91Z2ggc3RvcmFnZSBp cyBhdmFpbGFibGUgdG8NCj4+IGhvbGQgdGhlIHZhcmlhYmxlIGFuZCBpdHMgZGF0YS4NCj4+PiAr ICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgICAgICAgICBUaGUgdmFyaWFibGUgY291bGQg bm90IGJlIHJldHJpZXZlZCBkdWUNCj4+IHRvIGEgaGFyZHdhcmUgZXJyb3IuDQo+Pj4gKyAgQHJl dHZhbCBFRklfV1JJVEVfUFJPVEVDVEVEICAgICAgICAgVGhlIHZhcmlhYmxlIGluIHF1ZXN0aW9u IGlzIHJlYWQtb25seS4NCj4+PiArICBAcmV0dmFsIEVGSV9XUklURV9QUk9URUNURUQgICAgICAg ICBUaGUgdmFyaWFibGUgaW4gcXVlc3Rpb24gY2Fubm90IGJlDQo+PiBkZWxldGVkLg0KPj4+ICsg IEByZXR2YWwgRUZJX1NFQ1VSSVRZX1ZJT0xBVElPTiAgICAgIFRoZSB2YXJpYWJsZSBjb3VsZCBu b3QgYmUgd3JpdHRlbg0KPiBkdWUNCj4+IHRvIEVGSV9WQVJJQUJMRV9BVVRIRU5USUNBVEVEX1dS SVRFX0FDQ0VTUywNCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv cg0KPj4gRUZJX1ZBUklBQkxFX1RJTUVfQkFTRURfQVVUSEVOVElDQVRFRF9XUklURV9BQ0NFU1Ms IG9yDQo+Pj4gKw0KPj4+ICsgRUZJX1ZBUklBQkxFX0VOSEFOQ0VEX0FVVEhFTlRJQ0FURURfQUND RVNTDQo+PiBiZWluZyBzZXQuIFdyaXRpbmcgdG8gYXV0aGVudGljYXRlZA0KPj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBpcyBub3Qgc3VwcG9ydGVk IGluIHRoZSBQRUkgZW52aXJvbm1lbnQuDQo+PiBVcGRhdGVzIHRvIGF1dGhlbnRpY2F0ZWQNCj4+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgY2FuIGJl IHJlcXVlc3RlZA0KPj4+ICsgZHVyaW5nIFBFSSB2aWEgdGhlDQo+PiBFRklfQVVUSEVOVElDQVRF RF9WQVJJQUJMRV9IT0IsIGJ1dA0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRoZXNlIHVwZGF0ZXMgd29uJ3QgYmUNCj4+PiArIHdyaXR0ZW4gdG8gbm9uLXZvbGF0 aWxlIHN0b3JhZ2UNCj4+IHVudGlsIGxhdGVyIGluIERYRS4gU2VlDQo+Pj4gKw0KPj4+ICsgTWRl TW9kdWxlUGtnL0luY2x1ZGUvR3VpZC9WYXJpYWJsZUZvcm1hdC5oIGZvcg0KPj4gbW9yZSBkZXRh aWxzIG9uDQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0FV VEhFTlRJQ0FURURfVkFSSUFCTEVfSE9CLg0KPj4NCj4+IFtNS10gSSBkaWRuJ3Qgc2VlICJFRklf QVVUSEVOVElDQVRFRF9WQVJJQUJMRV9IT0IiIG1lbnRpb25lZCBpbg0KPj4gVmFyaWFibGVGb3Jt YXQuaC4NCj4+DQo+PiBbTUtdIEl0IHNlZW1zIHRoYXQgaWYgYSBjb250cmFjdCBmb3IgcHJvZHVj aW5nIGFuZCB0aGVuIGNvbnN1bWluZw0KPj4gdGhpcyBIT0IgaXMgZ29pbmcgdG8gYmUgZGVmaW5l ZCBiZXR3ZWVuIHRoZSBIT0IgcHJvZHVjZXIgYW5kDQo+PiBjb25zdW1lciBwaGFzZSwgaXQgc2hv dWxkIGJlIGRlc2NyaWJlZCBpbiBzb21ldGhpbmcgbGlrZSB0aGUgUEkgU3BlYy4NCj4+DQo+Pj4g KyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlIHRyeWlu ZyB0byBiZSB1cGRhdGVkIG9yDQo+PiBkZWxldGVkIHdhcyBub3QgZm91bmQuDQo+Pj4gKw0KPj4+ ICsqKi8NCj4+PiArdHlwZWRlZg0KPj4+ICtFRklfU1RBVFVTDQo+Pj4gKyhFRklBUEkgKkVES0lJ X1BFSV9TRVRfVkFSSUFCTEUpKA0KPj4+ICsgIElOIENPTlNUICBFREtJSV9QRUlfVkFSSUFCTEVf UFBJICAgICpUaGlzLA0KPj4+ICsgIElOICAgICAgICBDSEFSMTYgICAgICAgICAgICAgICAgICAg ICpWYXJpYWJsZU5hbWUsDQo+Pj4gKyAgSU4gICAgICAgIEVGSV9HVUlEICAgICAgICAgICAgICAg ICAgKlZlbmRvckd1aWQsDQo+Pj4gKyAgSU4gICAgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAg ICAgQXR0cmlidXRlcywNCj4+PiArICBJTiAgICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAg ICBEYXRhU2l6ZSwNCj4+PiArICBJTiAgICAgICAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAq RGF0YQ0KPj4+ICsgICk7DQo+Pj4gKw0KPj4+ICsvKioNCj4+PiArICBSZXR1cm5zIGluZm9ybWF0 aW9uIGFib3V0IHRoZSBVRUZJIHZhcmlhYmxlcy4NCj4+PiArDQo+Pj4gKyAgQHBhcmFtW2luXSAg ICAgICAgVGhpcyAgICAgICAgICAgICAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoaXMgaW5z dGFuY2Ugb2YgdGhlDQo+PiBFREtJSV9QRUlfVkFSSUFCTEVfUFBJLg0KPj4+ICsgIEBwYXJhbVtp bl0gICAgICAgIEF0dHJpYnV0ZXMgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZXMgYml0bWFz ayB0byBzcGVjaWZ5IHRoZSB0eXBlDQo+PiBvZiB2YXJpYWJsZXMgb24NCj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCB0byByZXR1cm4g aW5mb3JtYXRpb24uDQo+Pj4gKyAgQHBhcmFtW291dF0gICAgICAgTWF4aW11bVZhcmlhYmxlU3Rv cmFnZVNpemUgICAgT24gb3V0cHV0IHRoZSBtYXhpbXVtDQo+PiBzaXplIG9mIHRoZSBzdG9yYWdl IHNwYWNlDQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYXZhaWxhYmxlIGZvcg0KPj4+ICsgdGhlIEVGSSB2YXJpYWJsZXMgYXNzb2NpYXRlZCB3 aXRoDQo+IHRoZQ0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGF0dHJpYnV0ZXMgc3BlY2lmaWVkLg0KPj4+ICsgIEBwYXJhbVtvdXRdICAgICAg IFJlbWFpbmluZ1ZhcmlhYmxlU3RvcmFnZVNpemUgIFJldHVybnMgdGhlIHJlbWFpbmluZw0KPiBz aXplDQo+PiBvZiB0aGUgc3RvcmFnZSBzcGFjZQ0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSBmb3INCj4+PiArIHRoZSBFRkkg dmFyaWFibGVzIGFzc29jaWF0ZWQgd2l0aA0KPiB0aGUNCj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHNwZWNpZmllZC4NCj4+ PiArICBAcGFyYW1bb3V0XSAgICAgICBNYXhpbXVtVmFyaWFibGVTaXplICAgICAgICAgICBSZXR1 cm5zIHRoZSBtYXhpbXVtIHNpemUgb2YNCj4+IHRoZSBpbmRpdmlkdWFsIEVGSQ0KPj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcw0K Pj4+ICsgYXNzb2NpYXRlZCB3aXRoIHRoZSBhdHRyaWJ1dGVzDQo+IHNwZWNpZmllZC4NCj4+PiAr DQo+Pj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VmFsaWQgYW5zd2VyIHJldHVybmVkLg0KPj4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1F VEVSICAgICAgICAgICAgICAgICAgIEFuIGludmFsaWQgY29tYmluYXRpb24gb2YNCj4+IGF0dHJp YnV0ZSBiaXRzIHdhcyBzdXBwbGllZA0KPj4+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAg ICAgICAgICAgICAgICAgICAgICAgIFRoZSBhdHRyaWJ1dGUgaXMgbm90IHN1cHBvcnRlZA0KPiBv bg0KPj4gdGhpcyBwbGF0Zm9ybSwgYW5kIHRoZQ0KPj4+ICsNCj4+PiArIE1heGltdW1WYXJpYWJs ZVN0b3JhZ2VTaXplLA0KPj4+ICsNCj4+PiArIFJlbWFpbmluZ1ZhcmlhYmxlU3RvcmFnZVNpemUs DQo+PiBNYXhpbXVtVmFyaWFibGVTaXplDQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYXJlIHVuZGVmaW5lZC4NCj4+PiArDQo+Pj4gKyoqLw0K Pj4+ICt0eXBlZGVmDQo+Pj4gK0VGSV9TVEFUVVMNCj4+PiArKEVGSUFQSSAqRURLSUlfUEVJX1FV RVJZX1ZBUklBQkxFX0lORk8pKA0KPj4+ICsgIElOIENPTlNUICBFREtJSV9QRUlfVkFSSUFCTEVf UFBJICAgICpUaGlzLA0KPj4+ICsgIElOICAgICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAg IEF0dHJpYnV0ZXMsDQo+Pj4gKyAgT1VUICAgICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAg Kk1heGltdW1WYXJpYWJsZVN0b3JhZ2VTaXplLA0KPj4+ICsgIE9VVCAgICAgICBVSU5UNjQgICAg ICAgICAgICAgICAgICAgICpSZW1haW5pbmdWYXJpYWJsZVN0b3JhZ2VTaXplLA0KPj4+ICsgIE9V VCAgICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICpNYXhpbXVtVmFyaWFibGVTaXplDQo+ Pj4gKyAgKTsNCj4+PiArDQo+Pj4gKy8vLw0KPj4+ICsvLy8gUEVJIFZhcmlhYmxlIFByb3RvY29s IGlzIGludGVuZGVkIGZvciB1c2UgYXMgYSBtZWFucw0KPj4NCj4+IFtNS10gV2FzICJQRUkgVmFy aWFibGUgUFBJIiBpbnRlbmRlZD8NCj4+DQo+Pj4gKy8vLyB0byBzdG9yZSBkYXRhIGluIHRoZSBQ RUkgZW52aXJvbm1lbnQuDQo+Pj4gKy8vLw0KPj4+ICtzdHJ1Y3QgX0VES0lJX1BFSV9WQVJJQUJM RV9QUEkgew0KPj4+ICsgIEVES0lJX1BFSV9HRVRfVkFSSUFCTEUgICAgICAgICAgICBHZXRWYXJp YWJsZTsNCj4+PiArICBFREtJSV9QRUlfR0VUX05FWFRfVkFSSUFCTEVfTkFNRSAgR2V0TmV4dFZh cmlhYmxlTmFtZTsNCj4+PiArICBFREtJSV9QRUlfU0VUX1ZBUklBQkxFICAgICAgICAgICAgU2V0 VmFyaWFibGU7DQo+Pj4gKyAgRURLSUlfUEVJX1FVRVJZX1ZBUklBQkxFX0lORk8gICAgIFF1ZXJ5 VmFyaWFibGVJbmZvOw0KPj4+ICt9Ow0KPj4+ICsNCj4+PiArZXh0ZXJuIEVGSV9HVUlEICBnRWRr aWlQZWlWYXJpYWJsZVBwaUd1aWQ7DQo+Pj4gKw0KPj4+ICsjZW5kaWYNCj4+PiBkaWZmIC0tZ2l0 IGEvTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4+IGIvTWRlTW9kdWxlUGtnL01kZU1v ZHVsZVBrZy5kZWMNCj4+PiBpbmRleCAyYmNiOWY5NDUzLi40ZjRjNDhiODFmIDEwMDY0NA0KPj4+ IC0tLSBhL01kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+Pj4gKysrIGIvTWRlTW9kdWxl UGtnL01kZU1vZHVsZVBrZy5kZWMNCj4+PiBAQCAtNTEzLDYgKzUxMyw5IEBADQo+Pj4gICAgICBn RWRraWlQZWlDYXBzdWxlT25EaXNrUHBpR3VpZCAgICAgICAgICAgICA9IHsgMHg3MWE5ZWE2MSwg MHg1YTM1LCAweDRhNWQsDQo+PiB7IDB4YWMsIDB4ZWYsIDB4OWMsIDB4ZjgsIDB4NmQsIDB4NmQs IDB4NjcsIDB4ZTAgfSB9DQo+Pj4gICAgICBnRWRraWlQZWlCb290SW5DYXBzdWxlT25EaXNrTW9k ZVBwaUd1aWQgICA9IHsgMHhiMDhhMTFlNCwgMHhlMmI3LA0KPj4gMHg0Yjc1LCB7IDB4YjUsIDB4 MTUsIDB4YWYsIDB4NjEsIDB4NiwgMHg2OCwgMHhiZiwgMHhkMSAgfSB9DQo+Pj4NCj4+PiArICAj IyBJbmNsdWRlL1BwaS9WYXJpYWJsZS5oDQo+Pj4gKyAgZ0Vka2lpUGVpVmFyaWFibGVQcGlHdWlk ICAgICAgICAgICAgICAgICAgPSB7IDB4ZTdiMmNkMDQsIDB4NGIxNCwgMHg0NGMyLCB7IDB4Yjcs DQo+PiAweDQ4LCAweGNlLCAweGFmLCAweDJiLCAweDY2LCAweDRhLCAweGIwIH0gfQ0KPj4+ICsN Cj4+PiAgICBbUHJvdG9jb2xzXQ0KPj4+ICAgICAgIyMgTG9hZCBGaWxlIHByb3RvY29sIHByb3Zp ZGVzIGNhcGFiaWxpdHkgdG8gbG9hZCBhbmQgdW5sb2FkDQo+Pj4gRUZJIGltYWdlIGludG8NCj4+ IG1lbW9yeSBhbmQgZXhlY3V0ZSBpdC4NCj4+PiAgICAgICMgIEluY2x1ZGUvUHJvdG9jb2wvTG9h ZFBlMzJJbWFnZS5oDQo+Pg0KPj4NCj4+DQo+Pg0KDQoNCg0KDQoNCg0KDQoNCi0tIA0KDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnJpYW4NCg0KLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCg0KICAgIk5vdCB0byBmaW5kIGV2ZW4gbW9yZSB3YXlzIG9mIHNhdmluZyB0aW1l LCBidXQgdG8gbG9vayBmb3Igd2F5cyB0bw0KICAgIHNwZW5kIGl0Ig0KICAgICAgICAtLSBUaGUg c2VjcmV0IHRvICJjZWxlYnJhdGluZyB0aGUgc2lkZWxpbmVzIG9mIGxpZmUiIC0gQWRhaXIgTGFy YQ0KDQo=