Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1s4zYH-002RlL-33 for pgsql-hackers@arkaria.postgresql.org; Thu, 09 May 2024 08:54:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1s4zYE-005fk9-Od for pgsql-hackers@arkaria.postgresql.org; Thu, 09 May 2024 08:54:55 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1s4zYE-005fjs-0q for pgsql-hackers@lists.postgresql.org; Thu, 09 May 2024 08:54:54 +0000 Received: from esa15.fujitsucc.c3s2.iphmx.com ([68.232.156.107]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1s4zY6-0009Le-B5 for pgsql-hackers@lists.postgresql.org; Thu, 09 May 2024 08:54:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1715244885; x=1746780885; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=oBi/MDZMw6mzbHt+vZmztr/E/g5Ag87Oe8C9oh5FjcM=; b=EUOftfwJqSigSmxK1z8xCGbIp6aCNw8kZQmb4+QeXCDKFsV/cpy9ek1w iNoLt1Xq0yKhvdnXREYB49fnH7/F3kTpWje2QxoXPSHX0tldj6l8WyAMs f2dwPz5IAALXPVDGPvqYHX2XwhBA4Qm6qSoVyRdtS6ka3G9EW61wAKszd 9ImCENfKpc/Ar3bSI6oARdNebn8R++uT0/RuEDTpbu/ZFSuvl6Z9diW3/ C5S6c7Eg092hqHlsfvyNY2wKTcyOZzFGTis5DxRGX5ABJRJBFDvEoVB1N lJf/j+zso8xKclao9L9et+0J1RKHDzOP5IAtPIQrAm0DipGbNtDicUH0T Q==; X-IronPort-AV: E=McAfee;i="6600,9927,11067"; a="119191956" X-IronPort-AV: E=Sophos;i="6.08,147,1712588400"; d="scan'208";a="119191956" Received: from mail-japanwestazlp17010000.outbound.protection.outlook.com (HELO OS0P286CU010.outbound.protection.outlook.com) ([40.93.130.0]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 May 2024 17:54:40 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RIoFHUTZUeb7lk64G2NqL3IHeaozpOTPAYEcVAJHd+6uMx+zPqoHKMLDiu6MrKInCuouV1VTek6rf/X6/Z0ohdbrhh45uvxgKJu9FnUnp58dEvvqRKLLzvNHSdNZ2cV6yP7AqjJeOeE+ODj/LjycNQlav1ni4ZuLWe2+qvu+bVzBxR62AThiTS2rKyzFkVuT1WPrQ3hkLuJT3wEeLmplQxve7rVnPdb5fatvl85XBs1vHInPvuWmBB9mmijh4FHtc1D4xEV1GbP1HX3ivnFj6NeXbsqqkwuCdVaWprjopmkZXdj1s0U54JiBRQCJmPXz4UqnaukyO7naiIbiRzesSw== 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=oBi/MDZMw6mzbHt+vZmztr/E/g5Ag87Oe8C9oh5FjcM=; b=RrEPxTeoA61HolDxh366dR28pj30p5u8Xy0udZ1kh30ri/+g2YRNHHnTVSE8Vi5Io0UFeDlo48xqkFQtqBTJbhsXDgtZ5Ldysmfpg07mMN7v7la5CFvEXmHqmjiaX0D39ltshpYZyGsaIx38y2OpPgx/nPPJu8hqlxyfXy4ibxRDjZfoGcLK7qRMpqYKcz4O6YpXZHv9JqOSwVejWZN+tY+/MM7EzR/s57RFH/Wm/A4Z8DpnqEJ4pW1qLui/gZYRPwv5ihS1RFljqOu6YXxFv3/UdFjtSil39PfYUwFm9/dUS+pM+XR8RQr3j7WHi5F3RxzU96v8JsPQu0c9QFK4/Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from OSBPR01MB2552.jpnprd01.prod.outlook.com (2603:1096:604:18::11) by OS3PR01MB7802.jpnprd01.prod.outlook.com (2603:1096:604:179::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.46; Thu, 9 May 2024 08:54:37 +0000 Received: from OSBPR01MB2552.jpnprd01.prod.outlook.com ([fe80::67b6:c904:2de8:328b]) by OSBPR01MB2552.jpnprd01.prod.outlook.com ([fe80::67b6:c904:2de8:328b%7]) with mapi id 15.20.7544.041; Thu, 9 May 2024 08:54:37 +0000 From: "Hayato Kuroda (Fujitsu)" To: 'Peter Smith' CC: "pgsql-hackers@lists.postgresql.org" , Amit Kapila , Ajin Cherian , =?utf-8?B?0JTQsNCy0YvQtNC+0LIg0JLQuNGC0LDQu9C40Lk=?= Subject: RE: Slow catchup of 2PC (twophase) transactions on replica in LR Thread-Topic: Slow catchup of 2PC (twophase) transactions on replica in LR Thread-Index: AQHaoNvSJSv3q2bz/UWhyI2vhm9GaLGMpMQggAGIsQCAAGX4IA== Date: Thu, 9 May 2024 08:54:36 +0000 Message-ID: References: <8fab8-65d74c80-1-2f28e880@39088166> <99df2-65d8d200-1-63c26880@172687752> <23d1ca-66169f80-1f-5a90aa00@207285398> <26b30e-661d4880-9-62d2df00@231402233> In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9NTczNjk2MjEtNjU3YS00NDM0LTg2OGQtMjA5YTY1YWQx?= =?utf-8?B?M2Y2O01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFROKAiztNU0lQ?= =?utf-8?B?X0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRkLTNiMGY0ZmVjZTA1MF9T?= =?utf-8?B?ZXREYXRlPTIwMjQtMDUtMDlUMDg6MjY6MjFaO01TSVBfTGFiZWxfYTcyOTVj?= =?utf-8?B?YzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX1NpdGVJZD1hMTlmMTIx?= =?utf-8?Q?d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OSBPR01MB2552:EE_|OS3PR01MB7802:EE_ x-ms-office365-filtering-correlation-id: bf9bef52-02c7-41f6-2edc-08dc7005a7b5 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230031|366007|376005|1800799015|38070700009|1580799018; x-microsoft-antispam-message-info: =?utf-8?B?ajZtV3ZJRjlTZFlIZXJ3UUlvaDJKamQ3bTBWNjhOZThyL1kwZ1FLUk1odElt?= =?utf-8?B?REQrVEpyWnM3aGt3dGkxK1J5UXpSb01vaGVINVczTk84azlLS0pQVVVlVGpD?= =?utf-8?B?VlZRM0Ric1d3R2x6VHRlQkdURERTZFJja2FUY3Z0NDc3OUNmaS9YL2tkbkxZ?= =?utf-8?B?R2VDQUh2WFdkMHF4am1PS0RDRTFUaWgrYzFEVmVSZHgzM1Z3UzZ6eG1zS3Fj?= =?utf-8?B?V0hQNTRzTGtkYXpOR21rb29JRGJnOHBUaUk2M09yWjdiRzdHcW1LK0hjeUpu?= =?utf-8?B?bE92bnNLellhZzh5UTJPaTVkMXN1NGtqNmFacUEwTFFNTFAzK0VielFZb2JE?= =?utf-8?B?cnBzRldLTEtZRiswRFo5Q2x2MUUzQzhCUEpLM2crWFVueDZmZTQ5bDNzM1Yw?= =?utf-8?B?VGI1eUhHSnh4cGpZVlZJMjNXYnh6ZnBqNFhDQTZTZGRYWXpyNHAzeDdoRlFC?= =?utf-8?B?MFdBUUZvRzNtT0VNWERmSHBqZzJwaUpaWU95c05TYVlZTlBaa1hBb3JjZmxX?= =?utf-8?B?NzhpcC9QQUZpaHd1VE9SSnRxUTNvdXA4akJPS0djRmRNOGhSVG82S1BTcjlk?= =?utf-8?B?TGlKYkhSTVhtQllWamtodi81SnYwTi9lVWRNMldqa21yRFg2QStVOEtMMHNG?= =?utf-8?B?dkVjajM4T3ArQ0hlY3NtQkFVU2tVZVVVQUZwWWxTeklHdjdFN29tays4Y3JZ?= =?utf-8?B?SEx1bUFCdEdONGJsL05WT3hzNzh0T0puVk5JTlVReU9aZkgxdnVoT3ExNG1X?= =?utf-8?B?ejRMUmhpVTQ2SUhod1FGeW9ITmFITC9oOGlKdUJObzZVSmNXNUlmMUQwWUEr?= =?utf-8?B?aU9NUU5LaUdMSlRFZ1V1UVkzOFE2TE9NanRxQnhGY0svRkJ2S2IyR0JYc3VD?= =?utf-8?B?b050Tmd0U25xOVRDMkhFMHN0UGJMRWR1bGF0RmJSM3g0SDYyL2IrVFpwcGxI?= =?utf-8?B?ZmpMNFpmNGdzYjN0Z2xEdEEybkh0TU5RUlVDYWlNOVQyVEFLR09sNCsyWVN2?= =?utf-8?B?OFQ5elpXbUtDME5WcS9vbVZMcmJlRzNpSW5VcnZOeXdwcUdKdk04bk5zY2xF?= =?utf-8?B?MHk4V1pXTTNRc2lycm9qdWRDMUdJcDluMEhsM2JBUkxzcEhxR0p2Sldmc1J6?= =?utf-8?B?dmxRazZzeTRKTmVQdmkwZHVCTWY1OGoybTQxVUY5azQ5UFFSOXVTT1pGWW4v?= =?utf-8?B?T0lNdFVodkJuUC96YVRRMWo1amRMOFZFNC9kZGdCbWtIUnNDM3Q5K2NWUks2?= =?utf-8?B?UlFkT3VwWWJjVThPbmM4ZDMvN1g4Z24wbnBpWXBRd0pmekNwOWZKUzZUK1BI?= =?utf-8?B?UlNWNXlBNXYyM21KTUFIcityVHMveWNGbnlSVHU4QmN2dDN3V21IdkErMTJE?= =?utf-8?B?cEhzakh4ZFVsbnpwU2V6V2c2VUJXTXQzZXlYN3JibUV6Zkx0KzI3YWl6YlhC?= =?utf-8?B?dmZnREwxT1l1ZkhORW5ZR21aU21OV3A5cFZEZlV2QVhuZ0JVT2t2Mlhud1cr?= =?utf-8?B?aWwrVEw1bmwrRlJjMjVLcWYzVDM2QWNETkV5YTJ4VWxhdGxpU1lXeldTOSt2?= =?utf-8?B?UlFzeDB1dUxRSW8rOTkxRm5XV0R3cVZFRkdyR3U2b1dZcHEyZWwyOVVjU04x?= =?utf-8?B?K1N6eUdRTnlDejFDMmN1VkVYOGc3aHdSaWZlL3RMeEtEUUR1QUdVNGZ4cUUz?= =?utf-8?B?M1JqSk9OSnZDd2hZRE42K0ZSTTNUVmFUTmRJd0VkNSt6eE85dnErdS9qSnRq?= =?utf-8?Q?529A0SyWDuYf/KCGEJOsPlYVfKhsCu7vn32G3tK?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:ja;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OSBPR01MB2552.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366007)(376005)(1800799015)(38070700009)(1580799018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?b2xaa1hVM0JBL0N1TGRNdWs2QXlzT2pYRk5BamJGVHB1RitpZy9ZQjJpWXFL?= =?utf-8?B?bTFXNGxNaDVRSVRvMVBvdzBtOGJaUVBHY0kwQ0t6dTVNLzhrUFBqdmZxRFkv?= =?utf-8?B?U1VrdTE1V2w2VElSeU5zaTNEcUF6QmNBQ1JTVU9SazdqaVIxZmM0WGNQK09j?= =?utf-8?B?Ky9UQ1RiWXBDc0g5R0Jlb3RmUmdwaW1pK2Rla1B3Q0JJZ0IySXg1cWQ5NHdi?= =?utf-8?B?V3crbHFJYnBFN09IVXJzcHZKelB2WmVmWUlDSk9ZYk1jZVp4NTdKMkFPVlU3?= =?utf-8?B?V05lSUpEakUxd2dKL1NTdDlUT05teHV5Zk9ZMXhQS3NEUkpLaFRvMTFVMlNW?= =?utf-8?B?aElwejh6bUxBeCtFdDZUREVrc3dYQlFqbEFRdFRmNCtRZms2bHUreG15TmZK?= =?utf-8?B?dkZ1czVqTS9BUUtFOTZ0emozeG1kbmNSd1FicStkQWRoRWpVd3BGUTU2dGZZ?= =?utf-8?B?UjBHRW9RRXFIQkM2UUhmTElSUHBSbi9Dc0grUGNSeWx6VWhZMG9IZ254blJn?= =?utf-8?B?YWNJajZscjdBdnhaYkdMOFhRMHVhbVlNeGhSL09OWDJLY1FhVUh3UE5zUzl0?= =?utf-8?B?VzJzNEIzaFZkNWthMXU4VEJzeld6VXpKZEQxTGl1aGlsVEh3SVdrUWkwZUJ6?= =?utf-8?B?MVpOSFR0VERpTHJNcUZvK2JDUE9mQUYvMWpRNG8xVHA0ZFNZWFlwLzVCbnpz?= =?utf-8?B?K0ZhQmcxMlNmQlM0ZGZxM0RYNDluUjNKaXNrb1JTSWZLT0FLUXFCd05HbVhS?= =?utf-8?B?RVFmR3V0UTZKQ2tGckNVTnlCODVkYnl6UmNETVJBNGtwNkdZRXRuQi9sOENz?= =?utf-8?B?eE1qY3g0bk02SDhFQWdsbEJudjhLa0Y1QzdZd21xRGNrWHVwcjdCNUVSN3NG?= =?utf-8?B?YU1MaVFPbGlkeHl1YmJCb0Z1ckFkUHprVmRSeVJ5bUZWZTVneGlxRDNWck1j?= =?utf-8?B?R0RtYUNPNjZ1bTB4QzRYV0k1cXQvUFE2c2NhM244RW43YUZ6SEgvSkZQcFFr?= =?utf-8?B?MGlIb0ZKUGRRYmtUMFdOUHFyTUVwZUJrOThyZjFuQXJoS3BHTTErSUxtT2tm?= =?utf-8?B?eVkyVjVGaFdiU2t6NTc5aFRYREx5NEx4YVJ5Rm5rSXVSNnBFS2VmclZPY0Uv?= =?utf-8?B?QU02QTRweEs0ZmI1NWRJc3FacW9KcnVMdnhhNWtTQmw2d216Z3dGVGE1R0Jm?= =?utf-8?B?MjFoTS9STzNWRlRyeXpZRHNjTW5ZQTdMcVIreTI1K3U0eFdFc0trY2hENUV1?= =?utf-8?B?SkRNQVpISHJMTEJvRkFtUVU3U2JVUURkcTd6UWNOT1NqdnY1MHNRSzVOWXp5?= =?utf-8?B?cHZVOGFXR29yMDVHazJJMlMzK1hIeVhxQzAxQXJKM1hsZ0FMaW5NTXoyenpV?= =?utf-8?B?SVExTWJuWEtqcFlvL3BxRHFjMEY1bjR4NEpKWHp6RzBoTWtzR1ljU0NPbWt0?= =?utf-8?B?UlhlQ0hBTC8wTDAwM0FkZGsrMlRXNFBua1NQV0xWNGVCNytSVy9kSSttQ2Z5?= =?utf-8?B?UDBQb3JBeXAzeTFYbE9uN09VMGZSZXo2WEV0ZlllUTNtMlpxOW1SNUg5Ymdz?= =?utf-8?B?VlE2V0pkM2YzVUkvWUtEWklUakZhNjFJTkpiM3ZWQm94ZVNnRHZNRzNsd1dn?= =?utf-8?B?NG9HdzBsKzdNWkh2NmwzV08xc2VEcThEdllwcG5yaFhTL1lWQWVvdm40WXIy?= =?utf-8?B?MGFucE1mNmVPbFUrNnh5OThvdFpkaXFHTG1jNE0wcGFxSHVTbkZoUFVLQ0dq?= =?utf-8?B?cDA1ZjRjNVdvUUYrVUtUL0ZLRTdXRzI0U1FzeDNIaHNjd0NCUVFJRUw0RjZK?= =?utf-8?B?NituZTBqTm5SZjRCOW9aakdIN0xPYTZheEpkakg0Q2pSVHYrc3ZmTEtwY3Mx?= =?utf-8?B?bzhXemliak0zZnFCcTF6SnBPeStxTkhEdWlpRzlRZzQzVWJ0dStsajM1ek9P?= =?utf-8?B?OG8xaEYyOU9MYzB0V0tXbVc5V2tFWXI1RzU2aWlCVk1UN0MzaldIc2RPY0pF?= =?utf-8?B?RkcxM21WTENiOE5RZUsvbEdkRm0vRFJMQ3Qyc21ScnBISEFublM1bE9qZ3ls?= =?utf-8?B?WW9sYS9yY1d3RDNDaTc1RCtKYk9qaFhlTGNMSnFlOTQ1SlRlcitPY1FJMU1T?= =?utf-8?B?eFRvQzlndTgzSkNXcHJqN2dqNnlua2FUVyswQkZPYTR0djJQeTdKbnYrZzFG?= =?utf-8?B?ekE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: PtVWj4XgNRPibaG/hmR9nY7ANFRM5ECgHD43oFDzRHLPoVsC6YtTJFBLuLstbulv2IfNMG67ogGJxhMI6MFXKI1EeDpbbeqHlVSJFUVR4+ocdNj5TOOvedMVrf5W8DTeYUQXWSGDTZIp7HsGFii3vaQE2s8nrmm+WAUIr2wNb22ibATmCYlmHW1lHu5ynNqO1raM71IySvskNLNcQJImYzkLjHWg80UDULNXypugI7AhULXqW4b9EBFzDru7W23NzqA8zyZj07X21eXc5stcWT9cYOYAQjpCqsTwECw1cpRQv33zBf+T5Y/MJNbyaOzYzpuP+nzdpafwEY6OJKlNYwk2XTTrAyYzSVQ56Yn9ja4U1MfXIebzz1zDYJlqIBMyw7JeCZH1kCaYGMVae9BK5910odIn7opct+k/bQarrbmdcezSc2iJ4wx21+k3L3Gsv57HjgSK9rs2UsUW0algA5RTKgGClu+sC/8VEcmVaSfslbytsI/FrdlhOdBTv5Oi0mvXhfllpjGQJ4wnPHwP9/96HwgGNsgfDecW+1XwyTNs0kHN+7Y65W8oCy6cU/uqDHSbbRP1N3Qswnxhcfp3DPdifOoaZP04d9sKKpDfJnyeIcEauetEB7KaJET9HPCX X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OSBPR01MB2552.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bf9bef52-02c7-41f6-2edc-08dc7005a7b5 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 May 2024 08:54:37.0208 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: l15tROYyfngYi31Ino9+PrNAjdsK/0nTKpXWCr+xglHUCbStEG7o+osh1We6RPZwjxWDW84HUZDuX2OuAvFgKwJAVAR26piVhyFN7De7hRU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3PR01MB7802 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk RGVhciBQZXRlciwNCg0KPiA9PT09PT0NCj4gQ29tbWl0IG1lc3NhZ2UNCj4gDQo+IDEuDQo+IElJ VUMgdGhlcmUgaXMgcXVpdGUgYSBsb3Qgb2Ygc3VidGxldHkgYW5kIGRldGFpbHMgYWJvdXQgd2h5 IHRoZSBzbG90DQo+IG9wdGlvbiBuZWVkcyB0byBiZSBjaGFuZ2VkIG9ubHkgd2hlbiBhbHRlcmlu ZyAidHJ1ZSIgdG8gImZhbHNlIiwgYnV0DQo+IG5vdCB3aGVuIGFsdGVyaW5nICJmYWxzZSIgdG8g InRydWUiLg0KPiANCj4gSXQgYWxzbyBzaG91bGQgZXhwbGFpbiB3aHkgUHJldmVudEluVHJhbnNh Y3Rpb25CbG9jayBpcyBvbmx5IG5lZWRlZA0KPiB3aGVuIGFsdGVyaW5nIHR3b19waGFzZSAidHJ1 ZSIgdG8gImZhbHNlIi4NCj4gDQo+IFBsZWFzZSBpbmNsdWRlIGEgY29tbWl0IG1lc3NhZ2UgdG8g ZGVzY3JpYmUgYWxsIHRob3NlIHRyaWNreSBkZXRhaWxzLg0KDQpBZGRlZC4NCg0KPiA9PT09PT0N Cj4gc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jDQo+IA0KPiAyLiBBbHRl clN1YnNjcmlwdGlvbg0KPiANCj4gLSBQcmV2ZW50SW5UcmFuc2FjdGlvbkJsb2NrKGlzVG9wTGV2 ZWwsICJBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFNFVA0KPiAodHdvX3BoYXNlKSIpOw0KPiArIGlm ICghb3B0cy50d29waGFzZSkNCj4gKyBQcmV2ZW50SW5UcmFuc2FjdGlvbkJsb2NrKGlzVG9wTGV2 ZWwsDQo+ICsgICAiQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBTRVQgKHR3b19waGFzZSA9IG9mZiki KTsNCj4gDQo+IElNTyB0aGlzIG5lZWRzIGEgY29tbWVudCB0byBleHBsYWluIHdoeSBQcmV2ZW50 SW5UcmFuc2FjdGlvbkJsb2NrIGlzDQo+IG9ubHkgbmVlZGVkIHdoZW4gY2hhbmdpbmcgdGhlICd0 d29fcGhhc2UnIG9wdGlvbiBmcm9tIG9uIHRvIG9mZi4NCg0KQWRkZWQuIFRob3V0aHQ/DQoNCj4g My4gQWx0ZXJTdWJzY3JpcHRpb24NCj4gDQo+IC8qDQo+ICogVHJ5IHRvIGFjcXVpcmUgdGhlIGNv bm5lY3Rpb24gbmVjZXNzYXJ5IGZvciBhbHRlcmluZyBzbG90Lg0KPiAqDQo+ICogVGhpcyBoYXMg dG8gYmUgYXQgdGhlIGVuZCBiZWNhdXNlIG90aGVyd2lzZSBpZiB0aGVyZSBpcyBhbiBlcnJvciB3 aGlsZQ0KPiAqIGRvaW5nIHRoZSBkYXRhYmFzZSBvcGVyYXRpb25zIHdlIHdvbid0IGJlIGFibGUg dG8gcm9sbGJhY2sgYWx0ZXJlZA0KPiAqIHNsb3QuDQo+ICovDQo+IGlmIChyZXBsYWNlc1tBbnVt X3BnX3N1YnNjcmlwdGlvbl9zdWJmYWlsb3ZlciAtIDFdIHx8DQo+IHJlcGxhY2VzW0FudW1fcGdf c3Vic2NyaXB0aW9uX3N1YnR3b3BoYXNlc3RhdGUgLSAxXSkNCj4gew0KPiBib29sIG11c3RfdXNl X3Bhc3N3b3JkOw0KPiBjaGFyICAgICplcnI7DQo+IFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uOw0K PiBib29sIGZhaWxvdmVyX25lZWRzX3RvX2JlX3VwZGF0ZWQ7DQo+IGJvb2wgdHdvX3BoYXNlX25l ZWRzX3RvX2JlX3VwZGF0ZWQ7DQo+IA0KPiAvKiBMb2FkIHRoZSBsaWJyYXJ5IHByb3ZpZGluZyB1 cyBsaWJwcSBjYWxscy4gKi8NCj4gbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2Up Ow0KPiANCj4gLyogVHJ5IHRvIGNvbm5lY3QgdG8gdGhlIHB1Ymxpc2hlci4gKi8NCj4gbXVzdF91 c2VfcGFzc3dvcmQgPSBzdWItPnBhc3N3b3JkcmVxdWlyZWQgJiYgIXN1Yi0+b3duZXJzdXBlcnVz ZXI7DQo+IHdyY29ubiA9IHdhbHJjdl9jb25uZWN0KHN1Yi0+Y29ubmluZm8sIHRydWUsIHRydWUs IG11c3RfdXNlX3Bhc3N3b3JkLA0KPiBzdWItPm5hbWUsICZlcnIpOw0KPiBpZiAoIXdyY29ubikN Cj4gZXJlcG9ydChFUlJPUiwNCj4gKGVycmNvZGUoRVJSQ09ERV9DT05ORUNUSU9OX0ZBSUxVUkUp LA0KPiBlcnJtc2coImNvdWxkIG5vdCBjb25uZWN0IHRvIHRoZSBwdWJsaXNoZXI6ICVzIiwgZXJy KSkpOw0KPiANCj4gLyoNCj4gKiBDb25zaWRlciB3aGljaCBzbG90IG9wdGlvbiBtdXN0IGJlIGFs dGVyZWQuDQo+ICoNCj4gKiBXZSBtdXN0IGFsdGVyIHRoZSBmYWlsb3ZlciBvcHRpb24gd2hlbmV2 ZXIgc3ViZmFpbG92ZXIgaXMgdXBkYXRlZC4NCj4gKiBUd29fcGhhc2UsIGhvd2V2ZXIsIGlzIGFs dGVyZWQgb25seSB3aGVuIGNoYW5naW5nIHRydWUgdG8gZmFsc2UuDQo+ICovDQo+IGZhaWxvdmVy X25lZWRzX3RvX2JlX3VwZGF0ZWQgPQ0KPiByZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9z dWJmYWlsb3ZlciAtIDFdOw0KPiB0d29fcGhhc2VfbmVlZHNfdG9fYmVfdXBkYXRlZCA9DQo+IChy ZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJ0d29waGFzZXN0YXRlIC0gMV0gJiYNCj4g IW9wdHMudHdvcGhhc2UpOw0KPiANCj4gUEdfVFJZKCk7DQo+IHsNCj4gaWYgKHR3b19waGFzZV9u ZWVkc190b19iZV91cGRhdGVkIHx8IGZhaWxvdmVyX25lZWRzX3RvX2JlX3VwZGF0ZWQpDQo+IHdh bHJjdl9hbHRlcl9zbG90KHdyY29ubiwgc3ViLT5zbG90bmFtZSwNCj4gICBmYWlsb3Zlcl9uZWVk c190b19iZV91cGRhdGVkID8gJm9wdHMuZmFpbG92ZXIgOiBOVUxMLA0KPiAgIHR3b19waGFzZV9u ZWVkc190b19iZV91cGRhdGVkID8gJm9wdHMudHdvcGhhc2UgOiBOVUxMKTsNCj4gfQ0KPiBQR19G SU5BTExZKCk7DQo+IHsNCj4gd2FscmN2X2Rpc2Nvbm5lY3Qod3Jjb25uKTsNCj4gfQ0KPiBQR19F TkRfVFJZKCk7DQo+IH0NCj4gDQo+IDNhLg0KPiBUaGUgYmxvY2sgY29tbWVudCAiQ29uc2lkZXIg d2hpY2ggc2xvdCBvcHRpb24gbXVzdCBiZSBhbHRlcmVkLi4uIiBzYXlzDQo+IFdIRU4gdGhvc2Ug b3B0aW9ucyBuZWVkIHRvIGJlIHVwZGF0ZWQsIGJ1dCBpdCBkb2Vzbid0IHNheSBXSFkuIGUuZy4N Cj4gd2h5IG9ubHkgdXBkYXRlIHRoZSAndHdvX3BoYXNlJyB3aGVuIGl0IGlzIGJlaW5nIGRpc2Fi bGVkIGJ1dCBub3Qgd2hlbg0KPiBpdCBpcyBiZWluZyBlbmFibGVkPyBJbiBvdGhlciB3b3Jkcywg SSB0aGluayB0aGVyZSBuZWVkcyB0byBiZSBtb3JlDQo+IGJhY2tncm91bmQvcmVhc29uIGRldGFp bHMgZ2l2ZW4gaW4gdGhpcyBjb21tZW50Lg0KPiANCj4gfn5+DQo+IA0KPiAzYi4NCj4gQ2FuJ3Qg dGhvc2UgMiBuZXcgdmFyaWFibGUgYXNzaWdubWVudHMgYmUgZG9uZSB1cC1mcm9udCBhbmQgZ3Vh cmQgdGhpcw0KPiBlbnRpcmUgImlmLWJsb2NrIiBpbnN0ZWFkIG9mIHRoZSBjdXJyZW50IHJlcGxh Y2VzW10gZ3VhcmRpbmcgaXQ/IFRoZW4NCj4gdGhlIGNvZGUgaXMgc29tZXdoYXQgc2ltcGxpZmll ZC4NCj4gDQo+IFNVR0dFU1RJT046DQo+IC8qDQo+ICAqIDxpbXByb3ZlZCBjb21tZW50IGhlcmUg dG8gZXhwbGFpbiB0aGVzZSB2YXJpYWJsZXM+DQo+ICAqLw0KPiB1cGRhdGVfZmFpbG92ZXIgPSBy ZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJmYWlsb3ZlciAtIDFdOw0KPiB1cGRhdGVf dHdvX3BoYXNlID0gKHJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnR3b3BoYXNlc3Rh dGUgLQ0KPiAxXSAmJiAhb3B0cy50d29waGFzZSk7DQo+IA0KPiAvKg0KPiAgKiBUcnkgdG8gYWNx dWlyZSB0aGUgY29ubmVjdGlvbiBuZWNlc3NhcnkgZm9yIGFsdGVyaW5nIHNsb3QuDQo+ICAqDQo+ ICAqIFRoaXMgaGFzIHRvIGJlIGF0IHRoZSBlbmQgYmVjYXVzZSBvdGhlcndpc2UgaWYgdGhlcmUg aXMgYW4gZXJyb3Igd2hpbGUNCj4gICogZG9pbmcgdGhlIGRhdGFiYXNlIG9wZXJhdGlvbnMgd2Ug d29uJ3QgYmUgYWJsZSB0byByb2xsYmFjayBhbHRlcmVkDQo+ICAqIHNsb3QuDQo+ICAqLw0KPiBp ZiAodXBkYXRlX2ZhaWxvdmVyIHx8IHVwZGF0ZV90d29fcGhhc2UpDQo+IHsNCj4gICAuLi4NCj4g DQo+ICAgLyogTG9hZCB0aGUgbGlicmFyeSBwcm92aWRpbmcgdXMgbGlicHEgY2FsbHMuICovDQo+ ICAgbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOw0KPiANCj4gICAvKiBUcnkg dG8gY29ubmVjdCB0byB0aGUgcHVibGlzaGVyLiAqLw0KPiAgIG11c3RfdXNlX3Bhc3N3b3JkID0g c3ViLT5wYXNzd29yZHJlcXVpcmVkICYmICFzdWItPm93bmVyc3VwZXJ1c2VyOw0KPiAgIHdyY29u biA9IHdhbHJjdl9jb25uZWN0KHN1Yi0+Y29ubmluZm8sIHRydWUsIHRydWUsDQo+IG11c3RfdXNl X3Bhc3N3b3JkLCBzdWItPm5hbWUsICZlcnIpOw0KPiAgIGlmICghd3Jjb25uKQ0KPiAgICAgZXJl cG9ydChFUlJPUiwgLi4uKTsNCj4gDQo+ICAgUEdfVFJZKCk7DQo+ICAgew0KPiAgICAgd2FscmN2 X2FsdGVyX3Nsb3Qod3Jjb25uLCBzdWItPnNsb3RuYW1lLA0KPiAgICAgICB1cGRhdGVfZmFpbG92 ZXIgPyAmb3B0cy5mYWlsb3ZlciA6IE5VTEwsDQo+ICAgICAgIHVwZGF0ZV90d29fcGhhc2UgPyAm b3B0cy50d29waGFzZSA6IE5VTEwpOw0KPiAgIH0NCj4gICBQR19GSU5BTExZKCk7DQo+ICAgew0K PiAgICAgd2FscmN2X2Rpc2Nvbm5lY3Qod3Jjb25uKTsNCj4gICB9DQo+ICAgUEdfRU5EX1RSWSgp Ow0KPiB9DQoNClR3byB2YXJpYWJsZXMgd2VyZSBhZGRlZCBhbmQgY29tbWVudHMgd2VyZSB1cGRh dGVkLg0KDQo+IC4uLi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYw0KPiANCj4g NC4NCj4gKyBhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICJBTFRFUl9SRVBMSUNBVElPTl9TTE9UICVz ICggIiwNCj4gKyBxdW90ZV9pZGVudGlmaWVyKHNsb3RuYW1lKSk7DQo+ICsNCj4gKyBpZiAoZmFp bG92ZXIpDQo+ICsgYXBwZW5kU3RyaW5nSW5mbygmY21kLCAiRkFJTE9WRVIgJXMgIiwNCj4gKyAo KmZhaWxvdmVyKSA/ICJ0cnVlIiA6ICJmYWxzZSIpOw0KPiArDQo+ICsgaWYgKHR3b19waGFzZSkN Cj4gKyBhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICJUV09fUEhBU0UgJXMlcyAiLA0KPiArICgqdHdv X3BoYXNlKSA/ICJ0cnVlIiA6ICJmYWxzZSIsDQo+ICsgZmFpbG92ZXIgPyAiLCAiIDogIiIpOw0K PiArDQo+ICsgYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAiKTsiKTsNCj4gDQo+IDRhLg0K PiBJSVVDIHRoZSBjb21tYSBsb2dpYyBoZXJlIHdhcyBicm9rZW4gaW4gdjcgd2hlbiB5b3Ugc3dh cHBlZCB0aGUgb3JkZXIuDQo+IEFueXdheSwgSU1PIGl0IHdpbGwgYmUgYmV0dGVyIE5PVCB0byB0 cnkgY29tYmluaW5nIHRoYXQgY29tbWEgbG9naWMNCj4gd2l0aCB0aGUgZXhpc3RpbmcgYXBwZW5k U3RyaW5nSW5mby4gRG9pbmcgaXQgc2VwYXJhdGVseSBpcyBib3RoIGVhc2llcg0KPiBhbmQgbGVz cyBlcnJvci1wcm9uZS4NCj4gDQo+IEZ1cnRoZXJtb3JlLCB0aGUgcGFyZW50aGVzZXMgbGlrZSAi KCp0d29fcGhhc2UpIiBpbnN0ZWFkIG9mIGp1c3QNCj4gIip0d29fcGhhc2UiIHNlZW1lZCBhIGJp dCBvdmVya2lsbC4NCj4gDQo+IFNVR0dFU1RJT046DQo+ICsgaWYgKGZhaWxvdmVyKQ0KPiArIGFw cGVuZFN0cmluZ0luZm8oJmNtZCwgIkZBSUxPVkVSICVzIiwNCj4gKyAqZmFpbG92ZXIgPyAidHJ1 ZSIgOiAiZmFsc2UiKTsNCj4gKw0KPiArICAgaWYgKGZhaWxvdmVyICYmIHR3b19waGFzZSkNCj4g KyAgICAgICBhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICIsICIpOw0KPiArDQo+ICsgaWYgKHR3b19w aGFzZSkNCj4gKyBhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICJUV09fUEhBU0UgJXMiLA0KPiArICp0 d29fcGhhc2UgPyAidHJ1ZSIgOiAiZmFsc2UiKTsNCj4gKw0KPiArIGFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmNtZCwgIiApOyIpOw0KDQpGaXhlZC4NCg0KPiA0Yi4NCj4gTGlrZSBJIHNhaWQgYWJv dmUsIElNTyB0aGUgY3VycmVudCBzZXBhcmF0b3IgbG9naWMgaW4gdjcgaXMgYnJva2VuLiBTbw0K PiBpdCBpcyBhIGJpdCBjb25jZXJuaW5nIHRoZSB0ZXN0cyBhbGwgcGFzc2VkIGFueXdheS4gSG93 IGRpZCB0aGF0DQo+IGhhcHBlbj8gSSB0aGluayB0aGlzIGluZGljYXRlcyB0aGF0IHRoZXJlIG5l ZWRzIHRvIGJlIGFuIGFkZGl0aW9uYWwNCj4gdGVzdCBzY2VuYXJpbyB3aGVyZSBib3RoICdmYWls b3ZlcicgYW5kICd0d29fcGhhc2UnIGdldCBhbHRlcmVkIGF0IHRoZQ0KPiBzYW1lIHRpbWUgc28g dGhpcyBjb2RlIGdldHMgZXhlcmNpc2VkIHByb3Blcmx5Lg0KDQpSaWdodCwgaXQgd2FzIGFkZGVk Lg0KDQo+ID09PT09PQ0KPiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wOTlfdHdvcGhhc2VfYWRk ZWQucGwNCj4gDQo+IDUuDQo+ICsjIERlZmluZSBwcmUtZXhpc3RpbmcgdGFibGVzIG9uIGJvdGgg bm9kZXMNCj4gDQo+IFdoeSBzYXkgdGhleSBhcmUgInByZS1leGlzdGluZyI/IFRoZXkgYXJlIG5v dCBwcmUtZXhpc3RpbmcgYmVjYXVzZSB5b3UNCj4gYXJlIGNyZWF0aW5nIHRoZW0gcmlnaHQgaGVy ZSENCg0KUmVtb3ZlZCB0aGUgd29yZC4NCg0KPiA2Lg0KPiArIyMjIyMjDQo+ICsjIENoZWNrIHRo ZSBjYXNlIHRoYXQgcHJlcGFyZWQgdHJhbnNhY3Rpb25zIGV4aXN0IG9uIHB1Ymxpc2hlciBub2Rl DQo+ICsjIyMjIyMNCj4gDQo+IEkgdGhpbmsgdGhpcyBuZWVkcyBhIHNsaWdodGx5IG1vcmUgZGV0 YWlsZWQgY29tbWVudC4NCj4gDQo+IFNVR0dFU1RJT04gKHRoaXMgaXMganVzdCBhbiBleGFtcGxl LCBidXQgeW91IGNhbiBzdXJlbHkgaW1wcm92ZSBpdCkNCj4gDQo+ICMgQ2hlY2sgdGhlIGNhc2Ug dGhhdCBwcmVwYXJlZCB0cmFuc2FjdGlvbnMgZXhpc3Qgb24gdGhlIHB1Ymxpc2hlciBub2RlLg0K PiAjDQo+ICMgU2luY2UgdHdvX3BoYXNlIGlzICJvZmYiLCB0aGVuIG5vcm1hbGx5IHRoaXMgUFJF UEFSRSB3aWxsIGRvIG5vdGhpbmcgdW50aWwNCj4gIyB0aGUgQ09NTUlUIFBSRVBBUkVELCBidXQg aW4gdGhpcyB0ZXN0LCB3ZSB0b2dnbGUgdGhlIHR3b19waGFzZSB0byAib24iIGFnYWluDQo+ICMg YmVmb3JlIHRoZSBDT01NSVQgUFJFUEFSRUQgaGFwcGVucy4NCg0KQ2hhbmdlZCB3aXRoIGFkanVz dG1lbnRzLg0KDQo+IDcuDQo+IE1heWJlIHRoaXMgdGVzdCBjYXNlIG5lZWRzIGEgZmV3IG1vcmUg b25lLWxpbmUgY29tbWVudHMgZm9yIGVhY2ggb2YNCj4gdGhlIHN1Yi1zdGVwcy4gZS5nLjoNCj4g DQo+ICMgcHJlcGFyZSBhIHRyYW5zYWN0aW9uIHRvIGluc2VydCBzb21lIHJvd3MgdG8gdGhlIHRh YmxlDQo+IA0KPiAjIHZlcmlmeSB0aGUgcHJlcGFyZWQgdHggaXMgbm90IHlldCByZXBsaWNhdGVk IHRvIHRoZSBzdWJzY3JpYmVyDQo+IChiZWNhdXNlICd0d29fcGhhc2UgPSBvZmYnKQ0KPiANCj4g IyB0b2dnbGUgdGhlIHR3b19waGFzZSB0byAnb24nICpiZWZvcmUqIHRoZSBDT01NSVQgUFJFUEFS RUQNCj4gDQo+ICMgdmVyaWZ5IHRoZSBpbnNlcnRlZCByb3dzIGdvdCByZXBsaWNhdGVkIG9rDQoN Ck1vZGlmaWVkIGxpa2UgeW91cnMsIGJ1dCBjaGFuZ2VkIGJhc2VkIG9uIHRoZSBzdWdnZXN0aW9u IGJ5IEdyYW1tYXJseS4NCg0KPiA4Lg0KPiBJSVVDIHRoaXMgdGVzdCB3aWxsIGJlaGF2ZSB0aGUg c2FtZSBldmVuIGlmIHlvdSBET04nVCBkbyB0aGUgdG9nZ2xlDQo+ICd0d29fcGhhc2UgPSBvbicu IFNvIEkgd29uZGVyIGlzIHRoZXJlIHNvbWV0aGluZyBtb3JlIHlvdSBjYW4gZG8gdG8NCj4gdGVz dCB0aGlzIHNjZW5hcmlvIG1vcmUgY29udmluY2luZ2x5Pw0KDQpJIGZvdW5kIGFuIGluZGljYXRv ci4gV2hlbiB0aGUgYXBwbHkgc3RhcnRzLCBpdCBvdXRwdXRzIHRoZSBjdXJyZW50IHN0YXR1cyBv Zg0KdHdvX3BoYXNlIG9wdGlvbi4gSSBhZGRlZCB3YWl0X2Zvcl9sb2coKSB0byBlbnN1cmUgYmVs b3cgYXBwZWFyZWQuIFRob3VnaHQ/DQoNCmBgYA0KCWVyZXBvcnQoREVCVUcxLA0KCQkJKGVycm1z Z19pbnRlcm5hbCgibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlw dGlvbiBcIiVzXCIgdHdvX3BoYXNlIGlzICVzIiwNCgkJCQkJCQkgTXlTdWJzY3JpcHRpb24tPm5h bWUsDQoJCQkJCQkJIE15U3Vic2NyaXB0aW9uLT50d29waGFzZXN0YXRlID09IExPR0lDQUxSRVBf VFdPUEhBU0VfU1RBVEVfRElTQUJMRUQgPyAiRElTQUJMRUQiIDoNCgkJCQkJCQkgTXlTdWJzY3Jp cHRpb24tPnR3b3BoYXNlc3RhdGUgPT0gTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9QRU5ESU5H ID8gIlBFTkRJTkciIDoNCgkJCQkJCQkgTXlTdWJzY3JpcHRpb24tPnR3b3BoYXNlc3RhdGUgPT0g TE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9FTkFCTEVEID8gIkVOQUJMRUQiIDoNCgkJCQkJCQkg Ij8iKSkpOw0KYGBgDQpCZXN0IFJlZ2FyZHMsDQpIYXlhdG8gS3Vyb2RhDQpGVUpJVFNVIExJTUlU RUQNCmh0dHBzOi8vd3d3LmZ1aml0c3UuY29tLyANCg0K