From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rainer M Krug Subject: Re: [BABEL] BUG Re: Omitting try/catch blocks from tangled R code? Date: Fri, 28 Mar 2014 09:51:09 +0100 Message-ID: References: <52F498AE.6090802@krugs.de> <87siruamo3.fsf@gmail.com> <52F5326C.7010505@krugs.de> <877g7syio6.fsf@gmail.com> <87txawwwh6.fsf@gmail.com> <87r45xeabf.fsf@gmail.com> <87fvm8gxok.fsf@gmail.com> <87siq7g2j5.fsf@gmail.com> <87d2h71qqc.fsf@bagel.gateway.pace.com> Mime-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=sha1; protocol="application/pkcs7-signature" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:34368) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WTSVb-0004hr-1B for emacs-orgmode@gnu.org; Fri, 28 Mar 2014 04:51:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WTSVV-000897-Fv for emacs-orgmode@gnu.org; Fri, 28 Mar 2014 04:51:26 -0400 Received: from mail-we0-f181.google.com ([74.125.82.181]:65315) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WTSVV-00088y-6p for emacs-orgmode@gnu.org; Fri, 28 Mar 2014 04:51:21 -0400 Received: by mail-we0-f181.google.com with SMTP id q58so2381253wes.40 for ; Fri, 28 Mar 2014 01:51:20 -0700 (PDT) In-Reply-To: <87d2h71qqc.fsf@bagel.gateway.pace.com> (Eric Schulte's message of "Wed, 26 Mar 2014 16:17:50 -0400") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Eric Schulte Cc: emacs-orgmode@gnu.org, Charles Berry --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Eric Schulte writes: > Rainer M Krug writes: > >> Eric Schulte writes: >> >>> Rainer M Krug writes: >>> >>>> Eric Schulte writes: >>>> >>>>> Rainer M Krug writes: >>>>> >>>>>> Eric Schulte writes: >>>>>> >>>>>>> Charles Berry writes: >>>>>>> >>>>>>>> John Hendy gmail.com> writes: >>>>>>>> >>>>>>>> [deleted] >>>>>>>>> > >>>>>>>>> > I think the default behavior should be reverted, as tangling and >>>>>>>>> > exporting are two different things. When I tangle, I want to se= e the >>>>>>>>> > code blocks as they are in the org document (with possible vari= ables and >>>>>>>>> > expansions) but not to create files where I do not put it expli= citly >>>>>>>>> > into a code block. These wrappers have nothing to do with the c= ode, and >>>>>>>>> > are only there for the exported engine. So I would either rever= t to the >>>>>>>>> > original behavior, or, introduce a new header argument, >>>>>>>>> > e.g. :include-wrappers, which would, if set to t, include the e= xport >>>>>>>>> > wrappers in the tangled file. This might be useful for debugging >>>>>>>>> > exporting of code block results, but not for general tangling. >>>>>>>>>=20 >>>>>>>>> Thanks for chiming in. This was my gut reaction to the default >>>>>>>>> behavior. I guess we're still only a sample size of 2, but >>>>>>>>> intuitively, I would think that tangling would be a separate beas= t in >>>>>>>>> most cases from exporting. Just to have it on the record, if I ta= ngle, >>>>>>>>> it's usually to take the code I've used in something like a Beamer >>>>>>>>> presentation or document and combine it into a single .R file so >>>>>>>>> someone can run it without needing Org-mode. >>>>>>>> >>>>>>>> [deleted] >>>>>>>> >>>>>>>> Sorry to be late to add my $0.02... >>>>>>>> >>>>>>>> I never want the try/catch wrappers. >>>>>>>> >>>>>>>> But noweb is indispensable. >>>>>>>> >>>>>>>> I use noweb a lot to organize and collect blocks. In some cases, I= export >>>>>>>> them and in others I just tangle them. >>>>>>>> >>>>>>>> I hope that the revised code will allow me to turn off try/catch w= rapping >>>>>>>> and still be able to use noweb when tangling or exporting. >>>>>>>> >>>>>>> >>>>>>> In addition to noweb, there are cases where variable expansion is u= seful >>>>>>> in tangled code. >>>>>>> >>>>>>> The simplest option is to move things like try/catch blocks out of = the >>>>>>> code block expansion function, and into the execution function. Th= en if >>>>>>> other language present similar constructs (which we want to add to >>>>>>> execution by default but never want to tangle), we can think about >>>>>>> abstracting this out into some new level of code block expansion. >>>>>>> >>>>>>> Thoughts? >>>>>> >>>>>> Makes perfect sense to me, and would definitely be the better place = to >>>>>> add them. >>>>>> >>>>>> If one wants enclosing code in the tangling, there is always >>>>>> the :epilogue and :prologue header arguments, and the try/catch shou= ld >>>>>> be considered as internal to the execution. >>>>>> >>>>> >>>>> Great, how's this patch work? If it looks good I'll apply it. >>>> >>>> Git still puzzles me a lot... If you tell me how I can apply this patch >>>> (from emacs?) I will try it out. >>>> >>> >>> Here are some instructions from the command line. >>> >>> 1. write the patch out to a file on disk, say /tmp/0001-etc...patch >>> >>> 2. cd into the org-mode directory >>> >>> 3. make sure you're up to date with the latest >>> >>> git pull >>> >>> 4. apply the patch >>> >>> git am /tmp/0001-etc...patch >>> >>> and that should do it. >> >> OK - managed to apply the patch. >> >> Using=20 >> >> Org-mode version 8.2.5h (release_8.2.5h-846-geb806d @ /Users/rainerkrug/= .emacs.d/org-mode/lisp/) >> >> updated this morning, I get the following error: >> > > Could you provide a minimal example file generating this error? Apologies - I am still struggling with encryption...... So here is my example: =2D-8<---------------cut here---------------start------------->8--- #+TITLE: single_to_multi #+DATE: <2013-10-15 Tue> #+AUTHOR: Rainer M. Krug #+EMAIL: Rainer@krugs.de =E2=89=88* Load R packages and data #+BEGIN_SRC R cat("Loading Data\n") #+END_SRC =2D-8<---------------cut here---------------end--------------->8--- I am using only org loaded and R enabled. C-c C-c on the block produces the error emacs version:=20 GNU Emacs 24.3.1 (x86_64-apple-darwin13.0.0, Carbon Version 1.6.0 AppKit 1265) of 2014-02-13 on Rainers-MacBook-Pro-2.local org version: Org-mode version 8.2.5h (release_8.2.5h-837-gb296cc @ /Users/rainerkrug/.emacs.d/org-mode/lisp/) Cheers, Rainer > > Thanks, > >> >> ,---- >> | Debugger entered--Lisp error: (wrong-type-argument sequencep 67) >> | mapconcat(identity "COLUMNS <- >> | read.table(\"/var/folders/50/wcr5bjwn75q595n6x82gxj280000gn/T/babel-21= 363l1U/R-import-21363S9b\",\n >> | header=3DTRUE,\n row.names=3D1,\n sep=3D\"\\t\",\n >> | as.is=3DTRUE)\nCOLS_TO_EVAL <- >> | read.table(\"/var/folders/50/wcr5bjwn75q595n6x82gxj280000gn/T/babel-21= 363l1U/R-import-21363fHi\",\n >> | header=3DTRUE,\n row.names=3D1,\n sep=3D\"\\t\",\n as.is=3DTRUE)\nALLS= PECIES >> | <- >> | read.table(\"/var/folders/50/wcr5bjwn75q595n6x82gxj280000gn/T/babel-21= 363l1U/R-import-21363sRo\",\n >> | header=3DTRUE,\n row.names=3D1,\n sep=3D\"\\t\",\n as.is=3DTRUE)\nSPEC= IES <- >> | read.table(\"/var/folders/50/wcr5bjwn75q595n6x82gxj280000gn/T/babel-21= 363l1U/R-import-213635bu\",\n >> | header=3DTRUE,\n row.names=3D1,\n sep=3D\"\\t\",\n as.is=3DTRUE)\nYEAR= S <- >> | read.table(\"/var/folders/50/wcr5bjwn75q595n6x82gxj280000gn/T/babel-21= 363l1U/R-import-21363Gm0\",\n >> | header=3DTRUE,\n row.names=3D1,\n sep=3D\"\\t\",\n as.is=3DTRUE)\nPRES= ENT <- >> | 2008\nMINEFFORT <- 3\nPROPTRAIN <- 0.6\nRNGSEED <- 13\nRNGKIND <- >> | \"Mersenne-Twister\"\nRNGNORMALKIND <- \"Inversion\"\nREFGRID <- >> | \"./refGrid_8km.rds\"\nIFN <- >> | \"./__BOX__/IFN/DB_IFN/rds/tabplot.rds\"\nIFNCOUNT <- >> | \"./__BOX__/IFN/DB_IFN/rdsRasterized/tabplot.count.8km.rds\"\nIFNMEAN >> | <- >> | \"./__BOX__/IFN/DB_IFN/rdsRasterized/tabplot.mean.8km.rds\"\nIFNPRES >> | <- >> | \"./__BOX__/IFN/DB_IFN/rdsRasterized/tabplot.pres.8km.rds\"\nIFNSD >> | <- >> | \"./__BOX__/IFN/DB_IFN/rdsRasterized/tabplot.sd.8km.rds\"\nIFNTABTREE >> | <- \"./__BOX__/IFN/DB_IFN/rds/tabtree.rds\"\ndata.sources <- >> | list.files(\"./data\", pattern=3D\"*.rda$\", >> | full.names=3DTRUE)\nR.sources <- list.files(\"./R\", pattern=3D\"*.R$\= ", >> | full.names=3DTRUE)\ncat(\"Loading Data\\n\")\nas.vector( sapply( >> | data.sources, load) )\ncat(\"\\nSourcing R files\\n\")\nsapply( >> | R.sources, source)" "\n") >> | org-babel-execute:R("data.sources <- list.files(\"./data\", >> | pattern=3D\"*.rda$\", full.names=3DTRUE)\nR.sources <- >> | list.files(\"./R\", pattern=3D\"*.R$\", >> | full.names=3DTRUE)\ncat(\"Loading Data\\n\")\nas.vector( sapply( >> | data.sources, load) )\ncat(\"\\nSourcing R files\\n\")\nsapply( >> | R.sources, source)" ((:comments . "link") (:shebang . "") (:cache >> | . "no") (:padline . "yes") (:noweb . "no") (:tangle . "yes") >> | (:exports . "both") (:results . "replace output") (:var COLUMNS >> | ("annee" "Year of simulation") ("ipoints_Qdiv" "Point Number (also >> | refer to number of the climatic input file)") ("iespece" "species >> | number (4=3D=3D>Beech; 3:Oak)") ("scenario" "Type of forest management >> | (no matter)") ("climat" "Type of climate (no matter)") ("RUsolinit" >> | "Soil water Holding Capacity of the point (mm)") ("PByC" "gross >> | photosynthesis (yearly, gC/m=C2=B2/year)") ("PNyC" "Net photosynthesis, >> | (PByC - leaf Respiration) (gC/m=C2=B2/year)") ("NPPyC" "Net primary >> | productivity, (gC/m=C2=B2/year)") ("ETRy" "Evapotranspiration of stand >> | (mm/year)") ("age_peup" "Age at the end of the revolution") ("RVy" >> | "total respiration of living tissue") ("DBBVy" "aboveground annualm >> | growth (gC/m=C2=B2/year)") ("RMTVy" "maintenance respiration of stems >> | (gC/m=C2=B2/year)") ("RMBRy" "maintenance respiration of branches >> | (gC/m=C2=B2/year)") ("Rtoty" "total heterotrophic respiration >> | (gC/m=C2=B2/year) (SOIL)") ("levelstress_2" "indices of water stress >> | based on stomatal conductance") ("Ta" "Annual Temperature (=C2=B0C) (do >> | not use problem)") ("PRI" "Rain (mm) (do not use problem)") ("LMAX" >> | "Leaf Area Index") ("RVCy" "Growth respiration of living tissue") >> | ("RVMy" "Maintenance respiration of all living tissue") ("DBSSy" >> | "annual storage growth (gc/m=C2=B2/year)") ("DBRFy" "annual fine roots >> | growth (gC/m=C2=B2/year)") ("LambX" "X co,ordinates in Lamberts Zone II >> | (EPSG 27572)") ("LambY" "Y co,ordinates in Lamberts Zone II (EPSG >> | 27572)") ("Altitude" "Elevation(m)") ("coupebb" "exported biomass >> | through cutting (gC/m=C2=B2)") ("bbois" "wood biomass of the stand >> | (gC/m=C2=B2)")) (:var COLS_TO_EVAL ("NPPyC" "FALSE") ("DBBVy" "TRUE") >> | ("DBRFy" "FALSE") ("DBSSy" "FALSE") ("levelstress_2" "TRUE")) (:var >> | ALLSPECIES ("Quercus robur" 1 "quercus_robur" "") ("Quercus peatrea" >> | 2 "quercus_peatrea" "") ("Quercus pubescens" 3 "quercus_pubescens" >> | "") ("Fagus sylvatica" 4 "fagus_sylvatica" "") ("Carpinus betulus" 5 >> | "carpinus_betulus" "") ("Other broadleaf species" 6 >> | "other_broadleaf_species" "") ("Picae abies" 7 "picae_abies" "") >> | ("Abies alba" 8 "abies_alba" "") ("Pinus maritima" 9 >> | "pinus_maritima" "") ("Pinus sylvestris" 10 "pinus_sylvestris" "") >> | ("pseudotsuga meniezi" 11 "pseudotsuga_meniezi" "") ("Other >> | coniferous species" 12 "other_coniferous_species" "")) (:var SPECIES >> | ("Fagus sylvatica" "fagus" 4 "fagus_sylvatica" "red") ("Quercus >> | robur" "quercus" 3 "quercus_robur" "green")) (:var YEARS (1990) >> | (2000)) (:var PRESENT . 2008) (:var MINEFFORT . 3) (:var PROPTRAIN >> | . 0.6) (:var RNGSEED . 13) (:var RNGKIND . "Mersenne-Twister") (:var >> | RNGNORMALKIND . "Inversion") (:var REFGRID . "./refGrid_8km.rds") >> | (:var IFN . "./__BOX__/IFN/DB_IFN/rds/tabplot.rds") (:var IFNCOUNT >> | . "./__BOX__/IFN/DB_IFN/rdsRasterized/tabplot.count.8km.rds") (:var >> | IFNMEAN . "./__BOX__/IFN/DB_IFN/rdsRasterized/tabplot.mean.8km.rds") >> | (:var IFNPRES >> | . "./__BOX__/IFN/DB_IFN/rdsRasterized/tabplot.pres.8km.rds") (:var >> | IFNSD . "./__BOX__/IFN/DB_IFN/rdsRasterized/tabplot.sd.8km.rds") >> | (:var IFNTABTREE . "./__BOX__/IFN/DB_IFN/rds/tabtree.rds") (:hlines >> | . "no") (:colnames . "yes") (:mkdirp . "yes") (:no-expand . "TRUE") >> | (:rownames . "yes") (:session . "*R_MOBILIS*") (:tangle-mode . 292) >> | (:result-type . output) (:result-params "output" "replace") >> | (:rowname-names (COLUMNS "annee" "ipoints_Qdiv" "iespece" "scenario" >> | "climat" "RUsolinit" "PByC" "PNyC" "NPPyC" "ETRy" "age_peup" "RVy" >> | "DBBVy" "RMTVy" "RMBRy" "Rtoty" "levelstress_2" "Ta" "PRI" "LMAX" >> | "RVCy" "RVMy" "DBSSy" "DBRFy" "LambX" "LambY" "Altitude" "coupebb" >> | "bbois") (COLS_TO_EVAL 1 2 3 4 5) (ALLSPECIES 1 2 3 4 5 6 7 8 9 10 >> | 11 12) (SPECIES "fagus" "quercus") (YEARS 1 2)) (:colname-names >> | (COLUMNS "" "name" "description") (COLS_TO_EVAL "" "name" "usable") >> | (ALLSPECIES "" "fullName" "iespece" "IFNName" "color") (SPECIES "" >> | "fullName" "shortName" "iespece" "IFNName" "color") (YEARS "" >> | "year")))) >> | org-babel-execute-src-block(nil) >> | org-babel-execute-buffer(nil) >> | org-babel-execute-subtree(nil) >> | call-interactively(org-babel-execute-subtree nil nil) >> `---- >> >> Cheers, >> >> Rainer >> >>> >>> Best, >>> > p>>> >>>> Thanks, >>>> >>>> Rainer >>>> >>>>> >>>>> Thanks, =2D-=20 Rainer M. Krug email: Rainerkrugsde PGP: 0x0F52F982 --=-=-= Content-Type: application/pkcs7-signature; name=smime.p7s Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=smime.p7s MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIO4jCCBJ0w ggOFoAMCAQICEDQ96SusJzT/j8s0lPvMcFQwDQYJKoZIhvcNAQEFBQAwbzELMAkGA1UEBhMCU0Ux FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5hbCBUVFAgTmV0 d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9vdDAeFw0wNTA2MDcwODA5MTBa Fw0yMDA1MzAxMDQ4MzhaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNh bHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0 dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UEAxMtVVROLVVTRVJGaXJzdC1DbGllbnQgQXV0 aGVudGljYXRpb24gYW5kIEVtYWlsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsjmF pPJ9q0E7YkY3rs3BYHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIxB8dOtINknS4p1aJk xIW9hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8om+rWV6lL8/K2m2q L+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLmSGHGTPNpsaguG7bUMSAs vIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM1tZUOt4KpLoDd7NlyP0e03RiqhjKaJMe oYV+9Udly/hNVyh00jT/MLbu9mIwFIws6wIDAQABo4H0MIHxMB8GA1UdIwQYMBaAFK29mHo0tCb3 +sQmVO8DveAky1QaMB0GA1UdDgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTAOBgNVHQ8BAf8EBAMC AQYwDwYDVR0TAQH/BAUwAwEB/zARBgNVHSAECjAIMAYGBFUdIAAwRAYDVR0fBD0wOzA5oDegNYYz aHR0cDovL2NybC51c2VydHJ1c3QuY29tL0FkZFRydXN0RXh0ZXJuYWxDQVJvb3QuY3JsMDUGCCsG AQUFBwEBBCkwJzAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG 9w0BAQUFAAOCAQEAAbyc42MosPMxAcLfe91ioAGdIzEPnJJzU1HqH0z61p/Eyi9nfngzD3QWuZGH kfWKJvpkcADYHvkLBGJQh5OB1Nr1I9s0u4VWtHA0bniDNx6FHMURFZJfhxe9rGr98cLRzIlfsXzw PlHyNfN87GCYazor4O/fs32G67Ub9VvsonyYE9cAULnRLXPeA3h04QWFMV7LmrmdlMa5lDd1ctxE +2fo8PolHlKn2iXpR+CgxzygTrEKNvt3SJ/vl4r7tP7jlBSog7xcLT/SYHFg7sJxggzpiDbj2iC0 o6BsqpZLuICOdcpJB/Y7FLrf3AXZn9vgsuZNoHgm5+ctbn9fxh6IFTCCBRowggQCoAMCAQICEG0Z 6qcZT2ozIuYiMnqqcd4wDQYJKoZIhvcNAQEFBQAwga4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJV VDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29y azEhMB8GA1UECxMYaHR0cDovL3d3dy51c2VydHJ1c3QuY29tMTYwNAYDVQQDEy1VVE4tVVNFUkZp cnN0LUNsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgRW1haWwwHhcNMTEwNDI4MDAwMDAwWhcNMjAw NTMwMTA0ODM4WjCBkzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQ MA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxOTA3BgNVBAMTMENP TU9ETyBDbGllbnQgQXV0aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQTCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBAJKEhFtLV5jUXi+LpOFAyKNTWF9mZfEyTvefMn1V0HhMVbdC lOD5J3EHxcZppLkyxPFAGpDMJ1Zifxe1cWmu5SAb5MtjXmDKokH2auGj/7jfH0htZUOMKi4rYzh3 37EXrMLaggLW1DJq1GdvIBOPXDX65VSAr9hxCh03CgJQU2yVHakQFLSZlVkSMf8JotJM3FLb3uJA AVtIaN3FSrTg7SQfOq9xXwfjrL8UO7AlcWg99A/WF1hGFYE8aIuLgw9teiFX5jSw2zJ+40rhpVJy ZCaRTqWSD//gsWD9Gm9oUZljjRqLpcxCm5t9ImPTqaD8zp6Q30QZ9FxbNboW86eb/8ECAwEAAaOC AUswggFHMB8GA1UdIwQYMBaAFImCZ33EnSZwAEu0UEh83j2uBG59MB0GA1UdDgQWBBR6E04AdFvG eGNkJ8Ev4qBbvHnFezAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADARBgNVHSAE CjAIMAYGBFUdIAAwWAYDVR0fBFEwTzBNoEugSYZHaHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VU Ti1VU0VSRmlyc3QtQ2xpZW50QXV0aGVudGljYXRpb25hbmRFbWFpbC5jcmwwdAYIKwYBBQUHAQEE aDBmMD0GCCsGAQUFBzAChjFodHRwOi8vY3J0LnVzZXJ0cnVzdC5jb20vVVROQWRkVHJ1c3RDbGll bnRfQ0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3 DQEBBQUAA4IBAQCF1r54V1VtM39EUv5C1QaoAQOAivsNsv1Kv/avQUn1G1rF0q0bc24+6SZ85kyY wTAo38v7QjyhJT4KddbQPTmGZtGhm7VNm2+vKGwdr+XqdFqo2rHA8XV6L566k3nK/uKRHlZ0sviN 0+BDchvtj/1gOSBH+4uvOmVIPJg9pSW/ve9g4EnlFsjrP0OD8ODuDcHTzTNfm9C9YGqzO/761Mk6 PB/tm/+bSTO+Qik5g+4zaS6CnUVNqGnagBsePdIaXXxHmaWbCG0SmYbWXVcHG6cwvktJRLiQfsrR eTjrtDP6oDpdJlieYVUYtCHVmdXgQ0BCML7qpeeU0rD+83X5f27nMIIFHzCCBAegAwIBAgIQHxNM 6b2nR/UE8y0h4G7IVDANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExp bWl0ZWQxOTA3BgNVBAMTMENPTU9ETyBDbGllbnQgQXV0aGVudGljYXRpb24gYW5kIFNlY3VyZSBF bWFpbCBDQTAeFw0xNDAzMjAwMDAwMDBaFw0xNTAzMjAyMzU5NTlaMCAxHjAcBgkqhkiG9w0BCQEW D3JhaW5lckBrcnVncy5kZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJSBu0yDKqol Q8gHIBnYQg4r3LuN2JDeN8H5G2WJ4qPvSQ7M0Bgi2f6pik+2zQIgksnGN0Ag6YF4nVFTOxI/tQYn DrpgrtEi21szbmrQZhCXmyt1iBf2lxIcKFLMcbbOVAvs9gFR4j++fg381khjAcwDaCT5f/XrBNt/ dXvI2aK3NM4apjwAQA+9xjz1G0VdysIf6+gRZZkZ2SdnFsgFoDLbd/NwA9WnJH/pJJ8buC76K+35 LTeVfaBGCScPW6MYEH3X8jmQ9rlk2d0Mpe9wCoxqK6p8TgOV3FzPxjg5wGAW+xwOkH5DPAJ0e/y7 gCsF7VoUNk4fswZMFZ7PaR8v6IkCAwEAAaOCAd8wggHbMB8GA1UdIwQYMBaAFHoTTgB0W8Z4Y2Qn wS/ioFu8ecV7MB0GA1UdDgQWBBSwfUomFrO8Ahijr6NaR6AvnbYgWDAOBgNVHQ8BAf8EBAMCBaAw DAYDVR0TAQH/BAIwADAgBgNVHSUEGTAXBggrBgEFBQcDBAYLKwYBBAGyMQEDBQIwEQYJYIZIAYb4 QgEBBAQDAgUgMEYGA1UdIAQ/MD0wOwYMKwYBBAGyMQECAQEBMCswKQYIKwYBBQUHAgEWHWh0dHBz Oi8vc2VjdXJlLmNvbW9kby5uZXQvQ1BTMFcGA1UdHwRQME4wTKBKoEiGRmh0dHA6Ly9jcmwuY29t b2RvY2EuY29tL0NPTU9ET0NsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcmww gYgGCCsGAQUFBwEBBHwwejBSBggrBgEFBQcwAoZGaHR0cDovL2NydC5jb21vZG9jYS5jb20vQ09N T0RPQ2xpZW50QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAkBggrBgEFBQcwAYYY aHR0cDovL29jc3AuY29tb2RvY2EuY29tMBoGA1UdEQQTMBGBD3JhaW5lckBrcnVncy5kZTANBgkq hkiG9w0BAQUFAAOCAQEAPAZ25jAGgqGcVBtyb8uxB7hpvB9/eE7MJJt1oDNIcDmbViJnbkOl1kBo sQEOfTxEmFU1LLM+PlYS7tLLawEsU0FU+7TOJlOdpxeJDcCxoqm8JhZoUvbraPg07ns/1k6QoQsW dmZ/i2lfPt/08KPmlnFGQy0WlolWWMm8dm7Br/cF5Km1kjsXmtnhwqv6Srpz5e4+MBkfCjlso9pk 4XXOqhvxWcbvqZIyrBScJ5AOeO6DEvpKckStQQpVBRLhSWI7iG4a1hZdAjQk7a6wxogID25NoPGa +e5Ji5GDHyQBmjo+dwfawk5gqH4zSZ1unokRaG490N6CDoanD5iKDIHdmTGCAlowggJWAgEBMIGo MIGTMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdT YWxmb3JkMRowGAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDE5MDcGA1UEAxMwQ09NT0RPIENsaWVu dCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhAfE0zpvadH9QTzLSHgbshUMAkG BSsOAwIaBQCggYcwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTQw MzI4MDg1MTA5WjAjBgkqhkiG9w0BCQQxFgQUdZIBYg6bpAvvUuSQhcx8a+OUmPkwKAYJKoZIhvcN AQkPMRswGTALBglghkgBZQMEAQIwCgYIKoZIhvcNAwcwDQYJKoZIhvcNAQEBBQAEggEAU2afJ/Nw 1Xxn56MrWBynQAae1g0Fkskt8YSWkD7hqw13Gz9FuerbZEDila9H8dLdMk1pdojNZol7QiT9EpXQ 9mS3FPJHtuQnZCwpzKMDy6hzOXYskL257x1PpsnfVcVLkd6qFuNo093FSWNutl6rY0vCfYvktpgN g9K2jfkn++fiSc5RrVGv5BsiC21ZfrTyI9ki8nLmF8+mqCYKggBdcYd0N02nZ4bmbn4QAeo3VLGK /LoZ60zRgGNP3bmdMzDR/vbC7jEuLphnpJ5sja81OGwuJBFicja3JEHiMsixgn19H78bDUeRqDaQ rs8lVb9+VKCRrq417Ohb4FG64hPw9wAAAAAAAA== --=-=-=--