From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 26409C678D5 for ; Fri, 3 Mar 2023 23:51:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229780AbjCCXvd (ORCPT ); Fri, 3 Mar 2023 18:51:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55032 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229773AbjCCXva (ORCPT ); Fri, 3 Mar 2023 18:51:30 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BBD3B65122; Fri, 3 Mar 2023 15:51:26 -0800 (PST) Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 323NU0nm023874; Fri, 3 Mar 2023 23:51:02 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=corp-2022-7-12; bh=kpP19ty7Utc5+y8z1g+cxZcy1f+FbCkPWf3q8b1vyb0=; b=lYHs2dMHYKRJAxL3/rOV6sU4VK3HE9ECFY02QD0G07leVY8ZHTPZS13mncH39BQnJUql 82Sj37de1r5zb7UyZOwVJsBXO02/IZ2fi83tyGOZKUuQ71GTUuqJ1fx4ZUwGHanieCUw Hmgn1zLAm43IIBkx2OLObYxB9MaY9jSjQGKa9cMivVdwZJcJusySx05wAn9gl7tg9tqH DmkqoRuyVxHFVm2KrOu3jmH6vrA4oGN3d2j0grCF0K24AUrF66ecwMHzYtoag32gqBUG CgJlZc6wTZqiJ4M5GryrxK9Fe0lOZ446AjpcNG2tM8Hl0Z390rsuq7lc2QyKbvSQEP75 mQ== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3nyba7rek9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 03 Mar 2023 23:51:01 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 323NXgEC005287; Fri, 3 Mar 2023 23:51:00 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2168.outbound.protection.outlook.com [104.47.55.168]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3ny8scfnap-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 03 Mar 2023 23:51:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lxhQGCeypcifYkp8x2/wG1gdb+Cs/kU0xcljLftjYlZR9q+wfsnccehQ99xH9fApc97KpPYko4LnwUty68Xz6sQATBztuMKQG2zd63fU4BfLOqIYuwsdlUt5MeNPyHRIJwSDcmXh2GaUQqtzTQXpGCRbOtSSxRT/3TIvEbAh1+wysCjjEVosU8ag9WthAnnBvQf7q14oxx5At9tdjBxu+ItB31WARtyrOV/O1T4q9YzNZymuV0wPPAL11KAXVjh7fLaPWkk0Mx19+8ThV9MIzoR8vmKu1delfPsj8YChYHnPm1BjwVOSEHa9KTHf9PoRM6cDJRY+MNWixE9PkVCDNQ== 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=kpP19ty7Utc5+y8z1g+cxZcy1f+FbCkPWf3q8b1vyb0=; b=foAnS7y/bbN1oEeD/XfgEoxxv6lxkfSQ/tHoCwtreuClYDpX+T5z4FbM+CZIv/2S2fe9C/facO1m0mwH77UIf/MoBhn2GAbZn+gvRaIFXqla7AhxVA04x+hwG2WLLWwQXP4OMU8D8S9PafNsURKkJYUOrKjIZZwBJ7+TnNZi1bVbQx2Q/1UIcD4jscWHKQoOM+yOSKnVQRiTEolT4fc1zFrsUrgp7CwaYD1t8ebUP0kRRPUB7XpIH7wTLBf9NtpsM2hq87J5KPdzPqp+5wgW1RxXRKlNXDIiCcpH5P9znueVUAPk6EmBkQvTAwytIjR1CPoTNqRJvuT7SLEeZYNb9g== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kpP19ty7Utc5+y8z1g+cxZcy1f+FbCkPWf3q8b1vyb0=; b=KaPt36agsXEpolcjLx6a6r74HTtcSXyIMnih59D9NELjL7/6KDANNFXYwjIO9t2CK7HT8kd8sDcHYyIl1e2xyWjyeGqVhdt6M6DMdMSWChT0KRXt8f8163k/nlobQw1fbs7A3IhuA9UFtwPc0ytuqmSw+LOLNnZlTnsWunM/bPU= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by PH0PR10MB4437.namprd10.prod.outlook.com (2603:10b6:510:3a::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.12; Fri, 3 Mar 2023 23:50:57 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::2a7c:497e:b785:dc06]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::2a7c:497e:b785:dc06%8]) with mapi id 15.20.6156.019; Fri, 3 Mar 2023 23:50:57 +0000 From: Allison Henderson To: "djwong@kernel.org" CC: "david@fromorbit.com" , Catherine Hoang , "linux-fsdevel@vger.kernel.org" , "hch@infradead.org" , "linux-xfs@vger.kernel.org" , "willy@infradead.org" , Chandan Babu Subject: Re: [PATCH v24.3 12/14] xfs: document directory tree repairs Thread-Topic: [PATCH v24.3 12/14] xfs: document directory tree repairs Thread-Index: AQHZN3T1TV5f3/vQZEubpPhDVlTcua7fZ/YAgAdhAwCAAx4bAA== Date: Fri, 3 Mar 2023 23:50:57 +0000 Message-ID: References: <167243825144.682859.12802259329489258661.stgit@magnolia> <167243825331.682859.12874143420813343961.stgit@magnolia> <181f96f378c88281e9fa48e1803a03254051cb35.camel@oracle.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.44.4-0ubuntu1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BY5PR10MB4306:EE_|PH0PR10MB4437:EE_ x-ms-office365-filtering-correlation-id: f3e340d1-4c25-44ac-47cf-08db1c422292 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: MBvuXc0mIkLVKfKtSz5IUYf5ilKaotcupSiQfxkmHTMUfa4qcbaWS9XrpwtYylk4d0hb7/3TfgWSNsza6QD6cYnZFLIZrLSxT17haxOqo7pYJmmRj5/Nb6pNA2f6DfvDGhEQpGVgPTMFPnd1VV/JUK43kOqzoWk4ClR81PwejBdN+lQm1FIcIjQu3llPOpXz5De5zTATUXD4Z8soGybQFdPda01bzYuZsvpEuucyG21lnW00pzDw1k1JZ9u8/wsgS4OZwHoc4Wry0B7cpbT75KZfpdbIJaSvxQ2t9b99NEZkDDWBw6NKqWMRDgBqd7Y2BIiyut26eeOgm4iC9mYTyX09f1Z0hPxcUEkRSGxgQLDimzSa92phzBUHEAyJGNq5zW1iqmBmmlpC1U/L8ngdR8NGGGfrp/BI8rXNCHNxm2ZuEEeZOkjlI7P72I16d/YDOGa/179yM2rJ5BpZEduOKBWeoBYMU5gx7SKDfS96LMNmvpQLkt+QDUx0bo141l1XB2QNcvWeJeUNj/kmz3MxG6wuWGEZ6jL6m972b7XGdqKncdI1KG8bumgswBHpDLxTGWbenNXXGw/ETK+hiZhWCTCqMocLkuvYxHslsvt9mXIkSVKYNwnGqapvdmb6p+kIF7UM49cqxmguUHtQRhHdfjnj/AgTXZ6udjXw5jgHiIrar8HdnT5H10bpbVvMaRbTx0eN0mL2R0S4pXVRx7P5G0WYp0i9mssaNrn0t/LMcgE= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(396003)(39860400002)(376002)(136003)(366004)(346002)(451199018)(41300700001)(66476007)(2616005)(316002)(66946007)(66556008)(6916009)(36756003)(76116006)(64756008)(54906003)(122000001)(2906002)(4326008)(107886003)(38070700005)(8676002)(38100700002)(66446008)(6506007)(6512007)(83380400001)(71200400001)(478600001)(186003)(86362001)(26005)(6486002)(966005)(44832011)(30864003)(5660300002)(8936002)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TG1iYXI1akZSSng3SGlmUFVSMXNBRWZoSFRrdWJIZXMwMzNKeXFDL3cxSkRP?= =?utf-8?B?NS9lWU10WUU4N1VvTk5tZGV3ME1oR0NyK3NqWG4xNjRTdnNLM0xWczc0eUVO?= =?utf-8?B?MUNKaWovcjVvNVdUUmRUTGRuWWU1Y0I2Y2dKYWpFTEZHT2wrS3hlNVdTZ1g0?= =?utf-8?B?WEpUSkpGMy9mTHZzaXdjWjI4ZXJiTENUWnlERE5BVzhhMkhQcmI3eC81TUtZ?= =?utf-8?B?Q3NjNyszUEdQY3ROaCttWjIxQ0Z4YTBUWGZpNWlhNVhtdEhudndpTFNoZ3Qx?= =?utf-8?B?QkpTVkpZNVNicVZPaEVXNjJJdkVEUzcvUGFOR20wNE1aZ2xVY0VFME1ndEEy?= =?utf-8?B?S0pzUmNFaDhQS1U3bUR1emZDdHg5Ty9HNW9WcGxRUnFFcG82VlZIY3lIUFJR?= =?utf-8?B?dy9sMGRrcjR0SFBTU1RGZis1ZjNjNEVKQ3JrZU1iaWZkcE9JK0Q1UzhZdWRV?= =?utf-8?B?S0JHSUJtR3QxeWlKRTU5VHJWZFFqdVgrdkdXeWE4S05LM3hDZWpZdWxEVkkz?= =?utf-8?B?NlZKbnV1VytOQzEvKzNXcXowdWlSQUtJalA1OC9BUnhTdXFJK2lHSFRMY041?= =?utf-8?B?dnVXMzVQWnZVSkpsZDZIUEhJaGpWZGxBUmxPakpyazl4SEMySzNBRzh2NDR5?= =?utf-8?B?M1JSMVVITHZEbzVVWGp2TmFUYlFieWozcDdnb0RuaVdsTVFRcDY4cmNYM0Fv?= =?utf-8?B?VGFTazhmQ1lsaVFhSk5YbHBkdiszWDVsYkdzbTBOZ1UzQ0hMQjNxaE95YUdv?= =?utf-8?B?bDdGajJNSkNIT3ppUnlLRTRHSlU1RlordnJNWVB2Wlp6TWRhb093L3NkbUlk?= =?utf-8?B?UDFEeEx1N2NyaWVrZVhqTm9WVVI1MUxDVkFVb0JvcGxUU1h2T1NnSG1SU2Ja?= =?utf-8?B?OXd6VjN5eGZpenRGeGJDckJJdXVUaDcvMTdKRld5QTZHZStnME5SdEZ5WFlC?= =?utf-8?B?a2Z0bGQ3S3psNERaYzNsbjNwb2p3T2hrVklDanlSR2EyYzZWZDhtdFhlaEJR?= =?utf-8?B?SEFRSlpGUE1XcUN1eWFnMzVLdFJLOTJ3WGpBbnlaN1c4cDgwNlRXcHo5MTZI?= =?utf-8?B?UGRhNGI1MVhxZWt4bWpsQWVNMEJOWGtOc20yajR5Mm1vc2hxWVdoOUJ0YUty?= =?utf-8?B?NjcxZ0NKSGRHME5DbHNCZUxKTWt0ZTQ1ZU90NEFjc052S0ZucFUxMDFKa1h3?= =?utf-8?B?VDkzaG94UGc1ZWpFTy8wRXBieWgxZjJEZjdWeHh6V1RhSC8xakNEN2lSSjZD?= =?utf-8?B?S1kzM3AxSTZUaUlQa3UxcmdvSXhKaDZaY3pEZTI2YzdCL09vNjZtcEIvY1JS?= =?utf-8?B?RmRHSHhLazlib3Y4MysxZDlDazd5NE1NNG9NVTZ1YWZpMEU5Qm56dGlDM0Zu?= =?utf-8?B?MHZFa0pvdlFtbHBEeEVCYzVPNDZ1S3NYMmtvWjBJaUFkdXVxUTRnTTZYalpu?= =?utf-8?B?aHF1Q21tUEYyUjlNTXlhRmx5b05BK1dFb2xnYzJqZFZTdWZ0VVluK3I5Q2Z5?= =?utf-8?B?K2ZycnBUeFdCTjZvTEVrUWg4Zm9UOFhSb1BaVG00VFRxcnl5M0FoZDZiYmtO?= =?utf-8?B?MmRUVWtQRjdWZWlicmNZenRNNmpjbTAzR2VVNEJLYW9pVUU4dmtJVHdlNnlB?= =?utf-8?B?NndjdlNsV2NvODJFME02Wk9nK1BmeGhKOGt5bGJSVzdVSmM1b2t6M0drbjkz?= =?utf-8?B?bWJGeDlQNFdZL2kwN2I3bDZBZ2JQdThhQ0lEWXI5eEc4N3dlM1g4MTlNUVpX?= =?utf-8?B?TkZrYnRkVWQwcWJ1dFlvY2dURXd0R0hBYjdLOHMrcVBWd0d3SGdXcUhmK3N1?= =?utf-8?B?Wm5FWXIvSjdYNXpGRkxlcFBGeExPVXJrZm5oOUlBTWowUE5YNHlqcjJnK0dV?= =?utf-8?B?Y21Sc095VzhUM3NyUTFyNWVhZ0tWOWp2VWdNeFhVVkVISmZlN1cxcW1ia2ds?= =?utf-8?B?eFhDd2RYYXM2QmwrNnQrTTgwR04vNCs3eFFQRkMrWk5OVkdkSmdrang2dGh2?= =?utf-8?B?NlZDRnl0RTFIMU1zV1dSK1FsSFFpQjM2QTRwNEN2THdZSEZEdHNlUUR6NFN5?= =?utf-8?B?Wkp6SkFzMEJtcUlSenUyL3NacmFjbnIwVE40RGZzQ2FYVk9jeGJxenc4V3FT?= =?utf-8?B?YWRpN0pJaTdGYlhJSUZISmVLTVBSSFhFY0dlVWJLQXFFUklCZDMxMVpwSU5w?= =?utf-8?Q?LfPlDD/HOcMJwEHueeSeVr8=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <2E89E885B08381428CCBF320B643E86D@namprd10.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: u57eW3s2Gjhgw5GN6l7S/rnJZjn5qoqGFNjoImxtmW/HHwMGwHbtgdtnY79KIlPwUzm+mnPsAodmz/4TZZhl9+eA4Ah4OhygvuJV5oXt9CeirYX8tyyPJfc/tqdkbrMDNWsXFR+KO2jBvd9y3dHEgLevDgt+819zAJd/PIL+MBJ4qjFwTvmOE9ZfQZWiriux5W4fwgHqxVsQ9E/9YPV47FJ8vX9Idn8Wfh3wBG8NAyOtlF7TwYT+pOvFqhsApPEf4mC8kdCy9ng4+6aBxmACGpBE20l/VIMVf+LMTXqFot+AL04CFmvYsUnmggmqGQa8JWqgxvnH+wO7IyzTsAubx8QSegJ57J57iodg7yEeiZ2vrTl+/qlrRUSADlvsXUqLsBi6rMUyFXx+jJJ9dhKCtM5kdjkHCaSn8k34UcPWl5BU422IX7aBF58vyuCy0XZMyNkKU9Bc3tbxLTB8U1agIfM2ErWtKCqWJyz9RLJFmP65Y+aCT/GMcUnLbG/suMNBPPLsKy0v9R4/4m1bA63A09gxM6sXt/HhbsJLkHhXpwN1reaLPr+FmmvD+mhf1nxp6ba23430gUZYlmtbZX/a8esrIFOTeGeajBRnjXYV5hmCSrZNrSAYvh1P04TrgFyMI8BSgqqqq7R+LrAgoOdqDepsaubnbqgGtWRXswMdJOPVoRGOISxXhvcIXCraNJwp+ffJ8I0FuSzz14qx7ydXyal/iSsHPFpGUcmvXKnKMHKZUmSIlTQR0BRypYztmlWLO1WgyqLI9H+t2NacmUTGvXscTdt7QKGtZfM/hICIT1ENMiyjMgV2GKMQvyyam1D8iLnuFYSNm+f5UdeBd5ZpddsPNKwcwbbfsfhCn0/N9Ss= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f3e340d1-4c25-44ac-47cf-08db1c422292 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Mar 2023 23:50:57.5864 (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: X2zN9oDkMltHjz7wDWeEIKzhhj3QKdRuUIow4hmDDpljDabVT8lYCrr0V6SA4CiwKui9hTZZYoWPyfHdD7mWXtL8Sydkjv8T1goIwW9Ac3s= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4437 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-03-03_06,2023-03-03_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 bulkscore=0 adultscore=0 mlxlogscore=999 suspectscore=0 phishscore=0 spamscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2303030201 X-Proofpoint-ORIG-GUID: d85kWu5RKo_HOJbqAyDFjqUANv9vuHs5 X-Proofpoint-GUID: d85kWu5RKo_HOJbqAyDFjqUANv9vuHs5 Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org T24gV2VkLCAyMDIzLTAzLTAxIGF0IDE2OjE0IC0wODAwLCBEYXJyaWNrIEouIFdvbmcgd3JvdGU6 DQo+IE9uIFNhdCwgRmViIDI1LCAyMDIzIGF0IDA3OjMzOjIzQU0gKzAwMDAsIEFsbGlzb24gSGVu ZGVyc29uIHdyb3RlOg0KPiA+IE9uIFRodSwgMjAyMy0wMi0wMiBhdCAxODoxMiAtMDgwMCwgRGFy cmljayBKLiBXb25nIHdyb3RlOg0KPiA+ID4gRnJvbTogRGFycmljayBKLiBXb25nIDxkandvbmdA a2VybmVsLm9yZz4NCj4gPiA+IA0KPiA+ID4gRGlyZWN0b3J5IHRyZWUgcmVwYWlycyBhcmUgdGhl IGxlYXN0IGNvbXBsZXRlIHBhcnQgb2Ygb25saW5lDQo+ID4gPiBmc2NrLA0KPiA+ID4gZHVlDQo+ ID4gPiB0byB0aGUgbGFjayBvZiBkaXJlY3RvcnkgcGFyZW50IHBvaW50ZXJzLsKgIEhvd2V2ZXIs IGV2ZW4gd2l0aG91dA0KPiA+ID4gdGhhdA0KPiA+ID4gZmVhdHVyZSwgd2UgY2FuIHN0aWxsIG1h a2Ugc29tZSBjb3JyZWN0aW9ucyB0byB0aGUgZGlyZWN0b3J5IHRyZWUNCj4gPiA+IC0tDQo+ID4g PiB3ZQ0KPiA+ID4gY2FuIHNhbHZhZ2UgYXMgbWFueSBkaXJlY3RvcnkgZW50cmllcyBhcyB3ZSBj YW4gZnJvbSBhIGRhbWFnZWQNCj4gPiA+IGRpcmVjdG9yeSwgYW5kIHdlIGNhbiByZWF0dGFjaCBv cnBoYW5lZCBpbm9kZXMgdG8gdGhlIGxvc3QrZm91bmQsDQo+ID4gPiBqdXN0DQo+ID4gPiBhcyB4 ZnNfcmVwYWlyIGRvZXMgbm93Lg0KPiA+ID4gDQo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBEYXJyaWNr IEouIFdvbmcgPGRqd29uZ0BrZXJuZWwub3JnPg0KPiA+ID4gLS0tDQo+ID4gPiB2MjQuMjogdXBk YXRlZCB3aXRoIG15IGxhdGVzdCB0aG91Z2h0cyBhYm91dCBob3cgdG8gdXNlIHBhcmVudA0KPiA+ ID4gcG9pbnRlcnMNCj4gPiA+IHYyNC4zOiB1cGRhdGVkIHRvIHJlZmxlY3QgdGhlIG9ubGluZSBm c2NrIGNvZGUgSSBidWlsdCBmb3IgcGFyZW50DQo+ID4gPiBwb2ludGVycw0KPiA+ID4gLS0tDQo+ ID4gPiDCoC4uLi9maWxlc3lzdGVtcy94ZnMtb25saW5lLWZzY2stZGVzaWduLnJzdMKgwqDCoMKg wqDCoMKgwqAgfMKgIDQxMA0KPiA+ID4gKysrKysrKysrKysrKysrKysrKysNCj4gPiA+IMKgMSBm aWxlIGNoYW5nZWQsIDQxMCBpbnNlcnRpb25zKCspDQo+ID4gPiANCj4gPiA+IGRpZmYgLS1naXQg YS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3hmcy1vbmxpbmUtZnNjay1kZXNpZ24ucnN0DQo+ ID4gPiBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMveGZzLW9ubGluZS1mc2NrLWRlc2lnbi5y c3QNCj4gPiA+IGluZGV4IGFmNzc1NWZlMDEwNy4uNTFkMDQwZTRhMmQwIDEwMDY0NA0KPiA+ID4g LS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy94ZnMtb25saW5lLWZzY2stZGVzaWduLnJz dA0KPiA+ID4gKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy94ZnMtb25saW5lLWZzY2st ZGVzaWduLnJzdA0KPiA+ID4gQEAgLTQzNTksMyArNDM1OSw0MTMgQEAgVGhlIHByb3Bvc2VkIHBh dGNoc2V0IGlzIHRoZQ0KPiA+ID4gwqBgZXh0ZW5kZWQgYXR0cmlidXRlIHJlcGFpcg0KPiA+ID4g wqA8DQo+ID4gPiBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dp dC9kandvbmcveGZzLWxpbnV4LmdpdC8NCj4gPiA+IGxvZy8/aD1yZXBhaXIteGF0dHJzPmBfDQo+ ID4gPiDCoHNlcmllcy4NCj4gPiA+ICsNCj4gPiA+ICtGaXhpbmcgRGlyZWN0b3JpZXMNCj4gPiA+ ICstLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiA+ICsNCj4gPiA+ICtGaXhpbmcgZGlyZWN0b3JpZXMg aXMgZGlmZmljdWx0IHdpdGggY3VycmVudGx5IGF2YWlsYWJsZQ0KPiA+ID4gZmlsZXN5c3RlbQ0K PiA+ID4gZmVhdHVyZXMsDQo+ID4gPiArc2luY2UgZGlyZWN0b3J5IGVudHJpZXMgYXJlIG5vdCBy ZWR1bmRhbnQuDQo+ID4gPiArVGhlIG9mZmxpbmUgcmVwYWlyIHRvb2wgc2NhbnMgYWxsIGlub2Rl cyB0byBmaW5kIGZpbGVzIHdpdGgNCj4gPiA+IG5vbnplcm8NCj4gPiA+IGxpbmsgY291bnQsDQo+ ID4gPiArYW5kIHRoZW4gaXQgc2NhbnMgYWxsIGRpcmVjdG9yaWVzIHRvIGVzdGFibGlzaCBwYXJl bnRhZ2Ugb2YNCj4gPiA+IHRob3NlDQo+ID4gPiBsaW5rZWQgZmlsZXMuDQo+ID4gPiArRGFtYWdl ZCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgYXJlIHphcHBlZCwgYW5kIGZpbGVzIHdpdGggbm8NCj4g PiA+IHBhcmVudA0KPiA+ID4gYXJlDQo+ID4gPiArbW92ZWQgdG8gdGhlIGBgL2xvc3QrZm91bmRg YCBkaXJlY3RvcnkuDQo+ID4gPiArSXQgZG9lcyBub3QgdHJ5IHRvIHNhbHZhZ2UgYW55dGhpbmcu DQo+ID4gPiArDQo+ID4gPiArVGhlIGJlc3QgdGhhdCBvbmxpbmUgcmVwYWlyIGNhbiBkbyBhdCB0 aGlzIHRpbWUgaXMgdG8gcmVhZA0KPiA+ID4gZGlyZWN0b3J5DQo+ID4gPiBkYXRhDQo+ID4gPiAr YmxvY2tzIGFuZCBzYWx2YWdlIGFueSBkaXJlbnRzIHRoYXQgbG9vayBwbGF1c2libGUsIGNvcnJl Y3QgbGluaw0KPiA+ID4gY291bnRzLCBhbmQNCj4gPiA+ICttb3ZlIG9ycGhhbnMgYmFjayBpbnRv IHRoZSBkaXJlY3RvcnkgdHJlZS4NCj4gPiA+ICtUaGUgc2FsdmFnZSBwcm9jZXNzIGlzIGRpc2N1 c3NlZCBpbiB0aGUgY2FzZSBzdHVkeSBhdCB0aGUgZW5kIG9mDQo+ID4gPiB0aGlzIHNlY3Rpb24u DQo+ID4gPiArVGhlIDpyZWY6YGZpbGUgbGluayBjb3VudCBmc2NrIDxubGlua3M+YCBjb2RlIHRh a2VzIGNhcmUgb2YNCj4gPiA+IGZpeGluZw0KPiA+ID4gbGluayBjb3VudHMNCj4gPiA+ICthbmQg bW92aW5nIG9ycGhhbnMgdG8gdGhlIGBgL2xvc3QrZm91bmRgYCBkaXJlY3RvcnkuDQo+ID4gPiAr DQo+ID4gPiArQ2FzZSBTdHVkeTogU2FsdmFnaW5nIERpcmVjdG9yaWVzDQo+ID4gPiArYGBgYGBg YGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgDQo+ID4gPiArDQo+ID4gPiArVW5saWtlIGV4dGVu ZGVkIGF0dHJpYnV0ZXMsIGRpcmVjdG9yeSBibG9ja3MgYXJlIGFsbCB0aGUgc2FtZQ0KPiA+ID4g c2l6ZSwNCj4gPiA+IHNvDQo+ID4gPiArc2FsdmFnaW5nIGRpcmVjdG9yaWVzIGlzIHN0cmFpZ2h0 Zm9yd2FyZDoNCj4gPiA+ICsNCj4gPiA+ICsxLiBGaW5kIHRoZSBwYXJlbnQgb2YgdGhlIGRpcmVj dG9yeS4NCj4gPiA+ICvCoMKgIElmIHRoZSBkb3Rkb3QgZW50cnkgaXMgbm90IHVucmVhZGFibGUs IHRyeSB0byBjb25maXJtIHRoYXQNCj4gPiA+IHRoZQ0KPiA+ID4gYWxsZWdlZA0KPiA+ID4gK8Kg wqAgcGFyZW50IGhhcyBhIGNoaWxkIGVudHJ5IHBvaW50aW5nIGJhY2sgdG8gdGhlIGRpcmVjdG9y eSBiZWluZw0KPiA+ID4gcmVwYWlyZWQuDQo+ID4gPiArwqDCoCBPdGhlcndpc2UsIHdhbGsgdGhl IGZpbGVzeXN0ZW0gdG8gZmluZCBpdC4NCj4gPiA+ICsNCj4gPiA+ICsyLiBXYWxrIHRoZSBmaXJz dCBwYXJ0aXRpb24gb2YgZGF0YSBmb3JrIG9mIHRoZSBkaXJlY3RvcnkgdG8NCj4gPiA+IGZpbmQN Cj4gPiA+IHRoZSBkaXJlY3RvcnkNCj4gPiA+ICvCoMKgIGVudHJ5IGRhdGEgYmxvY2tzLg0KPiA+ ID4gK8KgwqAgV2hlbiBvbmUgaXMgZm91bmQsDQo+ID4gPiArDQo+ID4gPiArwqDCoCBhLiBXYWxr IHRoZSBkaXJlY3RvcnkgZGF0YSBibG9jayB0byBmaW5kIGNhbmRpZGF0ZSBlbnRyaWVzLg0KPiA+ ID4gK8KgwqDCoMKgwqAgV2hlbiBhbiBlbnRyeSBpcyBmb3VuZDoNCj4gPiA+ICsNCj4gPiA+ICvC oMKgwqDCoMKgIGkuIENoZWNrIHRoZSBuYW1lIGZvciBwcm9ibGVtcywgYW5kIGlnbm9yZSB0aGUg bmFtZSBpZg0KPiA+ID4gdGhlcmUNCj4gPiA+IGFyZS4NCj4gPiA+ICsNCj4gPiA+ICvCoMKgwqDC oMKgIGlpLiBSZXRyaWV2ZSB0aGUgaW51bWJlciBhbmQgZ3JhYiB0aGUgaW5vZGUuDQo+ID4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgIElmIHRoYXQgc3VjY2VlZHMsIGFkZCB0aGUgbmFtZSwgaW5vZGUg bnVtYmVyLCBhbmQgZmlsZQ0KPiA+ID4gdHlwZSB0byB0aGUNCj4gPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqAgc3RhZ2luZyB4ZmFycmF5IGFuZCB4YmxvYi4NCj4gPiA+ICsNCj4gPiA+ICszLiBJZiB0 aGUgbWVtb3J5IHVzYWdlIG9mIHRoZSB4ZmFycmF5IGFuZCB4ZmJsb2IgZXhjZWVkIGENCj4gPiA+ IGNlcnRhaW4NCj4gPiA+IGFtb3VudCBvZg0KPiA+ID4gK8KgwqAgbWVtb3J5IG9yIHRoZXJlIGFy ZSBubyBtb3JlIGRpcmVjdG9yeSBkYXRhIGJsb2NrcyB0byBleGFtaW5lLA0KPiA+ID4gdW5sb2Nr IHRoZQ0KPiA+ID4gK8KgwqAgZGlyZWN0b3J5IGFuZCBhZGQgdGhlIHN0YWdlZCBkaXJlbnRzIGlu dG8gdGhlIHRlbXBvcmFyeQ0KPiA+ID4gZGlyZWN0b3J5Lg0KPiA+ID4gK8KgwqAgVHJ1bmNhdGUg dGhlIHN0YWdpbmcgZmlsZXMuDQo+ID4gPiArDQo+ID4gPiArNC4gVXNlIGF0b21pYyBleHRlbnQg c3dhcHBpbmcgdG8gZXhjaGFuZ2UgdGhlIG5ldyBhbmQgb2xkDQo+ID4gPiBkaXJlY3RvcnkNCj4g PiA+IHN0cnVjdHVyZXMuDQo+ID4gPiArwqDCoCBUaGUgb2xkIGRpcmVjdG9yeSBibG9ja3MgYXJl IG5vdyBhdHRhY2hlZCB0byB0aGUgdGVtcG9yYXJ5DQo+ID4gPiBmaWxlLg0KPiA+ID4gKw0KPiA+ ID4gKzUuIFJlYXAgdGhlIHRlbXBvcmFyeSBmaWxlLg0KPiA+ID4gKw0KPiA+IA0KPiA+IA0KPiA+ IA0KPiA+ID4gKyoqRnV0dXJlIFdvcmsgUXVlc3Rpb24qKjogU2hvdWxkIHJlcGFpciByZXZhbGlk YXRlIHRoZSBkZW50cnkNCj4gPiA+IGNhY2hlDQo+ID4gPiB3aGVuDQo+ID4gPiArcmVidWlsZGlu ZyBhIGRpcmVjdG9yeT8NCj4gPiA+ICsNCj4gPiA+ICsqQW5zd2VyKjogWWVzLCB0aG91Z2ggdGhl IGN1cnJlbnQgZGVudHJ5IGNhY2hlIGNvZGUgZG9lc24ndA0KPiA+ID4gcHJvdmlkZQ0KPiA+ID4g YSBtZWFucw0KPiA+ID4gK3RvIHdhbGsgZXZlcnkgZGVudHJ5IG9mIGEgc3BlY2lmaWMgZGlyZWN0 b3J5Lg0KPiA+ID4gK0lmIHRoZSBjYWNoZSBjb250YWlucyBhbiBlbnRyeSB0aGF0IHRoZSBzYWx2 YWdpbmcgY29kZSBkb2VzIG5vdA0KPiA+ID4gZmluZCwgdGhlDQo+ID4gPiArcmVwYWlyIGNhbm5v dCBwcm9jZWVkLg0KPiA+ID4gKw0KPiA+ID4gKyoqRnV0dXJlIFdvcmsgUXVlc3Rpb24qKjogQ2Fu IHRoZSBkZW50cnkgY2FjaGUga25vdyBhYm91dCBhDQo+ID4gPiBkaXJlY3RvcnkgZW50cnkNCj4g PiA+ICt0aGF0IGNhbm5vdCBiZSBzYWx2YWdlZD8NCj4gPiA+ICsNCj4gPiA+ICsqQW5zd2VyKjog SW4gdGhlb3J5LCB0aGUgZGVudHJ5IGNhY2hlIHNob3VsZCBiZSBhIHN1YnNldCBvZiB0aGUNCj4g PiA+IGRpcmVjdG9yeQ0KPiA+ID4gK2VudHJpZXMgb24gZGlzayBiZWNhdXNlIHRoZXJlJ3Mgbm8g d2F5IHRvIGxvYWQgYSBkZW50cnkgd2l0aG91dA0KPiA+ID4gaGF2aW5nDQo+ID4gPiArc29tZXRo aW5nIHRvIHJlYWQgaW4gdGhlIGRpcmVjdG9yeS4NCj4gPiA+ICtIb3dldmVyLCBpdCBpcyBwb3Nz aWJsZSBmb3IgYSBjb2hlcmVuY3kgcHJvYmxlbSB0byBiZSBpbnRyb2R1Y2VkDQo+ID4gPiBpZg0K PiA+ID4gdGhlIG9uZGlzaw0KPiA+ID4gK3N0cnVjdHVyZXMgYmVjb21lcyBjb3JydXB0ICphZnRl ciogdGhlIGNhY2hlIGxvYWRzLg0KPiA+ID4gK0luIHRoZW9yeSBpdCBpcyBuZWNlc3NhcnkgdG8g c2NhbiBhbGwgZGVudHJ5IGNhY2hlIGVudHJpZXMgZm9yIGENCj4gPiA+IGRpcmVjdG9yeSB0bw0K PiA+ID4gK2Vuc3VyZSB0aGF0IG9uZSBvZiB0aGUgZm9sbG93aW5nIGFwcGx5Og0KPiA+IA0KPiA+ ICJDdXJyZW50bHkgdGhlIGRlbnRyeSBjYWNoZSBjb2RlIGRvZXNuJ3QgcHJvdmlkZSBhIG1lYW5z IHRvIHdhbGsNCj4gPiBldmVyeQ0KPiA+IGRlbnRyeSBvZiBhIHNwZWNpZmljIGRpcmVjdG9yeS7C oCBUaGlzIG1ha2VzIHZhbGlkYXRpb24gb2YgdGhlDQo+ID4gcmVidWlsdA0KPiA+IGRpcmVjdG9y eSBkaWZmaWN1bHQsIGFuZCBpdCBpcyBwb3NzaWJsZSB0aGF0IGFuIG9uZGlzayBzdHJ1Y3R1cmUg dG8NCj4gPiBiZWNvbWUgY29ycnVwdCAqYWZ0ZXIqIHRoZSBjYWNoZSBsb2Fkcy7CoCBXYWxraW5n IHRoZSBkZW50cnkgY2FjaGUNCj4gPiBpcw0KPiA+IGN1cnJlbnRseSBiZWluZyBjb25zaWRlcmVk IGFzIGEgZnV0dXJlIGltcHJvdmVtZW50LsKgIFRoaXMgd2lsbCBhbHNvDQo+ID4gZW5hYmxlIHRo ZSBhYmlsaXR5IHRvIHJlcG9ydCB3aGljaCBlbnRyaWVzIHdlcmUgbm90IHNhbHZhZ2VhYmxlDQo+ ID4gc2luY2UNCj4gPiB0aGVzZSB3aWxsIGJlIHRoZSBzdWJzZXQgb2YgZW50cmllcyB0aGF0IGFy ZSBhYnNlbnQgYWZ0ZXIgdGhlIHdhbGsuDQo+ID4gVGhpcyBpbXByb3ZlbWVudCB3aWxsIGVuc3Vy ZSB0aGF0IG9uZSBvZiB0aGUgZm9sbG93aW5nIGFwcGx5OiINCj4gDQo+IFRoZSB0aGluZyBpcyAt LSBJJ20gbm90IGNvbnNpZGVyaW5nIHJlc3RydWN0dXJpbmcgdGhlIGRlbnRyeSBjYWNoZS7CoA0K PiBUaGUNCj4gY2FjaGUga2V5IGlzIGEgb25lLXdheSBoYXNoIGZ1bmN0aW9uIG9mIHRoZSBwYXJl bnRfaW5vIGFuZCB0aGUgZGlyZW50DQo+IG5hbWUsIGFuZCBJIGNhbid0IGV2ZW4gaW1hZ2luZSBo b3cgb25lIHdvdWxkIHN1cHBvcnQgdXNpbmcgdGhhdCBmb3INCj4gYXJiaXRyYXJ5IGxvb2t1cHMg b3Igd2Fsa3MuDQo+IA0KPiBUaGlzIGlzIHRoZSBnaWFudCBob2xlIGluIGFsbCBvZiB0aGUgb25s aW5lIHJlcGFpciBjb2RlIC0tIHRoZSBkZXNpZ24NCj4gb2YNCj4gdGhlIGRlbnRyeSBjYWNoZSBp cyBzdWNoIHRoYXQgd2UgY2FuJ3QgaW52YWxpZGF0ZSB0aGUgZW50aXJlIGNhY2hlLsKgDQo+IFdl DQo+IGFsc28gY2Fubm90IHdhbGsgaXQgdG8gcGVyZm9ybSB0YXJnZXRlZCBpbnZhbGlkYXRpb24g b2YganVzdCB0aGUNCj4gcGllY2VzDQo+IHdlIHdhbnQuwqAgSWYgYWZ0ZXIgYSByZXBhaXIgdGhl IGNhY2hlIGNvbnRhaW5zIGEgZGVudHJ5IHRoYXQgaXNuJ3QNCj4gYmFja2VkIGJ5IGFuIGFjdHVh bCBvbmRpc2sgZGlyZWN0b3J5IGVudHJ5IC4uLiBrYWJvb20uDQo+IA0KPiBUaGUgb25lIHRoaW5n IEknbGwgZ3JhbnQgeW91IGlzIHRoYXQgSSBkb24ndCB0aGluayBpdCdzIGxpa2VseSB0aGF0DQo+ IHRoZQ0KPiBkZW50cnkgY2FjaGUgd2lsbCBnZXQgcG9wdWxhdGVkIHdpdGggc29tZSBpbmZvcm1h dGlvbiBhbmQgbGF0ZXIgdGhlDQo+IG9uZGlzayBkaXJlY3RvcnkgYml0cm90cyB1bmRldGVjdGFi bHkuDQo+IA0KPiA+ID8NCj4gPiANCj4gPiBJIGp1c3QgdGhpbmsgaXQgcmVhZHMgY2xlYW5lci7C oCBJIHJlYWxpemUgdGhpcyBpcyBhbiBhcmVhIHRoYXQNCj4gPiBzdGlsbA0KPiA+IHNvcnQgb2Yg aW4gZmx1eCwgYnV0IGRlZmluaXRlbHkgYmVmb3JlIHdlIGNhbGwgdGhlIGRvY3VtZW50IGRvbmUg d2UNCj4gPiBzaG91bGQgcHJvYmFibHkgc3RyaXAgb3V0IHRoZSBRJ3MgYW5kIGp1c3QgZG9jdW1l bnQgdGhlIEEncy7CoCBJZg0KPiA+IHNvbWVvbmUgcmUtcmFpc2VzIHRoZSBRJ3Mgd2UgY2FuIGFs d2F5cyByZWZlciB0byB0aGUgYXJjaGl2ZXMgYW5kDQo+ID4gdGhlbg0KPiA+IGhhdmUgdGhlIGRp c2N1c3Npb24gb24gdGhlIG1haWxpbmcgbGlzdC7CoCBCdXQgSSB0aGluayB0aGUgZG9jdW1lbnQN Cj4gPiBzaG91bGQgbWFpbnRhaW4gdGhlIGdvYWwgb2YgbWFraW5nIGNsZWFyIHdoYXRldmVyIHRo ZSBjdXJyZW50IHBsYW4NCj4gPiBpcw0KPiA+IGp1c3QgdG8ga2VlcCBpdCByZWFkaW5nIGNsZWFu bHkuIA0KPiANCj4gWWVhaCwgSSdsbCBzaG9ydGVuIHRoaXMgc2VjdGlvbiBzbyB0aGF0IGl0IG9u bHkgbWVudGlvbnMgdGhlc2UgdGhpbmdzDQo+IG9uY2UgYW5kIGNsZWFybHkgc3RhdGVzIHRoYXQg SSBoYXZlIG5vIHNvbHV0aW9uLg0KSSBzZWUsIHllcyBJIGdvdCB0aGUgaW1wcmVzc2lvbiBmcm9t IHRoZSBvcmlnaW5hbCBwaHJhc2luZyB0aGF0IGlzIHdhcw0KYW4gaW50ZW5kZWQgInRvZG8iLCBz byBjbGFyaWZ5aW5nIHRoYXQgaXRzIG5vdCBzaG91bGQgaGVscC4gDQoNCj4gDQo+ID4gPiArDQo+ ID4gPiArMS4gVGhlIGNhY2hlZCBkZW50cnkgcmVmbGVjdHMgYW4gb25kaXNrIGRpcmVudCBpbiB0 aGUgbmV3DQo+ID4gPiBkaXJlY3RvcnkuDQo+ID4gPiArDQo+ID4gPiArMi4gVGhlIGNhY2hlZCBk ZW50cnkgbm8gbG9uZ2VyIGhhcyBhIGNvcnJlc3BvbmRpbmcgb25kaXNrIGRpcmVudA0KPiA+ID4g aW4NCj4gPiA+IHRoZSBuZXcNCj4gPiA+ICvCoMKgIGRpcmVjdG9yeSBhbmQgdGhlIGRlbnRyeSBj YW4gYmUgcHVyZ2VkIGZyb20gdGhlIGNhY2hlLg0KPiA+ID4gKw0KPiA+ID4gKzMuIFRoZSBjYWNo ZWQgZGVudHJ5IG5vIGxvbmdlciBoYXMgYW4gb25kaXNrIGRpcmVudCBidXQgdGhlDQo+ID4gPiBk ZW50cnkNCj4gPiA+IGNhbm5vdCBiZQ0KPiA+ID4gK8KgwqAgcHVyZ2VkLg0KPiA+IA0KPiA+ID4g K8KgwqAgVGhpcyBpcyBiYWQuDQo+ID4gVGhlc2UgZW50cmllcyBhcmUgaXJyZWNvdmVyYWJsZSwg YnV0IGNhbiBub3cgYmUgcmVwb3J0ZWQuDQo+ID4gDQo+ID4gDQo+ID4gDQo+ID4gPiArDQo+ID4g PiArQXMgbWVudGlvbmVkIGFib3ZlLCB0aGUgZGVudHJ5IGNhY2hlIGRvZXMgbm90IGhhdmUgYSBt ZWFucyB0bw0KPiA+ID4gd2Fsaw0KPiA+ID4gYWxsIHRoZQ0KPiA+ID4gK2RlbnRyaWVzIHdpdGgg YSBwYXJ0aWN1bGFyIGRpcmVjdG9yeSBhcyBhIHBhcmVudC4NCj4gPiA+ICtUaGlzIG1ha2VzIGRl dGVjdGluZyBzaXR1YXRpb25zICMyIGFuZCAjMyBpbXBvc3NpYmxlLCBhbmQNCj4gPiA+IHJlbWFp bnMgYW4NCj4gPiA+ICtpbnRlcmVzdGluZyBxdWVzdGlvbiBmb3IgcmVzZWFyY2guDQo+ID4gSSB0 aGluayB0aGUgYWJvdmUgcGFyYXBocmFzZSBtYWtlcyB0aGlzIGxhc3QgYml0IHJlZHVuZGFudC4N Cj4gDQo+IE4NCk5vdCBzdXJlIGlmIHRoaXMgaXMgIm5vIiBvciBhbiB1bmZpbmlzaGVkIHRob3Vn aHQ/DQoNCj4gDQo+ID4gPiArDQo+ID4gPiArVGhlIHByb3Bvc2VkIHBhdGNoc2V0IGlzIHRoZQ0K PiA+ID4gK2BkaXJlY3RvcnkgcmVwYWlyDQo+ID4gPiArPA0KPiA+ID4gaHR0cHM6Ly9naXQua2Vy bmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvZGp3b25nL3hmcy1saW51eC5naXQvDQo+ ID4gPiBsb2cvP2g9cmVwYWlyLWRpcnM+YF8NCj4gPiA+ICtzZXJpZXMuDQo+ID4gPiArDQo+ID4g PiArUGFyZW50IFBvaW50ZXJzDQo+ID4gPiArYGBgYGBgYGBgYGBgYGBgDQo+ID4gPiArDQo+ID4g IkdlbmVyYWxseSBzcGVha2luZywgYSBwYXJlbnQgcG9pbnRlciBpcyBhbnkga2luZCBvZiBtZXRh ZGF0YSB0aGF0DQo+ID4gZW5hYmxlcyBhbiBpbm9kZSB0byBsb2NhdGUgaXRzIHBhcmVudCB3aXRo IG91dCBoYXZpbmcgdG8gdHJhdmVyc2UNCj4gPiB0aGUNCj4gPiBkaXJlY3RvcnkgdHJlZSBmcm9t IHRoZSByb290LiINCj4gPiANCj4gPiA+ICtUaGUgbGFjayBvZiBzZWNvbmRhcnkgZGlyZWN0b3J5 IG1ldGFkYXRhIGhpbmRlcnMgZGlyZWN0b3J5IHRyZWUNCj4gPiAiV2l0aG91dCB0aGVtLCB0aGUg bGFjayBvZiBzZWNvbmRhcnkuLi4iIA0KPiANCj4gT2suwqAgSSB3YW50IHRvIHJld29yZCB0aGUg Zmlyc3Qgc2VudGVuY2Ugc2xpZ2h0bHksIHlpZWxkaW5nIHRoaXM6DQo+IA0KPiAiQSBwYXJlbnQg cG9pbnRlciBpcyBhIHBpZWNlIG9mIGZpbGUgbWV0YWRhdGEgdGhhdCBlbmFibGVzIGEgdXNlciB0 bw0KPiBsb2NhdGUgdGhlIGZpbGUncyBwYXJlbnQgZGlyZWN0b3J5IHdpdGhvdXQgaGF2aW5nIHRv IHRyYXZlcnNlIHRoZQ0KPiBkaXJlY3RvcnkgdHJlZSBmcm9tIHRoZSByb290LsKgIFdpdGhvdXQg dGhlbSwgcmVjb25zdHJ1Y3Rpb24gb2YNCj4gZGlyZWN0b3J5DQo+IHRyZWVzIGlzIGhpbmRlcmVk IGluIG11Y2ggdGhlIHNhbWUgd2F5IHRoYXQgdGhlIGhpc3RvcmljIGxhY2sgb2YNCj4gcmV2ZXJz ZQ0KPiBzcGFjZSBtYXBwaW5nIGluZm9ybWF0aW9uIG9uY2UgaGluZGVyZWQgcmVjb25zdHJ1Y3Rp b24gb2YgZmlsZXN5c3RlbQ0KPiBzcGFjZSBtZXRhZGF0YS7CoCBUaGUgcGFyZW50IHBvaW50ZXIg ZmVhdHVyZSwgaG93ZXZlciwgbWFrZXMgdG90YWwNCj4gZGlyZWN0b3J5IHJlY29uc3RydWN0aW9u DQo+IHBvc3NpYmxlLiINCg0KQWxyaWdodHksIHRoYXQgc291bmRzIGdvb2QNCg0KPiANCj4gQnV0 IHRoYXQncyBhIG11Y2ggYmV0dGVyIHN0YXJ0IHRvIHRoZSBwYXJhZ3JhcGgsIHRoYW5rIHlvdS4N Cj4gDQo+ID4gPiByZWNvbnN0cnVjdGlvbg0KPiA+ID4gK2luIG11Y2ggdGhlIHNhbWUgd2F5IHRo YXQgdGhlIGhpc3RvcmljIGxhY2sgb2YgcmV2ZXJzZSBzcGFjZQ0KPiA+ID4gbWFwcGluZw0KPiA+ ID4gK2luZm9ybWF0aW9uIG9uY2UgaGluZGVyZWQgcmVjb25zdHJ1Y3Rpb24gb2YgZmlsZXN5c3Rl bSBzcGFjZQ0KPiA+ID4gbWV0YWRhdGEuDQo+ID4gPiArVGhlIHBhcmVudCBwb2ludGVyIGZlYXR1 cmUsIGhvd2V2ZXIsIG1ha2VzIHRvdGFsIGRpcmVjdG9yeQ0KPiA+ID4gcmVjb25zdHJ1Y3Rpb24N Cj4gPiA+ICtwb3NzaWJsZS4NCj4gPiA+ICsNCj4gPiANCj4gPiBIaXN0b3J5IHNpZGUgYmFyIHRo ZSBiZWxvdyBjaHVuay4uLg0KPiANCj4gRG9uZS4NCj4gDQo+ID4gPiArRGlyZWN0b3J5IHBhcmVu dCBwb2ludGVycyB3ZXJlIGZpcnN0IHByb3Bvc2VkIGFzIGFuIFhGUyBmZWF0dXJlDQo+ID4gPiBt b3JlDQo+ID4gPiB0aGFuIGENCj4gPiA+ICtkZWNhZGUgYWdvIGJ5IFNHSS4NCj4gPiA+ICtFYWNo IGxpbmsgZnJvbSBhIHBhcmVudCBkaXJlY3RvcnkgdG8gYSBjaGlsZCBmaWxlIGlzIG1pcnJvcmVk DQo+ID4gPiB3aXRoDQo+ID4gPiBhbiBleHRlbmRlZA0KPiA+ID4gK2F0dHJpYnV0ZSBpbiB0aGUg Y2hpbGQgdGhhdCBjb3VsZCBiZSB1c2VkIHRvIGlkZW50aWZ5IHRoZSBwYXJlbnQNCj4gPiA+IGRp cmVjdG9yeS4NCj4gPiA+ICtVbmZvcnR1bmF0ZWx5LCB0aGlzIGVhcmx5IGltcGxlbWVudGF0aW9u IGhhZCBtYWpvciBzaG9ydGNvbWluZ3MNCj4gPiA+IGFuZA0KPiA+ID4gd2FzIG5ldmVyDQo+ID4g PiArbWVyZ2VkIGludG8gTGludXggWEZTOg0KPiA+ID4gKw0KPiA+ID4gKzEuIFRoZSBYRlMgY29k ZWJhc2Ugb2YgdGhlIGxhdGUgMjAwMHMgZGlkIG5vdCBoYXZlIHRoZQ0KPiA+ID4gaW5mcmFzdHJ1 Y3R1cmUgdG8NCj4gPiA+ICvCoMKgIGVuZm9yY2Ugc3Ryb25nIHJlZmVyZW50aWFsIGludGVncml0 eSBpbiB0aGUgZGlyZWN0b3J5IHRyZWUuDQo+ID4gPiArwqDCoCBJdCBkaWQgbm90IGd1YXJhbnRl ZSB0aGF0IGEgY2hhbmdlIGluIGEgZm9yd2FyZCBsaW5rIHdvdWxkDQo+ID4gPiBhbHdheXMNCj4g PiA+IGJlDQo+ID4gPiArwqDCoCBmb2xsb3dlZCB1cCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGNo YW5nZSB0byB0aGUgcmV2ZXJzZQ0KPiA+ID4gbGlua3MuDQo+ID4gPiArDQo+ID4gPiArMi4gUmVm ZXJlbnRpYWwgaW50ZWdyaXR5IHdhcyBub3QgaW50ZWdyYXRlZCBpbnRvIG9mZmxpbmUgcmVwYWly Lg0KPiA+ID4gK8KgwqAgQ2hlY2tpbmcgYW5kIHJlcGFpcnMgd2VyZSBwZXJmb3JtZWQgb24gbW91 bnRlZCBmaWxlc3lzdGVtcw0KPiA+ID4gd2l0aG91dCB0YWtpbmcNCj4gPiA+ICvCoMKgIGFueSBr ZXJuZWwgb3IgaW5vZGUgbG9ja3MgdG8gY29vcmRpbmF0ZSBhY2Nlc3MuDQo+ID4gPiArwqDCoCBJ dCBpcyBub3QgY2xlYXIgaG93IHRoaXMgYWN0dWFsbHkgd29ya2VkIHByb3Blcmx5Lg0KPiA+ID4g Kw0KPiA+ID4gKzMuIFRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgZGlkIG5vdCByZWNvcmQgdGhlIG5h bWUgb2YgdGhlDQo+ID4gPiBkaXJlY3RvcnkNCj4gPiA+IGVudHJ5IGluIHRoZQ0KPiA+ID4gK8Kg wqAgcGFyZW50LCBzbyB0aGUgU0dJIHBhcmVudCBwb2ludGVyIGltcGxlbWVudGF0aW9uIGNhbm5v dCBiZQ0KPiA+ID4gdXNlZA0KPiA+ID4gdG8gcmVjb25uZWN0DQo+ID4gPiArwqDCoCB0aGUgZGly ZWN0b3J5IHRyZWUuDQo+ID4gPiArDQo+ID4gPiArNC4gRXh0ZW5kZWQgYXR0cmlidXRlIGZvcmtz IG9ubHkgc3VwcG9ydCA2NSw1MzYgZXh0ZW50cywgd2hpY2gNCj4gPiA+IG1lYW5zDQo+ID4gPiB0 aGF0DQo+ID4gPiArwqDCoCBwYXJlbnQgcG9pbnRlciBhdHRyaWJ1dGUgY3JlYXRpb24gaXMgbGlr ZWx5IHRvIGZhaWwgYXQgc29tZQ0KPiA+ID4gcG9pbnQNCj4gPiA+IGJlZm9yZSB0aGUNCj4gPiA+ ICvCoMKgIG1heGltdW0gZmlsZSBsaW5rIGNvdW50IGlzIGFjaGlldmVkLg0KPiA+IA0KPiA+IA0K PiA+ICJUaGUgb3JpZ2luYWwgcGFyZW50IHBvaW50ZXIgZGVzaWduIHdhcyB0b28gdW5zdGFibGUg Zm9yIHNvbWV0aGluZw0KPiA+IGxpa2UNCj4gPiBhIGZpbGUgc3lzdGVtIHJlcGFpciB0byBkZXBl bmQgb24uIg0KPiANCj4gRXIuLi4gSSB0aGluayB0aGlzIGlzIGFkZHJlc3NlZCBieSAjMiBhYm92 ZT8NClNvcnJ5LCBJIG1lYW50IGZvciB0aGUgaGlzdG9yeSBzaWRlIGJhciB0byBnbyB0aHJvdWdo IHRoZSBsaXN0LCBhbmQNCnRoZW4gYWRkIHRoYXQgcXVvdGF0aW9uIHRvIGNvbm5lY3QgdGhlIHBh cmFncmFwaHMuICBJbiBhIHdheSwgc2ltcGx5DQp0YWxraW5nIGFib3V0IHRoZSBuZXcgaW1wcm92 ZW1lbnRzIGJlbG93IGltcGxpZXMgZXZlcnl0aGluZyB0aGF0IHRoZQ0Kb2xkIGRlc2lnbiBsYWNr ZWQuDQoNCj4gDQo+ID4gPiArDQo+ID4gPiArQWxsaXNvbiBIZW5kZXJzb24sIENoYW5kYW4gQmFi dSwgYW5kIENhdGhlcmluZSBIb2FuZyBhcmUgd29ya2luZw0KPiA+ID4gb24NCj4gPiA+IGEgc2Vj b25kDQo+ID4gPiAraW1wbGVtZW50YXRpb24gdGhhdCBzb2x2ZXMgYWxsIHNob3J0Y29taW5ncyBv ZiB0aGUgZmlyc3QuDQo+ID4gPiArRHVyaW5nIDIwMjIsIEFsbGlzb24gaW50cm9kdWNlZCBsb2cg aW50ZW50IGl0ZW1zIHRvIHRyYWNrDQo+ID4gPiBwaHlzaWNhbA0KPiA+ID4gK21hbmlwdWxhdGlv bnMgb2YgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBzdHJ1Y3R1cmVzLg0KPiA+ID4gK1RoaXMgc29s dmVzIHRoZSByZWZlcmVudGlhbCBpbnRlZ3JpdHkgcHJvYmxlbSBieSBtYWtpbmcgaXQNCj4gPiA+ IHBvc3NpYmxlDQo+ID4gPiB0byBjb21taXQNCj4gPiA+ICthIGRpcmVudCB1cGRhdGUgYW5kIGEg cGFyZW50IHBvaW50ZXIgdXBkYXRlIGluIHRoZSBzYW1lDQo+ID4gPiB0cmFuc2FjdGlvbi4NCj4g PiA+ICtDaGFuZGFuIGluY3JlYXNlZCB0aGUgbWF4aW11bSBleHRlbnQgY291bnRzIG9mIGJvdGgg ZGF0YSBhbmQNCj4gPiA+IGF0dHJpYnV0ZSBmb3JrcywNCj4gPiANCj4gPiA+ICt0aGVyZWJ5IGFk ZHJlc3NpbmcgdGhlIGZvdXJ0aCBwcm9ibGVtLg0KPiA+IHdoaWNoIGVuc3VyZXMgdGhlIHBhcmVu dCBwb2ludGVyIGNyZWF0aW9uIHdpbGwgc3VjY2VlZCBldmVuIGlmIHRoZQ0KPiA+IG1heA0KPiA+ IGV4dGVudCBjb3VudCBpcyByZWFjaGVkLg0KPiANCj4gVGhlIG1heCBleHRlbnQgY291bnQgY2Fu bm90IGJlIGV4Y2VlZGVkLCBidXQgdGhlIG5yZXh0NjQgZmVhdHVyZQ0KPiBlbnN1cmVzDQo+IHRo YXQgdGhlIHhhdHRyIHN0cnVjdHVyZSBjYW4gZ3JvdyBlbm91Z2ggdG8gaGFuZGxlIG1heGltYWwN Cj4gaGFyZGxpbmtpbmcuDQo+IA0KPiAiQ2hhbmRhbiBpbmNyZWFzZWQgdGhlIG1heGltdW0gZXh0 ZW50IGNvdW50cyBvZiBib3RoIGRhdGEgYW5kDQo+IGF0dHJpYnV0ZQ0KPiBmb3JrcywgdGhlcmVi eSBlbnN1cmluZyB0aGF0IHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgc3RydWN0dXJlIGNhbg0KPiBn cm93DQo+IHRvIGhhbmRsZSB0aGUgbWF4aW11bSBoYXJkbGluayBjb3VudCBvZiBhbnkgZmlsZS4i DQoNCk9rLCBzb3VuZHMgZ29vZC4NCg0KPiANCj4gPiA+ICsNCj4gPiA+ICtUbyBzb2x2ZSB0aGUg dGhpcmQgcHJvYmxlbSwgcGFyZW50IHBvaW50ZXJzIGluY2x1ZGUgdGhlIGRpcmVudA0KPiA+ID4g bmFtZQ0KPiA+ICJMYXN0bHksIHRoZSBuZXcgZGVzaWduIGluY2x1ZGVzIHRoZSBkaXJlbnQgbmFt ZS4uLiINCj4gDQo+IDxub2Q+DQo+IA0KPiA+ID4gYW5kDQo+ID4gPiArbG9jYXRpb24gb2YgdGhl IGVudHJ5IHdpdGhpbiB0aGUgcGFyZW50IGRpcmVjdG9yeS4NCj4gPiA+ICtJbiBvdGhlciB3b3Jk cywgY2hpbGQgZmlsZXMgdXNlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gc3RvcmUNCj4gPiA+IHBv aW50ZXJzIHRvDQo+ID4gPiArcGFyZW50cyBpbiB0aGUgZm9ybSBgYChwYXJlbnRfaW51bSwgcGFy ZW50X2dlbiwgZGlyZW50X3Bvcykg4oaSDQo+ID4gPiAoZGlyZW50X25hbWUpYGAuDQo+ID4gVGhp cyBwYXJ0cyBzdGlsbCBpbiBmbHV4LCBzbyBwcm9iYWJseSB0aGlzIHdpbGwgaGF2ZSB0byBnZXQg dXBkYXRlZA0KPiA+IGxhdGVyLi4uDQo+IA0KPiBZZXAsIEknbGwgYWRkIGEgbm90ZSBhYm91dCB0 aGF0Lg0KPiANCj4gPiA+ICsNCj4gPiA+ICtPbiBhIGZpbGVzeXN0ZW0gd2l0aCBwYXJlbnQgcG9p bnRlcnMsIHRoZSBkaXJlY3RvcnkgY2hlY2tpbmcNCj4gPiA+IHByb2Nlc3MNCj4gPiA+IGNhbiBi ZQ0KPiA+ID4gK3N0cmVuZ3RoZW5lZCB0byBlbnN1cmUgdGhhdCB0aGUgdGFyZ2V0IG9mIGVhY2gg ZGlyZW50IGFsc28NCj4gPiA+IGNvbnRhaW5zDQo+ID4gPiBhIHBhcmVudA0KPiA+ID4gK3BvaW50 ZXIgcG9pbnRpbmcgYmFjayB0byB0aGUgZGlyZW50Lg0KPiA+ID4gK0xpa2V3aXNlLCBlYWNoIHBh cmVudCBwb2ludGVyIGNhbiBiZSBjaGVja2VkIGJ5IGVuc3VyaW5nIHRoYXQNCj4gPiA+IHRoZQ0K PiA+ID4gdGFyZ2V0IG9mDQo+ID4gPiArZWFjaCBwYXJlbnQgcG9pbnRlciBpcyBhIGRpcmVjdG9y eSBhbmQgdGhhdCBpdCBjb250YWlucyBhIGRpcmVudA0KPiA+ID4gbWF0Y2hpbmcNCj4gPiA+ICt0 aGUgcGFyZW50IHBvaW50ZXIuDQo+ID4gPiArQm90aCBvbmxpbmUgYW5kIG9mZmxpbmUgcmVwYWly IGNhbiB1c2UgdGhpcyBzdHJhdGVneS4NCj4gDQo+IEkgbW92ZWQgdGhpcyBwYXJhZ3JhcGggdXAg dG8gYmVjb21lIHRoZSBzZWNvbmQgcGFyYWdyYXBoLCBhbmQgbm93IGl0DQo+IHJlYWRzOg0KPiAN Cj4gIlhGUyBwYXJlbnQgcG9pbnRlcnMgaW5jbHVkZSB0aGUgZGlyZW50IG5hbWUgYW5kIGxvY2F0 aW9uIG9mIHRoZQ0KPiBlbnRyeQ0KPiB3aXRoaW4gdGhlIHBhcmVudCBkaXJlY3RvcnkuwqAgSW4g b3RoZXIgd29yZHMsIGNoaWxkIGZpbGVzIHVzZQ0KPiBleHRlbmRlZA0KPiBhdHRyaWJ1dGVzIHRv IHN0b3JlIHBvaW50ZXJzIHRvIHBhcmVudHMgaW4gdGhlIGZvcm0gYGAocGFyZW50X2ludW0sDQo+ IHBhcmVudF9nZW4sIGRpcmVudF9wb3MpIOKGkiAoZGlyZW50X25hbWUpYGAuwqAgVGhlIGRpcmVj dG9yeSBjaGVja2luZw0KPiBwcm9jZXNzIGNhbiBiZSBzdHJlbmd0aGVuZWQgdG8gZW5zdXJlIHRo YXQgdGhlIHRhcmdldCBvZiBlYWNoIGRpcmVudA0KPiBhbHNvIGNvbnRhaW5zIGEgcGFyZW50IHBv aW50ZXIgcG9pbnRpbmcgYmFjayB0byB0aGUgZGlyZW50LsKgDQo+IExpa2V3aXNlLA0KPiBlYWNo IHBhcmVudCBwb2ludGVyIGNhbiBiZSBjaGVja2VkIGJ5IGVuc3VyaW5nIHRoYXQgdGhlIHRhcmdl dCBvZg0KPiBlYWNoDQo+IHBhcmVudCBwb2ludGVyIGlzIGEgZGlyZWN0b3J5IGFuZCB0aGF0IGl0 IGNvbnRhaW5zIGEgZGlyZW50IG1hdGNoaW5nDQo+IHRoZQ0KPiBwYXJlbnQgcG9pbnRlci7CoCBC b3RoIG9ubGluZSBhbmQgb2ZmbGluZSByZXBhaXIgY2FuIHVzZSB0aGlzDQo+IHN0cmF0ZWd5Lg0K PiANCj4gTm90ZTogVGhlIG9uZGlzayBmb3JtYXQgb2YgcGFyZW50IHBvaW50ZXJzIGlzIG5vdCB5 ZXQgZmluYWxpemVkLiINCj4gDQo+IEFmdGVyIHdoaWNoIGNvbWVzIHRoZSBoaXN0b3JpY2FsIHNp ZGViYXIuDQpBbHJpZ2h0eSwgSSB0aGluayB0aGF0J3MgZmluZSBmb3Igbm93DQoNCj4gDQo+ID4g PiArDQo+ID4gPiArQ2FzZSBTdHVkeTogUmVwYWlyaW5nIERpcmVjdG9yaWVzIHdpdGggUGFyZW50 IFBvaW50ZXJzDQo+ID4gPiArXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eDQo+ID4gPiArDQo+ID4gPiArRGlyZWN0b3J5IHJlYnVpbGRpbmcgdXNl cyBhIDpyZWY6YGNvb3JkaW5hdGVkIGlub2RlIHNjYW4NCj4gPiA+IDxpc2Nhbj5gDQo+ID4gPiBh bmQNCj4gPiA+ICthIDpyZWY6YGRpcmVjdG9yeSBlbnRyeSBsaXZlIHVwZGF0ZSBob29rIDxsaXZl dXBkYXRlPmAgYXMNCj4gPiA+IGZvbGxvd3M6DQo+ID4gPiArDQo+ID4gPiArMS4gU2V0IHVwIGEg dGVtcG9yYXJ5IGRpcmVjdG9yeSBmb3IgZ2VuZXJhdGluZyB0aGUgbmV3IGRpcmVjdG9yeQ0KPiA+ ID4gc3RydWN0dXJlLA0KPiA+ID4gK8KgwqAgYW4geGZibG9iIGZvciBzdG9yaW5nIGVudHJ5IG5h bWVzLCBhbmQgYW4geGZhcnJheSBmb3INCj4gPiA+IHN0YXNoaW5nDQo+ID4gPiBkaXJlY3RvcnkN Cj4gPiA+ICvCoMKgIHVwZGF0ZXMuDQo+ID4gPiArDQo+ID4gPiArMi4gU2V0IHVwIGFuIGlub2Rl IHNjYW5uZXIgYW5kIGhvb2sgaW50byB0aGUgZGlyZWN0b3J5IGVudHJ5DQo+ID4gPiBjb2RlIHRv DQo+ID4gPiByZWNlaXZlDQo+ID4gPiArwqDCoCB1cGRhdGVzIG9uIGRpcmVjdG9yeSBvcGVyYXRp b25zLg0KPiA+ID4gKw0KPiA+ID4gKzMuIEZvciBlYWNoIHBhcmVudCBwb2ludGVyIGZvdW5kIGlu IGVhY2ggZmlsZSBzY2FubmVkLCBkZWNpZGUgaWYNCj4gPiA+IHRoZQ0KPiA+ID4gcGFyZW50DQo+ ID4gPiArwqDCoCBwb2ludGVyIHJlZmVyZW5jZXMgdGhlIGRpcmVjdG9yeSBvZiBpbnRlcmVzdC4N Cj4gPiA+ICvCoMKgIElmIHNvOg0KPiA+ID4gKw0KPiA+ID4gK8KgwqAgYS4gU3Rhc2ggYW4gYWRk bmFtZSBlbnRyeSBmb3IgdGhpcyBkaXJlbnQgaW4gdGhlIHhmYXJyYXkgZm9yDQo+ID4gPiBsYXRl ci4NCj4gPiA+ICsNCj4gPiA+ICvCoMKgIGIuIFdoZW4gZmluaXNoZWQgc2Nhbm5pbmcgdGhhdCBm aWxlLCBmbHVzaCB0aGUgc3Rhc2hlZA0KPiA+ID4gdXBkYXRlcyB0bw0KPiA+ID4gdGhlDQo+ID4g PiArwqDCoMKgwqDCoCB0ZW1wb3JhcnkgZGlyZWN0b3J5Lg0KPiA+ID4gKw0KPiA+ID4gKzQuIEZv ciBlYWNoIGxpdmUgZGlyZWN0b3J5IHVwZGF0ZSByZWNlaXZlZCB2aWEgdGhlIGhvb2ssIGRlY2lk ZQ0KPiA+ID4gaWYNCj4gPiA+IHRoZSBjaGlsZA0KPiA+ID4gK8KgwqAgaGFzIGFscmVhZHkgYmVl biBzY2FubmVkLg0KPiA+ID4gK8KgwqAgSWYgc286DQo+ID4gPiArDQo+ID4gPiArwqDCoCBhLiBT dGFzaCBhbiBhZGRuYW1lIG9yIHJlbW92ZW5hbWUgZW50cnkgZm9yIHRoaXMgZGlyZW50DQo+ID4g PiB1cGRhdGUgaW4NCj4gPiA+IHRoZQ0KPiA+ID4gK8KgwqDCoMKgwqAgeGZhcnJheSBmb3IgbGF0 ZXIuDQo+ID4gPiArwqDCoMKgwqDCoCBXZSBjYW5ub3Qgd3JpdGUgZGlyZWN0bHkgdG8gdGhlIHRl bXBvcmFyeSBkaXJlY3RvcnkNCj4gPiA+IGJlY2F1c2UNCj4gPiA+IGhvb2sNCj4gPiA+ICvCoMKg wqDCoMKgIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgdG8gbW9kaWZ5IGZpbGVzeXN0ZW0gbWV0 YWRhdGEuDQo+ID4gPiArwqDCoMKgwqDCoCBJbnN0ZWFkLCB3ZSBzdGFzaCB1cGRhdGVzIGluIHRo ZSB4ZmFycmF5IGFuZCByZWx5IG9uIHRoZQ0KPiA+ID4gc2Nhbm5lciB0aHJlYWQNCj4gPiA+ICvC oMKgwqDCoMKgIHRvIGFwcGx5IHRoZSBzdGFzaGVkIHVwZGF0ZXMgdG8gdGhlIHRlbXBvcmFyeSBk aXJlY3RvcnkuDQo+ID4gPiArDQo+ID4gPiArNS4gV2hlbiB0aGUgc2NhbiBpcyBjb21wbGV0ZSwg YXRvbWljYWxseSBzd2FwIHRoZSBjb250ZW50cyBvZg0KPiA+ID4gdGhlDQo+ID4gPiB0ZW1wb3Jh cnkNCj4gPiA+ICvCoMKgIGRpcmVjdG9yeSBhbmQgdGhlIGRpcmVjdG9yeSBiZWluZyByZXBhaXJl ZC4NCj4gPiA+ICvCoMKgIFRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IG5vdyBjb250YWlucyB0aGUg ZGFtYWdlZCBkaXJlY3RvcnkNCj4gPiA+IHN0cnVjdHVyZS4NCj4gPiA+ICsNCj4gPiA+ICs2LiBS ZWFwIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5Lg0KPiA+ID4gKw0KPiA+ID4gKzcuIFVwZGF0ZSB0 aGUgZGlyZW50IHBvc2l0aW9uIGZpZWxkIG9mIHBhcmVudCBwb2ludGVycyBhcw0KPiA+ID4gbmVj ZXNzYXJ5Lg0KPiA+ID4gK8KgwqAgVGhpcyBtYXkgcmVxdWlyZSB0aGUgcXVldWluZyBvZiBhIHN1 YnN0YW50aWFsIG51bWJlciBvZiB4YXR0cg0KPiA+ID4gbG9nDQo+ID4gPiBpbnRlbnQNCj4gPiA+ ICvCoMKgIGl0ZW1zLg0KPiA+ID4gKw0KPiA+ID4gK1RoZSBwcm9wb3NlZCBwYXRjaHNldCBpcyB0 aGUNCj4gPiA+ICtgcGFyZW50IHBvaW50ZXJzIGRpcmVjdG9yeSByZXBhaXINCj4gPiA+ICs8DQo+ ID4gPiBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9kandv bmcveGZzLWxpbnV4LmdpdC8NCj4gPiA+IGxvZy8/aD1wcHRycy1vbmxpbmUtZGlyLXJlcGFpcj5g Xw0KPiA+ID4gK3Nlcmllcy4NCj4gPiA+ICsNCj4gPiA+ICsqKlVucmVzb2x2ZWQgUXVlc3Rpb24q KjogSG93IHdpbGwgcmVwYWlyIGVuc3VyZSB0aGF0IHRoZQ0KPiA+ID4gYGBkaXJlbnRfcG9zYGAg ZmllbGRzDQo+ID4gPiArbWF0Y2ggaW4gdGhlIHJlY29uc3RydWN0ZWQgZGlyZWN0b3J5Pw0KPiA+ ID4gKw0KPiA+ID4gKypBbnN3ZXIqOiBUaGVyZSBhcmUgYSBmZXcgd2F5cyB0byBzb2x2ZSB0aGlz IHByb2JsZW06DQo+ID4gPiArDQo+ID4gPiArMS4gVGhlIGZpZWxkIGNvdWxkIGJlIGRlc2lnbmF0 ZWQgYWR2aXNvcnksIHNpbmNlIHRoZSBvdGhlciB0aHJlZQ0KPiA+ID4gdmFsdWVzIGFyZQ0KPiA+ ID4gK8KgwqAgc3VmZmljaWVudCB0byBmaW5kIHRoZSBlbnRyeSBpbiB0aGUgcGFyZW50Lg0KPiA+ ID4gK8KgwqAgSG93ZXZlciwgdGhpcyBtYWtlcyBpbmRleGVkIGtleSBsb29rdXAgaW1wb3NzaWJs ZSB3aGlsZQ0KPiA+ID4gcmVwYWlycw0KPiA+ID4gYXJlIG9uZ29pbmcuDQo+ID4gPiArDQo+ID4g PiArMi4gV2UgY291bGQgYWxsb3cgY3JlYXRpbmcgZGlyZWN0b3J5IGVudHJpZXMgYXQgc3BlY2lm aWVkDQo+ID4gPiBvZmZzZXRzLA0KPiA+ID4gd2hpY2ggc29sdmVzDQo+ID4gPiArwqDCoCB0aGUg cmVmZXJlbnRpYWwgaW50ZWdyaXR5IHByb2JsZW0gYnV0IHJ1bnMgdGhlIHJpc2sgdGhhdA0KPiA+ ID4gZGlyZW50DQo+ID4gPiBjcmVhdGlvbg0KPiA+ID4gK8KgwqAgd2lsbCBmYWlsIGR1ZSB0byBj b25mbGljdHMgd2l0aCB0aGUgZnJlZSBzcGFjZSBpbiB0aGUNCj4gPiA+IGRpcmVjdG9yeS4NCj4g PiA+ICsNCj4gPiA+ICvCoMKgIFRoZXNlIGNvbmZsaWN0cyBjb3VsZCBiZSByZXNvbHZlZCBieSBh cHBlbmRpbmcgdGhlIGRpcmVjdG9yeQ0KPiA+ID4gZW50cnkgYW5kDQo+ID4gPiArwqDCoCBhbWVu ZGluZyB0aGUgeGF0dHIgY29kZSB0byBzdXBwb3J0IHVwZGF0aW5nIGFuIHhhdHRyIGtleSBhbmQN Cj4gPiA+IHJlaW5kZXhpbmcgdGhlDQo+ID4gPiArwqDCoCBkYWJ0cmVlLCB0aG91Z2ggdGhpcyB3 b3VsZCBoYXZlIHRvIGJlIHBlcmZvcm1lZCB3aXRoIHRoZQ0KPiA+ID4gcGFyZW50DQo+ID4gPiBk aXJlY3RvcnkNCj4gPiA+ICvCoMKgIHN0aWxsIGxvY2tlZC4NCj4gPiA+ICsNCj4gPiA+ICszLiBT YW1lIGFzIGFib3ZlLCBidXQgcmVtb3ZlIHRoZSBvbGQgcGFyZW50IHBvaW50ZXIgZW50cnkgYW5k DQo+ID4gPiBhZGQgYQ0KPiA+ID4gbmV3IG9uZQ0KPiA+ID4gK8KgwqAgYXRvbWljYWxseS4NCj4g PiA+ICsNCj4gPiA+ICs0LiBDaGFuZ2UgdGhlIG9uZGlzayB4YXR0ciBmb3JtYXQgdG8gYGAocGFy ZW50X2ludW0sIG5hbWUpIOKGkg0KPiA+ID4gKHBhcmVudF9nZW4pYGAsDQo+ID4gPiArwqDCoCB3 aGljaCB3b3VsZCBwcm92aWRlIHRoZSBhdHRyIG5hbWUgdW5pcXVlbmVzcyB0aGF0IHdlIHJlcXVp cmUsDQo+ID4gPiB3aXRob3V0DQo+ID4gPiArwqDCoCBmb3JjaW5nIHJlcGFpciBjb2RlIHRvIHVw ZGF0ZSB0aGUgZGlyZW50IHBvc2l0aW9uLg0KPiA+ID4gK8KgwqAgVW5mb3J0dW5hdGVseSwgdGhp cyByZXF1aXJlcyBjaGFuZ2VzIHRvIHRoZSB4YXR0ciBjb2RlIHRvDQo+ID4gPiBzdXBwb3J0DQo+ ID4gPiBhdHRyDQo+ID4gPiArwqDCoCBuYW1lcyBhcyBsb25nIGFzIDI2MyBieXRlcy4NCj4gPiA+ ICsNCj4gPiA+ICs1LiBDaGFuZ2UgdGhlIG9uZGlzayB4YXR0ciBmb3JtYXQgdG8gYGAocGFyZW50 X2ludW0sIGhhc2gobmFtZSkpDQo+ID4gPiDihpINCj4gPiA+ICvCoMKgIChuYW1lLCBwYXJlbnRf Z2VuKWBgLg0KPiA+ID4gK8KgwqAgSWYgdGhlIGhhc2ggaXMgc3VmZmljaWVudGx5IHJlc2lzdGFu dCB0byBjb2xsaXNpb25zIChlLmcuDQo+ID4gPiBzaGEyNTYpDQo+ID4gPiB0aGVuDQo+ID4gPiAr wqDCoCB0aGlzIHNob3VsZCBwcm92aWRlIHRoZSBhdHRyIG5hbWUgdW5pcXVlbmVzcyB0aGF0IHdl IHJlcXVpcmUuDQo+ID4gPiArwqDCoCBOYW1lcyBzaG9ydGVyIHRoYW4gMjQ3IGJ5dGVzIGNvdWxk IGJlIHN0b3JlZCBkaXJlY3RseS4NCj4gPiBJIHRoaW5rIHRoZSBSRkMgZGVsdWdlIGlzIHRoZSBz YW1lIHF1ZXN0aW9uIGJ1dCBtb3JlIGNvbnRleHQsIHNvDQo+ID4gcHJvYmFibHkgdGhpcyBzZWN0 aW9uIHdpbGwgZm9sbG93IHdoYXQgd2UgZGVjaWRlIHRoZXJlLsKgIEkgd2lsbA0KPiA+IHNhdmUN Cj4gPiBjb21tZW50YXJ5IHRvIGtlZXAgdGhlIGRpc2N1c3Npb24gaW4gdGhlIHNhbWUgdGhyZWFk Li4uDQo+ID4gDQo+ID4gSSdsbCBqdXN0IGxpbmsgaXQgaGVyZSBmb3IgYW55b25lIGVsc2UgZm9s bG93aW5nIHRoaXMgZm9yIG5vdy4uLg0KPiA+IGh0dHBzOi8vd3d3LnNwaW5pY3MubmV0L2xpc3Rz L2xpbnV4LXhmcy9tc2c2OTM5Ny5odG1sDQo+IA0KPiBZZXMsIHRoZSBkZWx1Z2UgaGFzIG11Y2gg bW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbi7CoCBJJ2xsIGFkZCB0aGlzDQo+IGxpbmsNCj4gKGZv ciBub3cpIHRvIHRoZSBkb2MuDQo+IA0KPiA+ID4gKw0KPiA+ID4gK0Nhc2UgU3R1ZHk6IFJlcGFp cmluZyBQYXJlbnQgUG9pbnRlcnMNCj4gPiA+ICteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eDQo+ID4gPiArDQo+ID4gPiArT25saW5lIHJlY29uc3RydWN0aW9uIG9mIGEgZmls ZSdzIHBhcmVudCBwb2ludGVyIGluZm9ybWF0aW9uDQo+ID4gPiB3b3Jrcw0KPiA+ID4gc2ltaWxh cmx5IHRvDQo+ID4gPiArZGlyZWN0b3J5IHJlY29uc3RydWN0aW9uOg0KPiA+ID4gKw0KPiA+ID4g KzEuIFNldCB1cCBhIHRlbXBvcmFyeSBmaWxlIGZvciBnZW5lcmF0aW5nIGEgbmV3IGV4dGVuZGVk DQo+ID4gPiBhdHRyaWJ1dGUNCj4gPiA+IHN0cnVjdHVyZSwNCj4gPiA+ICvCoMKgIGFuIHhmYmxv YiBmb3Igc3RvcmluZyBwYXJlbnQgcG9pbnRlciBuYW1lcywgYW5kIGFuIHhmYXJyYXkNCj4gPiA+ IGZvcg0KPiA+ID4gc3Rhc2hpbmcNCj4gPiA+ICvCoMKgIHBhcmVudCBwb2ludGVyIHVwZGF0ZXMu DQo+ID4gd2UgZGlkIHRhbGsgYWJvdXQgYmxvYnMgaW4gcGF0Y2ggNiB0aG91Z2ggaXQgdG9vayBt ZSBhIG1vbWVudCB0bw0KPiA+IHJlbWVtYmVyLi4uIGlmIHRoZXJlJ3MgYSB3YXkgdG8gbGluayBv ciB0YWcgaXQsIHRoYXQgd291bGQgYmUNCj4gPiBoZWxwZnVsDQo+ID4gZm9yIHdpdGggdGhlIHF1 aWNrIHJlZnJlc2guwqAga2luZGEgbGlrZSB3aWtpcGVkaWEgaHlwZXJsaW5rcywgeW91DQo+ID4g cmVhbGx5IG9ubHkgbmVlZCBsaWtlIHRoZSBmaXJzdCBsaW5lIG9yIHR3byB0byBnZXQgaXQgc25h cCBiYWNrDQo+IA0KPiBUaGVyZSBpczsgSSdsbCBwdXQgaW4gYSBiYWNrcmVmZXJlbmNlLg0KPiAN Cj4gPiA+ICsNCj4gPiA+ICsyLiBTZXQgdXAgYW4gaW5vZGUgc2Nhbm5lciBhbmQgaG9vayBpbnRv IHRoZSBkaXJlY3RvcnkgZW50cnkNCj4gPiA+IGNvZGUgdG8NCj4gPiA+IHJlY2VpdmUNCj4gPiA+ ICvCoMKgIHVwZGF0ZXMgb24gZGlyZWN0b3J5IG9wZXJhdGlvbnMuDQo+ID4gPiArDQo+ID4gPiAr My4gRm9yIGVhY2ggZGlyZWN0b3J5IGVudHJ5IGZvdW5kIGluIGVhY2ggZGlyZWN0b3J5IHNjYW5u ZWQsDQo+ID4gPiBkZWNpZGUNCj4gPiA+IGlmIHRoZQ0KPiA+ID4gK8KgwqAgZGlyZW50IHJlZmVy ZW5jZXMgdGhlIGZpbGUgb2YgaW50ZXJlc3QuDQo+ID4gPiArwqDCoCBJZiBzbzoNCj4gPiA+ICsN Cj4gPiA+ICvCoMKgIGEuIFN0YXNoIGFuIGFkZHBwdHIgZW50cnkgZm9yIHRoaXMgcGFyZW50IHBv aW50ZXIgaW4gdGhlDQo+ID4gPiB4ZmJsb2INCj4gPiA+IGFuZCB4ZmFycmF5DQo+ID4gPiArwqDC oMKgwqDCoCBmb3IgbGF0ZXIuDQo+ID4gPiArDQo+ID4gPiArwqDCoCBiLiBXaGVuIGZpbmlzaGVk IHNjYW5uaW5nIHRoZSBkaXJlY3RvcnksIGZsdXNoIHRoZSBzdGFzaGVkDQo+ID4gPiB1cGRhdGVz IHRvIHRoZQ0KPiA+ID4gK8KgwqDCoMKgwqAgdGVtcG9yYXJ5IGRpcmVjdG9yeS4NCj4gPiA+ICsN Cj4gPiA+ICs0LiBGb3IgZWFjaCBsaXZlIGRpcmVjdG9yeSB1cGRhdGUgcmVjZWl2ZWQgdmlhIHRo ZSBob29rLCBkZWNpZGUNCj4gPiA+IGlmDQo+ID4gPiB0aGUgcGFyZW50DQo+ID4gPiArwqDCoCBo YXMgYWxyZWFkeSBiZWVuIHNjYW5uZWQuDQo+ID4gPiArwqDCoCBJZiBzbzoNCj4gPiA+ICsNCj4g PiA+ICvCoMKgIGEuIFN0YXNoIGFuIGFkZHBwdHIgb3IgcmVtb3ZlcHB0ciBlbnRyeSBmb3IgdGhp cyBkaXJlbnQNCj4gPiA+IHVwZGF0ZSBpbg0KPiA+ID4gdGhlDQo+ID4gPiArwqDCoMKgwqDCoCB4 ZmFycmF5IGZvciBsYXRlci4NCj4gPiA+ICvCoMKgwqDCoMKgIFdlIGNhbm5vdCB3cml0ZSBwYXJl bnQgcG9pbnRlcnMgZGlyZWN0bHkgdG8gdGhlIHRlbXBvcmFyeQ0KPiA+ID4gZmlsZQ0KPiA+ID4g YmVjYXVzZQ0KPiA+ID4gK8KgwqDCoMKgwqAgaG9vayBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2Vk IHRvIG1vZGlmeSBmaWxlc3lzdGVtDQo+ID4gPiBtZXRhZGF0YS4NCj4gPiA+ICvCoMKgwqDCoMKg IEluc3RlYWQsIHdlIHN0YXNoIHVwZGF0ZXMgaW4gdGhlIHhmYXJyYXkgYW5kIHJlbHkgb24gdGhl DQo+ID4gPiBzY2FubmVyIHRocmVhZA0KPiA+ID4gK8KgwqDCoMKgwqAgdG8gYXBwbHkgdGhlIHN0 YXNoZWQgcGFyZW50IHBvaW50ZXIgdXBkYXRlcyB0byB0aGUNCj4gPiA+IHRlbXBvcmFyeQ0KPiA+ ID4gZmlsZS4NCj4gPiA+ICsNCj4gPiA+ICs1LiBDb3B5IGFsbCBub24tcGFyZW50IHBvaW50ZXIg ZXh0ZW5kZWQgYXR0cmlidXRlcyB0byB0aGUNCj4gPiA+IHRlbXBvcmFyeQ0KPiA+ID4gZmlsZS4N Cj4gPiA+ICsNCj4gPiA+ICs2LiBXaGVuIHRoZSBzY2FuIGlzIGNvbXBsZXRlLCBhdG9taWNhbGx5 IHN3YXAgdGhlIGF0dHJpYnV0ZSBmb3JrDQo+ID4gPiBvZg0KPiA+ID4gdGhlDQo+ID4gPiArwqDC oCB0ZW1wb3JhcnkgZmlsZSBhbmQgdGhlIGZpbGUgYmVpbmcgcmVwYWlyZWQuDQo+ID4gPiArwqDC oCBUaGUgdGVtcG9yYXJ5IGZpbGUgbm93IGNvbnRhaW5zIHRoZSBkYW1hZ2VkIGV4dGVuZGVkDQo+ ID4gPiBhdHRyaWJ1dGUNCj4gPiA+IHN0cnVjdHVyZS4NCj4gPiA+ICsNCj4gPiA+ICs3LiBSZWFw IHRoZSB0ZW1wb3JhcnkgZmlsZS4NCj4gPiBTZWVtcyBsaWtlIGl0IHNob3VsZCB3b3JrDQo+IA0K PiBMZXQncyBob3BlIHNvIQ0KPiANCj4gPiA+ICsNCj4gPiA+ICtUaGUgcHJvcG9zZWQgcGF0Y2hz ZXQgaXMgdGhlDQo+ID4gPiArYHBhcmVudCBwb2ludGVycyByZXBhaXINCj4gPiA+ICs8DQo+ID4g PiBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9kandvbmcv eGZzLWxpbnV4LmdpdC8NCj4gPiA+IGxvZy8/aD1wcHRycy1vbmxpbmUtcGFyZW50LXJlcGFpcj5g Xw0KPiA+ID4gK3Nlcmllcy4NCj4gPiA+ICsNCj4gPiA+ICtEaWdyZXNzaW9uOiBPZmZsaW5lIENo ZWNraW5nIG9mIFBhcmVudCBQb2ludGVycw0KPiA+ID4gK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eDQo+ID4gPiArDQo+ID4gPiArRXhhbWluaW5nIHBhcmVu dCBwb2ludGVycyBpbiBvZmZsaW5lIHJlcGFpciB3b3JrcyBkaWZmZXJlbnRseQ0KPiA+ID4gYmVj YXVzZSBjb3JydXB0DQo+ID4gPiArZmlsZXMgYXJlIGVyYXNlZCBsb25nIGJlZm9yZSBkaXJlY3Rv cnkgdHJlZSBjb25uZWN0aXZpdHkgY2hlY2tzDQo+ID4gPiBhcmUNCj4gPiA+IHBlcmZvcm1lZC4N Cj4gPiA+ICtQYXJlbnQgcG9pbnRlciBjaGVja3MgYXJlIHRoZXJlZm9yZSBhIHNlY29uZCBwYXNz IHRvIGJlIGFkZGVkIHRvDQo+ID4gPiB0aGUNCj4gPiA+IGV4aXN0aW5nDQo+ID4gPiArY29ubmVj dGl2aXR5IGNoZWNrczoNCj4gPiA+ICsNCj4gPiA+ICsxLiBBZnRlciB0aGUgc2V0IG9mIHN1cnZp dmluZyBmaWxlcyBoYXMgYmVlbiBlc3RhYmxpc2hlZCAoaS5lLg0KPiA+ID4gcGhhc2UNCj4gPiA+ IDYpLA0KPiA+ID4gK8KgwqAgd2FsayB0aGUgc3Vydml2aW5nIGRpcmVjdG9yaWVzIG9mIGVhY2gg QUcgaW4gdGhlIGZpbGVzeXN0ZW0uDQo+ID4gPiArwqDCoCBUaGlzIGlzIGFscmVhZHkgcGVyZm9y bWVkIGFzIHBhcnQgb2YgdGhlIGNvbm5lY3Rpdml0eSBjaGVja3MuDQo+ID4gPiArDQo+ID4gPiAr Mi4gRm9yIGVhY2ggZGlyZWN0b3J5IGVudHJ5IGZvdW5kLCByZWNvcmQgdGhlIG5hbWUgaW4gYW4g eGZibG9iLA0KPiA+ID4gYW5kDQo+ID4gPiBzdG9yZQ0KPiA+ID4gK8KgwqAgYGAoY2hpbGRfYWdf aW51bSwgcGFyZW50X2ludW0sIHBhcmVudF9nZW4sIGRpcmVudF9wb3MpYGANCj4gPiA+IHR1cGxl cw0KPiA+ID4gaW4gYQ0KPiA+ID4gK8KgwqAgcGVyLUFHIGluLW1lbW9yeSBzbGFiLg0KPiA+ID4g Kw0KPiA+ID4gKzMuIEZvciBlYWNoIEFHIGluIHRoZSBmaWxlc3lzdGVtLA0KPiA+ID4gKw0KPiA+ ID4gK8KgwqAgYS4gU29ydCB0aGUgcGVyLUFHIHR1cGxlcyBpbiBvcmRlciBvZiBjaGlsZF9hZ19p bnVtLA0KPiA+ID4gcGFyZW50X2ludW0sDQo+ID4gPiBhbmQNCj4gPiA+ICvCoMKgwqDCoMKgIGRp cmVudF9wb3MuDQo+ID4gPiArDQo+ID4gPiArwqDCoCBiLiBGb3IgZWFjaCBpbm9kZSBpbiB0aGUg QUcsDQo+ID4gPiArDQo+ID4gPiArwqDCoMKgwqDCoCAxLiBTY2FuIHRoZSBpbm9kZSBmb3IgcGFy ZW50IHBvaW50ZXJzLg0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqAgUmVjb3JkIHRoZSBuYW1lcyBp biBhIHBlci1maWxlIHhmYmxvYiwgYW5kIHN0b3JlDQo+ID4gPiBgYChwYXJlbnRfaW51bSwNCj4g PiA+ICvCoMKgwqDCoMKgwqDCoMKgIHBhcmVudF9nZW4sIGRpcmVudF9wb3MpYGAgdHVwbGVzIGlu IGEgcGVyLWZpbGUgc2xhYi4NCj4gPiA+ICsNCj4gPiA+ICvCoMKgwqDCoMKgIDIuIFNvcnQgdGhl IHBlci1maWxlIHR1cGxlcyBpbiBvcmRlciBvZiBwYXJlbnRfaW51bSwgYW5kDQo+ID4gPiBkaXJl bnRfcG9zLg0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqAgMy4gUG9zaXRpb24gb25lIHNsYWIg Y3Vyc29yIGF0IHRoZSBzdGFydCBvZiB0aGUgaW5vZGUncw0KPiA+ID4gcmVjb3JkcyBpbiB0aGUN Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgIHBlci1BRyB0dXBsZSBzbGFiLg0KPiA+ID4gK8KgwqDC oMKgwqDCoMKgwqAgVGhpcyBzaG91bGQgYmUgdHJpdmlhbCBzaW5jZSB0aGUgcGVyLUFHIHR1cGxl cyBhcmUgaW4NCj4gPiA+IGNoaWxkDQo+ID4gPiBpbnVtYmVyDQo+ID4gPiArwqDCoMKgwqDCoMKg wqDCoCBvcmRlci4NCj4gPiA+ICsNCj4gPiA+ICvCoMKgwqDCoMKgIDQuIFBvc2l0aW9uIGEgc2Vj b25kIHNsYWIgY3Vyc29yIGF0IHRoZSBzdGFydCBvZiB0aGUgcGVyLQ0KPiA+ID4gZmlsZQ0KPiA+ ID4gdHVwbGUgc2xhYi4NCj4gPiA+ICsNCj4gPiA+ICvCoMKgwqDCoMKgIDUuIEl0ZXJhdGUgdGhl IHR3byBjdXJzb3JzIGluIGxvY2tzdGVwLCBjb21wYXJpbmcgdGhlDQo+ID4gPiBwYXJlbnRfaW5v IGFuZA0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqAgZGlyZW50X3BvcyBmaWVsZHMgb2YgdGhlIHJl Y29yZHMgdW5kZXIgZWFjaCBjdXJzb3IuDQo+ID4gPiArDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDC oCBhLiBUdXBsZXMgaW4gdGhlIHBlci1BRyBsaXN0IGJ1dCBub3QgdGhlIHBlci1maWxlIGxpc3QN Cj4gPiA+IGFyZQ0KPiA+ID4gbWlzc2luZyBhbmQNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIG5lZWQgdG8gYmUgd3JpdHRlbiB0byB0aGUgaW5vZGUuDQo+ID4gPiArDQo+ID4gPiArwqDC oMKgwqDCoMKgwqDCoCBiLiBUdXBsZXMgaW4gdGhlIHBlci1maWxlIGxpc3QgYnV0IG5vdCB0aGUg cGVyLUFHIGxpc3QNCj4gPiA+IGFyZQ0KPiA+ID4gZGFuZ2xpbmcNCj4gPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGFuZCBuZWVkIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgaW5vZGUuDQo+ID4g PiArDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoCBjLiBGb3IgdHVwbGVzIGluIGJvdGggbGlzdHMs IHVwZGF0ZSB0aGUgcGFyZW50X2dlbiBhbmQNCj4gPiA+IG5hbWUNCj4gPiA+IGNvbXBvbmVudHMN Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9mIHRoZSBwYXJlbnQgcG9pbnRlciBpZiBu ZWNlc3NhcnkuDQo+ID4gPiArDQo+ID4gPiArNC4gTW92ZSBvbiB0byBleGFtaW5pbmcgbGluayBj b3VudHMsIGFzIHdlIGRvIHRvZGF5Lg0KPiA+ID4gKw0KPiA+ID4gK1RoZSBwcm9wb3NlZCBwYXRj aHNldCBpcyB0aGUNCj4gPiA+ICtgb2ZmbGluZSBwYXJlbnQgcG9pbnRlcnMgcmVwYWlyDQo+ID4g PiArPA0KPiA+ID4gaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9n aXQvZGp3b25nL3hmc3Byb2dzLWRldi5nDQo+ID4gPiBpdC9sb2cvP2g9cHB0cnMtcmVwYWlyPmBf DQo+ID4gPiArc2VyaWVzLg0KPiA+ID4gKw0KPiA+ID4gK1JlYnVpbGRpbmcgZGlyZWN0b3JpZXMg ZnJvbSBwYXJlbnQgcG9pbnRlcnMgaW4gb2ZmbGluZSByZXBhaXIgaXMNCj4gPiA+IHZlcnkNCj4g PiA+ICtjaGFsbGVuZ2luZyBiZWNhdXNlIGl0IGN1cnJlbnRseSB1c2VzIGEgc2luZ2xlLXBhc3Mg c2NhbiBvZiB0aGUNCj4gPiA+IGZpbGVzeXN0ZW0NCj4gPiA+ICtkdXJpbmcgcGhhc2UgMyB0byBk ZWNpZGUgd2hpY2ggZmlsZXMgYXJlIGNvcnJ1cHQgZW5vdWdoIHRvIGJlDQo+ID4gPiB6YXBwZWQu DQo+ID4gPiArVGhpcyBzY2FuIHdvdWxkIGhhdmUgdG8gYmUgY29udmVydGVkIGludG8gYSBtdWx0 aS1wYXNzIHNjYW46DQo+ID4gPiArDQo+ID4gPiArMS4gVGhlIGZpcnN0IHBhc3Mgb2YgdGhlIHNj YW4gemFwcyBjb3JydXB0IGlub2RlcywgZm9ya3MsIGFuZA0KPiA+ID4gYXR0cmlidXRlcw0KPiA+ ID4gK8KgwqAgbXVjaCBhcyBpdCBkb2VzIG5vdy4NCj4gPiA+ICvCoMKgIENvcnJ1cHQgZGlyZWN0 b3JpZXMgYXJlIG5vdGVkIGJ1dCBub3QgemFwcGVkLg0KPiA+ID4gKw0KPiA+ID4gKzIuIFRoZSBu ZXh0IHBhc3MgcmVjb3JkcyBwYXJlbnQgcG9pbnRlcnMgcG9pbnRpbmcgdG8gdGhlDQo+ID4gPiBk aXJlY3Rvcmllcw0KPiA+ID4gbm90ZWQNCj4gPiA+ICvCoMKgIGFzIGJlaW5nIGNvcnJ1cHQgaW4g dGhlIGZpcnN0IHBhc3MuDQo+ID4gPiArwqDCoCBUaGlzIHNlY29uZCBwYXNzIG1heSBoYXZlIHRv IGhhcHBlbiBhZnRlciB0aGUgcGhhc2UgNCBzY2FuDQo+ID4gPiBmb3INCj4gPiA+IGR1cGxpY2F0 ZQ0KPiA+ID4gK8KgwqAgYmxvY2tzLCBpZiBwaGFzZSA0IGlzIGFsc28gY2FwYWJsZSBvZiB6YXBw aW5nIGRpcmVjdG9yaWVzLg0KPiA+ID4gKw0KPiA+ID4gKzMuIFRoZSB0aGlyZCBwYXNzIHJlc2V0 cyBjb3JydXB0IGRpcmVjdG9yaWVzIHRvIGFuIGVtcHR5DQo+ID4gPiBzaG9ydGZvcm0NCj4gPiA+ IGRpcmVjdG9yeS4NCj4gPiA+ICvCoMKgIEZyZWUgc3BhY2UgbWV0YWRhdGEgaGFzIG5vdCBiZWVu IGVuc3VyZWQgeWV0LCBzbyByZXBhaXINCj4gPiA+IGNhbm5vdA0KPiA+ID4geWV0IHVzZSB0aGUN Cj4gPiA+ICvCoMKgIGRpcmVjdG9yeSBidWlsZGluZyBjb2RlIGluIGxpYnhmcy4NCj4gPiA+ICsN Cj4gPiA+ICs0LiBBdCB0aGUgc3RhcnQgb2YgcGhhc2UgNiwgc3BhY2UgbWV0YWRhdGEgaGF2ZSBi ZWVuIHJlYnVpbHQuDQo+ID4gPiArwqDCoCBVc2UgdGhlIHBhcmVudCBwb2ludGVyIGluZm9ybWF0 aW9uIHJlY29yZGVkIGR1cmluZyBzdGVwIDIgdG8NCj4gPiA+IHJlY29uc3RydWN0DQo+ID4gPiAr wqDCoCB0aGUgZGlyZW50cyBhbmQgYWRkIHRoZW0gdG8gdGhlIG5vdy1lbXB0eSBkaXJlY3Rvcmll cy4NCj4gPiA+ICsNCj4gPiA+ICtUaGlzIGNvZGUgaGFzIG5vdCB5ZXQgYmVlbiBjb25zdHJ1Y3Rl ZC4NCj4gPiA+ICsNCj4gPiA+ICsuLiBfb3JwaGFuYWdlOg0KPiA+ID4gKw0KPiA+ID4gK1RoZSBP cnBoYW5hZ2UNCj4gPiA+ICstLS0tLS0tLS0tLS0tDQo+ID4gPiArDQo+ID4gPiArRmlsZXN5c3Rl bXMgcHJlc2VudCBmaWxlcyBhcyBhIGRpcmVjdGVkLCBhbmQgaG9wZWZ1bGx5IGFjeWNsaWMsDQo+ ID4gPiBncmFwaC4NCj4gPiA+ICtJbiBvdGhlciB3b3JkcywgYSB0cmVlLg0KPiA+ID4gK1RoZSBy b290IG9mIHRoZSBmaWxlc3lzdGVtIGlzIGEgZGlyZWN0b3J5LCBhbmQgZWFjaCBlbnRyeSBpbiBh DQo+ID4gPiBkaXJlY3RvcnkgcG9pbnRzDQo+ID4gPiArZG93bndhcmRzIGVpdGhlciB0byBtb3Jl IHN1YmRpcmVjdG9yaWVzIG9yIHRvIG5vbi1kaXJlY3RvcnkNCj4gPiA+IGZpbGVzLg0KPiA+ID4g K1VuZm9ydHVuYXRlbHksIGEgZGlzcnVwdGlvbiBpbiB0aGUgZGlyZWN0b3J5IGdyYXBoIHBvaW50 ZXJzDQo+ID4gPiByZXN1bHQNCj4gPiA+IGluIGENCj4gPiA+ICtkaXNjb25uZWN0ZWQgZ3JhcGgs IHdoaWNoIG1ha2VzIGZpbGVzIGltcG9zc2libGUgdG8gYWNjZXNzIHZpYQ0KPiA+ID4gcmVndWxh ciBwYXRoDQo+ID4gPiArcmVzb2x1dGlvbi4NCj4gPiA+ICtUaGUgZGlyZWN0b3J5IHBhcmVudCBw b2ludGVyIG9ubGluZSBzY3J1YiBjb2RlIGNhbiBkZXRlY3QgYQ0KPiA+ID4gZG90ZG90DQo+ID4g PiBlbnRyeQ0KPiA+ID4gK3BvaW50aW5nIHRvIGEgcGFyZW50IGRpcmVjdG9yeSB0aGF0IGRvZXNu J3QgaGF2ZSBhIGxpbmsgYmFjayB0bw0KPiA+ID4gdGhlDQo+ID4gPiBjaGlsZA0KPiA+ID4gK2Rp cmVjdG9yeSwgYW5kIHRoZSBmaWxlIGxpbmsgY291bnQgY2hlY2tlciBjYW4gZGV0ZWN0IGEgZmls ZQ0KPiA+ID4gdGhhdA0KPiA+ID4gaXNuJ3QgcG9pbnRlZA0KPiA+ID4gK3RvIGJ5IGFueSBkaXJl Y3RvcnkgaW4gdGhlIGZpbGVzeXN0ZW0uDQo+ID4gPiArSWYgdGhlIGZpbGUgaW4gcXVlc3Rpb24g aGFzIGEgcG9zaXRpdmUgbGluayBjb3VudCwgdGhlIGZpbGUgaW4NCj4gPiA+IHF1ZXN0aW9uIGlz IGFuDQo+ID4gPiArb3JwaGFuLg0KPiA+IA0KPiA+IEhtbSwgSSBraW5kYSBmZWx0IGxpa2UgdGhp cyBzaG91bGQgaGF2ZSBmbG93ZWQgaW50byBzb21ldGhpbmcgbGlrZToNCj4gPiAibm93IHRoYXQg d2UgaGF2ZSBwYXJlbnQgcG9pbnRlcnMsIHdlIGNhbiByZXBhcmVudCB0aGVtIGluc3RlYWQgb2YN Cj4gPiBwdXR0aW5nIHRoZW0gaW4gdGhlIG9ycGhhbmFnZS4uLiINCj4gDQo+IFRoYXQncyBvbmx5 IHRydWUgaWYgd2UgYWN0dWFsbHkgKmZpbmQqIHRoZSByZWxldmFudCBmb3J3YXJkIG9yIGJhY2sN Cj4gcG9pbnRlcnMuwqAgSWYgYSBmaWxlIGhhcyBwb3NpdGl2ZSBsaW5rIGNvdW50IGJ1dCB0aGVy ZSBhcmVuJ3QgYW55DQo+IGxpbmtzDQo+IHRvIGl0IGZyb20gYW55d2hlcmUsIHdlIHN0aWxsIGhh dmUgdG8gZHVtcCBpdCBpbiB0aGUgL2xvc3QrZm91bmQuDQo+IA0KPiBQYXJlbnQgcG9pbnRlcnMg bWFrZSBpdCBhIGxvdCBsZXNzIGxpa2VseSB0aGF0IHdlJ2xsIGhhdmUgdG8gcHV0IGENCj4gZmls ZQ0KPiBpbiB0aGUgL2xvc3QrZm91bmQsIGJ1dCBpdCdzIHN0aWxsIHBvc3NpYmxlLg0KPiANCj4g SSB0aGluayBJJ2xsIGNoYW5nZSB0aGlzIHBhcmFncmFwaCB0byBzdGFydDoNCj4gDQo+ICJXaXRo b3V0IHBhcmVudCBwb2ludGVycywgdGhlIGRpcmVjdG9yeSBwYXJlbnQgcG9pbnRlciBvbmxpbmUg c2NydWINCj4gY29kZQ0KPiBjYW4gZGV0ZWN0IGEgZG90ZG90IGVudHJ5IHBvaW50aW5nIHRvIGEg cGFyZW50IGRpcmVjdG9yeS4uLiINCj4gDQo+IGFuZCB0aGVuIGFkZCBhIG5ldyBwYXJhZ3JhcGg6 DQo+IA0KPiAiV2l0aCBwYXJlbnQgcG9pbnRlcnMsIGRpcmVjdG9yaWVzIGNhbiBiZSByZWJ1aWx0 IGJ5IHNjYW5uaW5nIHBhcmVudA0KPiBwb2ludGVycyBhbmQgcGFyZW50IHBvaW50ZXJzIGNhbiBi ZSByZWJ1aWx0IGJ5IHNjYW5uaW5nIGRpcmVjdG9yaWVzLg0KPiBUaGlzIHNob3VsZCByZWR1Y2Ug dGhlIGluY2lkZW5jZSBvZiBmaWxlcyBlbmRpbmcgdXAgaW4NCj4gYGAvbG9zdCtmb3VuZGBgLiIN Ckkgc2VlLCBvayBpIHRoaW5rIHRoYXQgc291bmRzIGdvb2QgdGhlbi4NCg0KQWxsaXNvbg0KPiAN Cj4gPiA/DQo+ID4gPiArDQo+ID4gPiArV2hlbiBvcnBoYW5zIGFyZSBmb3VuZCwgdGhleSBzaG91 bGQgYmUgcmVjb25uZWN0ZWQgdG8gdGhlDQo+ID4gPiBkaXJlY3RvcnkNCj4gPiA+IHRyZWUuDQo+ ID4gPiArT2ZmbGluZSBmc2NrIHNvbHZlcyB0aGUgcHJvYmxlbSBieSBjcmVhdGluZyBhIGRpcmVj dG9yeQ0KPiA+ID4gYGAvbG9zdCtmb3VuZGBgIHRvDQo+ID4gPiArc2VydmUgYXMgYW4gb3JwaGFu YWdlLCBhbmQgbGlua2luZyBvcnBoYW4gZmlsZXMgaW50byB0aGUNCj4gPiA+IG9ycGhhbmFnZQ0K PiA+ID4gYnkgdXNpbmcgdGhlDQo+ID4gPiAraW51bWJlciBhcyB0aGUgbmFtZS4NCj4gPiA+ICtS ZXBhcmVudGluZyBhIGZpbGUgdG8gdGhlIG9ycGhhbmFnZSBkb2VzIG5vdCByZXNldCBhbnkgb2Yg aXRzDQo+ID4gPiBwZXJtaXNzaW9ucyBvcg0KPiA+ID4gK0FDTHMuDQo+ID4gPiArDQo+ID4gPiAr VGhpcyBwcm9jZXNzIGlzIG1vcmUgaW52b2x2ZWQgaW4gdGhlIGtlcm5lbCB0aGFuIGl0IGlzIGlu DQo+ID4gPiB1c2Vyc3BhY2UuDQo+ID4gPiArVGhlIGRpcmVjdG9yeSBhbmQgZmlsZSBsaW5rIGNv dW50IHJlcGFpciBzZXR1cCBmdW5jdGlvbnMgbXVzdA0KPiA+ID4gdXNlDQo+ID4gPiB0aGUgcmVn dWxhcg0KPiA+ID4gK1ZGUyBtZWNoYW5pc21zIHRvIGNyZWF0ZSB0aGUgb3JwaGFuYWdlIGRpcmVj dG9yeSB3aXRoIGFsbCB0aGUNCj4gPiA+IG5lY2Vzc2FyeQ0KPiA+ID4gK3NlY3VyaXR5IGF0dHJp YnV0ZXMgYW5kIGRlbnRyeSBjYWNoZSBlbnRyaWVzLCBqdXN0IGxpa2UgYQ0KPiA+ID4gcmVndWxh cg0KPiA+ID4gZGlyZWN0b3J5DQo+ID4gPiArdHJlZSBtb2RpZmljYXRpb24uDQo+ID4gPiArDQo+ ID4gPiArT3JwaGFuZWQgZmlsZXMgYXJlIGFkb3B0ZWQgYnkgdGhlIG9ycGhhbmFnZSBhcyBmb2xs b3dzOg0KPiA+ID4gKw0KPiA+ID4gKzEuIENhbGwgYGB4cmVwX29ycGhhbmFnZV90cnlfY3JlYXRl YGAgYXQgdGhlIHN0YXJ0IG9mIHRoZSBzY3J1Yg0KPiA+ID4gc2V0dXAgZnVuY3Rpb24NCj4gPiA+ ICvCoMKgIHRvIHRyeSB0byBlbnN1cmUgdGhhdCB0aGUgbG9zdCBhbmQgZm91bmQgZGlyZWN0b3J5 IGFjdHVhbGx5DQo+ID4gPiBleGlzdHMuDQo+ID4gPiArwqDCoCBUaGlzIGFsc28gYXR0YWNoZXMg dGhlIG9ycGhhbmFnZSBkaXJlY3RvcnkgdG8gdGhlIHNjcnViDQo+ID4gPiBjb250ZXh0Lg0KPiA+ ID4gKw0KPiA+ID4gKzIuIElmIHRoZSBkZWNpc2lvbiBpcyBtYWRlIHRvIHJlY29ubmVjdCBhIGZp bGUsIHRha2UgdGhlIElPTE9DSw0KPiA+ID4gb2YNCj4gPiA+IGJvdGggdGhlDQo+ID4gPiArwqDC oCBvcnBoYW5hZ2UgYW5kIHRoZSBmaWxlIGJlaW5nIHJlYXR0YWNoZWQuDQo+ID4gPiArwqDCoCBU aGUgYGB4cmVwX29ycGhhbmFnZV9pb2xvY2tfdHdvYGAgZnVuY3Rpb24gZm9sbG93cyB0aGUgaW5v ZGUNCj4gPiA+IGxvY2tpbmcNCj4gPiA+ICvCoMKgIHN0cmF0ZWd5IGRpc2N1c3NlZCBlYXJsaWVy Lg0KPiA+ID4gKw0KPiA+ID4gKzMuIENhbGwgYGB4cmVwX29ycGhhbmFnZV9jb21wdXRlX2Jsa3Jl c2BgIGFuZA0KPiA+ID4gYGB4cmVwX29ycGhhbmFnZV9jb21wdXRlX25hbWVgYA0KPiA+ID4gK8Kg wqAgdG8gY29tcHV0ZSB0aGUgbmV3IG5hbWUgaW4gdGhlIG9ycGhhbmFnZSBhbmQgdGhlIGJsb2Nr DQo+ID4gPiByZXNlcnZhdGlvbiByZXF1aXJlZC4NCj4gPiA+ICsNCj4gPiA+ICs0LiBVc2UgYGB4 cmVwX29ycGhhbmFnZV9hZG9wdGlvbl9wcmVwYGAgdG8gcmVzZXJ2ZSByZXNvdXJjZXMgdG8NCj4g PiA+IHRoZQ0KPiA+ID4gcmVwYWlyDQo+ID4gPiArwqDCoCB0cmFuc2FjdGlvbi4NCj4gPiA+ICsN Cj4gPiA+ICs1LiBDYWxsIGBgeHJlcF9vcnBoYW5hZ2VfYWRvcHRgYCB0byByZXBhcmVudCB0aGUg b3JwaGFuZWQgZmlsZQ0KPiA+ID4gaW50bw0KPiA+ID4gdGhlIGxvc3QNCj4gPiA+ICvCoMKgIGFu ZCBmb3VuZCwgYW5kIHVwZGF0ZSB0aGUga2VybmVsIGRlbnRyeSBjYWNoZS4NCj4gPiA+ICsNCj4g PiA+ICtUaGUgcHJvcG9zZWQgcGF0Y2hlcyBhcmUgaW4gdGhlDQo+ID4gPiArYG9ycGhhbmFnZSBh ZG9wdGlvbg0KPiA+ID4gKzwNCj4gPiA+IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9s aW51eC9rZXJuZWwvZ2l0L2Rqd29uZy94ZnMtbGludXguZ2l0Lw0KPiA+ID4gbG9nLz9oPXJlcGFp ci1vcnBoYW5hZ2U+YF8NCj4gPiA+ICtzZXJpZXMuDQo+ID4gDQo+ID4gQ2VydGFpbmx5IHdlJ2xs IG5lZWQgdG8gY29tZSBiYWNrIGFuZCB1cGRhdGUgYWxsIHRoZSBwYXJ0cyB0aGF0DQo+ID4gd291 bGQNCj4gPiBiZSBhZmZlY3RlZCBieSB0aGUgUkZDLCBidXQgb3RoZXJ3aXNlIGxvb2tzIG9rLsKg IEl0IHNlZW1zIHRyeWluZyB0bw0KPiA+IGRvY3VtZW50IGNvZGUgYmVmb3JlIGl0J3Mgd3JpdHRl biB0ZW5kcyB0byBjYXVzZSB0aGluZ3MgdG8gZ28NCj4gPiBhcm91bmQNCj4gPiBmb3IgYSB3aGls ZSwgc2luY2Ugd2UgcmVhbGx5IGp1c3QgY2FudCBrbm93IGhvdyBzdGFibGUgYSBkZXNpZ24gaXMN Cj4gPiB1bnRpbCBpdCdzIGJlZW4gdGhyb3VnaCBhdCBsZWFzdCBhIGZldyBwcm90b3R5cGVzLg0K PiANCj4gQWdyZWVkIQ0KPiANCj4gLS1EDQo+IA0KPiA+IEFsbGlzb24NCg0K