From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [45.144.208.40]) by lore.proxmox.com (Postfix) with ESMTPS id 59E9A1FF0B3 for ; Wed, 14 Oct 2026 15:12:34 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 5C4272145C; Wed, 14 Oct 2026 15:12:32 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eRmMt5gFaBy/m0R5WiEcaJfIxtiXGcxc1M1d6woz9L7TkzlYe8k4qvICjOtX5mfv7DbfIMnAyUm2DbEKThl+jU+mu9oP4Xw6WBKdVLuL/QdME8MNjlU3T0Oota+bpBIoqSDgvacCiPhJIijss5jjpC0HRHgEunRGm5MpjU3iZHimf+VyKxSOaZzUpRnwMLOVy47L+JM4eOjX+haMWmgAs0j5jONvQOGJh2uH2sg7QbkK8DlFUxhT4vXq1eTy3LR2KWOkU87MebFcxoZkCIGPkYx1p6naL/zgb4ONqspYkV58lFdWgDKCAEULHFboX8CjaHay8LooWVSB/28128LxTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=XUNOEvG/cQg0XxWlWlOXswkVgiBIFiVD8KnTTK/e8wQ=; b=xWV5usKSZ9KSMbTVdnsUmXxTAwxwCrDWwmW4rYbrRYPp4wSZkdLzT7KqZ8iKyR8vaIEUGEbXnqvt6XCbbY+enoNcwimLBjWRXqQJYYcE4Q/HaZWecE5JkOio5veWClcT4aIcxl/deVfNKrYO5xB2VmiRK1cvT5GkLfgoQ9EXnwI18jZ+uW+u9U5coDUGQgSVAygp5ruLLFVikCO8B8Wk77FBFZM9DoGXE1uySuVeOFbaJ597pmmMC3XBreGfcKwJqPUPEVpnRaBsqe2ierC72h5fc9nqafij8M2ntLPCL0HWMNTjm5lD00cFrV5kaSUfrMg0AzqjnOALcAdl16WCQw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=groupe-cyllene.com; dmarc=pass action=none header.from=groupe-cyllene.com; dkim=pass header.d=groupe-cyllene.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=groupecyllene.onmicrosoft.com; s=selector2-groupecyllene-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XUNOEvG/cQg0XxWlWlOXswkVgiBIFiVD8KnTTK/e8wQ=; b=LS4lNwiXRkiBkW2UYThFHr191eta9vMEiLURphsI5uAQ8CHdmWFncMXFB4zEN/N9KB95vr6vr1Hj9gHveZqyLGnwQkPhaquyqoIASAXBUvl9ORLChMa8xvEp9/MIQR8EEITJBBdDt1JLqivjsAIeIIercCDZwPuAq9s+Xui92+s= From: "DERUMIER, Alexandre" To: "pve-devel@lists.proxmox.com" , "rdmitry0911@gmail.com" Subject: Re: [RFC] WebRTC console for VMs via QEMU's D-Bus display Thread-Topic: [RFC] WebRTC console for VMs via QEMU's D-Bus display Thread-Index: AQHdVXBGRf4eiR7QAEqLeEZZz5ArJ7byIEeAgArwHwA= Date: Wed, 14 Oct 2026 13:12:19 +0000 Message-ID: <30bceb85ccdffaa64be2221199f7193cb9699a01.camel@groupe-cyllene.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.60.2 authentication-results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=groupe-cyllene.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PAZSPR01MB0011:EE_|PATP264MB7508:EE_ x-ms-office365-filtering-correlation-id: c453efe8-a46d-4564-a188-08df29f4c6be x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|23010399003|376014|10070799003|1800799024|366016|6133799003|10067099003|18002099003|22082099003|3023799007|38070700021|5023799004|261009223327099003|261009223027099003|261009220027099003|261009221727099003|261009221227099003|56012099006; x-microsoft-antispam-message-info: Ek5ZtZPYXElcXTAQS5qOaB8WHtxYOfxugRSx3oEx4L647N/NnPDkcJqr+1whrd/0PZiZY8/22SGKWp3mp0AkaBi/f+3vrv0+ly68hrOFx986lFDM/T6oVPNQTu10CwHMaDTfeyWJqIEccTWFQ+d/Sasp70r08PieLg1hsjRptwflx9k1YtGreEzx5jNmZ0uDuesVT9UI8rzZpN/7k0L7JZIovVDLJE/UUsJxPZsXOp2WCoK000FQrCSrZb6QOKvLwACeW3Zlk72tknPLeCbNwHQ2rST5VY0zUvYZZCu8caE3RdpFbynL46KqNqH+2XGHRKwBcBo+xyLwVsyMzyQgTtENyojs7V96C5ZYpnxKLUXxLidVzx0gL1I7Hrhitd+g7MRmI9wjvcyMEMyqQbVYwbn41MwV/D8yko1cqVa0UYOmLxAXdd2hKMr7oqerCidjn7rIgM8UKW50a9HAmZbPOgZiTlJpJL5Xpg+DXA+LCftReXI/xVBht8D00HCcI3lkIb/+zmEGJ2ynzSBVSRMpEbUqohD1zaonS5sdOpJQnYzCHnDetyVYFIPbwbtG9fYQYwEiPIIbq5gB1Ruuj2I5yItG7nnuYk5XJDe8diJkcV4JiCJ0PfKRRj4ftuK2jkJ7AXSiAimmiRLVq9gOcxs+vh+WMjk+rQTU69O9C1j9WBI= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAZSPR01MB0011.FRAP264.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(376014)(10070799003)(1800799024)(366016)(6133799003)(10067099003)(18002099003)(22082099003)(3023799007)(38070700021)(5023799004)(261009223327099003)(261009223027099003)(261009220027099003)(261009221727099003)(261009221227099003)(56012099006);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 2 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?TjYxd1dUVy9NbS9RalhWQzZNbGNUWVNKNjB0ZHU4dUNTTkYvcm1oNE92QmR0?= =?utf-8?B?WEFNMlBrNkwwZVBLaXJtTXNkeGZ0RzFabU13ckN6M1lYWEg4akM3QjR2VG5q?= =?utf-8?B?R0wzU3N2NTBiY0lHZmtiaC9TN0VwWWNUUzlldVFlT1BENExQZUEyeFU3QmZB?= =?utf-8?B?SVQ0dTRvSVlVRVhMeXhiRWpvcFB5ZjRyenU3Q000eDhGQlBtVHR6dDVxRzBW?= =?utf-8?B?S1BsSFZXMzFCcmgrT2ZZd0NhQ0JQQ3l0RnV2ODVCbjNSVDhkOHAxUXpvRDUy?= =?utf-8?B?dUlDN0pPVUNOaWZhc1QyNHJXSi96c3RTTkdZeDdFSm5YT21INi9RRTZRTFlJ?= =?utf-8?B?OVJVaHc2Z3JaWEpqNENuZzM0MWhrMUVWVi9sY0UxVWxKdVlHZWFSU3pKM0t0?= =?utf-8?B?MmRIVzJmWHpKMXhzd2ZoU1pWQUxhdnByOVlCOWtTTGlVMFVUM2pjVURjaXEw?= =?utf-8?B?V2FOci9ncWNraVFrR0dTUmRCeG5GY0RWRVRqR0tDOC9tVUI4ZnJMYnY2ZVdi?= =?utf-8?B?RGp5aE1IeG9FWXMxV0hnYkVCL2Vzdkdma2p3N0Zxb2FBNllxQjNxS0VoUnlS?= =?utf-8?B?dVNNQXl2akRvQXZMNHM1Z3BWcmlmdWJML3dMcmhnRUs3c2Y4MGszZEJxdzFG?= =?utf-8?B?YXluMTBjbHB5YWNxN29JZ3BmSWpGNkVmdlNiVkV3UzdZVVVWSUhtMGlrUk1q?= =?utf-8?B?NS9NQmh3d2J4dHNvVloxb3NCZGN6Sm1paXBncERLZmE2dFVrZTRWQldrVTVG?= =?utf-8?B?ejAya09NZkJWcGhHcWtZYUp6OVg0dlJ0c0FBNVpNR3QyNzJVd0Z0ZHBaNkZz?= =?utf-8?B?SEJiOFFnenZOdU45bzAxN1RCOEs5ck5JVFc5SG9SZ1V3Wmt0bUVnMHZBTjI4?= =?utf-8?B?ZjFwRllnK0p6ZWtSRUgyaVB4QzJrL280bE84NVp4cWYwMGxUbVRma3M1eCt5?= =?utf-8?B?WjRrV1pOalZiQ1MwZ2tTS1lHWTh4bWluRGN4UWFsbG8xbDhTMmJUbFRqSkxY?= =?utf-8?B?TmtjaHJzSkNuZE90N0x0TjdpRUduc09tWnptSm1kNm5OVGY0dmFhc3hFa0pS?= =?utf-8?B?a1NNYnVpRTIrR1JkQ3VhcFF0M3VKL3Vqdmhaa1pmSHFTVVN2R0lCOWhBN3FY?= =?utf-8?B?QVd5VEZ4K1RwdWxRbWIxWFFDREUweHNzWmkxbnpHSHpFQmdXZ25YNm4ydjNJ?= =?utf-8?B?K3czVzNmLzZZQlNGK3JkUkJNVkpWTGlaaUhrcmpRWGp0anVzeC84VHV0blhs?= =?utf-8?B?bkNTZW0rUWZuOHhOckZYQS9Tcjl6blRwNUd5cnVnbjNoWjltOVVZQWt5eVBE?= =?utf-8?B?RDl0VFBEVUxCL1BzZ0p3RldueElscUdodmMxR3dMMFlFMitCbllMU1JZaUlj?= =?utf-8?B?YzdtM1RYaVUyWnVWbzNmZldvNzRQbHRyYW8zM2QrLzFEbUZBakxaamNjNzJX?= =?utf-8?B?NENKSGlnL0VmamdLeklrakdreFgvUHVPSG5LWStTODdWTElaS09GdktSWVdB?= =?utf-8?B?TG1Pa29oQ2dUaFp6bEdIbnlxV0tRQU50VFFrZFhkL3Q0d0lYSTA5UXBlQXo4?= =?utf-8?B?T0k2aTdaL3Y2YUNONXFjNzFYQStweTVJU3BSWlhnMklxaU1JMWUzYkpLSW9x?= =?utf-8?B?YVpvcG9yZjFzVUxwakpvbjdYdE56N1VBS2xZNVdVVUt3aGcvVkdzOER0Wndz?= =?utf-8?B?SzN4a3VSZHpnTVVTUFZMUkFMVjdtT095RzAzVkhleDhqRHZMdGZOYkRKanVl?= =?utf-8?B?ck9PUTdyczZHdVVZMWl5bCtDOVJTcEV2VnZWWjhqdlM3cmRWbjhCSjN3dHhn?= =?utf-8?B?cFN3dGlPdE51K01udGxTdGVmSHdGVXVjZWpXeGtHdGNsdzREMGNJQ1VZT3R3?= =?utf-8?B?MlpJOUptbjQzTm9palYwNDBDMnRyaElPZ29ZTUdOR0JWY1BrVnlwbCtCVHlF?= =?utf-8?B?N2hpY3I1L1BWblBud0ZWNklvWmZlOFFZc3R0SUQ0SllRZTBkUzVrQVZnaGhV?= =?utf-8?B?a0d6bVBXMEdTOC84RnV6bnZ6NlVneUVQTzUyajk4NGpxTlpBa1kxT284dHZa?= =?utf-8?B?NWJVUWR0Tk5sc0N0SlVOTi9ORmd2MGNyNDN2dmRubWdQSXZjNzdJRkxacExB?= =?utf-8?B?QTBGcEg3WWV6YkxXVGV3QnZPUTZUa3RCcE9uZzZ4cFBvLzhON0crQTNtMHVR?= =?utf-8?B?Q3R6bUsxdWxKVkVnOS85Qi9iUDZGZEVmVnhrUkpwa21LRHhjVTNSTWVHMWJo?= =?utf-8?B?ZytLVERBUG5qcUNSbnFvbFF2SVI5THNZd2h5MG1tcUFMZmN1eVNSYlBScmk2?= =?utf-8?B?V3pnU01oTTVhK1BwSzBYMW5lOWpCb2dLNTRRcVl0bkhLZVozd21YZEUwaHhh?= =?utf-8?Q?+0EO409fdmKRxR3Lvnw2lQ6VVjL4M0eV/MXN+PSxzxlxr?= x-ms-exchange-antispam-messagedata-1: jgb2sX2GixpBnw== Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: groupe-cyllene.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PAZSPR01MB0011.FRAP264.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: c453efe8-a46d-4564-a188-08df29f4c6be X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Oct 2026 13:12:19.3027 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: ee11ccf7-112c-4284-848b-f229745e715b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 6qGrMj9fowVi312y44A7c0pMQ7w1scPl/Rv+h2QTrPFVi8X2pUWFSXnQzCWO4j/WPVxd6VeNQgsQsmwJVDmYDHWH52cPnM1AD8QWwMQJeJ6yjIm8LMephcsSDR3VBBZZ X-MS-Exchange-Transport-CrossTenantHeadersStamped: PATP264MB7508 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.121 Adjusted score from AWL reputation of From: address DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DMARC_PASS -0.1 DMARC pass policy POISEN_SPAM_PILL 0.1 Meta: its spam POISEN_SPAM_PILL_1 0.1 random spam to be learned in bayes POISEN_SPAM_PILL_3 0.1 random spam to be learned in bayes RCVD_IN_DNSWL_NONE -0.0001 Sender listed at https://www.dnswl.org/, no trust SPF_HELO_PASS -0.001 SPF: HELO matches SPF record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: D3VWQ3ZDFWAZKU5JP2LQAQBCEIMRH6QH X-Message-ID-Hash: D3VWQ3ZDFWAZKU5JP2LQAQBCEIMRH6QH X-MailFrom: alexandre.derumier@groupe-cyllene.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: SGkgRG1pdHJ5LA0KDQpUaGFua3MgZm9yIHRlc3Rpbmcgb24gbnZpZGlhLCBJIGRpZG4ndCBoYXZl IGhhcmR3YXJlIHRvIHRlc3QgaXQuDQoNCkZlZWwgZnJlZSB0byByZXdvcmsgbXkgcGF0Y2hlcywg SSB3YXMgd2FpdGluZyBmcm9tIHByb3htb3ggZGV2cyByZXZpZXcNCiYmIGNvbW1lbnRzIGJlZm9y ZSBkb2luZyBtb3JlIHdvcmsuDQoNCkkgd2FzIHdhaXRpbmcgZm9yIHRoZSBtZXJnZSBvZiB0aGlz IHBhdGNoIHRvbzoNCg0KIFtQQVRDSCBxZW11LXNlcnZlci9wdmUtbWFuYWdlci9kb2NzIHY0IDAv MV0gYWRkIHZpcnRpby12Z2EtZ2wgT3BlbkdMDQo0LjYgJiBWdWxrYW4gKHZlbnVzKSBzdXBwb3J0 DQpodHRwczovL2xvcmUucHJveG1veC5jb20vYWxsLzIwMjYwODMxMDk0NjA1LjExNDM5Ni0xLW0u ZnJhbmtAcHJveG1veC5jb20vDQoNCnRvIHJlYmFzZSBteSBzZXJpZS4NCg0KSSdsbCBiZSBwcmV0 dHkgYnVzeSBhdCB3b3JrIHVudGlsIG5leHQgbW9udGgsIHNvIEknbGwgZG9uJ3QgaGF2ZSB0b28N Cm11Y2ggdGltZSB0byB3b3JrIG9uIGl0Lg0KDQpidXQgSSdtIGdsYWQgdGhhdCBzb21lYm9keSBp cyBpbnRlcmVzdGVkIGJ5IG1lIHBhdGNoIHNlcmllIDopDQoNCkJlc3QgUmVnYXJkcywNCg0KQWxl eGFuZHJlDQoNCg0KDQpMZSBtZXJjcmVkaSAwNyBvY3RvYnJlIDIwMjYgw6AgMTc6MTAgKzAzMDAs IERtaXRyeSBSIGEgw6ljcml0wqA6DQo+IA0KPiBIaSBhbGwsIGhpIEFsZXhhbmRyZSwNCj4gwqAN Cj4gb25seSBhZnRlciBzZW5kaW5nIHRoaXMgUkZDIEkgbm90aWNlZCB0aGF0IEFsZXhhbmRyZSBw b3N0ZWQgImFkZCByZHANCj4gJiYga3liZXIgY29uc29sZXMgZm9yIHFlbXUgb3ZlciBELUJ1cyBk aXNwbGF5IiBpbiBBdWd1c3QgWzFdLiBCb3RoDQo+IHByb3Bvc2FscyBuZWVkIHRoZSBzYW1lIGZv dW5kYXRpb24gaW4gcWVtdS1zZXJ2ZXIgLS0gUUVNVSdzIEQtQnVzDQo+IGRpc3BsYXkgLS0gYW5k IGRpZmZlciBpbiB3aGF0IGNvbnN1bWVzIGl0LiBSYXRoZXIgdGhhbiB0d28gY29tcGV0aW5nDQo+ IHdheXMgdG8gZW5hYmxlIGl0LCBJIHdvdWxkIHN1Z2dlc3Qgb25lIHNoYXJlZCBiYXNlIHdpdGgg dGhlIGNvbnNvbGVzDQo+IG9uIHRvcC4gV2hhdCB0aGUgdHdvIHNlcmllcyBoYXZlIGluIGNvbW1v bjoNCj4gwqAqICBxZW11LXNlcnZlciBlbmFibGVzICctZGlzcGxheSBkYnVzJyBmb3IgYSBWTSwg YW5kIGEgc2VwYXJhdGUNCj4gcGFja2FnZSBhdHRhY2hlcyB0byBpdCBhbmQgc3RyZWFtcyB0aGUg Z3Vlc3QgdG8gdGhlIGJyb3dzZXIgKFJEUCBhbmQNCj4gS3liZXIgZGFlbW9ucyB0aGVyZSwgYSBX ZWJSVEMgbWVkaWEgc2VydmljZSBoZXJlKTsNCj4gwqAqICB3aXRoIEdMLCBRRU1VIHJlZnVzZXMg Vk5DIGFuZCBTUElDRSBuZXh0IHRvIHRoZSBELUJ1cyBkaXNwbGF5LCBzbw0KPiBib3RoIGhhdmUg dG8gZGVhbCB3aXRoIGEgVk0gdGhhdCBoYXMgbm8gVk5DIGNvbnNvbGUuIFdoZXJlIHRoZXkNCj4g ZGlmZmVyLCBhbmQgd2h5IEkgdGhpbmsgQWxleGFuZHJlJ3MgYmFzZSBpcyB0aGUgYmV0dGVyIG9u ZToNCj4gwqAqICBIaXMgc2VyaWVzIHJ1bnMgYSBwcml2YXRlIGRidXMtZGFlbW9uIHBlciBWTTsg bWluZSB1c2VzIHAycD15ZXMNCj4gYW5kIGF0dGFjaGVzIGV2ZXJ5IGNvbnNvbGUgd2l0aCBnZXRm ZCArIGFkZF9jbGllbnQuDQo+IMKgKiAgV2l0aCBwMnA9eWVzLCBlYWNoIGFkZF9jbGllbnQgcmVw bGFjZXMgdGhlIHByZXZpb3VzIGNvbm5lY3Rpb24sDQo+IHNvIG9ubHkgb25lIGNvbnN1bWVyIGNh biBiZSBhdHRhY2hlZCBhdCBhIHRpbWUuIE9uIGEgYnVzLCBSRFAsIEt5YmVyDQo+IGFuZCBXZWJS VEMgY2FuIGF0dGFjaCB0byB0aGUgc2FtZSBWTSBzaWRlIGJ5IHNpZGUuDQo+IMKgKiAgV2l0aCBw MnA9eWVzLCBRRU1VIDExLjAgZGlkIG5vdCBkZWxpdmVyIGF1ZGlvIGluIG15IHRlc3RzOiB0aGUN Cj4gQXVkaW9PdXRMaXN0ZW5lciBnZXRzIHRoZSBJbml0L1NldEVuYWJsZWQgY2FsbHMgbWFkZSB3 aGlsZQ0KPiBSZWdpc3Rlck91dExpc3RlbmVyIHJ1bnMsIHRoZW4gbm90aGluZyAodGhlIHNhbWUg d2l0aCBhIHBsYWluIEdEQnVzDQo+IGNsaWVudCwgc28gaXQgZG9lcyBub3QgbG9vayBsaWtlIGEg cHJvYmxlbSBvZiBteSBsaXN0ZW5lcikuIE9uIGENCj4gcHJpdmF0ZSBidXMsIHdoaWNoIG15IGFk ZC1vbiB1c2VzIHRvZGF5LCBib3RoIHBsYXliYWNrIGFuZCB0aGUNCj4gbWljcm9waG9uZSAoQXVk aW9Jbkxpc3RlbmVyKSB3b3JrLg0KPiBBIHBvc3NpYmxlIHNwbGl0Og0KPiDCoMKgwqAxLiAgcWVt dS1zZXJ2ZXI6IHRoZSBwZXItVk0gRC1CdXMgZGlzcGxheSAoQWxleGFuZHJlJ3MNCj4gREJ1c0Rp c3BsYXkucG0pLCB0aGUgb3B0aW9uIHRoYXQgZW5hYmxlcyBpdCwgJ3JlbmRlcm5vZGUnIGZvciB2 aXJ0aW8tDQo+IGdsIChidWcgIzQ3NzEpIGFuZCBhICdkYnVzJyBkcml2ZXIgZm9yIGF1ZGlvMC4N Cj4gwqDCoMKgMi4gIE9uZSBwYWNrYWdlIHBlciBjb25zb2xlLCBlYWNoIGF0dGFjaGluZyBhcyBh IGNsaWVudCBvbiB0aGF0DQo+IGJ1czogUkRQIGFuZCBLeWJlciAoQWxleGFuZHJlKSwgV2ViUlRD IChtaW5lLCBidWcgIzgxMDYpLCB3aXRoIHRoZWlyDQo+IEFQSSBjYWxscyBhbmQgVUkgZW50cmll cyBpbiBxZW11LXNlcnZlciBhbmQgcHZlLW1hbmFnZXIuDQo+IMKgDQo+IEkgYW0gaGFwcHkgdG8g cmViYXNlIHRoZSBXZWJSVEMgcGFydCBvbnRvIEFsZXhhbmRyZSdzIERCdXNEaXNwbGF5LnBtDQo+ IGFuZCBkcm9wIG15IHAycCBhdHRhY2ggYW5kIHRoZSBzZXBhcmF0ZSAnZGJ1cycgVkdBIGZsYWcu IEFsZXhhbmRyZQ0KPiB3cm90ZSB0aGF0IHRoZSBETUEtQlVGIHBhdGggaXMgdW50ZXN0ZWQgb24g TlZJRElBLCBzbyBJIHRyaWVkIGl0IG9uDQo+IGFuIFJUWCAzMDgwIChkcml2ZXIgNTk1LjkxLCBu dmlkaWEtdmFhcGktZHJpdmVyIDAuMC4xNiwgUUVNVSAxMS4wLCBhDQo+IHZpcnRpby12Z2EtZ2wg Z3Vlc3Qgb24gYSBwcml2YXRlIHBlci1WTSBidXM7IGt5YmVyLXFlbXUtc2VydmVyIGFuZA0KPiB0 eHByb3RvIGJ1aWx0IGZyb20gdGhlIHYyIHBhdGNoIGFnYWluc3QgRGViaWFuIHRyaXhpZSdzIEZG bXBlZyA3LjEsDQo+IGVuY29kaW5nIHRvIGEgZmlsZSk6DQo+IMKgDQo+IC0gLS1kbWFidWYgKGgy NjRfdmFhcGkpOiBRRU1VIGhhbmRzIG92ZXIgdGhlIHNjYW5vdXQgKFhCMjQvQUIyNCB3aXRoDQo+ IHRoZSBOVklESUEgYmxvY2stbGluZWFyIG1vZGlmaWVyIDB4MzAwMDAwMDAwZTA4MDE0KSwgYnV0 IHRoZSBWQUFQSQ0KPiBmcmFtZXMgY29udGV4dCBmYWlscyBvbiB0aGUgZmlyc3QgZnJhbWUgLS0g IkZhaWxlZCB0byBjcmVhdGUgc3VyZmFjZToNCj4gMTQgKHRoZSByZXF1ZXN0ZWQgUlQgRm9ybWF0 IGlzIG5vdCBzdXBwb3J0ZWQpIiAtLSBhbmQgbm90aGluZyBpcw0KPiBlbmNvZGVkLiBXaXRoIC0t ZW5jb2RlciBoMjY0X252ZW5jIGl0IGVuZHMgdGhlIHNhbWUgd2F5LCBzaW5jZSB0aGUNCj4gcGF0 aCBnb2VzIHRocm91Z2ggVkFBUEkgd2hhdGV2ZXIgdGhlIGVuY29kZXIuDQo+IC0gVGhlIGNhdXNl IGlzIHRoZSBkcml2ZXI6IG9uIE5WSURJQSwgVkFBUEkgbWVhbnMgbnZpZGlhLXZhYXBpLQ0KPiBk cml2ZXIsIHdoaWNoIG9ubHkgZGVjb2RlcyAoVkFFbnRyeXBvaW50VkxEKTogbm8gZW5jb2Rpbmcs IG5vIHZpZGVvDQo+IHByb2Nlc3NpbmcsIG5vIFJHQiBzdXJmYWNlcy4gVGhlIG1tYXAgZmFsbGJh Y2sgd291bGQgbm90IGhlbHAgZWl0aGVyLA0KPiBhcyBhIGJsb2NrLWxpbmVhciBidWZmZXIgZG9l cyBub3QgcmVhZCBhcyBsaW5lYXIgbWVtb3J5Lg0KPiAtIFdpdGhvdXQgLS1kbWFidWYsIHRoZSBs aXN0ZW5lciByZWNlaXZlZCBubyBzY2Fub3V0IGF0IGFsbCBmcm9tIHRoZQ0KPiBHTCBkaXNwbGF5 IHdpdGhpbiAxNSBzIChsaWJ4MjY0IGFuZCBoMjY0X252ZW5jIGFsaWtlKS4NCj4gLSBDb250cm9s IG9uIHRoZSBzYW1lIFZNOiBteSB3b3JrZXIgaW1wb3J0cyB0aGUgc2FtZSBETUEtQlVGIHdpdGgg RUdMDQo+IChlZ2xDcmVhdGVJbWFnZUtIUiwgRUdMX0xJTlVYX0RNQV9CVUZfRVhUIHdpdGggdGhl IG1vZGlmaWVyKSwgcmVhZHMNCj4gaXQgYmFjayB3aXRoIGdsUmVhZFBpeGVscyBhbmQgZW5jb2Rl cyBpdCB3aXRoIE5WRU5DIC0tIHRoYXQgd29ya3MuIFNvDQo+IHdpdGggYSB2aXJ0aW8tZ2wgZ3Vl c3Qgb24gTlZJRElBLCB0aGUgS3liZXIgY29uc29sZSBzaG93cyBubyBwaWN0dXJlDQo+IHRvZGF5 Lg0KPiDCoA0KPiBBIGZpeCwgdGVzdGVkIFsyXTogYSBwYXRjaCBvbiB0b3Agb2YgdjIgYWRkcyAt LWRtYWJ1Zi1yZWFkYmFjayB0bw0KPiBreWJlci1xZW11LXNlcnZlciAoMzU4IGxpbmVzLCBtb3N0 bHkgb25lIG5ldyBmaWxlLCBMR1BMIGxpa2UNCj4gZG1hYnVmLmMpLiBJdCBzdGlsbCByZXF1ZXN0 cyBETUEtQlVGIHNjYW5vdXRzLCBpbXBvcnRzIGVhY2ggYnVmZmVyDQo+IHdpdGggRUdMIChHQk0g cGxhdGZvcm0sIHN1cmZhY2VsZXNzIGNvbnRleHQsIHRoZSBtb2RpZmllciBwYXNzZWQpLA0KPiBy ZWFkcyBpdCBiYWNrIHdpdGggZ2xSZWFkUGl4ZWxzIGFuZCBmZWVkcyB5b3VyIGV4aXN0aW5nIHNv ZnR3YXJlDQo+IHBhdGgsIHNvIGFueSAtLWVuY29kZXIgd29ya3MgLS0gaDI2NF9udmVuYyBvbiBO VklESUEuIEEgYnVmZmVyIGlzDQo+IGltcG9ydGVkIG9uY2UgYW5kIHJlYWQgb25seSBhZnRlciBR RU1VIHJlcG9ydHMgZGFtYWdlLiBTYW1lIHNldHVwLCBhDQo+IHRlcm1pbmFsIHJ1bm5pbmcgJ3Rv cCAtZCAwLjEnIGZvciAyMCBzOiAxMjI2IGZyYW1lcyBlbmNvZGVkIHdpdGgNCj4gaDI2NF9udmVu YywNCj4gMCBkcm9wcGVkLCB0aGUgcGljdHVyZSBjb3JyZWN0OyBhYm91dCAyNCUgb2Ygb25lIENQ VSBjb3JlICgzNiUgd2l0aA0KPiBsaWJ4MjY0KS4gVGhlIC0tZG1hYnVmIHBhdGggaXMgdW5jaGFu Z2VkOyBreWNvbnRyb2xsZXIgY291bGQgY2hvb3NlDQo+ICctLWRtYWJ1Zi1yZWFkYmFjayAtLWVu Y29kZXIgaDI2NF9udmVuYycgd2hlbiB0aGUgcmVuZGVyIG5vZGUgYmVsb25ncw0KPiB0byB0aGUg bnZpZGlhIGRyaXZlci4NCj4gwqANCj4gVG8gYmUgZmFpciBhYm91dCB0aGUgdHJhZGUtb2ZmOiB0 aGUgcmVhZGJhY2sgY29waWVzIGV2ZXJ5IGNoYW5nZWQNCj4gZnJhbWUgaW50byBzeXN0ZW0gbWVt b3J5LCBzbyBvbiBBTUQgYW5kIEludGVsIHlvdXIgemVyby1jb3B5IFZBQVBJDQo+IHBhdGggaXMg bGlrZWx5IHRoZSBtb3JlIGVmZmljaWVudCBvbmUuIFRoZSBiZXN0IG9mIGJvdGggd291bGQgYmUN Cj4gemVyby1jb3B5IHdoZXJlIFZBQVBJIGNhbiBpbXBvcnQgYW5kIGVuY29kZSwgYW5kIHRoZSBF R0wgcmVhZGJhY2sNCj4gZXZlcnl3aGVyZSBlbHNlIC0tIHRoZSBzYW1lIHNwbGl0IHdvdWxkIHNl cnZlIHRoZSBXZWJSVEMgY29uc29sZS4NCj4gwqANCj4gTWFpbnRhaW5lcnM6IHdvdWxkIG9uZSBz aGFyZWQgYmFzZSBzZXJpZXMgbGlrZSB0aGlzIHdvcmsgZm9yIHlvdSwgYW5kDQo+IGlzIHRoZXJl IGEgcHJlZmVycmVkIG5hbWUgYW5kIHBsYWNlIGZvciB0aGUgb3B0aW9uIHRoYXQgZW5hYmxlcyB0 aGUNCj4gRC1CdXMgZGlzcGxheT8NCj4gWzFdIGh0dHBzOi8vbG9yZS5wcm94bW94LmNvbS9wdmUt ZGV2ZWwvMjAyNjA4MjYwNzQzNDcuMTI1NjY1OS0xLQ0KPiBhbGV4YW5kcmUuZGVydW1pZXJAZ3Jv dXBlLWN5bGxlbmUuY29tLw0KPiBbMl0gaHR0cHM6Ly9naXRodWIuY29tL3JkbWl0cnkwOTExL3Fz bS1yZC9ibG9iL21haW4vcXNtLQ0KPiBkaXJlY3QvdXBzdHJlYW0va3liZXItbnZpZGlhLzAwMDEt a3liZXItcWVtdS1zZXJ2ZXItcmVhZC1ETUEtQlVGLQ0KPiBzY2Fub3V0cy1iYWNrLXRocm91Z2gu cGF0Y2gNCj4gwqANCj4gVGhhbmtzLA0KPiBEbWl0cnkNCj4gDQo+IMKgDQo+IEZyb206IERtaXRy eSBSIFttYWlsdG86cmRtaXRyeTA5MTFAZ21haWwuY29tXSANCj4gU2VudDogVGh1cnNkYXksIE9j dG9iZXIgMDEsIDIwMjYgNjoxMSBQTQ0KPiBUbzogcHZlLWRldmVsQGxpc3RzLnByb3htb3guY29t DQo+IFN1YmplY3Q6IFtSRkNdIFdlYlJUQyBjb25zb2xlIGZvciBWTXMgdmlhIFFFTVUncyBELUJ1 cyBkaXNwbGF5DQo+IA0KPiBIaSBhbGwsDQo+IA0KPiBJIHdvdWxkIGxpa2UgdG8gYXNrIHdoZXRo ZXIgYSBoYXJkd2FyZS1lbmNvZGVkIFdlYlJUQyBjb25zb2xlIGZvciBWTXMNCj4gd291bGQgYmUg d2VsY29tZSB1cHN0cmVhbSwgYW5kIGlmIHNvLCBpbiB3aGljaCBzaGFwZS7CoCBJdCBydW5zIHRv ZGF5DQo+IGFzDQo+IGFuIGFkZC1vbiBmb3IgUFZFIDkuMiwgYW5kIEkgaGF2ZSBwcmVwYXJlZCB0 aGUgcWVtdS1zZXJ2ZXIgYW5kDQo+IHB2ZS1tYW5hZ2VyIHBhcnRzIGFzIHBhdGNoIHNlcmllcyBh Z2FpbnN0IGN1cnJlbnQgbWFzdGVyICh0ZXN0ZWQgb24NCj4gUFZFIDkuMiB3aXRoIGFuIFJUWCAz MDgwLCBzZWUgYmVsb3cpIC0tIGJ1dCBJJ2QgbGlrZSB5b3VyIG9waW5pb24gb24NCj4gdGhlIGRl c2lnbiBiZWZvcmUgc2VuZGluZyB0aGVtLg0KPiANCj4gRmVhdHVyZSByZXF1ZXN0OiBidWcgIzgx MDYNCj4gaHR0cHM6Ly9idWd6aWxsYS5wcm94bW94LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9ODEwNg0K PiANCj4gTW90aXZhdGlvbg0KPiAtLS0tLS0tLS0tDQo+IG5vVk5DIGlzIHRoZSByaWdodCBjb25z b2xlIGZvciBmaXJtd2FyZSwgaW5zdGFsbGVycyBhbmQgdGV4dA0KPiBjb25zb2xlcy4NCj4gRm9y IHRpbWUgc3BlbnQgaW5zaWRlIGEgcnVubmluZyBkZXNrdG9wIGl0IHRyYW5zZmVycyBjaGFuZ2Vk DQo+IHJlY3RhbmdsZXMNCj4gaW5zdGVhZCBvZiB2aWRlbywgaGFzIG5vIGF1ZGlvLCBhbmQgYSBW aXJHTCAodmlydGlvLWdsKSBndWVzdCByZWFjaGVzDQo+IGl0DQo+IHRocm91Z2ggZWdsLWhlYWRs ZXNzIHJlYWRiYWNrLsKgIE1lYXN1cmVkIHdpdGggb25lIGd1ZXN0IGltYWdlIGFuZCB0aGUNCj4g c2FtZSB3b3JrbG9hZHMgKG1ldGhvZCBhbmQgcmF3IG51bWJlcnMgaW4gdGhlIHJlcG9zaXRvcnkg YmVsb3cpOg0KPiANCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgV2ViUlRDLCB2aXJ0aW8tZ2wgwqAgbm9WTkMsIHN0ZCBWR0ENCj4gwqAgNzIwcCB2aWRlbywg cGljdHVyZXMvcyDCoCDCoCDCoDMwIChzb3VyY2UgcmF0ZSkgwqAgwqA3LjQNCj4gwqAgc2Nyb2xs aW5nLCBwaWN0dXJlcy9zIMKgIMKgIMKgIDM2ICg1MiBvbiBOVkVOQykgwqAgwqAxMi4wDQo+IMKg IGFuaW1hdGVkIFVJLCBwaWN0dXJlcy9zIMKgIMKgIDM4ICg0NSBvbiBOVkVOQykgwqAgwqAxMS4w DQo+IMKgIGJhbmR3aWR0aCwgNzIwcCB2aWRlbyDCoCDCoCDCoCAxOC44IE1iaXQvcyDCoCDCoCDC oCDCoCAxMjAgTWJpdC9zDQo+IMKgIHNpbmdsZSBwb2ludGVyIGV2ZW50IMKgIMKgIMKgIMKgODgg bXMgwqAgwqAgwqAgwqAgwqAgwqAgwqAgNTIgbXMNCj4gwqAgY29uc29sZSBvcGVuIC0+IDFzdCBw aWN0dXJlIDMuNCBzIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDEuMCBzDQo+IA0KPiBUaGUgbGFzdCB0 d28gcm93cyBhcmUgd2hlcmUgbm9WTkMgc3RheXMgYmV0dGVyOiBhIHNpbmdsZSBpc29sYXRlZA0K PiBldmVudCBpcyBvbmUgc21hbGwgcmVjdGFuZ2xlIGZvciBWTkMsIGJ1dCBhIGZ1bGwgZW5jb2Rl L2RlY29kZSByb3VuZA0KPiB0cmlwIGZvciB2aWRlbyAodGhlIDg4IG1zIHdlcmUgbWVhc3VyZWQg d2l0aCBzb2Z0d2FyZSBsaWJ4MjY0IG9uIGENCj4gQ1BVLW9ubHkgbm9kZSkuwqAgV2l0aCBOVkVO QyAoUlRYIDMwODApIHRoZSBlbmNvZGVyIHVzZWQgNCUgd2hpbGUNCj4gc3RyZWFtaW5nIHRoZSBh bmltYXRlZCBzY2VuZS4NCj4gDQo+IFdoYXQgUUVNVSBhbHJlYWR5IHByb3ZpZGVzDQo+IC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IFFFTVUncyBELUJ1cyBkaXNwbGF5ICgtZGlzcGxheSBk YnVzKSBleHBvcnRzIHRoZSBndWVzdCBzY2Fub3V0IC0tIHRoZQ0KPiBHTC9ETUEtQlVGIHNjYW5v dXQgb2YgdmlydGlvLWdsIGluY2x1ZGVkIC0tIGFuZCB0YWtlcyBrZXlib2FyZCwNCj4gbW91c2Us DQo+IG11bHRpLXRvdWNoLCBjbGlwYm9hcmQgYW5kIGF1ZGlvLsKgIFdpdGggcDJwPXllcyB0aGVy ZSBpcyBubyBidXMNCj4gZGFlbW9uOg0KPiBhIGNsaWVudCBpcyBhdHRhY2hlZCBwZXIgY29ubmVj dGlvbiB0aHJvdWdoIFFNUCAoZ2V0ZmQgKyBhZGRfY2xpZW50KSwNCj4gd2hpY2ggUFZFOjpRTVBD bGllbnQgY2FuIGFscmVhZHkgZG8gKGl0IHBhc3NlcyB0aGUgZmQgZm9yIGdldGZkKS4NCj4gDQo+ IFByb3Bvc2VkIHNlcmllcw0KPiAtLS0tLS0tLS0tLS0tLS0NCj4gMS4gcWVtdS1zZXJ2ZXI6ICdy ZW5kZXJub2RlJyBmb3IgdGhlIFZHQSBwcm9wZXJ0eQ0KPiDCoCDCoCDCoHZnYTogdmlydGlvLWds LHJlbmRlcm5vZGU9L2Rldi9kcmkvcmVuZGVyRDEyOQ0KPiDCoCDCoHNvIGEgdmlydGlvLWdsIGd1 ZXN0IGNhbiBiZSBwbGFjZWQgb24gYSBjaG9zZW4gR1BVIGluc3RlYWQgb2YgdGhlDQo+IMKgIMKg Zmlyc3QgcmVuZGVyIG5vZGUgKGZpeGVzICM0NzcxKS7CoCBTbWFsbCBhbmQgdXNlZnVsIG9uIGl0 cyBvd24uDQo+IA0KPiAyLiBxZW11LXNlcnZlcjogb3B0LWluICdkYnVzJyBmb3IgdGhlIFZHQSBw cm9wZXJ0eQ0KPiDCoCDCoCDCoHZnYTogdmlydGlvLWdsLGRidXM9MQ0KPiDCoCDCoGFkZHMgJy1k aXNwbGF5IGRidXMscDJwPXllcycgKGdsPW9uIHdpdGggdGhlIHJlbmRlciBub2RlIGZvcg0KPiDC oCDCoHZpcnRpby1nbCwgZ2w9b2ZmIGZvciB0aGUgb3RoZXIgdHlwZXMpLsKgIE9uZSBjb25zdHJh aW50OiB3aXRoIEdMLA0KPiDCoCDCoFFFTVUgcmVmdXNlcyBWTkMgYW5kIFNQSUNFIG5leHQgdG8g aXQgKCJEaXNwbGF5IHZuYyBpcw0KPiBpbmNvbXBhdGlibGUNCj4gwqAgwqB3aXRoIHRoZSBHTCBj b250ZXh0IiksIHNvIGEgdmlydGlvLWdsIFZNIHdpdGggZGJ1cz0xIGhhcyBuZWl0aGVyDQo+IGFu ZA0KPiDCoCDCoG9mZmVycyB0aGUgV2ViUlRDIGNvbnNvbGUgaW5zdGVhZDsgbm9uLUdMIHR5cGVz IGtlZXAgVk5DIGFzIHdlbGwuDQo+IMKgIMKgVGhlIGNsaXBib2FyZCByZWFjaGVzIHRoZSBndWVz dCB0aHJvdWdoIHFlbXUtdmRhZ2VudCAoYXMgZm9yIHRoZQ0KPiDCoCDCoFZOQyBjbGlwYm9hcmQp IGFuZCB0aGUgZ3Vlc3QncyBzcGljZS12ZGFnZW50Lg0KPiDCoCDCoEF1ZGlvIGlzIG5vdCBwYXJ0 IG9mIHRoZSBzZXJpZXMgeWV0OiB0aGUgYWRkLW9uIHBsYXlzIGl0IHRocm91Z2ggYQ0KPiDCoCDC oGJ1cy1tb2RlIEQtQnVzIGRpc3BsYXkgKGEgJ2RidXMnIGF1ZGlvZGV2IG5hbWVkIGluIC1kaXNw bGF5KSwgYnV0DQo+IMKgIMKgd2l0aCBwMnA9eWVzIG91ciBsaXN0ZW5lciBnb3Qgbm8gYXVkaW8g ZnJvbSBRRU1VIDExLjAgLS0gb25seSB0aGUNCj4gwqAgwqBJbml0L1NldEVuYWJsZWQgY2FsbHMg bWFkZSB3aGlsZSBSZWdpc3Rlck91dExpc3RlbmVyIHJ1bnMsIG5vdGhpbmcNCj4gwqAgwqBhZnRl cndhcmRzLsKgIEEgJ2RidXMnIGF1ZGlvMCBkcml2ZXIgaXMgcmVhZHkgb25jZSB0aGF0IGlzDQo+ IHJlc29sdmVkLg0KPiANCj4gMy4gcWVtdS1zZXJ2ZXI6IEFQSSBjYWxsIHRvIGF0dGFjaCBhIGNv bnNvbGUNCj4gwqAgwqAgwqBQT1NUIC9ub2Rlcy97bm9kZX0vcWVtdS97dm1pZH0vd2VicnRjcHJv eHkgwqAoVk0uQ29uc29sZSkNCj4gwqAgwqB0YWtlcyB0aGUgYnJvd3NlcidzIFNEUCBvZmZlciwg Y3JlYXRlcyBhIHNvY2tldHBhaXIsIGF0dGFjaGVzIG9uZQ0KPiDCoCDCoGVuZCB0byBRRU1VIChn ZXRmZCArIGFkZF9jbGllbnQpIGFuZCBoYW5kcyB0aGUgb3RoZXIgZW5kIHdpdGggdGhlDQo+IMKg IMKgb2ZmZXIgdG8gYSBsb2NhbCBtZWRpYSBzZXJ2aWNlIG92ZXIgYSByb290LW93bmVkIHVuaXgg c29ja2V0DQo+IMKgIMKgKFNDTV9SSUdIVFMpOyByZXR1cm5zIHRoZSBTRFAgYW5zd2VyLsKgIEF1 dGhlbnRpY2F0aW9uIGFuZCBBQ0wgc3RheQ0KPiDCoCDCoGV4YWN0bHkgdGhvc2Ugb2Ygdm5jcHJv eHkvdGVybXByb3h5IC0tIG5vIGV4dHJhIHBvcnQsIG5vIG93biBhdXRoLg0KPiDCoCDCoFRoZSBz dGF0dXMgQVBJIHJlcG9ydHMgJ2RidXMnIGFuZCAndm5jJyBzbyB0aGUgVUkga25vd3Mgd2hpY2gN Cj4gwqAgwqBjb25zb2xlcyBhIFZNIG9mZmVycy4NCj4gDQo+IDQuIHB2ZS1tYW5hZ2VyOiBXZWJS VEMgY29uc29sZSB0eXBlIG5leHQgdG8gbm9WTkMvU1BJQ0UveHRlcm0uanMNCj4gwqAgwqBpbiB0 aGUgY29uc29sZSBidXR0b24gYW5kIHRoZSBWTSdzIENvbnNvbGUgcGFuZWwsIG9mZmVyZWQgd2hl biB0aGUNCj4gwqAgwqBWTSdzIGRpc3BsYXkgaGFzIGRidXM9MTsgdGhlIGRpc3BsYXkgZWRpdG9y IGdldHMgdGhlIHR3byBvcHRpb25zLg0KPiDCoCDCoExpa2Ugbm9WTkMgYW5kIHh0ZXJtLmpzLCB0 aGUgdmlld2VyIGl0c2VsZiBpcyBhIHBhZ2UgZnJvbSBhDQo+IHNlcGFyYXRlDQo+IMKgIMKgcGFj a2FnZSB0aGF0IHB2ZXByb3h5IHNlcnZlcyAoJz9jb25zb2xlPWt2bSZ3ZWJydGM9MScpLg0KPiAN Cj4gNS4gQSBzZXBhcmF0ZSBwYWNrYWdlIHdpdGggdGhlIG1lZGlhIHNlcnZpY2U6IGNhcHR1cmUg ZnJvbSB0aGUgRC1CdXMNCj4gwqAgwqBkaXNwbGF5ICh0aGUgdmlydGlvLWdsIERNQS1CVUYgc2Nh bm91dCBpcyBpbXBvcnRlZCB0aHJvdWdoIEVHTCBhbmQNCj4gwqAgwqByZWFkIGJhY2s7IGEgemVy by1jb3B5IHBhdGggdG8gdGhlIGVuY29kZXIgaXMgZnV0dXJlIHdvcmspLCBlbmNvZGUNCj4gwqAg wqAoTlZFTkMsIFZBLUFQSSwgUVNWOyBsaWJ4MjY0IGZhbGxiYWNrOyBILjI2NCwgSEVWQyB3aGVy ZSB0aGUNCj4gwqAgwqBicm93c2VyIGRlY29kZXMgaXQpLA0KPiDCoCDCoE9wdXMgYXVkaW8sIFdl YlJUQy7CoCBUb2RheSBpdCBpcyBDKysgKEZGbXBlZykgcGx1cyBhIFB5dGhvbi9haW9ydGMNCj4g wqAgwqBXZWJSVEMgYnJpZGdlOyBJIHJlYWxpc2UgUHl0aG9uL2Fpb3J0YyBpcyB1bnVzdWFsIGlu IHlvdXIgc3RhY2suDQo+IA0KPiBRdWVzdGlvbnMNCj4gLS0tLS0tLS0tDQo+IC0gSXMgdGhpcyBz b21ldGhpbmcgeW91IHdvdWxkIGNvbnNpZGVyIHVwc3RyZWFtIGF0IGFsbD8NCj4gLSBQcm9wZXJ0 eSBuYW1pbmc6ICdyZW5kZXJub2RlJyBhbmQgJ2RidXMnIGluc2lkZSAndmdhJywgb3IgYQ0KPiBz ZXBhcmF0ZQ0KPiDCoCBkaXNwbGF5IHByb3BlcnR5Pw0KPiAtIFdvdWxkIHlvdSByYXRoZXIga2Vl cCB0aGUgbWVkaWEgc2VydmljZSBvdXQgb2YgdHJlZSAodXNlcnMgaW5zdGFsbA0KPiDCoCBpdCwg dGhlIEFQSSBjYWxsIHJldHVybnMgYW4gZXJyb3Igd2hlbiBpdCBpcyBhYnNlbnQpLCBvciBzaG91 bGQgaXQNCj4gwqAgZXZlbnR1YWxseSBsaXZlIGluIGEgUHJveG1veC1tYWludGFpbmVkIHBhY2th Z2UsIGFuZCB3b3VsZCB5b3UgdGhlbg0KPiDCoCB3YW50IGl0IGluIFJ1c3Q/DQo+IC0gSXMgJ3dl YnJ0Y3Byb3h5JyBuZXh0IHRvICd2bmNwcm94eScvJ3Rlcm1wcm94eScgdGhlIHJpZ2h0IHBsYWNl Pw0KPiANCj4gTm90IHBhcnQgb2YgdGhpcyBwcm9wb3NhbDogdGhlIHByb3RvdHlwZSBhbHNvIGhh cyBhIGdyYXBoaWNhbCBjb25zb2xlDQo+IGZvciBMWEMgY29udGFpbmVycyAoYSBoZWFkbGVzcyBj b21wb3NpdG9yIGluIHRoZSBjb250YWluZXIgd2l0aCBpdHMNCj4gb3duIGxvZ2luIHNjcmVlbiwg b25lIGNvbnNvbGUgcGVyIHR0eSBsaWtlIHRoZSB0ZXJtaW5hbCBjb25zb2xlKS7CoCBJdA0KPiBu ZWVkcyBzb2Z0d2FyZSBpbnNpZGUgdGhlIGd1ZXN0LCBzbyBJIHBsYW4gdG8ga2VlcCBpdCBhcyBh IHNlcGFyYXRlDQo+IGFkZC1vbiBwYWNrYWdlLg0KPiANCj4gVGVzdGVkIGVuZCB0byBlbmQgb24g UFZFIDkuMiAocWVtdS1zZXJ2ZXIgOS4yLjcgYW5kIHB2ZS1tYW5hZ2VyDQo+IDkuMi4xMSBwbHVz IHRoZSBzZXJpZXMpOiBhIEt1YnVudHUgMjYuMDQgZ3Vlc3Qgd2l0aA0KPiAndmdhOiB2aXJ0aW8t Z2wsZGJ1cz0xJyBzdHJlYW1zIDEyODB4ODAwIGF0IDYwIGZwcyAoTlZFTkMgSC4yNjQpDQo+IHRo cm91Z2ggd2VicnRjcHJveHksIGluIGEgcG9wdXAgYW5kIGluIHRoZSBWTSdzIENvbnNvbGUgcGFu ZWwsIGZvciBhDQo+IHVzZXIgaG9sZGluZyBvbmx5IFBWRVZNVXNlciBvbiB0aGUgVk0gKDQwMyB3 aXRob3V0IFZNLkNvbnNvbGUpLg0KPiANCj4gQ29kZSBhbmQgbWVhc3VyZW1lbnRzOiBodHRwczov L2dpdGh1Yi5jb20vcmRtaXRyeTA5MTEvcXNtLXJkDQo+IChxc20tZGlyZWN0LywgZG9jcy9DT01Q QVJJU09OLm1kIGZvciB0aGUgbnVtYmVyczsgdGhlIHByZXBhcmVkIHNlcmllcw0KPiBhcmUgaW4g cXNtLWRpcmVjdC91cHN0cmVhbS9wYXRjaGVzLykuDQo+IA0KPiBUcmFuc3BhcmVuY3k6IEkgZGV2 ZWxvcGVkIHRoZSBwcm90b3R5cGUgd2l0aCB0aGUgaGVscCBvZiBhbiBBSSBjb2RpbmcNCj4gYXNz aXN0YW50IChDbGF1ZGUpLsKgIEkgaGF2ZSByZXZpZXdlZCBhbmQgdGVzdGVkIHRoZSBjb2RlIGFu ZCB3aWxsDQo+IHNpZ24NCj4gdGhlIEhhcm1vbnkgQ0xBOyBwbGVhc2UgdGVsbCBtZSBpZiB0aGF0 IGlzIGEgcHJvYmxlbSBmb3IgeW91Lg0KPiANCj4gVGhhbmtzLA0KPiBEbWl0cnkNCg==