Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ogPcK-0005wU-De for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Oct 2022 12:04:44 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1ogPcJ-00088J-9m for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Oct 2022 12:04:43 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ogPcI-0007wj-M9 for pgsql-hackers@lists.postgresql.org; Thu, 06 Oct 2022 12:04:42 +0000 Received: from esa5.fujitsucc.c3s2.iphmx.com ([68.232.159.76]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ogPcE-0001wi-H4 for pgsql-hackers@lists.postgresql.org; Thu, 06 Oct 2022 12:04:41 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1665057878; x=1696593878; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=TdI27QS5DEYyhkm29y8fciGCG33TnlNwBzzMu57Q8OY=; b=VAI4GMREaGhOgo9R6ofHRgGy6rLvGMuuj+0F4AYkq3gwC9tXSl/mx2Mo V+hCmKlkcoTssIa1zn7mVuojVJuDED8LK15CjW6mttIKTOFmnGF5ruvbk KlX9qGq5nvuBxYvpDH8HuQn/jmYetqa9TToq8B6luLYDEF6f2z5Kwg4J2 F+99sFAClD78LGDuZzswIhSpAWwzTlxRBRqQH09v7nRrGPTm9ZcIPRygu QwepV68tva6/pvTAtABY3s9g6FdaQHLi4rNTOeCT4kmA26EkRxZS81Qdv N+KqnLLhBqWH/UOjMaIqlBeMo3QbFtte8eFgaTF0hmBHXJqLZM7SeYP/o A==; X-IronPort-AV: E=McAfee;i="6500,9779,10491"; a="67099516" X-IronPort-AV: E=Sophos;i="5.95,163,1661785200"; d="scan'208";a="67099516" Received: from mail-os0jpn01lp2108.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.108]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Oct 2022 21:04:34 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=muG/iLuBtE6hZKBEkrEOTAyiWz76MrvgdzOEbYRVD6aq4j4oxRTn8LPQk8WAlogNvAc1hCOL8zpcggWadplE+BVK9fZeHzyX7mQN8LrQoIi6nnkL8sIgNwDv5li7mfyPrYv6SXRMpU8swa/UQ4mGkdyePB7s/ChrGWg0xDFmFrdZCzXYNBKOT9VQ2QQ7/i9AGZmZlU97e8/9qajXmL/LYi7nExaMTyMjxC7BkqD1JsnP6DAdoOKeJzeIT0o3tLiWTmPR9a86nIGF+U7ZgpL+Sc+pGZYGEhBUq8WWuY8lbzuswM3z4ItsBb8YD+Hcx1PtqRr45MF6/KM7BGXjcdmJHg== 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=TdI27QS5DEYyhkm29y8fciGCG33TnlNwBzzMu57Q8OY=; b=UsXMhv2c13lFM5P0LIy5IVrH4pqHnfDBFoq8zgXh1zNow/0Bqz2py5nDBzX+MTDj5fxYiVofy/OnCi8Xf5/X89UVBdPRvj/dF9ZReEwLFIhKIEM+WqeQZD/w1sWYmeeMPOQWf2e++Vn5F8QalZ46bTo4Y8AKDo+tIxFH6v0h5Bhvk0baIi8/Z0YPs3Pdmkymv/nldoLXEehDS0OXsUIBYwv4pQSN9oEXq2Ng8RJcFuDUB4k71xlthoOlYVJfrsit4GIsUQDxHujdfm2xKYnkC060QU7+tf6J3g8CnUstEQ73uWzdKwzUo92YJBYwMcPSbU7hGTHl0hR9i+8y+ZYzFg== 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 OS0PR01MB5716.jpnprd01.prod.outlook.com (2603:1096:604:bb::12) by TYCPR01MB10332.jpnprd01.prod.outlook.com (2603:1096:400:226::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.34; Thu, 6 Oct 2022 12:04:31 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::95b6:444f:6cec:9b22]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::95b6:444f:6cec:9b22%6]) with mapi id 15.20.5676.032; Thu, 6 Oct 2022 12:04:31 +0000 From: "houzj.fnst@fujitsu.com" To: Masahiko Sawada CC: Amit Kapila , "wangw.fnst@fujitsu.com" , Peter Smith , Dilip Kumar , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHYSXX5ZKpBKXxeUU2FhEhnmXQum6zlu9SQgAkSooCACBQ0gIABsTcwgAA1vECAAqHFgIAE/jVwgAXct9CAADkRgIALO/aAgAsRZICAB606AIAS+CyAgAAufICAAWQLgIABHxKAgAA3o4CAAeE3gIAJPr0AgAkxzACAAiJoAIAC0hUAgARvDICABQA2gIAAFvcAgAeBmICABO9ggIAJO+YAgABu1YCACQzpAIAJSy6AgAS+zICABq7mgIABSJUAgAAOtoCAACghoIAB8TqAgAqL+oCADJWRgIAGVm0AgAGAQICAAerMgIABYRWAgAgnZ+CAAXRdgIAGBUSQgAGFeoCAAFYagIABb5aggAGsWiCAATu3gIAEyyEAgABeLHCABFBngIAK5WIAgABrY4CABb89gIADiS0AgAEu2oCAAHBpgIADPWcAgAS/1gCADeB2AIAAPUnQ Date: Thu, 6 Oct 2022 12:04:31 +0000 Message-ID: References: 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?NTBfQWN0aW9uSWQ9YzI2Y2Y4NzgtYzFkMS00YzFjLWIwMDctMGZiYmM3MmYz?= =?utf-8?B?OGQ4O01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFRO+/ou++gA==?= =?utf-8?B?776LO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX1NldERhdGU9MjAyMi0xMC0wNlQxMTo0NTo1MFo7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-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: OS0PR01MB5716:EE_|TYCPR01MB10332:EE_ x-ms-office365-filtering-correlation-id: 4fdcb743-802c-4d56-0f5c-08daa792ed50 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Ypl+Jpc/ZF6AvH17mIlTQ/KNf/lzpYA5bc5W0nemlmrZ3Ppnm+mIldh4pG7tvdy1qreIHQu13W25Vym0oZbYA+pp7JhSKxwXlAPOvjyL4UV4fBSAYlnCv0vUEuW37pGZFAsVrIxdkR0GCHEnbRz5YKIS0uBB4g3Yo3iyaTIlAzRSRZTX1LG+/sew3WXA/OTvMcK70vKZ7IsmWSuRKSWrC5cD4TgggzPA2x0TRckmETaThdErN3YGw3I6LBUWQ91Asmxul25ubkk10EeFvuOVbjAn2nn8xDbwpNRzw42CeuHRYz98QAl8iDoQ26DhfNrwZsPuQPGxltATFNmEMSYtkuNMUIF6W0Jfbx/9Xr83Xb9xzWB0IGuUDZDuZLjFtmLeubt96wmmyL/DqhHiVmIBB/AOcmdo7zKlBhTRBuN/J2WpKLZ3Gx8BTGWWTMd93KfHTOhBG+RPLfyTIJy+3OP/FSZuQqaObzppkC1GcTh0+dHkSqEZtTJ60She1LYajuAUq9qiWFhTC5o5sJUELY1mP87EAmGK40V5jPIdY5PVnhgmiAOAKKAqz0srS8N7y8bPxKj1nKcoOd5ncijRouptHrYcBJfW508avTFN61yQfR+EvCIWtG0oIcnxDSY+8GjaMfUuIG0sbpamK0lAlIjlKg4tQiGk3qPBUFgNeqIyxsiaKW4rXD0bXutAVfn41Wj1ELWF5szJ3FhCF7WecsB/xLKDEFT8I6oS+QQyWIXWbQ5hWlIO2DGLNdCFT4XE7IxGVp7CsdZJTXiJGYccoS1ePZw83iF7DYzXvRhVe6cySxwKf0cAeR07I4Z9fOs3k/R+ x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5716.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(39860400002)(396003)(346002)(136003)(376002)(1590799012)(451199015)(85182001)(966005)(6506007)(9686003)(7696005)(2906002)(8936002)(71200400001)(122000001)(38100700002)(26005)(478600001)(82960400001)(53546011)(86362001)(55016003)(38070700005)(83380400001)(33656002)(186003)(316002)(6916009)(1580799009)(54906003)(41300700001)(8676002)(66946007)(76116006)(64756008)(66476007)(66556008)(66446008)(4326008)(5660300002)(52536014);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RUZQbDBHRjV4UGpyUzVFMzl6ckdXSUFFNG8vSUF6bTdrWkN6TUhPR2ZmL3FR?= =?utf-8?B?ZVQ5UnpQbDBzNzNhUU9NeTM1QzJwQ2sxZzI0RWxOMEhFWXVGc3cwVk1mY2pv?= =?utf-8?B?QTZ3N3ZVbnE0bFNuZ3B2SmdHaTJpM2lZTjJ5SFl5aFJaODNVa2VhUTBZZFFO?= =?utf-8?B?QS9sRjlLc1A1eWIzcFlFVUlUTXV0VmE5dXVUcXhNWDR2SURqL0pJYlQ3YTNk?= =?utf-8?B?R3QwakJlUFM0enhocEZpUGR1UGZySnhWVDNhY2JvQmZ5eEx5Mk15U3VwWnhj?= =?utf-8?B?Q05DVkVlY3NPaVZEam5NNTlWNEJnQVJLRlNGQUxrSGxXQmM4RGFXSkJsajhJ?= =?utf-8?B?SmVpTzMxM2IyOFkrUmh6cjYvZEVoSjFNRHVrMndFMk1zbDlnbGVYYnJyRjF6?= =?utf-8?B?UWVpT29vQXJvd0pYb1VEaW8vYko0cCtuaU9ZUzFrYmpsbTVuMWFCUGR0emZ0?= =?utf-8?B?bHZDakptSnh6Z1lYZ243ZWpscWVLUHNEMDZpLzdDRUlTbVVzYWNFWkpxSVBN?= =?utf-8?B?aERkMmpYRWVlWStFNlBwWTI4WEJxRGpiY1dmVFFvcnM5MEJzeWxpWGtlcWhJ?= =?utf-8?B?MHdXcW04VlcxWVk3azJiQXk1QkhsRDc0bU5jYUtqRk1HK1ZIQ1lPQ1BaNFVQ?= =?utf-8?B?VFU0UXRaUXVvb0djeHFiYVRRZjN0N0Vmd1daVnFIWUlhaHAwRXc1amNOZnlx?= =?utf-8?B?UDJZUjkyUU96Umw2cnYzQXJzcnFldUpwaFQ1TjFPeTJIY2dXYXdyeG8veitn?= =?utf-8?B?bjRMcEZ2MnJsU1BrRjFGMVVUWlNQbnA5QzZMUUloK1BBQVNUZHVUa3hXT0c1?= =?utf-8?B?ZWpPSGc1YUZkOGdMdUFrSWpMbjhPV012cDFoZVJEUytLeDlMOU1iNEwrNEF2?= =?utf-8?B?WFpHRXcxQy9kOTdsd0JIVjVwa1VGdU8zWDU1Q2Y1ay9OQW5vb2VoYUVOZ3Bk?= =?utf-8?B?RmcwMFVUMWJJQnM0S0dOT1pMdnc1K3pTbkFIdUY0dEdJckJSdkcwNGhkYVJp?= =?utf-8?B?TmNReE1CRTZJN1BlV1p3WVJaVUt1Wk1iQnNZWElVWi9aaG5OYlBPUXN6S3Mz?= =?utf-8?B?OU4wYzArMDdNYlgwR0NRbHdlL0NTWWF0VlRpeWt1elhZOWFQRGxIVnZhL01t?= =?utf-8?B?cHE0SWk4czFKL1B2RXhWTXpESEorc21QUmlIeXlQWVM4MzQ0eXdxMzcrNkRw?= =?utf-8?B?Z3plSEZ6aDJPSmpqZWUwQ00zNFdPR2NYaUZKbE9mdEZRM0dSVHp1RHpncHdp?= =?utf-8?B?RmxLL0VTVTN2cDZ0bmUzYmR0Y1VkLzlPSm4ydFRnS1BmRno2SHVKQlBIY3NG?= =?utf-8?B?YzFQNDBGb2dKdmJwc1FkQ1RuSExzejBCMVFaRUZSNURITGVpWmxDN1FCMzQx?= =?utf-8?B?SXpsampkc0xmK1lxcWFpbWtBblRSYkMraS9UZ09XSDV4Ty9Jc096YVoxR0J2?= =?utf-8?B?eEFtVklGQkRIT0tCeFZOMVFvL3lPMnlMZUtVdWUwdkNPeXFvT0FvaFkySUYx?= =?utf-8?B?VU8wR2t0bGt2cldLREpDOW1rSkt2Q2s0ZmZKUG1na2dzb1pTaTExTnFnMnBM?= =?utf-8?B?T3NhZVExUTRhZkFGTTAwY280RFQ5bEhxd0c5bjhUUXlJTFVwK29MeWlWUGp6?= =?utf-8?B?SkFjUktQZ25TcU5XbVgrZUxCdHBZUkt3bkw1a2xhQkZsR3JCdjBvS01DOW1h?= =?utf-8?B?YjZWZXFMTzEweDVTNHgvNFgyUWc4ejBubmVrWlcwTHVkU1JxOWdySDBEb3Yz?= =?utf-8?B?VGV5d0ZnaEFUNktUMUJDWWdnN3NobFFHUWE5MklpdU80RTBZQ2ZhTXdLUCtB?= =?utf-8?B?VlVLMHpEdzB1anlrUlBIY01wWjVmTDk2WmpjRG1qYTgvcVpQYnVaNDhjL2R3?= =?utf-8?B?VmtoUldUSU1pWVR0VXNWbnpJTGkzY0Q3TTZlZzJRTHEzZlh5aDkwbThPNmky?= =?utf-8?B?S2hEcnZpc2oreUNuU1ZGYm1nUWovb210WWJKT1htMDRyR1RtL056Qis1ZmpX?= =?utf-8?B?U3h4UGF4Q2drTW1vOVdCL3hUWjdpdUMrcEsxS0pOdXpaeUREcWNBVU5EQWRR?= =?utf-8?B?QnNUQUV0Z1hvUVVYVEtJbWNEekxSdmlqK0NIa2U3VEwrVEdOeE5yVElZc1BD?= =?utf-8?Q?PMSMcgotGyKKC82+0QljEW12z?= 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: i2e8MQB3Z21FwLkBde57oLEpKfEtxxW0diZFx89sHztwHadxC7LQvgIhGOFwY9T63HoHfw1UwMuob9bgaDpWcMBoIi6J3HxZUPCKiI1ypAowrCv0b9NkJTm7qcqftcBQ2B8ic90z9DNTHWSPvxA4YSBwFJZA5fdazeJtvihYIYGiyen8IobHhSUggW6NFRFqpuuBFZY07Nz9IQLUMpcOCzpGaeUvpEpar0G77sy3hUWh6XKmbT8KxHRzwBNi/2DJTCgwQZFOAKA1vCc/Zq5ZEZK7lsWHZpelKKnUcH4CL8vk0Vg55VTmAhPiBsfvIT04hD92Yh1bVhm/ReXA5eZUAin0I/zIn1ilubUlCEyIt5mizwcuXgf0g+keRoIScv0xgRD1BHoy/sIRQ7mSalqMhY7VCqy7OZa4S084QsVrIYucqYlO9ZGGH7cj1NTeRZVwNgmjR1GPT2w7gTuGPmSehT8WhfyMVoVhrfzSS018hb2rwmo8LNUJ8L6ifwHvy0hzCcaBJm3zZ5+yhBFh29qWHx1O/d1as4H+/Hj1A5cJTaDG54plbz2QzeqCyfloGHUpAVLUpH0EgFGa43fpWxwblLx6CUSXNH5uP12QaUx0EONFLFLJpjjtWq8Mi2hXQVii/VijNLznpe1c7ql/feJISC3c6n/Yb5gFR0mbjnTlsWRGXeHG2vvfBTWrqdxLO1l5XiPEaPneGx3QRi+cO9UgOz+t1tZRuoNVB3VWC1lW42QDwNFAdpCMkSHlmYPRs1L9BvPUvcoX+lh0yGOiQL+QkEzezuVaxnbBD8fnp3l12mgxD4fUS+vH4dBWIjLLsBgz2g9IG0Kw3mueV6PjZoMhJKGjBjFVNHas5zbuYF6H/gUlPmmNP924J9mhy7Ab1igBoftDBCJDCLLczltotbABgw== X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS0PR01MB5716.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4fdcb743-802c-4d56-0f5c-08daa792ed50 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Oct 2022 12:04:31.4544 (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: CDj740WBDuaW7yhuYhEUFLb/gIQYhJPG/oLXcWrj2K6FPQ6+D0KwpD36oF2PV1aeUv7sRXxT7IZ/g+FrA9i6mg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCPR01MB10332 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWFzYWhpa28gU2F3YWRh IDxzYXdhZGEubXNoa0BnbWFpbC5jb20+DQo+IFNlbnQ6IFRodXJzZGF5LCBPY3RvYmVyIDYsIDIw MjIgNDowNyBQTQ0KPiBUbzogSG91LCBaaGlqaWUv5L6vIOW/l+adsCA8aG91emouZm5zdEBmdWpp dHN1LmNvbT4NCj4gQ2M6IEFtaXQgS2FwaWxhIDxhbWl0LmthcGlsYTE2QGdtYWlsLmNvbT47IFdh bmcsIFdlaS/njosg5aiBDQo+IDx3YW5ndy5mbnN0QGZ1aml0c3UuY29tPjsgUGV0ZXIgU21pdGgg PHNtaXRocGIyMjUwQGdtYWlsLmNvbT47IERpbGlwDQo+IEt1bWFyIDxkaWxpcGJhbGF1dEBnbWFp bC5jb20+OyBTaGksIFl1L+S+jSDpm6ggPHNoaXkuZm5zdEBmdWppdHN1LmNvbT47DQo+IFBvc3Rn cmVTUUwgSGFja2VycyA8cGdzcWwtaGFja2Vyc0BsaXN0cy5wb3N0Z3Jlc3FsLm9yZz4NCj4gU3Vi amVjdDogUmU6IFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IGJhY2tn cm91bmQgd29ya2VycyBhbmQNCj4gcGFyYWxsZWwgYXBwbHkNCj4gDQo+IE9uIFR1ZSwgU2VwIDI3 LCAyMDIyIGF0IDk6MjYgUE0gaG91emouZm5zdEBmdWppdHN1LmNvbQ0KPiA8aG91emouZm5zdEBm dWppdHN1LmNvbT4gd3JvdGU6DQo+ID4NCj4gPiBPbiBTYXR1cmRheSwgU2VwdGVtYmVyIDI0LCAy MDIyIDc6NDAgUE0gQW1pdCBLYXBpbGENCj4gPGFtaXQua2FwaWxhMTZAZ21haWwuY29tPiB3cm90 ZToNCj4gPiA+DQo+ID4gPiBPbiBUaHUsIFNlcCAyMiwgMjAyMiBhdCAzOjQxIFBNIEFtaXQgS2Fw aWxhIDxhbWl0LmthcGlsYTE2QGdtYWlsLmNvbT4NCj4gPiA+IHdyb3RlOg0KPiA+ID4gPg0KPiA+ ID4gPiBPbiBUaHUsIFNlcCAyMiwgMjAyMiBhdCA4OjU5IEFNIHdhbmd3LmZuc3RAZnVqaXRzdS5j b20NCj4gPiA+ID4gPHdhbmd3LmZuc3RAZnVqaXRzdS5jb20+IHdyb3RlOg0KPiA+ID4gPiA+DQo+ ID4gPiA+DQo+ID4gPiA+IEZldyBjb21tZW50cyBvbiB2MzMtMDAwMQ0KPiA+ID4gPiA9PT09PT09 PT09PT09PT09PT09PT09PQ0KPiA+ID4gPg0KPiA+ID4NCj4gPiA+IFNvbWUgbW9yZSBjb21tZW50 cyBvbiB2MzMtMDAwMQ0KPiA+ID4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiA+ IDEuDQo+ID4gPiArIC8qIEluZm9ybWF0aW9uIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgTG9naWNh bFJlcFdvcmtlciBzbG90LiAqLw0KPiA+ID4gKyB1aW50MTYgbG9naWNhbHJlcF93b3JrZXJfZ2Vu ZXJhdGlvbjsNCj4gPiA+ICsNCj4gPiA+ICsgaW50IGxvZ2ljYWxyZXBfd29ya2VyX3Nsb3Rfbm87 DQo+ID4gPiArfSBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkOw0KPiA+ID4NCj4gPiA+IEJvdGgg dGhlc2UgdmFyaWFibGVzIGFyZSByZWFkL2NoYW5nZWQgYnkgbGVhZGVyL3BhcmFsbGVsIHdvcmtl cnMgd2l0aG91dA0KPiA+ID4gdXNpbmcgYW55IGxvY2sgKG11dGV4KS4gSXQgc2VlbXMgY3VycmVu dGx5IHRoZXJlIGlzIG5vIHByb2JsZW0gYmVjYXVzZSBvZg0KPiB0aGUNCj4gPiA+IHdheSB0aGUg cGF0Y2ggaXMgdXNpbmcgaW5fcGFyYWxsZWxfYXBwbHlfeGFjdCBidXQgSSB0aGluayBpdCB3b24n dCBiZSBhIGdvb2QNCj4gaWRlYQ0KPiA+ID4gdG8gcmVseSBvbiBpdC4gSSBzdWdnZXN0IHVzaW5n IG11dGV4IHRvIG9wZXJhdGUgb24gdGhlc2UgdmFyaWFibGVzIGFuZCBhbHNvDQo+IGNoZWNrDQo+ ID4gPiBpZiB0aGUgc2xvdF9ubyBpcyBpbiBhIHZhbGlkIHJhbmdlIGFmdGVyIHJlYWRpbmcgaXQg aW4gcGFyYWxsZWxfYXBwbHlfZnJlZV93b3JrZXIsDQo+ID4gPiBvdGhlcndpc2UgZXJyb3Igb3V0 IHVzaW5nIGVsb2cuDQo+ID4NCj4gPiBDaGFuZ2VkLg0KPiA+DQo+ID4gPiAyLg0KPiA+ID4gIHN0 YXRpYyB2b2lkDQo+ID4gPiAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdG9wKFN0cmluZ0luZm8gcykN Cj4gPiA+ICB7DQo+ID4gPiAtIGlmICghaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pDQo+ID4gPiAr IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IE5VTEw7IFRyYW5zQXBwbHlBY3Rpb24g YXBwbHlfYWN0aW9uOw0KPiA+ID4gKw0KPiA+ID4gKyBpZiAoIWFtX3BhcmFsbGVsX2FwcGx5X3dv cmtlcigpICYmDQo+ID4gPiArICghaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gJiYgIXN0cmVhbV9h cHBseV93b3JrZXIpKQ0KPiA+ID4gICBlcmVwb3J0KEVSUk9SLA0KPiA+ID4gICAoZXJyY29kZShF UlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksDQo+ID4gPiAgIGVycm1zZ19pbnRlcm5hbCgiU1RS RUFNIFNUT1AgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVEFSVCIpKSk7DQo+ID4gPg0KPiA+ID4g VGhpcyBjaGVjayB3b24ndCBiZSBhYmxlIHRvIGRldGVjdCBtaXNzaW5nIHN0cmVhbSBzdGFydCBt ZXNzYWdlcyBmb3IgcGFyYWxsZWwNCj4gPiA+IGFwcGx5IHdvcmtlcnMgYXBhcnQgZnJvbSB0aGUg Zmlyc3QgcGFpciBvZiBzdGFydC9zdG9wLiBJIHRob3VnaHQgb2YgYWRkaW5nDQo+ID4gPiBpbl9y ZW1vdGVfdHJhbnNhY3Rpb24gY2hlY2sgYWxvbmcgd2l0aA0KPiA+ID4gYW1fcGFyYWxsZWxfYXBw bHlfd29ya2VyKCkgdG8gZGV0ZWN0IHRoZSBzYW1lIGJ1dCB0aGF0IGFsc28gd29uJ3Qgd29yaw0K PiA+ID4gYmVjYXVzZSB0aGUgcGFyYWxsZWwgd29ya2VyIGRvZXNuJ3QgcmVzZXQgaXQgYXQgdGhl IHN0b3AgbWVzc2FnZS4NCj4gPiA+IEFub3RoZXIgcG9zc2liaWxpdHkgaXMgdG8gaW50cm9kdWNl IHlldCBhbm90aGVyIHZhcmlhYmxlIGZvciB0aGlzIGJ1dCB0aGF0DQo+IGRvZXNuJ3QNCj4gPiA+ IHNlZW0gd29ydGggaXQuIEkgd291bGQgbGlrZSB0byBrZWVwIHRoaXMgY2hlY2sgc2ltcGxlLg0K PiA+ID4gQ2FuIHlvdSB0aGluayBvZiBhbnkgYmV0dGVyIHdheT8NCj4gPg0KPiA+IEkgZmVlbCB3 ZSBjYW4gcmV1c2UgdGhlIGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uIGluIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciB0bw0KPiA+IHNpbXBsaWZ5IHRoZSBjaGVjayB0aGVyZS4gSSB0cmllZCB0byBzZXQg dGhpcyBmbGFnIGluIHBhcmFsbGVsIGFwcGx5IHdvcmtlcg0KPiA+IHdoZW4gc3RyZWFtIHN0YXJ0 cyBhbmQgcmVzZXQgaXQgd2hlbiBzdHJlYW0gc3RvcCBzbyB0aGF0IHdlIGNhbiBkaXJlY3RseSBj aGVjaw0KPiA+IHRoaXMgZmxhZyBmb3IgZHVwbGljYXRlIHN0cmVhbSBzdGFydCBtZXNzYWdlIGFu ZCBvdGhlciByZWxhdGVkIHRoaW5ncy4NCj4gPg0KPiA+ID4gMy4gSSB0aGluayB3ZSBjYW4gc2tp cCBzZW5kaW5nIHN0YXJ0L3N0b3AgbWVzc2FnZXMgZnJvbSB0aGUgbGVhZGVyIHRvIHRoZQ0KPiA+ ID4gcGFyYWxsZWwgd29ya2VyIGJlY2F1c2UgdW5saWtlIGFwcGx5IHdvcmtlciBpdCB3aWxsIHBy b2Nlc3Mgb25seSBvbmUNCj4gPiA+IHRyYW5zYWN0aW9uLWF0LWEtdGltZS4gSG93ZXZlciwgaXQg aXMgbm90IGNsZWFyIHdoZXRoZXIgdGhhdCBpcyB3b3J0aCB0aGUNCj4gZWZmb3J0DQo+ID4gPiBi ZWNhdXNlIGl0IGlzIHNlbnQgYWZ0ZXIgbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSBjaGFuZ2Vz LiBGb3Igbm93LCBJIGhhdmUNCj4gPiA+IGFkZGVkIGEgY29tbWVudCBmb3IgdGhpcyBpbiB0aGUg YXR0YWNoZWQgcGF0Y2ggYnV0IGxldCBtZSBpZiBJIGFtIG1pc3NpbmcNCj4gPiA+IHNvbWV0aGlu ZyBvciBpZiBJIGFtIHdyb25nLg0KPiA+DQo+ID4gSSB0aGUgc3VnZ2VzdGVkIGNvbW1lbnRzIGxv b2sgZ29vZC4NCj4gPg0KPiA+ID4gNC4NCj4gPiA+IHBvc3RncmVzPSMgc2VsZWN0IHBpZCwgbGVh ZGVyX3BpZCwgYXBwbGljYXRpb25fbmFtZSwgYmFja2VuZF90eXBlIGZyb20NCj4gPiA+IHBnX3N0 YXRfYWN0aXZpdHk7DQo+ID4gPiAgIHBpZCAgfCBsZWFkZXJfcGlkIHwgYXBwbGljYXRpb25fbmFt ZSB8ICAgICAgICAgYmFja2VuZF90eXBlDQo+ID4gPiAtLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gPiAgMjc2 MjQgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8IGxvZ2ljYWwgcmVwbGljYXRpb24g bGF1bmNoZXINCj4gPiA+ICAxNzMzNiB8ICAgICAgICAgICAgfCBwc3FsICAgICAgICAgICAgIHwg Y2xpZW50IGJhY2tlbmQNCj4gPiA+ICAyNjMxMiB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgIHwgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXINCj4gPiA+ICAyNjM3NiB8ICAgICAgICAg ICAgfCBwc3FsICAgICAgICAgICAgIHwgY2xpZW50IGJhY2tlbmQNCj4gPiA+ICAxNDAwNCB8ICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIN Cj4gPiA+DQo+ID4gPiBIZXJlLCB0aGUgc2Vjb25kIHdvcmtlciBlbnRyeSBpcyBmb3IgdGhlIHBh cmFsbGVsIHdvcmtlci4gSXNuJ3QgaXQgYmV0dGVyIGlmIHdlDQo+ID4gPiBkaXN0aW5ndWlzaCB0 aGlzIGJ5IGtlZXBpbmcgdHlwZSBhcyBhIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgd29y a2VyPyBJDQo+IHRoaW5rDQo+ID4gPiBmb3IgdGhpcyB5b3UgbmVlZCB0byBjaGFuZ2UgYmd3X3R5 cGUgaW4gbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKCkuDQo+ID4NCj4gPiBDaGFuZ2VkLg0KPiA+ DQo+ID4gPiA1LiBDYW4gd2UgbmFtZSBwYXJhbGxlbF9hcHBseV9zdWJ4YWN0X2luZm9fYWRkKCkg YXMNCj4gPiA+IHBhcmFsbGVsX2FwcGx5X3N0YXJ0X3N1YnRyYW5zKCk/DQo+ID4gPg0KPiA+ID4g QXBhcnQgZnJvbSB0aGUgYWJvdmUsIEkgaGF2ZSBhZGRlZC9lZGl0ZWQgYSBmZXcgY29tbWVudHMg YW5kIG1hZGUgYSBmZXcNCj4gPiA+IG90aGVyIGNvc21ldGljIGNoYW5nZXMgaW4gdGhlIGF0dGFj aGVkLg0KPiA+DQo+IA0KPiBXaGlsZSBsb29raW5nIGF0IHYzNSBwYXRjaCwgSSByZWFsaXplZCB0 aGF0IHRoZXJlIGFyZSBzb21lIGNhc2VzIHdoZXJlDQo+IHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9u IGdldHMgc3R1Y2sgZGVwZW5kaW5nIG9uIHBhcnRpdGlvbmVkIHRhYmxlDQo+IHN0cnVjdHVyZS4g Rm9yIGluc3RhbmNlLCB0aGVyZSBhcmUgZm9sbG93aW5nIHRhYmxlcywgcHVibGljYXRpb24sIGFu ZA0KPiBzdWJzY3JpcHRpb246DQo+IA0KPiAqIE9uIHB1Ymxpc2hlcg0KPiBjcmVhdGUgdGFibGUg cCAoYyBpbnQpIHBhcnRpdGlvbiBieSBsaXN0IChjKTsNCj4gY3JlYXRlIHRhYmxlIGMxIHBhcnRp dGlvbiBvZiBwIGZvciB2YWx1ZXMgaW4gKDEpOw0KPiBjcmVhdGUgdGFibGUgYzIgKGMgaW50KTsN Cj4gY3JlYXRlIHB1YmxpY2F0aW9uIHRlc3RfcHViIGZvciB0YWJsZSBwLCBjMSwgYzIgd2l0aA0K PiAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSAndHJ1ZScpOw0KPiANCj4gKiBPbiBzdWJz Y3JpYmVyDQo+IGNyZWF0ZSB0YWJsZSBwIChjIGludCkgcGFydGl0aW9uIGJ5IGxpc3QgKGMpOw0K PiBjcmVhdGUgdGFibGUgYzEgcGFydGl0aW9uIG9mIHAgZm9yIHZhbHVlcyBJbiAoMik7DQo+IGNy ZWF0ZSB0YWJsZSBjMiBwYXJ0aXRpb24gb2YgcCBmb3IgdmFsdWVzIEluICgxKTsNCj4gY3JlYXRl IHN1YnNjcmlwdGlvbiB0ZXN0X3N1YiBjb25uZWN0aW9uICdwb3J0PTU1NTEgZGJuYW1lPXBvc3Rn cmVzJw0KPiBwdWJsaWNhdGlvbiB0ZXN0X3B1YiB3aXRoIChzdHJlYW1pbmcgPSAncGFyYWxsZWwn LCBjb3B5X2RhdGEgPQ0KPiAnZmFsc2UnKTsNCj4gDQo+IE5vdGUgdGhhdCB3aGlsZSBib3RoIHRo ZSBwdWJsaXNoZXIgYW5kIHRoZSBzdWJzY3JpYmVyIGhhdmUgdGhlIHNhbWUNCj4gbmFtZSB0YWJs ZXMgdGhlIHBhcnRpdGlvbiBzdHJ1Y3R1cmUgaXMgZGlmZmVyZW50IGFuZCByb3dzIGdvIHRvIGEN Cj4gZGlmZmVyZW50IHRhYmxlIG9uIHRoZSBzdWJzY3JpYmVyIChlZywgcm93IGM9MSB3aWxsIGdv IHRvIGMyIHRhYmxlIG9uDQo+IHRoZSBzdWJzY3JpYmVyKS4gSWYgdHdvIGN1cnJlbnQgdHJhbnNh Y3Rpb25zIGFyZSBleGVjdXRlZCBhcyBmb2xsb3dzLA0KPiB0aGUgYXBwbHkgd29ya2VyIChpZywg dGhlIGxlYWRlciBhcHBseSB3b3JrZXIpIHdhaXRzIGZvciBhIGxvY2sgb24gYzINCj4gaGVsZCBi eSBpdHMgcGFyYWxsZWwgYXBwbHkgd29ya2VyOg0KPiANCj4gKiBUWC0xDQo+IEJFR0lOOw0KPiBJ TlNFUlQgSU5UTyBwIFNFTEVDVCAxIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAwKTsgLS0t IGNoYW5nZXMgYXJlDQo+IHN0cmVhbWVkDQo+IA0KPiAgICAgKiBUWC0yDQo+ICAgICBCRUdJTjsN Cj4gICAgIFRSVU5DQVRFIGMyOyAtLS0gd2FpdCBmb3IgYSBsb2NrIG9uIGMyDQo+IA0KPiAqIFRY LTENCj4gSU5TRVJUIElOVE8gcCBTRUxFQ1QgMSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAw MCk7DQo+IENPTU1JVDsNCj4gDQo+IFRoaXMgbWlnaHQgbm90IGJlIGEgY29tbW9uIGNhc2UgaW4g cHJhY3RpY2UgYnV0IGl0IGNvdWxkIG1lYW4gdGhhdA0KPiB0aGVyZSBpcyBhIHJlc3RyaWN0aW9u IG9uIGhvdyBwYXJ0aXRpb25lZCB0YWJsZXMgc2hvdWxkIGJlIHN0cnVjdHVyZWQNCj4gb24gdGhl IHB1Ymxpc2hlciBhbmQgdGhlIHN1YnNjcmliZXIgd2hlbiB1c2luZyBzdHJlYW1pbmcgPSAncGFy YWxsZWwnLg0KPiBXaGVuIHRoaXMgaGFwcGVucywgc2luY2UgdGhlIGxvZ2ljYWwgcmVwbGljYXRp b24gY2Fubm90IG1vdmUgZm9yd2FyZA0KPiB0aGUgdXNlcnMgbmVlZCB0byBkaXNhYmxlIHBhcmFs bGVsLWFwcGx5IG1vZGUgb3IgaW5jcmVhc2UNCj4gbG9naWNhbF9kZWNvZGluZ193b3JrX21lbS4g V2UgY291bGQgZGVzY3JpYmUgdGhpcyBsaW1pdGF0aW9uIGluIHRoZQ0KPiBkb2MgYnV0IGl0IHdv dWxkIGJlIGhhcmQgZm9yIHVzZXJzIHRvIGRldGVjdCBwcm9ibGVtYXRpYyB0YWJsZQ0KPiBzdHJ1 Y3R1cmUuDQoNClRoYW5rcyBmb3IgdGVzdGluZyB0aGlzIQ0KDQpJIHRoaW5rIHRoZSByb290IHJl YXNvbiBmb3IgdGhpcyBraW5kIG9mIGRlYWRsb2NrIHByb2JsZW1zIGlzIHRoZSB0YWJsZQ0Kc3Ry dWN0dXJlIGRpZmZlcmVuY2UgYmV0d2VlbiBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIoc2ltaWxh ciB0byB0aGUgdW5pcXVlDQpkaWZmZXJlbmNlIHJlcG9ydGVkIGVhcmxpZXJbMV0pLiBTbywgSSB0 aGluayB3ZSdkIGJldHRlciBkaXNhbGxvdyB0aGlzIGNhc2UuIEZvcg0KZXhhbXBsZSB0byBhdm9p ZCB0aGUgcmVwb3J0ZWQgcHJvYmxlbSwgd2UgY291bGQgb25seSBzdXBwb3J0IHBhcmFsbGVsIGFw cGx5IGlmDQpwdWJ2aWFyb290IGlzIGZhbHNlIG9uIHB1Ymxpc2hlciBhbmQgcmVwbGljYXRlZCB0 YWJsZXMnIHR5cGVzKHJlbGtpbmQpIGFyZSB0aGUNCnNhbWUgYmV0d2VlbiBwdWJsaXNoZXIgYW5k IHN1YnNjcmliZXIuDQoNCkFsdGhvdWdoIGl0IG1pZ2h0IHJlc3RyaWN0IHNvbWUgdXNlIGNhc2Vz LCBidXQgSSB0aGluayBpdCBvbmx5IHJlc3RyaWN0IHRoZQ0KY2FzZXMgd2hlbiB0aGUgcGFydGl0 aW9uZWQgdGFibGUncyBzdHJ1Y3R1cmUgaXMgZGlmZmVyZW50IGJldHdlZW4gcHVibGlzaGVyIGFu ZA0Kc3Vic2NyaWJlci4gVXNlciBjYW4gc3RpbGwgdXNlIHBhcmFsbGVsIGFwcGx5IGZvciBjYXNl cyB3aGVuIHRoZSB0YWJsZQ0Kc3RydWN0dXJlIGlzIHRoZSBzYW1lIGJldHdlZW4gcHVibGlzaGVy IGFuZCBzdWJzY3JpYmVyIHdoaWNoIHNlZW1zIGFjY2VwdGFibGUNCnRvIG1lLiBBbmQgd2UgY2Fu IGFsc28gZG9jdW1lbnQgdGhhdCB0aGUgZmVhdHVyZSBpcyBleHBlY3RlZCB0byBiZSB1c2VkIGZv ciB0aGUNCmNhc2Ugd2hlbiB0YWJsZXMnIHN0cnVjdHVyZSBhcmUgdGhlIHNhbWUuIFRob3VnaHRz ID8NCg0KQlRXLCB0byBhY2hpZXZlIHRoaXMsIHdlIGNvdWxkIHNlbmQgdGhlIHB1Ymxpc2hlcidz IHJlbGtpbmQgYWxvbmcgd2l0aCB0aGUNClJFTEFUSU9OIG1lc3NhZ2UgYW5kIGNvbXBhcmUgaXQg d2l0aCByZWxraW5kIG9uIHN1YnNjcmliZXIuIFdlIGNvdWxkIHJlcG9ydCBhbg0KZXJyb3IgaWYg cHVibGlzaGVyJ3Mgb3Igc3Vic2NyaWJlcidzIHRhYmxlIGlzIGEgcGFydGl0aW9uZWQgdGFibGUu DQoNCj4gQlRXLCB3aGVuIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdhaXRzIGZvciBhIGxvY2sg b24gYzIgaW4gdGhlIGFib3ZlDQo+IGV4YW1wbGUsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIg aXMgaW4gYSBidXN5LWxvb3AsIHdoaWNoIHNob3VsZCBiZQ0KPiBmaXhlZC4NCg0KWWVhaCwgSXQg c2VlbXMgd2UgdXNlZCBhc3luYyBtb2RlIHdoZW4gcmVjZWl2aW5nIG1lc3NhZ2Ugd2hpY2ggY2F1 c2VkIHRoaXMsDQpJIHBsYW4gdG8gaW1wcm92ZSB0aGF0IHBhcnQgc29vbi4NCg0KWzFdIGh0dHBz Oi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FEMjFBb0RQSHN0aiUyQmpEM09EUy1i ZDF1TSUyQlpFJTNEY3BES2Y4bnBlTkZaRCUyQllkTTI4ZkElNDBtYWlsLmdtYWlsLmNvbQ0KDQpC ZXN0IHJlZ2FyZHMsDQpIb3UgemoNCg0KDQo=