From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0 ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id cFM7MyYtp2GIMQAAgWs5BA (envelope-from ) for ; Wed, 01 Dec 2021 09:07:02 +0100 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0 with LMTPS id IKz6LiYtp2EkDgAA1q6Kng (envelope-from ) for ; Wed, 01 Dec 2021 08:07:02 +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 18E3EB5E9 for ; Wed, 1 Dec 2021 09:07:02 +0100 (CET) Received: from localhost ([::1]:55172 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1msKdp-0001n9-6a for larch@yhetil.org; Wed, 01 Dec 2021 03:07:01 -0500 Received: from eggs.gnu.org ([209.51.188.92]:42496) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1msKbm-0001L0-RY for emacs-orgmode@gnu.org; Wed, 01 Dec 2021 03:04:56 -0500 Received: from smtp-out-10.univ-rouen.fr ([193.52.155.253]:55526 helo=mailhoc.univ-rouen.fr) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1msKbj-0006Je-NY for emacs-orgmode@gnu.org; Wed, 01 Dec 2021 03:04:54 -0500 Received: from [10.196.65.88] (ired-20-4cab-1657.univ-rouen.fr [10.196.65.88]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mailhoc.univ-rouen.fr (Postfix) with ESMTPSA id ECE5E3B6B for ; Wed, 1 Dec 2021 09:04:42 +0100 (CET) To: emacs-orgmode@gnu.org From: =?UTF-8?Q?S=c3=a9bastien_Rey-Coyrehourcq?= Subject: Org babel Python and R, table not transformed when :var is called ? Message-ID: <91cb65e0-4b2c-92ae-a69f-4d9ad8b3e1e3@univ-rouen.fr> Date: Wed, 1 Dec 2021 09:04:29 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="OLwZhjEpnS6ZsLb5ad2YpPIM0e8larojE" Received-SPF: pass client-ip=193.52.155.253; envelope-from=sebastien.rey-coyrehourcq@univ-rouen.fr; helo=mailhoc.univ-rouen.fr X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sebastien.rey-coyrehourcq@univ-rouen.fr Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1638346022; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:list-id:list-help:list-unsubscribe: list-subscribe:list-post; bh=5+j1N3B+uMbJcs3tYETEWticTaDOI+rozJbgdbuOR3o=; b=pVKARduF6WKcdpjEPjPOlbCzu328xNTRD2Y9XE3S/m3aiWdSn42+Iw1Xj3cxLsmZJ3E3i9 3v2kgfpsoIFqnLFnbIoKTV4cy+OILILLnUUgz08PrbzsY5J0DZhwkNzi5TbGN/2jfyan0w Ml2ZFW9kYap63Mz3Na4hFSZ5qzNMKmJvF89iADQDibnbfn3wHJzyZmhcM5Qntij6HUjulC mRwNOvqBkBbMcMWjCkTu02yowl5rU2YSnlw6r5cjX1NRdd7WgawTAE3YUxKbESstGFvYxb PKmVRn2skdocFRsOvzsig+wHB1ya8U/F9+9QSS4EosU7RC6skmVzjSOyNKCfXA== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1638346022; a=rsa-sha256; cv=none; b=KTHz7yD9MV92F8nY32p1PwIJU5EAUEUkYRhNK66yaQoaZ+mDjESCSgFSKfCHIelpfXbs0z 2mwU9XmxAgbAI5gMWt20+VQzs0vsPlYqoFVnoNhAzs5/kOpoC0OEpMs8G3LT+E/q14ca1u dY7q8MwmFZNUtscJDP3HUNrcw0dqFsGX1z8wr/1ZKbc3q54lHyfS8ba9NTTspYYEYHM2JE +uYwBet0jdF0OSy9pyGJoyeiRWnKRDmVq8yqJRQsdetIqcEL1X4sQWLbvlMTUvHIKYbNsO iOytSmmuSmZME9CZLYig35S8wJKrvjnr7h8mviBZ/4i0ksj5Yy3E7j2ARpw96g== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -4.11 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 18E3EB5E9 X-Spam-Score: -4.11 X-Migadu-Scanner: scn0.migadu.com X-TUID: yooAicOX/JrN This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --OLwZhjEpnS6ZsLb5ad2YpPIM0e8larojE Content-Type: multipart/mixed; boundary="OTVvSqT12JZLiIVV46zB1pKxJzwTJKNyh"; protected-headers="v1" From: =?UTF-8?Q?S=c3=a9bastien_Rey-Coyrehourcq?= Reply-To: sebastien.rey-coyrehourcq@univ-rouen.fr To: emacs-orgmode@gnu.org Message-ID: <91cb65e0-4b2c-92ae-a69f-4d9ad8b3e1e3@univ-rouen.fr> Subject: Org babel Python and R, table not transformed when :var is called ? --OTVvSqT12JZLiIVV46zB1pKxJzwTJKNyh Content-Type: multipart/mixed; boundary="------------D3CFA70DA5D3493E42226354" Content-Language: en-US This is a multi-part message in MIME format. --------------D3CFA70DA5D3493E42226354 Content-Type: multipart/alternative; boundary="------------1E503A507D4E81E17AB77FE4" --------------1E503A507D4E81E17AB77FE4 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Hi there, Perhaps it's a bug, or something i don't understand, i post on reddit=20 (https://www.reddit.com/r/emacs/comments/r5yt4a/r_talking_with_python_usi= ng_orgtable_not_work/)=20 to see if people on org community know the problem. I cross post here to see if it's a know bug or somethings ? There is something i don't understand, a difference between behavior of org-babel and org-mode when you use org = table to pass data using or not using :var. |#+NAME:mypythoncode #+begin_src python :results value raw :output=20 :return tabulate(df, headers=3Ddf.columns, tablefmt=3D'orgtbl') import nu= mpy=20 as np import pandas as pd from tabulate import tabulate df =3D=20 pd.DataFrame(np.random.randint(0,10,size=3D(10, 4)), columns=3Dlist('ABCD= '))=20 #+end_src #+RESULTS: mypythoncode | | A | B | C | D |=20 |---+---+---+---+---| | 0 | 0 | 9 | 6 | 0 | | 1 | 2 | 9 | 0 | 4 | | 2 |=20 9 | 6 | 0 | 1 | | 3 | 6 | 1 | 8 | 1 | | 4 | 4 | 2 | 1 | 4 | | 5 | 2 | 1=20 | 1 | 1 | | 6 | 4 | 8 | 9 | 0 | | 7 | 1 | 4 | 8 | 7 | | 8 | 9 | 3 | 2 |=20 5 | | 9 | 5 | 0 | 7 | 3 | #+NAME:lib-R #+HEADER: :var code=3Dmypythoncode= =20 #+begin_src R :results output library(ggplot2) library(dplyr)=20 library(lubridate) str(code) #+end_src #+RESULTS: lib-R : chr "| | A | B = | C | D |\n|----+-----+-----+-----+-----|\n| 0 | 8 | 0 | 5 | 2 |\n| 1 |=20 2 | "| __truncated__ | As you see, the org table is not recognized as a dataframe by R. If i replace by a basic org table : |||#+NAME: any_data | | parameter | value | |---+-----------+-------| | 0= =20 | heats | 30 | | 1 | heats | 30 | #+NAME:lib-R #+HEADER: :var=20 code=3Dany_data #+begin_src R :results output library(ggplot2)=20 library(dplyr) library(lubridate) str(code) #+end_src #+RESULTS: lib-R : = 'data.frame': 2 obs. of 3 variables: : $ X : int 0 1 : $ parameter: chr=20 "heats" "heats" : $ value : int 30 30 ||| That works... Best regards, || --------------1E503A507D4E81E17AB77FE4 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable

Hi there,

Perhaps it's a bug, or something i don't understand, i post on reddit (https:/= /www.reddit.com/r/emacs/comments/r5yt4a/r_talking_with_python_using_orgta= ble_not_work/) to see if people on org community know the problem.

I cross post here to see if it's a know bug or somethings ?=C2=A0<= /p>

There is something i don't understand,
a difference between behavior of org-babel and org-mode when you use org table to pass data using or not using :var.

#+NAME:mypythoncode
#+begin_src python  :results value raw :output :return tabulate(df, heade=
rs=3Ddf.columns, tablefmt=3D'orgtbl')
import numpy as np
import pandas as pd
from tabulate import tabulate
df =3D pd.DataFrame(np.random.randint(0,10,size=3D(10, 4)), columns=3Dlis=
t('ABCD'))
#+end_src

#+RESULTS: mypythoncode
|   | A | B | C | D |
|---+---+---+---+---|
| 0 | 0 | 9 | 6 | 0 |
| 1 | 2 | 9 | 0 | 4 |
| 2 | 9 | 6 | 0 | 1 |
| 3 | 6 | 1 | 8 | 1 |
| 4 | 4 | 2 | 1 | 4 |
| 5 | 2 | 1 | 1 | 1 |
| 6 | 4 | 8 | 9 | 0 |
| 7 | 1 | 4 | 8 | 7 |
| 8 | 9 | 3 | 2 | 5 |
| 9 | 5 | 0 | 7 | 3 |


#+NAME:lib-R
#+HEADER: :var code=3Dmypythoncode=20
#+begin_src R :results output
library(ggplot2)
library(dplyr)
library(lubridate)
str(code)
#+end_src

#+RESULTS: lib-R
:  chr "|    |   A |   B |   C |   D |\n|----+-----+-----+-----+-----|\n|=
  0 |   8 |   0 |   5 |   2 |\n|  1 |   2 |   "| __truncated__

As you see, the org table is not= recognized as a dataframe by R.

If i replace by a basic org tabl= e :

=C2=A0#+NAME: an=
y_data
|   | parameter | value |
|---+-----------+-------|
| 0 | heats     |    30 |
| 1 | heats     |    30 |

#+NAME:lib-R
#+HEADER: :var code=3Dany_data=20
#+begin_src R :results output
library(ggplot2)
library(dplyr)
library(lubridate)
str(code)
#+end_src

#+RESULTS: lib-R
: 'data.frame':	2 obs. of  3 variables:
:  $ X        : int  0 1
:  $ parameter: chr  "heats" "heats"
:  $ value    : int  30 30

That works...

Best regards,

--------------1E503A507D4E81E17AB77FE4-- --------------D3CFA70DA5D3493E42226354 Content-Type: application/pgp-keys; name="OpenPGP_0xD262AFCCE42732D3.asc" Content-Transfer-Encoding: quoted-printable Content-Description: OpenPGP public key Content-Disposition: attachment; filename="OpenPGP_0xD262AFCCE42732D3.asc" -----BEGIN PGP PUBLIC KEY BLOCK----- xsFNBF9OOToBEACtaga7KjETcSryEdI4VN8JsHP3Pr/sgHbZCF1zLIDve3pu24II/CSpg2O9Q= Uok a/3iL8XYSJNfXEXuP5p+Bwlu4y6OO9+b1XtIrUIpw1CLMnithPX5cM5qOsocJeN2cz4FbvJLV= Yoq B5aLBQur0LCt38TWZbP8Kzb290HFMTe/Bul9yEaa64CANxjjI/CJZUyO7hEnGpf6Bdr6h6mKw= 7qr PvieuAt1jrBiQffiwiVG6amPjhvf8SUW+udi/zWVXppl1pMHCmlpzj/WsuEgSaaIsi0sMSmF+= Zcl p2XKO2ndbsXTY/w6o8BWcyCor2+XBRB202I/kIOeClw12eB87ynma6tWEHHc+oyW6/1HjnJxx= tvG o4WofMWi+KrFwNQhM5Mdc+5fepqaMbBaD8Zw+QYa54u/T1c6PcvvTG2YGvDgYyv1BLbNNpSHt= ghY ItOA2BGQNpbNLOhTWazYLD9m8l49C5fgxrXssbB3Sixx9GgasuzzZF9iXhg3b7EXYRDsu7ILJ= 36T PxsvjkDILsTVTEbh9GO/UEah0R7Mj5Q7HcuNDvcAi3Cye0a3zrCvNQOkLMz+ge2URuHNMtKNt= +vm fS3MtBy7t2zUGi84me/U3y2rsg2DUOiRQ/MY3W3JfHmQxmCTocP5nNfOm3rj+0loEfl4vfClT= rIb T7U8bWmG1yk0+QARAQABzTxSZXktQ295cmVob3VyY3EgU8OpYmFzdGllbiA8cy5yZXkuY295c= mVo b3VyY3FAbWFpbGZlbmNlLmNvbT7CwYwEEwEKADYWIQTkpKHVa6xHfZl3LbPSYq/M5Ccy0wUCX= 045 OgIbAQQLCQgHBBUKCQgFFgIDAQACHgECF4AACgkQ0mKvzOQnMtO4JQ/9FufodioEWuhezDudk= SoE TfdO/SFNLHAM0t8Ym+xGZW7bdiKgZdI+rFDKnUeYlbRVrgnxLkADjTdjCqqU4z+GD2IaysLtb= uqY JpeEgNRBYB0jXDuJurz19OTWa8Vl4U72fkLb64BnEbHGfIax8DCRdw2F1IbGox0hZ88kn6JIA= sAb p9RyEGNKu8XmldR6aMYDa3Mjl55TVsnXvth1dL1PTG8KRxyo7JdMjjkgfuu9BAuLPsn0lAttt= vJw IwM1/4poQvRDKRCeg+1/ICZKn1tghjfQ7uDfv0p4HjMd38OWxVpG+YJIG+Zh4SXWuJGkj334J= RVQ /9Tuc8DEaJYth62+LC+IB1ELmH36rTVNKQObIwsVCih6btNTtLssnfTtf56BjNAtNdyCekRiD= Urd slJjBCb6QvEkB2Do5PjOlfqD9h7RpP+H7CGFXeXUP+NEGrxp9oWi78HVopZxRklCPco4qrhyw= 32p +2pDMUouS+tkEyMr2t4ODw0EpACy4lrwA6tiqme3uwGr8KaRL+3OtHmo6nf41ZrWZeJXtas54= Rwh FtSGpnImFN6QtzgOMVc9d4lphmoVYzi1bBwFAq/NdpeUpslQD1XYevN4Sd6H6OTSUbRtfWMAb= j1u VRpwor7t8NKspmWxLnc2n1vQCFhx7JIVD4kwYyBsx5rm9nrhi4uZ4G3NSlJleS1Db3lyZWhvd= XJj cSBTw6liYXN0aWVuIDxzZWJhc3RpZW4ucmV5LWNveXJlaG91cmNxQHVudGhpbmtpbmdkZXB0a= HMu ZnI+wsGMBBMBCgA2FiEE5KSh1WusR32Zdy2z0mKvzOQnMtMFAl9OO6kCGwEECwkIBwQVCgkIB= RYC AwEAAh4BAheAAAoJENJir8zkJzLTX10P/RTvVK9itmqpChRciKxR1cNDfTr4xtakTVKwDkJ37= 4Df nM6vORTRBXets7upwp+4XCDlcAoC7WeXoK8qGpCQw9uKflYAu/PbXMj6JqSAS+ikSyqOasg/D= Cc+ Cv9syo3Dk/byHqZOQBSN2QXDirkOiMQrOPaLO/JP8oKBvvSyBhBrCKX/1QD3dwV2CUXKumBhh= voL RVoJ7U7fLDJ+MPwj+bVpZcyzL0+HOX89k76k+IKRHwO9sJ2Rfi9dk0P0oIlnSCjcOYVFWH3TF= OHb ecL6NSsxcla/Wkl++cHBL+RamZeqXPcRuzwBrVRq9K+CVMcK/cjJn6JCIdaEPz7s2NqROHCmA= oIN KZjvYFxIyAl2oWXCIBWtBkwzoY3sD80YgPXTLFGKP59x3J2f1KPLAJPaDULiPgXph8D43eYiM= 0hD GLDLmvNBXWrPw12PBZv2B86q1+6a8aFvbi/Fvr2XHpw/y8pe7ElDTseaqqLtAM4ReoBz85f8r= Ni0 1kiTvHg34Ds8Ju0yRNOE3yXNWa1v9XV+iiyfnPC7BYfPsfMiRjYmKggY8Q7z0Ub3JlGCeFZ48= r9x 0Kuwd6Axw1jFESbLaE2+rl4CD0BSBUrEgEsDsCdSzBfMSd8xfqlTz90qbC8UAZVbxEv/0//R5= U9T 6/PnKqmCL+b2pSt04Shy2Lag7d0hnkpBzURSZXktQ295cmVob3VyY3EgU8OpYmFzdGllbiA8c= 2Vi YXN0aWVuLnJleS1jb3lyZWhvdXJjcUB1bml2LXJvdWVuLmZyPsLBjAQTAQoANhYhBOSkodVrr= Ed9 mXcts9Jir8zkJzLTBQJfTjv1AhsBBAsJCAcEFQoJCAUWAgMBAAIeAQIXgAAKCRDSYq/M5Ccy0= 1JG D/475wj1CQwu7Qo+sFZ79nA3h5fDCdLFJNHQJrzdvCktggXsOiwZkhzTr9wXyxCnjrytxrZfx= bwm 7+ifduBuCDFVuj6mpcAYdLJtp82dnfNb7Q2k+Uzb1Ubw8GrV/IdHPLrk7YhwB9rjWSJGJhFom= 6Pl Xl02wCDfmbsJqtcZIjD4vFKDkORw87pBhUV9aTip+4vpiUtfJ91dOqnZlFMosLPy+9fker/Gk= mjg SMnlIcvFwmeNw/8SeJnU+4JrIey+GHbzSMEf+XxaTWFnny/AUGsoeMdeX7tXLy/hWHL8ETPQq= I1b jE9SCG6+4ibGrTsnCHycBZJQtWaiqLnrpZUVC/kuNJncos4HCxZPUAYRq+TS3VzLctmwPlWq9= ztV NXqhYDGj42/KwG3gEHfrej+GYup9T0A4RW9lVf2es21UaJDg0s/EmMFdF1yb60/05mMEMnGUN= +yW xdY5QAfuibO6A9A9NcDhsVjeAJ9ylBz8S1AntAeIKj6eC1ZGaHkYQeMaSfO5kJQmz1qPTRcbG= t0u PAZ4khIrgKPDD/7WSAvfwxWIoeWnR/b5LBTYQCwegiJI4ZIfn2Ez9KiGGl5ubMMbemKYjSIof= WxB HBHJpD9MDlPT0JyK63HgaSUkypm+R5c13C+eXU2cltL7G29QC9ZQ1TGhp5xXC0XZ1rRlvBGuo= pLP 1c7BTQRfTjr0ARAAvcxHoNrZMPpLrdT42q8E6mlKjegD2Dylw+6iOZBVKulG8YDvDyB+KdknZ= Aq/ KwhNzlWZd6QjoiDSbHhJwLTIm/nX1T4LqLWiwVSHH079xi9qyCcIy8owDG4oXMhnkZXb9Zj59= iPa 8NqUkKE8tT9vdR7oKg1eQpKQx7YsPUt01hNqZMXo8JHPyEPBXnhMZJMHm6e4CRrzMmyvOfMD6= YYw LESQJfgW++kNUEsVPQL+VHt1lnSTa4B5z97q4zArR0Kg3cNBY8S//6FzUZ3fikPfQ8cYnWOLg= 5zR 0Sb9SnCqTLcE5bXUlLZL6U3KvovDe+kaiv/xItuKCPxSOLN/in+cH/esz8crNDbXEYQ7HErvu= wlA 8Ves/U7yGRfR67V3ZDqSsGgEjK2Bxvk7+zI3OSQ0EpCxXJ2uy4nUMj4lka/k2o3FLhMNGDCHB= ebm 3zl5OdTmExhuIqQsU6EmbfKuK1ZKsubfC2f8QnOVPxd9Dk30UyWSbsrSWIbgyHhMoUIE88F4W= XiY mRp+mHRNRjgM4kunjsoRfjK7tCOnjknNYUO5Luevsl1x29VUXVgBMBGuYTMZIRFGDPlvb1v81= oG3 fFkqALTSVrDLXNcj6BcOX/HRf7SaW6GDdy4p60y36py82KLw9NerB6Cu2PyIDRT7reflHIgy8= UTe Pg34skmPpnjXhmEAEQEAAcLDsgQYAQoAJhYhBOSkodVrrEd9mXcts9Jir8zkJzLTBQJfTjr0A= hsC BQkJZgGAAkAJENJir8zkJzLTwXQgBBkBCgAdFiEEQdBRWS1ZqcB6tN8l3FXLa3BDQW4FAl9OO= vQA CgkQ3FXLa3BDQW7riQ//QiIpm+D5R/GIblgW7AatFbgO9Pylx7Nay2Yyoc4MToA7/CXCdP7WH= lqm SONY1RUE6YVrZAogULbimyBOySdz4AQpamOEr4bM+vqkQxiIphC6YaC3y/ndUlLA5mXV1ORlD= Vek xNFl3c5wnZOysRMk5jWvQD6YwZkyh0cbKrvm9o9Zwex7Br5cAS7XFrTqnGQwStmPBj0Ha9iYQ= 0F8 EAVXN7OzNo5996U/EIpnfJlzm/WTQ5Omuhs90vQ1ByQ7fJq4k0CRi69LOFGXgtYqSbMcV/uub= Ijt zYzLGTofIZYF7TcCi7SgOJuZgGPMK0GDyDJdszI5RSUGxzSpUUuv/slPhiPTG5jRpNxmTUn0n= A9W pNY5/byASzsRovM1MCpPUoY5Zf0ZT3Kum7mylfhCJfC0bTwWkfi06WUgCWzdrQlm8+vzIHLfY= IB/ tJxEXchbvanqE8dyG6B/aSI3klZp0IDjnJPSA2onMCaU2zv4zH0fcfLHMz7qTlP2WwyshpOEw= S0U 5EJnrnW65Uioa22Ao/4/1jD6EBOndFOCFJiuvzShWNm1E5LcS1+7Cn/ooWiomIL6ivJYwKZJ0= PP3 ZCmyAYNAnXH8i6dprPblRdXjVmUAgrTxcYhOCpAONSBHp/3X+AEnI0eVxgVdVm4v42eBGQCrl= 3tr atyyao7rwFHDtC1Tnv2mzg/9F0amwp5NGZPxBX0ZCGGr16xF1/kjG7NEAmOIaOE0LtwQL87Vd= s0n Gl8cvJRNEr9lDYevsYFpirOT/JHsjepMvp5OqESrQ9H4b2TI0FIfECaol1godhPbe7fsbCcnx= u3f vRJnBbrQebEPfyixNRj53fNsU6FVnwx8dvXERkPcmCErEDpJq8WEC4/F1+GYsiDE8X5DxlJzJ= ov8 UIDr4/NT4GIQYXnBoBRgA+nLLh5XoO/FQe0Sada0OWqlKYvRgBJwA146qrwF9qbJPtBkFOheJ= RUS lai1/IQEbm8X5H6RLYOK4U8ocMXy0UZCtboeXtvs4w7Bv7Yv0cqoaggBIKXiQyynNgtbz0q6g= Ozn W2X6lgBdLa4a90Sx4zAtzh1Y/yHNf3QFI/V7mK6GRTueXR2XxWruhq54rwSQSKcnSJhP9hnFJ= 2iB aVkdfuYFXmJUU2ReYYZrk4Z/fGfqrRSjiezcemY9xe/mwB/SacBEfk/6RhOJXsKq1F0QLNuMW= 8jg bOoRFIaQvGNsqUlZDO2XFxVszoGljE0sUmMGL3MzTIdIZi6m9JYy08s6DBrpOmmJZGm42EHGV= JgA tqk88Bn+cCJzuL/PpmyPZ0YM/ITQFeqj2m/V+J3WaysnhqqaluOFkCfalDCuZqt8ZTf75iQFm= 1NO qnpY+Vkg1svykWxprJdVDgjOwU0EX047LwEQAM8Wpk7WgwzG/m1JU3gX4a1D5/NT6B+RMzlHA= aXD jc2Bmhpc7vdyfyW0S2t/rmIavpgnPl7Rl6jbAXa53FVKNgEJh6sMAcrriog0a67MjvECgUuQV= QKZ sRqCaEiCPPRfF5XsxZHYSfa6jYK0Xa5vTQny8K/6mm+pO6etLWadAqSzRguW8KFaJQwzWPis9= NsL S3w+fJIlFA+H723crlkBdotUjB1il9dpUyjApmi98ss7c676eyqd0QJpmTxtj72w06yozOfK4= 4HO bu+DqjZ4Vay7J7hHDr7SzlML27AldecSfAHoYueiAYDUys21P7Ntk3TYNK1lHDVYxPnQaYR7Z= Wm1 FIlggkpPPS795WgLHjIkHOE9m+X8YWbTOeKrudLff/70gTqVOQJJhE8EzGhTw81zJhQLjerzN= OBl CAIBZWIt1FKZRX3h9agbfazx+Z/+L7NTD3eyR1Xk5xMtWAHsxLDmZdOz/H91e/TQhF0PPKyFD= vse 0G114ADFtwzhviht38QBqj9N2Kbi1wsvZQpNKIDYHl5toazflnMF8U9pqYVnCxqRs44LCgAyU= Hvk 4hznUvyCw53LWZYxPFgo5/S+BvRML6tNLJWjet02Kj5MqgYGO9LwUWNVatfvJcKd3DDN09HSa= 4rJ Azlv8ZJFcYRv8G1utoHb851Qq71nHa3h7SaZABEBAAHCwXwEGAEKACYWIQTkpKHVa6xHfZl3L= bPS Yq/M5Ccy0wUCX047LwIbDAUJCWYBgAAKCRDSYq/M5Ccy0zhSD/0e2gp+Ttr7H+WCCxlw/tyUs= WF/ MneGr7Z4P6aqy8d3XqlyeTryQ4vs+M88wdNZQzGkZZNScLZduSANIn2FUE/t02UhJKLmTpW5y= /EQ T5GTbCuK1uLACgRupm1XFskZUqnSbwE1XwMy4UY1fKVtofnokCSfFGWIQeZzX8EceqzycydGs= eRc RoaRpZn+486qN7WbmZM45q4LlDBq+sz0y6ALn9QmcLT5LW3Gu1YdmVrhH/GVyxQggupmzdf+/= IFg VnJAJdq5FfawjYCjrU126hKpXEw8GA9ScqmP59ntQ9zOQyD0kkdTyEe52AstmW5xLiVG54Mbi= z0U BUBsKaIR43hEcgTTEaB1jxsshHopxgRtJlPZ9WsHdQrOeghOSxT4OIZzjQ1+E9DnvHCpZYlDz= uwK nPmsIXk+Edpmrs9Ip45Ok4y4r6Wg5i6wf9Cy3O80FsZqxtm5pnKcNmzofK3T9ykacvOiCq2uY= eNF pbB3L+WUZsyHoueIqcUKrvffZ8o7La1NIqnPb/4TYeGNt5NqNOA4uIfjjKMbPKJC+2haKcMOX= ch3 tc0GGMRZUgIXgyB58A1VOdzJeGxsILdi2eEGUWL6ziUhSwqwc5tUU5vmJOKjk6st2VbIz8+aw= Ek4 x1VduTU5xgohNYiHIpBJRyFeTaJEQxP+GvQR6tWHz4pV5rVpDc7BTQRfTjtMARAA2eYwyheHo= jTC qwKbZZxQbVR9FHecD8ltQ5T4dNP1LQP049r4o+SC3iLPGpaqX+8bXUhVDG4is1NCNsqUw+Egs= 4wR saD67J1u0GDg5RKB98kLtQGbmuabLAAUG8gTJ6jEJQ9Ekx4D+/mRXnvH0eIK3iyc/TQXU7/f7= FyC drVhsmG+Q5Z27BVWTpw1+iTP350oeSTYt2n0s69L3rvMeTcjDsq24Uzz756SWxHECo9yqIJl5= LB/ sKzmOHG8YXoYA8RW3Sey9dew0A9b8qpAsWLy+htzvRRvNb5v0TjpS3pC33F9s0UrH3ncBRd6K= Lqz yqg5JpZhUxUndT6ZV61yodXm50U+est/xwtpaziyT8jwABY/WCqRjdQDxYjROSqSxoHyyylpO= Y2T v0gZXyJHPe/dqh5Mj8qGu9apJQVkRbPof1TNiyLGmLOjTRox9zxrFi/WLidMuPhiPT/n+cAao= 5EH lUHQOyevgVPZtvvIeWwzNsE/hYTVtKpj99RIvLdZEOMYagkGs4yJoMOFbepOfmC/gC6VSO9Jg= imt WmCgh5kvFku2aGygksqbZpN7hqQkYOuK95boX3k79Mbr9cUUPrA1oIQGDvS/Hnth40wmZ5ZGW= vo8 +T3as13lMZDK/axAvqAuIUGFjcS92xwPrvCHi9hVWRiIXNX9xL6nTU00aCA5jREAEQEAAcLBf= AQY AQoAJhYhBOSkodVrrEd9mXcts9Jir8zkJzLTBQJfTjtMAhsgBQkJZgGAAAoJENJir8zkJzLTm= 74P /Ajl9V8OxOkxekKp9B0MpTTaCuUEhSJ+4ChZAVdeBkwxlI1si7OPhsg4ST0CzvGqvELm7c9NU= 2Ic uH6FMBPfPOWWnxYPLv1iILeBP4zHwY4IWwzm+inbqRS71hV6jVSj5SvgnYKAnjPyZnwvArZnG= mDZ rYVp9+rQPgZtFVWkj2fcZs4/0vr9bsSigPZ7la/HMlgdlxaAFPeT1mtp1cHrNcbE9ITJrNHIY= N6a NhW2McaIM2YdZZbKgLJb3PdtW/x+lf06OZ9YrmHt2CM74+kkkeVXutjauKc9DRNdyDbDLOPNc= UMr 9mMLtrlCQu/0jp7lr7o+tU4GvTHXO2wpB0qFm6bwnlJzl/s6jo7jTaIGNXYrCBC9dqPD3DkAC= KBp hbxtmguf7BeDiBfEsX1AsZl0zPeisXCOXZxZLwFviXBn/xAFX17InURCfUJeJof9mTrslBrkq= 6Ko vuFgdEPedzzVVtxTGsQQZ5bT6ZrKPGdhPedsv9ECl5Ru7DT/OpwadUpXqCBaZAjezCmAYT+bp= Hze /Dcz7zXXGrBDj8K1SZrA5gohEDgBAvRpFR7KbeztXb/h33hsrxRcEDMx9+Z07X/zGWuqyY8v2= G7Z pGZD8L6kh7M/zZHJzIQ8YV/nOuiRF/MUN+PrtRRlko+3gtWOa66z33pAW8oGuZFXdsQTBcNru= j2C =3Dg0Xx -----END PGP PUBLIC KEY BLOCK----- --------------D3CFA70DA5D3493E42226354-- --OTVvSqT12JZLiIVV46zB1pKxJzwTJKNyh-- --OLwZhjEpnS6ZsLb5ad2YpPIM0e8larojE Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEQdBRWS1ZqcB6tN8l3FXLa3BDQW4FAmGnLI4ACgkQ3FXLa3BD QW7/nhAAlIEIgepdusZD5rJH3OsifHSR7m0zfeHIE5QD4KFlMeZjG8GmMK/BWxHr iYKECbV2WAgTilc/wIlP6ToN/PviC3TjqY/pcwPUz+Rundcc/EyjYkf5yDreghLb PMUjjLVQcatLSAMswXdO3ltpngIZ89D8L3lDPnMfZre+LtuB2G+zE1FzQMwPcr1z QoZUxAyDihCJpYLDr0TCPwIVheJAPXEn0Xh2b0W4w6pH2uo3PLd/756k04jGuAfw L3NJKcmT45EVOzMyMC647ZS/Y0DnBSn7HQSq1JPLstp77YC/XNljKCYTT0oJIYbx ViWd5G9ZQcz5tGtJ45QNFjhI0eM2wgAzywkPS1xFz78hBO+YvOCq1SVNQICtBQxC j1w6+r+f/+sLARnYNHy1sqs4yYfXKRD0MlGYtqc7B4rT47IP70xxcselwIe4nfW6 MugVfKLOXU+ewWsTAESl8y9Ub4dd99LUYyMQMiphN2Q2g0cgoKR8DgQHBWswbYlw KRz5+x3eMT2QG8T6QI2d/VlGFItrsXHJPAKZAmvMY+lG5/pWsYrsnm4li9aMzXMG NOoa02tUSST8lP2K4YGCf0q7cMu1OcQaNnlhPGtP6l5fnj6XvsVGE4BmMrEDhP// 93wS97EgHVvufUxZUWRrzHxFORwY9883bm5NDtLdIpUNMnXusRU= =qfdr -----END PGP SIGNATURE----- --OLwZhjEpnS6ZsLb5ad2YpPIM0e8larojE--