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 3A575C636D7 for ; Thu, 9 Feb 2023 05:42:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229510AbjBIFmB (ORCPT ); Thu, 9 Feb 2023 00:42:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39524 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229576AbjBIFls (ORCPT ); Thu, 9 Feb 2023 00:41:48 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E053B31E3D; Wed, 8 Feb 2023 21:41:42 -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 3192Jwke003141; Thu, 9 Feb 2023 05:41:27 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=Lqi6X4AviD1tCc3hMjX666VONX4NUjCHq9UslyBoTEk=; b=Fs0GiyFCzWpHoT6anSEWtPIpVLQj8nWNyU82SPR33UCkzXVrBwvBMUnJVHVBmBkJzbzS 2tSgQqH+Bo4hhDon7iySfAW7SDnPQBiGFn9+kbXd9br/EtAXrFWpIt8eEAxXJuo/OgIg VFy46i+t97uEVIh4cdL96qIOy8fUe7SS5ar0JxvEtTchzOoc11ENMCFOaw1ccAClwbkp bdPx6A0b80NixDBBemRJ0SfZ+sCftUfp0/Wi8H/fw5kvofaWJJVSqqyTPrHLupAfusqt HuSgtdRPFVcZXmmfQCCIEnIeHTbvHnL9cYGxo5zL2oQgWh/c6hGFRCSTxbKe0VSChnIm Ug== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3nhf8a9wn4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 09 Feb 2023 05:41:27 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 3194QFc4036280; Thu, 9 Feb 2023 05:41:26 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2102.outbound.protection.outlook.com [104.47.58.102]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3nhdtek6p4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 09 Feb 2023 05:41:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EVQQAOnYagevvSjwCD7FS29OanEyaR8IBlsB9LAZoXQj5CrKXaMvETHuukuZUqAFLdCZqNJmYsZPJSw4bQYa3Ss+cA/MVS7UjLUq/V3q5mktUQs0yj3PPUD+niyO1gMVoF8Cyt4Lv341PqOm6SWfaI7+/ERPP+m9SQAm9SID+BRkwok16oOkcxzDc6A54hFljGwJGoPHY4rS6s9A2Is0Weno+Y/Hgbqvsuv8LwvHplftt5m0jHsx79RpFTCFGJXuF7sZe7+8N9UeH8vVaOKAZ8OzwnZ6cu+y8lV3O0X/aJBfinW3Xy+qiazbIkRji1lZ79s0X+306pUh0fxHJhBkgA== 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=Lqi6X4AviD1tCc3hMjX666VONX4NUjCHq9UslyBoTEk=; b=Nc9H2SGLhoNE5Em0OaFenzRon3FXsqEE6Ol6qBI+2wWvvSIv46r4KWk6MU/9XRcp2+vt0pRakPTN6YhRYIo4PtH3qjJ8LnbPpP8JfYbGXmU2hO+8gDakUSKHFTj+MR9k03IIDVlnmDrlBtcuR5bR0yYa86/4wlx/Y3eHwqkiblrIfTUGjiyqgIQKwXH8d7cdDSBN/c+gtGyq3PZnFj4l2HeIFSWgK6gcm18ONA/tX9E+jYtzcpKqfN6h5vz9NuSVXpgk9wKbqPIykyDnIpyv18rk/eYdriTqIeWjJD5ZwtBrcF5q6MbVQ0CxZ2PlcYMCael2INGI5RyWPBftpVtqDg== 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=Lqi6X4AviD1tCc3hMjX666VONX4NUjCHq9UslyBoTEk=; b=Necwa/9v8TWYtWntijJY/lEmzLTC+lDRvxfqTw9Fcwb2zgNuz279f73tPQkcpCs2dX/N61Zrt9XetD6Flielrn0obaY+TWz1KMIrDl0jshoL4gXWHTWu/qWxR3GVOr6X8lHaWhfkOB2JxbG6IdpLlvnHD84ZaqEE+8SkCaukH1Y= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by DM4PR10MB6182.namprd10.prod.outlook.com (2603:10b6:8:89::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.9; Thu, 9 Feb 2023 05:41:22 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::eaff:9f55:4641:db38]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::eaff:9f55:4641:db38%4]) with mapi id 15.20.6086.011; Thu, 9 Feb 2023 05:41:22 +0000 From: Allison Henderson To: "djwong@kernel.org" CC: Catherine Hoang , "david@fromorbit.com" , "willy@infradead.org" , "linux-xfs@vger.kernel.org" , Chandan Babu , "linux-fsdevel@vger.kernel.org" , "hch@infradead.org" Subject: Re: [PATCH 07/14] xfs: document pageable kernel memory Thread-Topic: [PATCH 07/14] xfs: document pageable kernel memory Thread-Index: AQHZHJ5ucNYU/AxLTki98W2EOxjFj667b8EAgAEPQgCACdoIAA== Date: Thu, 9 Feb 2023 05:41:22 +0000 Message-ID: References: <167243825144.682859.12802259329489258661.stgit@magnolia> <167243825260.682859.10235142095680268936.stgit@magnolia> <50fe53916b09566a2738db3bcba01a96f0a0de1f.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_|DM4PR10MB6182:EE_ x-ms-office365-filtering-correlation-id: 5442405e-fb5e-47d6-122c-08db0a6046ea x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: AT/d4hzNul6JlzgrlpbMWqrzgIMfpbTvDLK3Gf0Ubhe2SFpp8Vur+QEsA9uA6AO7Kkw+3aAnrgIGzJFAGMySbXL+JoJGUMSG1kXhEqt6w4j63UTZubRM11VYhMVxnUafpHqwfBtXWq80DVn4ZC/cIMFS27BTB6vBAiKf9jByCsFAkyCwWgB/znAy0dYLlBvZ9hrYp1Q53hPaDFi6kEwTN6BRy3uxDlHf3tdtHna8WgE0w62qpn0HqFLKHq29LARvSG+U1uJ/VZf7WBhO2yQBdpPUZ9LqhKZI6w4a7Iz3N2qWZqFbVyAj/jKu1HwXZFVmAfOWnBMYCIiAOFGMtTJjSymtllwGblO5WcodC47zhEt7Q6trkImBFTqpmPYOd9Z3lUNB2CMds3S/XgPKM2iqRJ7m/tUdXxys7h7k6ZkMJBQ2wXkT5h9EplXejix5xG2DFi6Oa+YT5nhi8i+f91V9vN/DCTVHI2rFJQ4IpQ0vVa9tCz2pDIruH1NNv02IWd2JocwD1wou9RixiovAwNV0TqQsA5mELzbYiNmbk75zP1dTilrB5+BOv6J5aSojrioiqLCQjbUAGyE7yWfeOHqsX9g7HHnx2c7j7yJE+g8rZYgRoojNq9BwjMBP8tCrgu0eYt4rx6T0RgbIJcCaEPZPelWL4dx5rAWaQbPEjG3v9B9GfjhfaSLgME8ncf+RLxkzgyT6Freuull9zwH1DbiTbzk1qdoHJQ29OwUamVoQ8ZXGgQVpf2yBM9cSLLd+28Y/X+Hh3/nWUDDzZLdru9Ic8A== 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)(136003)(366004)(396003)(346002)(376002)(39860400002)(451199018)(30864003)(316002)(2616005)(66899018)(54906003)(44832011)(71200400001)(122000001)(83380400001)(186003)(26005)(6512007)(36756003)(5660300002)(4326008)(6916009)(8676002)(8936002)(66556008)(6506007)(38100700002)(41300700001)(66446008)(2906002)(76116006)(66946007)(66476007)(86362001)(6486002)(478600001)(38070700005)(4001150100001)(64756008)(966005)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NTVWRzNyNUZWQ0tTWktucWcyTDBkSU9TSS9CS01ueEVGRVBUZlNrYW4rUkw0?= =?utf-8?B?M2hhOUhjTzk2YkRWZzZCTTZsMDAxOVdyazNaNms3aVhBOEhlNjBrckdRcW5Q?= =?utf-8?B?TEkxZ01SbGJBTWUvb3NoWjRDckt0bUdSMCtOOFJ4eEdoN3F2K0llNmI1eHB4?= =?utf-8?B?Q0VENC8wQ0VxTnlaRnlsS0Q5SEJIbWFKQ2lFaVNtY0ljc0w2UHIzaS9wd0xO?= =?utf-8?B?L3ptOTlCOC9zb1o3NDZRU2EyYTEzUC9BWXhWbTE0Z0E2M2svRG56UVcyWXJl?= =?utf-8?B?V2IyTGVuNG1ObHg5U00wTEVhYkZtVHc5aDJHSnRTT0J0RWxtUEdvZjgzazBH?= =?utf-8?B?bFQ2Yng1TlhRb2RRMTkzK3FVR1Z0VnZGZVNoZlVQU040aGgwT25NdHEyaTdT?= =?utf-8?B?bEE2RVd2MXoxb1hOeEtuUUJXSUFIbkR1S3pYZ2RXZGNPOHJnclYyTndidW1k?= =?utf-8?B?eUg2L2tSK0NkUEFncUpMVHdGSHNTT2FoT3NrUVJJMkdNK0RPZlY4eGoxRG0v?= =?utf-8?B?R2FIbjk5WFFuU2V1dXpVOWFreG1JTmpxTElCTU5iQ0J6NFlQcmVON21yc1dY?= =?utf-8?B?Tlh0SnVOa0RpYzBWVTk1M2k3Kzh4eVBTUWtIVDdXQXVnOHlEUTE2UTdaN2tw?= =?utf-8?B?azV3Nmd4M2F4bTdNQzQvNEFxOU4wTnFPVWNRZ000Y2ZvNXBFUzlDZ3hITHNK?= =?utf-8?B?R3ljOVh4amRiekNCUXJhSXNjTDEzRUtXNE5ncUcyajhUT3dqUkNVWGhPY3F6?= =?utf-8?B?anpESlRkdG5wUEY4L2VSK3ViZ1dVV1YxRmlaejZuVTZob1pBd2thU3hpU0d1?= =?utf-8?B?ZTFqN3RaaGtzaDBBelBKcEdkRUc1R2tsYzRhRXRTRnZYY0diaS9yeTRia05Y?= =?utf-8?B?MXhmYjIrTFhpSktKQmQ0RUJwa1hoa1kvck10Mnh1RTN1TVNqVlVHbVQvZWp4?= =?utf-8?B?VGs3T3JMQVVyWmc3REZ5VUFDN0tGQkxMODVaVDVtRGErR1o4YUw2WG8xdFoz?= =?utf-8?B?RzlPRDdLQWZXZWZ6U01HaGlOck5DdUQ5RDkxb28zRFhncTNyUmFQT0g4dEkz?= =?utf-8?B?c3FtcDZWUFp4cVgxelB6VjZCNVZJekFIMDVVakR4Uit5eUhkM25JbDJYL0ps?= =?utf-8?B?czlmQ2pia2hCT1ViVGE3TDRUdlZMRks0a2hCN05YZ2QrTHRWZlhDSTJJbWlp?= =?utf-8?B?bFJRV2k3MjdhV0JWL2xuRllGTXpWMlVlWndmUHpNSGsvQnNDZW1EYjNzSytH?= =?utf-8?B?ekU4TVBPWVdmWmZxWXd0VkJYVGd0NlF5RkowUkpITms4U3JiM2ZRUnpBSnNi?= =?utf-8?B?UU1IVUNqN2lKT1VjZlZ1ME9zZHlSZmFzZjJRRGl6NG1HNHRDRG40eUhKMmp2?= =?utf-8?B?dXZkeCtCQVNReFJqazMrSWFqRmhFY3lOYnBLSVlnZUZlSzY4eGNtQTlxWXpB?= =?utf-8?B?R2UvNjRTTUpwVWR5cUpkdnlrNnY2RnNGUlBGeXM0NWZVYVhYUnplTHkvU0o5?= =?utf-8?B?ODZXQXdESG5aTUxJZDhjc2pKQW5FMnJpdklaZ2p0a1M2N0pZcGt3cUxxYzNP?= =?utf-8?B?YmJhUStPVHlUVlM2RWpNWWgzMkhHU0pFejJnZzFicDZTaTN1ZTVGZ1ZXMDdH?= =?utf-8?B?L3I5NzB2dm9uWExOMFJmRndGb1JhODl2RGd2TzZ4aDZYYnhvczNYVzJJbkdu?= =?utf-8?B?dTA5TTRRcTBRbXE2encvSHFLeFVQeGhmUW1ZUExRcEFlTU1IdXgxaGF2cmF3?= =?utf-8?B?MzIxakdadDVGN0tWSCtiMjdob215ZmVYRW1uWWswSjQ3R216dVAyaXFWQ29j?= =?utf-8?B?QVVxeTZHRjIvL1NkR1FjZ2MzNlYyWEd5Uko1dmNldWhBbnFESnYvTTZnZGhQ?= =?utf-8?B?cWRPb1A0eGRDQ3ZKeEx6S1FjbCtQQmJjUVRWKzlOTFgrMW9ROEhmN1ZLNFRC?= =?utf-8?B?dGcycnZ5bXIvZ2RrZ09MRTFzb2tNSVQ1YVo4NjBvVzVBdURsNHZ3eDRSOTJO?= =?utf-8?B?L1A1ZXYxeWV5K2wwZzkxS3VFMCtuMit6NHlSUHNPSVpaR2VRVXFIL1hMWUFl?= =?utf-8?B?R1gvalk1NjVoK3dFUjRPek5ic2M0aVFLUkREU1orbW9VM0dQMkM5dmlIRHRk?= =?utf-8?B?alVRdlExdUVwcmhLRHl0VWFFdDBzSHRtL3lEN0FMRG5DVkNjNTZ1NnVqbWhs?= =?utf-8?Q?P11Z5PPC+gD5fvVIbhCVva0=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <323AE1F860EC614383E22A1FC52D9391@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: RZb4xPrgoC3tKgECXZwEhQAP1V9YDNmd/2s1H7g5xz1bH7Ylra+Y17dc378H6dlsHac9hIr+48FbURxzf50Gx64iqLTOcjuSJe/hTw2pC9+WaZxrKx6h7TcbM8f4SsmXjTa4WIKdznbFkH2zk/FHzj9BfYQYcaapAIhHZdOSJxQxwBggkarb8E0s/7LcN9+Q3NBqmpk5CBj96QJ60O7DpISYQ+W/YGIVrvD8/54XRgHNwv0NABZtCPvMjKeJgIBeuhTaBuB+9gYFD5l+WqfXdUmq/YGovYXgFXEVLD9yz9X9BU/Cp2a7fqEuW91h99Y0SL+ukkNZUPDux4s+n7PzVKOfXvBdtFs+OvN2aDXhS+exbHNUK40Uo8NXJuE3xhtRy5PYYf1CPLNyHR2evhrLsuumY6cdTwmFbsctG7G9kDel5OZWjH7lvjoCyDLIlV2J9VrfBEc+a5kof49tI0ttOIm0IhLidj1HwJZTzn/Z9MSzKk7ncLTwm4tHDw4pBckGTZMoCbr+oXxpq7clF3q03jI3YiLlEACnUmshJY0F5k4i+urSkHBZiSKcYWQEaaIONaGNodSIz0c260QfPCaekbWutBq7swcs7MMxnCV8xbecYDMSopjuj72YToWZqIr1jZbZAY2fjs3w0Tjm+az/QLvOEwKTSGPOeWZWTaLP2g8Cotp2xnen8zyOufyolUXiVKd61Vo6rVmNOii2FfWUnoWX5pcuAGU2k9GDZQc/RE0PCGLSedjz/Pa8Slv1OMnFP8V37HKUFDgE8dVu9SvupQNJ/d2PQ93Si7qwXXNjnk0HCr9acZQPhLxZDEXswighNA+21MMA/Pp/b96yyZpcTSAuINqR16biRRZiJ7YNS+Q= 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: 5442405e-fb5e-47d6-122c-08db0a6046ea X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Feb 2023 05:41:22.5784 (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: xBvfbI09U9/7RuB8a+Rz0/fui8ej+xqa4yTsaROCLfgp2yIy6aJcZqQUhVTBm8twL5ys8aTM443L6f6Yzs1NGmQgUYg2WW6SfaWbJjn/w7g= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR10MB6182 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1 definitions=2023-02-09_02,2023-02-08_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 adultscore=0 malwarescore=0 mlxscore=0 phishscore=0 spamscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2302090051 X-Proofpoint-ORIG-GUID: RMVgvzHGFDB3jDkgEMbnuCv6Ip4gaY7s X-Proofpoint-GUID: RMVgvzHGFDB3jDkgEMbnuCv6Ip4gaY7s Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org T24gVGh1LCAyMDIzLTAyLTAyIGF0IDE1OjE0IC0wODAwLCBEYXJyaWNrIEouIFdvbmcgd3JvdGU6 DQo+IE9uIFRodSwgRmViIDAyLCAyMDIzIGF0IDA3OjE0OjIyQU0gKzAwMDAsIEFsbGlzb24gSGVu ZGVyc29uIHdyb3RlOg0KPiA+IE9uIEZyaSwgMjAyMi0xMi0zMCBhdCAxNDoxMCAtMDgwMCwgRGFy cmljayBKLiBXb25nIHdyb3RlOg0KPiA+ID4gRnJvbTogRGFycmljayBKLiBXb25nIDxkandvbmdA a2VybmVsLm9yZz4NCj4gPiA+IA0KPiA+ID4gQWRkIGEgZGlzY3Vzc2lvbiBvZiBwYWdlYWJsZSBr ZXJuZWwgbWVtb3J5LCBzaW5jZSBvbmxpbmUgZnNjaw0KPiA+ID4gbmVlZHMNCj4gPiA+IHF1aXRl IGEgYml0IG1vcmUgbWVtb3J5IHRoYW4gbW9zdCBvdGhlciBwYXJ0cyBvZiB0aGUgZmlsZXN5c3Rl bQ0KPiA+ID4gdG8NCj4gPiA+IHN0YWdlDQo+ID4gPiByZWNvcmRzIGFuZCBvdGhlciBpbmZvcm1h dGlvbi4NCj4gPiA+IA0KPiA+ID4gU2lnbmVkLW9mZi1ieTogRGFycmljayBKLiBXb25nIDxkandv bmdAa2VybmVsLm9yZz4NCj4gPiA+IC0tLQ0KPiA+ID4gwqAuLi4vZmlsZXN5c3RlbXMveGZzLW9u bGluZS1mc2NrLWRlc2lnbi5yc3TCoMKgwqDCoMKgwqDCoMKgIHzCoCA0OTANCj4gPiA+ICsrKysr KysrKysrKysrKysrKysrDQo+ID4gPiDCoDEgZmlsZSBjaGFuZ2VkLCA0OTAgaW5zZXJ0aW9ucygr KQ0KPiA+ID4gDQo+ID4gPiANCj4gPiA+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVz eXN0ZW1zL3hmcy1vbmxpbmUtZnNjay1kZXNpZ24ucnN0DQo+ID4gPiBiL0RvY3VtZW50YXRpb24v ZmlsZXN5c3RlbXMveGZzLW9ubGluZS1mc2NrLWRlc2lnbi5yc3QNCj4gPiA+IGluZGV4IDQxOWVi NTRlZTIwMC4uOWQ3YTJlZjFkMGRkIDEwMDY0NA0KPiA+ID4gLS0tIGEvRG9jdW1lbnRhdGlvbi9m aWxlc3lzdGVtcy94ZnMtb25saW5lLWZzY2stZGVzaWduLnJzdA0KPiA+ID4gKysrIGIvRG9jdW1l bnRhdGlvbi9maWxlc3lzdGVtcy94ZnMtb25saW5lLWZzY2stZGVzaWduLnJzdA0KPiA+ID4gQEAg LTM4Myw2ICszODMsOCBAQCBBbGdvcml0aG1zIikgb2YgU3Jpbml2YXNhbi4NCj4gPiA+IMKgSG93 ZXZlciwgYW55IGRhdGEgc3RydWN0dXJlIGJ1aWxkZXIgdGhhdCBtYWludGFpbnMgYSByZXNvdXJj ZQ0KPiA+ID4gbG9jaw0KPiA+ID4gZm9yIHRoZQ0KPiA+ID4gwqBkdXJhdGlvbiBvZiB0aGUgcmVw YWlyIGlzICphbHdheXMqIGFuIG9mZmxpbmUgYWxnb3JpdGhtLg0KPiA+ID4gwqANCj4gPiA+ICsu LiBfc2Vjb25kYXJ5X21ldGFkYXRhOg0KPiA+ID4gKw0KPiA+ID4gwqBTZWNvbmRhcnkgTWV0YWRh dGENCj4gPiA+IMKgYGBgYGBgYGBgYGBgYGBgYGBgDQo+ID4gPiDCoA0KPiA+ID4gQEAgLTE3NDYs MyArMTc0OCw0OTEgQEAgU2NydWIgdGVhcmRvd24gZGlzYWJsZXMgYWxsIHN0YXRpYyBrZXlzDQo+ ID4gPiBvYnRhaW5lZCBieSBgYHhjaGtfZnNob29rc19lbmFibGVgYC4NCj4gPiA+IMKgDQo+ID4g PiDCoEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlIHRoZSBrZXJuZWwgZG9jdW1lbnRh dGlvbiBvZg0KPiA+ID4gwqBEb2N1bWVudGF0aW9uL3N0YWdpbmcvc3RhdGljLWtleXMucnN0Lg0K PiA+ID4gKw0KPiA+ID4gKy4uIF94ZmlsZToNCj4gPiA+ICsNCj4gPiA+ICtQYWdlYWJsZSBLZXJu ZWwgTWVtb3J5DQo+ID4gPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ID4gKw0KPiA+ID4g K0RlbW9uc3RyYXRpb25zIG9mIHRoZSBmaXJzdCBmZXcgcHJvdG90eXBlcyBvZiBvbmxpbmUgcmVw YWlyDQo+ID4gPiByZXZlYWxlZA0KPiA+ID4gbmV3DQo+ID4gPiArdGVjaG5pY2FsIHJlcXVpcmVt ZW50cyB0aGF0IHdlcmUgbm90IG9yaWdpbmFsbHkgaWRlbnRpZmllZC4NCj4gPiA+ICtGb3IgdGhl IGZpcnN0IGRlbW9uc3RyYXRpb24sIHRoZSBjb2RlIHdhbGtlZCB3aGF0ZXZlciBmaWxlc3lzdGVt DQo+ID4gPiArbWV0YWRhdGEgaXQgbmVlZGVkIHRvIHN5bnRoZXNpemUgbmV3IHJlY29yZHMgYW5k IGluc2VydGVkDQo+ID4gPiByZWNvcmRzDQo+ID4gPiBpbnRvIGEgbmV3DQo+ID4gPiArYnRyZWUg YXMgaXQgZm91bmQgdGhlbS4NCj4gPiA+ICtUaGlzIHdhcyBzdWJwYXIgc2luY2UgYW55IGFkZGl0 aW9uYWwgY29ycnVwdGlvbiBvciBydW50aW1lDQo+ID4gPiBlcnJvcnMNCj4gPiA+IGVuY291bnRl cmVkDQo+ID4gPiArZHVyaW5nIHRoZSB3YWxrIHdvdWxkIHNodXQgZG93biB0aGUgZmlsZXN5c3Rl bS4NCj4gPiA+ICtBZnRlciByZW1vdW50LCB0aGUgYmxvY2tzIGNvbnRhaW5pbmcgdGhlIGhhbGYt cmVidWlsdCBkYXRhDQo+ID4gPiBzdHJ1Y3R1cmUNCj4gPiA+IHdvdWxkIG5vdA0KPiA+ID4gK2Jl IGFjY2Vzc2libGUgdW50aWwgYW5vdGhlciByZXBhaXIgd2FzIGF0dGVtcHRlZC4NCj4gPiA+ICtT b2x2aW5nIHRoZSBwcm9ibGVtIG9mIGhhbGYtcmVidWlsdCBkYXRhIHN0cnVjdHVyZXMgd2lsbCBi ZQ0KPiA+ID4gZGlzY3Vzc2VkIGluIHRoZQ0KPiA+ID4gK25leHQgc2VjdGlvbi4NCj4gPiA+ICsN Cj4gPiA+ICtGb3IgdGhlIHNlY29uZCBkZW1vbnN0cmF0aW9uLCB0aGUgc3ludGhlc2l6ZWQgcmVj b3JkcyB3ZXJlDQo+ID4gPiBpbnN0ZWFkDQo+ID4gPiBzdG9yZWQgaW4NCj4gPiA+ICtrZXJuZWwg c2xhYiBtZW1vcnkuDQo+ID4gPiArRG9pbmcgc28gZW5hYmxlZCBvbmxpbmUgcmVwYWlyIHRvIGFi b3J0IHdpdGhvdXQgd3JpdGluZyB0byB0aGUNCj4gPiA+IGZpbGVzeXN0ZW0gaWYNCj4gPiA+ICt0 aGUgbWV0YWRhdGEgd2FsayBmYWlsZWQsIHdoaWNoIHByZXZlbnRlZCBvbmxpbmUgZnNjayBmcm9t DQo+ID4gPiBtYWtpbmcNCj4gPiA+IHRoaW5ncyB3b3JzZS4NCj4gPiA+ICtIb3dldmVyLCBldmVu IHRoaXMgYXBwcm9hY2ggbmVlZGVkIGltcHJvdmluZyB1cG9uLg0KPiA+ID4gKw0KPiA+ID4gK1Ro ZXJlIGFyZSBmb3VyIHJlYXNvbnMgd2h5IHRyYWRpdGlvbmFsIExpbnV4IGtlcm5lbCBtZW1vcnkN Cj4gPiA+IG1hbmFnZW1lbnQgaXNuJ3QNCj4gPiA+ICtzdWl0YWJsZSBmb3Igc3RvcmluZyBsYXJn ZSBkYXRhc2V0czoNCj4gPiA+ICsNCj4gPiA+ICsxLiBBbHRob3VnaCBpdCBpcyB0ZW1wdGluZyB0 byBhbGxvY2F0ZSBhIGNvbnRpZ3VvdXMgYmxvY2sgb2YNCj4gPiA+IG1lbW9yeQ0KPiA+ID4gdG8g Y3JlYXRlIGENCj4gPiA+ICvCoMKgIEMgYXJyYXksIHRoaXMgY2Fubm90IGVhc2lseSBiZSBkb25l IGluIHRoZSBrZXJuZWwgYmVjYXVzZSBpdA0KPiA+ID4gY2Fubm90IGJlDQo+ID4gPiArwqDCoCBy ZWxpZWQgdXBvbiB0byBhbGxvY2F0ZSBtdWx0aXBsZSBjb250aWd1b3VzIG1lbW9yeSBwYWdlcy4N Cj4gPiA+ICsNCj4gPiA+ICsyLiBXaGlsZSBkaXNwYXJhdGUgcGh5c2ljYWwgcGFnZXMgY2FuIGJl IHZpcnR1YWxseSBtYXBwZWQNCj4gPiA+IHRvZ2V0aGVyLA0KPiA+ID4gaW5zdGFsbGVkDQo+ID4g PiArwqDCoCBtZW1vcnkgbWlnaHQgc3RpbGwgbm90IGJlIGxhcmdlIGVub3VnaCB0byBzdGFnZSB0 aGUgZW50aXJlDQo+ID4gPiByZWNvcmQNCj4gPiA+IHNldCBpbg0KPiA+ID4gK8KgwqAgbWVtb3J5 IHdoaWxlIGNvbnN0cnVjdGluZyBhIG5ldyBidHJlZS4NCj4gPiA+ICsNCj4gPiA+ICszLiBUbyBv dmVyY29tZSB0aGVzZSB0d28gZGlmZmljdWx0aWVzLCB0aGUgaW1wbGVtZW50YXRpb24gd2FzDQo+ ID4gPiBhZGp1c3RlZCB0byB1c2UNCj4gPiA+ICvCoMKgIGRvdWJseSBsaW5rZWQgbGlzdHMsIHdo aWNoIG1lYW5zIGV2ZXJ5IHJlY29yZCBvYmplY3QgbmVlZGVkDQo+ID4gPiB0d28NCj4gPiA+IDY0 LWJpdCBsaXN0DQo+ID4gPiArwqDCoCBoZWFkIHBvaW50ZXJzLCB3aGljaCBpcyBhIGxvdCBvZiBv dmVyaGVhZC4NCj4gPiA+ICsNCj4gPiA+ICs0LiBLZXJuZWwgbWVtb3J5IGlzIHBpbm5lZCwgd2hp Y2ggY2FuIGRyaXZlIHRoZSBzeXN0ZW0gb3V0IG9mDQo+ID4gPiBtZW1vcnksIGxlYWRpbmcNCj4g PiA+ICvCoMKgIHRvIE9PTSBraWxscyBvZiB1bnJlbGF0ZWQgcHJvY2Vzc2VzLg0KPiA+ID4gKw0K PiA+IEkgdGhpbmsgSSBtYXliZSBtaWdodCBqdXN0IGp1bXAgdG8gd2hhdCBldmVyIHRoZSBjdXJy ZW50IHBsYW4gaXMNCj4gPiBpbnN0ZWFkIG9mIHRyeWluZyB0byBrZWVwIGEgcmVjb3JkIG9mIHRo ZSBkZXYgaGlzdG9yeSBpbiB0aGUNCj4gPiBkb2N1bWVudC4NCj4gPiBJJ20gc3VyZSB3ZSdyZSBu b3QgZG9uZSB5ZXQsIGRldiByZWFsbHkgbmV2ZXIgaXMsIHNvIGluIG9yZGVyIGZvcg0KPiA+IHRo ZQ0KPiA+IGRvY3VtZW50YXRpb24gdG8gYmUgbWFpbnRhaW5lZCwgaXQgd291bGQganVzdCBnZXQg YmlnZ2VyIGFuZCBiaWdnZXINCj4gPiB0bw0KPiA+IGtlZXAgZG9jdW1lbnRpbmcgaXQgdGhpcyB3 YXkuwqAgSXQncyBub3QgdGhhdCB0aGUgYWJvdmUgaXNudA0KPiA+IHZhbHVhYmxlLA0KPiA+IGJ1 dCBtYXliZSBhIGRpZmZlcmVudCBraW5kIG9mIGRvY3VtZW50IHJlYWxseS4NCj4gDQo+IE9LLCBJ J3ZlIHNob3J0ZW5lZCB0aGlzIGludHJvZHVjdGlvbiB0byBvdXRsaW5lIHRoZSByZXF1aXJlbWVu dHMsIGFuZA0KPiB0cmltbWVkIHRoZSBoaXN0b3JpY2FsIGluZm9ybWF0aW9uIHRvIGEgc2lkZWJh cjoNCj4gDQo+ICJTb21lIG9ubGluZSBjaGVja2luZyBmdW5jdGlvbnMgd29yayBieSBzY2Fubmlu ZyB0aGUgZmlsZXN5c3RlbSB0bw0KPiBidWlsZA0KPiBhIHNoYWRvdyBjb3B5IG9mIGFuIG9uZGlz ayBtZXRhZGF0YSBzdHJ1Y3R1cmUgaW4gbWVtb3J5IGFuZCBjb21wYXJpbmcNCj4gdGhlIHR3byBj b3BpZXMuIEZvciBvbmxpbmUgcmVwYWlyIHRvIHJlYnVpbGQgYSBtZXRhZGF0YSBzdHJ1Y3R1cmUs IGl0DQo+IG11c3QgY29tcHV0ZSB0aGUgcmVjb3JkIHNldCB0aGF0IHdpbGwgYmUgc3RvcmVkIGlu IHRoZSBuZXcgc3RydWN0dXJlDQo+IGJlZm9yZSBpdCBjYW4gcGVyc2lzdCB0aGF0IG5ldyBzdHJ1 Y3R1cmUgdG8gZGlzay4gSWRlYWxseSwgcmVwYWlycw0KPiBjb21wbGV0ZSB3aXRoIGEgc2luZ2xl IGF0b21pYyBjb21taXQgdGhhdCBpbnRyb2R1Y2VzIGEgbmV3IGRhdGENCj4gc3RydWN0dXJlLiBU byBtZWV0IHRoZXNlIGdvYWxzLCB0aGUga2VybmVsIG5lZWRzIHRvIGNvbGxlY3QgYSBsYXJnZQ0K PiBhbW91bnQgb2YgaW5mb3JtYXRpb24gaW4gYSBwbGFjZSB0aGF0IGRvZXNu4oCZdCByZXF1aXJl IHRoZSBjb3JyZWN0DQo+IG9wZXJhdGlvbiBvZiB0aGUgZmlsZXN5c3RlbS4NCj4gDQo+ICJLZXJu ZWwgbWVtb3J5IGlzbuKAmXQgc3VpdGFibGUgYmVjYXVzZToNCj4gDQo+ICrCoMKgIEFsbG9jYXRp bmcgYSBjb250aWd1b3VzIHJlZ2lvbiBvZiBtZW1vcnkgdG8gY3JlYXRlIGEgQyBhcnJheSBpcw0K PiB2ZXJ5DQo+IMKgwqDCoCBkaWZmaWN1bHQsIGVzcGVjaWFsbHkgb24gMzItYml0IHN5c3RlbXMu DQo+IA0KPiAqwqDCoCBMaW5rZWQgbGlzdHMgb2YgcmVjb3JkcyBpbnRyb2R1Y2UgZG91YmxlIHBv aW50ZXIgb3ZlcmhlYWQgd2hpY2gNCj4gaXMNCj4gwqDCoMKgIHZlcnkgaGlnaCBhbmQgZWxpbWlu YXRlIHRoZSBwb3NzaWJpbGl0eSBvZiBpbmRleGVkIGxvb2t1cHMuDQo+IA0KPiAqwqDCoCBLZXJu ZWwgbWVtb3J5IGlzIHBpbm5lZCwgd2hpY2ggY2FuIGRyaXZlIHRoZSBzeXN0ZW0gaW50byBPT00N Cj4gwqDCoMKgIGNvbmRpdGlvbnMuDQo+IA0KPiAqwqDCoCBUaGUgc3lzdGVtIG1pZ2h0IG5vdCBo YXZlIHN1ZmZpY2llbnQgbWVtb3J5IHRvIHN0YWdlIGFsbCB0aGUNCj4gwqDCoMKgIGluZm9ybWF0 aW9uLg0KPiANCj4gIkF0IGFueSBnaXZlbiB0aW1lLCBvbmxpbmUgZnNjayBkb2VzIG5vdCBuZWVk IHRvIGtlZXAgdGhlIGVudGlyZQ0KPiByZWNvcmQNCj4gc2V0IGluIG1lbW9yeSwgd2hpY2ggbWVh bnMgdGhhdCBpbmRpdmlkdWFsIHJlY29yZHMgY2FuIGJlIHBhZ2VkIG91dA0KPiBpZg0KPiBuZWNl c3NhcnkuIENvbnRpbnVlZCBkZXZlbG9wbWVudCBvZiBvbmxpbmUgZnNjayBkZW1vbnN0cmF0ZWQg dGhhdCB0aGUNCj4gYWJpbGl0eSB0byBwZXJmb3JtIGluZGV4ZWQgZGF0YSBzdG9yYWdlIHdvdWxk IGFsc28gYmUgdmVyeSB1c2VmdWwuDQo+IEZvcnR1bmF0ZWx5LCB0aGUgTGludXgga2VybmVsIGFs cmVhZHkgaGFzIGEgZmFjaWxpdHkgZm9yDQo+IGJ5dGUtYWRkcmVzc2FibGUgYW5kIHBhZ2VhYmxl IHN0b3JhZ2U6IHRtcGZzLiBJbi1rZXJuZWwgZ3JhcGhpY3MNCj4gZHJpdmVycw0KPiAobW9zdCBu b3RhYmx5IGk5MTUpIHRha2UgYWR2YW50YWdlIG9mIHRtcGZzIGZpbGVzIHRvIHN0b3JlDQo+IGlu dGVybWVkaWF0ZQ0KPiBkYXRhIHRoYXQgZG9lc27igJl0IG5lZWQgdG8gYmUgaW4gbWVtb3J5IGF0 IGFsbCB0aW1lcywgc28gdGhhdCB1c2FnZQ0KPiBwcmVjZWRlbnQgaXMgYWxyZWFkeSBlc3RhYmxp c2hlZC4gSGVuY2UsIHRoZSB4ZmlsZSB3YXMgYm9ybiENCj4gDQo+IEhpc3RvcmljYWwgU2lkZWJh cg0KPiAtLS0tLS0tLS0tLS0tLS0tLS0NCj4gDQo+ICJUaGUgZmlyc3QgZWRpdGlvbiBvZiBvbmxp bmUgcmVwYWlyIGluc2VydGVkIHJlY29yZHMgaW50byBhIG5ldyBidHJlZQ0KPiBhcw0KPiBpdCBm b3VuZCB0aGVtLCB3aGljaCBmYWlsZWQgYmVjYXVzZSBmaWxlc3lzdGVtIGNvdWxkIHNodXQgZG93 biB3aXRoIGENCj4gYnVpbHQgZGF0YSBzdHJ1Y3R1cmUsIHdoaWNoIHdvdWxkIGJlIGxpdmUgYWZ0 ZXIgcmVjb3ZlcnkgZmluaXNoZWQuDQo+IA0KPiAiVGhlIHNlY29uZCBlZGl0aW9uIHNvbHZlZCB0 aGUgaGFsZi1yZWJ1aWx0IHN0cnVjdHVyZSBwcm9ibGVtIGJ5DQo+IHN0b3JpbmcNCj4gZXZlcnl0 aGluZyBpbiBtZW1vcnksIGJ1dCBmcmVxdWVudGx5IHJhbiB0aGUgc3lzdGVtIG91dCBvZiBtZW1v cnkuDQo+IA0KPiAiVGhlIHRoaXJkIGVkaXRpb24gc29sdmVkIHRoZSBPT00gcHJvYmxlbSBieSB1 c2luZyBsaW5rZWQgbGlzdHMsIGJ1dA0KPiB0aGUNCj4gbGlzdCBvdmVyaGVhZCB3YXMgZXh0cmVt ZS4iDQpPaywgSSB0aGluayB0aGF0J3MgY2xlYW5lcg0KDQo+IA0KPiA+IA0KPiA+IA0KPiA+ID4g K0ZvciB0aGUgdGhpcmQgaXRlcmF0aW9uLCBhdHRlbnRpb24gc3d1bmcgYmFjayB0byB0aGUgcG9z c2liaWxpdHkNCj4gPiA+IG9mDQo+ID4gPiB1c2luZw0KPiA+IA0KPiA+IER1ZSB0byB0aGUgbGFy Z2Ugdm9sdW1lIG9mIG1ldGFkYXRhIHRoYXQgbmVlZHMgdG8gYmUgcHJvY2Vzc2VkLA0KPiA+IG9m c2NrDQo+ID4gdXNlcy4uLg0KPiA+IA0KPiA+ID4gK2J5dGUtaW5kZXhlZCBhcnJheS1saWtlIHN0 b3JhZ2UgdG8gcmVkdWNlIHRoZSBvdmVyaGVhZCBvZiBpbi0NCj4gPiA+IG1lbW9yeQ0KPiA+ID4g cmVjb3Jkcy4NCj4gPiA+ICtBdCBhbnkgZ2l2ZW4gdGltZSwgb25saW5lIHJlcGFpciBkb2VzIG5v dCBuZWVkIHRvIGtlZXAgdGhlDQo+ID4gPiBlbnRpcmUNCj4gPiA+IHJlY29yZCBzZXQgaW4NCj4g PiA+ICttZW1vcnksIHdoaWNoIG1lYW5zIHRoYXQgaW5kaXZpZHVhbCByZWNvcmRzIGNhbiBiZSBw YWdlZCBvdXQuDQo+ID4gPiArQ3JlYXRpbmcgbmV3IHRlbXBvcmFyeSBmaWxlcyBpbiB0aGUgWEZT IGZpbGVzeXN0ZW0gdG8gc3RvcmUNCj4gPiA+IGludGVybWVkaWF0ZSBkYXRhDQo+ID4gPiArd2Fz IGV4cGxvcmVkIGFuZCByZWplY3RlZCBmb3Igc29tZSB0eXBlcyBvZiByZXBhaXJzIGJlY2F1c2Ug YQ0KPiA+ID4gZmlsZXN5c3RlbSB3aXRoDQo+ID4gPiArY29tcHJvbWlzZWQgc3BhY2UgYW5kIGlu b2RlIG1ldGFkYXRhIHNob3VsZCBuZXZlciBiZSB1c2VkIHRvIGZpeA0KPiA+ID4gY29tcHJvbWlz ZWQNCj4gPiA+ICtzcGFjZSBvciBpbm9kZSBtZXRhZGF0YS4NCj4gPiA+ICtIb3dldmVyLCB0aGUg a2VybmVsIGFscmVhZHkgaGFzIGEgZmFjaWxpdHkgZm9yIGJ5dGUtYWRkcmVzc2FibGUNCj4gPiA+ IGFuZA0KPiA+ID4gcGFnZWFibGUNCj4gPiA+ICtzdG9yYWdlOiBzaG1mcy4NCj4gPiA+ICtJbi1r ZXJuZWwgZ3JhcGhpY3MgZHJpdmVycyAobW9zdCBub3RhYmx5IGk5MTUpIHRha2UgYWR2YW50YWdl IG9mDQo+ID4gPiBzaG1mcyBmaWxlcw0KPiA+ID4gK3RvIHN0b3JlIGludGVybWVkaWF0ZSBkYXRh IHRoYXQgZG9lc24ndCBuZWVkIHRvIGJlIGluIG1lbW9yeSBhdA0KPiA+ID4gYWxsDQo+ID4gPiB0 aW1lcywgc28NCj4gPiA+ICt0aGF0IHVzYWdlIHByZWNlZGVudCBpcyBhbHJlYWR5IGVzdGFibGlz aGVkLg0KPiA+ID4gK0hlbmNlLCB0aGUgYGB4ZmlsZWBgIHdhcyBib3JuIQ0KPiA+ID4gKw0KPiA+ ID4gK3hmaWxlIEFjY2VzcyBNb2RlbHMNCj4gPiA+ICtgYGBgYGBgYGBgYGBgYGBgYGBgDQo+ID4g PiArDQo+ID4gPiArQSBzdXJ2ZXkgb2YgdGhlIGludGVuZGVkIHVzZXMgb2YgeGZpbGVzIHN1Z2dl c3RlZCB0aGVzZSB1c2UNCj4gPiA+IGNhc2VzOg0KPiA+ID4gKw0KPiA+ID4gKzEuIEFycmF5cyBv ZiBmaXhlZC1zaXplZCByZWNvcmRzIChzcGFjZSBtYW5hZ2VtZW50IGJ0cmVlcywNCj4gPiA+IGRp cmVjdG9yeQ0KPiA+ID4gYW5kDQo+ID4gPiArwqDCoCBleHRlbmRlZCBhdHRyaWJ1dGUgZW50cmll cykNCj4gPiA+ICsNCj4gPiA+ICsyLiBTcGFyc2UgYXJyYXlzIG9mIGZpeGVkLXNpemVkIHJlY29y ZHMgKHF1b3RhcyBhbmQgbGluayBjb3VudHMpDQo+ID4gPiArDQo+ID4gPiArMy4gTGFyZ2UgYmlu YXJ5IG9iamVjdHMgKEJMT0JzKSBvZiB2YXJpYWJsZSBzaXplcyAoZGlyZWN0b3J5IGFuZA0KPiA+ ID4gZXh0ZW5kZWQNCj4gPiA+ICvCoMKgIGF0dHJpYnV0ZSBuYW1lcyBhbmQgdmFsdWVzKQ0KPiA+ ID4gKw0KPiA+ID4gKzQuIFN0YWdpbmcgYnRyZWVzIGluIG1lbW9yeSAocmV2ZXJzZSBtYXBwaW5n IGJ0cmVlcykNCj4gPiA+ICsNCj4gPiA+ICs1LiBBcmJpdHJhcnkgY29udGVudHMgKHJlYWx0aW1l IHNwYWNlIG1hbmFnZW1lbnQpDQo+ID4gPiArDQo+ID4gPiArVG8gc3VwcG9ydCB0aGUgZmlyc3Qg Zm91ciB1c2UgY2FzZXMsIGhpZ2ggbGV2ZWwgZGF0YSBzdHJ1Y3R1cmVzDQo+ID4gPiB3cmFwDQo+ ID4gPiB0aGUgeGZpbGUNCj4gPiA+ICt0byBzaGFyZSBmdW5jdGlvbmFsaXR5IGJldHdlZW4gb25s aW5lIGZzY2sgZnVuY3Rpb25zLg0KPiA+ID4gK1RoZSByZXN0IG9mIHRoaXMgc2VjdGlvbiBkaXNj dXNzZXMgdGhlIGludGVyZmFjZXMgdGhhdCB0aGUgeGZpbGUNCj4gPiA+IHByZXNlbnRzIHRvDQo+ ID4gPiArZm91ciBvZiB0aG9zZSBmaXZlIGhpZ2hlciBsZXZlbCBkYXRhIHN0cnVjdHVyZXMuDQo+ ID4gPiArVGhlIGZpZnRoIHVzZSBjYXNlIGlzIGRpc2N1c3NlZCBpbiB0aGUgOnJlZjpgcmVhbHRp bWUgc3VtbWFyeQ0KPiA+ID4gPHJ0c3VtbWFyeT5gIGNhc2UNCj4gPiA+ICtzdHVkeS4NCj4gPiA+ ICsNCj4gPiA+ICtUaGUgbW9zdCBnZW5lcmFsIHN0b3JhZ2UgaW50ZXJmYWNlIHN1cHBvcnRlZCBi eSB0aGUgeGZpbGUNCj4gPiA+IGVuYWJsZXMNCj4gPiA+IHRoZSByZWFkaW5nDQo+ID4gPiArYW5k IHdyaXRpbmcgb2YgYXJiaXRyYXJ5IHF1YW50aXRpZXMgb2YgZGF0YSBhdCBhcmJpdHJhcnkgb2Zm c2V0cw0KPiA+ID4gaW4NCj4gPiA+IHRoZSB4ZmlsZS4NCj4gPiA+ICtUaGlzIGNhcGFiaWxpdHkg aXMgcHJvdmlkZWQgYnkgYGB4ZmlsZV9wcmVhZGBgIGFuZA0KPiA+ID4gYGB4ZmlsZV9wd3JpdGVg YA0KPiA+ID4gZnVuY3Rpb25zLA0KPiA+ID4gK3doaWNoIGJlaGF2ZSBzaW1pbGFybHkgdG8gdGhl aXIgdXNlcnNwYWNlIGNvdW50ZXJwYXJ0cy4NCj4gPiA+ICtYRlMgaXMgdmVyeSByZWNvcmQtYmFz ZWQsIHdoaWNoIHN1Z2dlc3RzIHRoYXQgdGhlIGFiaWxpdHkgdG8NCj4gPiA+IGxvYWQNCj4gPiA+ IGFuZCBzdG9yZQ0KPiA+ID4gK2NvbXBsZXRlIHJlY29yZHMgaXMgaW1wb3J0YW50Lg0KPiA+ID4g K1RvIHN1cHBvcnQgdGhlc2UgY2FzZXMsIGEgcGFpciBvZiBgYHhmaWxlX29ial9sb2FkYGAgYW5k DQo+ID4gPiBgYHhmaWxlX29ial9zdG9yZWBgDQo+ID4gPiArZnVuY3Rpb25zIGFyZSBwcm92aWRl ZCB0byByZWFkIGFuZCBwZXJzaXN0IG9iamVjdHMgaW50byBhbg0KPiA+ID4geGZpbGUuDQo+ID4g PiArVGhleSBhcmUgaW50ZXJuYWxseSB0aGUgc2FtZSBhcyBwcmVhZCBhbmQgcHdyaXRlLCBleGNl cHQgdGhhdA0KPiA+ID4gdGhleQ0KPiA+ID4gdHJlYXQgYW55DQo+ID4gPiArZXJyb3IgYXMgYW4g b3V0IG9mIG1lbW9yeSBlcnJvci4NCj4gPiA+ICtGb3Igb25saW5lIHJlcGFpciwgc3F1YXNoaW5n IGVycm9yIGNvbmRpdGlvbnMgaW4gdGhpcyBtYW5uZXIgaXMNCj4gPiA+IGFuDQo+ID4gPiBhY2Nl cHRhYmxlDQo+ID4gPiArYmVoYXZpb3IgYmVjYXVzZSB0aGUgb25seSByZWFjdGlvbiBpcyB0byBh Ym9ydCB0aGUgb3BlcmF0aW9uDQo+ID4gPiBiYWNrIHRvDQo+ID4gPiB1c2Vyc3BhY2UuDQo+ID4g PiArQWxsIGZpdmUgeGZpbGUgdXNlY2FzZXMgY2FuIGJlIHNlcnZpY2VkIGJ5IHRoZXNlIGZvdXIg ZnVuY3Rpb25zLg0KPiA+ID4gKw0KPiA+ID4gK0hvd2V2ZXIsIG5vIGRpc2N1c3Npb24gb2YgZmls ZSBhY2Nlc3MgaWRpb21zIGlzIGNvbXBsZXRlIHdpdGhvdXQNCj4gPiA+IGFuc3dlcmluZyB0aGUN Cj4gPiA+ICtxdWVzdGlvbiwgIkJ1dCB3aGF0IGFib3V0IG1tYXA/Ig0KPiA+IEkgYWN0dWFsbHkg d291bGRuJ3Qgc3BlbmQgdG9vIG11Y2ggdGltZSBkaXNjdXNzaW5nIHNvbHV0aW9ucyB0aGF0DQo+ ID4gZGlkbid0IHdvcmsgZm9yIHdoYXQgZXZlciByZWFzb24sIHVubGVzcyBzb21lb25lcyByZWFs bHkgYXNraW5nIGZvcg0KPiA+IGl0Lg0KPiA+IMKgSSB0aGluayB0aGlzIHNlY3Rpb24gd291bGQg cmVhZCBqdXN0IGZpbmUgdG8gdHJpbSBvZmYgdGhlIGxhc3QNCj4gPiBwYXJhZ3JhcGggaGVyZQ0K PiANCj4gU2luY2UgSSB3cm90ZSB0aGlzLCBJJ3ZlIGJlZW4gZXhwZXJpbWVudGluZyB3aXRoIHdp cmluZyB1cCB0aGUgdG1wZnMNCj4gZmlsZSBwYWdlIGNhY2hlIGZvbGlvcyB0byB0aGUgeGZzIGJ1 ZmZlciBjYWNoZS7CoCBQaW5uaW5nIHRoZSBmb2xpb3MNCj4gaW4NCj4gdGhpcyBtYW5uZXIgbWFr ZXMgaXQgc28gdGhhdCBvbmxpbmUgZnNjayBjYW4gKG1vcmUgb3IgbGVzcykgZGlyZWN0bHkNCj4g YWNjZXNzIHRoZSB4ZmlsZSBjb250ZW50cy7CoCBNdWNoIHRvIG15IHN1cnByaXNlLCB0aGlzIGhh cyBhY3R1YWxseQ0KPiBoZWxkDQo+IHVwIGluIHRlc3RpbmcsIHNvIC4uLiBpdCdzIG5vIGxvbmdl ciBhIHNvbHV0aW9uIHRoYXQgImRpZG4ndCByZWFsbHkNCj4gd29yayIuIDopDQo+IA0KPiBJIGFs c28gbmVlZCB0byBzL3BhZ2UvZm9saW8vIG5vdyB0aGF0IHdpbGx5IGhhcyBmaW5pc2hlZCB0aGF0 DQo+IGNvbnZlcnNpb24uwqAgVGhpcyBzZWN0aW9uIGhhcyBiZWVuIHJld3JpdHRlbiBhcyBzdWNo Og0KPiANCj4gIkhvd2V2ZXIsIG5vIGRpc2N1c3Npb24gb2YgZmlsZSBhY2Nlc3MgaWRpb21zIGlz IGNvbXBsZXRlIHdpdGhvdXQNCj4gYW5zd2VyaW5nIHRoZSBxdWVzdGlvbiwg4oCcQnV0IHdoYXQg YWJvdXQgbW1hcD/igJ0gSXQgaXMgY29udmVuaWVudCB0bw0KPiBhY2Nlc3Mgc3RvcmFnZSBkaXJl Y3RseSB3aXRoIHBvaW50ZXJzLCBqdXN0IGxpa2UgdXNlcnNwYWNlIGNvZGUgZG9lcw0KPiB3aXRo IHJlZ3VsYXIgbWVtb3J5LiBPbmxpbmUgZnNjayBtdXN0IG5vdCBkcml2ZSB0aGUgc3lzdGVtIGlu dG8gT09NDQo+IGNvbmRpdGlvbnMsIHdoaWNoIG1lYW5zIHRoYXQgeGZpbGVzIG11c3QgYmUgcmVz cG9uc2l2ZSB0byBtZW1vcnkNCj4gcmVjbGFtYXRpb24uIHRtcGZzIGNhbiBvbmx5IHB1c2ggYSBw YWdlY2FjaGUgZm9saW8gdG8gdGhlIHN3YXAgY2FjaGUNCj4gaWYNCj4gdGhlIGZvbGlvIGlzIG5l aXRoZXIgcGlubmVkIG5vciBsb2NrZWQsIHdoaWNoIG1lYW5zIHRoZSB4ZmlsZSBtdXN0DQo+IG5v dA0KPiBwaW4gdG9vIG1hbnkgZm9saW9zLg0KPiANCj4gIlNob3J0IHRlcm0gZGlyZWN0IGFjY2Vz cyB0byB4ZmlsZSBjb250ZW50cyBpcyBkb25lIGJ5IGxvY2tpbmcgdGhlDQo+IHBhZ2VjYWNoZSBm b2xpbyBhbmQgbWFwcGluZyBpdCBpbnRvIGtlcm5lbCBhZGRyZXNzIHNwYWNlLg0KPiBQcm9ncmFt bWF0aWMNCj4gYWNjZXNzIChlLmcuIHByZWFkIGFuZCBwd3JpdGUpIHVzZXMgdGhpcyBtZWNoYW5p c20uIEZvbGlvIGxvY2tzIGFyZQ0KPiBub3QNCj4gc3VwcG9zZWQgdG8gYmUgaGVsZCBmb3IgbG9u ZyBwZXJpb2RzIG9mIHRpbWUsIHNvIGxvbmcgdGVybSBkaXJlY3QNCj4gYWNjZXNzDQo+IHRvIHhm aWxlIGNvbnRlbnRzIGlzIGRvbmUgYnkgYnVtcGluZyB0aGUgZm9saW8gcmVmY291bnQsIG1hcHBp bmcgaXQNCj4gaW50bw0KPiBrZXJuZWwgYWRkcmVzcyBzcGFjZSwgYW5kIGRyb3BwaW5nIHRoZSBm b2xpbyBsb2NrLiBUaGVzZSBsb25nIHRlcm0NCj4gdXNlcnMNCj4gbXVzdCBiZSByZXNwb25zaXZl IHRvIG1lbW9yeSByZWNsYWltIGJ5IGhvb2tpbmcgaW50byB0aGUgc2hyaW5rZXINCj4gaW5mcmFz dHJ1Y3R1cmUgdG8ga25vdyB3aGVuIHRvIHJlbGVhc2UgZm9saW9zLg0KPiANCj4gIlRoZSB4Zmls ZV9nZXRfcGFnZSBhbmQgeGZpbGVfcHV0X3BhZ2UgZnVuY3Rpb25zIGFyZSBwcm92aWRlZCB0bw0K PiByZXRyaWV2ZSB0aGUgKGxvY2tlZCkgZm9saW8gdGhhdCBiYWNrcyBwYXJ0IG9mIGFuIHhmaWxl IGFuZCB0bw0KPiByZWxlYXNlDQo+IGl0LiBUaGUgb25seSBjb2RlIHRvIHVzZSB0aGVzZSBmb2xp byBsZWFzZSBmdW5jdGlvbnMgYXJlIHRoZSB4ZmFycmF5DQo+IHNvcnRpbmcgYWxnb3JpdGhtcyBh bmQgdGhlIGluLW1lbW9yeSBidHJlZXMuIg0KQWxyaWdodHksIHNvdW5kcyBsaWtlIGEgZ29vZCB1 cGF0ZSB0aGVuDQoNCj4gDQo+ID4gPiArSXQgd291bGQgYmUgKm11Y2gqIG1vcmUgY29udmVuaWVu dCBpZiBrZXJuZWwgY29kZSBjb3VsZCBhY2Nlc3MNCj4gPiA+IHBhZ2VhYmxlIGtlcm5lbA0KPiA+ ID4gK21lbW9yeSB3aXRoIHBvaW50ZXJzLCBqdXN0IGxpa2UgdXNlcnNwYWNlIGNvZGUgZG9lcyB3 aXRoIHJlZ3VsYXINCj4gPiA+IG1lbW9yeS4NCj4gPiA+ICtMaWtlIGFueSBvdGhlciBmaWxlc3lz dGVtIHRoYXQgdXNlcyB0aGUgcGFnZSBjYWNoZSwgcmVhZHMgYW5kDQo+ID4gPiB3cml0ZXMNCj4g PiA+IG9mIHhmaWxlDQo+ID4gPiArZGF0YSBsb2NrIHRoZSBjYWNoZSBwYWdlIGFuZCBtYXAgaXQg aW50byB0aGUga2VybmVsIGFkZHJlc3MNCj4gPiA+IHNwYWNlDQo+ID4gPiBmb3IgdGhlDQo+ID4g PiArZHVyYXRpb24gb2YgdGhlIG9wZXJhdGlvbi4NCj4gPiA+ICtVbmZvcnR1bmF0ZWx5LCBzaG1m cyBjYW4gb25seSB3cml0ZSBhIGZpbGUgcGFnZSB0byB0aGUgc3dhcA0KPiA+ID4gZGV2aWNlDQo+ ID4gPiBpZiB0aGUgcGFnZQ0KPiA+ID4gK2lzIHVubWFwcGVkIGFuZCB1bmxvY2tlZCwgd2hpY2gg bWVhbnMgdGhlIHhmaWxlIHJpc2tzIGNhdXNpbmcNCj4gPiA+IE9PTQ0KPiA+ID4gcHJvYmxlbXMN Cj4gPiA+ICt1bmxlc3MgaXQgaXMgY2FyZWZ1bCBub3QgdG8gcGluIHRvbyBtYW55IHBhZ2VzLg0K PiA+ID4gK1RoZXJlZm9yZSwgdGhlIHhmaWxlIHN0ZWVycyBtb3N0IG9mIGl0cyB1c2VycyB0b3dh cmRzDQo+ID4gPiBwcm9ncmFtbWF0aWMNCj4gPiA+IGFjY2VzcyBzbw0KPiA+ID4gK3RoYXQgYmFj a2luZyBwYWdlcyBhcmUgbm90IGtlcHQgbG9ja2VkIGluIG1lbW9yeSBmb3IgbG9uZ2VyIHRoYW4N Cj4gPiA+IGlzDQo+ID4gPiBuZWNlc3NhcnkuDQo+ID4gPiArSG93ZXZlciwgZm9yIGNhbGxlcnMg cGVyZm9ybWluZyBxdWljayBsaW5lYXIgc2NhbnMgb2YgeGZpbGUNCj4gPiA+IGRhdGEsDQo+ID4g PiArYGB4ZmlsZV9nZXRfcGFnZWBgIGFuZCBgYHhmaWxlX3B1dF9wYWdlYGAgZnVuY3Rpb25zIGFy ZSBwcm92aWRlZA0KPiA+ID4gdG8NCj4gPiA+IHBpbiBhIHBhZ2UNCj4gPiA+ICtpbiBtZW1vcnku DQo+ID4gPiArU28gZmFyLCB0aGUgb25seSBjb2RlIHRvIHVzZSB0aGVzZSBmdW5jdGlvbnMgYXJl IHRoZSB4ZmFycmF5DQo+ID4gPiA6cmVmOmBzb3J0aW5nDQo+ID4gPiArPHhmYXJyYXlfc29ydD5g IGFsZ29yaXRobXMuDQo+ID4gPiArDQo+ID4gPiAreGZpbGUgQWNjZXNzIENvb3JkaW5hdGlvbg0K PiA+ID4gK2BgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGANCj4gPiA+ICsNCj4gPiA+ICtGb3Igc2Vj dXJpdHkgcmVhc29ucywgeGZpbGVzIG11c3QgYmUgb3duZWQgcHJpdmF0ZWx5IGJ5IHRoZQ0KPiA+ ID4ga2VybmVsLg0KPiA+ID4gK1RoZXkgYXJlIG1hcmtlZCBgYFNfUFJJVkFURWBgIHRvIHByZXZl bnQgaW50ZXJmZXJlbmNlIGZyb20gdGhlDQo+ID4gPiBzZWN1cml0eSBzeXN0ZW0sDQo+ID4gPiAr bXVzdCBuZXZlciBiZSBtYXBwZWQgaW50byBwcm9jZXNzIGZpbGUgZGVzY3JpcHRvciB0YWJsZXMs IGFuZA0KPiA+ID4gdGhlaXINCj4gPiA+IHBhZ2VzIG11c3QNCj4gPiA+ICtuZXZlciBiZSBtYXBw ZWQgaW50byB1c2Vyc3BhY2UgcHJvY2Vzc2VzLg0KPiA+ID4gKw0KPiA+ID4gK1RvIGF2b2lkIGxv Y2tpbmcgcmVjdXJzaW9uIGlzc3VlcyB3aXRoIHRoZSBWRlMsIGFsbCBhY2Nlc3NlcyB0bw0KPiA+ ID4gdGhlDQo+ID4gPiBzaG1mcyBmaWxlDQo+ID4gPiArYXJlIHBlcmZvcm1lZCBieSBtYW5pcHVs YXRpbmcgdGhlIHBhZ2UgY2FjaGUgZGlyZWN0bHkuDQo+ID4gPiAreGZpbGUgd3JpdGVzIGNhbGwg dGhlIGBgLT53cml0ZV9iZWdpbmBgIGFuZCBgYC0+d3JpdGVfZW5kYGANCj4gPiA+IGZ1bmN0aW9u cyBvZiB0aGUNCj4gPiA+ICt4ZmlsZSdzIGFkZHJlc3Mgc3BhY2UgdG8gZ3JhYiB3cml0YWJsZSBw YWdlcywgY29weSB0aGUgY2FsbGVyJ3MNCj4gPiA+IGJ1ZmZlciBpbnRvIHRoZQ0KPiA+ID4gK3Bh Z2UsIGFuZCByZWxlYXNlIHRoZSBwYWdlcy4NCj4gPiA+ICt4ZmlsZSByZWFkcyBjYWxsIGBgc2ht ZW1fcmVhZF9tYXBwaW5nX3BhZ2VfZ2ZwYGAgdG8gZ3JhYiBwYWdlcw0KPiA+IHhmaWxlIHJlYWRl cnMNCj4gDQo+IE9LLg0KPiANCj4gPiA+IGRpcmVjdGx5IGJlZm9yZQ0KPiA+ID4gK2NvcHlpbmcg dGhlIGNvbnRlbnRzIGludG8gdGhlIGNhbGxlcidzIGJ1ZmZlci4NCj4gPiA+ICtJbiBvdGhlciB3 b3JkcywgeGZpbGVzIGlnbm9yZSB0aGUgVkZTIHJlYWQgYW5kIHdyaXRlIGNvZGUgcGF0aHMNCj4g PiA+IHRvDQo+ID4gPiBhdm9pZA0KPiA+ID4gK2hhdmluZyB0byBjcmVhdGUgYSBkdW1teSBgYHN0 cnVjdCBraW9jYmBgIGFuZCB0byBhdm9pZCB0YWtpbmcNCj4gPiA+IGlub2RlDQo+ID4gPiBhbmQN Cj4gPiA+ICtmcmVlemUgbG9ja3MuDQo+ID4gPiArDQo+ID4gPiArSWYgYW4geGZpbGUgaXMgc2hh cmVkIGJldHdlZW4gdGhyZWFkcyB0byBzdGFnZSByZXBhaXJzLCB0aGUNCj4gPiA+IGNhbGxlcg0K PiA+ID4gbXVzdCBwcm92aWRlDQo+ID4gPiAraXRzIG93biBsb2NrcyB0byBjb29yZGluYXRlIGFj Y2Vzcy4NCj4gPiBPZnNjayB0aHJlYWRzIHRoYXQgc2hhcmUgYW4geGZpbGUgYmV0d2VlbiBzdGFn ZSByZXBhaXJzIHdpbGwgdXNlDQo+ID4gdGhlaXINCj4gPiBvd24gbG9ja3MgdG8gY29vcmRpbmF0 ZSBhY2Nlc3Mgd2l0aCBlYWNoIG90aGVyLg0KPiA+IA0KPiA+ID8NCj4gDQo+IEhtLsKgIEkgd29u ZGVyIGlmIHRoZXJlJ3MgYSBtaXN1bmRlcnN0YW5kaW5nIGhlcmU/DQo+IA0KPiBPbmxpbmUgZnNj ayBmdW5jdGlvbnMgdGhlbXNlbHZlcyBhcmUgc2luZ2xlLXRocmVhZGVkLCB3aGljaCBpcyB0byBz YXkNCj4gdGhhdCB0aGV5IHRoZW1zZWx2ZXMgbmVpdGhlciBxdWV1ZSB3b3JrZXJzIG5vciBzdGFy dCBrdGhyZWFkcy7CoA0KPiBIb3dldmVyLA0KPiBhbiB4ZmlsZSBjcmVhdGVkIGJ5IGEgcnVubmlu ZyBmc2NrIGZ1bmN0aW9uIGNhbiBiZSBhY2Nlc3NlZCBmcm9tDQo+IG90aGVyDQo+IHRocmVhZCBp ZiB0aGUgZnNjayBmdW5jdGlvbiBhbHNvIGhvb2tzIGl0c2VsZiBpbnRvIGZpbGVzeXN0ZW0gY29k ZS4NCj4gDQo+IFRoZSBsaXZlIHVwZGF0ZSBzZWN0aW9uIGhhcyBhIG5pY2UgZGlhZ3JhbSBvZiBo b3cgdGhhdCB3b3JrczoNCj4gaHR0cHM6Ly9kandvbmcub3JnL2RvY3MveGZzLW9ubGluZS1mc2Nr LWRlc2lnbi8jZmlsZXN5c3RlbS1ob29rcw0KPiANCg0KT2ggb2ssIEkgdGhpbmsgSSBnb3QgaHVu ZyB1cCBvbiB3aG8gdGhlIGNhbGxlcnMgd2VyZS4gIEhvdyBhYm91dA0KInhmaWxlcyBzaGFyZWQg YmV0d2VlbiB0aHJlYWRzIHJ1bm5pbmcgZnJvbSBob29rZWQgZmlsZXN5c3RlbSBmdW5jdGlvbnMN CndpbGwgdXNlIHRoZWlyIG93biBsb2NrcyB0byBjb29yZGluYXRlIGFjY2VzcyB3aXRoIGVhY2gg b3RoZXIuIg0KDQo+ID4gPiArDQo+ID4gPiArLi4gX3hmYXJyYXk6DQo+ID4gPiArDQo+ID4gPiAr QXJyYXlzIG9mIEZpeGVkLVNpemVkIFJlY29yZHMNCj4gPiA+ICtgYGBgYGBgYGBgYGBgYGBgYGBg YGBgYGBgYGBgYA0KPiA+ID4gKw0KPiA+ID4gK0luIFhGUywgZWFjaCB0eXBlIG9mIGluZGV4ZWQg c3BhY2UgbWV0YWRhdGEgKGZyZWUgc3BhY2UsIGlub2RlcywNCj4gPiA+IHJlZmVyZW5jZQ0KPiA+ ID4gK2NvdW50cywgZmlsZSBmb3JrIHNwYWNlLCBhbmQgcmV2ZXJzZSBtYXBwaW5ncykgY29uc2lz dHMgb2YgYSBzZXQNCj4gPiA+IG9mDQo+ID4gPiBmaXhlZC1zaXplDQo+ID4gPiArcmVjb3JkcyBp bmRleGVkIHdpdGggYSBjbGFzc2ljIEIrIHRyZWUuDQo+ID4gPiArRGlyZWN0b3JpZXMgaGF2ZSBh IHNldCBvZiBmaXhlZC1zaXplIGRpcmVudCByZWNvcmRzIHRoYXQgcG9pbnQNCj4gPiA+IHRvDQo+ ID4gPiB0aGUgbmFtZXMsDQo+ID4gPiArYW5kIGV4dGVuZGVkIGF0dHJpYnV0ZXMgaGF2ZSBhIHNl dCBvZiBmaXhlZC1zaXplIGF0dHJpYnV0ZSBrZXlzDQo+ID4gPiB0aGF0DQo+ID4gPiBwb2ludCB0 bw0KPiA+ID4gK25hbWVzIGFuZCB2YWx1ZXMuDQo+ID4gPiArUXVvdGEgY291bnRlcnMgYW5kIGZp bGUgbGluayBjb3VudGVycyBpbmRleCByZWNvcmRzIHdpdGgNCj4gPiA+IG51bWJlcnMuDQo+ID4g PiArRHVyaW5nIGEgcmVwYWlyLCBzY3J1YiBuZWVkcyB0byBzdGFnZSBuZXcgcmVjb3JkcyBkdXJp bmcgdGhlDQo+ID4gPiBnYXRoZXJpbmcgc3RlcCBhbmQNCj4gPiA+ICtyZXRyaWV2ZSB0aGVtIGR1 cmluZyB0aGUgYnRyZWUgYnVpbGRpbmcgc3RlcC4NCj4gPiA+ICsNCj4gPiA+ICtBbHRob3VnaCB0 aGlzIHJlcXVpcmVtZW50IGNhbiBiZSBzYXRpc2ZpZWQgYnkgY2FsbGluZyB0aGUgcmVhZA0KPiA+ ID4gYW5kDQo+ID4gPiB3cml0ZQ0KPiA+ID4gK21ldGhvZHMgb2YgdGhlIHhmaWxlIGRpcmVjdGx5 LCBpdCBpcyBzaW1wbGVyIGZvciBjYWxsZXJzIGZvcg0KPiA+ID4gdGhlcmUNCj4gPiA+IHRvIGJl IGENCj4gPiA+ICtoaWdoZXIgbGV2ZWwgYWJzdHJhY3Rpb24gdG8gdGFrZSBjYXJlIG9mIGNvbXB1 dGluZyBhcnJheQ0KPiA+ID4gb2Zmc2V0cywgdG8NCj4gPiA+IHByb3ZpZGUNCj4gPiA+ICtpdGVy YXRvciBmdW5jdGlvbnMsIGFuZCB0byBkZWFsIHdpdGggc3BhcnNlIHJlY29yZHMgYW5kIHNvcnRp bmcuDQo+ID4gPiArVGhlIGBgeGZhcnJheWBgIGFic3RyYWN0aW9uIHByZXNlbnRzIGEgbGluZWFy IGFycmF5IGZvciBmaXhlZC0NCj4gPiA+IHNpemUNCj4gPiA+IHJlY29yZHMgYXRvcA0KPiA+ID4g K3RoZSBieXRlLWFjY2Vzc2libGUgeGZpbGUuDQo+ID4gPiArDQo+ID4gPiArLi4gX3hmYXJyYXlf YWNjZXNzX3BhdHRlcm5zOg0KPiA+ID4gKw0KPiA+ID4gK0FycmF5IEFjY2VzcyBQYXR0ZXJucw0K PiA+ID4gK15eXl5eXl5eXl5eXl5eXl5eXl5eXg0KPiA+ID4gKw0KPiA+ID4gK0FycmF5IGFjY2Vz cyBwYXR0ZXJucyBpbiBvbmxpbmUgZnNjayB0ZW5kIHRvIGZhbGwgaW50byB0aHJlZQ0KPiA+ID4g Y2F0ZWdvcmllcy4NCj4gPiA+ICtJdGVyYXRpb24gb2YgcmVjb3JkcyBpcyBhc3N1bWVkIHRvIGJl IG5lY2Vzc2FyeSBmb3IgYWxsIGNhc2VzDQo+ID4gPiBhbmQNCj4gPiA+IHdpbGwgYmUNCj4gPiA+ ICtjb3ZlcmVkIGluIHRoZSBuZXh0IHNlY3Rpb24uDQo+ID4gPiArDQo+ID4gPiArVGhlIGZpcnN0 IHR5cGUgb2YgY2FsbGVyIGhhbmRsZXMgcmVjb3JkcyB0aGF0IGFyZSBpbmRleGVkIGJ5DQo+ID4g PiBwb3NpdGlvbi4NCj4gPiA+ICtHYXBzIG1heSBleGlzdCBiZXR3ZWVuIHJlY29yZHMsIGFuZCBh IHJlY29yZCBtYXkgYmUgdXBkYXRlZA0KPiA+ID4gbXVsdGlwbGUNCj4gPiA+IHRpbWVzDQo+ID4g PiArZHVyaW5nIHRoZSBjb2xsZWN0aW9uIHN0ZXAuDQo+ID4gPiArSW4gb3RoZXIgd29yZHMsIHRo ZXNlIGNhbGxlcnMgd2FudCBhIHNwYXJzZSBsaW5lYXJseSBhZGRyZXNzZWQNCj4gPiA+IHRhYmxl DQo+ID4gPiBmaWxlLg0KPiA+ID4gK1RoZSB0eXBpY2FsIHVzZSBjYXNlIGFyZSBxdW90YSByZWNv cmRzIG9yIGZpbGUgbGluayBjb3VudA0KPiA+ID4gcmVjb3Jkcy4NCj4gPiA+ICtBY2Nlc3MgdG8g YXJyYXkgZWxlbWVudHMgaXMgcGVyZm9ybWVkIHByb2dyYW1tYXRpY2FsbHkgdmlhDQo+ID4gPiBg YHhmYXJyYXlfbG9hZGBgIGFuZA0KPiA+ID4gK2BgeGZhcnJheV9zdG9yZWBgIGZ1bmN0aW9ucywg d2hpY2ggd3JhcCB0aGUgc2ltaWxhcmx5LW5hbWVkDQo+ID4gPiB4ZmlsZQ0KPiA+ID4gZnVuY3Rp b25zIHRvDQo+ID4gPiArcHJvdmlkZSBsb2FkaW5nIGFuZCBzdG9yaW5nIG9mIGFycmF5IGVsZW1l bnRzIGF0IGFyYml0cmFyeSBhcnJheQ0KPiA+ID4gaW5kaWNlcy4NCj4gPiA+ICtHYXBzIGFyZSBk ZWZpbmVkIHRvIGJlIG51bGwgcmVjb3JkcywgYW5kIG51bGwgcmVjb3JkcyBhcmUNCj4gPiA+IGRl ZmluZWQgdG8NCj4gPiA+IGJlIGENCj4gPiA+ICtzZXF1ZW5jZSBvZiBhbGwgemVybyBieXRlcy4N Cj4gPiA+ICtOdWxsIHJlY29yZHMgYXJlIGRldGVjdGVkIGJ5IGNhbGxpbmcNCj4gPiA+IGBgeGZh cnJheV9lbGVtZW50X2lzX251bGxgYC4NCj4gPiA+ICtUaGV5IGFyZSBjcmVhdGVkIGVpdGhlciBi eSBjYWxsaW5nIGBgeGZhcnJheV91bnNldGBgIHRvIG51bGwgb3V0DQo+ID4gPiBhbg0KPiA+ID4g ZXhpc3RpbmcNCj4gPiA+ICtyZWNvcmQgb3IgYnkgbmV2ZXIgc3RvcmluZyBhbnl0aGluZyB0byBh biBhcnJheSBpbmRleC4NCj4gPiA+ICsNCj4gPiA+ICtUaGUgc2Vjb25kIHR5cGUgb2YgY2FsbGVy IGhhbmRsZXMgcmVjb3JkcyB0aGF0IGFyZSBub3QgaW5kZXhlZA0KPiA+ID4gYnkNCj4gPiA+IHBv c2l0aW9uDQo+ID4gPiArYW5kIGRvIG5vdCByZXF1aXJlIG11bHRpcGxlIHVwZGF0ZXMgdG8gYSBy ZWNvcmQuDQo+ID4gPiArVGhlIHR5cGljYWwgdXNlIGNhc2UgaGVyZSBpcyByZWJ1aWxkaW5nIHNw YWNlIGJ0cmVlcyBhbmQNCj4gPiA+IGtleS92YWx1ZQ0KPiA+ID4gYnRyZWVzLg0KPiA+ID4gK1Ro ZXNlIGNhbGxlcnMgY2FuIGFkZCByZWNvcmRzIHRvIHRoZSBhcnJheSB3aXRob3V0IGNhcmluZyBh Ym91dA0KPiA+ID4gYXJyYXkgaW5kaWNlcw0KPiA+ID4gK3ZpYSB0aGUgYGB4ZmFycmF5X2FwcGVu ZGBgIGZ1bmN0aW9uLCB3aGljaCBzdG9yZXMgYSByZWNvcmQgYXQNCj4gPiA+IHRoZQ0KPiA+ID4g ZW5kIG9mIHRoZQ0KPiA+ID4gK2FycmF5Lg0KPiA+ID4gK0ZvciBjYWxsZXJzIHRoYXQgcmVxdWly ZSByZWNvcmRzIHRvIGJlIHByZXNlbnRhYmxlIGluIGEgc3BlY2lmaWMNCj4gPiA+IG9yZGVyIChl LmcuDQo+ID4gPiArcmVidWlsZGluZyBidHJlZSBkYXRhKSwgdGhlIGBgeGZhcnJheV9zb3J0YGAg ZnVuY3Rpb24gY2FuDQo+ID4gPiBhcnJhbmdlDQo+ID4gPiB0aGUgc29ydGVkDQo+ID4gPiArcmVj b3JkczsgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNvdmVyZWQgbGF0ZXIuDQo+ID4gPiArDQo+ID4g PiArVGhlIHRoaXJkIHR5cGUgb2YgY2FsbGVyIGlzIGEgYmFnLCB3aGljaCBpcyB1c2VmdWwgZm9y IGNvdW50aW5nDQo+ID4gPiByZWNvcmRzLg0KPiA+ID4gK1RoZSB0eXBpY2FsIHVzZSBjYXNlIGhl cmUgaXMgY29uc3RydWN0aW5nIHNwYWNlIGV4dGVudCByZWZlcmVuY2UNCj4gPiA+IGNvdW50cyBm cm9tDQo+ID4gPiArcmV2ZXJzZSBtYXBwaW5nIGluZm9ybWF0aW9uLg0KPiA+ID4gK1JlY29yZHMg Y2FuIGJlIHB1dCBpbiB0aGUgYmFnIGluIGFueSBvcmRlciwgdGhleSBjYW4gYmUgcmVtb3ZlZA0K PiA+ID4gZnJvbQ0KPiA+ID4gdGhlIGJhZw0KPiA+ID4gK2F0IGFueSB0aW1lLCBhbmQgdW5pcXVl bmVzcyBvZiByZWNvcmRzIGlzIGxlZnQgdG8gY2FsbGVycy4NCj4gPiA+ICtUaGUgYGB4ZmFycmF5 X3N0b3JlX2FueXdoZXJlYGAgZnVuY3Rpb24gaXMgdXNlZCB0byBpbnNlcnQgYQ0KPiA+ID4gcmVj b3JkDQo+ID4gPiBpbiBhbnkNCj4gPiA+ICtudWxsIHJlY29yZCBzbG90IGluIHRoZSBiYWc7IGFu ZCB0aGUgYGB4ZmFycmF5X3Vuc2V0YGAgZnVuY3Rpb24NCj4gPiA+IHJlbW92ZXMgYQ0KPiA+ID4g K3JlY29yZCBmcm9tIHRoZSBiYWcuDQo+ID4gPiArDQo+ID4gPiArVGhlIHByb3Bvc2VkIHBhdGNo c2V0IGlzIHRoZQ0KPiA+ID4gK2BiaWcgaW4tbWVtb3J5IGFycmF5DQo+ID4gPiArPA0KPiA+ID4g aHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvZGp3b25nL3hm cy1saW51eC5naXQvDQo+ID4gPiBsb2cvP2g9YmlnLWFycmF5PmBfLg0KPiA+ID4gKw0KPiA+ID4g K0l0ZXJhdGluZyBBcnJheSBFbGVtZW50cw0KPiA+ID4gK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xg0KPiA+ID4gKw0KPiA+ID4gK01vc3QgdXNlcnMgb2YgdGhlIHhmYXJyYXkgcmVxdWlyZSB0aGUg YWJpbGl0eSB0byBpdGVyYXRlIHRoZQ0KPiA+ID4gcmVjb3Jkcw0KPiA+ID4gc3RvcmVkIGluDQo+ ID4gPiArdGhlIGFycmF5Lg0KPiA+ID4gK0NhbGxlcnMgY2FuIHByb2JlIGV2ZXJ5IHBvc3NpYmxl IGFycmF5IGluZGV4IHdpdGggdGhlIGZvbGxvd2luZzoNCj4gPiA+ICsNCj4gPiA+ICsuLiBjb2Rl LWJsb2NrOjogYw0KPiA+ID4gKw0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgeGZhcnJheV9pZHhfdCBp Ow0KPiA+ID4gK8KgwqDCoMKgwqDCoMKgZm9yZWFjaF94ZmFycmF5X2lkeChhcnJheSwgaSkgew0K PiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHhmYXJyYXlfbG9hZChhcnJheSwgaSwgJnJlYyk7 DQo+ID4gPiArDQo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogZG8gc29tZXRoaW5nIHdp dGggcmVjICovDQo+ID4gPiArwqDCoMKgwqDCoMKgwqB9DQo+ID4gPiArDQo+ID4gPiArQWxsIHVz ZXJzIG9mIHRoaXMgaWRpb20gbXVzdCBiZSBwcmVwYXJlZCB0byBoYW5kbGUgbnVsbCByZWNvcmRz DQo+ID4gPiBvcg0KPiA+ID4gbXVzdCBhbHJlYWR5DQo+ID4gPiAra25vdyB0aGF0IHRoZXJlIGFy ZW4ndCBhbnkuDQo+ID4gPiArDQo+ID4gPiArRm9yIHhmYXJyYXkgdXNlcnMgdGhhdCB3YW50IHRv IGl0ZXJhdGUgYSBzcGFyc2UgYXJyYXksIHRoZQ0KPiA+ID4gYGB4ZmFycmF5X2l0ZXJgYA0KPiA+ ID4gK2Z1bmN0aW9uIGlnbm9yZXMgaW5kaWNlcyBpbiB0aGUgeGZhcnJheSB0aGF0IGhhdmUgbmV2 ZXIgYmVlbg0KPiA+ID4gd3JpdHRlbg0KPiA+ID4gdG8gYnkNCj4gPiA+ICtjYWxsaW5nIGBgeGZp bGVfc2Vla19kYXRhYGAgKHdoaWNoIGludGVybmFsbHkgdXNlcw0KPiA+ID4gYGBTRUVLX0RBVEFg YCkgdG8NCj4gPiA+IHNraXAgYXJlYXMNCj4gPiA+ICtvZiB0aGUgYXJyYXkgdGhhdCBhcmUgbm90 IHBvcHVsYXRlZCB3aXRoIG1lbW9yeSBwYWdlcy4NCj4gPiA+ICtPbmNlIGl0IGZpbmRzIGEgcGFn ZSwgaXQgd2lsbCBza2lwIHRoZSB6ZXJvZWQgYXJlYXMgb2YgdGhlIHBhZ2UuDQo+ID4gPiArDQo+ ID4gPiArLi4gY29kZS1ibG9jazo6IGMNCj4gPiA+ICsNCj4gPiA+ICvCoMKgwqDCoMKgwqDCoHhm YXJyYXlfaWR4X3QgaSA9IFhGQVJSQVlfQ1VSU09SX0lOSVQ7DQo+ID4gPiArwqDCoMKgwqDCoMKg wqB3aGlsZSAoKHJldCA9IHhmYXJyYXlfaXRlcihhcnJheSwgJmksICZyZWMpKSA9PSAxKSB7DQo+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogZG8gc29tZXRoaW5nIHdpdGggcmVjICovDQo+ ID4gPiArwqDCoMKgwqDCoMKgwqB9DQo+ID4gPiArDQo+ID4gPiArLi4gX3hmYXJyYXlfc29ydDoN Cj4gPiA+ICsNCj4gPiA+ICtTb3J0aW5nIEFycmF5IEVsZW1lbnRzDQo+ID4gPiArXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXg0KPiA+ID4gKw0KPiA+ID4gK0R1cmluZyB0aGUgZm91cnRoIGRlbW9uc3Ry YXRpb24gb2Ygb25saW5lIHJlcGFpciwgYSBjb21tdW5pdHkNCj4gPiA+IHJldmlld2VyIHJlbWFy a2VkDQo+ID4gPiArdGhhdCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgb25saW5lIHJlcGFpciBv dWdodCB0byBsb2FkDQo+ID4gPiBiYXRjaGVzIG9mDQo+ID4gPiByZWNvcmRzDQo+ID4gPiAraW50 byBidHJlZSByZWNvcmQgYmxvY2tzIGluc3RlYWQgb2YgaW5zZXJ0aW5nIHJlY29yZHMgaW50byBh IG5ldw0KPiA+ID4gYnRyZWUgb25lIGF0IGENCj4gPiA+ICt0aW1lLg0KPiA+ID4gK1RoZSBidHJl ZSBpbnNlcnRpb24gY29kZSBpbiBYRlMgaXMgcmVzcG9uc2libGUgZm9yIG1haW50YWluaW5nDQo+ ID4gPiBjb3JyZWN0IG9yZGVyaW5nDQo+ID4gPiArb2YgdGhlIHJlY29yZHMsIHNvIG5hdHVyYWxs eSB0aGUgeGZhcnJheSBtdXN0IGFsc28gc3VwcG9ydA0KPiA+ID4gc29ydGluZw0KPiA+ID4gdGhl IHJlY29yZA0KPiA+ID4gK3NldCBwcmlvciB0byBidWxrIGxvYWRpbmcuDQo+ID4gPiArDQo+ID4g PiArVGhlIHNvcnRpbmcgYWxnb3JpdGhtIHVzZWQgaW4gdGhlIHhmYXJyYXkgaXMgYWN0dWFsbHkg YQ0KPiA+ID4gY29tYmluYXRpb24NCj4gPiA+IG9mIGFkYXB0aXZlDQo+ID4gPiArcXVpY2tzb3J0 IGFuZCBhIGhlYXBzb3J0IHN1YmFsZ29yaXRobSBpbiB0aGUgc3Bpcml0IG9mDQo+ID4gPiArYFNl ZGdld2ljayA8aHR0cHM6Ly9hbGdzNC5jcy5wcmluY2V0b24uZWR1LzIzcXVpY2tzb3J0Lz5gXyBh bmQNCj4gPiA+ICtgcGRxc29ydCA8aHR0cHM6Ly9naXRodWIuY29tL29ybHAvcGRxc29ydD5gXywg d2l0aA0KPiA+ID4gY3VzdG9taXphdGlvbnMNCj4gPiA+IGZvciB0aGUgTGludXgNCj4gPiA+ICtr ZXJuZWwuDQo+ID4gPiArVG8gc29ydCByZWNvcmRzIGluIGEgcmVhc29uYWJseSBzaG9ydCBhbW91 bnQgb2YgdGltZSwNCj4gPiA+IGBgeGZhcnJheWBgDQo+ID4gPiB0YWtlcw0KPiA+ID4gK2FkdmFu dGFnZSBvZiB0aGUgYmluYXJ5IHN1YnBhcnRpdGlvbmluZyBvZmZlcmVkIGJ5IHF1aWNrc29ydCwN Cj4gPiA+IGJ1dCBpdA0KPiA+ID4gYWxzbyB1c2VzDQo+ID4gPiAraGVhcHNvcnQgdG8gaGVkZ2Ug YWdpbnN0IHBlcmZvcm1hbmNlIGNvbGxhcHNlIGlmIHRoZSBjaG9zZW4NCj4gPiA+IHF1aWNrc29y dCBwaXZvdHMNCj4gPiA+ICthcmUgcG9vci4NCj4gPiA+ICtCb3RoIGFsZ29yaXRobXMgYXJlIChp biBnZW5lcmFsKSBPKG4gKiBsZyhuKSksIGJ1dCB0aGVyZSBpcyBhDQo+ID4gPiB3aWRlDQo+ID4g PiBwZXJmb3JtYW5jZQ0KPiA+ID4gK2d1bGYgYmV0d2VlbiB0aGUgdHdvIGltcGxlbWVudGF0aW9u cy4NCj4gPiA+ICsNCj4gPiA+ICtUaGUgTGludXgga2VybmVsIGFscmVhZHkgY29udGFpbnMgYSBy ZWFzb25hYmx5IGZhc3QNCj4gPiA+IGltcGxlbWVudGF0aW9uDQo+ID4gPiBvZiBoZWFwc29ydC4N Cj4gPiA+ICtJdCBvbmx5IG9wZXJhdGVzIG9uIHJlZ3VsYXIgQyBhcnJheXMsIHdoaWNoIGxpbWl0 cyB0aGUgc2NvcGUgb2YNCj4gPiA+IGl0cw0KPiA+ID4gdXNlZnVsbmVzcy4NCj4gPiA+ICtUaGVy ZSBhcmUgdHdvIGtleSBwbGFjZXMgd2hlcmUgdGhlIHhmYXJyYXkgdXNlcyBpdDoNCj4gPiA+ICsN Cj4gPiA+ICsqIFNvcnRpbmcgYW55IHJlY29yZCBzdWJzZXQgYmFja2VkIGJ5IGEgc2luZ2xlIHhm aWxlIHBhZ2UuDQo+ID4gPiArDQo+ID4gPiArKiBMb2FkaW5nIGEgc21hbGwgbnVtYmVyIG9mIHhm YXJyYXkgcmVjb3JkcyBmcm9tIHBvdGVudGlhbGx5DQo+ID4gPiBkaXNwYXJhdGUgcGFydHMNCj4g PiA+ICvCoCBvZiB0aGUgeGZhcnJheSBpbnRvIGEgbWVtb3J5IGJ1ZmZlciwgYW5kIHNvcnRpbmcg dGhlIGJ1ZmZlci4NCj4gPiA+ICsNCj4gPiA+ICtJbiBvdGhlciB3b3JkcywgYGB4ZmFycmF5YGAg dXNlcyBoZWFwc29ydCB0byBjb25zdHJhaW4gdGhlDQo+ID4gPiBuZXN0ZWQNCj4gPiA+IHJlY3Vy c2lvbiBvZg0KPiA+ID4gK3F1aWNrc29ydCwgdGhlcmVieSBtaXRpZ2F0aW5nIHF1aWNrc29ydCdz IHdvcnN0IHJ1bnRpbWUNCj4gPiA+IGJlaGF2aW9yLg0KPiA+ID4gKw0KPiA+ID4gK0Nob29zaW5n IGEgcXVpY2tzb3J0IHBpdm90IGlzIGEgdHJpY2t5IGJ1c2luZXNzLg0KPiA+ID4gK0EgZ29vZCBw aXZvdCBzcGxpdHMgdGhlIHNldCB0byBzb3J0IGluIGhhbGYsIGxlYWRpbmcgdG8gdGhlDQo+ID4g PiBkaXZpZGUNCj4gPiA+IGFuZCBjb25xdWVyDQo+ID4gPiArYmVoYXZpb3IgdGhhdCBpcyBjcnVj aWFsIHRvwqAgTyhuICogbGcobikpIHBlcmZvcm1hbmNlLg0KPiA+ID4gK0EgcG9vciBwaXZvdCBi YXJlbHkgc3BsaXRzIHRoZSBzdWJzZXQgYXQgYWxsLCBsZWFkaW5nIHRvIE8oblwNCj4gPiA+IDpz dXA6YDJgKQ0KPiA+ID4gK3J1bnRpbWUuDQo+ID4gPiArVGhlIHhmYXJyYXkgc29ydCByb3V0aW5l IHRyaWVzIHRvIGF2b2lkIHBpY2tpbmcgYSBiYWQgcGl2b3QgYnkNCj4gPiA+IHNhbXBsaW5nIG5p bmUNCj4gPiA+ICtyZWNvcmRzIGludG8gYSBtZW1vcnkgYnVmZmVyIGFuZCB1c2luZyB0aGUga2Vy bmVsIGhlYXBzb3J0IHRvDQo+ID4gPiBpZGVudGlmeSB0aGUNCj4gPiA+ICttZWRpYW4gb2YgdGhl IG5pbmUuDQo+ID4gPiArDQo+ID4gPiArTW9zdCBtb2Rlcm4gcXVpY2tzb3J0IGltcGxlbWVudGF0 aW9ucyBlbXBsb3kgVHVrZXkncyAibmludGhlciINCj4gPiA+IHRvDQo+ID4gPiBzZWxlY3QgYQ0K PiA+ID4gK3Bpdm90IGZyb20gYSBjbGFzc2ljIEMgYXJyYXkuDQo+ID4gPiArVHlwaWNhbCBuaW50 aGVyIGltcGxlbWVudGF0aW9ucyBwaWNrIHRocmVlIHVuaXF1ZSB0cmlhZHMgb2YNCj4gPiA+IHJl Y29yZHMsDQo+ID4gPiBzb3J0IGVhY2gNCj4gPiA+ICtvZiB0aGUgdHJpYWRzLCBhbmQgdGhlbiBz b3J0IHRoZSBtaWRkbGUgdmFsdWUgb2YgZWFjaCB0cmlhZCB0bw0KPiA+ID4gZGV0ZXJtaW5lIHRo ZQ0KPiA+ID4gK25pbnRoZXIgdmFsdWUuDQo+ID4gPiArQXMgc3RhdGVkIHByZXZpb3VzbHksIGhv d2V2ZXIsIHhmaWxlIGFjY2Vzc2VzIGFyZSBub3QgZW50aXJlbHkNCj4gPiA+IGNoZWFwLg0KPiA+ ID4gK0l0IHR1cm5lZCBvdXQgdG8gYmUgbXVjaCBtb3JlIHBlcmZvcm1hbnQgdG8gcmVhZCB0aGUg bmluZQ0KPiA+ID4gZWxlbWVudHMNCj4gPiA+IGludG8gYQ0KPiA+ID4gK21lbW9yeSBidWZmZXIs IHJ1biB0aGUga2VybmVsJ3MgaW4tbWVtb3J5IGhlYXBzb3J0IG9uIHRoZQ0KPiA+ID4gYnVmZmVy LA0KPiA+ID4gYW5kIGNob29zZQ0KPiA+ID4gK3RoZSA0dGggZWxlbWVudCBvZiB0aGF0IGJ1ZmZl ciBhcyB0aGUgcGl2b3QuDQo+ID4gPiArVHVrZXkncyBuaW50aGVycyBhcmUgZGVzY3JpYmVkIGlu IEouIFcuIFR1a2V5LCBgVGhlIG5pbnRoZXIsIGENCj4gPiA+IHRlY2huaXF1ZSBmb3INCj4gPiA+ ICtsb3ctZWZmb3J0IHJvYnVzdCAocmVzaXN0YW50KSBsb2NhdGlvbiBpbiBsYXJnZSBzYW1wbGVz YCwgaW4NCj4gPiA+ICpDb250cmlidXRpb25zIHRvDQo+ID4gPiArU3VydmV5IFNhbXBsaW5nIGFu ZCBBcHBsaWVkIFN0YXRpc3RpY3MqLCBlZGl0ZWQgYnkgSC4gRGF2aWQsDQo+ID4gPiAoQWNhZGVt aWMgUHJlc3MsDQo+ID4gPiArMTk3OCksIHBwLiAyNTHigJMyNTcuDQo+ID4gPiArDQo+ID4gPiAr VGhlIHBhcnRpdGlvbmluZyBvZiBxdWlja3NvcnQgaXMgZmFpcmx5IHRleHRib29rIC0tIHJlYXJy YW5nZQ0KPiA+ID4gdGhlDQo+ID4gPiByZWNvcmQNCj4gPiA+ICtzdWJzZXQgYXJvdW5kIHRoZSBw aXZvdCwgdGhlbiBzZXQgdXAgdGhlIGN1cnJlbnQgYW5kIG5leHQgc3RhY2sNCj4gPiA+IGZyYW1l cyB0bw0KPiA+ID4gK3NvcnQgd2l0aCB0aGUgbGFyZ2VyIGFuZCB0aGUgc21hbGxlciBoYWx2ZXMg b2YgdGhlIHBpdm90LA0KPiA+ID4gcmVzcGVjdGl2ZWx5Lg0KPiA+ID4gK1RoaXMga2VlcHMgdGhl IHN0YWNrIHNwYWNlIHJlcXVpcmVtZW50cyB0byBsb2cyKHJlY29yZCBjb3VudCkuDQo+ID4gPiAr DQo+ID4gPiArQXMgYSBmaW5hbCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIHRoZSBoaSBhbmQg bG8gc2Nhbm5pbmcNCj4gPiA+IHBoYXNlIG9mDQo+ID4gPiBxdWlja3NvcnQNCj4gPiA+ICtrZWVw cyBleGFtaW5lZCB4ZmlsZSBwYWdlcyBtYXBwZWQgaW4gdGhlIGtlcm5lbCBmb3IgYXMgbG9uZyBh cw0KPiA+ID4gcG9zc2libGUgdG8NCj4gPiA+ICtyZWR1Y2UgbWFwL3VubWFwIGN5Y2xlcy4NCj4g PiA+ICtTdXJwcmlzaW5nbHksIHRoaXMgcmVkdWNlcyBvdmVyYWxsIHNvcnQgcnVudGltZSBieSBu ZWFybHkgaGFsZg0KPiA+ID4gYWdhaW4NCj4gPiA+IGFmdGVyDQo+ID4gPiArYWNjb3VudGluZyBm b3IgdGhlIGFwcGxpY2F0aW9uIG9mIGhlYXBzb3J0IGRpcmVjdGx5IG9udG8geGZpbGUNCj4gPiA+ IHBhZ2VzLg0KPiA+IFRoaXMgc29ydGluZyBzZWN0aW9uIGlzIGluc2lnaHRmdWwsIGJ1dCBJIHRo aW5rIEknZCBiZSBvayB3aXRoIG91dA0KPiA+IGl0DQo+ID4gdG9vLsKgIE9yIG1heWJlIHNhdmUg aXQgZm9yIGxhdGVyIGluIHRoZSBkb2N1bWVudCBhcyBhbg0KPiA+ICJpbXBsZW1lbnRhdGlvbg0K PiA+IGRldGFpbHMiIHNlY3Rpb24sIG9yIHNvbWV0aGluZyBzaW1pbGFyLsKgIEl0IHNlZW1zIGxp a2UgdGhlcmUncw0KPiA+IHN0aWxsIGENCj4gPiBsb3QgdG8gY292ZXIgYWJvdXQgaG93IG9mc2Nr IHdvcmtzIGluIGdlbmVyYWwgYmVmb3JlIHdlIHN0YXJ0DQo+ID4gZHJpbGxpbmcNCj4gPiBpbnRv IHRoaW5ncyBsaWtlIHRoZSBydW50aW1lIGNvbXBsZXhpdHkgb2YgdGhlIHNvcnRpbmcgYWxnb3Jp dGhtIGl0DQo+ID4gdXNlcy7CoCANCj4gDQo+IEhvdyBhYm91dCBJIGRlbW90ZSB0aGUgZGV0YWls cyBvZiBob3cgc29ydGluZyB3b3JrcyB0byBhIGNhc2Ugc3R1ZHk/DQpTdXJlLCBzb3VuZHMgZ29v ZA0KPiANCj4gPiA+ICsNCj4gPiA+ICtCbG9iIFN0b3JhZ2UNCj4gPiA+ICtgYGBgYGBgYGBgYGAN Cj4gPiA+ICsNCj4gPiA+ICtFeHRlbmRlZCBhdHRyaWJ1dGVzIGFuZCBkaXJlY3RvcmllcyBhZGQg YW4gYWRkaXRpb25hbA0KPiA+ID4gcmVxdWlyZW1lbnQNCj4gPiA+IGZvciBzdGFnaW5nDQo+ID4g PiArcmVjb3JkczogYXJiaXRyYXJ5IGJ5dGUgc2VxdWVuY2VzIG9mIGZpbml0ZSBsZW5ndGguDQo+ ID4gPiArRWFjaCBkaXJlY3RvcnkgZW50cnkgcmVjb3JkIG5lZWRzIHRvIHN0b3JlIGVudHJ5IG5h bWUsDQo+ID4gPiArYW5kIGVhY2ggZXh0ZW5kZWQgYXR0cmlidXRlIG5lZWRzIHRvIHN0b3JlIGJv dGggdGhlIGF0dHJpYnV0ZQ0KPiA+ID4gbmFtZQ0KPiA+ID4gYW5kIHZhbHVlLg0KPiA+ID4gK1Ro ZSBuYW1lcywga2V5cywgYW5kIHZhbHVlcyBjYW4gY29uc3VtZSBhIGxhcmdlIGFtb3VudCBvZg0K PiA+ID4gbWVtb3J5LCBzbw0KPiA+ID4gdGhlDQo+ID4gPiArYGB4ZmJsb2JgYCBhYnN0cmFjdGlv biB3YXMgY3JlYXRlZCB0byBzaW1wbGlmeSBtYW5hZ2VtZW50IG9mDQo+ID4gPiB0aGVzZQ0KPiA+ ID4gYmxvYnMNCj4gPiA+ICthdG9wIGFuIHhmaWxlLg0KPiA+ID4gKw0KPiA+ID4gK0Jsb2IgYXJy YXlzIHByb3ZpZGUgYGB4ZmJsb2JfbG9hZGBgIGFuZCBgYHhmYmxvYl9zdG9yZWBgDQo+ID4gPiBm dW5jdGlvbnMNCj4gPiA+IHRvIHJldHJpZXZlDQo+ID4gPiArYW5kIHBlcnNpc3Qgb2JqZWN0cy4N Cj4gPiA+ICtUaGUgc3RvcmUgZnVuY3Rpb24gcmV0dXJucyBhIG1hZ2ljIGNvb2tpZSBmb3IgZXZl cnkgb2JqZWN0IHRoYXQNCj4gPiA+IGl0DQo+ID4gPiBwZXJzaXN0cy4NCj4gPiA+ICtMYXRlciwg Y2FsbGVycyBwcm92aWRlIHRoaXMgY29va2llIHRvIHRoZSBgYHhibG9iX2xvYWRgYCB0bw0KPiA+ ID4gcmVjYWxsDQo+ID4gPiB0aGUgb2JqZWN0Lg0KPiA+ID4gK1RoZSBgYHhmYmxvYl9mcmVlYGAg ZnVuY3Rpb24gZnJlZXMgYSBzcGVjaWZpYyBibG9iLCBhbmQgdGhlDQo+ID4gPiBgYHhmYmxvYl90 cnVuY2F0ZWBgDQo+ID4gPiArZnVuY3Rpb24gZnJlZXMgdGhlbSBhbGwgYmVjYXVzZSBjb21wYWN0 aW9uIGlzIG5vdCBuZWVkZWQuDQo+ID4gPiArDQo+ID4gPiArVGhlIGRldGFpbHMgb2YgcmVwYWly aW5nIGRpcmVjdG9yaWVzIGFuZCBleHRlbmRlZCBhdHRyaWJ1dGVzDQo+ID4gPiB3aWxsIGJlDQo+ ID4gPiBkaXNjdXNzZWQNCj4gPiA+ICtpbiBhIHN1YnNlcXVlbnQgc2VjdGlvbiBhYm91dCBhdG9t aWMgZXh0ZW50IHN3YXBwaW5nLg0KPiA+ID4gK0hvd2V2ZXIsIGl0IHNob3VsZCBiZSBub3RlZCB0 aGF0IHRoZXNlIHJlcGFpciBmdW5jdGlvbnMgb25seSB1c2UNCj4gPiA+IGJsb2Igc3RvcmFnZQ0K PiA+ID4gK3RvIGNhY2hlIGEgc21hbGwgbnVtYmVyIG9mIGVudHJpZXMgYmVmb3JlIGFkZGluZyB0 aGVtIHRvIGENCj4gPiA+IHRlbXBvcmFyeQ0KPiA+ID4gb25kaXNrDQo+ID4gPiArZmlsZSwgd2hp Y2ggaXMgd2h5IGNvbXBhY3Rpb24gaXMgbm90IHJlcXVpcmVkLg0KPiA+ID4gKw0KPiA+ID4gK1Ro ZSBwcm9wb3NlZCBwYXRjaHNldCBpcyBhdCB0aGUgc3RhcnQgb2YgdGhlDQo+ID4gPiArYGV4dGVu ZGVkIGF0dHJpYnV0ZSByZXBhaXINCj4gPiA+ICs8DQo+ID4gPiBodHRwczovL2dpdC5rZXJuZWwu b3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9kandvbmcveGZzLWxpbnV4LmdpdC8NCj4gPiA+ IGxvZy8/aD1yZXBhaXIteGF0dHJzPmBfIHNlcmllcy4NCj4gPiA+ICsNCj4gPiA+ICsuLiBfeGZi dHJlZToNCj4gPiA+ICsNCj4gPiA+ICtJbi1NZW1vcnkgQitUcmVlcw0KPiA+ID4gK2BgYGBgYGBg YGBgYGBgYGBgDQo+ID4gPiArDQo+ID4gPiArVGhlIGNoYXB0ZXIgYWJvdXQgOnJlZjpgc2Vjb25k YXJ5IG1ldGFkYXRhPHNlY29uZGFyeV9tZXRhZGF0YT5gDQo+ID4gPiBtZW50aW9uZWQgdGhhdA0K PiA+ID4gK2NoZWNraW5nIGFuZCByZXBhaXJpbmcgb2Ygc2Vjb25kYXJ5IG1ldGFkYXRhIGNvbW1v bmx5IHJlcXVpcmVzDQo+ID4gPiBjb29yZGluYXRpb24NCj4gPiA+ICtiZXR3ZWVuIGEgbGl2ZSBt ZXRhZGF0YSBzY2FuIG9mIHRoZSBmaWxlc3lzdGVtIGFuZCB3cml0ZXINCj4gPiA+IHRocmVhZHMN Cj4gPiA+IHRoYXQgYXJlDQo+ID4gPiArdXBkYXRpbmcgdGhhdCBtZXRhZGF0YS4NCj4gPiA+ICtL ZWVwaW5nIHRoZSBzY2FuIGRhdGEgdXAgdG8gZGF0ZSByZXF1aXJlcyByZXF1aXJlcyB0aGUgYWJp bGl0eQ0KPiA+ID4gdG8NCj4gPiA+IHByb3BhZ2F0ZQ0KPiA+ID4gK21ldGFkYXRhIHVwZGF0ZXMg ZnJvbSB0aGUgZmlsZXN5c3RlbSBpbnRvIHRoZSBkYXRhIGJlaW5nDQo+ID4gPiBjb2xsZWN0ZWQN Cj4gPiA+IGJ5IHRoZSBzY2FuLg0KPiA+ID4gK1RoaXMgKmNhbiogYmUgZG9uZSBieSBhcHBlbmRp bmcgY29uY3VycmVudCB1cGRhdGVzIGludG8gYQ0KPiA+ID4gc2VwYXJhdGUNCj4gPiA+IGxvZyBm aWxlIGFuZA0KPiA+ID4gK2FwcGx5aW5nIHRoZW0gYmVmb3JlIHdyaXRpbmcgdGhlIG5ldyBtZXRh ZGF0YSB0byBkaXNrLCBidXQgdGhpcw0KPiA+ID4gbGVhZHMgdG8NCj4gPiA+ICt1bmJvdW5kZWQg bWVtb3J5IGNvbnN1bXB0aW9uIGlmIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0gaXMgdmVyeQ0KPiA+ ID4gYnVzeS4NCj4gPiA+ICtBbm90aGVyIG9wdGlvbiBpcyB0byBza2lwIHRoZSBzaWRlLWxvZyBh bmQgY29tbWl0IGxpdmUgdXBkYXRlcw0KPiA+ID4gZnJvbQ0KPiA+ID4gdGhlDQo+ID4gPiArZmls ZXN5c3RlbSBkaXJlY3RseSBpbnRvIHRoZSBzY2FuIGRhdGEsIHdoaWNoIHRyYWRlcyBtb3JlDQo+ ID4gPiBvdmVyaGVhZA0KPiA+ID4gZm9yIGEgbG93ZXINCj4gPiA+ICttYXhpbXVtIG1lbW9yeSBy ZXF1aXJlbWVudC4NCj4gPiA+ICtJbiBib3RoIGNhc2VzLCB0aGUgZGF0YSBzdHJ1Y3R1cmUgaG9s ZGluZyB0aGUgc2NhbiByZXN1bHRzIG11c3QNCj4gPiA+IHN1cHBvcnQgaW5kZXhlZA0KPiA+ID4g K2FjY2VzcyB0byBwZXJmb3JtIHdlbGwuDQo+ID4gPiArDQo+ID4gPiArR2l2ZW4gdGhhdCBpbmRl eGVkIGxvb2t1cHMgb2Ygc2NhbiBkYXRhIGlzIHJlcXVpcmVkIGZvciBib3RoDQo+ID4gPiBzdHJh dGVnaWVzLCBvbmxpbmUNCj4gPiA+ICtmc2NrIGVtcGxveXMgdGhlIHNlY29uZCBzdHJhdGVneSBv ZiBjb21taXR0aW5nIGxpdmUgdXBkYXRlcw0KPiA+ID4gZGlyZWN0bHkNCj4gPiA+IGludG8NCj4g PiA+ICtzY2FuIGRhdGEuDQo+ID4gPiArQmVjYXVzZSB4ZmFycmF5cyBhcmUgbm90IGluZGV4ZWQg YW5kIGRvIG5vdCBlbmZvcmNlIHJlY29yZA0KPiA+ID4gb3JkZXJpbmcsDQo+ID4gPiB0aGV5DQo+ ID4gPiArYXJlIG5vdCBzdWl0YWJsZSBmb3IgdGhpcyB0YXNrLg0KPiA+ID4gK0NvbnZlbmllbnRs eSwgaG93ZXZlciwgWEZTIGhhcyBhIGxpYnJhcnkgdG8gY3JlYXRlIGFuZCBtYWludGFpbg0KPiA+ ID4gb3JkZXJlZCByZXZlcnNlDQo+ID4gPiArbWFwcGluZyByZWNvcmRzOiB0aGUgZXhpc3Rpbmcg cm1hcCBidHJlZSBjb2RlIQ0KPiA+ID4gK0lmIG9ubHkgdGhlcmUgd2FzIGEgbWVhbnMgdG8gY3Jl YXRlIG9uZSBpbiBtZW1vcnkuDQo+ID4gPiArDQo+ID4gPiArUmVjYWxsIHRoYXQgdGhlIDpyZWY6 YHhmaWxlIDx4ZmlsZT5gIGFic3RyYWN0aW9uIHJlcHJlc2VudHMNCj4gPiA+IG1lbW9yeQ0KPiA+ ID4gcGFnZXMgYXMgYQ0KPiA+ID4gK3JlZ3VsYXIgZmlsZSwgd2hpY2ggbWVhbnMgdGhhdCB0aGUg a2VybmVsIGNhbiBjcmVhdGUgYnl0ZSBvcg0KPiA+ID4gYmxvY2sNCj4gPiA+IGFkZHJlc3NhYmxl DQo+ID4gPiArdmlydHVhbCBhZGRyZXNzIHNwYWNlcyBhdCB3aWxsLg0KPiA+ID4gK1RoZSBYRlMg YnVmZmVyIGNhY2hlIHNwZWNpYWxpemVzIGluIGFic3RyYWN0aW5nIElPIHRvIGJsb2NrLQ0KPiA+ ID4gb3JpZW50ZWTCoCBhZGRyZXNzDQo+ID4gPiArc3BhY2VzLCB3aGljaCBtZWFucyB0aGF0IGFk YXB0YXRpb24gb2YgdGhlIGJ1ZmZlciBjYWNoZSB0bw0KPiA+ID4gaW50ZXJmYWNlDQo+ID4gPiB3 aXRoDQo+ID4gPiAreGZpbGVzIGVuYWJsZXMgcmV1c2Ugb2YgdGhlIGVudGlyZSBidHJlZSBsaWJy YXJ5Lg0KPiA+ID4gK0J0cmVlcyBidWlsdCBhdG9wIGFuIHhmaWxlIGFyZSBjb2xsZWN0aXZlbHkg a25vd24gYXMNCj4gPiA+IGBgeGZidHJlZXNgYC4NCj4gPiA+ICtUaGUgbmV4dCBmZXcgc2VjdGlv bnMgZGVzY3JpYmUgaG93IHRoZXkgYWN0dWFsbHkgd29yay4NCj4gPiA+ICsNCj4gPiA+ICtUaGUg cHJvcG9zZWQgcGF0Y2hzZXQgaXMgdGhlDQo+ID4gPiArYGluLW1lbW9yeSBidHJlZQ0KPiA+ID4g KzwNCj4gPiA+IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0 L2Rqd29uZy94ZnMtbGludXguZ2l0Lw0KPiA+ID4gbG9nLz9oPWluLW1lbW9yeS1idHJlZXM+YF8N Cj4gPiA+ICtzZXJpZXMuDQo+ID4gPiArDQo+ID4gPiArVXNpbmcgeGZpbGVzIGFzIGEgQnVmZmVy IENhY2hlIFRhcmdldA0KPiA+ID4gK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl4NCj4gPiA+ICsNCj4gPiA+ICtUd28gbW9kaWZpY2F0aW9ucyBhcmUgbmVjZXNzYXJ5IHRvIHN1 cHBvcnQgeGZpbGVzIGFzIGEgYnVmZmVyDQo+ID4gPiBjYWNoZQ0KPiA+ID4gdGFyZ2V0Lg0KPiA+ ID4gK1RoZSBmaXJzdCBpcyB0byBtYWtlIGl0IHBvc3NpYmxlIGZvciB0aGUgYGBzdHJ1Y3QgeGZz X2J1ZnRhcmdgYA0KPiA+ID4gc3RydWN0dXJlIHRvDQo+ID4gPiAraG9zdCB0aGUgYGBzdHJ1Y3Qg eGZzX2J1ZmBgIHJoYXNodGFibGUsIGJlY2F1c2Ugbm9ybWFsbHkgdGhvc2UNCj4gPiA+IGFyZQ0K PiA+ID4gaGVsZCBieSBhDQo+ID4gPiArcGVyLUFHIHN0cnVjdHVyZS4NCj4gPiA+ICtUaGUgc2Vj b25kIGNoYW5nZSBpcyB0byBtb2RpZnkgdGhlIGJ1ZmZlciBgYGlvYXBwbHlgYCBmdW5jdGlvbg0K PiA+ID4gdG8NCj4gPiA+ICJyZWFkIiBjYWNoZWQNCj4gPiA+ICtwYWdlcyBmcm9tIHRoZSB4Zmls ZSBhbmQgIndyaXRlIiBjYWNoZWQgcGFnZXMgYmFjayB0byB0aGUgeGZpbGUuDQo+ID4gPiArTXVs dGlwbGUgYWNjZXNzIHRvIGluZGl2aWR1YWwgYnVmZmVycyBpcyBjb250cm9sbGVkIGJ5IHRoZQ0K PiA+ID4gYGB4ZnNfYnVmYGAgbG9jaywNCj4gPiA+ICtzaW5jZSB0aGUgeGZpbGUgZG9lcyBub3Qg cHJvdmlkZSBhbnkgbG9ja2luZyBvbiBpdHMgb3duLg0KPiA+ID4gK1dpdGggdGhpcyBhZGFwdGF0 aW9uIGluIHBsYWNlLCB1c2VycyBvZiB0aGUgeGZpbGUtYmFja2VkIGJ1ZmZlcg0KPiA+ID4gY2Fj aGUgdXNlDQo+ID4gPiArZXhhY3RseSB0aGUgc2FtZSBBUElzIGFzIHVzZXJzIG9mIHRoZSBkaXNr LWJhY2tlZCBidWZmZXIgY2FjaGUuDQo+ID4gPiArVGhlIHNlcGFyYXRpb24gYmV0d2VlbiB4Zmls ZSBhbmQgYnVmZmVyIGNhY2hlIGltcGxpZXMgaGlnaGVyDQo+ID4gPiBtZW1vcnkNCj4gPiA+IHVz YWdlIHNpbmNlDQo+ID4gPiArdGhleSBkbyBub3Qgc2hhcmUgcGFnZXMsIGJ1dCB0aGlzIHByb3Bl cnR5IGNvdWxkIHNvbWUgZGF5IGVuYWJsZQ0KPiA+ID4gdHJhbnNhY3Rpb25hbA0KPiA+ID4gK3Vw ZGF0ZXMgdG8gYW4gaW4tbWVtb3J5IGJ0cmVlLg0KPiA+ID4gK1RvZGF5LCBob3dldmVyLCBpdCBz aW1wbHkgZWxpbWluYXRlcyB0aGUgbmVlZCBmb3IgbmV3IGNvZGUuDQo+ID4gPiArDQo+ID4gPiAr U3BhY2UgTWFuYWdlbWVudCB3aXRoIGFuIHhmYnRyZWUNCj4gPiA+ICteXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXg0KPiA+ID4gKw0KPiA+ID4gK1NwYWNlIG1hbmFnZW1lbnQgZm9yIGFu IHhmaWxlIGlzIHZlcnkgc2ltcGxlIC0tIGVhY2ggYnRyZWUgYmxvY2sNCj4gPiA+IGlzDQo+ID4g PiBvbmUgbWVtb3J5DQo+ID4gPiArcGFnZSBpbiBzaXplLg0KPiA+ID4gK1RoZXNlIGJsb2NrcyB1 c2UgdGhlIHNhbWUgaGVhZGVyIGZvcm1hdCBhcyBhbiBvbi1kaXNrIGJ0cmVlLCBidXQNCj4gPiA+ IHRoZQ0KPiA+ID4gaW4tbWVtb3J5DQo+ID4gPiArYmxvY2sgdmVyaWZpZXJzIGlnbm9yZSB0aGUg Y2hlY2tzdW1zLCBhc3N1bWluZyB0aGF0IHhmaWxlIG1lbW9yeQ0KPiA+ID4gaXMNCj4gPiA+IG5v IG1vcmUNCj4gPiA+ICtjb3JydXB0aW9uLXByb25lIHRoYW4gcmVndWxhciBEUkFNLg0KPiA+ID4g K1JldXNpbmcgZXhpc3RpbmcgY29kZSBoZXJlIGlzIG1vcmUgaW1wb3J0YW50IHRoYW4gYWJzb2x1 dGUNCj4gPiA+IG1lbW9yeQ0KPiA+ID4gZWZmaWNpZW5jeS4NCj4gPiA+ICsNCj4gPiA+ICtUaGUg dmVyeSBmaXJzdCBibG9jayBvZiBhbiB4ZmlsZSBiYWNraW5nIGFuIHhmYnRyZWUgY29udGFpbnMg YQ0KPiA+ID4gaGVhZGVyIGJsb2NrLg0KPiA+ID4gK1RoZSBoZWFkZXIgZGVzY3JpYmVzIHRoZSBv d25lciwgaGVpZ2h0LCBhbmQgdGhlIGJsb2NrIG51bWJlciBvZg0KPiA+ID4gdGhlDQo+ID4gPiBy b290DQo+ID4gPiAreGZidHJlZSBibG9jay4NCj4gPiA+ICsNCj4gPiA+ICtUbyBhbGxvY2F0ZSBh IGJ0cmVlIGJsb2NrLCB1c2UgYGB4ZmlsZV9zZWVrX2RhdGFgYCB0byBmaW5kIGEgZ2FwDQo+ID4g PiBpbg0KPiA+ID4gdGhlIGZpbGUuDQo+ID4gPiArSWYgdGhlcmUgYXJlIG5vIGdhcHMsIGNyZWF0 ZSBvbmUgYnkgZXh0ZW5kaW5nIHRoZSBsZW5ndGggb2YgdGhlDQo+ID4gPiB4ZmlsZS4NCj4gPiA+ ICtQcmVhbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIGJsb2NrIHdpdGggYGB4ZmlsZV9wcmVhbGxvY2Bg LCBhbmQNCj4gPiA+IGhhbmQNCj4gPiA+IGJhY2sgdGhlDQo+ID4gPiArbG9jYXRpb24uDQo+ID4g PiArVG8gZnJlZSBhbiB4ZmJ0cmVlIGJsb2NrLCB1c2UgYGB4ZmlsZV9kaXNjYXJkYGAgKHdoaWNo DQo+ID4gPiBpbnRlcm5hbGx5DQo+ID4gPiB1c2VzDQo+ID4gPiArYGBGQUxMT0NfRkxfUFVOQ0hf SE9MRWBgKSB0byByZW1vdmUgdGhlIG1lbW9yeSBwYWdlIGZyb20gdGhlDQo+ID4gPiB4ZmlsZS4N Cj4gPiA+ICsNCj4gPiA+ICtQb3B1bGF0aW5nIGFuIHhmYnRyZWUNCj4gPiA+ICteXl5eXl5eXl5e Xl5eXl5eXl5eXl4NCj4gPiA+ICsNCj4gPiA+ICtBbiBvbmxpbmUgZnNjayBmdW5jdGlvbiB0aGF0 IHdhbnRzIHRvIGNyZWF0ZSBhbiB4ZmJ0cmVlIHNob3VsZA0KPiA+ID4gcHJvY2VlZCBhcw0KPiA+ ID4gK2ZvbGxvd3M6DQo+ID4gPiArDQo+ID4gPiArMS4gQ2FsbCBgYHhmaWxlX2NyZWF0ZWBgIHRv IGNyZWF0ZSBhbiB4ZmlsZS4NCj4gPiA+ICsNCj4gPiA+ICsyLiBDYWxsIGBgeGZzX2FsbG9jX21l bW9yeV9idWZ0YXJnYGAgdG8gY3JlYXRlIGEgYnVmZmVyIGNhY2hlDQo+ID4gPiB0YXJnZXQNCj4g PiA+IHN0cnVjdHVyZQ0KPiA+ID4gK8KgwqAgcG9pbnRpbmcgdG8gdGhlIHhmaWxlLg0KPiA+ID4g Kw0KPiA+ID4gKzMuIFBhc3MgdGhlIGJ1ZmZlciBjYWNoZSB0YXJnZXQsIGJ1ZmZlciBvcHMsIGFu ZCBvdGhlcg0KPiA+ID4gaW5mb3JtYXRpb24NCj4gPiA+IHRvDQo+ID4gPiArwqDCoCBgYHhmYnRy ZWVfY3JlYXRlYGAgdG8gd3JpdGUgYW4gaW5pdGlhbCB0cmVlIGhlYWRlciBhbmQgcm9vdA0KPiA+ ID4gYmxvY2sNCj4gPiA+IHRvIHRoZQ0KPiA+ID4gK8KgwqAgeGZpbGUuDQo+ID4gPiArwqDCoCBF YWNoIGJ0cmVlIHR5cGUgc2hvdWxkIGRlZmluZSBhIHdyYXBwZXIgdGhhdCBwYXNzZXMgbmVjZXNz YXJ5DQo+ID4gPiBhcmd1bWVudHMgdG8NCj4gPiA+ICvCoMKgIHRoZSBjcmVhdGlvbiBmdW5jdGlv bi4NCj4gPiA+ICvCoMKgIEZvciBleGFtcGxlLCBybWFwIGJ0cmVlcyBkZWZpbmUgYGB4ZnNfcm1h cGJ0X21lbV9jcmVhdGVgYCB0bw0KPiA+ID4gdGFrZQ0KPiA+ID4gY2FyZSBvZg0KPiA+ID4gK8Kg wqAgYWxsIHRoZSBuZWNlc3NhcnkgZGV0YWlscyBmb3IgY2FsbGVycy4NCj4gPiA+ICvCoMKgIEEg YGBzdHJ1Y3QgeGZidHJlZWBgIG9iamVjdCB3aWxsIGJlIHJldHVybmVkLg0KPiA+ID4gKw0KPiA+ ID4gKzQuIFBhc3MgdGhlIHhmYnRyZWUgb2JqZWN0IHRvIHRoZSBidHJlZSBjdXJzb3IgY3JlYXRp b24gZnVuY3Rpb24NCj4gPiA+IGZvcg0KPiA+ID4gdGhlDQo+ID4gPiArwqDCoCBidHJlZSB0eXBl Lg0KPiA+ID4gK8KgwqAgRm9sbG93aW5nIHRoZSBleGFtcGxlIGFib3ZlLCBgYHhmc19ybWFwYnRf bWVtX2N1cnNvcmBgIHRha2VzDQo+ID4gPiBjYXJlDQo+ID4gPiBvZiB0aGlzDQo+ID4gPiArwqDC oCBmb3IgY2FsbGVycy4NCj4gPiA+ICsNCj4gPiA+ICs1LiBQYXNzIHRoZSBidHJlZSBjdXJzb3Ig dG8gdGhlIHJlZ3VsYXIgYnRyZWUgZnVuY3Rpb25zIHRvIG1ha2UNCj4gPiA+IHF1ZXJpZXMgYWdh aW5zdA0KPiA+ID4gK8KgwqAgYW5kIHRvIHVwZGF0ZSB0aGUgaW4tbWVtb3J5IGJ0cmVlLg0KPiA+ ID4gK8KgwqAgRm9yIGV4YW1wbGUsIGEgYnRyZWUgY3Vyc29yIGZvciBhbiBybWFwIHhmYnRyZWUg Y2FuIGJlIHBhc3NlZA0KPiA+ID4gdG8NCj4gPiA+IHRoZQ0KPiA+ID4gK8KgwqAgYGB4ZnNfcm1h cF8qYGAgZnVuY3Rpb25zIGp1c3QgbGlrZSBhbnkgb3RoZXIgYnRyZWUgY3Vyc29yLg0KPiA+ID4g K8KgwqAgU2VlIHRoZSA6cmVmOmBuZXh0IHNlY3Rpb248eGZidHJlZV9jb21taXQ+YCBmb3IgaW5m b3JtYXRpb24NCj4gPiA+IG9uDQo+ID4gPiBkZWFsaW5nIHdpdGgNCj4gPiA+ICvCoMKgIHhmYnRy ZWUgdXBkYXRlcyB0aGF0IGFyZSBsb2dnZWQgdG8gYSB0cmFuc2FjdGlvbi4NCj4gPiA+ICsNCj4g PiA+ICs2LiBXaGVuIGZpbmlzaGVkLCBkZWxldGUgdGhlIGJ0cmVlIGN1cnNvciwgZGVzdHJveSB0 aGUgeGZidHJlZQ0KPiA+ID4gb2JqZWN0LCBmcmVlIHRoZQ0KPiA+ID4gK8KgwqAgYnVmZmVyIHRh cmdldCwgYW5kIHRoZSBkZXN0cm95IHRoZSB4ZmlsZSB0byByZWxlYXNlIGFsbA0KPiA+ID4gcmVz b3VyY2VzLg0KPiA+ID4gKw0KPiA+ID4gKy4uIF94ZmJ0cmVlX2NvbW1pdDoNCj4gPiA+ICsNCj4g PiA+ICtDb21taXR0aW5nIExvZ2dlZCB4ZmJ0cmVlIEJ1ZmZlcnMNCj4gPiA+ICteXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4NCj4gPiA+ICsNCj4gPiA+ICtBbHRob3VnaCBpdCBpcyBh IGNsZXZlciBoYWNrIHRvIHJldXNlIHRoZSBybWFwIGJ0cmVlIGNvZGUgdG8NCj4gPiA+IGhhbmRs ZQ0KPiA+ID4gdGhlIHN0YWdpbmcNCj4gPiA+ICtzdHJ1Y3R1cmUsIHRoZSBlcGhlbWVyYWwgbmF0 dXJlIG9mIHRoZSBpbi1tZW1vcnkgYnRyZWUgYmxvY2sNCj4gPiA+IHN0b3JhZ2UNCj4gPiA+IHBy ZXNlbnRzDQo+ID4gPiArc29tZSBjaGFsbGVuZ2VzIG9mIGl0cyBvd24uDQo+ID4gPiArVGhlIFhG UyB0cmFuc2FjdGlvbiBtYW5hZ2VyIG11c3Qgbm90IGNvbW1pdCBidWZmZXIgbG9nIGl0ZW1zIGZv cg0KPiA+ID4gYnVmZmVycyBiYWNrZWQNCj4gPiA+ICtieSBhbiB4ZmlsZSBiZWNhdXNlIHRoZSBs b2cgZm9ybWF0IGRvZXMgbm90IHVuZGVyc3RhbmQgdXBkYXRlcw0KPiA+ID4gZm9yDQo+ID4gPiBk ZXZpY2VzDQo+ID4gPiArb3RoZXIgdGhhbiB0aGUgZGF0YSBkZXZpY2UuDQo+ID4gPiArQW4gZXBo ZW1lcmFsIHhmYnRyZWUgcHJvYmFibHkgd2lsbCBub3QgZXhpc3QgYnkgdGhlIHRpbWUgdGhlIEFJ TA0KPiA+ID4gY2hlY2twb2ludHMNCj4gPiA+ICtsb2cgdHJhbnNhY3Rpb25zIGJhY2sgaW50byB0 aGUgZmlsZXN5c3RlbSwgYW5kIGNlcnRhaW5seSB3b24ndA0KPiA+ID4gZXhpc3QNCj4gPiA+IGR1 cmluZw0KPiA+ID4gK2xvZyByZWNvdmVyeS4NCj4gPiA+ICtGb3IgdGhlc2UgcmVhc29ucywgYW55 IGNvZGUgdXBkYXRpbmcgYW4geGZidHJlZSBpbiB0cmFuc2FjdGlvbg0KPiA+ID4gY29udGV4dCBt dXN0DQo+ID4gPiArcmVtb3ZlIHRoZSBidWZmZXIgbG9nIGl0ZW1zIGZyb20gdGhlIHRyYW5zYWN0 aW9uIGFuZCB3cml0ZSB0aGUNCj4gPiA+IHVwZGF0ZXMgaW50byB0aGUNCj4gPiA+ICtiYWNraW5n IHhmaWxlIGJlZm9yZSBjb21taXR0aW5nIG9yIGNhbmNlbGxpbmcgdGhlIHRyYW5zYWN0aW9uLg0K PiA+ID4gKw0KPiA+ID4gK1RoZSBgYHhmYnRyZWVfdHJhbnNfY29tbWl0YGAgYW5kIGBgeGZidHJl ZV90cmFuc19jYW5jZWxgYA0KPiA+ID4gZnVuY3Rpb25zDQo+ID4gPiBpbXBsZW1lbnQNCj4gPiA+ ICt0aGlzIGZ1bmN0aW9uYWxpdHkgYXMgZm9sbG93czoNCj4gPiA+ICsNCj4gPiA+ICsxLiBGaW5k IGVhY2ggYnVmZmVyIGxvZyBpdGVtIHdob3NlIGJ1ZmZlciB0YXJnZXRzIHRoZSB4ZmlsZS4NCj4g PiA+ICsNCj4gPiA+ICsyLiBSZWNvcmQgdGhlIGRpcnR5L29yZGVyZWQgc3RhdHVzIG9mIHRoZSBs b2cgaXRlbS4NCj4gPiA+ICsNCj4gPiA+ICszLiBEZXRhY2ggdGhlIGxvZyBpdGVtIGZyb20gdGhl IGJ1ZmZlci4NCj4gPiA+ICsNCj4gPiA+ICs0LiBRdWV1ZSB0aGUgYnVmZmVyIHRvIGEgc3BlY2lh bCBkZWx3cmkgbGlzdC4NCj4gPiA+ICsNCj4gPiA+ICs1LiBDbGVhciB0aGUgdHJhbnNhY3Rpb24g ZGlydHkgZmxhZyBpZiB0aGUgb25seSBkaXJ0eSBsb2cgaXRlbXMNCj4gPiA+IHdlcmUNCj4gPiA+ IHRoZSBvbmVzDQo+ID4gPiArwqDCoCB0aGF0IHdlcmUgZGV0YWNoZWQgaW4gc3RlcCAzLg0KPiA+ ID4gKw0KPiA+ID4gKzYuIFN1Ym1pdCB0aGUgZGVsd3JpIGxpc3QgdG8gY29tbWl0IHRoZSBjaGFu Z2VzIHRvIHRoZSB4ZmlsZSwgaWYNCj4gPiA+IHRoZQ0KPiA+ID4gdXBkYXRlcw0KPiA+ID4gK8Kg wqAgYXJlIGJlaW5nIGNvbW1pdHRlZC4NCj4gPiA+ICsNCj4gPiA+ICtBZnRlciByZW1vdmluZyB4 ZmlsZSBsb2dnZWQgYnVmZmVycyBmcm9tIHRoZSB0cmFuc2FjdGlvbiBpbiB0aGlzDQo+ID4gPiBt YW5uZXIsIHRoZQ0KPiA+ID4gK3RyYW5zYWN0aW9uIGNhbiBiZSBjb21taXR0ZWQgb3IgY2FuY2Vs bGVkLg0KPiA+IFJlc3Qgb2YgdGhpcyBsb29rcyBwcmV0dHkgZ29vZCwgb3JnYW5pemluZyBuaXRz IGFzaWRlLg0KPiANCj4gQ29vbCwgdGhhbmsgeW91ISENCj4gDQo+IC0tRA0KPiANCj4gPiBBbGxp c29uDQo+ID4gDQo+ID4gPiANCg0K