From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id qBebBIbfU2A0RwAA0tVLHw (envelope-from ) for ; Thu, 18 Mar 2021 23:17:26 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id wK4xAIbfU2DOKQAAbx9fmQ (envelope-from ) for ; Thu, 18 Mar 2021 23:17:26 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 9E2641034E for ; Fri, 19 Mar 2021 00:17:25 +0100 (CET) Received: from localhost ([::1]:42674 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lN1tM-0002Rt-Qw for larch@yhetil.org; Thu, 18 Mar 2021 19:17:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52764) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lN1t0-0002RY-4S for guix-patches@gnu.org; Thu, 18 Mar 2021 19:17:02 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:36765) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lN1sz-00033H-TU for guix-patches@gnu.org; Thu, 18 Mar 2021 19:17:01 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1lN1sz-0000L6-PK for guix-patches@gnu.org; Thu, 18 Mar 2021 19:17:01 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#47251] [core-updates] [patch] gnu: python: Enable optimizations. Resent-From: Julien Lepiller Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Thu, 18 Mar 2021 23:17:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 47251 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 47251@debbugs.gnu.org X-Debbugs-Original-To: guix-patches@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.16161094091282 (code B ref -1); Thu, 18 Mar 2021 23:17:01 +0000 Received: (at submit) by debbugs.gnu.org; 18 Mar 2021 23:16:49 +0000 Received: from localhost ([127.0.0.1]:48311 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lN1sn-0000Kb-BX for submit@debbugs.gnu.org; Thu, 18 Mar 2021 19:16:49 -0400 Received: from lists.gnu.org ([209.51.188.17]:44286) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lN1sl-0000KT-Ah for submit@debbugs.gnu.org; Thu, 18 Mar 2021 19:16:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52754) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lN1sk-0002Pf-AQ for guix-patches@gnu.org; Thu, 18 Mar 2021 19:16:47 -0400 Received: from lepiller.eu ([2a00:5884:8208::1]:34472) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lN1sf-0002u7-TB for guix-patches@gnu.org; Thu, 18 Mar 2021 19:16:45 -0400 Received: from lepiller.eu (localhost [127.0.0.1]) by lepiller.eu (OpenSMTPD) with ESMTP id 92d4e09d for ; Thu, 18 Mar 2021 23:16:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=date:from :to:subject:message-id:mime-version:content-type; s=dkim; bh=vZN HBooyBAu/d1FOHpR/wW29LjCCdGxPYoArIV+X0QQ=; b=lf2L2fKw0LL5z3RBDsH TZj1PIXU9FMbuuVhiDZB5VlrAN0M7/SUGwTT1c/wtn255qtJ0YbJuL+6FqnZ9wYP Mp70sA4/bDZt7kp/WBu3nHWTdaOVWsSsBMOmX43xlGqUi4UR0noaIVfJS4X0CpWA gQ0JDBoMCZyXuC+85z+3mCq3ygKwZlIwJOqTE6k+1Fx1pNvmDYYAeqPxmSyizP2A bJpSu7GZr5RKaN4hTgdpYTOUbAYQwEp9FjpfXEDqp5l8JvNkK2a51lDUd+4QLlM2 wh84mN/lnR46vglLTbkbSBnToSIPzvDXLqdlP7t6s1ocXwgPe06MxZnJFSNDsYPT ifA== Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id de649271 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO) for ; Thu, 18 Mar 2021 23:16:36 +0000 (UTC) Date: Fri, 19 Mar 2021 00:16:22 +0100 From: Julien Lepiller Message-ID: <20210319001622.1c19ad41@tachikoma.lepiller.eu> X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="MP_/tZs_.Vg4a.HgJHHS0Xe7k7L" Received-SPF: pass client-ip=2a00:5884:8208::1; envelope-from=julien@lepiller.eu; helo=lepiller.eu X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1616109445; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:resent-cc:resent-from:resent-sender: resent-message-id:list-id:list-help:list-unsubscribe:list-subscribe: list-post:dkim-signature; bh=Tmc6rxISyL/AmrV8yZSUNU2FcR74HdiAaAYblpA36ec=; b=FmMcHVckxD6lzMpLdeO/BU5QQOcH6nYmRkXzFDfPbmjeaWAWqTIgghL9xI01rRS57USMwx Nt6INqlnByN+7fCz0ni3GBe0YiNSHZXElhFkxp0tdtia8N6qu2CwnGMA2ydUU7OXTg+2Tu 4p1opeaMNYGuZ1NMFUglX/o01v+OkVXLvEKkgwZQmH2B840BD+fO6htHnmIfglWW8GpoTp LX19EAzyZJFUAOnKSBVrfxk+Ks1BlaLdeNxt0/aKgBl17uVKA48Cil8boqUTxAF683N0rI iU47x9CqsQYTKNT269Vj0RTrhIcmRDBTPpsPz5FHuIf5JLxJ+/bpgjqskim1oA== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1616109445; a=rsa-sha256; cv=none; b=Rbg4UaLy2+riI0z7RnQt/PEUS341yyMd7BfD1R/AQRWDkYSSF09QnB6PZm26rnQ+JgeL2T tNbkj6eMFaFLOWqRuIAAPkWE/m76s91VGI7BKyh5XoDkEUNhDk0rLLh+IMPn1iDQQ/WlnO UMpiwOdXaEnadyVft+iYXLuL6iAfFWybki9BOUMSqgaRZZwxVxdAM8H8z0AR45r2cOOyvS HcsXd0ek18P0BkNLzQClDM6iu8oW9BgmXZXn9wFBAtu+3iIvYZVc5xqMplK4qtkfQc1tYP 2RU3rM1OckYIBangt5bYlRQk49u954iOAHZ4VhwS2pG2xE+0ssxgeryTpCmzng== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=lepiller.eu header.s=dkim header.b=lf2L2fKw; dmarc=fail reason="SPF not aligned (relaxed)" header.from=lepiller.eu (policy=none); spf=pass (aspmx1.migadu.com: domain of guix-patches-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-patches-bounces@gnu.org X-Migadu-Spam-Score: -1.31 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=lepiller.eu header.s=dkim header.b=lf2L2fKw; dmarc=fail reason="SPF not aligned (relaxed)" header.from=lepiller.eu (policy=none); spf=pass (aspmx1.migadu.com: domain of guix-patches-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-patches-bounces@gnu.org X-Migadu-Queue-Id: 9E2641034E X-Spam-Score: -1.31 X-Migadu-Scanner: scn0.migadu.com X-TUID: SjhKR3Addtsw --MP_/tZs_.Vg4a.HgJHHS0Xe7k7L Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi Guix! This is the second patch I created in my exploration of our Python package. Here, I noticed that our Python was very slow compared to other distros and I tried to find which options they used. I found some hints from Fedora. In this patch, I enable a few options and add a C/LD flag to make python run faster. I also attached a report of timing running the benchmark from pyperformance on my Fedora machine. For comparison, I have also added the results for Fedora's python3, which is somewhere in between. I noticed that this increases the size of the python package by 20MB, which is due entirely to --with-lto option, which also accounts for half of the speedup. Overall, this python is almost twice as fast on some benchmarks, and always faster on all of them. It's about 1.5 times faster on average. Strangely, the python package from Alpine is twice as small as this package, and they use the --with-lto option. I wonder how they achieve that. Note that I modified python-2, as its flags are inherited by python-3 (and also the bootstrap python from commencement.scm). --MP_/tZs_.Vg4a.HgJHHS0Xe7k7L Content-Type: text/x-patch Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=0002-gnu-python-Enable-optimizations.patch >From c72e34aa0eb0db589557e047c5db0128273d5d12 Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Thu, 18 Mar 2021 23:41:40 +0100 Subject: [PATCH 2/2] gnu: python: Enable optimizations. As a result, python execution time of scripts is decreased by 6 to 40%. gnu/packages/python (python-2.7)[arguments]: Add configure and make flags to optimize the resulting python. --- gnu/packages/python.scm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index da9859b11a..8de0ca343c 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -183,7 +183,10 @@ "--with-system-expat" ;for XML support "--with-system-ffi" ;build ctypes "--with-ensurepip=install" ;install pip and setuptools + "--with-computed-gotos" ;main interpreter loop optimization + "--with-lto" ;increase size by 20MB, but 15% speedup "--enable-unicode=ucs4" + "--enable-optimizations" ;; Prevent the installed _sysconfigdata.py from retaining a reference ;; to coreutils. @@ -197,8 +200,10 @@ "ac_cv_file__dev_ptmx=no" "ac_cv_file__dev_ptc=no") '()) + "CFLAGS=-fno-semantic-interposition" (string-append "LDFLAGS=-Wl,-rpath=" - (assoc-ref %outputs "out") "/lib")) + (assoc-ref %outputs "out") "/lib" + " -fno-semantic-interposition")) ;; With no -j argument tests use all available cpus, so provide one. #:make-flags (list (string-append -- 2.30.0 --MP_/tZs_.Vg4a.HgJHHS0Xe7k7L Content-Type: application/octet-stream; name=python-report Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=python-report ICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpbWl6ZWQgYy11ICAgICAgICB8IGN1cnJlbnQg Yy11ICAgICAgICAgIHwgZmVkb3JhICgzLjguMikKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tCjJ0bzMgICAgICAgICAgICAgICAgICAgIHwgNTExIG1zICstIDI1IG1zICAgICAgfCA2 MTcgbXMgKy0gMjEgbXMgICAgICB8IDU3OCBtcyArLSAyMyBtcwpjaGFtZWxlb24gICAgICAgICAg ICAgICB8IDEzLjggbXMgKy0gMC4zIG1zICAgIHwgMTguMCBtcyArLSAwLjUgbXMgICAgfCAxNi4x IG1zICstIDAuNiBtcwpjaGFvcyAgICAgICAgICAgICAgICAgICB8IDE2MiBtcyArLSA0IG1zICAg ICAgIHwgMjMyIG1zICstIDMgbXMgICAgICAgfCAyMDQgbXMgKy0gNCBtcwpjcnlwdG9fcHlhZXMg ICAgICAgICAgICB8IDE2MiBtcyArLSAzIG1zICAgICAgIHwgMjA1IG1zICstIDUgbXMgICAgICAg fCAyMTggbXMgKy0gOCBtcwpkZWx0YWJsdWUgICAgICAgICAgICAgICB8IDEwLjggbXMgKy0gMC4z IG1zICAgIHwgMTUuMyBtcyArLSAwLjUgbXMgICAgfCAxMi44IG1zICstIDAuMyBtcwpkamFuZ29f dGVtcGxhdGUgICAgICAgICB8IDc1LjggbXMgKy0gMS4wIG1zICAgIHwgMTA0IG1zICstIDMgbXMg ICAgICAgfCA4OC4yIG1zICstIDEuOCBtcwpkdWx3aWNoX2xvZyAgICAgICAgICAgICB8IDExMSBt cyArLSA0IG1zICAgICAgIHwgMTMzIG1zICstIDIgbXMgICAgICAgfCAxMjEgbXMgKy0gNyBtcwpm YW5ua3VjaCAgICAgICAgICAgICAgICB8IDY5NSBtcyArLSA5IG1zICAgICAgIHwgODIyIG1zICst IDggbXMgICAgICAgfCA4NzQgbXMgKy0gMTYgbXMKZmxvYXQgICAgICAgICAgICAgICAgICAgfCAx NzEgbXMgKy0gOCBtcyAgICAgICB8IDIwOSBtcyArLSA0IG1zICAgICAgIHwgMjE3IG1zICstIDgg bXMKZ2Vuc2hpX3RleHQgICAgICAgICAgICAgfCA0My44IG1zICstIDAuOCBtcyAgICB8IDU1LjQg bXMgKy0gMC44IG1zICAgIHwgNTMuNSBtcyArLSAyLjYgbXMKZ2Vuc2hpX3htbCAgICAgICAgICAg ICAgfCA5My44IG1zICstIDEuNSBtcyAgICB8IDExMyBtcyArLSAxIG1zICAgICAgIHwgMTE1IG1z ICstIDYgbXMKZ28gICAgICAgICAgICAgICAgICAgICAgfCAzNzIgbXMgKy0gNyBtcyAgICAgICB8 IDQ5NyBtcyArLSA0IG1zICAgICAgIHwgNDUzIG1zICstIDggbXMKaGV4aW9tICAgICAgICAgICAg ICAgICAgfCAxNC40IG1zICstIDAuNSBtcyAgICB8IDE4LjkgbXMgKy0gMC4yIG1zICAgIHwgMTgu MiBtcyArLSAxLjAgbXMKanNvbl9kdW1wcyAgICAgICAgICAgICAgfCAxOS4yIG1zICstIDAuNSBt cyAgICB8IDIzLjAgbXMgKy0gMC4zIG1zICAgIHwgMjIuNyBtcyArLSAxLjAgbXMKanNvbl9sb2Fk cyAgICAgICAgICAgICAgfCAzNC45IHVzICstIDAuNyB1cyAgICB8IDQzLjUgdXMgKy0gMC43IHVz ICAgIHwgNDguMSB1cyArLSAyLjIgdXMKbG9nZ2luZ19mb3JtYXQgICAgICAgICAgfCAxNC42IHVz ICstIDAuOCB1cyAgICB8IDIwLjAgdXMgKy0gMC41IHVzICAgIHwgMTYuOSB1cyArLSAxLjAgdXMK bG9nZ2luZ19zaWxlbnQgICAgICAgICAgfCAyOTAgbnMgKy0gMTMgbnMgICAgICB8IDM5OSBucyAr LSAxMCBucyAgICAgIHwgMzQzIG5zICstIDEwIG5zCmxvZ2dpbmdfc2ltcGxlICAgICAgICAgIHwg MTMuMSB1cyArLSAwLjMgdXMgICAgfCAxOC40IHVzICstIDAuNyB1cyAgICB8IDE1LjUgdXMgKy0g MC42IHVzCm1ha28gICAgICAgICAgICAgICAgICAgIHwgMjQuMCBtcyArLSAwLjQgbXMgICAgfCAz MS4yIG1zICstIDAuNyBtcyAgICB8IDI5LjYgbXMgKy0gMS4yIG1zCm1ldGVvcl9jb250ZXN0ICAg ICAgICAgIHwgMTU3IG1zICstIDQgbXMgICAgICAgfCAxNzkgbXMgKy0gMiBtcyAgICAgICB8IDE4 OSBtcyArLSA5IG1zCm5ib2R5ICAgICAgICAgICAgICAgICAgIHwgMTg0IG1zICstIDQgbXMgICAg ICAgfCAyNTEgbXMgKy0gNCBtcyAgICAgICB8IDIyOSBtcyArLSA0IG1zCm5xdWVlbnMgICAgICAg ICAgICAgICAgIHwgMTQ1IG1zICstIDMgbXMgICAgICAgfCAxODAgbXMgKy0gNSBtcyAgICAgICB8 IDE4NCBtcyArLSA1IG1zCnBhdGhsaWIgICAgICAgICAgICAgICAgIHwgMjguNCBtcyArLSAwLjcg bXMgICAgfCAzNi4wIG1zICstIDEuMyBtcyAgICB8IDM1LjIgbXMgKy0gMi40IG1zCnBpY2tsZSAg ICAgICAgICAgICAgICAgIHwgMTQuNiB1cyArLSAwLjcgdXMgICAgfCAxNy4zIHVzICstIDAuNSB1 cyAgICB8IDE2LjQgdXMgKy0gMC42IHVzCnBpY2tsZV9kaWN0ICAgICAgICAgICAgIHwgMzUuMSB1 cyArLSAwLjQgdXMgICAgfCA0Mi4zIHVzICstIDAuNiB1cyAgICB8IDQyLjggdXMgKy0gMi4wIHVz CnBpY2tsZV9saXN0ICAgICAgICAgICAgIHwgNS40MiB1cyArLSAwLjE5IHVzICAgfCA2LjI0IHVz ICstIDAuMTAgdXMgICB8IDYuMzQgdXMgKy0gMC4zNSB1cwpwaWNrbGVfcHVyZV9weXRob24gICAg ICB8IDY5OSB1cyArLSAxNSB1cyAgICAgIHwgOTQxIHVzICstIDE5IHVzICAgICAgfCA4MDAgdXMg Ky0gMTYgdXMKcGlkaWdpdHMgICAgICAgICAgICAgICAgfCAyNTIgbXMgKy0gMyBtcyAgICAgICB8 IDI2NyBtcyArLSAzIG1zICAgICAgIHwgMjgyIG1zICstIDQgbXMKcHlmbGF0ZSAgICAgICAgICAg ICAgICAgfCAxLjAxIHNlYyArLSAwLjAyIHNlYyB8IDEuMzcgc2VjICstIDAuMDcgc2VjIHwgMS4y MyBzZWMgKy0gMC4wMiBzZWMKcHl0aG9uX3N0YXJ0dXAgICAgICAgICAgfCAxNi45IG1zICstIDAu NiBtcyAgICB8IDE5LjYgbXMgKy0gMC40IG1zICAgIHwgMTcuNiBtcyArLSAwLjUgbXMKcHl0aG9u X3N0YXJ0dXBfbm9fc2l0ZSAgfCAxMS4yIG1zICstIDAuNiBtcyAgICB8IDEyLjcgbXMgKy0gMC4y IG1zICAgIHwgMTEuNSBtcyArLSAwLjMgbXMKcmF5dHJhY2UgICAgICAgICAgICAgICAgfCA3MzMg bXMgKy0gMTEgbXMgICAgICB8IDEuMjIgc2VjICstIDAuMDEgc2VjIHwgODg2IG1zICstIDEwIG1z CnJlZ2V4X2NvbXBpbGUgICAgICAgICAgIHwgMjU3IG1zICstIDIgbXMgICAgICAgfCAzNTMgbXMg Ky0gMyBtcyAgICAgICB8IDMwMCBtcyArLSA0IG1zCnJlZ2V4X2RuYSAgICAgICAgICAgICAgIHwg MjY4IG1zICstIDQgbXMgICAgICAgfCAyOTYgbXMgKy0gNyBtcyAgICAgICB8IDI5MyBtcyArLSAx NSBtcwpyZWdleF9lZmZib3QgICAgICAgICAgICB8IDQuMzUgbXMgKy0gMC4wNyBtcyAgIHwgNS4x MyBtcyArLSAwLjM5IG1zICAgfCA0LjkzIG1zICstIDAuMjMgbXMKcmVnZXhfdjggICAgICAgICAg ICAgICAgfCAzNS45IG1zICstIDAuNyBtcyAgICB8IDQzLjMgbXMgKy0gMi4wIG1zICAgIHwgMzcu NSBtcyArLSAwLjQgbXMKcmljaGFyZHMgICAgICAgICAgICAgICAgfCAxMDAgbXMgKy0gMSBtcyAg ICAgICB8IDE2OCBtcyArLSA5IG1zICAgICAgIHwgMTI0IG1zICstIDQgbXMKc2NpbWFya19mZnQg ICAgICAgICAgICAgfCA1MzggbXMgKy0gNiBtcyAgICAgICB8IDc3MyBtcyArLSA4IG1zICAgICAg IHwgNzEwIG1zICstIDMzIG1zCnNjaW1hcmtfbHUgICAgICAgICAgICAgIHwgMjM1IG1zICstIDUg bXMgICAgICAgfCAzNDAgbXMgKy0gMyBtcyAgICAgICB8IDI4OCBtcyArLSA1IG1zCnNjaW1hcmtf bW9udGVfY2FybG8gICAgIHwgMTU0IG1zICstIDIgbXMgICAgICAgfCAyMzEgbXMgKy0gNCBtcyAg ICAgICB8IDE5MSBtcyArLSA0IG1zCnNjaW1hcmtfc29yICAgICAgICAgICAgIHwgMzAxIG1zICst IDQgbXMgICAgICAgfCA0NDYgbXMgKy0gOCBtcyAgICAgICB8IDM2MyBtcyArLSA2IG1zCnNjaW1h cmtfc3BhcnNlX21hdF9tdWx0IHwgNi42NSBtcyArLSAwLjI2IG1zICAgfCAxMC4zIG1zICstIDAu MiBtcyAgICB8IDguMTQgbXMgKy0gMC4wOSBtcwpzcGVjdHJhbF9ub3JtICAgICAgICAgICB8IDIw NSBtcyArLSA1IG1zICAgICAgIHwgMjk2IG1zICstIDUgbXMgICAgICAgfCAyNTEgbXMgKy0gMiBt cwpzcWxhbGNoZW15X2RlY2xhcmF0aXZlICB8IDI1NyBtcyArLSAzIG1zICAgICAgIHwgMzEzIG1z ICstIDQgbXMgICAgICAgfCAyODkgbXMgKy0gMyBtcwpzcWxhbGNoZW15X2ltcGVyYXRpdmUgICB8 IDUxLjQgbXMgKy0gMS4zIG1zICAgIHwgNjMuNyBtcyArLSA0LjAgbXMgICAgfCA1NS41IG1zICst IDMuMyBtcwpzcWxpdGVfc3ludGggICAgICAgICAgICB8IDQuMjMgdXMgKy0gMC4xMiB1cyAgIHwg NS43NyB1cyArLSAwLjE3IHVzICAgfCA1LjI0IHVzICstIDAuNTEgdXMKc3ltcHlfZXhwYW5kICAg ICAgICAgICAgfCA3NjYgbXMgKy0gMTMgbXMgICAgICB8IDEuMDMgc2VjICstIDAuMDQgc2VjIHwg ODA2IG1zICstIDEzIG1zCnN5bXB5X2ludGVncmF0ZSAgICAgICAgIHwgMzguNCBtcyArLSAwLjcg bXMgICAgfCA0OC4zIG1zICstIDAuNCBtcyAgICB8IDQyLjAgbXMgKy0gMC42IG1zCnN5bXB5X3N1 bSAgICAgICAgICAgICAgIHwgMzQ4IG1zICstIDggbXMgICAgICAgfCA0MzMgbXMgKy0gNCBtcyAg ICAgICB8IDM2OSBtcyArLSA2IG1zCnN5bXB5X3N0ciAgICAgICAgICAgICAgIHwgNTI2IG1zICst IDggbXMgICAgICAgfCA2NzYgbXMgKy0gNiBtcyAgICAgICB8IDU2MiBtcyArLSA2IG1zCnRlbGNv ICAgICAgICAgICAgICAgICAgIHwgOC41NiBtcyArLSAwLjEzIG1zICAgfCAxMy4wIG1zICstIDAu NyBtcyAgICB8IDEyLjAgbXMgKy0gMC40IG1zCnRvcm5hZG9faHR0cCAgICAgICAgICAgIHwgMjkz IG1zICstIDExIG1zICAgICAgfCAzNzYgbXMgKy0gMjMgbXMgICAgICB8IDMzMCBtcyArLSAxMyBt cwp1bnBhY2tfc2VxdWVuY2UgICAgICAgICB8IDgzLjggbnMgKy0gNC4wIG5zICAgIHwgOTIuOCBu cyArLSA1LjMgbnMgICAgfCA4OS44IG5zICstIDMuMiBucwp1bnBpY2tsZSAgICAgICAgICAgICAg ICB8IDE5LjUgdXMgKy0gMC4zIHVzICAgIHwgMjcuMCB1cyArLSAwLjUgdXMgICAgfCAyNS4wIHVz ICstIDEuMSB1cwp1bnBpY2tsZV9saXN0ICAgICAgICAgICB8IDUuOTQgdXMgKy0gMC4xMiB1cyAg IHwgNy45OSB1cyArLSAwLjM4IHVzICAgfCA2LjgyIHVzICstIDAuNTMgdXMKdW5waWNrbGVfcHVy ZV9weXRob24gICAgfCA0NjEgdXMgKy0gMTAgdXMgICAgICB8IDc0OSB1cyArLSAyNCB1cyAgICAg IHwgNTY2IHVzICstIDI2IHVzCnhtbF9ldHJlZV9wYXJzZSAgICAgICAgIHwgMjE5IG1zICstIDMg bXMgICAgICAgfCAyNTkgbXMgKy0gMiBtcyAgICAgICB8IDI2MSBtcyArLSAxMyBtcwp4bWxfZXRy ZWVfaXRlcnBhcnNlICAgICB8IDE1NSBtcyArLSA0IG1zICAgICAgIHwgMTkyIG1zICstIDIgbXMg ICAgICAgfCAxODAgbXMgKy0gMyBtcwp4bWxfZXRyZWVfZ2VuZXJhdGUgICAgICB8IDEzOCBtcyAr LSAzIG1zICAgICAgIHwgMTg1IG1zICstIDMgbXMgICAgICAgfCAxNzUgbXMgKy0gOSBtcwp4bWxf ZXRyZWVfcHJvY2VzcyAgICAgICB8IDEwOSBtcyArLSA0IG1zICAgICAgIHwgMTQ4IG1zICstIDIg bXMgICAgICAgfCAxMzYgbXMgKy0gMiBtcwo= --MP_/tZs_.Vg4a.HgJHHS0Xe7k7L--