Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bxDWx-0008DK-ET for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Oct 2016 13:37:11 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1bxDWw-0006qv-Pb for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Oct 2016 13:37:10 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1bxDVO-0002lI-Uo for pgsql-hackers@postgresql.org; Thu, 20 Oct 2016 13:35:35 +0000 Received: from mail-lf0-x22f.google.com ([2a00:1450:4010:c07::22f]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1bxDVH-00073D-Gw for pgsql-hackers@postgresql.org; Thu, 20 Oct 2016 13:35:34 +0000 Received: by mail-lf0-x22f.google.com with SMTP id x79so88840452lff.0 for ; Thu, 20 Oct 2016 06:35:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=2ndquadrant-com.20150623.gappssmtp.com; s=20150623; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to; bh=YOlyG3zwmCC5aP9y+d6TIEqdi5BhsfUK6yMQn3JLgnU=; b=n0LeiI1C94TAuJF+XCqV0Uvho1+c+RuZ3xwjWfjt4hgEXLpWjTYeEbCiegyGPjwIBg 6/ocfO0ReCtMPYxzIg/qKc+NIbxdRbhr86wtGhU76r0td5Kep4cdJWFhnS81mnXvSLNg jwGTqib0s6bPMlw9z/FHOeuVgzjgm9uDwmaqBXe8NkP3y3wgMmZBYrH/qeYcQnX1Bxkw t6W/C4sGFx2CKrlV4Gfu6r8fTPmBgmbTIWvbSu2yXV+gQ8eUO5Z+cXVayqDfgLnXZd+9 9Ii/HQYPJ4GokrpcVV+SDkyvRG3hR0wIANxmzCYe8abItD2gvRoDOXZMgKlV1oiIH2RN BqaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to; bh=YOlyG3zwmCC5aP9y+d6TIEqdi5BhsfUK6yMQn3JLgnU=; b=FotMtCP8MsCk/ophvvXv7+JNCjFFT62DjjlTEJK77eWvJ/1s/IvPonapKAsz6AfZyB 6mYuIDD5fU2vYsFrDT4r6B7bl9a7eVcSg6/vyjM3XQ9Q+aQ5L0uUKUHrTK/UqroAPAg8 kJ+H+8a97QpAgyG516JlPSoNO6K4RHasNL6yFKoNE+gkLa9hhzPR/6KT+X33uPQmsED/ 4GJU6x4s/a1lOa0i0Kd+luNl1TjGs0szMA3yFm5eOWzfnJYbpSJAH/PWeTJEOA5lNrlB 5WiwCLlFsiuBwaEzo2yTn0A05jc/5ZLEuYmz+WOJHgAMyU4Mco2/d6OFyPdxj9H1oht0 IEcw== X-Gm-Message-State: AA6/9Rn0NabSMminHs+a6NxH8rbPNf71DLsZ4fmXxGVgu24ZmbzYL7QhubhoLuHwsAsfU4m7nSG6r6jlikellvtU7O+TF8M9tYC0u7vWgJnyY5m7kZrEcVwZK480MvlhCUfuR7CwR9t7tSXTwFgD5UXnuJtWFBgitN/7cZ1aqEs3UzxUijzO2sMWYKF7Ym4SVzHR3Q6YvRhN X-Received: by 10.25.221.71 with SMTP id u68mr1721146lfg.11.1476970526533; Thu, 20 Oct 2016 06:35:26 -0700 (PDT) Received: from [10.137.2.17] (ip-89-177-44-58.net.upcbroadband.cz. [89.177.44.58]) by smtp.gmail.com with ESMTPSA id 13sm12266180ljb.22.2016.10.20.06.35.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 20 Oct 2016 06:35:25 -0700 (PDT) Subject: Re: PATCH: two slab-like memory allocators To: Petr Jelinek , Robert Haas References: <68b837a3-ce55-f9a2-f685-9eafac536f21@2ndquadrant.com> <885540a7-ac72-5a21-6dae-a4d5b50672da@2ndquadrant.com> <03110c11-ea72-7b4d-027d-6f19eb300b2a@2ndquadrant.com> <11821eb9-95a5-353e-ccba-13e8e9351e62@2ndquadrant.com> Cc: John Gorman , pgsql-hackers From: Tomas Vondra Message-ID: Date: Thu, 20 Oct 2016 15:35:22 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:46.0) Gecko/20100101 Thunderbird/46.0a2 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------B199DD3CFC0C28E7AD6A79A6" X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org This is a multi-part message in MIME format. --------------B199DD3CFC0C28E7AD6A79A6 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 10/19/2016 02:51 PM, Tomas Vondra wrote: > ... > > Yeah. There are three contexts in reorder buffers: > > - changes (fixed size) > - txns (fixed size) > - tuples (variable size) > > The first two work perfectly fine with Slab. > > The last one (tuples) is used to allocate variable-sized bits, so I've > tried to come up with something smart - a sequence of Slabs + overflow > AllocSet. I agree that in hindsight it's a bit strange, and that the > "generational" aspect is the key aspect here - i.e. it might be possible > to implement a memory context that allocates variable-length chunks but > still segregates them into generations. That is, don't build this on top > of Slab. That would also fix the issue with two allocators in GenSlab. > I'll think about this. And here is a fairly complete prototype of this idea, adding "Gen" generational memory context based only on the "similar lifespan" assumption (and abandoning the fixed-size assumption). It's much simpler than GenSlab (which it's supposed to replace), and abandoning the idea of composing two memory contexts also fixed the warts with some of the API methods (e.g. repalloc). I've also been thinking that perhaps "Gen" would be useful for all three contexts in ReorderBuffer - so I've done a quick test comparing the various combinations (using the test1() function used before). master slabs slabs+genslab slabs+gen gens ---------------------------------------------------------------- 50k 18700 210 220 190 190 100k 160000 380 470 350 350 200k N/A 750 920 740 679 500k N/A 2250 2240 1790 1740 1000k N/A 4600 5000 3910 3700 Where: * master - 23ed2ba812117 * slabs - all three contexts use Slab (patch 0001) * slabs+genslab - third context is GenSlab (patch 0002) * slabs+gen - third context is the new Gen (patch 0003) * gens - all three contexts use Gen The results are a bit noisy, but I think it's clear the new Gen context performs well - it actually seems a bit faster than GenSlab, and using only Gen for all three contexts does not hurt peformance. This is most likely due to the trivial (practically absent) freespace management in Gen context, compared to both Slab and GenSlab. So the speed is not the only criteria - I haven't measured memory consumption, but I'm pretty sure there are cases where Slab consumes much less memory than Gen, thanks to reusing free space. I'd say throwing away GenSlab and keeping Slab+Gen is the way to go. There's still a fair bit of work on this, particularly implementing the missing API methods in Gen - GenCheck() and GenStats(). As Robert pointed out, there's also quite a bit of duplicated code between the different memory contexts (randomization and valgrind-related), so this needs to be moved to a shared place. I'm also thinking that we need better names, particularly for the Gen allocator. It's supposed to mean Generational, although there are no explicit generations anymore. Slab is probably OK - it does not match any of the existing kernel slab allocators exactly, but it follows the same principles, which is what matters. regards -- Tomas Vondra http://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------B199DD3CFC0C28E7AD6A79A6 Content-Type: application/x-compressed-tar; name="slab-allocators-v4.tgz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="slab-allocators-v4.tgz" H4sIAJW8CFgAA9Rce3PbRpLPv+SnmHXubFIEKVJvWbErkkzbTCTZJ8q53O5t sYbAkEQEAgweopjE+9m3HzN4kCBFpVJ1dao4IoGZ7p5+/Ka7MVC73e40I3c6 81Qz8uSwKT0vsGUchM2R+6gcuPebMhfdwI9aMxnbk2+e89OGn6OjA/zdOT5s 53/Dp7299kH7m85+u73X2T/q7B9/Ax+O9zvfiPazuPzJnySKZSgE/Fbh5nGb 7/8//XkfBlOxt7e/bw+HeyejYXu/3Tm1jw6GIzkcDU+O2ofHo47TOTywR/ap uA580Vcz0TkW7fZr+k/sgQ2rSOa1uAumMhI/Bb4TSvFdjN++n42l47h23LKD 6dvqOxkrGJcoS3ROxQ+JB9M7R0isc/j68EA02kCu2k+Gvyg7fi3+8fn87vKj 6Ozu/1Owkwp0UpE6qahlXipyXlqvVmF4GDyoqfLjSAxlpBwB0ofqwVVzMVyI zyoOxQ/Kc311X602xYWKYxUKEBOnCPU486Tru/5YTIK5GIVKCXuS+PeRkKES cSjte+VYQsV2C2bfqikwc0TiJ8ipD1J+DlwfKPain6TnOmIq7TDAoeeOAyMM nzigwRcg+j1oR1p5zvFEiZGrPCfCideB48I3pn6JsuAEQ6kwMVQeKYLIx9J3 ZOjQjI9KOipcpRaAqI/xZajAQLU6TgOysyQ2i/6sQhJRSDF0YzENQAdqNHJt F1h7CyTYQ/ugJKmEyr6v1Vk7IJkNWpsH4jyCSIqBhw32isTcjSdCecGYR753 H4Xr20EYggPAJzd2pSfsBL778YDM/CC9RMEtoBqEsJiLZDRS4TkbXxGZZrMq otDeHaKRfGc3BP4uu8YusIKPHlyj2UOa3bLFH6JztCcajeW5Sex60e50Og53 r+W9GrnghMs/f8A/mLt+Jnot8Fj9+UOcHp0A1/Ifpgf68BJH7fqBo4CemtKH 1qSE3JIkxZkbpumZHbHEMq+4osIm+Ymd/eWJeu1qSh/WytohjscCtRqBq0l/ jEHVgf0CLIyOgtFca9QtcbovHOUpvtCsV4VNzgqu6CiY0D46ONis/WoVHH4k ms0xOLDcfa5/DJ87o+r6jnoUR9I5VsdOq3V4uH+ibEfLik76fCmq4BR/QpLv vxfNzv6hdSQa+OtUwIV4MVOOGokoDhMItUIwvXOj+0syRlVUdneEgzgzCiDE 5pHY2a2Kr+vGn1VFtQEzOu17EScztGqk1DQSnnsPCA3AJKPAl0PPxHHtXyft 6wuGgWv5CPg0u8N5fQj1OvJqfAtSAkhXKndfPl91+4PP3dvBh+5N9/b8rvfp plLpYBpRBTfa3akKsYNU3GkyFX4yHQKgByPtV5G4VzPEFAFuGYQLS8zgNgC5 H0kb1dcS5yPcAuKJjC0iZSYi4kezIPAA2gAaHVhui5V6eATabHQOT0G3cAGS idi1ATv9KBa4BID9x4EmM3D9AbMWb8RB+/TojJhM5S+wkQ2DOPaUD5AJQB7N lA245y3EfKJ8YO16Hu0HzBuuIgo5ygYMh8tDTMmI1jwI771A4n4hUHnNNQJJ e6IcI5eWBqbvnT0xg0wKblWYU0EX+dcJWPFJjjltI4nDzh46jEDbQWBu9UN6 3zvooDPjr70TVHz5XvAQuE4dyVc4FJpvbd7ogLev5gM7fiSHzW6TRgbZqNXN Uc+zYJb5ecG+/yJ/rX91fjF4131//uXqbnBx9enyx0G/9/dufgjuZsGoVhCd KdXrZ+DQmVjxo/9sme5+vvkrBAIyK9IkMyPNgNKxrUUiQMCxq5Jdnd9+6D5H LqQFH+uikRt5ff5z7/rL9eD8qvfh5tN70VjFlPVrgQQuRFYOLIhcqK/ibRf1 ycwtrOz8CtbT796ler/u3SwvbmVM76Z39+QgWCiOodWIykRGExDMa92rBeVI b4TW2V0WcD0HRufGQkIVLo1etvzFoud0/bg4b2KTFy5F1BnH5VHbwj1972TP 6hw9KzB1ihcqLMjigQG3gRf5wK3nP2AW/fNVML5V9uc4LMYtbzVgycRH2dpn q/f0StusMcdzo3iA+WXtZTowgIEPyhsMF8iVVl02rgTLnhqrkZaGRRtIGnit L8FSPv99s+LTvKRQxUnoa7vA/K9Agmxy2rGg2Grsd06sVaz8oGIwdNHyYicc gnV+B6LLHiF2AItQuCaCvo0pPlUphAO0CtoEKu5I1MJh860flkL/W9Guw6jf 4V9l/bBm8wwHAEdY9Ipzih0kUdFqRzeE4keFK+MsgYmvRWMr6fhZMBtMoBga 4M3aSxSizK51lOAr/FNepIzETwh0TXu8Rg5yeVKFDhRrXbAZXo1N9Bvr6ec2 iY08MOogDYlUXIMplmg/MRp9aP/gwOpAnbIP8X284kO35HmlbmSJUg8C7yI1 Nt+6HNjSpAQ3X66uMEq+Fn0M8iBwsxAzIKhKIYmDD3/C775bl4xs4Y2NBnmj dp8E0BD9Z63rWOIlLRD9iyxb+en86sNt7+YdgPeP3cF193rw5QbwvHfTfceW 2OgYJdPN5IxRSiNjXerBM+xn4KDU5/JXCDownSbTHx0xfBx3yuGDU5btEITH ih07LRaejSMGSssNpu9q5OBvK7FkpNgCP3jocyHEyFiq+62E+jMYkuWObNIn GW0Ak2Ii/BS/HKTYWmFrUCU3x2xYxhfQ2Q72D6w9yB8O9k64Si3BmXX+tgQ1 RVcjwKkMIY27/0vRxZRQ35XUVZtddAs40SMBSfjTtmBibPCUk2yClDzHlFJB jA3AonVexJb0IsFLM63XAUKE9HXnFIryIIrcIZS+MzCWzhed5W1EJ/9i5MYx VsAyJlKeklB0Su48YOVPCRN9G0BxLWrqEdtT1NSlRqjAnB8/1rmePzjqWPvH 4H8H+9bBqgNisqRZl/lfv8CN81taAjF/kxOkQWODUZrGcV/WACL8DxsZASxG N1GwAzFUXjBfSf7AOIGYKwHag5UvtcdHQci04kkQqZa4myRAy5vLRWRGwaxY K26ZdEvcBHAf+yFaDiY2VoCTaBakLwLP0ULaYMYhyOmOxyq0hIwwiBbCCfxX sZjIBzBJEjeDUROb7lquABnbgZdMfWxyV7JAyzT33WoVh76WV21JSozhHSkl gBaox1fcu8lWjR0AYapqvSRsmWPPKY30YmHxRpT2oBBJf0c0Rc4VLBIjLQJf kQ9jFHMcTxCMc2TJPXfFMiNdo+ICpjLkjVGXAAKL5VRqVL9M8EELtlwcxb28 dBEVLLXP4b65Y3gXyvccNxlFyVSJxmH7P4UbCeUHyXiCPoW7c4DRJqY5p1zC SS0UszZaQNuc/0z1eC2nhx3RaR0azgR5xRKnoMQyqUubDvkt8v+68bC8qJya wR3Bzp4DzgixGyrdyUZNSthDRbrrUld0SM9dkAT2UmMIdyRDMY1xCZNm5NQm rp0ABk7pUq1uQT0YQ/YC0xKAEDmECOSJaKacclfK58qyn+rrX6kyXZnVeCM6 Z8UbNAtvpIHKmQJoAMIrQhG1i1lPZIA5KFgNdfHypVjK2tMyWkdyYf6KYUCk stTfEDFVKO0pb0S0sdzUzrGcMOqif0PRmYrMO7N+SkaXm29Zft4+2BarasB5 37ojbOl/6XcH5/1+9/ZucPmxe/lj7+YD0tQZ2ktNlH5BovYoT9MNPqWITxbX JglZprFEay2Vb5XvuCP0KqPGcr09VeIugUAWq0KUV08lwQpDt4tWLWyZ+lfG n1FBm1NGKx7QU5M35ZkLaoatu7XdSqiT9U4ssUbOLcrOMpobqGk7UgLNeR/G jtjGrFtUNduaPm3UWpTVb2l/scn+KULU85YsMXwOyzBhPOy0qWA5bB+UNEae my9iW7Ra2lvZQGWNxtm5sAZ/VqFjiawNrrd5X8EVykBTQH4GLgE8bwDXpY5M Btzl7RhzXxdP0aZejBmLjRgWd8tWzDNjYgtqa1o7xjmf7u9k8mcdntyatiWw LP4ysZXlbWoeGfDKt4/0tbSBtPaJe9mpiuFTI/QT9eHeQXtfdVqt/b3O3snp aP0T9TIaq0/Qy0bRw909emC+px/tJkPHDTEBKJ1ahZiaDYaJ6zk8rNXaNf9V hT4WIf6jlh9VJzEMz9bYC4bSwxLw08UPfcQagP1WIKb2I/6aBWEsPdgMWpAA PjWCIhoGimXewDHlbFaBJ4gCvzW938pe+izLWh3q0xZYXZFZcwc0tAHb/NNq ncrD031pk+V2HfWw6yeet9lCmjrap221wTwWHqD5/ns8dbDlE+QtnjE3xA7+ E5obfIRtg0qvrLamYwkuH4pMJ9AYKJ0kFGwRFGaisJ0J15yR4lIT6jJ37Os6 2gZjRiIYER31a4LP/5sMxAGdh8vY0JDPAZ+OEZfBbBG640ksanadDtRZcDOK x6Hq/9eV+EBuJd7ho61gRofOPoRBMksJ9d51b+5673uXVMzqxW5Wf06Oyh1W p/i0XwLl7AyeSM/kzaFugWW6I9fGIXSQj77QMOk74kGGbpBERC6Yxe7U/U0/ EKBSBbceLGF0a4gOf5kHtC3x3g2j2FtYVFZJH0r5WISwjxKxEW1vTpAM6QAF MrNl+MDFFlVWuozVZ/tggnqUNtCjEaxWXAmRq8086p/AalCPdYvEmsuImlB8 tqNVUIzrg2mneqVUfOVPErpYqLlcSTh4BGQidEnHRR89jkShiR7jAxiZnanO t7Gp4xKpVD3ceGEmbIYaLjzm5g/Wj0ANR+SPyJBAeCKGWNeRIJ2tzNbThY1V C6YxBf1cn8scuvFUzvhcJCpjPnFhdO7EJHb3dnHxLa0cWvw9thFgyaH7gAf9 yBCYqECSgeWhsYqfUwoSQzpWqhhQgx9TvLB2cex8EnhmRo2FwbD0qH8BIhtd UYltnMkicpJEgugNQbi8uUZ4WBbFSh2H1u+PgY42Dg7HpKSeqe2cLWraI2Q0 y3TsXpkJr2BdoVygBkiHhscYQxWdY0HEMovlBIMYAPwAvyVLGIr/aP+TkQi/ kI0DvB8rVBPhLNBjLlY2qaMnseZIO+kaM5b63Gvm6S57lol3HdCiGMxNwjkj Jx9tUjK0J+gw2KpEWnkmc90USTE3VAmCZDTD06RkDrxPNsUlGaWNEBLYmC67 ziSY6UZmFEypNYxXIbuNChPnLnweUwsm1ZWazmJWPkURP7VAi+iuGBL61M8Z nIyRxgqtwkQ5xCgdCjbzSNCcXkFFsY7mXxM3ZtSBiIDIQt5au6BYmB/duzPy RmoBhcpW1Nim88fsF2AlD9TvS4Qndu0CEmfO5AXBfTIjj55KfyE4IwBacozt JTwZDV7WY13OAxCaJYMtiwUG4ECgixB7XFauWSrAI8FkhnSZqv5b6VYPJQa0 /eX0QprXigFpMp3isW8Y8B70Rqea6zpwQUXGkZkiOVxqW/BlbnTng7oGCkoJ RXVLpPgIzjJX+e41Kp38lWU0nJAti4VCQq20oNYk1651rSgPY97AENkWz2sr P3IfVGFfr5zTNnF59enions7eH/b7b7DZP7T7f+8Tsf0Rqz2aDEdBh6S5EOS jkUegaI5ej/Cm1jSzUMXzOizGtqPx+9fRTkkdtGrFISCTkViDko6tq134VBB zaJ8G+MxhGpr0cyzaS3JzxIPLj/d3HV/zvoZ2RL6LpIiGGToBqCj8Po1UVGs +53JzESKj9g5C+bsr3sWXgw5PnCBI1wahbY+gc8Q4U6nEBWS4ljS4U5pOMAY atDAdiKNIhIIGWxNAp3AV3p7YvCmeFBhGBB/VCbpB71prvuwi1cPLFDKwdKx GcBOM0Ud4ylYj0B+HICkEBYuhC3UCi34BlkWZyuSz32abRoLbzcCL9wRGJuY bpgF0hnWiYTIHSpb4oYCwmESr+hhAZuGY8MkLeik/OwDjBtj0ELJH2pYpOaA guk2JFbiLmBP0L4G+aZJqvSSeH1rTE3gj3kgb6Tgcl3xCyTFIOoi0Ds35Vip PdhmuHTqOORuku4QrMETGYQgR0ukThCIFNezlE2qEN9siLIG+XAB4YYu7jty CpDm8OaTJUkub/ROWSRiV86U1kT/J+mNQxczSQ/ffjAyRplvpyPwFRQX86QX xbEv+HUQLaJ61I/q89kixmmqownucCnVGmZH/qIOJvri41PMv+VltNDsjhom 49YElJ8MI3zsxjDEHUuoKyhGWIYcGqNSQnBL2keIsuFJu9icMnxx8+n88rLb 7xuACdUYBab0dahgBSpFY6kPVOdfzkHHShWvH8OC/mNEe8rRo+KOpkMKefDT DKp2bYJPKIrooR5mcvAbUwtAQW5p6ddeCow4w+A3akiMkOQ16ZjFfiEfpOsh TUsUHJR7XDQ9zT0xIiPQMY4B7czwbSd/DMSXZlG2C4VwqjzWlE4nsv2Zpc2l CZJelFEhkPwI8PeAT1ZjfGrkJBAsRbfC1BFfytGpD4UNHXrXjSDc34spNe2E uIsVyxbCYuU0AX9tCVHpwj6st2YW0IC2RAtITBgho45zLwoSqXSxbD5YQm9U CGusG5MpxAda242ULrtgSW5ossAcDLqYSYC6AZKY4hnYgUGr4E5TQNA89POr C8jegCpEHSYvVhZUlPphnuJA2meDn9s2Ag6DlZbKKSghU1lfKU5/ea+AXDOk nGstVFCiRW6cEvlLmxf0bO9b0/l5MeNuQNSavCjeSF/T0XjxovSmfoeH5qbv Y1Crg5+bfnx32/97JX3Mq3uKhdfa6vWliZcfv9xsmJi+3oYT6Y0S3e5ACywR MGHvIM5FALe6bdPKvz6SmzT4/OXiqndZ+d9qo1ILRqNIxctcuTFaFw3TIKUn bFuJYg6YQCi6HucIGhJIGn7Ss2bLLJUWsP3dZlmLUFMi9bfUvv1zxNeS5Cd6 1cbSi0QFs4ud9Cu/JgKYN0dQzpJJ1EoJiez9xp306xnrnxtt2RuWFIKVc49b aWnZQck2IsEQD3uAG+taBxKIfJdKMfTlpMCnMMxVM1jmm3bzqP/B7+pQn26p vQfMCu2/ZUb55fKIagPPkRQmkQ4Y185Qg+Z1Tr37NtOzILSr8ekLGHaeLXEm QzlVWMJRck/JnJ71msfTKZUKgRodnqnwE6O0fZQbhNXyZTawOI6hI3e8iotW k3nmyFC9lPHKzjjo4zd+XNECpa+eErP1Hav8xEJJR/PgiijtnVATB/bwFRo+ l40sXzZVF5PpyTSeMgwCr1KRuaM2xNV80XkQsjWv9XpYOeSYwugeZH+6SYg5 M5beGRvqY6wazkRXJdfAIdbpxg4VLrFpUuOJX6n7mve5s3wQ592bQmDZ99PQ 5qjr0/rwaAlGlmkUmSbhUss8a5MjQL9OW2LBXL/tDOujqTQGUoIHi+q+19zU QOelTu4CD5DdwxXT2cr6cUttOCLk47fX682/xLfYWnj9VMuG5nD3cxaHq8Nx oG6O1tLuaE6C+npQyOn6d21sfOYJRqmQV9JTW8plQINRbh3LzoGq1HPwI7Xm UhshlVfmO2l0aTaaQM+mKrx0ZpSbqgMIF2nmleo+N7iodPJgbuAUGkK5Rpmb bwkTIaihQny4v5Mag2M3Z5C8MSgOKgU1r+B8WlxSUgyqG7kkEXWiZi4UKPjN 9FkQSDK7pb5+c/GaTXP9pX8HGxIW1CXv5GMWrZs4+OcJlpMvih1TAQg3fpXr 99PRPEJ/kGEUBn5s1FbGh4dSWp11pCjAsNpwnGUPJhVv2rrMTs1emqJ5PqrZ ZmQm3F3ZTATq+pwmerLLhZ+et3qmMJ0ZMS7RRF1b6bNvVPjhJb3+JKLSUDeD 8hV/bi/S5wyfSs3o5B6Wh5Qrj7MnPtwmtbgCoG6H6U7kWhvp1ra7k7Z4f1Nh wA8Rco6dE6yY151lSRf7bar4M07Mc56r/+iE9t0Q/17CaESnB11szuPfoyjP gdIUMSNSg9v1f7f35d1t3Nie/S/1KWDNOCHNxaR2WZa7lVh29NrbWHI7Z17y dIpkSa6YIjlVpGV1x999cBcAF6gqLpKc7YinOzJZAArrxV1/V/loFvibJww4 bglDQnTPqvoE1pC3hE/V8ZW1ahWcwVP1oIZlaqoZ8tGeuGDq6Yb5Fbr6x7Bp fiQbh1LAuhY0bmdLH+xMk5fpkCOELAtHqi3Penvw5ggvoWOxNTMzcxz37JhH 0v/6LVjPTvSMMY5msirUBDpYVpHa5yMaVsb3viW3+YUamNORIwhSLGynqPTb GNzUFi7+FNAcSsYpymMHobzZV8dwmJedHmDQeFMfglVh8W5qEjrJyl6nX2MM eviGsRb22Y9N+Zvne/CSBRb8wWQ00ZSC3IHn0ZywM4SpUtp3J5TZ3U2UBvby pyRFomT2upogbZy3ob2XvYwnH0b6noEK5t/7yjAnuOMb/AU2sfk3b0nzFbaV e5TF9gttCfPNW3Bbl9bPfMXVWYB2N+zsCSrK973ydSfqKdB3Vo7iDzndCr/u h4N/HZ5iaPbRq2evfYoFwweGvnrag41yisS9pohmneE+OatmE30h60O4amo8 Uvcz/f9xQ93v/zRcbXD5CrZSaz4hsao11PJcQ1W5Ufev5hNyaPZ6gquyXFew yq31JVA+lE7OQt2Wm9wuRJGxjNf2fTKOfXsYihH2Ch9PU81HxVlIw1fql7om 4HVUmaZMUlKGnJJxqkbszizfP1sFvYnZjRd/BPubeJRvxGhO/Ta+yNEvQTv0 l3hymoFadRgPeEBd1H8eE7d0Rhf6fyQfrV8NHr18myKGlr5MqSwFM8wdfAeH xy2BBWiR0XZ4qB7xhiFQ909HH6uELjJnHFiGem+GIn7KD4il+LR8dAVj06V1 y/SCJYdItSEEkl5ZtLpvD149ff3y6P8ynTk4CfY30qdnoLqO0LjWdBqDUD5B w+9qqgWC0cUq2j5BIQ6CBGi9MdgOTYUKLdhUrkEWOzCajmNSaZOloxcb3xAO 6AExFGSSNLmIdbvv9VeSMMj5AaBswHoEyg3dJTJNaAED7eqROh+N0FjWjbrJ AIwNZLq7HHFsy7dEiJmrzzTJkSqZqwn4hABsBLbPsRnQWWcKxfFamQxtHGS2 Yg2hWR8MpwPDL/TR7maWP0FAwk2HhmAwfJgxnsESJGA0fWaweuQr2M2JWyt+ BzYVnYOXCKqLQE+KM2ldtjVtRKNLvnuapFlbS0KdOouSFAw0qZZ30yi9AmOh LQ/WKJBT9FR9iodomjB8gGEfa9a/is3CZIbKaMmGIxSHSYdbwAKv1GkDAb0E GmqPYREN5XqgCch046c9PK0YTkSF4VBe8JISWMmeUxJOSD9boVqmgeJTWEab CVCpat/SbBJEBcf1Qcfrdd06N4w+8PU6vPGJWtvsUNCK6PaX+W/XQo9zwcZO iLHTeyxB0NRYX2XltIANPpYgvAF3xx5Y8YBiZtYiVKTFptA5khTp3+weIJlC d3LGERynR/zXccKwA9+9eIHOP6MxKRvNU9LC6UP7CP9LvmjEvFb921izWKBa QAdCOFFd2KKakPVrpGYzWuNHUnx1ymMsZNXYXiGnpebZ8PjalXo+mNDnsmm8 JuBIKXmVIAtkn+BNZHsa/G47x1sf93Cg5zbyv69qNwpAe/ka1XtDqN1R38q6 9yr5k/b7aZwBgzNMeugGQ3YSUgT775CxmoW2OMBTMgXcSGq2P0iYMNDQ6ebA JZeVIibOGHxraD3YoZZ1cjUXe2vnj49JviuPld/3uqJjiFiSh2/fvn6rmVlh V7g/IA2yVTWNRhyDiB5PpJHUhWyEqFtCsWp2qJqCAy4oectRZRgpXgUcWBMZ B8BCswgN+e9Gdyl3AHRgX6nqjt7NZTMhLKv6wXZNPaTy+UmxXaZAaN3LbyfY yYL1sAFB1nXx2xS9T4yhg+MSA1BQoJUlm8B42bkh11g7Bnb5ZOL79nov8Yfy IEQiratq2I86TcSOtFd6cwXxn3ZCXZef0qBBudkEtfNYU13y5kgnklphoK4N r86Q9cM31AJhnyjIyamgKjKuGKi5DUQ3jXvei6DTN9ZRVy0w0hraa52O/WGT sg32UG6aOrWa159vhEDvPfDJHv4E1I6nTvel+cRtUDG3e+ZpTxCXniRm+DQk PzmS59pw3d9XeYKJ5dhkZyKV8TfPFOg9kdY6eHWkxVSPK/dvgJrKDJfuq1qH yYRvTyrYxG2EZuEz5GoQw5adoM2d3PIsbRiyrblwagehCjRdmaALpn6eRg2K C0C2DZSThRzXHI2dUc/r/0DX0f2yYNca707UTsd9z3edAtCMUyw1ZDxj+yPX Z3DWeURGCtPa63+2sPzD/AyiCoiGDkuFxlUrtDjPfc8SGqvz5FPsVNeWq+9B tBHGJFAwQGZdpJ2RUA6p6Xx8P8YxuFmTEARfYus7DDgLZnCIZArySekizFKE ims/kXe6oyQWUK9uSeFBel4NNfKLKRCBuqHai265UZpOxzbsRlP/j5lxRDPG aWv8I11joXYRTSHR4CM6Flvyk1kSJueb2AyA6k7w+KkEiHDBudZP6nUHpWHo Nt8MXMWauZOfkREPf7QIYhjvzWw9tXCPHiGTgK8ITJyGfGk6YqcfDYivwCdz wP5iaQx3ZhwYH2fqoXQrVpfE96pPOOXkgkoO1P8UhYNj9IgboBFQz8y8cG8r KHR8cXT5OpSPb16fmu7T7R4eW1LWXv/cAl8EQiS4p1iPwQrJA4TzbOV9CPN6 b481CKLC4FArPYczLQzWWokajhSa8giDPQf0FnEOeCIUu/mB1Uh4U+L13VTk 9PUwBVx4+Af9kYfCl5YRP/4UQlpOTSt45GmmgtNAhgc0sJ+OBn03ljhBUT2B gAV0yvSs/SilIVV2JnVrzBfme8N/N59AfTww4judj9xpoRDh3JG0nfy56HwR V2q769wLGmo67sNtBMFhmlMPOzakJbQdg+/UPfca9HogtFf3gyMQsqr7Veod aWn0Sp5ORgusilsGVJhcJoDI1O/TEEwkwFgQTM0QC7ghf95M5+CHn2v5efWe +yP3xsyjm1HZMWOFj0Wr+bnBTZsMr71lC7c9VudKrgJ0M1wKV9KeS49EoQ2B 6ArhKGSeZ7UlTUy0NLlh6oTKZKvRoBaczzJA94DOFLUTFCfW3xPhNhFmeDDQ CpJDeTWyrs+gd4w/9zSv94jaN5L16dPX719VAYoIUH6tcdx52ubN5dj2AcRL so6OwMAupr0PzQHGzEAcWBHDAv1awlgtHJFKeBZxqVoHDyuMkJzrdHdJ/7P7 Ypd6Mc7H3FXVgsvuCVxZgAtU9PBxEfNRqMTQnOFoiCoTAF4zSSlkhJI4vfDt nmRsWMsTaCSmQ4pbiNkDQ7pPgoqiah/rbzWrjGBVod+46TIx4uRaD3oWDJcu cnKMPycUqsynqyf1fewBB00BH4f4IJZyDUzYHNGtae8jbuuK4pcXTTQyDvpY ROibJnomA/JELxvUFIT4fCTjAChYvCbBUwnvhb4JlGanfBFwZ+UMR1UL+mX4 TMNFOUVBjbGz8jya0fxyHcFPGpFR8J5MRFHdtM+yo7uucNjFbHBw3YoLq/jG sj/7PnQG65ogx0JXRAjZhNg+bx5J2cCtWS86HN++qjpDIM4S6Bp88b+p+DCW aWU8BDQDyOc4r9A7zyIfhT1CdNE573IvWyG0tANwRfZuY39PkznLxZxT8GlV 9/TjcHS5YiDX8ts48Xm/hrj9IWYKbguQLmG83Io4by366WH+gi8YnbyLK8VM ftmG8jj6urNSEMk7T9GR1Eg0NrDaTk4VQuw5DvPS8Ix8qllrWyym5Tv5czGh tTrB8xHYG8lHzWghYWkuTEwqnR2pKPTlu71AjskdfnkGZWnvbDqVprlnYPs/ qNG7HqtwT8qGvKK5Y/KksC4L1bTblvZ91Rep43sDX9oZell+j/EJpPBJNL2i lADgk0AhzGGQc16FV7p7Fr6VX6ym0r1q7iz/t675cOdnpdtof2531OPH1Nh9 OMM171o2SJjY84h9VmGNVcf6qiYTuR0L3vPrftGLnEWFs165F4VmJjQzV11g I/1Miv2a0OabO4W1sLlNUaSelmpW0G9D/x6ovKa0Flz970hWct2hPYzIjA0O wuDoNP806Fm8jDFsGZrpIxIlzCrVR3hRiQTBDQTpdcQVzsyACUZmpwC4x8Hy AHYE10lxUVvWT/mnU0pp8B2VH8WEL6gmJue9u2uMTClPF16m4nBJe0QLmKpL nh1ykZb3hqyRWBkbvWwnymLKCKsOzI3VjAwFoROnsdZSr+0FArgMHLRDPaVG qHjTkgs+sihF6/d2EeiTQW4McKxPFagdTMHUCDguCVcRsBR0+w1Rl2MdVQOG y+dwmNUqZVFK7ivWJfyH2YXcNJRRw4aIOCayCbYtul5ZGVit1ws7UyuhX05d CAIsRpKXUFrgO/ZcSb0epSXvY0mjYMwmozG5ll+NpuDl0VdtVWUgA/bWY0MQ zPA9laei0C+PiAIlrDFBYdhzUhHylF6A1gt192eIu2AZMOGFHlyMwRjuFa5e zWMsLswulHA8TKsJW4kSAwY8FL0+p1woVQyI0w5snvGT4ePukYqGSlpxC99G ZEAaPC2Vo7ZAdM4mxZQOFZIoHRri0h/RObTQAkKgAqYGcWaqHnPIh9cdUslZ 8QTpDcwnTL/xW90Ea0FR/+5NGiFIoAUaKL4mMMMmXdyY6mdhuYi19chSdPYU Xu1lGvv+Z9LZVwpUWPohaa74/BQTbtYBeNuUN1B5P8sOaqnim7bjG9Q2o7nK muXkXc8urTRLsxH20fEiCKTlrYgPreTH3pbGfGieWrnTPLaMvale4JCxoM2H WwgQCJzj1AzvxG8K6xbh7BYWJG4PgdcnzLEZDJHeYNTlY7RKpG2V43J8Hcpj JSbALKrzXS2OBiHX4yywpSzgQ4mhkglbCJ1CkJFIgBr8Ysmh79FmxeFlerQi HOXRtxlJGpVmb1JQI5Q3WWCHgb0eWGE8tabUTKacptZKeCL0J2c+WTwMRRo1 6TjPVREKfSBDuefCh1wQR6hUNC4AfIz27MRax3J/Xhc4MzNTYcw5EgudiBO4 Ss4YaQe4kqyXJl2CJRwNA9iiobyG4WgUH+n8WUH+QHpK20Cfkt7hMFBD+f7g 7Ss9Fw21SggYgJKTAk4VghxRf2Li/e5n6v7Y6CaJGHvRAHbifZOxEa48/psa xqOWYuJLZJ2lsCUkXCNFGQZ4IamqBhqhvBDlS/dLyqWzxNKhE0zbUjAlSYyZ kpycNlts/Z8ysdWTjwAWuV7Ka79MhsWsXAMuYV/bUaQLKXxWzBl4h67EKm5t 4uEWzRPNRbwc0Ewbou7o2W8L0BuLJjoaBrxm2ZXZzm1iYNm0oAwwIwT8hZyf FY+dUkYwpce5NCRTJ7H77AqhCxlZB4bUNHYIaitkNxltj9UQEetvigOu2dXD SLQUFjMCbySE9rOgOCisMwwnqTyzCcYYpNatgwccsURa/L6mwWQ1lnvRqGG5 IkCHRTKYMZv7WrLIXDMZ9lIXlkmpg7tX0HeTZ8bTTFJD1GmMKR7ybW60F7KX pNyEx5QcI3YOkQsZE7wD0ezULCGWVnRrLkB1mafI5wc1hbuLve2Fo4DhnyGy ejrhjYRgUm7hCTGJfZ7Qb5NhAEEtIGTHUDovY6RnsNJ4X5Cpv6gU0SAnAhLL EWqXo+D8zTUEB3Ns6e+R3P6oVbnMgXc2zEy0ytUUJROBMx865OT8cdD1xkzK bCP1SrGTzZN94UK7Yux5qJszDioDUs0F4CG+O1vDQY4knn3uxx9/VN9NJ+zp FtAO4/ICZ7H3IRn0tSxasPE9tyFrXPXchPBnbo5vGWzQbXKYIR/fhpx08v41 wj8wcnb8Awo+JchLgZ5tXP3BY9LDzuZDbuOg9GXHzobkCU2BT+S+6OL2sTln t9eyvpagWbd2DhB6sQNkRas7U0QJHo1hSoSCzVYijolC2FSfMjLjb6thr1vq vdElYDMUzZQhfT6LkgEFH6HdCrcU/ohYLKkSBklvGBeoVNCjQKKXTccAGs/Y 49iUJ4WhshkQpvVm+cDYE5jPHZtLIyRVeH8jOmPTrg1YfSfSs568qAkk3EE1 QhAS+BBSczTrBEdBxiADSxEPB1F6LkR1NybY2W8YBBPuiw/SPcMsFQKT4xuN a6ieKTKLD8izjwEx4F2MmUtvqwK4MGSjM4OsaQavpycbVKRXMzwqrhuGX+Ji 4XmFAi8d8UH2tyytIageCCtRny1w9wr3ri9y7xe6LfAOGgsMLN+VARUcAg+f nZjtpkpNJNlq0an2orvpQD5H55tIOZhKJ8uyxgVEk9RiPGIoPclM1ALEE/R6 0zGgf1Zd2IVzTBQIhTL3n7eKxxgkdE3IAbd8S0m4TvaX6p8cdEWR/zkFxNP4 jzKDQcMmO8Q7uwo1G3/3B0zxtfPRETwYosK9aV3nF/Ig5eB98p0n0RB6lDEI FqstCCNybBxCeXyOAGCo2SNIozZNMyhEsWfVNro2jMb0vbbnQKQw5B2lUEZq azHgVAKRbROAS4EEOViKOgTIzxgg32IqARAOj+D+hA0PRLaBzgWy+2gTInoI UTWM+1CqbflaOBNli+YpZBBuJgifYLw3zcb0PPaPfqfWUVuRK+/9zJ5etMe/ mh/4HE9vHhrzprLz9f3APk8l3DBMgTAaKbRTelNVz9sxnauRYP4Dv22gyLi0 dvje7IXTR1vCzlcBmINSq8SyBk+w9CriO/x7ymQU9Dr/Zp+LbA8fIHNchV9p XDX6GQ7SnvLYQYKIEDKBpw9y891QvBTEk/Nvbua4CbFATVkwx4cKcxPmpTJ7 nmaPvnqOLwbWTz72F8598wr5e8Z9y7Vky9gv3EfspjvwXmLOuQS3lBdgaeIo O6hav1sTsiTDtAKnf6ByhiTPU68EoGhxj0HR3pMJKsUsoTyBmGEFxXyg2/qE xsPeleO+hSvs65NDoNrIKth4emW1kA80ZX2gkNcAfvbZwcnBi5YSyoGr0fRb ymJBBi/9Pc3iwRkDsSVDTM+DNnS2rk5SQA+MkUUANtq5KXDMPAdn2djjGEgp eMBgVD62ARyQ6mlZbAjY9CnCjI9sVAgN8l4ZjZ8F32N16ErEBbEJKUewLUYH xlPvI8PnnbkycovlZtFb6MAvbF7dKyHA2IhPgVfIqjwcoa0xiR2wopXzs8HI qCLIit112gYYWjKcxqGTJVvR7kkzGsxFkdbawuwTMCGi13RH59OMvgJkJDyj UQj1NZEoKaA7p8GXns9UsZKr6rljGUcgdFeD0HtsZzzKMFNUaOiW7n85rYQe dbLwSIv7dr8vh+xYdEIhtEtzv180G9wPq4JJctPzCtxFJBFwEb8N1mpbv4LR MM6cKxLnC+F2MPkARMzAHCGqf4xpXFgLiowb1HfTBf8wTrSklMK9/gvt9V/K 9/ovfFdalRpYyRGIr4tx20ZbD06o5LpMHLzwmWPPM6FVy1sPfgltB7+w5QBW te1Zxa2soG7Bbwzdxn5hhNUSr7HKnMTvM61dixm8qDg6NEIAOWIcDkdN50Ce RkO9AU108w0M0gvapG2H+GCg5wtlLMCJRdUAnCWWyTLEaKGLDIuRterCbr6K NMtZtlOQtCXoE1UPCRTbQwSp8o+nZ98MOmSopiOWNyWXS/eGTSVFXqcGtNNE VJhtIAfA4RTO/cGd5mNnuFxiVPLV1xzWXDPUrQ07HO31BhvAj95wNckQZPWH xsismW7rPugy4xUNbpbxGrLEUj8863XOz4YCoOozrdkLzdNcG/c1pkrE8H4J 7CQGkVt615kbzLjjO++8HPdxGaMLGQZqmPigEm4ErGEAM40Rtys2bMFnT0K+ wzIc8uL/qrwHX7GLcR7OVd+IURIXqSz/kB5eLp8pJ7d4CEgGCK+M/2h94ISj ZY9N5tmovbXb67Vau2vR9sb2Tj7zbGkDLqlpaRHIabq7BTln8b/6a4C2nMsL sIKAKcrAJnrPTcSczRb504qqVN1XVpKAxeanlWZFoQRpHzdsTkQrS8J2mFtK /fqrCop4AmkNMtIGi/fq9dPD49MfFlivWYvlr9TOztrudrfbaq31ut2zuDdv peYtk1yjte1NWCT4sy1XKdbnQLPE/fgkOtdzjUtTOTn1xb19tdVuN/BBMHdw DgLEGD1XQA2gLXVy8PxYPdPCsGaW3h0qnDQtFYElvPWhVj5zWsIecK5V/W9M P93F9NO5eZxRkmd1N15r70ZxqxXvRDv97e3yWZ3VVn6OZ5WGGV9f78CMw5/O LiZjpgPhpdPW01QoWe+ZaSSfAIFqlrGBCnNvAQd48uMrkWuXCWTQKJY+FbK4 /3zyeTjjoUhiDx2ZXcImYhfRKazcxX6zz/B5PGQcAmRSKWe7g9anH06xqlXT 8o/GIRR/4/bMj/hG2nqYgiSzmR5oCiFtYwufU6H3zn/yYT+26EYo2tm6GYFL nqWULguy9lpMxW5yfq5XsXQjh4j4wR4KH/OWjbfW1zeitVbrrL/W2+2tlW/Z XAP5fZorgmnC15EcwJ/OBmxOvXZxOgyxw/3DPhNjTrFYc0xcWzL5ziing2cX 0Wf7CNKuIywFLE+rhzugsCe/OdIdbibuikWyXkD7CfUgiby+5PRJhxSMAMvV hywJ0XTAuaZFdhstsk0TB2q9qmlDMozSq1V73rEp9HwgNvYDhBxRMs5IgXoK siciUCgu7HansaEXdnuX6PzN19W7rdEZ+fhQk/zDNwdvD04OT09+eHt4/MPr F0+V2unsrsF6eimbtIx+8O7FCUEBnAJCQKWCBf1iLw7ePj/0CiEyXKe9tsF/ AAA/vIXfnRy94FtYH42VtdZma3Nl5W93n7/0p91urzXdDRINmih6grGgOZki FKpL3zMGzv1a72hvbW3A3872Zlv+1Z+Njc31jb911nVHOutbnfXtv+l/6P/9 TbVvf7j5zxR8jJXSf+N0drnZz/+kn2fgjLe1vrvVXd/a3W7vnK3vru+sbffP ttc2d7firWhnq9/b6nQ6O2udTfVS8xjH8Vh1tlW7/Qj/p9b0aq5AM4/UyehC S5//Gg37aaQeT+DbP8bnoNftTVqafj9Z0ZxE/EizCv2Grqf+azrQfzpbam39 0cbWo3V9i7Z1cyvHU+TBHqn/fnNw8v0Pau3h+s9KblJiQapilzo/lNoK3O0r Cu5tSNGtqZzHX2pxVv9zEPCZPfWrUtsdVW/mKvOlf3GePgSB/AwMzeFHV1Zr unJpTd17vpdzNfXEq3rJp7S94saoJ2ubtiel4m5xTbVRUnNGNa6pp86vOEvu kBV3cq/MMXolr9yFV+5A+E6cMV+u99VGZ0fzTGATBWSual1LoHpdDaRYVm1q EZRxTy4AK5D4wbnrtpJnTJfZXd1lazD7urm5vhP3+q3Wxk60vbG1mWdfl2nT cbTL1EKZd1OLXtta6IW/68ANebIXZxuM0UpXYyYVjRvFfEtDFGHdvdeeFsRq yNA2K9SN5pNQdmKfKp/vGsaXp73JZ2BFC+rpKs/j4YxarlOrJyghQdnVRjie kMGS1ghgr+aODtrW/6zpDdy0JV8e/Hj08t3LU9R3v34GWMvR5x/iaIzFmZNu lsyIlRX1GItZUjtI90Ye5GtTd1U+tOypWb2XR69osDPKHL06OplbSA8UyjC4 4aKDl5N88u7Ni8Pj0zeHb0+fH7461Mzz0etXNRL0P0TZBz3QQetjfCXiHvUa nKTRMIsw980RhA2Lshgg65cO9+N3V0f9wyFIJXgedtYaHVQC7TQ6nbnnQb/L rJoRs7UwDNFNp30t2YCT4ukgG+q3Hw0REeDHF6NzLfO8ARz44BRYaZ5Mn7ln LnJF09VKH+xtpyBEVr+xBUdj9Bw67V7BW3EqisqhjN8/nbh5y+aVJTJMxbIZ TUJX9W9ZcMilDgIiloI9QENiH0Oqo+t/0U3AmmxsrDc29Q22sb7R6Kzl1uR5 PDEHz19c9SDtsgcu9ut0EA9pzZCpgK/gMGMegVcmbhHbNUqsRyPB2Ncw2sdq Qwj5x5AjobkBqQs18Wk3XOR9VbzddYX/wDFD5Q2cblLcmF+iT+ennJtj32sW 5/ahCl/ExMWPaWMVE8LKm16jt/0UuDtwbjEyvB1EJSfd85s86i3eFmWQAlzV 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 /j/KuZx9AGgBAA== --------------B199DD3CFC0C28E7AD6A79A6 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------B199DD3CFC0C28E7AD6A79A6--