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.96) (envelope-from ) id 1wryoo-000KAT-07 for pgsql-bugs@arkaria.postgresql.org; Thu, 06 Aug 2026 14:11:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wryon-004fH9-1p for pgsql-bugs@arkaria.postgresql.org; Thu, 06 Aug 2026 14:11:33 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wryon-004fGu-0V for pgsql-bugs@lists.postgresql.org; Thu, 06 Aug 2026 14:11:32 +0000 Received: from mail-norwayeastazon11023074.outbound.protection.outlook.com ([40.107.159.74] helo=OSPPR02CU001.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wryok-00000000ZxU-06Zg for pgsql-bugs@lists.postgresql.org; Thu, 06 Aug 2026 14:11:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mE3g+HIr8VQVlHPT9/QtzKaF4q1lNiYoWPKiGZ+URZI9z3XvQxlsWMy/9ouDULY7i1tuyl/YWJHfHAvj3h1gXR7bMF3Hc86V30HQfHYC2aHRokcFWJJsIgE8FIan+WYPfIwU0VmMUTVxv5r0/XrLXEWgN7Y4/7JnTlJiAwLC1F3kas/3+XQlUIFYZEZ6zaqZQhV71kxYnJNZqGzsf+mvmActyxLgZ5WqI1RP/R6zyi6b+J4kJrXElEl+hbG2A15/mECXQjpiUKtOZea5885tN6nXGQJkFz7fAB5KdiJCdkKtQ1YPkSxcMGzRmeau7bKbpVg/ZfjV2eda5uvoc7WK2A== 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=ZGkE+88Jxw+ytZsS2uZKjiWXV1j6AMQOKDk8WkpBxfc=; b=IvtlgfdYLU7BwPwIdjntZKCXmE4d+tsDMke3CxVjprTnE92vJbzbBRsxL3SOafx3X2yve0rPQm5tCp37Rxv0KlgA2JKkH/KnQqcbg6CImS4gEwoR4MBxj3BiGke36ZGqdAVDv1hTbB2co++dTZCxa9rZ6qgOeBtCrLiYCOhXDBj7jnJHmjKdXcLzQ/XdjzPGFMJlzSbhZ0w643+ctJd1ZQffxm9jS/YJaEcgE0zn2t2Pxzg+u80GVGAvE+MxDCAliUa6FRRu7no7zwrPNfWjBRJWQpnEpLzYmZw7q/B4eo2p/fm8305PyCVJ5EB7rNirFfrgzaA6pZzZOBXHtUBolg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=axisinto.nl; dmarc=pass action=none header.from=axisinto.nl; dkim=pass header.d=axisinto.nl; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axisinto.nl; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZGkE+88Jxw+ytZsS2uZKjiWXV1j6AMQOKDk8WkpBxfc=; b=DH+M2B5wUXvl7mtHvvC9D/AwqcoMcobsqBPft1TbOHVEzlJ+ZPd1vsN1VjGdTLP0Gfi3cU0GyCsCkuF5CfqtK3NscH8Yj7ASNL6PS38qZBoTVvTW4Hj5nTXcEGrgWfO8PVl6t4HTYIm7mfzW9CoYpKVayifubEQGu962QySO4gY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=axisinto.nl; Received: from PA4PR08MB7570.eurprd08.prod.outlook.com (2603:10a6:102:26f::18) by AS2PR08MB9048.eurprd08.prod.outlook.com (2603:10a6:20b:5fe::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.16; Thu, 6 Aug 2026 14:11:25 +0000 Received: from PA4PR08MB7570.eurprd08.prod.outlook.com ([fe80::cb24:452:d31b:f4c7]) by PA4PR08MB7570.eurprd08.prod.outlook.com ([fe80::cb24:452:d31b:f4c7%5]) with mapi id 15.21.0292.018; Thu, 6 Aug 2026 14:11:23 +0000 Content-Type: multipart/alternative; boundary="------------GTnrm4kv0VDL9g3Cbei0Vj0z" Message-ID: <943a83bf-78d1-4231-a9de-c24740e09d7a@axisinto.nl> Date: Thu, 6 Aug 2026 16:11:21 +0200 User-Agent: Mozilla Thunderbird Content-Language: en-GB, nl To: pgsql-bugs@lists.postgresql.org From: Bram van der Vos Subject: file corruption goes undetected X-ClientProxiedBy: AM9P250CA0016.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:21c::21) To PA4PR08MB7570.eurprd08.prod.outlook.com (2603:10a6:102:26f::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PA4PR08MB7570:EE_|AS2PR08MB9048:EE_ X-MS-Office365-Filtering-Correlation-Id: c84649c1-32af-4fd0-e51c-08def3c49851 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|7149299003|6049299003|376014|366016|1800799024|13003099007|4053099003|6133799003|56012099006|10067099003|8096899003|4076899003|18002099003|3023799007; X-Microsoft-Antispam-Message-Info: RGe7S/4hTQK9osxfVzBsXJPpS11y6hUkK1NcnZmmauN//aWPvjNq+3FZQi9g4hrMUQZkePNGyo+wsydVPD0MkhvHlehWtWl9wSm5z2ukIxOXP3hLXvH/5IKIZo/sF+lG2K5Ku7SshmqR32XGhGEV4Qms31VEP/m3QCZvFSCGdkb9i9TbRcXGwWvvChaiCNzApRCmGIZbgUElw9phIOcWQNKzSscljMqkGBXA2i+SKpYiihZ4I92pkyJaapXyNr1qDdjltBZ+pWIPp6x63IuQJ3mcNh6ARVuEHvGGmWwoE47mh/CyMaubH141DyMJRWNVfY/MbBLOG2oOqoXsq6q42eniO02hoSgAuMTW0NXnKQHw/QT0cxY5reYFXvWZ0yxGSABxJxE8N1cp0kHBvo+dZ0SLkuhdafyuszIQNk8PvvsA0w4ULq/rRMVGo3Uaf4A1Ogb2UxUcm3LlHoW9Grz0qSnKxi9SQ+xhzMclVN8E3fwzI7qXM4B2nk4KoQ+m1BjRoKy6i44gem1MI85w6vb+U7JMKiKiNGz4wpQeVnmywDHj9jWHTWlcau31JtRzQzXEgnm2Ffp1DdpKHI4IUzc45ODVTXFZNNZWq/rR1iZFVrw= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR08MB7570.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(7149299003)(6049299003)(376014)(366016)(1800799024)(13003099007)(4053099003)(6133799003)(56012099006)(10067099003)(8096899003)(4076899003)(18002099003)(3023799007);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UHNLVjhGcDA0WWw3eldQb0tWNUZ2M3l4bHRpYzRqRXlEUWJQNFJKNTQyc0pq?= =?utf-8?B?U3ZnaldVR29sZThSMmdDVG53djFKcDhYaEJCd3FOREl5Tno5clAvQ2xCNXNT?= =?utf-8?B?T05rTW94YjBPZGNNS3Q3V0VXWW5kRk1JOTl4S0tNY2J0cWpDdHNVVWxFcGZX?= =?utf-8?B?WHpsMmJDY3AzOGtidmpZL0pTUlcwQ2dra1kvSDdadVRyMGZFaUkvYnVRVWc5?= =?utf-8?B?Sk1hdUx1dWE0bVZUaUFqK2hZY3gvSzBLcGVKNTBDWnRQU3M1NXFRWWhsRkZJ?= =?utf-8?B?eW9XT3JpVk51NmFsbTZld3FsbTlta2lLYTJHKzI0SWw4RzFoVEtnU2swQTNn?= =?utf-8?B?YkxLTnFXNXBpSlN6Mi9IZ1BaWWl2VnhUOVkrOTlrcmc2dDh5ZWJOOWZSeHVu?= =?utf-8?B?c250cjNRNzA0UWM4RkZGS3UwN2xCcmxoY2QvZDlIdzdJUVFQeHd4NGQxbnZO?= =?utf-8?B?enpMSkNwV3pRUjBVWHYyRmt0NzdpaTZhM2o4cVdGa25BeTlZclFlVmlYeEpZ?= =?utf-8?B?Q0Jpakk5R0t2S3k0a3ZFK2xQT3hBN1FjRUUxQzcrSXRIN3FoVmxjMUl0ZitV?= =?utf-8?B?TDZtRmZ4elBHOHkxTitlL3RaSVZ2eWFoZjk5K2JXbm1YSVpuQytIbHhxVVIy?= =?utf-8?B?bzI2a0hPRXM4b3VMbEVJYzJUVGlSSXo1bm5xVzlPS2RWTEl2S1k2Wit0dWFQ?= =?utf-8?B?bEpQb2pQUzNzMm12MDI0bmFGeHhFbmlhZFc0ODhpNDM1UmlpRXZUTWxCTmpP?= =?utf-8?B?cmltb0FKUk1UTVdhcjB3OWhPS2FHdDlPSWJWMVAxOWFPc2lQc0hMbFNTSk9Q?= =?utf-8?B?di9zSm5tMDZSRmQ1OFhLOE5tdUt6QmJMTjZPOG9xZzhLWC9YWnJabzd2TjJa?= =?utf-8?B?SXowcnFzdDhCV3hvb2Fwd3FXLytpVEY2VncwSzZZWkpNckRld3hWSXh6SWpo?= =?utf-8?B?VzR5Q0VrUnNIRnlIdEh0bitaSzF1MVd4Q25QUmhUdUpTMklCc2JjSzhDUjVr?= =?utf-8?B?R2t4RGpaMlBKU0hjQ0xNUjZ6VG9QYTR0bTREY09TRXpyaHpONGVyck9JeFpt?= =?utf-8?B?QzRyZ1p1VVNqZXlqczM2alc2UkVKSEM3SzVZKzNqNS9Mb1RQa2J0K0ZRb0dF?= =?utf-8?B?WGs5N25qUENLU2F3R2NSS0FEaFRpQXRTT1dxSCtSTTZ1R3hINFNFNktXR0pt?= =?utf-8?B?S3oyNW9KUGRwRlZCMUY2RitsdXFZNzl0YnJMR0k2b1YvdzB1bzkrdEh2ZGhP?= =?utf-8?B?Yk03WWJLeEVmQlpiNC9uVGtEN2hVSURTa1JSQ3NVdlJXeTR5MFBvMVpWOHZI?= =?utf-8?B?UDY0bmpGemhpTXcyY0dzZmtNd2hTL1lNbnJUT1pwZ1ptSGJOajZhaUx5M0lJ?= =?utf-8?B?RVJZZ1NKaXJJMXZ3OUJjZVVlTEF5alp0MVRLRlBkSEZoSVpOU3QyTUhLSnRx?= =?utf-8?B?VXZ6WkJ2U3FqczFPd0lZek1hVFpxK0w3UCszbk5Ja2hLRmFiNGI1SUpnWEJo?= =?utf-8?B?ZytndXJtOE5BUWRQSXlwKzNnNllOZkZ0TkxPVjNBTUc4UUlBNkxmUW5sUDVF?= =?utf-8?B?bG1iVzJqWHVxNW9ZYURnZjJ2ZXpTVTI0MkRuaDh6S2w4ckhxMFNqaHdqL0FZ?= =?utf-8?B?OXJaU1cxZENhU20vUWxOSksyY2F3QlZ1MWVVaVFYNmNNYzBEUjJhVUpVRmNB?= =?utf-8?B?clMzSVd5dzI2NjU3SGlPeStkTkJjNEdLU25qOEFxMFAyOGxJZklHUXF0Y216?= =?utf-8?B?Q3lIRVVFR2hWWENWYkloc1hEYk5nMlBXQUxJbWgvZnRmZSsrS3pNVzdYelpp?= =?utf-8?B?YmNPZjdzMFU0NXg3QnU2WitIMzhnb2tKQjVKNFdLeXlEY290N2FuRS8xWlFn?= =?utf-8?B?ajBlcm9PVzlhMFpIWWdsN0w0OXZsL3FmR1UyNVhUYXNUMms1REJURnozMjRD?= =?utf-8?B?RkUwSTV5RmNqWldOREZyR2E1YnVlMlRtZURYb015Tm1BeTJ4dlFXamVYSWZB?= =?utf-8?B?MnRrRXFzc084cGwvSzkzcENaNGJFSTFFWXhwNE5xaWxDc0kwcU5ISy9hYlV2?= =?utf-8?B?bzUydnhaUnZrRGl2RkJlSFlrWk5FVDdJdWRNSTh1eXRDOGRSYVBmYy80Rk4x?= =?utf-8?B?MFR3ZXNsV1lCZjRyY1RoUHA4QnExWkp1RVZ1STNBQmZmL1FhejJwaWh4dk43?= =?utf-8?B?VnlPTm5GeHhjK1RtZFVwR3NEZ052UWFvbjk2bDduTG5tV1dmeThOWTJ2VjA3?= =?utf-8?B?V3dVNTNvSmx6WmpzTGlDZlRXVmVwYWFLS0RLUFNSZ1FSaTB2bTFja1BDR3ZJ?= =?utf-8?B?LzRvdURzekJ3Tjh3NWU4RXdBeW5jMDB4bkp2YUF6VXlEZFlxdGdlckNRVTZN?= =?utf-8?Q?qhHNemHOXuk9Jl6k=3D?= X-OriginatorOrg: axisinto.nl X-MS-Exchange-CrossTenant-Network-Message-Id: c84649c1-32af-4fd0-e51c-08def3c49851 X-MS-Exchange-CrossTenant-AuthSource: PA4PR08MB7570.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Aug 2026 14:11:23.1648 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 33fdd476-4ea2-41ec-98df-5741488682a9 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: qVjYE5xmJ9G/HD5CCDZCh8/L2th+2TEk5E/z4DcRFLJXiJPV35c9kdw+u1Adr9IoG7s2fGRdXVJd/XoGWWskwyBCDl+FbsRIH49E4W+I5M8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9048 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --------------GTnrm4kv0VDL9g3Cbei0Vj0z Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit *ISSUE* External modified datafile not detected, no error given but result produced; *REPRODUCTION* script.sh --- psql   <  bs=1024 count=64000 When replacing file with bogus data (/dev/random)  an error is being returned.   Result when the datafile is being nullified side info: pg_backrest does recognise the file as not valid an replaces is during restore regards Bram -- vrijdags afwezig LOGO Bram van der Vos bram.van.der.vos@axisinto.nl 06 127 27 547 Albert Schweitzerlaan 10b 3451 EC Vleuten Twitter Linkedin --------------GTnrm4kv0VDL9g3Cbei0Vj0z Content-Type: multipart/related; boundary="------------mPiHwypxFKXie2YO9AKKBlxG" --------------mPiHwypxFKXie2YO9AKKBlxG Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit

ISSUE

External modified datafile not detected, no error given but result produced;

REPRODUCTION

script.sh
---

psql   <<DO_CLEAN_1
drop database corruption;
DO_CLEAN_1

rm -rf /tmp/oscmd.sh
rm rf 
/tmp/output_1.txt
rm rf 
/tmp/output_2.txt

psql   <<END_SCRIPT

\o '/tmp/output_1.txt'
select version();
create database corruption;
\c corruption
show data_checksums;
show ignore_checksum_failure;
create table demo ( a serial, t timestamp with time zone);
insert into demo (t)  values (now());
select max(t)  from demo;
select pg_relation_filepath('demo');
copy (select command || setting ||'/'||file
      from (select *  from (select 1 as my_order, 'rm -rf ' as  command, pg_relation_filepath('demo') as file
          union all
            select 2 as my_order , 'touch ' as command ,  pg_relation_filepath('demo') as file )
          cross join (select setting from  pg_settings where name='data_directory'))  order by my_order)  to '/tmp/oscmd.sh';
END_SCRIPT


cat /tmp/output_1.txt
chmod 700 /tmp/oscmd.sh
/tmp/oscmd.sh

psql -d corruption  <<END_SCRIPT_2

\o '/tmp/output_2.txt'
select max(t)  from demo;
END_SCRIPT_2

cat /tmp/output_2.txt
---

ETC
Result in tmp/output_1.txt  en tmp/output_2.txt.    After file has been removed and recreated with touch  a NULL result is returned. The same happens when the has been replaced with dd -if /dev/zero of=<file>  bs=1024 count=64000

When replacing file with bogus data (/dev/random)  an error is being returned.   Result when the datafile is being nullified

side info: pg_backrest does recognise the file as not valid an replaces is during restore


regards


Bram

--
vrijdags afwezig
LOGO
Bram van der Vos
bram.van.der.vos@axisinto.nl
06 127 27 547
Albert Schweitzerlaan 10b
3451 EC Vleuten
TwitterLinkedin

--------------mPiHwypxFKXie2YO9AKKBlxG Content-Type: image/png; name="LOGO.png" Content-Disposition: inline; filename="LOGO.png" Content-Id: Content-Transfer-Encoding: base64 iVBORw0KGgoAAAANSUhEUgAAAHYAAACMCAIAAAFRy/qvAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAA GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAD9ZJREFUeNpi/P//PwPRgImgCnk1 HSA6ceo0kM1CUCmQfHjrCpDBx8fLRLwzPn36TJTq8NhEKOs/XiCnqg1EEMbHj58IqIYAKwc3CAOn 6idMunASDhjRwvspsx6QlP57ibTwhmiDkNhVA+Ugpj4XtibKbIhh/z58JqAaqI6vPhNoNi5Ho4Q3 mveJChOK0iAkVUFIqGogZ826jZA0CQdAEUTygAHSXAIQQIw0yTuEVV+7fgOoDphx4B7Fp9rTP4Rk lyCHDD7VSfGxQNLSzBRLzOMCYTEJV69dx5kbgKkKOVkjJzLs5QlReQeeX4DojVPyz4Nn8OUdPKZi yQ2YGRENsGA1GJceJrg0s4IUDdJgcUUNPN1g5gB01aFB/sDkBmQ8efoMJZ4ZGNAyFGkuAQgg0lST BFgo0Wzt6P7k6VNMcUhuI9/V8IwNNwtNhIlGoQGMN+oYDax00URkpKWoEyDI4Oj+XUBziSpJvi7Y gMx97ZiElY0JCLgakjMl3x5lEuBFzqjArAsuO07jKR/wGY2rXKO0AkF2IGZZB2RDijs8hRR2o18o eyCbCwwQgkUdUbnxfVLt3wfP8JeC5Bj9beFGIMIauKRaQ8PiiVYZHcXoXXv2wRsUQARsA0BK8QmT p+maWM5buBiYm4HlN5ANL8WByoBcYHEBaV7gbNEBwc7de4HNZCCjf9LUovJqiODxk6cwa3oIA6gM zoWwkQFAANEqrGkV0CwU6kerYiC1AaVpDmtxevnMcdI6VgQrLQgAphPywxeYwvDIAo1mIjdY3ajQ ZaRfOtPS1MDV5KY0PaDFGzJ35ZL5NAkHCzNTMs1Fa1dgSXP/yQINLR1wNrDQAXbt4UUVgY47BPx9 /wmZ+y6x5vOExRD2jwOn3wTm49JIwFxg5/fXhRsQNpAB5MK7wxA20CasGgmH7yujUAiDVV8dU5a/ r4z8Jgs12yuUVMxEtYPQBOHi5DSCiO+4kWYu8rAMGYGL01zIAA6aiZBmIPn1G1w/mt8hbWHy3UuS fmLd+7lpOtZgBTZn4c1Octz7qRFkLle8P5q4xN0d5McbsGkOYQjOa6YwHIZaO2qAzAU2fuFsYHOY ZHOBFRSatjXrNkLGwoBtaWDjGSj7GNzGATKQazOgMkh7G9IUR29aA9vPkCpLx9gCbYgZ0rQG1mDA euzxk6fIlQJmqxulHoK3tlevBfWV5y5YBCTh9SDELKAaiClAcWTTgVysptMqnQEEYNfqWRoIgqhc kFQBi2CRRjtLG4N2AQuxElF/QTBFAqZIkyJosLDQTgsb0SCmEYOYSkRMKyoIlv4HQaNiI4hPRoZx 725Pc9m7RB3CsdzH7svs7Ny9t2OQc3UoE2ijxlM7PPr8EBtNjn3V6TrFx8srq3LtuZkkGqEhZsLs iMyRbPFVK3i4AGSH+52niIwFjTiTy/tgzxMhICY9xY92avV0lfnSDVqz43pNE6ngx26ScRDSmhuF L5eKbllsf6+CI/KxJs2FkN08veg4M6xWBO1j1kW2Njc+nFqtaG6em5nGPfhJceXvfVcQ03FklZLA 9Q4P9V8fUPt5vdosrLXMSH1FBdglETM7s2Z6RPZ6c8ttCfenFNcX4vv0ouStvEtCFk2N0EYJLDKY kI5Em9ljvLETb2wH8X0MOkzMVRpw+CecRhC/7NbhYOd3UjkbW8raA8Pqi7Hg9fbwJIMEs2EWMXDc jaclxMhAQv4BTDSBkMEdTSV59pUezK48rDM5GMIAHsVRqhq4wa0KKGjeDxxyeWGWOWrRkPURblVO QedjBQdiUSMX+tn8bI+PzSEw4mMFLpaRdmlehYxYgeu5tBHuRuPYai9cSr1IcOEgbgEuvxSQpzvo nReudRkz/RWIM7m8nodRHYbjJZznS1KJxkmlJE/pUF71ZoFS8i0US1SzSWXSJB2jLU+ybC13Xc8v Lk9Oz7jKWirScn92Prsgi7HRLenVSpG2fmO1Rw7Mo/KT9mOz+aiMxFK4I2JGMDk1K4Vy2acc3RPx f64wb+8CsHM1r00EUVyiRxMKggeTPyCW6qV+RDwZQntsG9JbRYx6MBBN6MFCFPFQ0INYFXqRolAv 0hiakxCkPRXSFv8I0QgKWqgePHjwJc8+Jm93Zj/SndniPsqS7M6mv3n73szbeb83kY4jxPu/wrJf AkNye7M7KicS8cLUJBxDasf1RnN2rmZ7KXP+7JvllyFCvLv7ExlqaqmWS5VyyTximLetNRoyGT6Z FtfJzXieLVxceLWuz0L3sOTAGGIfK971xirx0mL6xwR/N5LRa1+jn7n6H80gGHNrRazmzDrKUi/t rhlxZ8AhPIqEnCQRjx+wSIhxnvkw0kv1WeuMSAr5SQOztHr6gC4pqBeDMvD9SbU/rCFJJZMwRUP8 oEi1YwiqG3FFgng6P6G2HIo3wjJWPNlbkRGDHtFaiJ2l+x1EwWGRmTgYg2gq4fI8x+DYmFWM5bIY DcvIHygb6y2rI2rVMZgE6OxfvWV/CLr0ahmOMBhDH8ZzWaz0jlZYeqJI0vQSrNfgz5pC3Sneg/NY oehVBtVx5/BpSkSL8ru59j1foa9U83pInq/WoWNM+oqZahIRLsiPva/QE/G8j+TfQIipssB9icHg SXb/iEW2zLfRaXaV1ThQzp2dJ1PRgVh8oFbNAUQCd6yxIDIDRDYOfQ7c88DZmaf78CF/4hOxLRXA X2WSDqv49fS1TPEh1bGCa0FqVtCXZIynoN7z2IAK7iUaNHxGhwO4MvqSeF7HDMKmBkZw02AYnrlY fbF2j5Jw9PaMoo1hxIzqiGQ8VlbK2phEzKYJkS3EvCcsfLev/coTPYaYurJJ27yO1fsVBWrKR/xZ MGBSM+B2incN69ir2oJTsyvEbAw+AO95bJ4zK852TNXNNJDFhhKyxn8+doKeQZwRM/Y5G8g8xUk6 rIKF7dZ6b5tfHIqbRMwiGzfE/uMfVowhZjUdahKvy8klWMRsIcJ9IBtojUXM5RTgSXNuzF33m2nY Z5AIcYQ4QhwwYtlWpQvPF20zbbLckXrL01NnLthmc11tFGIlLFs3u3O5d4d4ibbRw/O4857sLuIl q/+1zY5SoMWN9RalLx/MP2q9X2tvbcP5Lktxa/vipfFUMglHpmM43ijdGk6n8StmjUCLnztfkJE0 O1cTHxHqEhrAVfjB9mZ3G0K45VM/Q91Zx8ivXnm7ShTukdEMngRNwN/1m2Xc8URB1RZ1LBK2RTo7 NrPSub3pGPr9+OE8dDGVOiHjUr5YfAYqccNetIqaXOHH88AYCvmJzLnujiLVcgmgg1VAH94167SF AzzZsVxWQdpgcr92B43BtsKheOUyuZqH7C/VJDCXggdEzwgsARpgG3jcIoEf21BL+hGyK7yFPW5q hlepnkHh1hHzP0KskL8CtHd1oXEVUTitFfrS9EFByQYriPZXhNbStH2xa0jriykxwReL2vRFoVBS aIoNlIKCFmxjQH0QS0F96rImT9o1P+QhpOnmRYtp+9AHIQlaKjSJhVZp6Zc9ZHqduXPu3Lt3s92Z OVxCdu/MztzvnnvmzMw936k9rfBK4cVDvOyyykNAnuaF/AD8R/5lY3rnrqOtNZaD5K4tXvT5u3vK eYG7acf2kx91R8LtHMTwkjH9TMDUxkh7235grQsccwhic3AlhkHou0kAi/pyqVvDHaZ+utWRtIQy D6jvKTsBMZTXhB4zFcHsXVo0W+kCvhRqu2ySy/fjoXEFYijvMuP7qN2lZUPLIT4bh666Qk3bDDEt XVet9Qk3tLjq99hDXFmhCLeV1l9htURMrC1fBjr47oEEHnECtgdVOpfC3Sw3FCdPdDdmMnFrtTRn r0yOU4hjkBs61i+0L4X22r9GAadid7bF3LWA4qu84qEpCbQG6v+cPPYPd/X1a0JJiHg3QLpJ5vji DknNObHSpsuOyw9We5uzc/MLhcFhw7p0L1WrYj/ER4/3iEQuFX1QdCbbco8ilx9Q8SXqNehmmUk+ 6sIoxVSxWYunZ2YpPwv0Cy4URvnQjQnauCsMDpkMifBP8Dud7x1QaQpchPgxkep7FLoAYGukylpM eSOeeL4hVn7D0PQNT76y/unhc7oombmu0+q95KvYAHEQKfPoaD6J5dozx6QA4ge3F/56YR8T3/pU vnd1a9ZCQyFp4r3RokkE+L3RST5i7u7AiPTNnb7v+fjhf774wUJbDKRUQAG6FKCoSiRzgRqwFKmh q1v32GYo/vv1usjnrEqQ8CRUoJK3sgeDZBKRdRlbUWkrUQWI8ZhHchVEoiyAI6DNeTkSVKkxiCNH HiGhzFTeaUsNXxK4cZWOobVt6nFzW0csZpC45V3X4rgZ2YV7oE5JpCxqQdE51wmq1JgWi8SKoSBm 7v+mMwioxfge3lA8wlfHM4hhnTgW8Fc3iy1RZ3V6iLUiZdqURCArsNbMU4rLwwlXexDPdZ1m6Egl hwH/M6neTCZ+zkEMRJhVSqCp2l84wgxpyPypr5Pxx1ZdKrKxBCzU1LbByZtuWoFJ3f0/ZnV1YS5g UlboaZVc0WImF6/J5JhSy+rO/t125N/RotNaHLqEJmlimWMX83zYr8WMh++ypAaxlE3aS8oQmyxR Oisp2OIHtxcYHlX4AM/c+DnxFqQFxicFLWaWKMvEN9JZdgLiP9klYGbxwVzgw0mbyg5BfHNrB7NE GTqFSyZrzxyr9A7b4wjxrWxn6B6lwDfdnSEpN4T9EPNLaMwUuRx5tjyzXi3xrw3W4BqFFw+xh9hD 7MVDXIMQT8/MxqIcKAwO796z1zBSZerqNRTuNWaNuHS5mMsn31469clnb7S2m+eqRnO95TNa8ESr 4xOXn3txMw6GNlkSlORplhnW5Ug52/dlkM85rqgUt5HNqbTFcaWO7xAa6Oo+gavasq0piBpBj1NS by7+MkSn6Erwke4QDvxIKO6CSpsq/j51dd+bb6m1xM0W31N1lMf/wVOCrDcSMrUuPuJLprk0IRb4 0sddr7XgkMoAC0CPPtHZIBYEMX/BoRBLF3Pog8PBdiUtxlnqgIqjoFDWQazqDT2C6HCQy7x8LQ63 xYuh2aWItVy+f91LW3BMz8zgCNKcQ34ayLU0vw7r1rRj+9jIRTWq7crk+NS1RfYy8zBtKUv35o0b dPGxMJSw+N981SeFbR45/CH6c+HHft7IXpoooq7UZ3wsBf83VHa4o9B39JLYAsQBvOYX5oNk/ACu MDg0NlJAd4G+OipS5Crq4mJQ2IQawpynAyUbMxmVYAmjGfqzaQPHcEBnvz3/XegInK5HEbLrAXzr 19Sr0e/Aa2y4gLNAGbr29jvvl3gFFikMocIYeV9+dSdUQOgU8SAChcbGBvSbwmLT7T3aPXq8B08J tVJXIj2iJOM8iQTK4MaLups2ri+Bex1PTHvb/s8//dgvA/mphxcPsYfYKnkISq5YZAqnvsAAAAAA SUVORK5CYII= --------------mPiHwypxFKXie2YO9AKKBlxG Content-Type: image/png; name="TWITTER.png" Content-Disposition: inline; filename="TWITTER.png" Content-Id: Content-Transfer-Encoding: base64 iVBORw0KGgoAAAANSUhEUgAAACUAAAAlCAIAAAE9+4fCAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAA GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA1NJREFUeNpi/P//PwMSYALiNes2 yqvpABFIACgvp6oNIa9eu84IZEFlGBge3rrCiKYfIIAYsZgHMWzXnn0ggZ279za0dMBNJWQeQACh 8OctXAwkk+Jj0aXhJsAB0Cio7SdOnYYLQUSB4NOnzzh1Xz5znI+PF4tf0ABAAOGTZkLmTJg8DYs+ NFsRDsb0jK6JJZBkQVMLUQrxCcI+CD88NhEuAtIH9BBQAmIOBMhIS0PdgivwQFEPB8dPnkLm4vM7 QAARCDY8gAWN/+TpM2tHN0x18BjCYicuPbj0I0IOrm32tElamhoQBiTR1FeXI8cEFECCon/SVGBS hiAPv+D/qAAuBUTwMITaWZCbBTcrGSlRAyMPLU4szEzR/VlcUbNm3Qb8/oSnE4Q/gakAqC0kKAAo B0kCKPaYmyLnEkrjEyCAyNTJRJ3UAwHA7H/i5GmI3+DBiM+RwNCHaEAGwADr7WjBqQ0zC8EBMKEB kxsWv6EkJQwAjCdrR3d0bUDPQPI3HvDk6VO4Gqi21Kw8uPT2jWuQi0PkuE7NzkMJSWSrgBkCqBQu glykwUOLCas3IGEA4e6E1AEEoxu5+AKCa9dv4NQGyakQS+BRBCwE0KIEGIEo8YZWGhLMQUxwSwjq gVuF0AasUfHrAfoCOX2hVBHAUgjo2uKKajQ9K5fMR0vQOPMbMAD5+PhkpKUGQTYFCFBuGatEDARh +JA8zIlvcRcCVoGQw+YaW8HCR0gRiYWkEOwOhatEECy9xspHUPM4frAQsrOzmzXKNTdtdnay8/// /DN9nEyLo9l+I4k5hJA3j9udJgfDsixdXl1e+BCL7Se8q66b0ZEhaj9tH3pVxdajksvQf6mq1FNH 9ISgw0MP1vHDaN1imAmaGjaWFyBUI0j2VD59fncC4PbunmPD/VW+j0tP89L909umLovcDN7nl1dm vDBpEumKirQ4aenBx8A+6M/H+5u4wiT6aNUv3Eo93/yEO4Ff4cbW3qFj9Y6MfOcwRbVj4H22Pg8Q VQxdiy8Ill2xqm/czCxdnBzPv7rOWKbLDjUAflwPkCK+P4FwHUWvh3P+aqaofofeVTYkLk5/KYba kHnAt616KJfdgaaDlsgBLdYXkEN84ik0bVXkgZl5SP73AzpLHPvi111qAAAAAElFTkSuQmCC --------------mPiHwypxFKXie2YO9AKKBlxG Content-Type: image/png; name="LINKEDIN.png" Content-Disposition: inline; filename="LINKEDIN.png" Content-Id: Content-Transfer-Encoding: base64 iVBORw0KGgoAAAANSUhEUgAAACUAAAAlCAIAAAE9+4fCAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAA GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA0RJREFUeNpi/P//PwMSYALiNes2 yqvpABFIACgvp6oNJI+fPPXx4ycWiDKI5MNbVxjR9AMEECMW8yCGXbt+AySweu0GoJK5CxZBTAWp h9qE1TyAAALZDwf9k6YCNSKLQJUDTQDqhZsDMQpq+649+5CFICSKY5H1AcHlM8f5+Hix+AUNAAQQ PmkmOOvTp88TJk/Dog/NVoSDgRJamhrIcromlggzIeEIVA7RATQfSLIgKw+PTbQ0M4VzQXJAD0EU njh5GoiADAtzU6hb0ByCCCPkgAbGPpZwxwoAAohAsOEBLGh8oFc9/UMw1cFjCEt4A/UAPQTUVpib hakTGJJo3kXohFsFCZqVS+YDGUCrZk+bBFeDrBmqEzl2LcDBDiGBVgGDHDm5nTh1GkVnATYXQsCT p0+RuRaw6ESEbXFFzZp1G/CHJ7LlTDCDnwG1hQQFAOVkpKXRNAA9DE9YVIhPgAAiUycTdVIPPNAh Cd7NxQktW2F3JDD3QDQgA2CA9Xa04NSGmYXgAJhQgWkIi98gmRroKkhyQwPApIOc9FngnoFkY2Ca BDIgRmBmGqAUSgkGSYqQNA2Uvnr9ZmiQP1AEmKyAvoUWzGC3QNI6C9wNyMkPogFk/OfP2zeugfsZ XsDiizegZ6wd3YAMzDggKrrR8jtCG2YixgqAEYgSb8B8AHEPkTkIbpsUQT1J8bHojgTWqPj1AEOl vrocexUBieviimo0PaACysyUqPwGjDQ+Pj5cjqdvNgUIMPKLk2FkHzAjz12wGJ5zMBO7m4szsAIj Jrnhsw+Y7jDTDX4AzE+zp03EWlLis48Mm9B8vHLxfKLKZ7QiGqgHWBhBiies5SEeAAxhzDoY3T7M ihZYTmprahyHVSwkgd6O1pAgf5z2AdNFeEwi1kIIIoXVyRDfIxfluKof9GxLvA+AaRXSjodUJkBz IcGO6Q54M4eiYmLuwsVwE+fB2FirSnzFErzYpxYAZg+0QpcJVVqqEHerjgzQ29lCOD80tnbCg4gS gFmjYLEPGB/WTm7wtgF5AJ5rCVcrqdl5yJZhNgQI1sbA/IPLMvRmIyQYgZkUmMfRbAJmgJ179gEz DFrbHOgVYKABG1R4ysyRVP8BAFkoGTEh0T9RAAAAAElFTkSuQmCC --------------mPiHwypxFKXie2YO9AKKBlxG-- --------------GTnrm4kv0VDL9g3Cbei0Vj0z--