From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (EUR05-DB8-obe.outbound.protection.outlook.com [40.92.89.50]) by mx.groups.io with SMTP id smtpd.web11.6057.1581928001358419977 for ; Mon, 17 Feb 2020 00:26:42 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: outlook.de, ip: 40.92.89.50, mailfrom: mhaeuser@outlook.de) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Cekre0wG/lzrigqOIkWj3Vx9LnV6RoOsJ3z7LVvt0cUuuqID5WZN3DWA7HzkHzlqpNwdLDeUQDaXwrPuiqPfhdciF1OsBolNoxVJFV7kCsF50geACGOiNTl2x5tw2W4QdimEp8oqRIJv4lpijTzt/DlSGX/AV//xi+1Sg9vsxpmpPB8g3i5gDV/Pd9QJ9Jex4MO3x+PW8TLVuokqy0PqdZdTL+jMszW5qL/wiuE8Bl3ER5G/VyqYF1c+vvO4ZCGcFayX9RA9zdaL5w4mVBD79D+Z0oiUaXGX2NtVR7k5UWlB33rSxYSkDJ0//QUvnAz//nUb5ER282vYNP+vqrAgjg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fKKy2zJsczjenv9FHGk7wGCIuhho06IrJ+UXCy/ksbs=; b=LvRDlY0DmXgqT/UMW2Ai6sVEqz6gRZXzXYt/9nk0QNBOysBcfvJ+BGHxj8hFZtS9GTZ9ECLBUcunAmsBi4Ok31bzb34bB8OD0HywSvQnspS1LFMUdZRbUVRyQDYZpFhFvskEjBOJyBuzQb9pF/kzxliax5A5a/B7SO+U7js3PFFdqeGhzEyLW+/YcrtY16/lvfnfLWoX4ppVN+m2o8g4zhIljwT4lHdse/khKUWCbjV+FyRnaNe4xszDHbxa3daHtdS8IOXfGdnGUCuSHz5wyw5AwvfKKFQJHJMYDOo++KKhtE/XmNDsMYXVrgJgmH/3MYNspVC50DnMh3vaywwUuw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from VI1EUR05FT049.eop-eur05.prod.protection.outlook.com (2a01:111:e400:fc12::38) by VI1EUR05HT171.eop-eur05.prod.protection.outlook.com (2a01:111:e400:fc12::349) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2729.22; Mon, 17 Feb 2020 08:26:39 +0000 Received: from VI1P195MB0734.EURP195.PROD.OUTLOOK.COM (10.233.242.59) by VI1EUR05FT049.mail.protection.outlook.com (10.233.242.225) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2729.22 via Frontend Transport; Mon, 17 Feb 2020 08:26:39 +0000 Received: from VI1P195MB0734.EURP195.PROD.OUTLOOK.COM ([fe80::15e1:575c:e0cb:6cf1]) by VI1P195MB0734.EURP195.PROD.OUTLOOK.COM ([fe80::15e1:575c:e0cb:6cf1%7]) with mapi id 15.20.2729.032; Mon, 17 Feb 2020 08:26:39 +0000 Received: from [192.168.1.234] (95.88.230.49) by AM0PR02CA0068.eurprd02.prod.outlook.com (2603:10a6:208:d2::45) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2729.23 via Frontend Transport; Mon, 17 Feb 2020 08:26:38 +0000 From: =?UTF-8?B?TWFydmluIEjDpHVzZXI=?= To: "devel@edk2.groups.io" , "afish@apple.com" , Mike Kinney CC: vit9696 , "Gao, Liming" , "Gao, Zhichao" , =?utf-8?B?TWFydmluIEjDpHVzZXI=?= , Laszlo Ersek Subject: Re: [edk2-devel] [PATCH v3 0/1] Add PCD to disable safe string constraint assertions Thread-Topic: [edk2-devel] [PATCH v3 0/1] Add PCD to disable safe string constraint assertions Thread-Index: AQHVwlkNIfzmFi0UlEORchDoajoAgafd+XGAgAAESQCAAwDRAIAdakGAgBYYdwCABlUnAIAAVWUAgAAKeYCAAFd1AIAAFAEAgAA6XgCAADEGAIAA3TSAgAGwOQCAALivgA== Date: Mon, 17 Feb 2020 08:26:39 +0000 Message-ID: References: <20200103171242.63839-1-vit9696@protonmail.com> <492A300B-1CED-4FF0-98F8-20D1E116DCC0@protonmail.com> <2719704F-6DB4-444F-97FE-DBF71D39B698@apple.com> <3D7EB7E9-9B94-40AD-A0E9-BFDEB787F6DA@apple.com> In-Reply-To: <3D7EB7E9-9B94-40AD-A0E9-BFDEB787F6DA@apple.com> Accept-Language: de-DE, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM0PR02CA0068.eurprd02.prod.outlook.com (2603:10a6:208:d2::45) To VI1P195MB0734.EURP195.PROD.OUTLOOK.COM (2603:10a6:800:146::15) x-incomingtopheadermarker: OriginalChecksum:1CFBEA019198A0E760B101E7B21625D536A5BE5387EA7CC08180A931C348EE83;UpperCasedChecksum:C359E44304BC5E291279E1E8953410C9AF15439DC7DB2F21FDCE1F995C82CAB8;SizeAsReceived:8850;Count:50 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [4DVb7uTsIstW0j5PB02GBSex0RNvP4pt] x-microsoft-original-message-id: x-ms-publictraffictype: Email x-incomingheadercount: 50 x-eopattributedmessage: 0 x-ms-office365-filtering-correlation-id: 16e77f9c-bad9-4f90-f4a6-08d7b3831be2 x-ms-exchange-slblob-mailprops: =?utf-8?B?YlJwaE93QzE3K0RRakFhaXNLdE9YdnZQa3lnbzN0V1llTHMvbmg5R1dFQjl1?= =?utf-8?B?QzRCVlZGUi9qZm1xTGFOeStwYUd3eXFJb04zWjIyczJlK1FXT1RIMWdvZmN3?= =?utf-8?B?UnZ5NHZtdCtFMnpFUVpGRDVPVjFlRXdPNHBEVFJxUTV3cFRQcUFUV2RMZmIz?= =?utf-8?B?OWVKNjNjT1RNZVBrd1QvZTRJL2JoUFNxa3BVR21RbDZlMkQ5UWN3UFRsTXVk?= =?utf-8?B?a0xra09aUlB4anQrMGd3NDBrVHRCZWFScUJrR0hWOFl6LzNGai8yL1l3UXl0?= =?utf-8?B?ejdUZlBYWTVNVG9NRlplZzFEYjJmQVJaMjBGNklERWxYbUdkQ3JsbEpnallK?= =?utf-8?B?eGtTVHRpcHpkQWJMQ2ZSbkpIMUtQMnJkR3JkNmp1VzZLN2FTNWZLZjFnNGxI?= =?utf-8?B?WmZzbEJkNk5CZUtkOTlnU2lubTNyWTBxZkVCVlVUdWFpVGQvL1NiUjIvKzg5?= =?utf-8?B?Zkg1VjB3Z1F1YlhrcTB6cUJ5VHhQVXBZZGUxS2pVbFN2N3oxblFodEt1V2FZ?= =?utf-8?B?cElneGI2OHVtZWN5aEM2WXVZSWIxZUNKRzkvUE5DeXp5c3FwdE9CQjNYb2cz?= =?utf-8?B?M0U5N2UrTUMyYk9KemQvZTd4L1VzeWRjSVl5QWErTlNUZ1Z1cm9ZSkNwTVFw?= =?utf-8?B?d00vSlFNYnMwaEVoOXRjT0hUam9UMUdFZGpGZ01rT3RzSS9adG5EQ1JqVG8r?= =?utf-8?B?Wm5DdkwwbjlJcTN0V1dNajQ1SGhlcDRzdmJjalJOMFd2RHB3eVRBSVFjNGpW?= =?utf-8?B?MGdLTWNidjZtb3JiOFJhb1VBbG11YkZWb3ArNWlVZVhaMjcySXExbXQ4NWJo?= =?utf-8?B?OGpqdnZiOEtLN1QvbHFoZGwwR3pkZGYrbVMyWkJjaXkveGVxc0N4VWtOdzV0?= =?utf-8?B?ckNIU015Z1Q2NzQ5bE5KMlJTUnZqYVhoZGQraytqTXlvMTQwZkxiTlhRSDFn?= =?utf-8?B?Z2E3ZGU0Vjg3SEdFakdJTndXMFVRNGFVdlRxNDUzcWYxV2JiTGU5MkpIRVZt?= =?utf-8?B?OXB1bGkvRjVZc3pzTHZCZkEwQVRPSDhEK1RtaHRYM3FVYW5MZVpBUUxXU3Bw?= =?utf-8?B?d1d1UENPRzNtZFVERTZCc2lsNWtDV2FGSkl4ZFptc3JkV2hPRHhKOG5lK1JJ?= =?utf-8?B?Q00vZUV1MURCRUxYeWdFN0YrNk9YWUtEcVBQenF5ZzNndGlKa0VDS2ptakZP?= =?utf-8?B?RkZQdU1ieXdWWUxad3lXRVZXWC9TWDV4azU5ck1mb2hMMEE0SXFjUnNFd0tT?= =?utf-8?B?Rjd0S0k0S2pEREpQSzJkTlEwWkxweVYwUHZTY3p1NlcvUFV6d21veWRwQVlr?= =?utf-8?B?YVhlYTM1aDR1dW1QMjNZcVN5OTl5dEZQOExEcnY4VXBEdUovUWRjQ3o3cE9I?= =?utf-8?B?YlQ4b05SZGJ3TjA5VXhOQ09DOElIZHVTMFFPTFlGeTh5K2RuWVZFV21qb2Jr?= =?utf-8?Q?54KWfbF1QfuagOHcr48=3D?= x-ms-traffictypediagnostic: VI1EUR05HT171: x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: VcNonbl1KjivilFlEYIMMUwxlT06iOwZtgA9uzTn5zFrslG8NbIvJNuDrmPvaJvOGTSR0Xs3HU1lhGqmf+6OZntN5QhjlGJIjwTenTaiCYirQXdG2waULJ2nrYR9Oh4jeFk+U7m4edkV3zGY8IhqQGb0fBeZGWavRhQPOBZPenBWV/M/uT+5V90+FaUe4oSDqm/JN4kUcEofewTR93ez0a/pul9aBQJjsoY3Xdwt0dc= x-ms-exchange-antispam-messagedata: AgktxXHnll4+D6McBOAT+bj84ZYRY/su6KBTcgj4J0CUet1t4zOjsJCgX1CN3kSVMudHc7V58tYtTZt62BLdVMZdIyERuf5uBYgoMfwi+WFwWtOc4D8qLnwYYD7v0iqtSCqgONRZKxd9lXoaOLhDKw== x-ms-exchange-transport-forked: True MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 16e77f9c-bad9-4f90-f4a6-08d7b3831be2 X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Feb 2020 08:26:39.1059 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1EUR05HT171 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <1FC5973771A06B47893A1E83C5EC0228@EURP195.PROD.OUTLOOK.COM> Content-Transfer-Encoding: base64 R29vZCBkYXkgQW5kcmV3LA0KDQpGaXJzdCBvZiBhbGwsIHRoYW5rIHlvdSB2ZXJ5IG11Y2ggZm9y IHB1dHRpbmcgdGhpcyBhbW91bnQgb2YgdGhvdWdodCANCmludG8gdGhlIHNpdHVhdGlvbi4gSSBk ZWZpbml0ZWx5IGFncmVlIHdpdGggdGhlIHByb2JsZW0geW91IHNlZSwgYnV0IEkgDQpjb3VsZCBh bHNvIGxpdmUgd2l0aCBWaXRhbHkncyBwcm9wb3NhbC4gSG93ZXZlciwgSSB0aGluayB5b3UgYXJl IA0Kb3ZlcmNvbXBsaWNhdGluZyB0aGUgc2l0dWF0aW9uIGEgbGl0dGxlLiBTbywgd2UgZG8gYWdy ZWUgdGhlIGNhbGxlciANCm5lZWRzIGNvbnRyb2wgb2YgdGhlIGJlaGF2aW91ciwgaG93ZXZlciB5 b3VyIHByb3Bvc2FsIG5lZWRzICJzdXBwb3J0IiANCmZyb20gYm90aCB0aGUgY2FsbGVyIChjaG9v c2UgdGhlIGhhbmRsZXIpIGFuZCB0aGUgY2FsbGVlIChjYWxsIHRoZSANCmhhbmRsZXIpIGFuZCBp cyBuZWl0aGVyIHRocmVhZC1zYWZlIG5vciBldmVudC1zYWZlIGFzIFZpdGFseSBhbHJlYWR5IA0K cG9pbnRlZCBvdXQuIEZpeGluZyB0aGVzZSBwcm9ibGVtcyB3b3VsZCBvbmx5IHdvcnNlbiB0aGUg Y29tcGxleGl0eSANCnNpdHVhdGlvbiBpbiBteSBvcGluaW9uLg0KDQpEaXZlcmdpbmcgZnJvbSBi b3RoIG9mIHlvdXIgY29uY2VwdHMgZW50aXJlbHkgYW5kIGtlZXBpbmcgaXQgdmVyeSANCnNpbXBs ZSwgd2hhdCBrZWVwcyB1cyBmcm9tIHNpbXBseSBBU1NFUlRpbmcgYmFzZWQgb24gcmV0dXJuIHZh bHVlPyBXZSANCmNvdWxkIGludHJvZHVjZSBhIENPTlNUUkFJTlRfQVNTRVJUIG9yIHNpbWlsYXIs IGJ1dCBpdCB3b3VsZCBiZSANCmNvbXBsZXRlbHkgZGlmZmVyZW50IGZyb20gVml0YWx5J3MgcHJv cG9zYWwuIEl0IHdvdWxkIGJlIGEgY2FsbGVyIG1hY3JvIA0KdG8gQVNTRVJUIGJhc2VkIG9uIGEg cHJlLWRlZmluZWQgbGlzdCBvZiByZXR1cm4gc3RhdHVzZXMuDQpUbyBhY2hpZXZlIHRoaXMsIHdl IHdvdWxkIG9yZGVyIGFsbCBzdGF0dXNlcyBieSB0eXBlcyAoY2xhc3NlcykuIEF0IHRoZSANCm1v bWVudCwgSSBjYW4gb25seSB0aGluayBvZiB0d286ICJlbnZpcm9ubWVudGFsIiBhbmQgImNvbnN0 cmFpbnQiLiBGb3IgDQpleGFtcGxlLCAiT3V0IE9mIFJlc291cmNlcyIgd291bGQgYmUgZW52aXJv bm1lbnRhbCBhbmQgIkludmFsaWQgDQpQYXJhbWV0ZXIiIHdvdWxkIGJlIGNvbnN0cmFpbnQuIFdl IGNvdWxkIGRlZmluZSBlbnZpcm9ubWVudCBzdGF0dXNlcyANCmV4cGxpY2l0bHkgKGFzIGl0IGlz IGxlc3MgbGlrZWx5IG5ldyBlbnZpcm9ubWVudCBzdGF0dXNlcyBhcmUgDQppbnRyb2R1Y2VkKSBh bmQgZGVmaW5lIGNvbnN0cmFpbnQgc3RhdHVzZXMgYXMgIm5vdCBlbnZpcm9ubWVudGFsIiAodG8g DQpzaWxlbnRseSBzdXBwb3J0IG5ldyBjb25zdHJhaW50IHN0YXR1c2VzLCBob3dldmVyIG9mIGNv dXJzZSBpdCBpcyBhIA0KbGl0dGxlIGVycm9yLXByb25lIHdpdGggZm9yd2FyZHMtY29tcGF0aWJp bGl0eSkuIEFzIGEgYm9udXMsIGl0IGZvcmNlcyANCmRldmVsb3BlcnMgdG8gdXNlIHRydWx5IGFw cHJvcGlhdGUgZXJyb3IgY29kZXMgYW5kIGNvcnJlY3RseSBwcm9wYWdhdGUgDQp0aGVtIGZyb20g Y2FsbGVlcyBmb3IgdGhpcyB0byB3b3JrLiA6KQ0KVGhpcyBzb2x1dGlvbiB3b3VsZCBiZSBiYWNr d2FyZHMtY29tcGF0aWJsZSBpbiBhIGNvbXBpbGF0aW9uIHNlbnNlIGFzIGl0IA0KY2FuIHNpbXBs eSBiZSBhIG5ldyBtYWNybywgaG93ZXZlciBmb3IgaXRzIHBvc3NpYmxlIGNvbXBsZXhpdHkgKHN3 aXRjaCANCmNhc2VzKSBJIG1pZ2h0IGFjdHVhbGx5IHByZWZlciBhIGZ1bmN0aW9uLiBCdXQgaXQg d291bGQgbm90IGJlIA0KYmFja3dhcmRzLWNvbXBhdGlibGUgd2l0aCB0aGUgY3VycmVudCBmdW5j dGlvbmFsaXR5LCB3aGljaCBub25lIG9mIHRoZSANCiJjYWxsZXItYmFzZWQiIGNvbmNlcHRzIGNh biBiZSBhbnl3YXkgKHRoZSBjYWxsZXIgbmVlZHMgZXhwbGljaXQgY29kZSkuDQoNCkhvd2V2ZXIs IENPTlNUUkFJTlRfQVNTRVJUIG1pZ2h0IGFjdHVhbGx5IGJlIHRvbyBzcGVjaWZpYy4gTWF5YmUg d2Ugd2FudCANCnNvbWV0aGluZyBsaWtlICJBU1NFUlRfUkVUVVJOIiBhbmQgaGF2ZSB0aGUgY2xh c3NlcyAiQVNTRVJUX0NPTlNUUkFJTlQiIA0KYW5kICJBU1NFUlRfRU5WSVJPTk1FTlQiIChiaXRm aWVsZCwgbGlrZSB3aXRoIERFQlVHKS4gVGhlIHJlYXNvbiBmb3IgDQp0aGlzIGlzIGVtYmVkZGVk IHN5c3RlbXMgd2hlcmUgdGhlIGVudmlyb25tZW50IGlzIHRydXN0ZWQva25vd24gYW5kIHRoZSAN CmZpcm13YXJlIGlzIHN1cHBvc2VkIHRvIGJlIHdlbGwtbWF0Y2hlZC4gVGhpbmsgb2YgYSBTb0Mg d2l0aCBzb2xkZXJlZCANClJBTSAtIHRoZSBmaXJtd2FyZSBjYW4gdmVyeSB3ZWxsIG1ha2UgYXNz dW1wdGlvbiBhYm91dCBtZW1vcnkgY2FwYWNpdHkgDQooY29uc2lkZXJpbmcgdXNhZ2UgYWNyb3Nz IGFsbCBtb2R1bGVzIGluIHRoZSB3b3JzdCBjYXNlKSBhbmQgbWlnaHQgDQphY3R1YWxseSB3YW50 IEFTU0VSVHMgb24gc29tZXRoaW5nIGxpa2UgIk91dCBPZiBSZXNvdXJjZXMiIGJlY2F1c2UgaXQn cyANCnN1cHBvc2VkIHRvIGJlIGltcG9zc2libGUgd2l0aGluIHRoZSBib3VuZHMgb2YgdGhpcyBz cGVjaWZpYyBkZXNpZ24uIA0KSXQncyBwb3NzaWJsZSB0aGlzIHdvdWxkIG5lZWQgYSBuZXcgUENE J3MgaW52b2x2ZW1lbnQsIGZvciBleGFtcGxlIHRvIA0KdGVsbCBEeGVDb3JlIHdoZXRoZXIgdG8g QVNTRVJUIG9uIGVudmlyb25tZW50YWwgYXNwZWN0cyB0b28uIFRoZXJlIGNvdWxkIA0KYmUgYW4g YXJndW1lbnQtbGVzcyBtYWNybyB0aGF0IHVzZXMgUENEIGNvbmZpZyBhcyBiYXNlLCBhbmQgYW4g DQphcmd1bWVudC1iYXNlZCBtYWNybyB0aGF0IHVzZXMgb25seSB0aGUgcGFyYW1ldGVycy4gT2Yg Y291cnNlIHRoaXMgDQpjYW5ub3QgY292ZXIgZXZlcnlvbmUncyB2ZXJ5IHNwZWNpZmljIHByZWZl cmVuY2VzIGFzIGl0J3MgYSBwZXItbW9kdWxlIA0Kc3dpdGNoLCBidXQgaXQncyB0aGUgYmVzdCBJ IGNhbiB0aGluayBvZiByaWdodCBub3cuDQoNClNvbWV0aGluZyBhIGJpdCB1bnJlbGF0ZWQgbm93 LCBidXQgaXQgd291bGQgbWFrZSB0aGlzIGVhc2llci4gWW91IA0KbWVudGlvbmVkIFBlQ29mZkxp YiBhcyBleGFtcGxlLCBhbmQgSSB0aGluayBpdCdzIGEgZ29vZCBvbmUsIGhvd2V2ZXIgaXQgDQpo YXMgaXRzIG93biByZXR1cm4gc3RhdHVzIHR5cGUgd2l0aGluIHRoZSBjb250ZXh0WzFdIHdoaWNo IEkgd2lsbCBtb3N0IA0KZGVmaW5pdGVseSBiZSBnZXR0aW5nIHJpZCBvZiBhcyBwYXJ0IG9mIG15 IHVwY29taW5nIChpbiB0aGUgZmFyLWlzaCANCmZ1dHVyZSA6KSApIFJGQy4gQ291bGQgd2UgZXhw YW5kIFJFVFVSTl9TVEFUVVMgdG8gaGF2ZSAodmVyeSBoaWdoPykgDQpyZXNlcnZlZCB2YWx1ZXMg Zm9yIGNhbGxlci1kZWZpbmVkIGVycm9yIGNvZGVzIHRvIGhhdmUgYWxsIFJFVFVSTl9TVEFUVVMg DQptYWNyb3MgYXBwbHkgdG8gdGhvc2Ugc3BlY2lhbCByZXR1cm4gdmFsdWVzIHRvbz8gV2UnZCBu ZWVkIHRvIGRlZmluZSANCnRoZW0gY2F0ZWdvcmljYWxseSBhcyAiY29uc3RyYWludCBzdGF0dXMi LCBidXQgSSBkb24ndCBzZWUgaG93IGEgbGlicmFyeSANCndvdWxkIGRlY2xhcmUgYSBuZXcgZW52 aXJvbm1lbnQgc3RhdHVzIGFueXdheS4NCg0KUmVnYXJkaW5nIE1kZVBrZ0NvbXBhdGFiaWxpdHku ZHNjLmluYywgSSB0aGluayBvbmUgY2FuIG92ZXJyaWRlIGxpYnJhcnkgDQpjbGFzc2VzIGZyb20g dGhlIGluYyBieSBkZWNsYXJpbmcgdGhlbSBhZnRlciB0aGUgIWluY2x1ZGUgc3RhdGVtZW50LCAN CnBsZWFzZSBjb3JyZWN0IG1lIGlmIEknbSB3cm9uZy4gSWYgc28sIEkgc3Ryb25nbHkgYWdyZWUg YW5kIHRoaW5rIGl0IA0Kc2hvdWxkIGJlIHRoZSBjYXNlIGZvciBhbGwgcGFja2FnZXMsIHNvIG9u ZSBvbmx5IG92ZXJyaWRlcyB0aGUgZGVmYXVsdHMgDQp3aGVuIHNvbWV0aGluZyBzcGVjaWZpYyAo ZGVidWdnaW5nLCBwZXJmb3JtYW5jZS1vcHRpbWl6ZWQgdmVyc2lvbnMsIC4uLikgDQppcyByZXF1 aXJlZCAtIGVhc2llciB0byByZWFkLCBlYXNpZXIgdG8gbWFpbnRhaW4uIFRoZSBjb250ZW50IGlz IA0KbmVlZGVkL3RoZXJlIGFueXdheSBhcyB0aGUgbGlicmFyaWVzIGFyZSBkZWNsYXJlZCBpbiB0 aGUgcGFja2FnZSdzIG93biBEU0MuDQoNCkl0IHdvdWxkIGJlIG5pY2UgaWYgeW91IGhhZCBjb21t ZW50cyByZWdhcmRpbmcgZXZlcnkgYXNwZWN0IEkganVzdCANCm1lbnRpb25lZCwgaXQgd2FzIGp1 c3Qgc29tZXRoaW5nIGNvbWluZyB0byBteSBtaW5kIHRoaXMgbW9ybmluZy4gVGhhbmtzIA0KZm9y IHRoZSBpbnB1dCBzbyBmYXIsIGl0J3MgbmljZSB0byBzZWUgc29tZSBtb3ZlbWVudCBub3chDQoN CkJlc3QgcmVnYXJkcywNCk1hcnZpbg0KDQpbMV0gDQpodHRwczovL2dpdGh1Yi5jb20vdGlhbm9j b3JlL2VkazIvYmxvYi9mMWQ3OGM0ODlhMzk5NzFiNWFhYzVkMmZjOGEzOWJmYTkyNWMzYzVkL01k ZVBrZy9JbmNsdWRlL0xpYnJhcnkvUGVDb2ZmTGliLmgjTDIwLUwzMQ0KaHR0cHM6Ly9naXRodWIu Y29tL3RpYW5vY29yZS9lZGsyL2Jsb2IvZjFkNzhjNDg5YTM5OTcxYjVhYWM1ZDJmYzhhMzliZmE5 MjVjM2M1ZC9NZGVQa2cvSW5jbHVkZS9MaWJyYXJ5L1BlQ29mZkxpYi5oI0wxNTkNCg0KQW0gMTYu MDIuMjAyMCB1bSAyMjoyNSBzY2hyaWViIEFuZHJldyBGaXNoIHZpYSBHcm91cHMuSW86DQo+IE1p a2UsDQo+IA0KPiBTb3JyeSBJIGRvbid0IHRoaW5rIEkgdG90YWxseSB1bmRlcnN0b29kIHdoYXQg ZmVsdCB3cm9uZyB0byBtZSwgc28gSSBkaWQgDQo+IGEgYmFkIGpvYiBleHBsYWluaW5nIG15IGNv bmNlcm5zLiBBbHNvIEkgZG9uJ3QgdGhpbmsgSSB3YXMgdGhpbmtpbmcgDQo+IGVub3VnaCBpbiB0 aGUgY29udGV4dCBvZiB0aGUgQzExIFN0ZExpYi4NCj4gDQo+IEkgdGhpbmsgbXkgY29uY2VybiBp cyBzdGlsbCB0aGUgZ2xvYmFsIHNjb3BlIG9mIHRoZSBjb25zdHJhaW50LCBldmVuIGlmIA0KPiB3 ZSB0dW5lIGl0IHBlciBtb2R1bGUuIEZvciBleGFtcGxlIHRoZSBEWEUgQ29yZSBjYW4gaW50ZXJh Y3Qgd2l0aCANCj4gUEUvQ09GRiBpbWFnZXMgYW5kIG90aGVyIGRhdGEgdGhhdCBjb3VsZCBoYXZl IGluZGlyZWN0bHkgY29tZSBmcm9tIHRoZSANCj4gZGlzay4gU28gY29uY2VwdHVhbGx5IHlvdSBt YXkgd2FudCB0byBBU1NFUlQgb24gc29tZSBjb25zdHJhaW50cyBhbmQgbm90IA0KPiBvbiBvdGhl cnMuIEkgdGhpbmsgdGhhdCBpcyB3aHkgSSByYXRob2xlZCBvbiBleHBhbmRpbmcgdGhlIGVycm9y IA0KPiBoYW5kbGluZyBtYWNyb3MgYXMgdGhhdCB3YXMgbW9yZSBpbiB0aGUgdmVpbiBvZiBoYXZp bmcgdGhlIGNhbGxlciBkZWFsIA0KPiB3aXRoIGl0LCBzbyB0aGF0IGlzIGtpbmQgb2YgbGlrZSB3 aGF0IHlvdSB3b3VsZCBkbyBwcmUgQzExLiBBbHNvIHRoZSANCj4gRGVidWdMaWIgaXMgcHJvYmFi bHkgb25lIG9mIHRoZSBNZGVQa2cgTGlicyB0aGF0IGhhcyB0aGUgbW9zdCBpbnN0YW5jZXMgDQo+ IGZsb2F0aW5nIGFyb3VuZCwgc28gSSB0aGluayB3ZSBzaG91bGQgY2hhbmdlIGl0IGluIGEgbm9u IGJhY2t3YXJkcyB3YXkgDQo+IHZlcnkgY2FyZWZ1bGx5Lg0KPiANCj4gU28gYWZ0ZXIgcmVhZGlu ZyB1cCBvbiB0aGUgQzExIGltcGxlbWVudGF0aW9uIG9mIENvbnN0cmFpbnRzIEkgdGhpbmsgbXkg DQo+IGFsdGVybmF0ZSBwcm9wb3NhbCBpcyBmb3IgdXMgdG8gYWRkIGEgQ29uc3RyYWludExpYiBt b2RlbGVkIGFmdGVyIEMxMSANCj4gdnMuIHVwZGF0aW5nIHRoZSBEZWJ1Z0xpYi4gVGhpcyB3b3Vs ZCBzb2x2ZSB0aGUgMiB0aGluZ3MgdGhhdCBtYWRlIG1lIA0KPiB1bmNvbWZvcnRhYmxlOiAxKSBF eHRlbmRpbmcgdGhlIERlYnVnTGliIEFQSTsgMikgR2l2aW5nIHRoZSBjYWxsZXIgDQo+IGNvbnRy b2wgb2YgdGhlIEFTU0VSVCBiZWhhdmlvci4gSXQgd291bGQgc3RpbGwgaGF2ZSB0aGUgZG93biBz aWRlIG9mIA0KPiBicmVha2luZyBidWlsZHMgYXMgdGhlIEJhc2VMaWIgd291bGQgZ2V0IGEgbmV3 IGRlcGVuZGVuY3ksIHNvIHdlIGNvdWxkIA0KPiB0YWxrIGFib3V0IGFkZGluZyB0aGVzZSBmdW5j dGlvbnMgdG8gdGhlIERlYnVnTGliIGFzIHRoZSBjb3N0IG9mIA0KPiByZXBsaWNhdGluZyBjb2Rl Lg0KPiANCj4gQzExIGRlZmluZXPCoGNvbnN0cmFpbnRfaGFuZGxlcl90IGFuZMKgc2V0X2NvbnN0 cmFpbnRfaGFuZGxlcl9zIGFzIGEgd2F5IA0KPiBmb3IgdGhlIGNhbGxlciB0byBjb25maWd1cmUg dGhlIGJlaGF2aW9yIGZvciBib3VuZHMgY2hlY2tlZCBmdW5jdGlvbnMuIEkgDQo+IHRoaW5rIHRo YXQgaXMgdGhlIGJlaGF2aW9yIEkgcHJlZmVyLiBTbyBpZiB3ZSBhcmUgZ29pbmcgdG8gbWFrZSBh IGNoYW5nZSANCj4gdGhhdCBpbXBhY3RzIERlYnVnTGliIGNvbXBhdGliaWxpdHkgSSBqdXN0IHdh bnQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgYSANCj4gY29udmVyc2F0aW9uIGFib3V0IGFsbCB0aGUg b3B0aW9ucy4gTXkgcHJpbWFyeSBnb2FsIGlzIHdlIGhhdmUgdGhlIA0KPiBjb252ZXJzYXRpb24s IGFuZCBpZiBmb2xrcyBkb24ndCBhZ3JlZSB3aXRoIG1lIHRoYXQgaXMgZmluZSBhdCBsZWFzdCB3 ZSANCj4gdGFsa2VkIGFib3V0IGl0Lg0KPiANCj4gV2hhdCBJJ20gdGhpbmtpbmcgYWJvdXQgaXMg YXMgc2ltcGx5IGV4cG9zaW5nIGFuIEFQSSB0byBjb250cm9sIHRoZSANCj4gQ29uc3RyYWludCBo YW5kbGVyIGxpa2UgQzExLiBUaGlzIGNvdWxkIGJlIGRvbmUgdmlhIGFuIENvbnN0cmFpbkxpYiBv ciANCj4gZXh0ZW5kaW5nIHRoZSBEZWJ1Z0xpYi4NCj4gDQo+IFRoZSBiYXNpYyBpbXBsZW1lbnRh dGlvbiBvZiB0aGUgbGliIHdvdWxkIGxvb2sgbGlrZToNCj4gDQo+IHR5cGVkZWYNCj4gVk9JRA0K PiAoRUZJQVBJICpDT05TVFJBSU5UX0hBTkRMRVIpICgNCj4gIMKgIElOIENPTlNUIENIQVI4IMKg KkZpbGVOYW1lLA0KPiAgwqAgSU4gVUlOVE4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgTGluZU51 bWJlciwNCj4gIMKgIElOIENPTlNUIENIQVI4IMKgKkRlc2NyaXB0aW9uLA0KPiAgwqAgSU4gRUZJ X1NUQVRVUyDCoCDCoCDCoFN0YXR1cw0KPiAgwqAgKTsNCj4gDQo+IA0KPiAvLyBEZWZhdWx0IHRv IEFzc2VydENvbnN0cmFpbnRIYW5kbGVyIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGltcGxlbWVudCAN Cj4gQmFzZSBhbmQgWElQIGxpYnMuDQo+IC8vIFdlIGNvdWxkIGhhdmUgYSBQQ0QgdGhhdCBhbHNv IHNldHMgdGhlIGRlZmF1bHQgaGFuZGxlciBpbiBhIExpYiANCj4gQ29uc3RydWN0b3IuIFRoZSBk ZWZhdWx0IGhhbmRsZXIgaXMgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBpbiBDMTEuDQo+IENPTlNU UkFJTlRfSEFORExFUiBnRGVmYXVsdENvbnN0cmFpbnRIYW5kbGVyID3CoEFzc2VydENvbnN0cmFp bnRIYW5kbGVyOw0KPiBDT05TVFJBSU5UX0hBTkRMRVIgZ0FjdGl2ZUNvbnN0cmFpbnRIYW5kbGVy ID3CoGdEZWZhdWx0Q29uc3RyYWludEhhbmRsZXI7DQo+IA0KPiBCT09MRUFODQo+IEVGSUFQSQ0K PiBDb25zdHJhaW50QXNzZXJ0RW5hYmxlZCAoDQo+ICDCoCBWT0lEDQo+ICDCoCApDQo+IHsNCj4g IMKgwqByZXR1cm4gKEJPT0xFQU4pICgoUGNkR2V0OChQY2REZWJ1Z1Byb3BlcnR5TWFzaykgJiAN Cj4gREVCVUdfUFJPUEVSVFlfREVCVUdfQ09OU1RSQUlOVF9FTkFCTEVEKSAhPSAwKTsNCj4gfQ0K PiANCj4gRUZJX1NUQVRVUw0KPiBFRklBUEkNCj4gU2V0Q29uc3RyYWludEhhbmRsZXIgKA0KPiAg wqAgSU4gQ09OU1RSQUlOVF9IQU5ETEVSIEhhbmRsZXINCj4gIMKgICkNCj4gew0KPiAgwqAgaWYg KEhhbmRsZXIgPT0gTlVMTCkgew0KPiAgwqAgwqAgZ0FjdGl2ZUNvbnN0cmFpbnRIYW5kbGVyID3C oGdEZWZhdWx0Q29uc3RyYWludEhhbmRsZXI7DQo+ICDCoCB9IGVsc2Ugew0KPiAgwqAgwqAgZ0Fj dGl2ZUNvbnN0cmFpbnRIYW5kbGVyID0gSGFuZGxlcjsNCj4gIMKgIH0NCj4gfQ0KPiANCj4gVk9J RA0KPiBBc3NlcnRDb25zdHJhaW50SGFuZGxlciAoDQo+ICDCoCBJTiBDT05TVCBDSEFSOCDCoCpG aWxlTmFtZSwNCj4gIMKgIElOIFVJTlROIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIExpbmVOdW1i ZXIsDQo+ICDCoCBJTiBDT05TVCBDSEFSOCDCoCpEZXNjcmlwdGlvbiwNCj4gIMKgIElOIEVGSV9T VEFUVVMgwqAgwqAgwqBTdGF0dXMNCj4gIMKgICkNCj4gew0KPiAgwqDCoGlmIChDb25zdHJhaW50 QXNzZXJ0RW5hYmxlZCAoKSkgew0KPiAgwqAgwqAgwqBERUJVRyAoKEVGSV9EX0VSUk9SLCAiXENv bnN0cmFpbnQgQVNTRVJUIChTdGF0dXMgPSAlcik6ICIsIFN0YXR1cykpOw0KPiAgwqAgwqDCoMKg RGVidWdBc3NlcnQgKEZpbGVOYW1lLMKgTGluZU51bWJlciwgRGVzY3JpcHRpb24pDQo+ICDCoCB9 DQo+IA0KPiAgwqByZXR1cm47DQo+IH0NCj4gDQo+IFZPSUQNCj4gSWdub3JlQ29uc3RyYWludEhh bmRsZXIgKA0KPiAgwqAgSU4gQ09OU1QgQ0hBUjggwqAqRmlsZU5hbWUsDQo+ICDCoCBJTiBVSU5U TiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBMaW5lTnVtYmVyLA0KPiAgwqAgSU4gQ09OU1QgQ0hB UjggwqAqRGVzY3JpcHRpb24sDQo+ICDCoCBJTiBFRklfU1RBVFVTIMKgIMKgIMKgU3RhdHVzDQo+ ICDCoCApDQo+IHsNCj4gIMKgIHJldHVybjsNCj4gfQ0KPiANCj4gV2UgY291bGQgYWRkIG1hY3Jv cyBmb3IgdGhlIGNvZGUgaW4gdGhlIGxpYiB0byBjYWxsOg0KPiANCj4gI2RlZmluZSBDT05TVFJB SU5UX0NIRUNLKEV4cHJlc3Npb24sIFN0YXR1cykgwqBcDQo+ICDCoCBkbyB7IFwNCj4gIMKgIMKg IGlmICghKEV4cHJlc3Npb24pKSB7IFwNCj4gIMKgIMKgIMKgIGdBY3RpdmVDb25zdHJhaW50SGFu ZGxlcsKgKF9fRklMRV9fLCBfX0xJTkVfXywgRXhwcmVzc2lvbiwgU3RhdHVzKTsgXA0KPiAgwqAg wqAgwqAgcmV0dXJuIFN0YXR1czsgXA0KPiAgwqAgwqAgfSBcDQo+ICDCoCB9IHdoaWxlIChGQUxT RSkNCj4gDQo+ICNkZWZpbmUgQ09OU1RSQUlOVF9SRVFVSVJFKEV4cHJlc3Npb24sIFN0YXR1cywg TGFiZWwpIMKgXA0KPiAgwqAgZG8geyBcDQo+ICDCoCDCoCBpZiAoIShFeHByZXNzaW9uKSkgeyBc DQo+ICDCoCDCoCDCoCBnQWN0aXZlQ29uc3RyYWludEhhbmRsZXLCoChfX0ZJTEVfXywgX19MSU5F X18sIEV4cHJlc3Npb24sIFN0YXR1cyk7IFwNCj4gIMKgIMKgIMKgIGdvdG/CoExhYmVsOyBcDQo+ ICDCoCDCoCB9IFwNCj4gIMKgIH0gd2hpbGUgKEZBTFNFKQ0KPiANCj4gDQo+IEFzIGEgY2FsbGVy IHdlIGhhdmUgbm93IGhhdmUgY29udHJvbDoNCj4gIMKgIEVGSV9TVEFUVVMgU3RhdHVzOw0KPiAg wqAgQ0hBUjE2IMKgIMKgIMKgIMKgRHN0WzJdOw0KPiANCj4gIMKgIFNldENvbnN0cmFpbnRIYW5k bGVyIChJZ25vcmVDb25zdHJhaW50SGFuZGxlcik7DQo+ICDCoCBTdGF0dXMgPSBTdHJDcHlTIChE c3QsIHNpemVvZiAoRHN0KSwgTCJUb28gTG9uZyIpOw0KPiAgwqAgUHJpbnQgKEwiRHN0ID0lcyAo JXIpXG4iLCDCoERzdCwgU3RhdHVzKTsNCj4gDQo+ICDCoCBTZXRDb25zdHJhaW50SGFuZGxlciAo QXNzZXJ0Q29uc3RyYWludEhhbmRsZXIpOw0KPiAgwqAgU3RyQ3B5UyAoRHN0LCBzaXplb2YgKERz dCksIEwiVG9vIExvbmciKTsNCj4gDQo+IFRoYW5rcywNCj4gDQo+IEFuZHJldyBGaXNoDQo+IA0K PiBQUyBTaW5jZSBJJ20gb24gYSBjcmF6eSBpZGVhIHJvbGwgYW5vdGhlciBpZGVhIHdvdWxkIGJl IHRvIGFkZCBhIA0KPiBNZGVQa2dDb21wYXRhYmlsaXR5LmRzYy5pbmMgZmlsZSB0aGF0IGNvdWxk IGJlIHVzZWQgdG8gZnV0dXJlIHByb29mIA0KPiBhZGRpbmcgZGVwZW5kZW50IGxpYnMgdG8gZXhp c3RpbmcgTWRlUGtnIGxpYnMuIFNvIGEgcGxhdGZvcm0gY291bGQgDQo+IGluY2x1ZGUgdGhpcyAu RFNDIGFuZCB0aGF0IHdvdWxkIGdpdmUgdGhlbSB0aGUgZGVmYXVsdCBsaWJyYXJ5IG1hcHBpbmcg DQo+IHRvIGtlZXAgY29kZSBjb21waWxpbmcuIEl0IHdpbGwgb25seSB3b3JrIGFmdGVyIG90aGVy IHBsYXRmb3JtcyBzdGFydCANCj4gaW5jbHVkaW5nIGl0LCBidXQgYWZ0ZXIgdGhhdCBpdCB3b3Vs ZCBnaXZlIGRlZmF1bHQgbWFwcGluZ3MgZm9yIA0KPiBkZXBlbmRlbnQgbGlicy4NCj4gDQo+IElu IG91ciBhYm92ZSBleGFtcGxlIHdlIGNvdWxkIGhhdmUgYWRkZWQgdGhpcyBhbmQgdGhlbiBleGlz dGluZyBidWlsZHMgDQo+IHRoYXQgaW5jbHVkZWQgTWRlUGtnQ29tcGF0YWJpbGl0eS5kc2MuaW5j IHdvdWxkIGtlZXAgY29tcGlsaW5nLg0KPiANCj4gIMKgW0xpYnJhcnlDbGFzc2VzXQ0KPiAgICAN Cj4gRGVidWdDb25zdHJhaW50TGlifE1kZVBrZy9MaWJyYXJ5L0RlYnVnQ29uc3RyYWludExpYi9E ZWJ1Z0NvbnN0cmFpbnRMaWIuaW5mDQo+IA0KPiANCj4gDQo+PiBPbiBGZWIgMTUsIDIwMjAsIGF0 IDExOjM4IEFNLCBNaWNoYWVsIEQgS2lubmV5IA0KPj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwu Y29tIDxtYWlsdG86bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+PiB3cm90ZToNCj4+DQo+PiBB bmRyZXcsDQo+PiBJIGRvIG5vdCB0aGluayBvZiB0aGlzIGFzIGEgZ2xvYmFsbHkgc2NvcGVkIFBD RC5JdCBjYW4gYmUgc2V0IGluIA0KPj4gZ2xvYmFsIHNjb3BlIGluIERTQy5CdXQgaXMgY2FuIGFs c28gYmUgc2V0IHRvIHZhbHVlcyBiYXNlZCBvbiBtb2R1bGUgDQo+PiB0eXBlIG9yIGZvciBzcGVj aWZpYyBtb2R1bGVzLkluIHRoZSBjYXNlIG9mIHRoZSBzYWZlIHN0cmluZyBmdW5jdGlvbnMsIA0K Pj4gSSB0aGluayB0aGVyZSBpcyBhIGRlc2lyZSB0byBkaXNhYmxlIHRoZSBjb25zdHJhaW50IGFz c2VydHMgd2hlbiANCj4+IGJ1aWxkaW5nIGEgVUVGSSBBcHAgb3IgVUVGSSBEcml2ZXIgYW5kIGlt cGxlbWVudCB0aG9zZSBtb2R1bGVzIHRvIA0KPj4gaGFuZGxlIHRoZSBlcnJvciByZXR1cm4gdmFs dWVzLkVuYWJsaW5nIHRoZSBjb25zdHJhaW50IGFzc2VydHMgZm9yIFBFSSANCj4+IENvcmUsIERY RSBDb3JlLCBTTU0vTU0gQ29yZSwgUEVJTSwgRFhFLCBTTU0vTU0gbW9kdWxlcyBtYWtlcyBzZW5z ZSB0byANCj4+IGZpbmQgaW5jb3JyZWN0IGlucHV0IHRvIHRoZXNlIGZ1bmN0aW9ucyBmcm9tIG1v ZHVsZXMgdGhhdCBjYW4gDQo+PiBndWFyYW50ZWUgdGhlIGlucHV0cyB3b3VsZCBuZXZlciByZXR1 cm4gYW4gZXJyb3IgYW5kIGNhdGNoIHRoZXNlIGFzIA0KPj4gcGFydCBvZiBkZXYvZGVidWcvdmFs aWRhdGlvbiBidWlsZHMuDQo+PiBJIHdvdWxkIG5vdCBleHBlY3QgZGlzYWJsaW5nIG9uIGEgbW9k dWxlIGJ5IG1vZHVsZSBiYXNpcyB0byBiZSBjb21tb24uDQo+PiBJIHRoaW5rIHRoZSBydWxlIGZv ciBBUEkgaW1wbGVtZW50YXRpb25zIGlzIHRvIG9ubHkgdXNlIA0KPj4gQ09OU1RSQUlOVF9BU1NF UlQoKSBmb3IgY29uZGl0aW9ucyB0aGF0IGFyZSBhbHNvIGNoZWNrZWQgYW5kIHJldHVybiBhbiAN Cj4+IGVycm9yIG9yIGZhaWwgd2l0aCBwcmVkaWNhYmxlIGJlaGF2aW9yIHRoYXQgYWxsb3dzIHRo ZSBzeXN0ZW0gdG8gDQo+PiBjb250aW51ZSB0byBmdW5jdGlvbi5BU1NFUlQoKSBpcyBmb3IgY29u ZGl0aW9ucyB0aGF0IHRoZSBzeXN0ZW1jYW4gDQo+PiBub3Rjb250aW51ZS4NCj4+IEJlc3QgcmVn YXJkcywNCj4+IE1pa2UNCj4+ICpGcm9tOiphZmlzaEBhcHBsZS5jb20gPG1haWx0bzphZmlzaEBh cHBsZS5jb20+PGFmaXNoQGFwcGxlLmNvbSANCj4+IDxtYWlsdG86YWZpc2hAYXBwbGUuY29tPj4N Cj4+ICpTZW50OipGcmlkYXksIEZlYnJ1YXJ5IDE0LCAyMDIwIDEwOjI3IFBNDQo+PiAqVG86KnZp dDk2OTYgPHZpdDk2OTZAcHJvdG9ubWFpbC5jb20gPG1haWx0bzp2aXQ5Njk2QHByb3Rvbm1haWwu Y29tPj4NCj4+ICpDYzoqZGV2ZWxAZWRrMi5ncm91cHMuaW8gPG1haWx0bzpkZXZlbEBlZGsyLmdy b3Vwcy5pbz47IEtpbm5leSwgDQo+PiBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwu Y29tIA0KPj4gPG1haWx0bzptaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4+OyBHYW8sIExpbWlu ZyANCj4+IDxsaW1pbmcuZ2FvQGludGVsLmNvbSA8bWFpbHRvOmxpbWluZy5nYW9AaW50ZWwuY29t Pj47IEdhbywgWmhpY2hhbyANCj4+IDx6aGljaGFvLmdhb0BpbnRlbC5jb20gPG1haWx0bzp6aGlj aGFvLmdhb0BpbnRlbC5jb20+PjsgTWFydmluIEjDpHVzZXIgDQo+PiA8bWFydmluLmhhZXVzZXJA b3V0bG9vay5jb20gPG1haWx0bzptYXJ2aW4uaGFldXNlckBvdXRsb29rLmNvbT4+OyANCj4+IExh c3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20gPG1haWx0bzpsZXJzZWtAcmVkaGF0LmNvbT4+ DQo+PiAqU3ViamVjdDoqUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjMgMC8xXSBBZGQgUENEIHRv IGRpc2FibGUgc2FmZSANCj4+IHN0cmluZyBjb25zdHJhaW50IGFzc2VydGlvbnMNCj4+IFZpdGFs eSwNCj4+IFNvcnJ5IGFmdGVyIEkgc2VudCB0aGUgbWFpbCBJIHJlYWxpemVkIGl0IG1heSBjb21l IMKgYWNyb3NzIGFzIG1lIA0KPj4gYXNraW5nIHlvdSB0byBkbyB3b3JrIGFuZCB0aGF0IHdhcyBu b3QgbXkgaW50ZW50Lg0KPj4gSSB3aWxsIHBvaW50IG91dCB0aG91Z2ggdGhhdCBhIG5vbiBiYWNr d2FyZCBjb21wYXRpYmxlIGNoYW5nZSB0byANCj4+IHNvbWV0aGluZyBhcyBmdW5kYW1lbnRhbCBh cyB0aGUgRGVidWdMaWIgaXMgYSB2ZXJ5IGJpZyBkZWFsLiBJJ3ZlIGdvdCANCj4+IGEgZmV3IGRp ZmZlcmVudCBjdXN0b20gaW1wbGVtZW50YXRpb25zIHRoYXQgd291bGQgYnJlYWsgd2l0aCB0aGlz IA0KPj4gY2hhbmdlIGFzIE1pa2UgcHJvcG9zZWQuIEdpdmVuIGJyZWFraW5nIGV2ZXJ5IG9uZSdz IGRlYnVnIGxpYiBpcyBzdWNoIA0KPj4gYSBiaWcgZGVhbCBtYXliZSBpdCBpcyBzb21ldGhpbmcg dGhhdCB3ZSBzaG91bGQgZG8gYXMgYSBsb25nIHRlcm0gcGxhbiANCj4+IHZzLiBzb21lIGluY3Jl bWVudGFsIGZpeC4gU28gbXkgaW50ZW50IHdhcyB0byBzdGFydCBhIGNvbnZlcnNhdGlvbiANCj4+ IGFib3V0IHdoYXQgZWxzZSB3ZSBtaWdodCB3YW50IHRvIGNoYW5nZSBpZiB3ZSBhcmUgZ29pbmcg dG8gYnJlYWsgdGhlIA0KPj4gd29ybGQuIFRoZSBvbmx5IHRoaW5rIHdvcnNlIHRoYW4gYnJlYWtp bmcgdGhlIHdvcmxkIGlzIGJyZWFraW5nIHRoZSANCj4+IHdvcmxkIGZyZXF1ZW50bHkuDQo+PiBJ J20gYWxzbyBhIGxpdHRsZSB3b3JyaWVkIHRoYXQgd2UgYXJlIHRha2luZyB0aGluZ3MgdGhhdCBh cmUgdG9kYXkgDQo+PiBsb2NhbGx5IHNjb3BlZCBsaWtlwqBTQUZFX1NUUklOR19DT05TVFJBSU5U X0NIRUNLIGFuZCANCj4+IFNBRkVfUFJJTlRfQ09OU1RSQUlOVF9DSEVDSyBhbmQgbWFraW5nIHRo ZW0gZ2xvYmFsIGNvbnN0cnVjdHMuIEkgdGhpbmsgDQo+PiB0aGUgd2F5IG90aGVycyBoYXZlIGRl YWx0IHdpdGggdGhpbmdzIGxpa2UgdGhpcyBpcyB0byBtYWtlIHRoZW0gYmUgDQo+PiBERUJVRyBw cmludHMgdnMuIEFTU0VSVHMuIEFsc28gZXZlbiBzb21ldGhpbmcgYXMgc2ltcGxlIGFzIA0KPj4g U0FGRV9TVFJJTkdfQ09OU1RSQUlOVF9DSEVDSyBjb3VsZCBiZSBjYWxsZWQgZnJvbSBjb2RlIHRo YXQgd2FudHMgDQo+PiBBU1NFUlQgYW5kIENPTlNUUkFJTlRfQVNTRVJUIGJlaGF2aW9yLiBJdCBp cyBub3QgY2xlYXIgdG8gbWUgdGhhdCB0aGUgDQo+PiBsb3cgbGV2ZWwgY29kZSBrbm93cyB0aGUg cmlnaHQgdGhpbmcgdG8gZG8gaW4gYSBnbG9iYWwgc2Vuc2UgZXZlbiBpZiANCj4+IHRoZXJlIGlz IGEgUENELiDCoEl0IGFsbW9zdCBzZWVtcyBsaWtlIHdlIHNob3VsZCBoYXZlIHdyYXBwZXJzIGZv ciB0aGUgDQo+PiBTYWZlIHN0cmluZyBmdW5jdGlvbnMgdGhhdCBpbXBsZW1lbnQgdGhlIGJlaGF2 aW9yIHlvdSB3YW50IGFzIGEgDQo+PiBjYWxsZXIuIEknbSBub3Qgc3VyZSBhYm91dCB0aGF0LCBi dXQgaXQgc2VlbXMgbGlrZSBpdCBpcyB3b3J0aCB0YWxraW5nIA0KPj4gYWJvdXQ/DQo+PiBUaGFu a3MsDQo+PiBBbmRyZXcgRmlzaA0KPj4NCj4+DQo+PiAgICAgT24gRmViIDE0LCAyMDIwLCBhdCA3 OjMxIFBNLCB2aXQ5Njk2IDx2aXQ5Njk2QHByb3Rvbm1haWwuY29tDQo+PiAgICAgPG1haWx0bzp2 aXQ5Njk2QHByb3Rvbm1haWwuY29tPj4gd3JvdGU6DQo+PiAgICAgSGkgQW5kcmV3LA0KPj4gICAg IFdoaWxlIHlvdXIgc3VnZ2VzdGlvbnMgbG9vayBpbnRlcmVzdGluZyzCoEkgYW0gYWZyYWlkIHRo ZXkgYXJlIG5vdA0KPj4gICAgIHBhcnRpY3VsYXJsecKgd2hhdCB3ZSB3YW50IHRvIGNvdmVywqB3 aXRoIHRoaXMgZGlzY3Vzc2lvbiBhdCB0aGUgbW9tZW50Lg0KPj4gICAgIE1ha2luZyBhc3NlcnRp b25zIGdvIHRocm91Z2ggREVCVUcgcHJpbnRpbmcgZnVuY3Rpb25zL21hY3Jvc8KgaXMNCj4+ICAg ICB3aGF0IHdlIGhhdmUgdG8gc3Ryb25nbHkgZGlzYWdyZWUgYWJvdXQuIEFzc2VydGlvbnMgYW5k IGRlYnVnDQo+PiAgICAgcHJpbnRzIGFyZSBzZXBhcmF0ZSB0aGluZ3PCoGNvbmZpZ3VyYWJsZSBi eSBzZXBhcmF0ZSBQQ0RzLsKgV2UNCj4+ICAgICBzaG91bGQgbm90IG1peCB0aGVtLiBJbnRyb2R1 Y2luZyBjb25zdHJhaW50IGFzc2VydGlvbnMgaXMgYQ0KPj4gICAgIGxvZ2ljYWwgc3RlcCBmb3J3 YXJkIGluIHVuZGVyc3RhbmRpbmcgdGhhdCBkaWZmZXJlbnQgc29mdHdhcmUNCj4+ICAgICB3b3Jr cyBpbiBkaWZmZXJlbnQgZW52aXJvbm1lbnRzLg0KPj4NCj4+ICAgICAgICogVGhlcmUgYXJlIG5v cm1hbCwgb3IsIGFzIEkgY2FsbCB0aGVtLCBpbnZhcmlhbnQNCj4+ICAgICAgICAgYXNzZXJ0aW9u c8KgKGUuZy4gcHJlY29uZGl0aW9ucyksIGZvciBwbGFjZXMgd2hlcmUgdGhlIGZ1bmN0aW9uDQo+ PiAgICAgICAgIGNhbm5vdCB3b3JrIHVubGVzcyB0aGUgYXNzZXJ0aW9uIGlzIHNhdGlzZmllZC4g VGhpcyBpcyB3aGVyZQ0KPj4gICAgICAgICB3ZSBBU1NFUlQuDQo+PiAgICAgICAqIFRoZXJlIGFy ZSBjb25zdHJhaW50IGFzc2VydGlvbnMsIHdoaWNoIHNpZ25hbGlzZSB0aGF0IGJhZCBkYXRhDQo+ PiAgICAgICAgIGNhbWUgdGhyb3VnaCB0aGUgZnVuY3Rpb24sIGV2ZW4gdGhvdWdoIHRoZSBmdW5j dGlvbiB3YXMgY2FsbGVkDQo+PiAgICAgICAgIGZyb20gYSB0cnVzdGVkIHNvdXJjZS4gVGhpcyBp cyB3aGVyZSB3ZSBjYWxsIENPTlNUUkFJTlRfQVNTRVJULg0KPj4NCj4+ICAgICBUaGUgdGhpbmcg d2UgbmVlZCBpcyB0byBoYXZlIHRoZSBsYXR0ZXIgc2VwYXJhYmxlDQo+PiAgICAgYW5kwqBjb25m aWd1cmFibGUsIGJlY2F1c2Ugbm90IGV2ZXJ5IHBpZWNlIG9mwqBzb2Z0d2FyZSB3b3JrcyBpbiBh DQo+PiAgICAgdHJ1c3RlZCBlbnZpcm9ubWVudC4gT3RoZXIgdGhhbiB0aGF0LCBjb25zdHJhaW50 IGFzc2VydGlvbnMsIHdoZW4NCj4+ICAgICBlbmFibGVkLCBhcmUgbm90IGFueWhvdyBkaWZmZXJl bnQgZnJvbSBub3JtYWwgYXNzZXJ0aW9ucyBpbiB0aGUNCj4+ICAgICBzZW5zZSBvZiBhY3Rpb24g dGFrZW4uIEFzc2VydGlvbnMgaGF2ZSBjb25maWd1cmFibGUgYnJlYWtwb2ludHMNCj4+ICAgICBh bmQgZGVhZGxvb3BzLCBhbmTCoERFQlVHIHByaW50cyBnbyB0aHJvdWdoIGEgZGlmZmVyZW50IHJv dXRlIGluDQo+PiAgICAgRGVidWdMaWIgdGhhdMKgbWF5IGNhdXNlwqBlbnRpcmVsecKgZGlmZmVy ZW50IGVmZmVjdHMuIEZvciBleGFtcGxlLA0KPj4gICAgIHdlIGhhbHQgZXhlY3V0aW9uIHVwb24g cHJpbnRpbmcgdG8gREVCVUdfRVJST1IgaW4gb3VyIERlYnVnTGliDQo+PiAgICAgZXZlbiBpbiBy ZWxlYXNlIGJ1aWxkcy4NCj4+DQo+PiAgICAgPVRvIG1ha2UgaXQgY2xlYXIsIGN1cnJlbnRseSBJ IHBsYW4gdG8gYWRkIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlOg0KPj4gICAgICNkZWZpbmUgQ09O U1RSQUlOVF9BU1NFUlQoRXhwcmVzc2lvbikgXA0KPj4gICAgIGRvIHsgXA0KPj4gICAgIGlmIChE ZWJ1Z0NvbnN0cmFpbnRBc3NlcnRFbmFibGVkICgpKSB7IFwNCj4+ICAgICBpZiAoIShFeHByZXNz aW9uKSkgeyBcDQo+PiAgICAgX0FTU0VSVCAoRXhwcmVzc2lvbik7IFwNCj4+ICAgICBBTkFMWVpF Ul9VTlJFQUNIQUJMRSAoKTsgXA0KPj4gICAgIH0gXA0KPj4gICAgIH0gXA0KPj4gICAgIH0gd2hp bGUgKEZBTFNFKQ0KPj4gICAgIHdpdGggRGVidWdDb25zdHJhaW50QXNzZXJ0RW5hYmxlZCBpbXBs ZW1lbnRlZCBhcw0KPj4gICAgIChCT09MRUFOKSAoKFBjZEdldDgoUGNkRGVidWdQcm9wZXJ0eU1h c2spICYNCj4+ICAgICBERUJVR19QUk9QRVJUWV9ERUJVR19BU1NFUlRfRU5BQkxFRCB8DQo+PiAg ICAgREVCVUdfUFJPUEVSVFlfQ09OVFJBSU5UX0FTU0VSVF9ESVNBQkxFRCkgPT0NCj4+ICAgICBE RUJVR19QUk9QRVJUWV9ERUJVR19BU1NFUlRfRU5BQkxFRCkNCj4+ICAgICBZb3VyIHN1Z2dlc3Rp b24gd2l0aCByZXF1aXJlIG1hY3JvcyBsb29rcyBpbnRlcmVzdGluZyBpbmRlZWQsIGJ1dA0KPj4g ICAgIEkgYmVsaWV2ZSBpdCBpcyBpbiBmYWN0IHBhcmFsbGVsIHRvIHRoaXMgZGlzY3Vzc2lvbi4g VGhlIGNoYW5nZSB3ZQ0KPj4gICAgIGRpc2N1c3MgaW50cm9kdWNlcyBhIG5ldyBhc3NlcnRpb24g cHJpbWl0aXZlIOKAlCBjb25zdHJhaW50DQo+PiAgICAgYXNzZXJ0aW9ucywgd2hpbGUgUkVRVUlS RSBtYWNyb3MgYXJlIG1vc3RseSBhYm91dCBhZHZhbmNlZCBzeW50YXgNCj4+ICAgICBzdWdhciBh bmQgaGlnaGVyIGxldmVsIGFzc2VydGlvbiBwcmltaXRpdmVzIG9uIHRvcCBvZiBleGlzdGluZw0K Pj4gICAgIG9uZXMuIFBlcmhhcHMgd2UgY2FuIGhhdmUgdGhpcyBhbmQgbWFrZSBhIGdvb2QgdXNl IG9mIGl0LA0KPj4gICAgIGVzcGVjaWFsbHkgZ2l2ZW4gdGhhdCBpdCBicm91Z2h0IHNvbWUgcHJh Y3RpY2FsIGJlbmVmaXQgaW4gQXBwbGUsDQo+PiAgICAgYnV0IEkgd291bGQgcmF0aGVyIGRpc2N1 c3MgdGhpcyBsYXRlciBvbmNlIGNvbnN0cmFpbnQgYXNzZXJ0aW9ucw0KPj4gICAgIGFyZSBtZXJn ZWQgaW50byBFREsgSUkgdHJlZS4NCj4+ICAgICBCZXN0IHdpc2hlcywNCj4+ICAgICBWaXRhbHkN Cj4+ICAgICBPbiBTYXQsIEZlYiAxNSwgMjAyMCBhdCAwMzowMiwgQW5kcmV3IEZpc2ggPGFmaXNo QGFwcGxlLmNvbQ0KPj4gICAgIDxtYWlsdG86YWZpc2hAYXBwbGUuY29tPj4gd3JvdGU6DQo+Pg0K Pj4NCj4+DQo+PiAgICAgICAgICAgICBPbiBGZWIgMTQsIDIwMjAsIGF0IDI6NTAgUE0sIE1pY2hh ZWwgRCBLaW5uZXkNCj4+ICAgICAgICAgICAgIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbQ0K Pj4gICAgICAgICAgICAgPG1haWx0bzptaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4+IHdyb3Rl Og0KPj4gICAgICAgICAgICAgSGkgVml0YWx5LA0KPj4gICAgICAgICAgICAgSSBhZ3JlZSB0aGF0 IHRoaXMgcHJvcG9zYWwgbWFrZXMgYSBsb3Qgb2Ygc2Vuc2UuIFdlDQo+PiAgICAgICAgICAgICBy ZWNlbnRseSBhZGRlZCBhIG5ldyBhc3NlcnQgdHlwZSBjYWxsZWQgU1RBVElDX0FTU0VSVCgpDQo+ PiAgICAgICAgICAgICBmb3IgYXNzZXJ0IGNvbmRpdGlvbnMgdGhhdCBjYW4gYmUgdGVzdGVkIGF0 IGJ1aWxkIHRpbWUuDQo+PiAgICAgICAgICAgICBBIG5ldyBhc3NlcnQgdHlwZSBmb3IgY2hlY2tz IHRoYXQgY2FuIGJlIHJlbW92ZWQgYW5kIHRoZQ0KPj4gICAgICAgICAgICAgQVBJIHN0aWxsIGd1 YXJhbnRlZXMgdGhhdCBpdCBmYWlscyBncmFjZWZ1bGx5IHdpdGggYQ0KPj4gICAgICAgICAgICAg cHJvcGVyIHJldHVybiBjb2RlIGlzIGEgZ29vZCBpZGVhLiBHaXZlbiB3ZSBoYXZlDQo+PiAgICAg ICAgICAgICBTVEFUSUNfQVNTRVJUKCksIGhvdyBhYm91dCBuYW1pbmcgdGhlIG5ldyBtYWNybw0K Pj4gICAgICAgICAgICAgQ09OU1RSQUlOVF9BU1NFUlQoKT8NCj4+ICAgICAgICAgICAgIFdlIGFs c28gd2FudCB0aGUgZGVmYXVsdCB0byBiZSBlbmFibGVkLiBUaGUgY3VycmVudCB1c2Ugb2YNCj4+ ICAgICAgICAgICAgIGJpdCAweDQwIGluUGNkRGVidWdQcm9wZXJ0eU1hc2sgaXMgYWx3YXlzIGNs ZWFyLCBzbyB3ZQ0KPj4gICAgICAgICAgICAgd2FudCB0aGUgYXNzZXJ0cyBlbmFibGVkIHdoZW4g MHg0MCBpcyBjbGVhci4gV2UgY2FuIGNoYW5nZQ0KPj4gICAgICAgICAgICAgdGhlIG5hbWUgb2Yg dGhlIGRlZmluZSBiaXQgdG8NCj4+ICAgICAgICAgICAgIERFQlVHX1BST1BFUlRZX0NPTlRSQUlO VF9BU1NFUlRfRElTQUJMRUQgc28gYml0IDB4NDAgbmVlZHMNCj4+ICAgICAgICAgICAgIHRvIGJl IHNldCBpblBjZERlYnVnUHJvcGVydHlNYXNrdG8gZGlzYWJsZSB0aGVzZSB0eXBlcyBvZg0KPj4g ICAgICAgICAgICAgYXNzZXJ0cy4NCj4+ICAgICAgICAgICAgIFRoaXMgYXBwcm9hY2ggZG9lcyBy ZXF1aXJlIGFsbCB0aGVEZWJ1Z0xpYmltcGxlbWVudGF0aW9ucw0KPj4gICAgICAgICAgICAgdG8g YmUgdXBkYXRlZCB3aXRoIHRoZSBuZXdEZWJ1Z0NvbnN0cmFpbnRBc3NlcnREaXNhYmxlZCgpIEFQ SS4NCj4+DQo+PiAgICAgICAgIE1pa2UsDQo+PiAgICAgICAgIElmIHlvdSB3YW50ZWQgdG8gYmUg YmFja3dhcmQgY29tcGF0aWJsZSB5b3UgY291bGQganVzdA0KPj4gICAgICAgICB1c2XCoERlYnVn QXNzZXJ0RW5hYmxlZCAoKSBidXQgaW4gcGxhY2Ugb2YgX0FTU0VSVCgpIHVzZQ0KPj4gICAgICAg ICBfQ09OU1RSQUlOVF9BU1NFUlQNCj4+ICAgICAgICAgI2RlZmluZSBfQVNTRVJUKEV4cHJlc3Np b24pIMKgRGVidWdBc3NlcnQgKF9fRklMRV9fLCBfX0xJTkVfXywNCj4+ICAgICAgICAgI0V4cHJl c3Npb24pDQo+PiAgICAgICAgICNkZWZpbmXCoF9DT05TVFJBSU5UX0FTU0VSVChFeHByZXNzaW9u KSDCoERlYnVnUHJpbnQNCj4+ICAgICAgICAgKERFQlVHX0VSUk9SLCDCoCJBU1NFUlQgJWEoJWQp OiAlYVxuIiwsIF9fRklMRV9fLCBfX0xJTkVfXywNCj4+ICAgICAgICAgI0V4cHJlc3Npb24pDQo+ PiAgICAgICAgIE5vdCBhcyBlbGVnYW50IGFzIHRoZSBub24gYmFja3dhcmQgY29tcGF0aWJsZSBj aGFuZ2UsIGJ1dCBJDQo+PiAgICAgICAgIHRob3VnaHQgSSdkIHRocm93IGl0IG91dCB0aGVyZS4N Cj4+ICAgICAgICAgVGhlcmUgYXJlIHNvbWUgYW5jaWVudCBBcHBsZSBDIEFTU0VSVCBtYWNyb3Mg W0Fzc2VydE1hY3Jvcy5oXQ0KPj4gICAgICAgICDCoHRoYXQgYWxzbyBoYXZlIHRoZSBjb25jZXB0 IG9mIHJlcXVpcmUuIFJlcXVpcmUgaW5jbHVkZXMgYW4NCj4+ICAgICAgICAgZXhjZXB0aW9uIGxh YmVsIChnb3RvwqBsYWJlbCkuIEl0IGlzIGxpa2UgYSBDT05TVFJBSU5UX0FTU0VSVCgpDQo+PiAg ICAgICAgIGJ1dCB3aXRoIHRoZSBsYWJlbC4gT24gcmVsZWFzZSBidWlsZHMgdGhlIERFQlVHIHBy aW50cyBhcmUNCj4+ICAgICAgICAgc2tpcHBlZC4NCj4+ICAgICAgICAgU28gd2UgY291bGQgZG8g c29tZXRoaW5nIGxpa2U6DQo+PiAgICAgICAgIMKgIEVGSV9TVEFUVVMgU3RhdHVzID0gwqBFRklf SU5WQUxJRF9QQVJBTUVURVI7DQo+PiAgICAgICAgIMKgIFJFUVVJUkUoQXJnMSAhPSBOVUxMLCBF cnJvckV4aXQpOw0KPj4gICAgICAgICDCoCBSRVFVSVJFKEFyZzIgIT0gTlVMTCwgRXJyb3JFeGl0 KTsNCj4+ICAgICAgICAgwqAgUkVRVUlSRShBcmczICE9IE5VTEwsIEVycm9yRXhpdCk7DQo+PiAg ICAgICAgIEVycm9yRXhpdDoNCj4+ICAgICAgICAgwqAgcmV0dXJuIFN0YXR1czsNCj4+ICAgICAg ICAgVGhlcmUgaXMgYW5vdGhlciBmb3JtIHRoYXQgYWxsb3dzIGFuIEFDVElPTiAoYSBzdGF0ZW1l bnQgdG8NCj4+ICAgICAgICAgZXhlY3V0ZS4gU28geW91IGNvdWxkIGhhdmU6DQo+PiAgICAgICAg IMKgIEVGSV9TVEFUVVMgU3RhdHVzOw0KPj4gICAgICAgICDCoCBSRVFVSVJFX0FDVElPTihBcmcx ICE9IE5VTEwsIEVycm9yRXhpdCwgU3RhdHVzID0NCj4+ICAgICAgICAgRUZJX0lOVkFMSURfUEFS QU1FVEVSKTsNCj4+ICAgICAgICAgwqAgUkVRVUlSRV9BQ1RJT04oQXJnMiAhPSBOVUxMLCBFcnJv ckV4aXQsIFN0YXR1cyA9DQo+PiAgICAgICAgIEVGSV9JTlZBTElEX1BBUkFNRVRFUik7DQo+PiAg ICAgICAgIMKgIFJFUVVJUkVfQUNUSU9OKEFyZzMgIT0gTlVMTCwgRXJyb3JFeGl0LCBTdGF0dXMg PQ0KPj4gICAgICAgICBFRklfSU5WQUxJRF9QQVJBTUVURVIpOw0KPj4gICAgICAgICBFcnJvckV4 aXQ6DQo+PiAgICAgICAgIMKgIHJldHVybiBTdGF0dXM7DQo+PiAgICAgICAgIElmIHlvdSB1c2Ug Q09OU1RSQUlOVF9BU1NFUlQoKTsNCj4+ICAgICAgICAgwqAgaWYgKEFyZzEgPT0gTlVMTCB8fCBB cmcyID09IE5VTEwgfHwgQXJnMyA9PSBOVUxMKSB7DQo+PiAgICAgICAgIMKgIMKgQ09OU1RSQUlO VF9BU1NFUlQgKEFyZzEgIT0gTlVMTCk7DQo+PiAgICAgICAgIMKgIMKgQ09OU1RSQUlOVF9BU1NF UlQgKEFyZzIgIT0gTlVMTCk7DQo+PiAgICAgICAgIMKgIMKgQ09OU1RSQUlOVF9BU1NFUlQgKEFy ZzMgIT0gTlVMTCk7DQo+PiAgICAgICAgIMKgIMKgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRF UjsNCj4+ICAgICAgICAgwqB9DQo+PiAgICAgICAgIEknZCBub3RlIGVycm9yIHByb2Nlc3Npbmcg YXJncyBvbiBlbnRyeSBpcyB0aGUgc2ltcGxlc3QgY2FzZS4NCj4+ICAgICAgICAgwqBJbiBhIG1v cmUgY29tcGxleCBjYXNlIHdoZW4gY2xlYW51cCBpcyByZXF1aXJlZCB0aGUgZ290bw0KPj4gICAg ICAgICBsYWJlbCBpcyBtb3JlIHVzZWZ1bC4NCj4+ICAgICAgICAgSSBndWVzcyB3ZSBjb3VsZCBh cmd1ZSBmb3IgbGVzcyB0eXBpbmcgYW5kIG1vcmUgc3ltbWV0cnkgYW5kDQo+PiAgICAgICAgIHNh eSB1c2UgQVNTRVJULCBDT05TVFJBSU5ULCBhbmQgUkVRVUlSRS4gSSBndWVzcyB5b3UgY291bGQg YWRkDQo+PiAgICAgICAgIGFuIEFTU0VSVF9BQ1RJT04gdG9vLg0KPj4gICAgICAgICBUaGUgQXNz ZXJ0TWFjcm9zLmggdmVyc2lvbnMgYWxzbyBzdXBwb3J0IF9xdWlldCAoc2tpcCB0aGUNCj4+ICAg ICAgICAgcHJpbnQpIGFuZCBfc3RyaW5nIChhZGQgYSBzdHJpbmcgdG8gdGhlIHByaW50KSBzbyB5 b3UgZW5kIHVwIHdpdGg6DQo+PiAgICAgICAgIFJFUVVJUkUNCj4+ICAgICAgICAgUkVRVUlSRV9T VFJJTkcNCj4+ICAgICAgICAgUkVRVUlSRV9RVUlFVA0KPj4gICAgICAgICBSRVFVSVJFX0FDVElP Tg0KPj4gICAgICAgICBSRVFVSVJFX0FDVElPTl9TVFJJTkcNCj4+ICAgICAgICAgUkVRVUlSRV9B Q1RJT05fUVVJRVQNCj4+ICAgICAgICAgV2UgY291bGQgYWxzbyBlbmQgdXAgd2l0aA0KPj4gICAg ICAgICBDT05TVFJBSU5UDQo+PiAgICAgICAgIENPTlNUUkFJTlRfU1RSSU5HDQo+PiAgICAgICAg IENPTlNUUkFJTlRfUVVJRVQNCj4+ICAgICAgICAgSSB0aGluayB0aGUgbWFpbiBpZGVhIGJlaGlu ZCBfUVVJRVQgaXMgeW91IGNhbiBzaWxlbmNlIHRoaW5ncw0KPj4gICAgICAgICB0aGF0IGFyZSB0 b28gbm9pc3ksIGFuZCB5b3UgY2FuIGVhc2lseSBtYWtlIG5vaXNlIHRoaW5ncyBzaG93DQo+PiAg ICAgICAgIHVwIGJ5IHJlbW92aW5nIHRoZSBfUVVJRVQgdG8gZGVidWcuDQo+PiAgICAgICAgIEkn ZCB0aG91Z2h0IEkgdGhyb3cgb3V0IHRoZSBvdGhlciBmb3JtcyBmb3IgZm9sa3MgdG8gdGhpbmsN Cj4+ICAgICAgICAgYWJvdXQuIEknbSBwcm9iYWJseSBiaWFzZWQgYXMgSSB1c2VkIHRvIGxvb2tp bmcgYXQgY29kZSBhbmQNCj4+ICAgICAgICAgc2VlaW5nIHRoaW5ncyBsaWtlIHJlcXVpcmVfYWN0 aW9uX3N0cmluZyhBcmcxICE9IE5VTEwsDQo+PiAgICAgICAgIEVycm9yRXhpdCwgU3RhdHVzID0g RUZJX0lOVkFMSURfUEFSQU1FVEVSLCAiMXN0IEFyZzEgY2hlY2siKTsNCj4+ICAgICAgICAgVGhh bmtzLA0KPj4gICAgICAgICBBbmRyZXcgRmlzaA0KPj4gICAgICAgICBQUyBUaGUgb2xkIGRlYnVn IG1hY3JvcyBoYWQgMiB2ZXJzaW9ucyBvZiBDT05TVFJBSU5UIGNoZWNrIGFuZA0KPj4gICAgICAg ICB2ZXJpZnkuIFRoZSBjaGVjayB2ZXJzaW9uIHdhcyBjb21waWxlZCBvdXQgb24gYSByZWxlYXNl IGJ1aWxkLA0KPj4gICAgICAgICB0aGUgdmVyaWZ5IHZlcnNpb24gYWx3YXlzIGRvZXMgdGhlIGNo ZWNrIGFuZCBqdXN0IHNraXBzIHRoZQ0KPj4gICAgICAgICBERUJVRyBwcmludC4NCj4+DQo+PiAg ICAgICAgICAgICBNaWtlDQo+PiAgICAgICAgICAgICAqRnJvbToqdml0OTY5NiA8dml0OTY5NkBw cm90b25tYWlsLmNvbQ0KPj4gICAgICAgICAgICAgPG1haWx0bzp2aXQ5Njk2QHByb3Rvbm1haWwu Y29tPj4NCj4+ICAgICAgICAgICAgICpTZW50OipGcmlkYXksIEZlYnJ1YXJ5IDE0LCAyMDIwIDk6 MzggQU0NCj4+ICAgICAgICAgICAgICpUbzoqS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5r aW5uZXlAaW50ZWwuY29tDQo+PiAgICAgICAgICAgICA8bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlA aW50ZWwuY29tPj4NCj4+ICAgICAgICAgICAgICpDYzoqZGV2ZWxAZWRrMi5ncm91cHMuaW8gPG1h aWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbz47DQo+PiAgICAgICAgICAgICBHYW8sIExpbWluZyA8 bGltaW5nLmdhb0BpbnRlbC5jb20NCj4+ICAgICAgICAgICAgIDxtYWlsdG86bGltaW5nLmdhb0Bp bnRlbC5jb20+PjsgR2FvLCBaaGljaGFvDQo+PiAgICAgICAgICAgICA8emhpY2hhby5nYW9AaW50 ZWwuY29tIDxtYWlsdG86emhpY2hhby5nYW9AaW50ZWwuY29tPj47DQo+PiAgICAgICAgICAgICBN YXJ2aW4gSMOkdXNlciA8bWFydmluLmhhZXVzZXJAb3V0bG9vay5jb20NCj4+ICAgICAgICAgICAg IDxtYWlsdG86bWFydmluLmhhZXVzZXJAb3V0bG9vay5jb20+PjsgTGFzemxvIEVyc2VrDQo+PiAg ICAgICAgICAgICA8bGVyc2VrQHJlZGhhdC5jb20gPG1haWx0bzpsZXJzZWtAcmVkaGF0LmNvbT4+ DQo+PiAgICAgICAgICAgICAqU3ViamVjdDoqUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjMgMC8x XSBBZGQgUENEIHRvDQo+PiAgICAgICAgICAgICBkaXNhYmxlIHNhZmUgc3RyaW5nIGNvbnN0cmFp bnQgYXNzZXJ0aW9ucw0KPj4gICAgICAgICAgICAgTWljaGFlbCwNCj4+ICAgICAgICAgICAgIEdl bmVyYWxpc2luZyB0aGUgYXBwcm9hY2ggbWFrZXMgZ29vZCBzZW5zZSB0byBtZSwgYnV0IHdlDQo+ PiAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgYW4gb2J2aW91cyBkaXN0aW5ndWlzaGFibGUgZGlm ZmVyZW5jZSBiZXR3ZWVuOg0KPj4gICAgICAgICAgICAgLSBwcmVjb25kaXRpb24gYW5kIGludmFy aWFudCBhc3NlcnRpb25zIChpLmUuIGFzc2VydGlvbnMsDQo+PiAgICAgICAgICAgICB3aGVyZSBm dW5jdGlvbiB3aWxsIE5PVCB3b3JrIGlmIHRoZXkgYXJlIHZpb2xhdGVkKQ0KPj4gICAgICAgICAg ICAgLSBjb25zdHJhaW50IGFzc2VydHMgKGkuZS4gYXNzZXJ0aW9ucywgd2hpY2ggYWxsb3cgdXMg dG8NCj4+ICAgICAgICAgICAgIHNwb3QgdW5pbnRlbnRpb25hbCBiZWhhdmlvdXIgd2hlbiBwYXJz aW5nIHVudHJ1c3RlZCBkYXRhLA0KPj4gICAgICAgICAgICAgYnV0IHdoaWNoIGRvIG5vdCBicmVh ayBmdW5jdGlvbiBiZWhhdmlvdXIpLg0KPj4gICAgICAgICAgICAgQXMgd2Ugd2FudCB0byB1c2Ug dGhpcyBvdXRzaWRlIG9mIFNhZmVTdHJpbmcswqDCoEkgc3VnZ2VzdA0KPj4gICAgICAgICAgICAg dGhlIGZvbGxvd2luZzoNCj4+ICAgICAgICAgICAgIC0gSW50cm9kdWNlIERFQlVHX1BST1BFUlRZ X0FTU0VSVF9DT05TVFJBSU5UX0VOQUJMRUQgMHg0MA0KPj4gICAgICAgICAgICAgYml0IGZvciBQ Y2REZWJ1Z1Byb3BlcnR5TWFza8KgaW5zdGVhZA0KPj4gICAgICAgICAgICAgb2bCoFBjZEFzc2Vy dE9uU2FmZVN0cmluZ0NvbnN0cmFpbnRzLg0KPj4gICAgICAgICAgICAgLSBJbnRyb2R1Y2UgRGVi dWdBc3NlcnRDb25zdHJhaW50RW5hYmxlZCBEZWJ1Z0xpYiBmdW5jdGlvbg0KPj4gICAgICAgICAg ICAgdG8gY2hlY2sgZm9ywqBERUJVR19QUk9QRVJUWV9BU1NFUlRfQ09OU1RSQUlOVF9FTkFCTEVE Lg0KPj4gICAgICAgICAgICAgLSBJbnRyb2R1Y2UgQVNTRVJUX0NPTlNUUkFJTlQgbWFjcm8sIHRo YXQgd2lsbCBhc3NlcnQgb25seQ0KPj4gICAgICAgICAgICAgaWbCoERlYnVnQ29uc3RyYWludEFz c2VydEVuYWJsZWTCoHJldHVybnMgdHJ1ZS4NCj4+ICAgICAgICAgICAgIC0gQ2hhbmdlIFNhZmVT dHJpbmcgQVNTRVJUUw0KPj4gICAgICAgICAgICAgaW7CoFNBRkVfU1RSSU5HX0NPTlNUUkFJTlRf Q0hFQ0sgdG/CoEFTU0VSVF9DT05TVFJBSU5Ucy4NCj4+ICAgICAgICAgICAgIC0gVXNlwqBBU1NF UlRfQ09OU1RSQUlOVMKgaW4gb3RoZXIgcGxhY2VzIHdoZXJlIG5lY2Vzc2FyeS4NCj4+DQo+PiAg ICAgICAgICAgICBJIGJlbGlldmUgdGhpcyB3YXkgbGluZXMgYmVzdCB3aXRoIEVESyBJSSBkZXNp Z24uIElmIHRoZXJlDQo+PiAgICAgICAgICAgICBhcmUgbm8gb2JqZWN0aW9ucywgSSBjYW4gc3Vi bWl0IHRoZSBwYXRjaCBpbiB0aGUgYmVnaW5uaW5nDQo+PiAgICAgICAgICAgICBvZiBuZXh0IHdl ZWsuDQo+Pg0KPj4gICAgICAgICAgICAgQmVzdCB3aXNoZXMsDQo+PiAgICAgICAgICAgICBWaXRh bHkNCj4+DQo+PiAgICAgICAgICAgICAgICAgMTQg0YTQtdCy0YAuIDIwMjAg0LMuLCDQsiAyMDow MCwgS2lubmV5LCBNaWNoYWVsIEQNCj4+ICAgICAgICAgICAgICAgICA8bWljaGFlbC5kLmtpbm5l eUBpbnRlbC5jb20NCj4+ICAgICAgICAgICAgICAgICA8bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlA aW50ZWwuY29tPj4g0L3QsNC/0LjRgdCw0Lso0LApOg0KPj4gICAgICAgICAgICAgICAgIFZpdGFs eSwNCj4+ICAgICAgICAgICAgICAgICBJIHdhbnQgdG8gbWFrZSBzdXJlIGEgZmVhdHVyZSBQQ0Qg Y2FuIGJlIHVzZWQgdG8NCj4+ICAgICAgICAgICAgICAgICBkaXNhYmxlIEFTU0VSVCgpIGJlaGF2 aW9yIGluIG1vcmUgdGhhbiBqdXN0IHNhZmUNCj4+ICAgICAgICAgICAgICAgICBzdHJpbmcgZnVu Y3Rpb25zIGluQmFzZUxpYi4NCj4+ICAgICAgICAgICAgICAgICBDYW4gd2UgY29uc2lkZXIgY2hh bmdpbmcgdGhlIG5hbWUgYW5kIGRlc2NyaXB0aW9uDQo+PiAgICAgICAgICAgICAgICAgb2ZQY2RB c3NlcnRPblNhZmVTdHJpbmdDb25zdHJhaW50c3RvIGJlIG1vcmUgZ2VuZXJpYywNCj4+ICAgICAg ICAgICAgICAgICBzbyBpZiB3ZSBmaW5kIG90aGVyIGxpYiBBUElzLCB0aGUgbmFtZSB3aWxsIG1h a2Ugc2Vuc2U/DQo+PiAgICAgICAgICAgICAgICAgTWF5YmUgc29tZXRoaW5nIGxpa2U6UGNkRW5h YmxlTGlicmFyeUFzc2VydENoZWNrcz8NCj4+ICAgICAgICAgICAgICAgICBEZWZhdWx0IGlzIFRS VUUuIENhbiBzZXQgdG8gRkFMU0UgaW4gRFNDIGZpbGUgdG8NCj4+ICAgICAgICAgICAgICAgICBk aXNhYmxlIEFTU0VSVCgpIGNoZWNrcy4NCj4+ICAgICAgICAgICAgICAgICBUaGFua3MsDQo+PiAg ICAgICAgICAgICAgICAgTWlrZQ0KPj4gICAgICAgICAgICAgICAgICpGcm9tOipkZXZlbEBlZGsy Lmdyb3Vwcy5pbw0KPj4gICAgICAgICAgICAgICAgIDxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMu aW8+PGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+PiAgICAgICAgICAgICAgICAgPG1haWx0bzpkZXZl bEBlZGsyLmdyb3Vwcy5pbz4+Kk9uIEJlaGFsZiBPZipWaXRhbHkNCj4+ICAgICAgICAgICAgICAg ICBDaGVwdHNvdiB2aWEgR3JvdXBzLklvDQo+PiAgICAgICAgICAgICAgICAgKlNlbnQ6KkZyaWRh eSwgRmVicnVhcnkgMTQsIDIwMjAgMzo1NSBBTQ0KPj4gICAgICAgICAgICAgICAgICpUbzoqS2lu bmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tDQo+PiAgICAgICAgICAg ICAgICAgPG1haWx0bzptaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4+OyBHYW8sIExpbWluZw0K Pj4gICAgICAgICAgICAgICAgIDxsaW1pbmcuZ2FvQGludGVsLmNvbSA8bWFpbHRvOmxpbWluZy5n YW9AaW50ZWwuY29tPj47DQo+PiAgICAgICAgICAgICAgICAgR2FvLCBaaGljaGFvIDx6aGljaGFv Lmdhb0BpbnRlbC5jb20NCj4+ICAgICAgICAgICAgICAgICA8bWFpbHRvOnpoaWNoYW8uZ2FvQGlu dGVsLmNvbT4+O2RldmVsQGVkazIuZ3JvdXBzLmlvDQo+PiAgICAgICAgICAgICAgICAgPG1haWx0 bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbz4NCj4+ICAgICAgICAgICAgICAgICAqQ2M6Kk1hcnZpbiBI w6R1c2VyIDxtYXJ2aW4uaGFldXNlckBvdXRsb29rLmNvbQ0KPj4gICAgICAgICAgICAgICAgIDxt YWlsdG86bWFydmluLmhhZXVzZXJAb3V0bG9vay5jb20+PjsgTGFzemxvIEVyc2VrDQo+PiAgICAg ICAgICAgICAgICAgPGxlcnNla0ByZWRoYXQuY29tIDxtYWlsdG86bGVyc2VrQHJlZGhhdC5jb20+ Pg0KPj4gICAgICAgICAgICAgICAgICpTdWJqZWN0OipSZTogW2VkazItZGV2ZWxdIFtQQVRDSCB2 MyAwLzFdIEFkZCBQQ0QgdG8NCj4+ICAgICAgICAgICAgICAgICBkaXNhYmxlIHNhZmUgc3RyaW5n IGNvbnN0cmFpbnQgYXNzZXJ0aW9ucw0KPj4gICAgICAgICAgICAgICAgIFJlcGx5aW5nIGFzIHBl ciBMaW1pbmcncyByZXF1ZXN0IGZvciB0aGlzIHRvIGJlIG1lcmdlZA0KPj4gICAgICAgICAgICAg ICAgIGludG8gZWRrMi1zdGFibGUyMDIwMDIuDQo+PiAgICAgICAgICAgICAgICAgT24gTW9uLCBG ZWIgMTAsIDIwMjAgYXQgMTQ6MTIsIHZpdDk2OTYNCj4+ICAgICAgICAgICAgICAgICA8dml0OTY5 NkBwcm90b25tYWlsLmNvbQ0KPj4gICAgICAgICAgICAgICAgIDxtYWlsdG86dml0OTY5NkBwcm90 b25tYWlsLmNvbT4+IHdyb3RlOg0KPj4NCj4+ICAgICAgICAgICAgICAgICAgICAgSGVsbG8sDQo+ Pg0KPj4gICAgICAgICAgICAgICAgICAgICBJdCBoYXMgYmVlbiBxdWl0ZSBzb21lIHRpbWUgc2lu Y2Ugd2Ugc3VibWl0dGVkIHRoZQ0KPj4gICAgICAgICAgICAgICAgICAgICBwYXRjaCB3aXRoIHNv IGZhciBubyBuZWdhdGl2ZSByZXNwb25zZS4gQXMgSQ0KPj4gICAgICAgICAgICAgICAgICAgICBt ZW50aW9uZWQgcHJldmlvdXNseSwgbXkgdGVhbSB3aWxsIHN0cm9uZ2x5DQo+PiAgICAgICAgICAg ICAgICAgICAgIGJlbmVmaXQgZnJvbSBpdHMgbGFuZGluZyBpbiBFREsgSUkgbWFpbmxpbmUuIFNp bmNlDQo+PiAgICAgICAgICAgICAgICAgICAgIGl0IGRvZXMgbm90IGFkZCBhbnkgcmVncmVzc2lv bnMgYW5kIGNhbiBiZSB2aWV3ZWQNCj4+ICAgICAgICAgICAgICAgICAgICAgYXMgYSBmZWF0dXJl IGltcGxlbWVudGF0aW9uIGZvciB0aGUgcmVzdCBvZiBFREsgSUkNCj4+ICAgICAgICAgICAgICAg ICAgICAgdXNlcnMsIEkgcmVxdWVzdCB0aGlzIHRvIGJlIG1lcmdlZCB1cHN0cmVhbSBpbg0KPj4g ICAgICAgICAgICAgICAgICAgICBlZGsyLXN0YWJsZTIwMjAwMi4NCj4+DQo+PiAgICAgICAgICAg ICAgICAgICAgIEJlc3Qgd2lzaGVzLA0KPj4gICAgICAgICAgICAgICAgICAgICBWaXRhbHkNCj4+ DQo+PiAgICAgICAgICAgICAgICAgICAgID4gMjcg0Y/QvdCyLiAyMDIwINCzLiwg0LIgMTI6NDcs IHZpdDk2OTYNCj4+ICAgICAgICAgICAgICAgICAgICAgPHZpdDk2OTZAcHJvdG9ubWFpbC5jb20N Cj4+ICAgICAgICAgICAgICAgICAgICAgPG1haWx0bzp2aXQ5Njk2QHByb3Rvbm1haWwuY29tPj4g 0L3QsNC/0LjRgdCw0Lso0LApOg0KPj4gICAgICAgICAgICAgICAgICAgICA+DQo+PiAgICAgICAg ICAgICAgICAgICAgID4NCj4+ICAgICAgICAgICAgICAgICAgICAgPiBIaSBNaWtlLA0KPj4gICAg ICAgICAgICAgICAgICAgICA+DQo+PiAgICAgICAgICAgICAgICAgICAgID4gQW55IHByb2dyZXNz IHdpdGggdGhpcz8gV2Ugd291bGQgcmVhbGx5IGJlbmVmaXQNCj4+ICAgICAgICAgICAgICAgICAg ICAgZnJvbSB0aGlzIGxhbmRpbmcgaW4gdGhlIG5leHQgc3RhYmxlIHJlbGVhc2UuDQo+PiAgICAg ICAgICAgICAgICAgICAgID4NCj4+ICAgICAgICAgICAgICAgICAgICAgPiBCZXN0LA0KPj4gICAg ICAgICAgICAgICAgICAgICA+IFZpdGFseQ0KPj4gICAgICAgICAgICAgICAgICAgICA+DQo+PiAg ICAgICAgICAgICAgICAgICAgID4+IDgg0Y/QvdCyLiAyMDIwINCzLiwg0LIgMTk6MzUsIEtpbm5l eSwgTWljaGFlbCBEDQo+PiAgICAgICAgICAgICAgICAgICAgIDxtaWNoYWVsLmQua2lubmV5QGlu dGVsLmNvbQ0KPj4gICAgICAgICAgICAgICAgICAgICA8bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlA aW50ZWwuY29tPj4g0L3QsNC/0LjRgdCw0Lso0LApOg0KPj4gICAgICAgICAgICAgICAgICAgICA+ Pg0KPj4gICAgICAgICAgICAgICAgICAgICA+Pg0KPj4gICAgICAgICAgICAgICAgICAgICA+PiBI aSBWaXRhbHksDQo+PiAgICAgICAgICAgICAgICAgICAgID4+DQo+PiAgICAgICAgICAgICAgICAg ICAgID4+IFRoYW5rcyBmb3IgdGhlIGFkZGl0aW9uYWwgYmFja2dyb3VuZC4gSSB3b3VsZCBsaWtl DQo+PiAgICAgICAgICAgICAgICAgICAgID4+IGEgY291cGxlIGV4dHJhIGRheSB0byByZXZpZXcg dGhlIFBDRCBuYW1lIGFuZA0KPj4gICAgICAgICAgICAgICAgICAgICB0aGUgcGxhY2VzDQo+PiAg ICAgICAgICAgICAgICAgICAgID4+IHRoZSBQQ0QgbWlnaHQgcG90ZW50aWFsbHkgYmUgdXNlZC4N Cj4+ICAgICAgICAgICAgICAgICAgICAgPj4NCj4+ICAgICAgICAgICAgICAgICAgICAgPj4gSWYg d2UgZmluZCBvdGhlciBBUElzIHdoZXJlIEFTU0VSVCgpIGJlaGF2aW9yDQo+PiAgICAgICAgICAg ICAgICAgICAgIGlzIG9ubHkNCj4+ICAgICAgICAgICAgICAgICAgICAgPj4gdmFsdWFibGUgZHVy aW5nIGRldi9kZWJ1ZyB0byBxdWlja2x5IGlkZW50aWZ5DQo+PiAgICAgICAgICAgICAgICAgICAg IG1pc3VzZQ0KPj4gICAgICAgICAgICAgICAgICAgICA+PiB3aXRoIHRydXN0ZWQgZGF0YSBhbmQg dGhlIEFQSSBwcm92aWRlcyBwcmVkaWNhYmxlDQo+PiAgICAgICAgICAgICAgICAgICAgID4+IHJl dHVybiBiZWhhdmlvciB3aGVuIEFTU0VSVCgpIGlzIGRpc2FibGVkLCB0aGVuDQo+PiAgICAgICAg ICAgICAgICAgICAgIEkgd291bGQNCj4+ICAgICAgICAgICAgICAgICAgICAgPj4gbGlrZSB0byBo YXZlIGEgcGF0dGVybiB3ZSBjYW4gcG90ZW50aWFsbHkgYXBwbHkNCj4+ICAgICAgICAgICAgICAg ICAgICAgdG8gYWxsDQo+PiAgICAgICAgICAgICAgICAgICAgID4+IHRoZXNlIEFQSXMgYWNyb3Nz IGFsbCBwYWNrYWdlcy4NCj4+ICAgICAgICAgICAgICAgICAgICAgPj4NCj4+ICAgICAgICAgICAg ICAgICAgICAgPj4gVGhhbmtzLA0KPj4gICAgICAgICAgICAgICAgICAgICA+Pg0KPj4gICAgICAg ICAgICAgICAgICAgICA+PiBNaWtlDQo+PiAgICAgICAgICAgICAgICAgICAgID4+DQo+PiAgICAg ICAgICAgICAgICAgICAgID4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4gICAgICAg ICAgICAgICAgICAgICA+Pj4gRnJvbTpkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPj4gICAgICAgICAg ICAgICAgICAgICA8bWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvPjxkZXZlbEBlZGsyLmdyb3Vw cy5pbw0KPj4gICAgICAgICAgICAgICAgICAgICA8bWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlv Pj4gT24NCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+IEJlaGFsZiBPZiBWaXRhbHkgQ2hlcHRz b3YgdmlhIEdyb3Vwcy5Jbw0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4gU2VudDogTW9uZGF5 LCBKYW51YXJ5IDYsIDIwMjAgMTA6NDQgQU0NCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+IFRv OiBLaW5uZXksIE1pY2hhZWwgRA0KPj4gICAgICAgICAgICAgICAgICAgICA8bWljaGFlbC5kLmtp bm5leUBpbnRlbC5jb20NCj4+ICAgICAgICAgICAgICAgICAgICAgPG1haWx0bzptaWNoYWVsLmQu a2lubmV5QGludGVsLmNvbT4+DQo+PiAgICAgICAgICAgICAgICAgICAgID4+PiBDYzpkZXZlbEBl ZGsyLmdyb3Vwcy5pbw0KPj4gICAgICAgICAgICAgICAgICAgICA8bWFpbHRvOmRldmVsQGVkazIu Z3JvdXBzLmlvPg0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4gU3ViamVjdDogUmU6IFtlZGsy LWRldmVsXSBbUEFUQ0ggdjMgMC8xXSBBZGQNCj4+ICAgICAgICAgICAgICAgICAgICAgUENEIHRv DQo+PiAgICAgICAgICAgICAgICAgICAgID4+PiBkaXNhYmxlIHNhZmUgc3RyaW5nIGNvbnN0cmFp bnQgYXNzZXJ0aW9ucw0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4NCj4+ICAgICAgICAgICAg ICAgICAgICAgPj4+IEhpIE1pa2UsDQo+PiAgICAgICAgICAgICAgICAgICAgID4+Pg0KPj4gICAg ICAgICAgICAgICAgICAgICA+Pj4gWWVzLCB0aGUgcHJpbWFyeSB1c2UgY2FzZSBpcyBmb3IgVUVG SQ0KPj4gICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbnMuIFdlDQo+PiAgICAgICAgICAg ICAgICAgICAgID4+PiBkbyBub3Qgd2FudCB0byBkaXNhYmxlIEFTU0VSVOKAmXMgY29tcGxldGVs eSwgYXMNCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+IGFzc2VydGlvbnMgdGhhdCBtYWtlIHNl bnNlLCBpLmUuIHRoZSBvbmVzDQo+PiAgICAgICAgICAgICAgICAgICAgIHNpZ25hbGlzaW5nDQo+ PiAgICAgICAgICAgICAgICAgICAgID4+PiBhYm91dCBpbnRlcmZhY2UgbWlzdXNlLCBhcmUgaGVs cGZ1bCBmb3IgZGVidWdnaW5nLg0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4NCj4+ICAgICAg ICAgICAgICAgICAgICAgPj4+IEkgaGF2ZSBhbHJlYWR5IGV4cGxhaW5lZCBpbiB0aGUgQlogdGhh dA0KPj4gICAgICAgICAgICAgICAgICAgICBiYXNpY2FsbHkgYWxsDQo+PiAgICAgICAgICAgICAg ICAgICAgID4+PiBzYWZlIHN0cmluZyBjb25zdHJhaW50IGFzc2VydGlvbnMgbWFrZSBubw0KPj4g ICAgICAgICAgICAgICAgICAgICBzZW5zZSBmb3INCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+ IGhhbmRsaW5nIHVudHJ1c3RlZCBkYXRhLiBXZSBmaW5kIHRoaXMgdXNlIGNhc2UNCj4+ICAgICAg ICAgICAgICAgICAgICAgdmVyeQ0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4gbG9naWNhbCwg YXMgdGhlc2UgZnVuY3Rpb25zIGJlaGF2ZSBwcm9wZXJseSB3aXRoDQo+PiAgICAgICAgICAgICAg ICAgICAgID4+PiBhc3NlcnRpb25zIGRpc2FibGVkIGFuZCBjb3ZlciBhbGwgdGhlc2UgZXJyb3IN Cj4+ICAgICAgICAgICAgICAgICAgICAgPj4+IGNvbmRpdGlvbnMgYnkgdGhlIHJldHVybiBzdGF0 dXNlcy4gSW4gc3VjaA0KPj4gICAgICAgICAgICAgICAgICAgICBzaXR1YXRpb24gaXMNCj4+ICAg ICAgICAgICAgICAgICAgICAgPj4+IG5vdCB1c2VmdWwgZm9yIHRoZXNlIGZ1bmN0aW9ucyB0byBh c3NlcnQsIGFzDQo+PiAgICAgICAgICAgICAgICAgICAgIHdlIGVuZCB1cA0KPj4gICAgICAgICAg ICAgICAgICAgICA+Pj4gaW5lZmZpY2llbnRseSByZWltcGxlbWVudGluZyB0aGUgbG9naWMuIEkN Cj4+ICAgICAgICAgICAgICAgICAgICAgd291bGQgaGF2ZQ0KPj4gICAgICAgICAgICAgICAgICAg ICA+Pj4gbGlrZWQgdGhlIGFwcHJvYWNoIG9mIGRpc2N1c3NpbmcgdGhlIGludGVyZmFjZXMNCj4+ ICAgICAgICAgICAgICAgICAgICAgPj4+IGluZGl2aWR1YWxseSwgYnV0IEkgc3RydWdnbGUgdG8g ZmluZCBhbnkgdGhhdA0KPj4gICAgICAgICAgICAgICAgICAgICBtYWtlcw0KPj4gICAgICAgICAg ICAgICAgICAgICA+Pj4gc2Vuc2UgZnJvbSB0aGlzIHBvaW50IG9mIHZpZXcuDQo+PiAgICAgICAg ICAgICAgICAgICAgID4+Pg0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4gQXNjaWlTdHJUb0d1 aWQgd2lsbCBBU1NFUlQgd2hlbiB0aGUgbGVuZ3RoIG9mIHRoZQ0KPj4gICAgICAgICAgICAgICAg ICAgICA+Pj4gcGFzc2VkIHN0cmluZyBpcyBvZGQuIEZ1bmN0aW9ucyB0aGF0IGNhbm5vdCwgYWhl bSwNCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+IHBhcnNlLCBmb3IgdXMgYXJlIHByZXR0eSBt dWNoIHVzZWxlc3MuDQo+PiAgICAgICAgICAgICAgICAgICAgID4+PiBBc2NpaVN0ckNhdFMgd2ls bCBBU1NFUlQgd2hlbiB0aGUgYXBwZW5kZWQNCj4+ICAgICAgICAgICAgICAgICAgICAgc3RyaW5n IGRvZXMNCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+IG5vdCBmaXQgdGhlIGJ1ZmZlci4gRm9y IHVzIHRoaXMgbG9naWMgbWFrZXMgdGhpcw0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4gZnVu Y3Rpb24gcHJldHR5IG11Y2ggZXF1aXZhbGVudCB0byBkZXByZWNhdGVkDQo+PiAgICAgICAgICAg ICAgICAgICAgIGFuZCB0aHVzDQo+PiAgICAgICAgICAgICAgICAgICAgID4+PiB1bmF2YWlsYWJs ZSBBc2NpaVN0ckNhdCwgZXhjZXB0IGl0IGlzIGFsc28gc2xvd2VyLg0KPj4gICAgICAgICAgICAg ICAgICAgICA+Pj4NCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+IE15IG9yaWdpbmFsIHN1Z2dl c3Rpb24gd2FzIHRvIHJlbW92ZSB0aGUNCj4+ICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0aW9u cw0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4gZW50aXJlbHksIGJ1dCBzZXZlcmFsIHBlb3Bs ZSBoZXJlIHNhaWQgdGhhdA0KPj4gICAgICAgICAgICAgICAgICAgICB0aGV5IHVzZQ0KPj4gICAg ICAgICAgICAgICAgICAgICA+Pj4gdGhlbSB0byB2ZXJpZnkgdXNhZ2UgZXJyb3JzIHdoZW4gaGFu ZGxpbmcNCj4+ICAgICAgICAgICAgICAgICAgICAgdHJ1c3RlZCBkYXRhLg0KPj4gICAgICAgICAg ICAgICAgICAgICA+Pj4gVGhpcyBtYWtlcyBnb29kIHNlbnNlIHRvIG1lLCBzbyB3ZSBzdWdnZXN0 IHRvDQo+PiAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQNCj4+ICAgICAgICAgICAgICAgICAg ICAgPj4+IGJvdGggY2FzZXMgYnkgaW50cm9kdWNpbmcgYSBQQ0QgaW4gdGhpcyBwYXRjaC4NCj4+ ICAgICAgICAgICAgICAgICAgICAgPj4+DQo+PiAgICAgICAgICAgICAgICAgICAgID4+PiBCZXN0 IHdpc2hlcywNCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+IFZpdGFseQ0KPj4gICAgICAgICAg ICAgICAgICAgICA+Pj4NCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+PiA2INGP0L3Qsi4gMjAy MCDQsy4sINCyIDIxOjI4LCBLaW5uZXksIE1pY2hhZWwgRA0KPj4gICAgICAgICAgICAgICAgICAg ICA+Pj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tDQo+PiAgICAgICAgICAgICAgICAgICAg IDxtYWlsdG86bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+PiDQvdCw0L/QuNGB0LDQuyjQsCk6 DQo+PiAgICAgICAgICAgICAgICAgICAgID4+Pj4NCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+ Pg0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4+IEhpIFZpdGFseSwNCj4+ICAgICAgICAgICAg ICAgICAgICAgPj4+Pg0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4+IElzIHRoZSB1c2UgY2Fz ZSBmb3IgVUVGSSBBcHBsaWNhdGlvbnM/DQo+PiAgICAgICAgICAgICAgICAgICAgID4+Pj4NCj4+ ICAgICAgICAgICAgICAgICAgICAgPj4+PiBUaGVyZSBpcyBhIGRpZmZlcmVudCBtZWNoYW5pc20g dG8gZGlzYWJsZSBhbGwNCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+IEFTU0VSVCgpDQo+PiAg ICAgICAgICAgICAgICAgICAgID4+Pj4gc3RhdGVtZW50cyB3aXRoaW4gYSBVRUZJIEFwcGxpY2F0 aW9uLg0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4+DQo+PiAgICAgICAgICAgICAgICAgICAg ID4+Pj4gSWYgYSBjb21wb25lbnQgaXMgY29uc3VtaW5nIGRhdGEgZnJvbSBhbg0KPj4gICAgICAg ICAgICAgICAgICAgICB1bnRydXN0ZWQNCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+IHNvdXJj ZSwNCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+PiB0aGVuIHRoYXQgY29tcG9uZW50IGlzIHJl cXVpcmVkIHRvIHZlcmlmeSB0aGUNCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+IHVudHJ1c3Rl ZA0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4+IGRhdGEgYmVmb3JlIHBhc3NpbmcgaXQgdG8g YSBmdW5jdGlvbiB0aGF0IGNsZWFybHkNCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+IGRvY3Vt ZW50cw0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4+IGlzIGlucHV0IHJlcXVpcmVtZW50cy4g SWYgdGhpcyBhcHByb2FjaCBpcw0KPj4gICAgICAgICAgICAgICAgICAgICBmb2xsb3dlZCwNCj4+ ICAgICAgICAgICAgICAgICAgICAgPj4+IHRoZW4NCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+ PiB0aGUgQmFzZUxpYiBmdW5jdGlvbnMgY2FuIGJlIHVzZWQgImFzIGlzIiBhcw0KPj4gICAgICAg ICAgICAgICAgICAgICBsb25nIGFzDQo+PiAgICAgICAgICAgICAgICAgICAgID4+PiB0aGUNCj4+ ICAgICAgICAgICAgICAgICAgICAgPj4+PiBBU1NFUlQoKSBjb25kaXRpb25zIGFyZSB2ZXJpZmll ZCBiZWZvcmUgY2FsbGluZy4NCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+Pg0KPj4gICAgICAg ICAgICAgICAgICAgICA+Pj4+IElmIHRoZXJlIGFyZSBzb21lIEFQSXMgdGhhdCBjdXJyZW50bHkN Cj4+ICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQgdGhlaXINCj4+ICAgICAgICAgICAgICAg ICAgICAgPj4+IEFTU0VSVCgpDQo+PiAgICAgICAgICAgICAgICAgICAgID4+Pj4gYmVoYXZpb3Ig YW5kIHdlIHRoaW5rIHRoYXQgQVNTRVJUKCkgYmVoYXZpb3IgaXMNCj4+ICAgICAgICAgICAgICAg ICAgICAgPj4+IGluY29ycmVjdCBhbmQNCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+PiBzaG91 bGQgYmUgaGFuZGxlZCBieSBhbiBleGlzdGluZyBlcnJvciByZXR1cm4NCj4+ICAgICAgICAgICAg ICAgICAgICAgdmFsdWUsDQo+PiAgICAgICAgICAgICAgICAgICAgID4+PiB0aGVuIHdlDQo+PiAg ICAgICAgICAgICAgICAgICAgID4+Pj4gc2hvdWxkIGRpc2N1c3MgZWFjaCBvZiB0aG9zZSBBUElz IGluZGl2aWR1YWxseS4NCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+Pg0KPj4gICAgICAgICAg ICAgICAgICAgICA+Pj4+IE1pa2UNCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+Pg0KPj4gICAg ICAgICAgICAgICAgICAgICA+Pj4+DQo+PiAgICAgICAgICAgICAgICAgICAgID4+Pj4+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+PiAgICAgICAgICAgICAgICAgICAgID4+Pj4+IEZyb206 ZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4+ICAgICAgICAgICAgICAgICAgICAgPG1haWx0bzpkZXZl bEBlZGsyLmdyb3Vwcy5pbz48ZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4+ICAgICAgICAgICAgICAg ICAgICAgPG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbz4+IE9uDQo+PiAgICAgICAgICAgICAg ICAgICAgID4+Pj4+IEJlaGFsZiBPZiBWaXRhbHkgQ2hlcHRzb3YgdmlhIEdyb3Vwcy5Jbw0KPj4g ICAgICAgICAgICAgICAgICAgICA+Pj4+PiBTZW50OiBGcmlkYXksIEphbnVhcnkgMywgMjAyMCA5 OjEzIEFNDQo+PiAgICAgICAgICAgICAgICAgICAgID4+Pj4+IFRvOmRldmVsQGVkazIuZ3JvdXBz LmlvDQo+PiAgICAgICAgICAgICAgICAgICAgIDxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8+ DQo+PiAgICAgICAgICAgICAgICAgICAgID4+Pj4+IFN1YmplY3Q6IFtlZGsyLWRldmVsXSBbUEFU Q0ggdjMgMC8xXSBBZGQgUENEIHRvDQo+PiAgICAgICAgICAgICAgICAgICAgID4+PiBkaXNhYmxl DQo+PiAgICAgICAgICAgICAgICAgICAgID4+Pj4+IHNhZmUgc3RyaW5nIGNvbnN0cmFpbnQgYXNz ZXJ0aW9ucw0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4+Pg0KPj4gICAgICAgICAgICAgICAg ICAgICA+Pj4+PiBSRUY6DQo+PiAgICAgICAgICAgICAgICAgICAgID4+Pj4+aHR0cHM6Ly9idWd6 aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU0DQo+PiAgICAgICAgICAgICAg ICAgICAgID4+Pj4+DQo+PiAgICAgICAgICAgICAgICAgICAgID4+Pj4+IFJlcXVlc3RpbmcgZm9y IG1lcmdlIGluIGVkazItc3RhYmxlMjAyMDAyLg0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4+ Pg0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4+PiBDaGFuZ2VzIHNpbmNlIFYxOg0KPj4gICAg ICAgICAgICAgICAgICAgICA+Pj4+PiAtIEVuYWJsZSBhc3NlcnRpb25zIGJ5IGRlZmF1bHQgdG8g cHJlc2VydmUgdGhlDQo+PiAgICAgICAgICAgICAgICAgICAgID4+PiBvcmlnaW5hbA0KPj4gICAg ICAgICAgICAgICAgICAgICA+Pj4+PiBiZWhhdmlvdXINCj4+ICAgICAgICAgICAgICAgICAgICAg Pj4+Pj4gLSBGaXggYnVnemlsbGEgcmVmZXJlbmNlIGxpbmsNCj4+ICAgICAgICAgICAgICAgICAg ICAgPj4+Pj4gLSBVcGRhdGUgZG9jdW1lbnRhdGlvbiBpbiBCYXNlTGliLmgNCj4+ICAgICAgICAg ICAgICAgICAgICAgPj4+Pj4NCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+Pj4gVml0YWx5IENo ZXB0c292ICgxKToNCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+Pj4gTWRlUGtnOiBBZGQgUENE IHRvIGRpc2FibGUgc2FmZSBzdHJpbmcNCj4+ICAgICAgICAgICAgICAgICAgICAgY29uc3RyYWlu dA0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4+PiBhc3NlcnRpb25zDQo+PiAgICAgICAgICAg ICAgICAgICAgID4+Pj4+DQo+PiAgICAgICAgICAgICAgICAgICAgID4+Pj4+IE1kZVBrZy9NZGVQ a2cuZGVjIHwgNiArKw0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4+PiBNZGVQa2cvTGlicmFy eS9CYXNlTGliL0Jhc2VMaWIuaW5mIHwgMTEgKy0tDQo+PiAgICAgICAgICAgICAgICAgICAgID4+ Pj4+IE1kZVBrZy9JbmNsdWRlL0xpYnJhcnkvQmFzZUxpYi5oIHwgNzQNCj4+ICAgICAgICAgICAg ICAgICAgICAgPj4+Pj4gKysrKysrKysrKysrKy0tLS0tLS0NCj4+ICAgICAgICAgICAgICAgICAg ICAgPj4+Pj4gTWRlUGtnL0xpYnJhcnkvQmFzZUxpYi9TYWZlU3RyaW5nLmMgfCA0ICstDQo+PiAg ICAgICAgICAgICAgICAgICAgID4+Pj4+IE1kZVBrZy9NZGVQa2cudW5pIHwgNiArKw0KPj4gICAg ICAgICAgICAgICAgICAgICA+Pj4+PiA1IGZpbGVzIGNoYW5nZWQsIDcxIGluc2VydGlvbnMoKyks IDMwDQo+PiAgICAgICAgICAgICAgICAgICAgIGRlbGV0aW9ucygtKQ0KPj4gICAgICAgICAgICAg ICAgICAgICA+Pj4+Pg0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4+PiAtLQ0KPj4gICAgICAg ICAgICAgICAgICAgICA+Pj4+PiAyLjIxLjAgKEFwcGxlIEdpdC0xMjIuMikNCj4+ICAgICAgICAg ICAgICAgICAgICAgPj4+Pj4NCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+Pj4NCj4+ICAgICAg ICAgICAgICAgICAgICAgPj4+Pj4gLT0tPS09LT0tPS09DQo+PiAgICAgICAgICAgICAgICAgICAg ID4+Pj4+R3JvdXBzLmlvIDxodHRwOi8vZ3JvdXBzLmlvLz5MaW5rczogWW91DQo+PiAgICAgICAg ICAgICAgICAgICAgIHJlY2VpdmUgYWxsIG1lc3NhZ2VzIHNlbnQgdG8NCj4+ICAgICAgICAgICAg ICAgICAgICAgPj4+IHRoaXMNCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+Pj4gZ3JvdXAuDQo+ PiAgICAgICAgICAgICAgICAgICAgID4+Pj4+DQo+PiAgICAgICAgICAgICAgICAgICAgID4+Pj4+ IFZpZXcvUmVwbHkgT25saW5lICgjNTI4MzcpOg0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4+ Pmh0dHBzOi8vZWRrMi5ncm91cHMuaW8vZy9kZXZlbC9tZXNzYWdlLzUyODM3DQo+PiAgICAgICAg ICAgICAgICAgICAgID4+Pj4+IE11dGUgVGhpcyBUb3BpYzoNCj4+ICAgICAgICAgICAgICAgICAg ICAgPj4+aHR0cHM6Ly9ncm91cHMuaW8vbXQvNjk0MDE5NDgvMTY0MzQ5Ng0KPj4gICAgICAgICAg ICAgICAgICAgICA+Pj4+PiBHcm91cCBPd25lcjpkZXZlbCtvd25lckBlZGsyLmdyb3Vwcy5pbw0K Pj4gICAgICAgICAgICAgICAgICAgICA8bWFpbHRvOmRldmVsK293bmVyQGVkazIuZ3JvdXBzLmlv Pg0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4+PiBVbnN1YnNjcmliZTpodHRwczovL2VkazIu Z3JvdXBzLmlvL2cvZGV2ZWwvdW5zdWINCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+Pj4gW21p Y2hhZWwuZC5raW5uZXlAaW50ZWwuY29tDQo+PiAgICAgICAgICAgICAgICAgICAgIDxtYWlsdG86 bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+XQ0KPj4gICAgICAgICAgICAgICAgICAgICA+Pj4+ PiAtPS09LT0tPS09LT0NCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+Pg0KPj4gICAgICAgICAg ICAgICAgICAgICA+Pj4NCj4+ICAgICAgICAgICAgICAgICAgICAgPj4+DQo+PiAgICAgICAgICAg ICAgICAgICAgID4+Pg0KPj4gICAgICAgICAgICAgICAgICAgICA+Pg0KPj4gICAgICAgICAgICAg ICAgICAgICA+DQo+Pg0KPiANCj4gDQo=