From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0080.outbound.protection.outlook.com [104.47.0.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.bufferbloat.net (Postfix) with ESMTPS id 04A853CB4C for ; Fri, 16 Mar 2018 04:02:31 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=darbyshire-bryant.me.uk; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=xpc7tmdf2zVj4xNeZO98SIfv0iX5vzNDyj7vVGPJoNw=; b=LwQdLTLTeBrtGukWTeJdH/4QOr9kz1s6eJ6xHe5wjmgIBmq+zIvaRLDA436tZ0VITX0/nz0reGtauPdmKHj7dp21hrZOWF8JE+/PvWzto1VxCC/CLAe0HTt8G8K4PDlGq3Rfrk2ajoMnphCS3uIbZc2xMkqs1EksUoHI7cUf6Uk= Received: from AM0PR0702MB3730.eurprd07.prod.outlook.com (52.133.51.23) by AM0PR0702MB3761.eurprd07.prod.outlook.com (52.133.51.30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.609.6; Fri, 16 Mar 2018 08:02:29 +0000 Received: from AM0PR0702MB3730.eurprd07.prod.outlook.com ([fe80::a95a:1cfd:7299:5172]) by AM0PR0702MB3730.eurprd07.prod.outlook.com ([fe80::a95a:1cfd:7299:5172%3]) with mapi id 15.20.0609.006; Fri, 16 Mar 2018 08:02:28 +0000 From: Kevin Darbyshire-Bryant To: Stephen Hemminger CC: =?utf-8?B?VG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2Vu?= , "cake@lists.bufferbloat.net" Thread-Topic: [Cake] [PATCH 1/2] cake: print_uint format fixes Thread-Index: AQHTuRokH3ZxhvG1+E+9XF/3TwBMk6PLgtCAgAAWnYCAABdXgIAApg6AgAAHqoCAAFgqAIAF0WWA Date: Fri, 16 Mar 2018 08:02:28 +0000 Message-ID: <6DC9DE5E-0ED4-4BBB-9C7C-0F8887856D25@darbyshire-bryant.me.uk> References: <20180311091930.86264-1-ldir@darbyshire-bryant.me.uk> <20180311091930.86264-2-ldir@darbyshire-bryant.me.uk> <87bmfujq18.fsf@toke.dk> <5DD63A68-EE32-4A5C-B08E-019FB8CBC9B1@darbyshire-bryant.me.uk> <20180311163423.2e8d63b6@xeon-e3> <874lllk47a.fsf@toke.dk> <20180312081142.0a9da85c@xeon-e3> In-Reply-To: <20180312081142.0a9da85c@xeon-e3> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=kevin@darbyshire-bryant.me.uk; x-originating-ip: [2a02:c7f:1232:22b::dc83] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM0PR0702MB3761; 7:ROHuYViT2a1QvvA9hSAQ/cHvK99SfEEUHWsdg6U3mkskS/lqhedarLcV2iNPrT4FxHDxpG/1j6RCi0z+SkooN/9i7liR/gZBmUcB+TJ1WOmjtJhbL+WfYeZToXDw7VGtx8h8m9Bw+w2ttKeX2Rw8iQJUNFlHU9dZjwmxucEFoUq7csvbCmi2sTCL8M183IX6a4Dy2t5G3GZT/fJXvAJmhG1OuXpasHD+OXlM21VPDlD9ZLBZcifZXUZowQDSES40 x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-correlation-id: 2c1c86b0-2265-49ea-94f2-08d58b14434a x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(7021125)(5600026)(4604075)(3008032)(4534165)(7022125)(4603075)(4627221)(201702281549075)(7048125)(7024125)(7027125)(7028125)(7023125)(2017052603328)(7153060)(49563074)(7193020); SRVR:AM0PR0702MB3761; x-ms-traffictypediagnostic: AM0PR0702MB3761: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:; x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(102415395)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231221)(944501244)(52105095)(3002001)(10201501046)(6041310)(20161123558120)(20161123560045)(20161123562045)(20161123564045)(2016111802025)(6072148)(6043046)(201708071742011); SRVR:AM0PR0702MB3761; BCL:0; PCL:0; RULEID:; SRVR:AM0PR0702MB3761; x-forefront-prvs: 0613912E23 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(39380400002)(366004)(39830400003)(376002)(346002)(189003)(199004)(5250100002)(97736004)(53546011)(186003)(33656002)(6486002)(6506007)(6916009)(2950100002)(99936001)(316002)(93886005)(81156014)(2906002)(6116002)(81166006)(7736002)(305945005)(5890100001)(14454004)(3280700002)(102836004)(6436002)(8676002)(86362001)(105586002)(8936002)(53936002)(82746002)(68736007)(106356001)(46003)(74482002)(2900100001)(99286004)(5660300001)(83716003)(229853002)(6246003)(478600001)(25786009)(6512007)(76176011)(36756003)(3660700001)(54906003)(4326008); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR0702MB3761; H:AM0PR0702MB3730.eurprd07.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; received-spf: None (protection.outlook.com: darbyshire-bryant.me.uk does not designate permitted sender hosts) x-microsoft-antispam-message-info: 7D8DWNGFZDCQjlrUWlOOFHbpB5iC+Wg6yVCSkS1780kThq//W+nBxJ4AQ/Gx6ZJ3x7Cbg/Ti3ymestOBwWTUbbDhc3ZqPCXZ+MsToZqFDXLXsIWBesAK71udDlxJwP3xlUh9j4sHUptG/YrfrDMTccx86cXeavoHBlUmMHi2EV00hG8RcvF/VoHkTrn9/JimdUwaj9P/0nOWgBZZRAdQOUiwziqpxXKEXs2ybZ9kHYoosgtPB5+nVjw5AVUqw4QMRPFVYBYDSUGEBCNB0x/WL5qxIleEaxbEw2YTKXnV/SdK2KZPnmCcii+VzrtT52z2bGAJwa+et8g/cNlbGHMBrw== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: multipart/signed; boundary="Apple-Mail=_EE3F744C-8480-4C7E-9916-AE194061D02C"; protocol="application/pgp-signature"; micalg=pgp-sha256 MIME-Version: 1.0 X-OriginatorOrg: darbyshire-bryant.me.uk X-MS-Exchange-CrossTenant-Network-Message-Id: 2c1c86b0-2265-49ea-94f2-08d58b14434a X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Mar 2018 08:02:28.5610 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9151708b-c553-406f-8e56-694f435154a4 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0702MB3761 Subject: Re: [Cake] [PATCH 1/2] cake: print_uint format fixes X-BeenThere: cake@lists.bufferbloat.net X-Mailman-Version: 2.1.20 Precedence: list List-Id: Cake - FQ_codel the next generation List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Mar 2018 08:02:31 -0000 --Apple-Mail=_EE3F744C-8480-4C7E-9916-AE194061D02C Content-Type: multipart/mixed; boundary="Apple-Mail=_A7064FD8-A4B5-4095-9D3C-D7C618FF9EEB" --Apple-Mail=_A7064FD8-A4B5-4095-9D3C-D7C618FF9EEB Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On 12 Mar 2018, at 15:11, Stephen Hemminger = wrote: >=20 > On Mon, 12 Mar 2018 10:56:09 +0100 > Toke H=C3=B8iland-J=C3=B8rgensen wrote: >>=20 >> Stephen, would you accept patches to fix the API (to add >> print_{u,}int64() variants and turn print_uint() into native-int = size)? >> Or should we stick with the API currently there and live with the >> inconsistency? :) >>=20 >> -Toke >=20 > I agree print_int should take int, print_uint should take unsigned = int, and there should > be print_u64 (and print_u32, print_u8) Submitted a patch to netdev but almost certainly did it wrong/based on = wrong tree etc =E2=80=98cos I don=E2=80=99t normally inhabit that space. = The quite simple attached patch restores corrrect functioning on my BE = MIPS box. Validation that the MANY calls to print_uint are using the = correct type is left as an exercise for the reader :-) But at least = there=E2=80=99s no longer a hidden promotion from uint to uint_64t going = on. Cheers, Kevin D-B 012C ACB2 28C6 C53E 9775 9123 B3A2 389B 9DE2 334A --Apple-Mail=_A7064FD8-A4B5-4095-9D3C-D7C618FF9EEB Content-Disposition: attachment; filename*0="[PATCH] json_print: fix print_uint with helper type extensions.e"; filename*1=ml Content-Type: message/rfc822; x-mac-hide-extension=yes; x-unix-mode=0666; name="[PATCH] json_print: fix print_uint with helper type extensions.eml" Content-Transfer-Encoding: 7bit Received: from HE1PR0702MB3740.eurprd07.prod.outlook.com (2603:10a6:7:2a::16) by AM0PR0702MB3730.eurprd07.prod.outlook.com with HTTPS via HE1PR08CA0045.EURPRD08.PROD.OUTLOOK.COM; Thu, 15 Mar 2018 20:07:27 +0000 Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=darbyshire-bryant.me.uk; Received: from Kevins-MBP.darbyshire-bryant.me.uk (151.231.154.194) by HE1PR0702MB3740.eurprd07.prod.outlook.com (2603:10a6:7:8d::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.588.7; Thu, 15 Mar 2018 20:07:25 +0000 From: Kevin Darbyshire-Bryant To: netdev@vger.kernel.org Cc: Kevin Darbyshire-Bryant Subject: [PATCH] json_print: fix print_uint with helper type extensions Date: Thu, 15 Mar 2018 20:07:20 +0000 Message-Id: <20180315200720.829-1-ldir@darbyshire-bryant.me.uk> X-Mailer: git-send-email 2.14.3 (Apple Git-98) Content-Type: text/plain X-MS-Exchange-Organization-Network-Message-Id: 98b7edf5-f454-46c1-40fc-08d58ab05f36 X-MS-Exchange-Organization-AuthSource: HE1PR0702MB3740.eurprd07.prod.outlook.com X-MS-Exchange-Organization-AuthAs: Internal X-MS-Exchange-Organization-AuthMechanism: 06 X-Originating-IP: [151.231.154.194] X-ClientProxiedBy: LO2P265CA0059.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:60::23) To HE1PR0702MB3740.eurprd07.prod.outlook.com (2603:10a6:7:8d::30) X-MS-Exchange-Organization-MessageDirectionality: Originating Return-Path: ldir@darbyshire-bryant.me.uk X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 98b7edf5-f454-46c1-40fc-08d58ab05f36 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(7021125)(5600026)(4604075)(4534165)(7022125)(4603075)(4627221)(201702281549075)(7048125)(7024125)(7027125)(7028125)(7023125)(2017052603328)(7153060)(7193020);SRVR:HE1PR0702MB3740; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0702MB3740;3:KY6aSeMjWng5B0oWwHQg4FkBkUdTDaL903H6p70w7vvD/EgLmZZnWjz44b1VuxBZrUgPLoY/xLU2rUCe4lWhNc09FpzWqghLgNOKXx/1sAErdwNkDAdC5dseJGLRzXik9WgzCddO2B+ryXDI3WFSHEV3Wi4C9skFt1skr8tKz7mFUh8WhuA4ur+WNIl56AYevT01gtqJntJPkJZIztskS1H1IQE9Zk7WEQzVGyy57JnsqV0LdNba6rW3j0qjwVtC;25:VbP9tm3VcmJ/UsfuX3nehe73tInDOKqB4tCv5bMksUU5lgzDCqgLfvKDgoZk0ijy+pAXiDNpYdl6iLffyoa9mBUQqSffWIZbaK6Kj2dgACZiifTBzKXouenVDTkFFRTg4RCC5flFSo+/eWfh3pOmYoBhXHZlY4TBLRecCqHEQbigJ8m3sRARQvNkRYh4+LQdgdWyzQd5WeGV3GydeMNeLHpd15dwQUKyCt1WvNm6Ee7qRi6S2nYIOZfAL3y3ndMl0aWGnMoeBit9Cy5so3R2Qa4oY0wTEYyyvc4ZByK2ody2nf9KxzrcixEb6VFS1crFEmt1XFcRIbfmzW1pciwRrg==;31:o8Fawtl+VYRGDiJDbwbiSIGXMuqwyxhKaz3eMCsJKPbB8bVKHLsn2npNZKS8TpI5/BruIwQZu3sZ11heYC8/RpWwdXYYPVShE2FnaNercu3OPDwCo/GAnDJd3NXhYYg3bubV63uMPGOKPNf3TKY+5xAABlPIiLZX8KOQ+7Jg+1BOigRTHiK6fJOQxhi4Fqe9FcvByY5FqpGyuMAQ0190CrieTRfxTrymtnu2w9Jw6G0= X-MS-TrafficTypeDiagnostic: HE1PR0702MB3740: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(9101524173)(2401047)(8121501046)(10201501046)(93006095)(93001095)(3002001)(3231221)(944501244)(52105095)(201708071742011);SRVR:HE1PR0702MB3740;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0702MB3740; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0702MB3740;4:JUfz0wM35zDghwImdGGixrHjehec0OLNYaTLlZ+rBBcwHzUnp3/oVyLq01MYqmahcYfKydE1BR6RDKRmYSEIcd0cw0boEWrdJpNnn8A62uI8gLmF7O92Ps7+tBRqimc7mwPMaORISGuxkFtX5KE+hrFprqIzGVTSTPfvphcdmIiEuyP3yehdsUHKVsmbPf/KzEwCbxJGACGZNeKYDY1quuJC4rVP66PFIEoZOULMAOf3UP8b4JGdecZrNM+YT1VDKdoRunJ4iJ/xaz7z2fkPDQ==;23:HFj0SteIqaoEMklhf3BJrkBvR2wIHH7mjzK87S+/9l48piS2+w1XjpMPpYhvaeaaUV79aseTvWfiWDgulXNBKFE5U9BtoNYYOZH13tx0lxNOldfGmZvO6PZTA0+zchiHmwYZm/psiPThOFUhZBbDSw==;6:VMC3Ic9nJ1GgSOz+ms8xgwHyXlEYLWSG4vxyg0+6KBepb9zXaMgAsY0NUvdDtOUNwcAfhnKQhzgWBU59jKVAonyJsYKytjUJoeTXhLciy5lYalDstNNiySBsADL80VmBC0YA2lbdLzpPhkdYqMODxwPwj/WHPJ5xyl1gkoXvhf9NeyPh7BDCgtLJuYbi9e3/DbjCifSu6YZRXrTHm6DrCaQ7LX9g8cRzBC43dwCY7hp1JcMaR+VvhD6XBfQG+K6bEqIBnrbn8/jwsUkLrA68EmP4XaPdib4f/pt+jnq+7CAOzJSJPMdY+QQrwIATpZSC8LcmfoXRRkTU9W8vqFWW7zG4BkBCArTRWOnHM2O5Xj8= X-Forefront-Antispam-Report: SFV:SKI;SFS:;DIR:INB;SFP:;SCL:-1;SRVR:HE1PR0702MB3740;H:Kevins-MBP.darbyshire-bryant.me.uk;FPR:;SPF:None;LANG:en; X-MS-Exchange-Organization-SCL: -1 X-Microsoft-Antispam-Message-Info: Ra+ZjO8lK/apS9rgvpT90nnDCfENqNfQJ7jSsYCQwUq6iCtBu/8iP2NTDRmqffg3Igs0AZ3rvffvsijyG341kEWY/n/wqCWC4wWoE+OROW/WTBpp+UhEwglXN3EPAv5JekxEt5qpiQ9KxEy/9XP4TP5/5jBpTQi4kGg/vaY75lBVDGfViarRPfqZSxGGKTjx X-Microsoft-Exchange-Diagnostics: 1;HE1PR0702MB3740;5:L4FZ4M3CH43C797TjHmuECfNswRxS52Dhcpt9EE/W0nT8Qc4+hNw3feKFGhAd/ApBu8Zp307c/M2QPv+QUsXGv+gyYqyoIKxBN3c0K3I3oZbSDSnPg/ZP4F4+8aV/zsei0bjGxSMs4S7zD/JApdOiTOhRIeyjZ+hbk7xLKX1gGo=;24:mmF5DxTFHYIHdW3AdAoYoVGoOpC9FH8O5+YBpH5bcDfFm0sRAaPN3B042sQimH20xA3f1xyvkdT1mwjX/CueZ1oBy5qUvTSTsX10DeO1uuA=;7:1xRe2nX5e1RgrD7oXIOysONC2zgs0pD/CcK5QBSA7FOOxsnZd20y+Bs/HVJLOD0lvXDdnrTXR3s/i2p2qliIraSBajqQ04n7VF8ifbwI4JEFP94b6r78Ih6fPDjLpl7QtlTUdkUsFDtXVWQ6PzfzNHk2ovU8khudUWBE0jgXb3vxGWBqPNeGX1FT+7XrexWAW3TbRb28hoqQHJ2PjawGjlCesBpoldaw0BV1HpCjTnQBsbOmiGUyKca98YblkV6n SpamDiagnosticOutput: 1:0 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Mar 2018 20:07:25.7186 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 98b7edf5-f454-46c1-40fc-08d58ab05f36 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 9151708b-c553-406f-8e56-694f435154a4 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0702MB3740 X-MS-Exchange-Transport-EndToEndLatency: 00:00:01.7259083 X-MS-Exchange-Processed-By-BccFoldering: 15.20.0609.002 X-Microsoft-Exchange-Diagnostics: 1;AM0PR0702MB3730;27:pXKkLTSvPFnKtQwj2uFd7WvDNtaKM+EIs9qhk0ILfdePdE+QDG6QpmTnC5zJ1so0htbHOal+qu1YJcSZAY9WrOWiEcggJ+AD3pgvHzdlGZtxgX5tgc654ONU25PU7/7N X-Microsoft-Antispam-Message-Info: I09NJr2xk2A09aP0UCt63Ad6mI9HVt6P+26W5OEJAOlPd4I4nv4FbAvJWTbN61Sg0XogRTRTjllpVaKiTiGC7FQbhVO4vniJPzQoUq9ksvhrZ71TQNVDCbvS9Y9L13GrNzOf0K1TeGpYnlvSZ1vkJiw28MKknyMRSsSgHTnv/C/+Yp+CssMPW8K5uyhtla5e MIME-Version: 1.0 Introduce print helper functions for int, uint, explicit int32, uint32, int64 & uint64. print_int used 'int' type internally, whereas print_uint used 'uint64_t' These helper functions eventually call vfprintf(fp, fmt, args) which is a variable argument list function and is dependent upon 'fmt' containing correct information about the length of the passed arguments. Unfortunately print_int v print_uint offered no clue to the programmer that internally passed ints to print_uint were being promoted to 64bits, thus the format passed in 'fmt' string vs the actual passed integer could be different lengths. This is even more interesting on big endian architectures where 'vfprintf' would be looking in the middle of an int64 type and hence produced wildly incorrect values in tc qdisc output. print_u/int now stick with native int size. print_u/int32 & print u/int64 functions offer explicit integer sizes. To portably use these formats you should use the relevant PRIdN or PRIuN formats as defined in inttypes.h e.g. print_uint64(PRINT_ANY, "refcnt", "refcnt %" PRIu64 " ", t->tcm_info) Signed-off-by: Kevin Darbyshire-Bryant --- include/json_print.h | 6 +++++- lib/json_print.c | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/include/json_print.h b/include/json_print.h index 2ca7830a..fb62b142 100644 --- a/include/json_print.h +++ b/include/json_print.h @@ -56,10 +56,14 @@ void close_json_array(enum output_type type, const char *delim); print_color_##type_name(t, COLOR_NONE, key, fmt, value); \ } _PRINT_FUNC(int, int); +_PRINT_FUNC(uint, unsigned int); _PRINT_FUNC(bool, bool); _PRINT_FUNC(null, const char*); _PRINT_FUNC(string, const char*); -_PRINT_FUNC(uint, uint64_t); +_PRINT_FUNC(int32, int32_t); +_PRINT_FUNC(uint32, uint32_t); +_PRINT_FUNC(int64, int64_t); +_PRINT_FUNC(uint64, uint64_t); _PRINT_FUNC(hu, unsigned short); _PRINT_FUNC(hex, unsigned int); _PRINT_FUNC(0xhex, unsigned int); diff --git a/lib/json_print.c b/lib/json_print.c index 6518ba98..12ee26df 100644 --- a/lib/json_print.c +++ b/lib/json_print.c @@ -117,8 +117,12 @@ void close_json_array(enum output_type type, const char *str) } \ } _PRINT_FUNC(int, int); +_PRINT_FUNC(uint, unsigned int); _PRINT_FUNC(hu, unsigned short); -_PRINT_FUNC(uint, uint64_t); +_PRINT_FUNC(int32, int32_t); +_PRINT_FUNC(uint32, uint32_t); +_PRINT_FUNC(int64, int64_t); +_PRINT_FUNC(uint64, uint64_t); _PRINT_FUNC(lluint, unsigned long long int); _PRINT_FUNC(float, double); #undef _PRINT_FUNC -- 2.14.3 (Apple Git-98) --Apple-Mail=_A7064FD8-A4B5-4095-9D3C-D7C618FF9EEB-- --Apple-Mail=_EE3F744C-8480-4C7E-9916-AE194061D02C Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEASyssijGxT6XdZEjs6I4m53iM0oFAlqrehMACgkQs6I4m53i M0q+2g/+PtSvclSNvcZ/nFSp8H0VA6AWIcG5nNNAhRldKmtzCaV11J69wamnnKtC AVt1/RJlsM0J6yT3Vpp7p30YbQ4nONe3GvHSln21HAzn4MzIsdoCkW9xcg6pyFUd RT+DLoIghE0Zq5CmkuK3C0rIEc/CnnShiBEkR2RyiNOSo7Wq0lUejvOCQwur7aC5 4OUeEvc188WK6+Qp44Z0sXkxhaLYZsHYUOvFbaN6V656i9/SHarNvnXRZZ0zlu01 4yfAhFs/VybPyTzl0xFjP0kzRTN1LYiIe1/t+ZkmTtAyXY2uiL01iJsMV8Et7HV4 0gEK/NUuprqQCFqKTLKqtqXgyPi/vhQD+PhfjfvgLGrSnC8nz6a+BSbAH3U67LkC dkpjpqv4NqSyLqy2LuiJD2b27Uu4MsXAsycsL0DXj0joELmj1q8Nbu6bDIzyCeeB kFBLchMazLgFZxLsj0lV458jegDkwKftcrRQdTbaww+NQxEQNewSAImi9zLTHC4T rHx3XQusEkRfEGrNzqWeWqWsjroe5qpxjmj1ChgqOiv7RVdxxQqOKOW77/BDNdK1 KQnKaNi2NZrWV712NOVjY8AG3A5ADZXmWYVpoqXpTfLlvyyM25b5/nKdfUGaYyXI qmBuiWioTybJeK0eTKpnPYYmZLwm9/9vbz85jmo3Ah0s9TvtyYg= =jSxJ -----END PGP SIGNATURE----- --Apple-Mail=_EE3F744C-8480-4C7E-9916-AE194061D02C--