From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id 57DDE3856DCF for ; Fri, 22 Apr 2022 15:26:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 57DDE3856DCF Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 23MCc8Fv019231; Fri, 22 Apr 2022 15:26:13 GMT Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com with ESMTP id 3ffmk2y1d6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 22 Apr 2022 15:26:13 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 23MFFuIr033815; Fri, 22 Apr 2022 15:26:12 GMT Received: from nam02-sn1-obe.outbound.protection.outlook.com (mail-sn1anam02lp2045.outbound.protection.outlook.com [104.47.57.45]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com with ESMTP id 3ffm8dr4aj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 22 Apr 2022 15:26:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GTDj6jq30jF95HhG96GOFpaWiP4qFoFFV61tzLU5aOreE8h7rVHrVvzTtnp6lzdmU97JmuKcAdbLNNSrdce6PhxDmBNzmqJ++4On+V5vu/ZGhUrF5WrLd7MScBD4VHTQVqI9VwSnDlpMG/poDO93lejuOxXa9ig4Ix/nVkXv4WbDMKun5MMAAf3URyrpavbAOEfLQS4M6urAyE+WKq7bfjM86/KZxd/+x4lPcZbwBaWG2ZBKQ58qLkQX/Qcz9fFETO+iL1XVtUsQQozxUEYYzX+d1TPcGUxd7T1i+M3kO2Nutb3dQtSr0Bq+2DEP7b1T42OrveglisqTed+QpiCvVQ== 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=9EGfFF38Wnk3wFHFEYURu+xwjQuYghrxHU9XieFfDSo=; b=j6btvkYh7wZEPc/Qo+CSv8N9DHhTDTlg3laAYK6pZ3If4KyK904Ge4rqQvvJZb/3UytL1HMNDNI68VIexNPGC32r6Xtsg4LHFYocbtbiGw7/8P2n1J1R3wqhykoStzx8/HjxrrCjD5ZReh+q+2Hq5bPUUZ+32+OU1MtlYKYL8kQV2336/QUPSYd5cQd2chPvmY1jDf2ywN+k8fSrJT2LV3p8S/S5RHAfF3woJM3HkcyIFAOe3vwskiDJQK9o9vlc/r5lINhrKrhrrm+4Cv+2FndPsWkUOEILQF/u0B06kQtKxkqwPRuixZWB3Y7n6nriItCNOZjWaMdgpRErTwuoOQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none Received: from CH2PR10MB4344.namprd10.prod.outlook.com (2603:10b6:610:af::19) by CH0PR10MB5099.namprd10.prod.outlook.com (2603:10b6:610:ca::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.15; Fri, 22 Apr 2022 15:26:10 +0000 Received: from CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::2143:b691:57c5:7643]) by CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::2143:b691:57c5:7643%9]) with mapi id 15.20.5186.015; Fri, 22 Apr 2022 15:26:10 +0000 From: Qing Zhao To: Richard Biener CC: Jakub Jelinek , "gcc-patches@gcc.gnu.org" Subject: Re: [PATCH] fold, simplify-rtx: Punt on non-representable floating point constants [PR104522] Thread-Topic: [PATCH] fold, simplify-rtx: Punt on non-representable floating point constants [PR104522] Thread-Index: AQHYIlKOS0fatIe5k0SwLwpl2CQRPqyUze0AgFkR+ACAAG/9gIABBCWAgAjSRACAANqOAIAAWnWAgAD9pgCAAhz7gA== Date: Fri, 22 Apr 2022 15:26:10 +0000 Message-ID: <76198A1E-D02D-4615-9B55-705B728AA174@oracle.com> References: <20220215095804.GL2646553@tucnak> <6685073D-CCC0-404E-82D1-0A3009AD3FC0@oracle.com> <06744640-90E7-413B-9EEB-B698C9D74959@oracle.com> <08E8178A-CE80-4E62-A05D-9DA972275315@oracle.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3608.120.23.2.7) x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b9300304-26ba-4981-1379-08da24746e00 x-ms-traffictypediagnostic: CH0PR10MB5099: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: 7L8MDV6gBhx/J8BaB+vdpR4Ajqpw4CrK1h8AMP00llJYgoVaAyY2Os4TgSMXknYHiHLk9I4F/YcPOd1RlFYSKqDy1M4gzAZz7n57I9At6/K0JnUhKY3CJxaT+twOWMOI8WnA48AaXouIBV3bq0beGQXVe/LR8eyZp24nM1lDTDz/7+0PMZ46zd+NOyG9aDtelr3ZjNND47mRJUj1DiG7cEHfvBdlu+RGQnvtazHEkh5hTzuYEBIxkRs253b8Oz5LYttD1g7oad30K7D40PUfsFigQkSx/cgULh1he/uGf6DbQH638CbTceVG+/4U2wlzJuB32FIP+Xq1IsAowu/IXzktYEOWrbxEKT9+D36OFjym5AfGjpfQblBFACYsHsBxajyDWCoS6B4qTTB2SN8HzPMROu7XNoJmfizvWtK0oSjmdpcECYdOjRtFXR03SrAWpbWhZVGX/Rz1eLjBRWMrluVshzTGRKr7FweA794a8wj9+jj6AcpM398vnhEM16Ml3BS8StIgCx7ZxWFVxH42Z0ZyZ3zRZ8TrKVDsqdz5d+st1jmdwRmoetKvr1kYMEZq79le13GWJ/7tX8zbqUj0ImUIqcLD0f+O3g7qj7BFHydt6djkzIJiR9QDMVjLAxo38aAd/fIQh5vk2OSd1cjMWRsXTORe7KasskfTtu9npw1zEJQAQwlkXhIFe15tMA9ejffqOZYc+BEfEuhK3W9K7k9IJ9iQ6MJry8SqhPOOF+RiD9LZ2gw56PQPyOd/OOHFusq+GrlTcYYgzrFUhwpevuxhcfKP48kdtmdNXApXPuIhA/lS/d5aLVBLeQy0qdz1NBm4CAT+X9DCjARy6/CntQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR10MB4344.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(91956017)(76116006)(66946007)(186003)(2616005)(84970400001)(26005)(36756003)(6512007)(83380400001)(53546011)(6506007)(6916009)(33656002)(54906003)(4326008)(8676002)(66446008)(66556008)(64756008)(66476007)(122000001)(38070700005)(38100700002)(86362001)(2906002)(71200400001)(316002)(44832011)(30864003)(8936002)(508600001)(5660300002)(6486002)(45980500001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?V0RMMTU3SGxja05Mbk81bGJ3S3I5eEhNbHlRYzF4OXVKc2k4bnJBZ0hLK2l6?= =?utf-8?B?b1g4SlBTbmRnR2szMjdoQlg2T1Z5dXdFVVpqcllKNkxEVG94N1pLUUZhbHY4?= =?utf-8?B?OTl3dUV2MDArTXBzTTNPRDZ1S0ZFa3RhQmQ1WElxZGV0Q0t5cGJhTUs1c1Rw?= =?utf-8?B?WXdTTk1MZFlGcUQ4akZxUkFBUElURlRRTjlIOVpueDU4RlBDdDhhU1Y1NlZm?= =?utf-8?B?RkRtaEhNTWlSeTNWMjUxWUhwNWIvMEEvZUIrZWxLM2lrRmxZWUxobTBUelM1?= =?utf-8?B?T3dtUXRQSjVTS2JUaTk4MFJxRXEyTmFPTDBna1RMeC9GcG9PQnlXdjhWbGlp?= =?utf-8?B?bklUcXYxMWNkcnRYck1pODJZaE05bWRFNlczcU1YdURuNXdkT3Z3QTkyNmFF?= =?utf-8?B?bU8vZFFIQ0NEZFUxekd5MUNOV2RVMFhkY2lYNjQwSUc4UEpGYitycUlCVFhY?= =?utf-8?B?QWM5TkFBVkZHWVplK2cvZVhtVnJQVFA3RFhqdGtEUDJlRzhSb3o3b2xqbEJC?= =?utf-8?B?SExyd1JRSkYvT3VUQzRzdEoyVWdxcDFHL3dEUVJPUjVadzRPNCtLdXY0aGw5?= =?utf-8?B?YVBnSU9NZTlqakRzZWRiNlM1eWlGWHdTalcrS1VRTGlUY0EwbFNzSXFSRWNQ?= =?utf-8?B?UHpjUnVDMnM4amRWd3QxMWdmS3hkbVRPcUlGRTZOVFgxczFjbWZPMGE2NHpC?= =?utf-8?B?elN4dXZpTkx6ZVA1QVk4TWR1bWtlS3RHSU1oRDVuUVhXQUc5ckdERjNFOGNv?= =?utf-8?B?WmhERERjRlBrV0x1QzRvcWhiUmtWTGp1aWIvc1psdU9vdWtnV2hPWENzMHdo?= =?utf-8?B?RnFGVjhIZWpraVpwZEprVEpIYk95YURQS1J3Nms1YVVVajVuc2ZZMnVqaGJL?= =?utf-8?B?eWoyUmxTNjJZdUZqakt6dDlvWjk5VmRGb3JiTFZ2dnlSRFU2aE9PbmdIRkNX?= =?utf-8?B?cmZDTUxaUTFzTm05aHdPZ1BYazJ4ejNEUHNDVXZPZVhoWmV2d2Z1V2V0MWwv?= =?utf-8?B?dUVZOFdxclhNRDBiTC93OXJIUGU4MGtBeDdZZHE3YmJ2YWtwTCtNN0s3cUlV?= =?utf-8?B?YUhVcmRPUVJ3NUZHbFdMZkhLSndoaElVWEhNT0RJby80RlpQY3U0N2JDV1ZI?= =?utf-8?B?ZzZGc1luMFlya1dGMVVsSWtXVEovRnJ4SlJpSlR1MTY5cEVORU9OZmRZOW1Q?= =?utf-8?B?Z2NQa0FHbXowMzRDaXhHMWRGdUVjdlBGNk5mVmVzVi9tRTVCVmxHck9vNEE2?= =?utf-8?B?VEdjNGFTZEtXY0ttSU5LdjhXMkRQOVFEQnNaY1MrSy9RakZyOXJOS2VMZlVj?= =?utf-8?B?aVlXaGJsZTFWOU9YMzdUL01VYnZnYXBxc0VyVmFLRHcwdWpmNG85LzUyUVFW?= =?utf-8?B?K1VQRTNJNWYyeFp4YlR3RlhlR1Myc0JyaW5sSjgwUy9aN1pPMXBhbEpERStZ?= =?utf-8?B?WGxWQ0FUTlIwd3FOajJtR3VwOHA2cWI3cVFySlp4TkdCVlZ3a3ZOU2dVQmVV?= =?utf-8?B?RlJtQ09sUHBHdXpoN3F2N3RQckl0Uy8rcG9ySGhsb3FRY0tyRzUyVFVZdG5h?= =?utf-8?B?eVJhWGV2RC9iaFo0M1VCaEFvSU84ckdaMUtVLzJyMnpKY1NXajhDNkMvWHpn?= =?utf-8?B?d0VuamRUaE9TbU1idlF2TFlMQi9Sd1BUWVViQ25ta1VJcDN6RFg3a0pkSG53?= =?utf-8?B?YXVudnUyZlZ4MG1JVmM1UjM1d3hQNkpjVjJlRnlrL3BITG9UMHZsZEsvVlBx?= =?utf-8?B?d2JVWDdTQUl6UG5sK0wwcGd4TTBycXVaME1seXdwZHlLUnpGVWJiNmFyTFQw?= =?utf-8?B?TG9PWU1tTlNNakZyZjM3S2Z4Y1hiT2V0MFVyWllQelpjSlFrMjBNT1ZhanhL?= =?utf-8?B?ZUdFZW1zRkg2SEJyMVJ6em41aDFGOEc4QkhycXZUTFN2UnUxM0lpMEU0ZG93?= =?utf-8?B?OGVXdDB3QlBNTnl2bStseGlZRzNTMGl4bVNmNnBEOUZuK2w1dHIrREFtVTN6?= =?utf-8?B?UjFQZWErMlcwUUEzTnBrVmVxMHZKVDBwV0RHR2kvWW43SVc0bTB0RGpBdXFU?= =?utf-8?B?aDRUVnd5K1lva0l3YnJFM0U5SjN5NlJONk02ZlMwSzAvbGk0MjhGQXFxYXpj?= =?utf-8?B?SnhqaVNPOVQrUm51NndxbWNGUEhsR0Zna2dqaVQxVWVDMG1CK1d4VXVOYkx0?= =?utf-8?B?UzY0SkZMb0xjQ0pLSmtQZkllOGlPeHAwSGMwd0VVMzk5bTg0N1RmZzFDSUZy?= =?utf-8?B?eFVxdjJnSGZrMHJFTGtLQ1hNL291SEIvWGsxeDRWVnJHMXRzK1JNT1ZMOVlG?= =?utf-8?B?bG1KS3hHV3Y0RVdFTnA2M3RxMmtkeEF6S2pZbHlhUUN0aTc1NWJDMWg3cmxs?= =?utf-8?Q?Gnonr0uwaJBKvXHM=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <1099976F634B5944AB8B2998E90C3841@namprd10.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR10MB4344.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b9300304-26ba-4981-1379-08da24746e00 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Apr 2022 15:26:10.6339 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ARSxYaOBFhzHFAP0HYre2VwGhthPibATOJEc5XoQGNTjx6I22ZpNNN/HQPVo59NiV2sr38IU64o6+Qo5ZlSUJw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR10MB5099 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486, 18.0.858 definitions=2022-04-22_04:2022-04-22, 2022-04-22 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 phishscore=0 malwarescore=0 suspectscore=0 spamscore=0 mlxlogscore=999 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2204220068 X-Proofpoint-GUID: 4SIzN4weA_4dtQF75nUZnpwkKQBPUg58 X-Proofpoint-ORIG-GUID: 4SIzN4weA_4dtQF75nUZnpwkKQBPUg58 X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Apr 2022 15:26:18 -0000 DQoNCj4gT24gQXByIDIxLCAyMDIyLCBhdCAyOjA5IEFNLCBSaWNoYXJkIEJpZW5lciA8cmljaGFy ZC5ndWVudGhlckBnbWFpbC5jb20+IHdyb3RlOg0KPiANCj4gT24gV2VkLCBBcHIgMjAsIDIwMjIg YXQgNjowMiBQTSBRaW5nIFpoYW8gPHFpbmcuemhhb0BvcmFjbGUuY29tPiB3cm90ZToNCj4+IA0K Pj4gDQo+PiANCj4+PiBPbiBBcHIgMjAsIDIwMjIsIGF0IDU6MzggQU0sIFJpY2hhcmQgQmllbmVy IDxyaWNoYXJkLmd1ZW50aGVyQGdtYWlsLmNvbT4gd3JvdGU6DQo+Pj4gDQo+Pj4gT24gVHVlLCBB cHIgMTksIDIwMjIgYXQgMTE6MzYgUE0gUWluZyBaaGFvIDxxaW5nLnpoYW9Ab3JhY2xlLmNvbT4g d3JvdGU6DQo+Pj4+IA0KPj4+PiANCj4+Pj4gDQo+Pj4+PiBPbiBBcHIgMTQsIDIwMjIsIGF0IDE6 NTMgQU0sIFJpY2hhcmQgQmllbmVyIDxyaWNoYXJkLmd1ZW50aGVyQGdtYWlsLmNvbT4gd3JvdGU6 DQo+Pj4+PiANCj4+Pj4+IE9uIFdlZCwgQXByIDEzLCAyMDIyIGF0IDU6MjIgUE0gUWluZyBaaGFv IDxxaW5nLnpoYW9Ab3JhY2xlLmNvbT4gd3JvdGU6DQo+Pj4+Pj4gDQo+Pj4+Pj4gSGksIFJpY2hh cmQsDQo+Pj4+Pj4gDQo+Pj4+Pj4gVGhhbmtzIGEgbG90IGZvciB0YWtpbmcgYSBsb29rIGF0IHRo aXMgaXNzdWUgKGFuZCBTb3JyeSB0aGF0IEkgaGF2ZW7igJl0IGZpeGVkIHRoaXMgb25lIHlldCwg SSB3YXMgZGlzdHJhY3RlZCBieSBvdGhlciB0YXNrcyB0aGVuIGp1c3QgZm9yZ290IHRoaXMgb25l 4oCmLikNCj4+Pj4+PiANCj4+Pj4+Pj4gT24gQXByIDEzLCAyMDIyLCBhdCAzOjQxIEFNLCBSaWNo YXJkIEJpZW5lciA8cmljaGFyZC5ndWVudGhlckBnbWFpbC5jb20+IHdyb3RlOg0KPj4+Pj4+PiAN Cj4+Pj4+Pj4gT24gVHVlLCBGZWIgMTUsIDIwMjIgYXQgNTozMSBQTSBRaW5nIFpoYW8gdmlhIEdj Yy1wYXRjaGVzDQo+Pj4+Pj4+IDxnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZz4gd3JvdGU6DQo+Pj4+ Pj4+PiANCj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4gDQo+Pj4+Pj4+Pj4gT24gRmViIDE1LCAyMDIyLCBh dCAzOjU4IEFNLCBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiB3cm90ZToNCj4+Pj4+ Pj4+PiANCj4+Pj4+Pj4+PiBIaSENCj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+PiBGb3IgSUJNIGRvdWJs ZSBkb3VibGUgSSd2ZSBhZGRlZCBpbiBQUjk1NDUwIGFuZCBQUjk5NjQ4IHZlcmlmaWNhdGlvbiB0 aGF0DQo+Pj4+Pj4+Pj4gd2hlbiB3ZSBhdCB0aGUgdHJlZS9HSU1QTEUgb3IgUlRMIGxldmVsIGlu dGVycHJldCB0YXJnZXQgYnl0ZXMgYXMgYSBSRUFMX0NTVA0KPj4+Pj4+Pj4+IG9yIENPTlNUX0RP VUJMRSBjb25zdGFudCwgd2UgdHJ5IHRvIGVuY29kZSBpdCBiYWNrIHRvIHRhcmdldCBieXRlcyBh bmQNCj4+Pj4+Pj4+PiB2ZXJpZnkgaXQgaXMgdGhlIHNhbWUuDQo+Pj4+Pj4+Pj4gVGhpcyBpcyBi ZWNhdXNlIG91ciByZWFsLmMgc3VwcG9ydCBpc24ndCBhYmxlIHRvIHJlcHJlc2VudCBhbGwgdmFs aWQgdmFsdWVzDQo+Pj4+Pj4+Pj4gb2YgSUJNIGRvdWJsZSBkb3VibGUgd2hpY2ggaGFzIHZhcmlh YmxlIHByZWNpc2lvbi4NCj4+Pj4+Pj4+PiBJbiBQUjEwNDUyMiwgaXQgaGFzIGJlZW4gbm90ZWQg dGhhdCB3ZSBoYXZlIHNpbWlsYXIgcHJvYmxlbSB3aXRoIHRoZQ0KPj4+Pj4+Pj4+IEludGVsL01v dG9yb2xhIGV4dGVuZGVkIFhGbW9kZSBmb3JtYXRzLCBvdXIgaW50ZXJuYWwgcmVwcmVzZW50YXRp b24gaXNuJ3QNCj4+Pj4+Pj4+PiBhYmxlIHRvIHJlY29yZCBwc2V1ZG8gZGVub3JtYWxzLCBwc2V1 ZG8gaW5maW5pdGllcywgcHNldWRvIE5hTnMgYW5kIHVubm9ybWFsDQo+Pj4+Pj4+Pj4gdmFsdWVz Lg0KPj4+Pj4+Pj4+IFNvLCB0aGUgZm9sbG93aW5nIHBhdGNoIGlzIGFuIGF0dGVtcHQgdG8gZXh0 ZW5kIHRoYXQgdmVyaWZpY2F0aW9uIHRvIGFsbA0KPj4+Pj4+Pj4+IGZsb2F0cy4NCj4+Pj4+Pj4+ PiBVbmZvcnR1bmF0ZWx5LCBpdCB3YXNuJ3QgdGhhdCBzdHJhaWdodGZvcndhcmQsIGJlY2F1c2Ug dGhlDQo+Pj4+Pj4+Pj4gX19idWlsdGluX2NsZWFyX3BhZGRpbmcgY29kZSBleGFjdGx5IGZvciB0 aGUgWEZtb2RlIGxvbmcgZG91YmxlcyBuZWVkcyB0bw0KPj4+Pj4+Pj4+IGRpc2NvdmVyIHdoYXQg Yml0cyBhcmUgcGFkZGluZyBhbmQgZG9lcyB0aGF0IGJ5IGludGVycHJldGluZyBtZW1vcnkgb2YN Cj4+Pj4+Pj4+PiBhbGwgMXMuICBUaGF0IGlzIGFjdHVhbGx5IGEgdmFsaWQgc3VwcG9ydGVkIHZh bHVlLCBhIHFOYU4gd2l0aCBuZWdhdGl2ZQ0KPj4+Pj4+Pj4+IHNpZ24gd2l0aCBhbGwgbWFudGlz c2EgYml0cyBzZXQsIGJ1dCB0aGUgdmVyaWZpY2F0aW9uIGluY2x1ZGVzIGFsc28gdGhlDQo+Pj4+ Pj4+Pj4gcGFkZGluZyBiaXRzIChleGFjdGx5IHdoYXQgX19idWlsdGluX2NsZWFyX3BhZGRpbmcg d2FudHMgdG8gZmlndXJlIG91dCkNCj4+Pj4+Pj4+PiBhbmQgc28gZmFpbHMgdGhlIGNvbXBhcmlz b24gY2hlY2sgYW5kIHNvIHdlIElDRS4NCj4+Pj4+Pj4+PiBUaGUgcGF0Y2ggZml4ZXMgdGhhdCBj YXNlIGJ5IG1vdmluZyB0aGF0IHZlcmlmaWNhdGlvbiBmcm9tDQo+Pj4+Pj4+Pj4gbmF0aXZlX2lu dGVycHJldF9yZWFsIHRvIGl0cyBjYWxsZXIsIHNvIHRoYXQgY2xlYXJfcGFkZGluZ190eXBlIGNh bg0KPj4+Pj4+Pj4+IGNhbGwgbmF0aXZlX2ludGVycHJldF9yZWFsIGFuZCBhdm9pZCB0aGF0IGV4 dHJhIGNoZWNrLg0KPj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4+IFdpdGggdGhpcywgdGhlIG9ubHkgdGhp bmcgdGhhdCByZWdyZXNzZXMgaW4gdGhlIHRlc3RzdWl0ZSBpcw0KPj4+Pj4+Pj4+ICtGQUlMOiBn Y2MudGFyZ2V0L2kzODYvYXV0by1pbml0LTQuYyBzY2FuLWFzc2VtYmxlci10aW1lcyBsb25nXFx0 LTE2ODQzMDEwIDUNCj4+Pj4+Pj4+PiBiZWNhdXNlIGl0IGRlY2lkZXMgdG8gdXNlIGEgcGF0dGVy biB0aGF0IGhhcyBub24temVybyBiaXRzIGluIHRoZSBwYWRkaW5nDQo+Pj4+Pj4+Pj4gYml0cyBv ZiB0aGUgbG9uZyBkb3VibGUsIHNvIHRoZSBzaW1wbGlmeS1ydHguY2MgY2hhbmdlIHByZXZlbnRz IGZvbGRpbmcNCj4+Pj4+Pj4+PiBhIFNVQlJFRyBpbnRvIGEgY29uc3RhbnQuICBXZSBlbWl0ICh0 aGUgdGVzdGNhc2UgaXMgLU8wIGJ1dCB3ZSBlbWl0IHdvcnNlDQo+Pj4+Pj4+Pj4gY29kZSBhdCBh bGwgb3B0IGxldmVscykgc29tZXRoaW5nIGxpa2U6DQo+Pj4+Pj4+Pj4gICAgbW92YWJzcSAkLTcy MzQwMTcyODM4MDc2Njc0LCAlcmF4DQo+Pj4+Pj4+Pj4gICAgbW92YWJzcSAkLTcyMzQwMTcyODM4 MDc2Njc0LCAlcmR4DQo+Pj4+Pj4+Pj4gICAgbW92cSAgICAlcmF4LCAtNDgoJXJicCkNCj4+Pj4+ Pj4+PiAgICBtb3ZxICAgICVyZHgsIC00MCglcmJwKQ0KPj4+Pj4+Pj4+ICAgIGZsZHQgICAgLTQ4 KCVyYnApDQo+Pj4+Pj4+Pj4gICAgZnN0cHQgICAtMzIoJXJicCkNCj4+Pj4+Pj4+PiBpbnN0ZWFk IG9mDQo+Pj4+Pj4+Pj4gICAgZmxkdCAgICAuTEMyKCVyaXApDQo+Pj4+Pj4+Pj4gICAgZnN0cHQg ICAtMzIoJXJicCkNCj4+Pj4+Pj4+PiAuLi4NCj4+Pj4+Pj4+PiAuTEMyOg0KPj4+Pj4+Pj4+ICAg IC5sb25nICAgLTE2ODQzMDEwDQo+Pj4+Pj4+Pj4gICAgLmxvbmcgICAtMTY4NDMwMTANCj4+Pj4+ Pj4+PiAgICAubG9uZyAgIDY1Mjc4DQo+Pj4+Pj4+Pj4gICAgLmxvbmcgICAwDQo+Pj4+Pj4+Pj4g Tm90ZSwgbmVpdGhlciBvZiB0aG9zZSBzZXF1ZW5jZXMgYWN0dWFsbHkgc3RvcmVzIHRoZSBwYWRk aW5nIGJpdHMsIGZzdHB0DQo+Pj4+Pj4+Pj4gc2ltcGx5IGRvZXNuJ3QgdG91Y2ggdGhlbS4NCj4+ Pj4+Pj4+PiBGb3IgdmFycyB3aXRoIGNsZWFyX3BhZGRpbmdfcmVhbF9uZWVkc19wYWRkaW5nX3Ag dHlwZXMgdGhhdCBhcmUgYWxsb2NhdGVkDQo+Pj4+Pj4+Pj4gdG8gbWVtb3J5IGF0IGV4cGFuc2lv biB0aW1lLCBJJ2Qgc2F5IG11Y2ggYmV0dGVyIHdvdWxkIGJlIHRvIGRvIHRoZSBzdG9yZXMNCj4+ Pj4+Pj4+PiB1c2luZyBpbnRlZ3JhbCBtb2RlcyByYXRoZXIgdGhhbiBYRm1vZGUsIHNvIGRvIHRo YXQ6DQo+Pj4+Pj4+Pj4gICAgbW92YWJzcSAkLTcyMzQwMTcyODM4MDc2Njc0LCAlcmF4DQo+Pj4+ Pj4+Pj4gICBtb3ZxICAgICVyYXgsIC0zMiglcmJwKQ0KPj4+Pj4+Pj4+ICAgbW92cSAgICAlcmF4 LCAtMjQoJXJicCkNCj4+Pj4+Pj4+PiBkaXJlY3RseS4gIFRoYXQgaXMgdGhlIG9ubHkgd2F5IHRv IGVuc3VyZSB0aGUgcGFkZGluZyBiaXRzIGFyZSBpbml0aWFsaXplZA0KPj4+Pj4+Pj4+IChvciBl eHBhbmQgX19idWlsdGluX2NsZWFyX3BhZGRpbmcsIGJ1dCB0aGVuIHlvdSBpbml0aWFsaXplIHNl cGFyYXRlbHkgdGhlDQo+Pj4+Pj4+Pj4gdmFsdWUgYml0cyBhbmQgcGFkZGluZyBiaXRzKS4NCj4+ Pj4+Pj4+PiANCj4+Pj4+Pj4+PiBCb290c3RyYXBwZWQvcmVndGVzdGVkIG9uIHg4Nl82NC1saW51 eCBhbmQgaTY4Ni1saW51eCwgdGhvdWdoIGFzIG1lbnRpb25lZA0KPj4+Pj4+Pj4+IGFib3ZlLCB0 aGUgZ2NjLnRhcmdldC9pMzg2L2F1dG8taW5pdC00LmMgY2FzZSBpcyB1bnJlc29sdmVkLg0KPj4+ Pj4+Pj4gDQo+Pj4+Pj4+PiBUaGFua3MsIEkgd2lsbCB0cnkgdG8gZml4IHRoaXMgdGVzdGluZyBj YXNlIGluIGEgbGF0ZXIgcGF0Y2guDQo+Pj4+Pj4+IA0KPj4+Pj4+PiBJJ3ZlIGxvb2tlZCBhdCB0 aGlzIEZBSUwgbm93IGFuZCByZWFsbHkgd29uZGVyIHdoZXRoZXIgInBhdHRlcm4gaW5pdCIgYXMN Cj4+Pj4+Pj4gaW1wbGVtZW50ZWQgbWFrZXMgYW55IHNlbnNlIGZvciBub24taW50ZWdyYWwgdHlw ZXMuDQo+Pj4+Pj4+IFdlIGVuZCB1cCB3aXRoDQo+Pj4+Pj4+IGluaXRpYWxpemluZyBhIHJlZ2lz dGVyIChTU0EgbmFtZSkgd2l0aA0KPj4+Pj4+PiANCj4+Pj4+Pj4gVklFV19DT05WRVJUX0VYUFI8 bG9uZyBkb3VibGU+KDB4ZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmVmZWZlZmUpDQo+Pj4+Pj4+ IA0KPj4+Pj4+PiBhcyB3ZSBnbyBidWlsZGluZyBhIFRJbW9kZSBjb25zdGFudCAod2UgdmVyaWZp ZWQgd2UgaGF2ZSBhIFRJbW9kZSBTRVQhKQ0KPj4+Pj4+PiBidXQgdGhlbg0KPj4+Pj4+PiANCj4+ Pj4+Pj4gICAgICAgLyogUHVuIHRoZSBMSFMgdG8gbWFrZSBzdXJlIGl0cyB0eXBlIGhhcyBjb25z dGFudCBzaXplDQo+Pj4+Pj4+ICAgICAgICAgIHVubGVzcyBpdCBpcyBhbiBTU0EgbmFtZSB3aGVy ZSB0aGF0J3MgYWxyZWFkeSBrbm93bi4gICovDQo+Pj4+Pj4+ICAgICAgIGlmIChUUkVFX0NPREUg KGxocykgIT0gU1NBX05BTUUpDQo+Pj4+Pj4+ICAgICAgICAgbGhzID0gYnVpbGQxIChWSUVXX0NP TlZFUlRfRVhQUiwgaXR5cGUsIGxocyk7DQo+Pj4+Pj4+ICAgICAgIGVsc2UNCj4+Pj4+Pj4gICAg ICAgICBpbml0ID0gZm9sZF9idWlsZDEgKFZJRVdfQ09OVkVSVF9FWFBSLCBUUkVFX1RZUEUgKGxo cyksIGluaXQpOw0KPj4+Pj4+PiAuLi4NCj4+Pj4+Pj4gICBleHBhbmRfYXNzaWdubWVudCAobGhz LCBpbml0LCBmYWxzZSk7DQo+Pj4+Pj4+IA0KPj4+Pj4+PiBhbmQgZ2VuZXJhbGx5IHJlZ2lzdGVy cyBkbyBub3QgaGF2ZSBhbnkgcGFkZGluZy4gIFRoaXMgd2VpcmQgZXhwYW5zaW9uDQo+Pj4+Pj4+ IHRoZW4gY2F1c2VzIHVzIHRvIHNwaWxsIHRoZSBUSW1vZGUgY29uc3RhbnQgYW5kIHJlbG9hZCB0 aGUgWEZtb2RlIHZhbHVlLA0KPj4+Pj4+PiB3aGljaCBpcyBkZWZpbml0ZWx5IG5vdCBvcHRpbWFs IGhlcmUuDQo+Pj4+Pj4+IA0KPj4+Pj4+PiBPbmUgYXBwcm9hY2ggdG8gYXZvaWQgdGhlIHdvcnNl IGNvZGUgZ2VuZXJhdGlvbiB3b3VsZCBiZSB0byB1c2UgbW9kZQ0KPj4+Pj4+PiBzcGVjaWZpYyBw YXR0ZXJucyBmb3IgcmVnaXN0ZXJzIChsaWtlIHVzaW5nIGEgTmFOIG9yIGEgdGFyZ2V0IHNwZWNp ZmljDQo+Pj4+Pj4+IHZhbHVlIHRoYXQNCj4+Pj4+Pj4gY2FuIGJlIGxvYWRlZCBjaGVhcGx5KSwN Cj4+Pj4+PiANCj4+Pj4+PiBZb3UgbWVhbiB0aGF0IHVzaW5nIOKAnG1vZGUgc3BlY2lmaWMgcGF0 dGVybnPigJ0gT05MWSBmb3IgcmVnaXN0ZXJzPw0KPj4+Pj4+IENhbiB3ZSB1c2Ug4oCcbW9kZSBz cGVjaWZpYyBwYXR0ZXJuc+KAnSBjb25zaXN0ZW50bHkgZm9yIGJvdGggcmVnaXN0ZXJzIGFuZCBt ZW1vcnk/DQo+Pj4+PiANCj4+Pj4+IFRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgcmVnaXN0ZXJzIGRv bid0IGhhdmUgcGFkZGluZyB3aGlsZSBtZW1vcnkNCj4+Pj4+IHBvc3NpYmx5IGRvZXMsIGFsc28N Cj4+Pj4+IGZvciBhZ2dyZWdhdGVzIHVzaW5nIGRpZmZlcmVudCBwYXR0ZXJucyBpcyB0b28gZXhw ZW5zaXZlIElNSE8uICBGb3INCj4+Pj4+IHJlZ2lzdGVycyB0aGUgZXh0cmENCj4+Pj4+IGNvbXBs aWNhdGlvbiB3aXRoIGdlbmVyaWMgcGF0dGVybnMgaXMgdGhhdCBlZmZpY2llbnQgaW5pdGlhbGl6 YXRpb24NCj4+Pj4+ICh3aXRob3V0IGdvaW5nIHRocm91Z2ggbWVtb3J5KQ0KPj4+Pj4gc2hvdWxk IGJlIGEgcHJpb3JpdHkgSU1ITy4NCj4+Pj4+IA0KPj4+Pj4gQW5kIGZvciBzdGFjayBtZW1vcnkg SSBzdGlsbCB0aGluayB0aGF0IGluaXRpYWxpemluZyB0aGUgZnVsbA0KPj4+Pj4gYWxsb2NhdGVk IGZyYW1lIChpbmNsdWRpbmcgcGFkZGluZw0KPj4+Pj4gYmV0d2VlbiB2YXJpYWJsZXMhKSBpcyB0 aGUgYmVzdCBhcHByb2FjaC4NCj4+Pj4+IA0KPj4+Pj4+IExMVk0gdXNlIGRpZmZlcmVudCBwYXR0 ZXJucyBmb3IgZGlmZmVyZW50IHR5cGVzIChJbnRlZ3JhbCwgRmxvYXQsIHBvaW50ZXIgdHlwZSwg ZXRj4oCmKSBpbiBvcmRlciB0bw0KPj4+Pj4+IENhdGNoIGJ1Z3MgZWFzaWx5IGZvciBkaWZmZXJl bnQgdHlwZXMuDQo+Pj4+Pj4gDQo+Pj4+Pj4gVGhlIGJlZ2lubmluZyB2ZXJzaW9ucyBvZiB0aGlz IHBhdGNoIHRyaWVkIHRvIGRvIHNpbWlsYXIgYXMgTExWTSwgYnV0IGxhdGVyIHdlIGdhdmUgdXAg dGhpcyBhbmQNCj4+Pj4+PiBVc2UgdGhlIHNhbWUgcGF0dGVybiBmb3IgYWxsIGRpZmZlcmVudCB0 eXBlcy4NCj4+Pj4+PiANCj4+Pj4+PiBJZiBub3csIHdlIHdhbnQgdG8gdXNlIOKAnG1vZGUgc3Bl Y2lmaWMgcGF0dGVybnPigJ0gZm9yIHJlZ2lzdGVycywgSSBhbSB3b25kZXJpbmcgd2hldGhlciBp dOKAmXMNCj4+Pj4+PiBCZXR0ZXIgdG8ganVzdCB1c2Ug4oCcbW9kZSBzcGVjaWZpYyBwYXR0ZXJu c+KAnSBjb25zaXN0ZW50bHkgZm9yIGJvdGggcmVnaXN0ZXJzIGFuZCBtZW1vcnk/DQo+Pj4+Pj4g DQo+Pj4+Pj4+IGFub3RoZXIgd291bGQgYmUgdG8gc2ltcGx5IGZhbGwgYmFjayB0byB6ZXJvDQo+ Pj4+Pj4+IGluaXRpYWxpemF0aW9uDQo+Pj4+Pj4+IHdoZW4gd2UgZmFpbCB0byBjb25zdGFudCBm b2xkIHRoZSBpbml0aWFsaXplciBsaWtlIHdpdGgNCj4+Pj4+Pj4gDQo+Pj4+Pj4+IGRpZmYgLS1n aXQgYS9nY2MvaW50ZXJuYWwtZm4uY2MgYi9nY2MvaW50ZXJuYWwtZm4uY2MNCj4+Pj4+Pj4gaW5k ZXggOGIxNzMzZTIwYzQuLmE0Yjk5NWY3MWU0IDEwMDY0NA0KPj4+Pj4+PiAtLS0gYS9nY2MvaW50 ZXJuYWwtZm4uY2MNCj4+Pj4+Pj4gKysrIGIvZ2NjL2ludGVybmFsLWZuLmNjDQo+Pj4+Pj4+IEBA IC0zMTI1LDcgKzMxMjUsMTEgQEAgZXhwYW5kX0RFRkVSUkVEX0lOSVQgKGludGVybmFsX2ZuLCBn Y2FsbCAqc3RtdCkNCj4+Pj4+Pj4gICAgICAgaWYgKFRSRUVfQ09ERSAobGhzKSAhPSBTU0FfTkFN RSkNCj4+Pj4+Pj4gICAgICAgICBsaHMgPSBidWlsZDEgKFZJRVdfQ09OVkVSVF9FWFBSLCBpdHlw ZSwgbGhzKTsNCj4+Pj4+Pj4gICAgICAgZWxzZQ0KPj4+Pj4+PiAtICAgICAgICAgICBpbml0ID0g Zm9sZF9idWlsZDEgKFZJRVdfQ09OVkVSVF9FWFBSLCBUUkVFX1RZUEUgKGxocyksIGluaXQpOw0K Pj4+Pj4+PiArICAgICAgICAgICB7DQo+Pj4+Pj4+ICsgICAgICAgICAgICAgaW5pdCA9IGZvbGRf YnVpbGQxIChWSUVXX0NPTlZFUlRfRVhQUiwgVFJFRV9UWVBFIChsaHMpLCBpbml0KTsNCj4+Pj4+ Pj4gKyAgICAgICAgICAgICBpZiAoIUNPTlNUQU5UX0NMQVNTX1AgKGluaXQpKQ0KPj4+Pj4+PiAr ICAgICAgICAgICAgICAgaW5pdCA9IGJ1aWxkX3plcm9fY3N0IChUUkVFX1RZUEUgKGxocykpOw0K Pj4+Pj4+PiArICAgICAgICAgICB9DQo+Pj4+Pj4+ICAgICB9DQo+Pj4+Pj4+ICAgIGVsc2UNCj4+ Pj4+Pj4gICAgIC8qIFVzZSB6ZXJvLWluaXQgYWxzbyBmb3IgdmFyaWFibGUtbGVuZ3RoIHNpemVz LiAgKi8NCj4+Pj4+Pj4gDQo+Pj4+Pj4+IG5vdGUgdGhhdCBzdGlsbCBkb2VzIG5vdCBhZGRyZXNz IHRoZSBpc3N1ZSBub3RlZCBieSBKYWt1YiB0aGF0IHdlIGRvIG5vdA0KPj4+Pj4+PiBpbml0aWFs aXplIHBhZGRpbmcgdGhpcyB3YXkgLSBidXQgb2YgY291cnNlIHRoYXQncyBiZWNhdXNlIHdlIGV4 cGFuZCBhDQo+Pj4+Pj4+IHNwZWNpYWwgYXNzaWdubWVudCBmcm9tIC5ERUZFUlJFRF9JTklUIGFu ZCBhcmUgbm90IGluaXRpYWxpemluZw0KPj4+Pj4+PiB0aGUgc3RvcmFnZSBhbGxvY2F0ZWQgZm9y IHRoZSB2YXJpYWJsZSBvbiB0aGUgc3RhY2sgKGF0IC1PMCkgYnkgUlRMDQo+Pj4+Pj4+IGV4cGFu c2lvbi4gIElkZWFsbHkgLkRFRkVSUkVEX0lOSVQgImV4cGFuc2lvbiIgZm9yIHN0YWNrIHZhcmlh Ymxlcw0KPj4+Pj4+PiB3b3VsZCB0YWtlIHBsYWNlIHRoZXJlLCBzaW1wbHkgZmlsbGluZyB0aGUg YWxsb2NhdGVkIGZyYW1lIHdpdGggdGhlDQo+Pj4+Pj4+IHBhdHRlcm4gb3IgemVyby4gIFRoYXQg d291bGQgcHJvYmFibHkgbWVhbiB0aGF0IFJUTCBleHBhbnNpb24NCj4+Pj4+Pj4gc2hvdWxkIHNj b29wIHVwIC5ERUZFUlJFRF9JTklUcyBmb3IgdmFyaWFibGVzIGl0IGRlY2lkZXMgbm90IHRvDQo+ Pj4+Pj4+IGV4cGFuZCB0byBwc2V1ZG9zIGFuZCBub3QgbGVhdmUgdGhhdCB0byBzdG10IGV4cGFu c2lvbi4NCj4+Pj4+PiANCj4+Pj4+PiBOZWVkIHRvIHN0dWR5IHRoaXMgYSBsaXR0bGUgYml0IG1v cmUuLi4NCj4+Pj4gDQo+Pj4+IA0KPj4+PiBTbywgSXMgd2hhdCB5b3UgbWVhbiBpbiB0aGUgYWJv dmUgYSBjb21wbGV0ZSByZXdyaXRlIG9mIHRoZSBjdXJyZW50IOKAnGV4cGFuZF9ERUZFUlJFRF9J TklU4oCdOg0KPj4+PiANCj4+Pj4gSW5zdGVhZCBvZiBzaW1wbHkgdXNpbmcg4oCcZXhwYW5kX2J1 aWx0aW5fbWVtc2V04oCdIGZvciDigJx2YXJpYWJsZXMgdGhhdCBhcmUgbm90IGluIHJlZ2lzdGVy 4oCdIGFuZCAg4oCcZXhwYW5kX2Fzc2lnbm1lbnTigJ0NCj4+Pj4gZm9yIOKAnHZhcmlhYmxlcyB0 aGF0IGFyZSBpbiByZWdpc3RlcuKAnSwgIFJUTCBleHBhbnNpb24gc2hvdWxkIGRpcmVjdGx5IGV4 cGFuZCB0aGlzIGNhbGwgaW4gYSBsb3dlciBsZXZlbDoNCj4+Pj4gDQo+Pj4+IGkuZSwNCj4+Pj4g DQo+Pj4+IHRyZWUgbGhzID0gZ2ltcGxlX2NhbGxfbGhzIChzdG10KTsNCj4+Pj4g4oCmDQo+Pj4+ IA0KPj4+PiBydHggdGFyZ2V0ID0gZXhwYW5kX2V4cHIgKGxocywgTlVMTF9SVFgsIFZPSURtb2Rl LCBFWFBBTkRfV1JJVEUpOw0KPj4+PiANCj4+Pj4gSWYgKE1FTV9QICh0YXJnZXQpKSAgIC8vIHRo ZSB2YXJpYWJsZSBpcyBhbGxvY2F0ZWQgb24gc3RhY2sNCj4+Pj4gew0KPj4+PiAgICAvLyBmaWxs aW5nIHRoZSBhbGxvY2F0ZWQgZnJhbWUgd2l0aCBwYXR0ZXJuIG9yIHplcm8uICAgSG93IHRvIGRv IGl0Pz8NCj4+Pj4gfQ0KPj4+PiBlbHNlICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHZhcmlh YmxlIGlzIGluIHBzZXVkbyByZWdpc3Rlci4NCj4+Pj4gew0KPj4+PiAgIHJ0eCBpbml0X3J0eCA9 IOKApjsNCj4+Pj4gICBlbWl0X21vdmVfaW5zbiAodGFyZ2V0LCBpbml0X3J0eCkNCj4+Pj4gfQ0K Pj4+PiANCj4+Pj4gDQo+Pj4+IElzIHRoZSBhYm92ZSBhIGNvcnJlY3QgdW5kZXJzdGFuZGluZz8N Cj4+PiANCj4+PiBObywgSSB3b3VsZCBzaW1wbHkgZXhwYW5kIHRoZSBhdXRvbWF0aWMgaW4tbWVt b3J5IHZhciAuREVGRVJSRURfSU5JVA0KPj4+IGNhbGxzIHRvIG5vdGhpbmcNCj4+PiBidXQgaW5z dGVhZCBwcm9jZXNzIHRoZWlyIGVmZmVjdCBhdCB0aGUgdGltZSB3ZSBkbw0KPj4+IGV4cGFuZF9v bmVfc3RhY2tfdmFyLCB3aGljaCBtZWFucyBhdA0KPj4+IENGRyBleHBhbnNpb24gdGltZSBzY2Fu IGZvciB0aGUgLkRFRkVSUkVEX0lOSVRzIGFuZCByZWNvcmQgd2hldGhlciBhbmQgaG93IHRvDQo+ Pj4gaW5pdGlhbGl6ZSB0aGUgdmFyaWFibGVzLiAgV2UgY2FuIHRoZW4gZ3JvdXAgdGhlIHZhcmlh YmxlcyBhY2NvcmRpbmdseQ0KPj4+IGFuZCBibG9jay1pbml0aWFsaXplDQo+Pj4gdGhlIHN0YWNr IHNwYWNlIGFsc28gY292ZXJpbmcgcGFkZGluZyBpbmJldHdlZW4gdmFyaWFibGVzLg0KPj4gDQo+ PiBTbywgdGhlIGFib3ZlIG9ubHkgY292ZXJzIHRoZSB2YXJpYWJsZXMgdGhhdCB3aWxsIGJlIGFs bG9jYXRlZCBpbiBzdGFjaz8NCj4gDQo+IFllcy4NCj4gDQo+PiBGb3IgdGhlIHZhcmlhYmxlcyB0 aGF0IGFyZSBpbiBwc2V1ZG8gcmVnaXN0ZXJzLCB3ZSBzdGlsbCBuZWVkIHRvIHNpbXBseSBleHBh bmQgdGhlIGluaXRpYWxpemF0aW9uIHRvIGEgbW92ZSBpbnNuPw0KPiANCj4gWWVzLCBhbHNvIGZv ciBzdGFjayBWTEFzLg0KDQpXaHkgZm9yIHN0YWNrIFZMQXM/IA0KPiANCj4+IEFuZCBmb3IgdGhl IHZhcmlhYmxlcyBpbiBwc2V1ZG8gcmVnaXN0ZXJzLCBsYXRlciBhZnRlciByZWdpc3RlciBhbGxv Y2F0aW9uLCBzb21lIG9mIHRoZW0gd2lsbCBiZSBzcGlsbGVkIGludG8gc3RhY2ssIHRvby4NCj4+ IFNwZWNpYWxseSBmb3IgbG9uZyBkb3VibGUvY29tcGxleCBkb3VibGUgdmFyaWFibGVzIHRoYXQg bWlnaHQgaGF2ZSBwYWRkaW5nLCBzaGFsbCB3ZSBzcGVjaWFsbHkgaGFuZGxlIHRoZW0gZHVyaW5n IHRoYXQgdGltZT8NCj4gDQo+IElkZWFsbHkgd2UnZCBuZXZlciBzcGlsbCB1bmluaXRpYWxpemVk IHZhcmlhYmxlcyBidXQgZGVmaW5pdGVseSB0aGUNCj4gYXV0by1pbml0IGNhbiBjYXVzZSB0aGUg bmVlZCB0byBzcGlsbCB0aGF0IHZlcnkNCj4gdmFsdWUuICBUaGF0IG1lYW5zIHRoYXQgYXV0by1p bml0IG9mIHJlZ2lzdGVycyBzaG91bGQgaGFwcGVuIGFmdGVyIFJBPw0KDQpBbGwgdGhlIGluaXRp YWxpemF0aW9uIG9mIHJlZ2lzdGVycyBzaG91bGQgaGFwcGVuIGFmdGVyIFJBPyBPbmx5IHRoZSBv bmVzIHdpdGgg4oCcbG9uZyBkb3VibGUvY29tcGxleCBkb3VibGXigJ0gdHlwZSB0aGF0IG1pZ2h0 IGhhdmUgcGFkZGluZz8NCg0KPiBPbmUgd291bGQgbmVlZCB0byBzZWUgd2hhdA0KPiBJUkEvTFJB IGRvIHRvIHVuaW5pdGlhbGl6ZWQgcHNldWRvIHVzZXMuICBDb21wdXRpbmcgbWF5IHVuaW5pdCB1 c2VzDQo+IGFmdGVyIFJBIHNob3VsZCBiZSBwb3NzaWJsZSBhbmQNCj4gaG9wZWZ1bGx5IGFsbCBJ U0FzIGFsbG93IGluaXRpYWxpemluZyBoYXJkIHJlZ2lzdGVycyB3aXRob3V0IHJlcXVpcmluZw0K PiBhIHNjcmF0Y2ggcmVnaXN0ZXIgKGhlaCAtIEknbSBhbG1vc3Qgc3VyZQ0KPiB0aGVyZSB3aWxs IGJlIGV4Y2VwdGlvbnMg4oCmKQ0KTmVlZCBtb3JlIHN0dWR5IGhlcmXigKYuDQoNClFpbmcNCj4g DQo+IFJpY2hhcmQuDQo+IA0KPj4gUWluZw0KPj4+IA0KPj4+IFJpY2hhcmQuDQo+Pj4gDQo+Pj4+ IFRoYW5rcy4NCj4+Pj4gDQo+Pj4+IFFpbmcNCj4+Pj4gDQo+Pj4+Pj4gDQo+Pj4+Pj4+IA0KPj4+ Pj4+PiBJJ20gZ29pbmcgdG8gc2ltcGx5IFhGQUlMIHRoaXMgdGVzdGNhc2UgZm9yIEdDQyAxMiBh bmQgb3BlbmVkDQo+Pj4+Pj4+IFBSMTA1MjU5IHNvIHdlIGNhbiByZXZpc2l0IHRoZSBhYm92ZSBm b3IgR0NDIDEzLg0KPj4+Pj4+IA0KPj4+Pj4+IEkgY2FuIGZ1cnRoZXIgc3R1ZHkgdGhpcyBidWcg YW5kIHRyeSB0byBjb21lIHVwIHdpdGggYSBnb29kIHNvbHV0aW9uIGluIGdjYzEzLg0KPj4+Pj4+ IA0KPj4+Pj4+IFRoYW5rIHlvdSENCj4+Pj4+PiANCj4+Pj4+PiBRaW5nDQo+Pj4+Pj4+IA0KPj4+ Pj4+PiBSaWNoYXJkLg0KPj4+Pj4+PiANCj4+Pj4+Pj4+IFFpbmcNCg0K