From 39c2a37ca017a28d6a5ee17f792e9ce84dc7e6c8 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Tue, 17 Dec 2024 10:27:44 +0100 Subject: [PATCH 01/80] Update group-label semantics --- janno_columns.tsv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index 0ea8442..066b855 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -1,7 +1,7 @@ janno_column_name description data_type multi choice range choice_options range_lower range_upper mandatory unique Poseidon_ID sample identifier as defined by the genetics laboratory (e.g. I1234, BOT001), must fit to the values in the Poseidon package .fam/.ind file, must be unique within one package, if multiple datasets exist for the same individual different Poseidon_IDs are required String FALSE FALSE FALSE TRUE TRUE Genetic_Sex genetic sex of the individual derived from this sample, only F, M or U because the EIGENSTRAT and PLINK formats only support these three, edge cases (e.g. XXY, XYY, X0) are undefined and should be grouped as F, M or U, with a Note added Char FALSE TRUE FALSE F;M;U TRUE FALSE -Group_Name meaningful population/group identifiers for the sample, should follow the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 (https://doi.org/10.1038/s41598-018-31123-z), multiple entries separated by ;, the first value must be equal the group name in the .fam/.ind file String TRUE FALSE FALSE TRUE FALSE +Group_Name meaningful population/group identifiers for the sample. This can follow the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 (https://doi.org/10.1038/s41598-018-31123-z). It can also communicate additional categories that are meaningful for groupings in specific analyses, such as cultural labels, outlier status or relatedness to other samples. Multiple entries separated by ;, the first value must be equal the group name in the .fam/.ind file String TRUE FALSE FALSE TRUE FALSE Alternative_IDs alternative identifiers for the same sampled individual, e.g. IDs in other databases or popular names like Ötzi/Iceman String TRUE FALSE FALSE FALSE FALSE Relation_To other samples (by Poseidon_ID) that are related/identical to this sample, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE Relation_Degree relationship degree for relatives mentioned in Related_To, multiple values separated by ; in the same order as Related_To in case of multiple relations String TRUE TRUE FALSE identical;first;second;thirdToFifth;sixthToTenth;unrelated;other FALSE FALSE From 083534a79f945e92b030e46b5584ead9f3a86549 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Thu, 16 Jan 2025 18:03:43 +0100 Subject: [PATCH 02/80] added gzip to the schema --- POSEIDON_yml_fields.tsv | 4 ++-- README.md | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/POSEIDON_yml_fields.tsv b/POSEIDON_yml_fields.tsv index d267b9c..cff3efb 100644 --- a/POSEIDON_yml_fields.tsv +++ b/POSEIDON_yml_fields.tsv @@ -10,9 +10,9 @@ packageVersion 0 package version (should be changed/incremented when the packag lastModified 0 date of last modification of the package (should be updated when the package is changed) Date YYYY-MM-DD FALSE genotypeData 0 genotype data section TRUE format 1 genotypeData genotype data file format String EIGENSTRAT;PLINK TRUE -genoFile 1 genotypeData relative path to the geno file String Path TRUE +genoFile 1 genotypeData relative path to the geno file. If gzipped, must end with *.gz String Path TRUE genoFileChkSum 1 genotypeData md5 checksum of the geno file String md5 hash FALSE -snpFile 1 genotypeData relative path to the snp file String Path TRUE +snpFile 1 genotypeData relative path to the snp file. If gzipped, must end with *.gz String Path TRUE snpFileChkSum 1 genotypeData md5 checksum of the snp file String md5 hash FALSE indFile 1 genotypeData relative path to the ind file String Path TRUE indFileChkSum 1 genotypeData md5 checksum of the ind file String md5 hash FALSE diff --git a/README.md b/README.md index 3862215..7720881 100644 --- a/README.md +++ b/README.md @@ -123,12 +123,14 @@ Genotype data in Poseidon packages is stored either in (binary) PLINK or EIGENST | | PLINK (binary) | EIGENSTRAT | |---|---|---| -| genotype file | [`.bed` (binary biallelic genotype table)](https://www.cog-genomics.org/plink/1.9/formats#bed) | [`.geno` (genotype file)](https://github.com/DReichLab/EIG/blob/fb4fb59065055d3622e0f97f0149588eae630a3e/CONVERTF/README#L67) -| SNP file | [`.bim` (extended MAP file)](https://www.cog-genomics.org/plink/1.9/formats#bim) | [`.snp` (snp file)](https://github.com/DReichLab/EIG/blob/fb4fb59065055d3622e0f97f0149588eae630a3e/CONVERTF/README#L67) | +| genotype file | [`.bed` (binary biallelic genotype table) or `.bed.gz`](https://www.cog-genomics.org/plink/1.9/formats#bed) | [`.geno` (genotype file) or `.geno.gz`](https://github.com/DReichLab/EIG/blob/fb4fb59065055d3622e0f97f0149588eae630a3e/CONVERTF/README#L67) +| SNP file | [`.bim` (extended MAP file) or `.bim.gz`](https://www.cog-genomics.org/plink/1.9/formats#bim) | [`.snp` (snp file) or `.snp.gz`](https://github.com/DReichLab/EIG/blob/fb4fb59065055d3622e0f97f0149588eae630a3e/CONVERTF/README#L67) | | individual file | [`.fam` (sample information)](https://www.cog-genomics.org/plink/1.9/formats#fam) | [`.ind` (indiv file)](https://github.com/DReichLab/EIG/blob/fb4fb59065055d3622e0f97f0149588eae630a3e/CONVERTF/README#L67) | In addition to these files (and optionally their checksums), the POSEIDON.yml file SHOULD also provide a `snpSet` entry which determines the shape of the genotype file. +Note that genotype and snp files can be optionally zipped, in which case they must end with `.gz`. + ### The `.janno` file The `.janno` file is a tab-separated text file with a header line. It holds context information (variables/columns) for each sample (objects/rows) in a package. From d88b213b976240f38e952b18b90ab8d4936b08af Mon Sep 17 00:00:00 2001 From: Thiseas Christos Lamnidis Date: Tue, 21 Jan 2025 09:15:19 +0100 Subject: [PATCH 03/80] Updated PDF via Quarto --- poseidon_package_specification.pdf | Bin 91220 -> 89792 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/poseidon_package_specification.pdf b/poseidon_package_specification.pdf index 9f2218e875f24610118fe3bef9adbe12e2e889bf..8596037564821754c0a2f6eeddb5cf36186bdd74 100644 GIT binary patch literal 89792 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

G;v%zPzad43N915foiIbne1ML{}x~{ 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


0Gtkin9uZ#U{ni&@yWCNW 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

+Njvey0#A(L^CQNB=U>@rSleDP@?3 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 WA2&PuyVAm<(o%PMd6jil?*0eHHGxk6 From f1c89c0213f4187958c14fbe61d9750349a9c1a5 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Fri, 31 Jan 2025 13:38:23 +0100 Subject: [PATCH 04/80] capitalised MUST for gzip file ending --- POSEIDON_yml_fields.tsv | 4 ++-- README.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/POSEIDON_yml_fields.tsv b/POSEIDON_yml_fields.tsv index cff3efb..abcab3b 100644 --- a/POSEIDON_yml_fields.tsv +++ b/POSEIDON_yml_fields.tsv @@ -10,9 +10,9 @@ packageVersion 0 package version (should be changed/incremented when the packag lastModified 0 date of last modification of the package (should be updated when the package is changed) Date YYYY-MM-DD FALSE genotypeData 0 genotype data section TRUE format 1 genotypeData genotype data file format String EIGENSTRAT;PLINK TRUE -genoFile 1 genotypeData relative path to the geno file. If gzipped, must end with *.gz String Path TRUE +genoFile 1 genotypeData relative path to the geno file. If gzipped, MUST end with *.gz String Path TRUE genoFileChkSum 1 genotypeData md5 checksum of the geno file String md5 hash FALSE -snpFile 1 genotypeData relative path to the snp file. If gzipped, must end with *.gz String Path TRUE +snpFile 1 genotypeData relative path to the snp file. If gzipped, MUST end with *.gz String Path TRUE snpFileChkSum 1 genotypeData md5 checksum of the snp file String md5 hash FALSE indFile 1 genotypeData relative path to the ind file String Path TRUE indFileChkSum 1 genotypeData md5 checksum of the ind file String md5 hash FALSE diff --git a/README.md b/README.md index 7720881..494d0fc 100644 --- a/README.md +++ b/README.md @@ -129,7 +129,7 @@ Genotype data in Poseidon packages is stored either in (binary) PLINK or EIGENST In addition to these files (and optionally their checksums), the POSEIDON.yml file SHOULD also provide a `snpSet` entry which determines the shape of the genotype file. -Note that genotype and snp files can be optionally zipped, in which case they must end with `.gz`. +Note that genotype and snp files can be optionally zipped, in which case they MUST end with `.gz`. ### The `.janno` file From 0e9dda453327a4c682c64215f3d8da83d7f04cf6 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Wed, 5 Feb 2025 21:22:03 +0100 Subject: [PATCH 05/80] added VCF --- POSEIDON_yml_fields.tsv | 6 +++--- README.md | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/POSEIDON_yml_fields.tsv b/POSEIDON_yml_fields.tsv index abcab3b..62257c1 100644 --- a/POSEIDON_yml_fields.tsv +++ b/POSEIDON_yml_fields.tsv @@ -9,9 +9,9 @@ orcid 1 contributor orcid of one contributor String ORCID FALSE packageVersion 0 package version (should be changed/incremented when the package is changed) String X.Y.Z TRUE lastModified 0 date of last modification of the package (should be updated when the package is changed) Date YYYY-MM-DD FALSE genotypeData 0 genotype data section TRUE -format 1 genotypeData genotype data file format String EIGENSTRAT;PLINK TRUE -genoFile 1 genotypeData relative path to the geno file. If gzipped, MUST end with *.gz String Path TRUE -genoFileChkSum 1 genotypeData md5 checksum of the geno file String md5 hash FALSE +format 1 genotypeData genotype data file format String EIGENSTRAT;PLINK;VCF TRUE +genoFile 1 genotypeData relative path to the genotype file. If gzipped, MUST end with *.gz String Path TRUE +genoFileChkSum 1 genotypeData md5 checksum of the genotype file String md5 hash FALSE snpFile 1 genotypeData relative path to the snp file. If gzipped, MUST end with *.gz String Path TRUE snpFileChkSum 1 genotypeData md5 checksum of the snp file String md5 hash FALSE indFile 1 genotypeData relative path to the ind file String Path TRUE diff --git a/README.md b/README.md index 494d0fc..90d5230 100644 --- a/README.md +++ b/README.md @@ -119,13 +119,13 @@ Packages SHOULD start at `packageVersion` `0.1.0`. ### Genotype data -Genotype data in Poseidon packages is stored either in (binary) PLINK or EIGENSTRAT format. +Genotype data in Poseidon packages is stored either in (binary) PLINK, EIGENSTRAT or Variant Call Format (VCF). -| | PLINK (binary) | EIGENSTRAT | -|---|---|---| -| genotype file | [`.bed` (binary biallelic genotype table) or `.bed.gz`](https://www.cog-genomics.org/plink/1.9/formats#bed) | [`.geno` (genotype file) or `.geno.gz`](https://github.com/DReichLab/EIG/blob/fb4fb59065055d3622e0f97f0149588eae630a3e/CONVERTF/README#L67) -| SNP file | [`.bim` (extended MAP file) or `.bim.gz`](https://www.cog-genomics.org/plink/1.9/formats#bim) | [`.snp` (snp file) or `.snp.gz`](https://github.com/DReichLab/EIG/blob/fb4fb59065055d3622e0f97f0149588eae630a3e/CONVERTF/README#L67) | -| individual file | [`.fam` (sample information)](https://www.cog-genomics.org/plink/1.9/formats#fam) | [`.ind` (indiv file)](https://github.com/DReichLab/EIG/blob/fb4fb59065055d3622e0f97f0149588eae630a3e/CONVERTF/README#L67) | +| | PLINK (binary) | EIGENSTRAT | VCF +|---|---|---|---| +| genotype file | [`.bed` (binary biallelic genotype table) or `.bed.gz`](https://www.cog-genomics.org/plink/1.9/formats#bed) | [`.geno` (genotype file) or `.geno.gz`](https://github.com/DReichLab/EIG/blob/fb4fb59065055d3622e0f97f0149588eae630a3e/CONVERTF/README#L67) | [`.vcf` or `.vcf.gz`](https://samtools.github.io/hts-specs/VCFv4.2.pdf) | +| SNP file | [`.bim` (extended MAP file) or `.bim.gz`](https://www.cog-genomics.org/plink/1.9/formats#bim) | [`.snp` (snp file) or `.snp.gz`](https://github.com/DReichLab/EIG/blob/fb4fb59065055d3622e0f97f0149588eae630a3e/CONVERTF/README#L67) | | +| individual file | [`.fam` (sample information)](https://www.cog-genomics.org/plink/1.9/formats#fam) | [`.ind` (indiv file)](https://github.com/DReichLab/EIG/blob/fb4fb59065055d3622e0f97f0149588eae630a3e/CONVERTF/README#L67) | | In addition to these files (and optionally their checksums), the POSEIDON.yml file SHOULD also provide a `snpSet` entry which determines the shape of the genotype file. From 4c2697f06a8f4a96433079a258f220fa6431c72b Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Wed, 5 Feb 2025 21:37:11 +0100 Subject: [PATCH 06/80] made Collection_ID a list column --- janno_columns.tsv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index 0ea8442..6e12368 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -7,7 +7,7 @@ Relation_To other samples (by Poseidon_ID) that are related/identical to this sa Relation_Degree relationship degree for relatives mentioned in Related_To, multiple values separated by ; in the same order as Related_To in case of multiple relations String TRUE TRUE FALSE identical;first;second;thirdToFifth;sixthToTenth;unrelated;other FALSE FALSE Relation_Type relationship type for relatives mentioned in Related_To (e.g. sister_of, child_of, nephew_of), multiple values separated by ; in the same order as Related_To in case of multiple relations String TRUE FALSE FALSE FALSE FALSE Relation_Note arbitrary comments about the genetic relationships of the sampled individual String FALSE FALSE FALSE FALSE FALSE -Collection_ID alternative sample identifier shared by the provider/owner of the sample (e.g. grave 40 skeleton 2) String FALSE FALSE FALSE FALSE FALSE +Collection_ID alternative sample identifiers shared by the provider/owner of the sample (e.g. grave 40 skeleton 2), multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE Country present-day political country of origin for the sample String FALSE FALSE FALSE FALSE FALSE Country_ISO present-day political country expressed in ISO 3166-1 alpha-2 country codes String FALSE FALSE FALSE FALSE FALSE Location unspecified location information for the sample, e.g. administrative or topographic region or mountains/rivers/lakes/cities nearby String FALSE FALSE FALSE FALSE FALSE @@ -28,7 +28,7 @@ Source_Tissue skeletal element, tissue or other material sampled, the specific b Nr_Libraries number of libraries produced for the sample Integer FALSE FALSE FALSE FALSE FALSE Library_Names identifiers of the libraries used to generate the genotype data for the sample, multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE Capture_Type specifics of the data generation method (e.g. capture method) for the individual libraries generated for the sample, multiple values separated by ; String TRUE TRUE FALSE Shotgun;1240K;ArborComplete;ArborPrimePlus;ArborAncestralPlus;TwistAncientDNA;OtherCapture;ReferenceGenome FALSE FALSE -UDG udg treatment for the libraries, mixed in case multiple libraries with different UDG treatment were merged String FALSE TRUE FALSE minus;half;plus;mixed FALSE FALSE +UDG udg treatment for the libraries, mixed in case multiple libraries with different UDG treatment were merged String FALSE TRUE FALSE minus;half;plus;mixed FALSE FALSE Library_Built strandedness of the libraries, “mixed” in case multiple libraries with different protocols were merged String FALSE TRUE FALSE ds;ss;mixed FALSE FALSE Genotype_Ploidy ploidy of the genotypes for the sample String FALSE TRUE FALSE diploid;haploid FALSE FALSE Data_Preparation_Pipeline_URL url pointing to a description of the computational pipeline used to generate the genotype data from the source data String FALSE FALSE FALSE FALSE FALSE From 30c1f5208acdbb6a4a75422a5a3cfa266173ed43 Mon Sep 17 00:00:00 2001 From: Thiseas Christos Lamnidis Date: Mon, 10 Feb 2025 15:37:33 +0100 Subject: [PATCH 07/80] Update poseidon_package_specification.pdf --- poseidon_package_specification.pdf | Bin 89792 -> 90383 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/poseidon_package_specification.pdf b/poseidon_package_specification.pdf index 8596037564821754c0a2f6eeddb5cf36186bdd74..51aa6ee2fd4e473c1d45167b12bab83f78a4757a 100644 GIT binary patch delta 61879 zcmZsiV{;`8)MaCK?2c{Qwr$%^$G2m5Y}>YN+fHt5d!DJ95ARIPxAO~jty+7ZzHZ3a z0mwKm0IPrioU5CQxv@Q*=f;)pNRg?T`k2RB@Fsbn=D4o1oujuc|>Iw~S#gy93*d`wth_FNTI; zj=RfwRUpOIo?m!LV*5f!SSka$oLxKLPb9@709vbW4VB+WeDf zVTPl$X-@JK+lOQPva)FJ)*S{WXcRD}BsPv`8J*as-`>XNdzKpV-f+?`D7YAF)!%q&P11x@ivzu*EmO!8#Sd)acOy$FAC9JEzDMj-xzNqh8C3gezc;IB z{S|-^!ecb14hbY^%1;8h>wZ>E8O(Jup)s;TfJ_p0KrDK^S=T zIYp%;!mX~>CBTLd36T)t>Z)waQjD;h0wJ#-)9FpaKyw?KB!aLzb$PxED};CIB=Z9wX|urjIqxc2C0 z(WY&Ba!r}#I_)W)ujH4nqzItUBEG#OT|x;O=+32uZA|F9riNW_u0!hR%pztJ;Pw9Q z3LO5>^$zVG&;hDD@t8dZ`u*t!SW)*5CBHv7H$!tbC_ub$2g zPFmZSE$#Q=pgY36mVyv$OH^on4>{JSNnN*Z`Iu9+ozX?tCRb}t0fDj5FBUu4da1$* ziX@?hSmq6y!}KHA$>TucnwP^F{}1fI7>yVeg#D5VbAVV0cK!f$Z_&jFAitBmmg>=* zhAFWdnj9tEjo6kG`~G++c(&~P+UlewQ3E}N5G!m)_C*mjrd73|zWd5?bmS|s~d-;>xz|*m8ZwZ>v^LrXSw0REeC>7l9EPZ{Gu7KI$ z6OQY6=KfpP87t}L-Q8`@B3x^I0pqJavTRPkQF^kbO$UWs`S;Ctlmjf53+j$gehA#5`Y6CpFnMGoro4k#($|YLlg<0s7GN;^&!~ ztuj03TKZUQ(&uoU8aDe8Iu`^zW5zYlZCs*KO#xtyy7*>-hY`7>wa#F@f4nuE!W<|G zOriQa8rTULAL9n}W=0EEi!48%xeqI@4Q+f&tsft@O{HdZEn_(^gY~&d(d+(a&*yam^<*t!6g{Xk!q-9vi zuD)Jh`U^%$cD|nGq+9>@(1i;BS%;YBG=gB~_Uit!dd_9W_32p^=Yq5gTt#W@_l;jT z;)y4eX-HGkz(Z3`R{ckbjK7Pn+op%^C_uj}eV$ zJhY9w;bt-tZlpKXFs;?cZ8+RTwHhD)$gQosxQk);L(#Z z+IirxtPaNUos*y^`MddBejmA2$^ZtZ{jN;g;a5S>rA#hP5xUqZA9k)ys^x7x2Lvoh zqoCOI`v~|$f_TfPcI74bei#4X8zJ1fD9wGqkK{-M`tG7uWd<=hcAucadpPz8?9y|5 zdLkGMEkIFboy;`dZSBvR)ui_{qOj*CXr6wegFLY)FU;))YctkG?1S*7dcp7!p3=a< z@AE35RZn=WD0qLX%KB*SgUyulnUNq3lhigf<;H6UlZ;0Jqe=61r{rRWRkDcj@mpCV;w z6Km6{Yu|UNKVTVuu{9ItV0Zv5EdLW1mUYG*NI8+aPiWtvr<@Ey`olodL0vNYT8W@# z8(b!gfj>y)B-(l%x|r0PXxOX`OWS7kDWe-}lP}_Qc;6Aj(yz0ri@i=y7y>^@H@i70 zhP|iaFqqNtlZ)nF$f4BNn6H&j_io=8eeLnFNW>7Y<^cYab1=fT!mNJFb7kjG%v-es zv>A5aBl7J!D5rzML(~|jA}Ul=jZA4akn(14+DOH)}>V?z>dMH<0}JR^^ncp_cd_=1t0Yhv{r zdau{q>s?QX@lRxPhSF?NZHNij7LSSRg6B4^xqjAP2XG~{;Ex+e;aO+SV_0{(WN~0i z=K@ghtXmq?yvK8rcbE!z)QE~6C%KB6jD@}LC*IwSK%ynm&rdfjk$Iv&WNgzpV`|l8 z5Ilv7z5CQzTdyf%qT!%xE~!E1y*oNj#tNLRJ7aK5Fu>J~I0AqjH0WqD^hi6*Ct@Ye zE}ZJvY5MYDU;9Ody=@k0dsA;9WDVOVEdaBERR;J37e@GQIHv^~`xLk4lkY{KbPcJl z$)Syo4Y?(D|47*|&vgFyrSpbape!&ry-8b8mfsP)c^7_3UDZBs=5+><+!n^JO22`A zLoM^3ENs;-)9zRcl0YYE>ioLih@Ev9zZL^ z%o6QfSonG$0ukfXzVy0&LZ~VH=6{`Ui4Uo1Okl6WYWhjH(V;EM0LGqgJCYdJeh8Oj zaUDq-hbvhpuXz_iFh+^iobKBY*ljSpCFMA}XhU5X`~^gE4}ggFe>pn3Yg>2U-q}!8 zn_M%^Z6jAo3AVx3$hIe~`sAyU0~m!)YHPVSN*I%?E9@;HW))eeglLk;>Jpjto@9cF zYh+g22sB71k~VRJV?c6C=RS(pFm#wnpa^3Bfg)K6g)7?5?R6AyS~ z%Ob;4;+Y*8@?SyDVxYE)Fs(szMUL9Jz@|;6ANplU6HXnjtS>fK{0z1o2DtitMK)WV z?I4-Cdig?e!)bG6a6Io-=4C4yL)%Z2xN>a~qopfQ`ucBWgsr%Uj$zoh%YXSk(c0E# z;>e09wi#iL6Jd<6nW);hk-q*9_<^K(OSi{--6qXli*YiDW0eKM=Jf9vIA->6|F@j7 zItP_zoIBiwkQn#Nb`E1IZ-7-ridC~It}T(EB1$(2QEN8Uck8^RtZDKE(q=DfAlx9N zSG4Sc6op*5g29H;x;H7UE|NAzSm6-yTdgK45z4eam7HAwMi!gdN>7Iy9fXb;*RF0Q z8)$w1L&61_o)X1L;LB98hqbQGI#l;T@Z;1)2J~u?5<$i64LsMj6+jKoCNtx2WL!r0 zCT(KK_A@xVf;-^nv%~dabZYD-jfDxP4jQ6=2m%}wlVyRZpDs>juPpVr!8cR88)M}P zY^fi$+2u#cXRx)q(sF>A+cKYk_!EL-w*!j&w0-tteK;KV?zMclZ!g*Rv=sADhIPL& zvQb7;;Dcbi`Spi*1Ym?9Syi4pwt)``EwTA=uys8io|1rLEX$yel%4UbnHGI{CScJ3 z;Ms9+wSmf8N=1_@Ennd~5%z_R?nOr@>!F3VqhqK~bvl*J>kc>2WVt!e`yB~J&{N-M z&n>sBfkEYUn#Z`Pb3JH93kTv=Iti~WaH?FF50MO5PK&iAPC{%|ysxpnI zv)}8-ChUzmm|MOkgP(?5lS1v5O1T+Ga?T%Bie9;ux?yKZD3mXd5H4Y8aqfiD%u40I z({`}BSZznaqp;{*9S|fp(U3h;+<>Im`a(u3CUaj zKtMdw7EzqH0frsjyGvJbO-7d8s>J(&xK~gf-Ao=0#S60=&kLXM3+w~H-#e_X=|s+SRGGYoNu{qC81tT?{BXWuL|nm zf8(ZU0IqQLS6zwQb|0&&eXqt&8EWV}74cW(?5BA}x;kuLM}6;T?p|WEfqAM^_tOU{ za30w`FC7Jr3%#pyZ!REs8HYXkv97B&V8JUE-D`f{+ouS7Rc+f+_jmk{FO9-5a?%r1 z6YJ4a@$|jb^$2-410gAL6ZB{|rnsc(PyX^<7OPLB5cvG&%vr`7H(`|}E%B1S>-`t$ zw(Sj6C;!YnP{O%U+I;A#-l-_-bpY=>jr-sbLdftvSHPdVwQ}F}-m>EoJiBS3G~}{& zkkcK=D?Ixw=eD&E)9Y$lm^5ttKaK?@!5V}T<50K(T-^T`YfS6PI$m_3?7V2cA_X63 zk|3KY=XDGHX&tLMC5cR|>1g}_PBs)A8)-=9$5S>GDRi6TfpLe}ULxd}R5@PAggP>t? z)BTm<4M6bg>C4NGYd=}v$vH*EujEBrrtoIpiaqN2Y{I1e{lQ@&pVYo9oY`sNnzuVC z$v`&!QhDR?9!2Bn`JgF;-5-#|uJERy_26fVPwa;g{Hub=(G8Qo0Xnyon1)FP;s(nV zVIg2ygmT|?!@xjAFW4>?p1Sy>+5|5{aL(tJ^nnYt@Vz>#`haUi%Y339mR z{`#aoFm{}V6w+{xO$Q(c+Yxv3*Gc%0$O>)Zqs_`ZsLny>mU)a;Dm|J*EED;G7Y3sM z*|&6-$ze*1nD$JZ37v5~sUMmdTB;E`cbb6wL%k`^bv9lF82wqG|0C06HFu&gkie&PE!$ZnsBY`O3UucmQEwKX4``u&OuOx!f2Yn3R(Z^%6nJjWh+shOS^G4t~YAN3X z)wIu@b;8>__yF+!=8pLY)~^_$Uuf}*K2*t{rNGxed%)lycUD#rEE|y~Uvtr1e$^^v z7g=vJvq)O}y?-3Z-5NfT(VU#@PEu~PMc(GNR=4S~w_b;|FL5Cnf)S-`ELJqdxkuB*ubcZ@Ed zza0q&KLX4}p(bR6Cy@mj!D~9QK$v(bCm_ji^_5aFGne?RxQ&l3C6gG}F$AH?3?nuo zYn@b)Rv=pcf#sY4R*7mpN_8s2>>T>JMMfw$o4LjLo642XM!vH8qIVX)gT7~V#qIEk zcak^%_W;e4q-?+A3eR9c6EW#DdgYk@UrcdKa*!B#670qK`~q}kzFfwE`Z zDu5{IFuMMqp&|6xQHg;=5+d{Rtbl%P8cIZe6SZgDHR(WpzE_1XOQ@?&_H`Xf3e}*G zEWf{e9na;HcetMd1~bcoT&zJ~L1@tJ{^s1^8tEjKeGHTjFZ}7d-c88s_wWdE6XZRC z^6HTczL3ivPgieO&zsN&FD9${;OQgsXn8`3!J>*1pG1L2TR9Yo}g}x1_|SW&)=&sWh2- zBLceP-zH=Qvkdy)FR_YOUhBQb%#Wl?WH6rsmQ5feuU1>V+kjVgk{;fx3(goqA3$qg zq--|C^^Y2_&G{A@JaPOtkJZ=l9@kfnVy+2MU<#F3>YcFkF=p5w$ zIOs6BSCtW5RV;YTYQ%YeMLrUa`{WoJN7GNt(iu1iD-q<&djFK5%;L+_!8W7kkmw-L zHROx**37P~l@OKdaY?&u!7via0KPr*;kiCjbuk$JgdTkVI+f_pf&``+4S;+7#aaGc zaj}ozd-ahn|BqN7EtuLWPi9Ml+c1z>*9ML&+4RI4%<0%l$Kda7IfEL8V&CxT&C_`9 z@7feus#&td!C^zCDRyCWnlC6QC`W0_e~r*5q|2i*t(=05UUc@09*w#@v{g;CK~u2( z3slU}=D!46msia|oM8~6i~(vAg};_dvMwv?{jd9K1x0&8Yy9>ZwdafN!7W5zvkxU8 zr)CBle*gZ$6m}vMM{Sg^yVXs139rj0x)iTc^=;{A6qleXHlBt{6tXg}KeCq&-!Dr0CI%%Os>rcr+GJCI)5OJ<$X8bY6`PykhFCs!8>ry0QR z>!yFR>R8XVq6{@zXNH#KiITIz6gG_U3J{Yq;Wx4rOQ;^Xi|GhV>?*9cuDT#+Dm81n z$|X$S2&Oh8-We7*d-Xde{i2`B2>zskl)Cr9App;Oy~&tIuc#U+X-U)0giTUhahRCo zhPoK!qL9R%omJF?1%T#v+l&j^A;~GB3)MC1q6Vq!Xub(eqTl5JKF;rh;ta%2*c}@n zJ4C_e-tx8*K~NgcVny#n1N{0;r9VGfOq}fu!t0!9-QVqFy0S-RmKi(3o8y)z?CpD0 z4FNl+wFjfKqwg2u_K+m!jy@J5k$|n%_L*&aX0;H4RR%gB4FH5RS+p!{CqN8~$aPIL zE#@R<;E>=zg}gSoJhG_l9Ii~|W8*Z%cUc|CTgz_g@^AjfsgQ!(PuW9BeE3j8bIfO% zx#?P)@j%2{x*9VawB1V!EOBR|L&`w6dbDL|Wgx@rs>1=@pb5F=uuHhf=32iAoivF# z0wzzHKlBHO17Lack*WN8tU9WMwD8D~(SDuE=Ze*$-CwpyXN&&dLDZb3H!_4{Ez#w=Qdxys&4Z6BN(iVpMj!pvXjl*UI%^Vm4Txr zpF!)wf1zj}JR@}7Y^$T(6idT-eB`U_#dzuw-=P+{2zdL-6x$HwQYzy2RnLnrR#~H+ zCZMrtS?ePA>nsbBGu=m2enF}cvsc&3YpIsTcXU$XRyI-gymGwJ6(kzulfeb8xhPpv zzgMEtJKY_8DUWhaDJFULt|@9pA%HvEJ$167qa=pawqacq7U9;Z#%etSeA!wR#+ zBFm0T1n??Vq$SZXoU&{iDApr2Y|iK)CJNbl=qLQ$wcGUC;wCn=&g3^^io&lR{5PdX zO{gt+9hQhz|7~`l5J_#ZR5%YOB#dBFVBhiSv)ExEq<;`PKImOGc`HnDuM z)ib8Z%Ntv^T6>fWE5|L88MhC%q8K{XPWpc}4x<;Ro&2W~UAzBg?F?zT9`yO8&Sm0* zg#ta)iLQID%xivpiB6eRtm;U(ZZEdU)PgoKLUw;11%p+N@!`xJ%>GXg_}}Gd0&WAx zktpm-4q)MA<@}%0?^t)zfvy$hzmD)7Iu!T;3eyOKj5{_H;USFqTRKs`%ZcOdD^46! zdwDwjj9{B<6~<23#-mXRQ?VP-E7cIIdF(S+CvfIx^7t$D^HKHtP4ee!boDrl@GC*= zeuJ@gb(m^jO)HCOg`t)Z;1j<9(7TUKS@4%SOG*;Rb|1UyKe6-?=ntAdNo1z@DXvwi zc)8d9x+3Xe{>FQfMI(`|^e-<6s@~m@MM(#YZq)3~0svnR_obQw#@$-+1uW(Rl%ydK zb^|-dJJ#C|z=UdanvUb7U`H^9)U&###K~;CyzHgova(tXbPWu3He+{yHtT75`1k&( zkfl*bJO`2*d3%?4)bBT;;a303X_om%|94Z8O?Vt|v}*b6e;jD>8*uguuRRXS8dVD- zwI!GCU(EaUTekt3(Qx39Po)iyU`6-fLTv|`pgH$y>O4Z=Ukq!|eXVFhW|W|UcTE2G zsM+kJ#6#~m?r5CT1{3#yNYn|JFUjWgK;&69?l`TYvMiKj?!7=UVB4FQ&WHw@QM6R)@x&}TSitawG5E#7`C@r@qeakWtSU_z?@tGoMm z*_v+0n50@5yW6cSXNW96wH@Q)rbb;bm2wRqte>2}^dX8gkIK2C2o>V7R<&5jUf2s# z`*%f8=)(R1cUUVLKwt!^TkDANdP6aN@R4$(E!~UD;B6}(OY=(_ zL57|q^#nDfvU|G%nJFQ*tpaI89VeHL^gA|@yCndUPk|6Bc4A(9lCpt&XTEaZ2|r-r zhP*mTVeF{4wP|KYDDT?{mPsBbjD6*RKwL;wME#wk^j963WJl=Iz6#fdw#RO{cD zlVSEi!s@_CT7xPAm*L*Yw9)yo!AJN`(?4Fn z*6{W9!k+ola)i0l_=Zv=wqK-oSDPr!kYB^u&<(cjOgUGcipK$+wH-v!q%rHFC5%O| zMM+Bolq^R9q97##POBCh>kKjxM_Is)R$;5<&faWSVx1}6sz6o-3Dl8cDKRG}+>v8I zA1oB^_Vq#Z$d(_vL4ju46!u)>ad^VUOk49a9dZsFHh7BOG&yPP!XNJOus4SwJ2^I- z02JhcG<>&|?@+zX5;u?j4xk+#~h->^(#!$x|fAQztWK35F&l5ty& zrxz-;^{C1lWm?e#iM=Z?OR~iB+J_(jf9hkgK zLX;UE7p=Hd2wXU2a5b+fp7cJJZ2Ibl3lb5y$zIqxRdgKsNyez@FYQIa)LsTbN6ow> z%#oxAzGV8yoXNZGYwcsdrX(DiY#Gt77iFgG1f!w^W zJMSz=taWhmQ7pT&4XMLZJ;4h=mWR1VNrN>xNd!f!@7CUNeOCG>vV8+=;Yt@6F}K#ot5H!7XqCv#F=@q|H-+tIut`W$7{T zx0MI&9t=whEspnASakJ{BhiuZvuQO74QD(ANG1U}2#1!-*Fp=rKJ-Ui2dyEuhi2sn=KYhe!_sIH70AHs>QGNjb^@5a z!l=~6bj63AquSmReGM|eVyQVY$-<#rI5o{GS?|Sm1Q8fl3d=9$2Th<$P=?86Ame?_ z2#u#GCo&q|%}(!T^<9FSZCAsuY5TEOt70&^j8TNv0MAW*4uKujUF_9GfUaoyI2Q41 zC%Jw8ixy}8+uN#`g_XCtqxzPQF~7bAJgGw1mqUUIf&N#|$=(5=47SiEK6P}>l0pIG zt)>6pPSNM{doYI*-l(COBQ!TZFBt%&eKIe98bZVEl|55#7VkPMU2cjKYh&jj$QAWk zlf62q>KRrcdcWxJR1tVmTB8irW+!FQ5J#9!gh#6ZRrdoJEAHw!-$s(c4q!4?e(h4A z{;ucoS*J~yNPr8_&Z@!hUO({0WjTdGI!ts0%A+vpPEG?28|J2amv{jlMdR#Rj&xKX zZ#(&(<~Rj%l*g=Og9lTaktcqgyI-K~S9sb6+0X_oZ4OR#(0~~-rh621&h5w^!!8)Mj#tla18+LPdSv#$6Qv-;3}-oVPNeY zkW<2}%A?RR&x?U3>VknJ;=kbk<7R9zd)PWYAHejG*c-XB>224a_AYlRGFzOi(O7r;A7y>8}VKVYYa}_f|P=ShhelJ z%c~et0b9r{*7-UK9Plcw+B~GXceYXCs5`zmkJlwOW<@!N-P>6iRZ~>1r{0+E zmy&~Xe{Kn@ftz6eFYMaDaVFlm{l~f-T-^VYb+>h<|B+E6_S~o*!J{Jp4QZB*i_hYp zIVwA{NJ9p^$Wrgw~oL3z2-%%{pv+f-hi#khseRxC8)<_@ajp3<8~4RHTc1Ul z6Vlp?luk-L(@zM#79c+56OrmMo*4?{2P4V;AsH2 z>=R@_IyuRWWRjk}T%L0s3}TH42J`eX@wMw|Wdkl{09joXv_NAS7Sq6QznPK|VH@g9 zsE#Tq&5+qP_}6TD`A*B{BEMw0olhxxr&^YFkM?4}YIJu$UAao-H=&vx5f0Ez3&JXv zKVq1T{9CKRtPj~nr!=)#0v#{J*u<>P_je6%37rnEk;8Mq0^$y-#@m2KRYN2{T5sEv z+d6Lq0B$z>Q^lPqKn()0Z6`b`ErWqiT=*{!1VlqplgNZN3zB$ ztpV*l4jD9b#!x~y-igc}IXh=?);c$>!Qzu_f|UKdLa6x}3wLrGaDpf2_zN2cW90~T zJMDE^^>)g$CS)@+<}eJH*p>tNPQ$E=*I-M2c%;b0T47nsuu?0%<57bK>^4G&0P)Fr^NYNU`s2E@ z&5?cP6J6|B=FccxMcv-izh%$SDG2g@jax)i1yGLP4ba6?_>T6PS8S-Pn|_*pZcz9SnUC~ByhpVY zCKkq>tCD_O&%4yHYD z$F( z+d+$xuZ=MT*O|cnl=$Y1UX6)P8F;sh{3Ble)`qzY#PqvK>S&UCa*F)}*eh?XLq9zu zZn1=IZAKzFRV8AzLZZHDL2oVefgLxUTeQo^2(PW;Bg4^Y^^Ix(Mc~)4VsC4k`GYE; zO2Ir|cZ7kjicw0rVFqbc5=0ry&X5}X&h2AhnZu(Ioo| zrk~ADqG{J4xTu)EKs1oCwWrsWwN%)wY3n*he+4u1(BO|?uI1PDNPv$H-hQ7#!dm-} zOC5gzE2{z{Av^6ZZ~9r>Icc2!aNkgne4e4_{!qZK7;-ZG*usX(7AojT#CB54(D7?! z|57_2)N|jCkEF>I;K6*V^ziFBP9Oc3)aGe)rsIgS02ECOl4~H+jcUnuos=<6vugDh zU;nC5^Zv+)m@3&n%8E-yl7W)D(exYukpz6Wr_0~{fL^WiI5KfqSe69A=TySh$*=p( z^zoN-8vSVI1|?9nmsUPg`vN(}y+XoJ?v$=V3~l|!^Wu$JfQU3ypyOnq4M`#kD#|9c zBP|HoMSYy9rf9FzPD&j_4HNcC5|8uFz3oZNyY>6Z>D75@%RcmIkYm?4hVFW>dH*bq z?wg8eRel7u>Y$}Dte~HEa@vp@k1@Rif2Lu6qo7$LMbUv3 z*MTrOOtq>+F0xf+$KKb>oafI~ru12VG}570;5^3{pfDJ-d6!|Y`RXP_c;ng!gW4&> z)@qsn@7=R%?n-$nDLuGm1zT*2tK>k215&ltkhx-_Rk($Pm2#ONT|Ok3WwRr!_Rwf!8tf)mrGnK|aXjAHI#DVj51GF2|S z*H1G6AW1Nef@>u%^mF&>GB5X*jnWZ9SETdCdnpQjkP(VV-sLS?yeQc~ku=Qdp9Wp8 zgp_9nbC$xKc=88<=i7sn$)+o%{@Bcff=+#(6TS_axk@jZ`Ab+)h%|3?x?(kp=5v8F zVC~5LY=Xg*JgPw8CwkzLMurW{j`xxCOK4~ukgoaxaIe-jU=;neajE=T-7B_RGuCCCGI$VVp&3f~Ijp zvMOqtLDxtT_H_;pK!KD3UH^oJL%+33ejsb_!M_GMO398g+qB!Fq9+r?n%iW;0H&4$ zD8hVMinB^m+4ri|iKN4yjLwvRJTy4wsGF)MU(p*n$Qr5&28dX2ik{5n*=#m@ClQ$q zzyKeir;+KxPN8`?$93YHRM(mHatCA!U2}elBVjRggAZ1AHC#6^0+Rj9RhzOGRAdXM zuHJMTG)|FxB!!Mb%MnPt!2BkB)l?8Oh-) zT2p6CL!N%O=GYCLfax|aN}xU(!FlaE1;>-7$C;V`{sKgYY}xw$-VTOiV6s;5|@&dB~Ylr=$~awDXaRPH50j zPZ+QK`Pb*|I<6IYRdhrGf(WO-4xl z_Pi>;ZT79W{l6{k=H}0R>+ZvB?qRD`e;wfG>*HuYmX`jfgTI{0?Y@;VF*s%)ScJiF z2Kdw!OLq|5aU^UNteNUgc+X{Qb=)1Kk2q@X?e;x_&1PcR%4t&K*)kybX_q}KOah9^ zR6baKeI7MUD`qFFbW4|~evY)xQUExbLpobI6^>hDw-}o-&7gP|wi zm+=E@qbK!790$@FN6}u0LP2UBFiDNa#AhVCVp~f)ua-OlL%(f9tk6oBSOWf!Z>F%4D6g->O3!MUs}R-a)s+k>dcjwUiI{oELc<*}loLlc^8SqlwY5Ail>2`$puy2T2*i!y> z6M$oej$ac@%W|{7f;B+_EWq!U_q$qNYoYN6{jvy5F?naG_{nJ6bTV%KB1?(fFAOgE zxOUlalbKDf!4Mg0h<3Vzh!-^DHA5k_%7#t=H~0H&)-;n8wEa#mPMDr+5{_osb=bVb z3qcGz4kYkbG9V@4+`?>VR3e)^$|VOw~h^<)20kIA^!Z8?kg~?F>a^=4Y!FCh414z zNy213#2#ZS`nOz5*w+;4KiP|YNP>_&JX*xqiw*@MZ;`8k(LWnTaT zNlB;5uwa#Xt+#Iuuoc>O&opy9BcGE9*Xs+TE-M&kyl^c=*QGhDf{dqoZQ+PGY7qAuz ziCfbuzXu0W3k(UKVjDcw8MYi(8|(BcrbI=ZGGMn&5`D}9%CKYL3o!x&h=-d?(l5PC zCh9|nmU1YkHgNXwfudt~(lc`p2m@L+!z8t&Tce_nQ{I;*D-NpCD*$;6h9WT9ej+TU zMHC=+??gn6z5A7 zQ%E~V$3a~Hb=~awVLW<;!^FbM_q5`n^9TPCD{(8pEYCmO;_JT=*H+3num+6<;yx+? zfexI4$yn%)Njqhj62Sc!rI)~Ae&;C`iVM(+&fezUB_`e!^A51RMAm9rSt9nO(7aea zO@GjULmeZdXgWYpfuimL4TM(0T}-l63o1W#2V!zH_NNyN3kWDgb`OZ~VTf`BDjqC3 zlOH62v)U--qx{2i!@6W+)Y1vt&PU%Rv|)!ydt#Y3j-=deZpbCPm4-TDs5h0iGqzGp zDq(?qTdV2=V;5$UVSJcX#4Cy29y;%42ityY!KJhZ2?+1*bMvM>;PI{eXG?>@+J+_P zx*Dl$4})eP0DSIYGw_1}B1UQC$dCcXzCQ-g6QWq38Ep7sqM^4e{U88ivCpigt*;T( z&q76up1gmGFwwC@Gvyb;?X7~!F&Hb=OJASTxR9W_j3h`Qt4z=U*KI> z@Gr{KM5yfBZEfT71wD(O#gdNPYG)C&FNKmvl#bXJndnCQ%8mgIEdyj#u2cJp3V1Cm z7A%Lcp-G&YmM7}SC$C;ZI(fp9R;YaMNW*942PG{*q+^ZkI%<|m=f-kVnHw5(O=`}d zeo zZLiKGJ@#q7U>SjX(!vsPJqalEcjSZm!7vc%msp1awVALl6{duWS<8f(m z-C8MLox|xgi=TMRFpS`yQ`aRN(7C5M_(_>(34*BD&VJ?uJ(#!gtme+KMsl3eXymP{ zNuJTU1KR8y+SU~AFXTjtCE;DsoTf34G=;A0$KsF3TSxO31O60bzng3W4J;8rThQrPjAA}$R+Jg`R_HDY27VGe5uj;3ai zHmc&p`|nV&k?18`Qo^X6bdk96F8w@YNUrE9VYy^xnc0uht{4c|>xkdq+5F2IECzCE zH6*E-VGNDHk29GM@IeG`UX= zdCCVFv)fO<`72fc8PbFHzhY<7cO?kgn}Y?ebZYt34+2rv{LBZ%j6A{(N)x!Fnwh#X zjGe&e(e@YG_$NMQ^23Qa)97fW@|)m$U3Bgxk=j?6-ZHBn91;3&Hl(`y%QJaH3Z!@$ z5Y%MvilT>Q4wZ|T9J*idd1IYIng717o8++?wCxi4p#FqL77zJ-%KnRY`b|TemKdw2kYZ?bqEMARwQYDSD ze2naTzmD#1(65dpic4@OW(hU{?i$+p+}4jkg!e;{U-@xw+=JqQmRrE?8+_r#g(%={rK4YeB^ArPS?DCn-qCpt2i-~a-AwH2@_DsD$ zXw;Jx1%_mI}kmR%$e@a z;Z%+9{azZ4pMjuOK^px8FxLNgIfk2S+P;KXgqJOa*f^(I(V3!iRNbUgM?0EDZqKpf zC|Y}TndC?Z!-TytYjU|NE-I_UUT(I_5@I6ZE{&@yDUpw|`^mOi_js0+F`yg}po;6Q zRKJWG97@9)!`RrB`Dg@E5&SFKZ|8E5O0-~?Gqm}vUH%vJI{L z-ZL2N#&J*b$=}`j>zd5E{-IsNQ*5-*)c=;`>hCwiWBe!!K5{kZtJliiP_a>Z{GNGz zY{G^a&h9>+=NdbFkh!$BdMRsZ@^8C08YEQ6*X8ur>z3cO=d$nV&GpOmp+q#y$hfxl zp;NSZe#unCH_19Az>E<)*3a!AgZ0@^;yUu6{h$WQ0BN*QRDiMNLYyuOkPo zCzr(hZ*sD^du5&hE{3B4 zi&G`UU4C2IZKklkbB2hXK5=%R!t=t^27*Ffcu~tgE#vK@=l4V(?6qH{zfrW-PG<0I z{+f?5hN#ygq8G=ea4_99Vco^v%W`1c5)9;-{FAQ&R7Y(#2dIFm1S~R2C)nTzJ+gsV z>?y3eNp>k#B+u1eAXpaT-O5X8x^IiDO6kO9z;)!Xc-Oapg+cpplbhqNk(vWDzwP$c z427i!H`=6PyswK{=+J)Fq}r4zCugb;(9EXBC6mn0ZqF#U?LWez0jmvj^m{&co;=g z({@E|>}XLcw|5PoH9d%gk6BDPX>FF!l&61Nj(ULHh_Crc(1Z6~@`b!>WILc8=iiqY z?|_>12DwwUP1?_^2(IkO@&%hn63FWF18mL!Gqg+6_c(6YR!cm&D`5#fzdp|Fr+ohH zqUj$2yO=M7x0FQP&bs4)hA)-QY$OXf*|=%9X6Y7?mMJVz%56@o;#bzxC|g%tk{3$Od=jr?q^wL5aX^{MUOE1i;A;9JlQ4y zUY-?$#PwrFjLKruljnMs1xGRcYqgduwynyxCV{CsP5lD;$dRu`ziYjj#1rx}UX5|r z9!GInTp+iV$Zk6Lrnu#B*X|`MKKnR8{BR1UA<*ORJeL3UusJFGFTU~jSP?AE4LT(bh;x( z-E+Ev_8Bip@*1PnLR@jH*^t2PpssnHL7Y2KsgZe7ybU_`v_9CB)35RlpTzU)`geM_`RVT4L}|mF(<=^6 zJ6NYoS1@83H@&Y9{YvpxKt4=yoCaKhOwJ zLakkj{ob$Y_H9rBYoHc=0*Dr-W@+G%PPexTr*VwT1GqyEJmznm;Rl|W*YnN2z2?zC zl;ZE=tlvh$vD}z`96nhf5@xSvZ$@v^SII>)xEz8<6qwEqqQT}eJ0-wQTiCIA zp4MESk+h9@#S!6ofUd_E^z&VR^fo1z5z`PnT+i&M6&abgW-@WC5!EUufp%GixJC0q!mxmzcSRmJaL^E`ST1$1t>ben_^--VOm8n_2+{p`#~U zOu3SH+SK+^(}}A@jugR3jsUBgM zKCHRkUof0ix;T~;D0X;yU%omUKC`CBWG=r7@==czav@>c!yoJ^V7aR+V)2w&GLq#6 zYC)E3g_R0g0HIeE#W7STqP!rhVW9>YcvD(9!wwF0`nd*&cv>}9Z|ZSBycE21sfsrb zy6!pY-Y%#T#}0c9424*tU}MZub^RcJ{stvuW4 z;v|1Mzzz)X&5jSU7|{z+9Pw?W_||{qz@-YqyVtV=n$t-HfWXm_`@WbW_zuK@&WF>z zr5Zcx2>oZ+?_9}#POauvEvY0a)?v4J@1lCNYbo9ZR5mW-P^;Fq1zgtFenky)sy&nO zWFV+)Ko=b$$D<6)JtUEwJ2fa!WL?q*l>}=P3J8P5Qh-}20RjB1Q8~dPiz31eEupT8 zAV>Ph0;L2aEUJhj;a%Ea_X+4_1~X;YT%7!eiRMzQzp2s?a>xlp;=|gCPL+?tDgvS{ zwNNLFXG0WLjC`sc$Kg~F$B{^Ai7F{zCE1fu0B7pHf(7~XXY4+;`Oq8l(GI09;#`NN zM(^rk#BGISL6V4wZ#L2>KUI(8cbx73yXfR+)@ko71!vT8y zjR~TY)3EaqCL+%9#3B!0q)gnPlz$J5TPW+1WBqo56>B-m)ts^GJ!7tyG(OY2Ho~Vw z>KN!6ovVrwvmg_Ij<-p(M#1;rV^SAc@|iuDrb?P~oobxkY+kjcg@v5r>p*g{T8p;i zRB|mwx#h+-h>{(F@y%={Z{xFd*#S=T9#EZ}^&J$(`OzASEQZN$ieR(vAK^zuci}TW zqUFVi^*l8q=UU#P_aJ0XX?5vh6L*K&FTkboS?uPYP0FX3GPxWFM@PyUvo_L6)k|{F) z&Kw!PNNPQ(vuk69XoqnI=CgBr-|)TW^sy5-6gcZ8rRPC##>Nrps2Gt}c1Y@R3JoyD z?}iT{^Z;-8jq2Yl32+*m^$rR(;0Z-~WcA`2x?l-9reyWwdU0S0ayAt80j5)6KkOFr zdUqQS@E=MySv|T7C3pf}07bpIckXZCM7?^bzZ$^5Q)G`4O#SmfEHXgP6J}$P6DGsR z>qP^?z<}6(@P+#OFb&WIoJ7(DhZrJ2UL!KjIh$qYst#6+>_0}4&XaDvcx2C70bsc) z@hvCWk9;mwL-o+_N;2Jkp*Fz=s3Qv%oDtMFL3aa@H9z|3i&1eh-fj-Y*HJNouU#KK zHvVb+l6w{=#Nu`4hx4dX8z)NPKbj{q?~W+~M8k`-794_D8BiSTO`>$PS+7Q=!D+5;W6M4hk~Qn>vB&OyeTmR`C2! zvlw8QcGr&-%6&YvHC_nwRP1m#2}Z@RhI$ln3CQ?+Y1+%oOVltT+}LOdyX1I;QjxwE z3_UqRDapSL^@&`bwI~K?;TlK+3zCddXAt{_%EhD_*h>NmjdX+k3rk{gnX=(7Cr7Px zX>94Q{6o`fMGp)YvhbJ4{{fmD3`-^*sX`c za8o2DqpcS=1LyVpu|NwXNIEfXE&11KuyxxvNnVZE(R}_cm(CB+W~y4>ybD(W9J_jq zPYZ$|Nrg{>2Ovzz%B{`-T-8h3tO=qq|FRdCHr4;8fvcmuu~>VrL#muZrLi5JxHRr$ zbgNKs+o>mU$btUHF)LvWi*DXp6+8IFffPEuFM(nCdhN5Lq^S_DXIpZ!XbFR#qSI&Y zuonAN*f{@|)Zn%jSlC0Unb1@SOG$()K|Kde>AW`e1FO_JsVJ@DDK+CyqIEXz?`|fw zG|A%1W8pWOVlkVvzJddhhrj(dR0}Dj0OtP{1nVShhX2GZ=-MY-+f^eR%Vy3W;u9Ha z{mRw`zvrxhdV!*}^JKmH2*#_{zb_?|lQ}K&%d>ektquJv#b!Ly)1gwv@>>Tv= za3&#fv`Gfw^|W+7S_>z+4ZI1dd7E8NNu?=&60+N0E2$h=IwB)GcDYi$Gh5y)C7h4w zky0{4&+n+KJefr$UG3W#k@DY_6pe?KJBus*x)f*Zqg%c!sVU&mhQA|_H{gno6hLYK z7A2r4AT>Xy07MI7Cgw``n-YK)0b5)!PVSD5frjcNht3mJ1%=&D;tu)|w*omlfkLb< zLJiPWZ2WB^$fOY3pc&8w^EV5mo17`q_!W+8L6#}erA*iOXby8Q-!~LT(X1S%gMnvA zzGN-$-U-o3m_Qi`|B@)l@c6UqO%PHZU)QsbEH8PcY=<}UX_z-L-?aK2FjADRK0)ac z4w3#F>$OZW00-Ouo4)JBum5K*1pj9)T-BjO&8`FyHE3$&Z3_Q?b75BZ;Zp5BMAuqi zcYNX_Eg|E;qAESEb-S$`3Tw4Up|Lox{XBdntt!f~W%{fbi#83gnB2Kf_Fnf*qh)yY zwogv$YS;dmXC*b*Iau7j2#Ac*$_B+3wMZTv!wz$O*vvhJfU9mi5IKm@4G+2Ot zs;g>e?woSdYa`qINA1N)8q`X87)Uazf2(vlsoaejfvBLtu!QXgq;<)h4%qmsM<$a02J-lhoj>2{2ANu-Ccm6 zQGeskmt@1!?)5OdZne72%Wq?Zz4#^YFt2r7AksnoWS3ITf4SDrsYyeoz=GSvnqu{h z=A*fIjQ;K6{ajG(v)wR!GVjy{Z}-$(<@HFuty{2a+zK;1I8r{<*zIg`_+H2RHfqSm zGj3jsn|(OY{0KOA8gEJwer&!Nz5%%N22Pu5bigEn*U2+MCsyPJj)43LL#b4kBAjX< znv!<;)0@WGV4w$PvkG3sXaz>pjvB|CC7dh)%}FHcMAUeVrwCT+8mk;JlV(eBs?2v9 z$fQ#Gx9|-w-V(8lnTjzL&Wfmi4XZB>b(f;R6f?R)0xwYqPehroUpSbUx(}cb&J+-0 z4ZYhNeiJ)~3O2cZ|T z(ISq4vgG1Ko4*@f+rSZ{VE{>P9F9a+y)!Ow0NKLofOThTAMxw$cxt|_lZMG*>^BGA zB|=F<ntKeoQZ;<#(D1yJ1nC^3hYxS&xksk zZ@w6*2C*RuJhGF;kJt5G+;00-H}BvIv$~T1O9)BWjs;DS%OwM_GPC~gI9#_~6F?E& zehv4KRuO$+N)Zu~0Pzo3o@Dfl_Xu6Y^BB1peGP~v-HsjHwRh98! z+kft&Wxut4a#4D`UC@1FO4s38n53ALR!K3Nz0t#quw}`vj<~Ai5M%aTrvZFy`F^(o zbem-|$YKC{yLTE7G5G5yXELbIG+Vmu=1jMiwXNAxw=I@Wm1)vqLy>mtXY;My=^+}6 zS9{Ixoq9f~?`@o^Au+F}E%mL=n`S&iN7nJP&RiXIqB^Upw+pBy7ZFDY;t23nCq_ZcXqSeDJAsHhmwYX`BQ;=Kb}O=-zLlyCMLip@?eJ-$gh5V&?vc} zEJk{83Y!uCvdg#p&zw$@e9$!O;Kzz41S#%`5)b8KgJ$9j<~<>@bRP!(bRJ?V@_InT z@`TD~bqgt0o+-j=6h)v>!%zP--RO@F?)66COpmPXjYQZROV0cp4g?nu1pxz`>OAT= z9*EJ7iJUwuq=De{eZsQzoID(D!@Go`Gih;+!e(N;C3LyXGPfw<7ohJ5;=vO^JrF1b z+sG*dV5gJY>2Ndi%`@10I(VQH?YN)ea04KKCq&6);HZ? zy8&EeEI~gD7ji;U-jDAh+yC#IB4-sKfG~LN8_wI5xRcXD285^>rM%WaO7>vA#E7~_ zRnB>^zP#CdATPMvY_~PV!ECE(9Ar&?ItTMHjNO?^i!FBQDG;O(~OXyz9%BwXl#KTW8QNCFW$DmPB&Oia8U}o99sW zS0<%D7})wCp_w`+caT{6e$a^pI|~U#Xi~yESXt=(t@szRnUW83SfE@M8g=s2?dYL&CTE#h8CbH4-q5O zIUVeuKo4)<^~eWubG{)}3Z4vTcN8a)E{x8GLAX>2P#Yg(GgELQ@-lT=#>gPE7ajFx z_^?nHm2Cg^b4A0>o6F`&%#IZSXgyOhv-q?$<8^PVbXn=H%u1-UfmX)G zf_9&l@PRP8D9C*E1(`+0SAYxkx_5gaAiTP%RZMy9$7v_t!6!+wGKFVIbs$seIT3ty~vu1QnEG{7oB}eXh0eX^boX&#&8j~;uVPkLdQU-)= z7=xM(Gti^3vX*QxdHsSC@r6C0_1IAC*rj9&tMWd@#6l12U)ocL=V6+J*n_hp!E5hd z*decilYlSR%6PY(mFo2Ke8f4}#j&ARL8%Y zmDc^mS&hCsp>smgcR%ZsmBbN|bUG7@GMq%+iVU2_AsIQvYxlFWiVJVM(*COC;flkD z>jdr_1t0F8gnWp#s6!oZ$Z5D0>&S7Wbg1qJKe)gFvouYMYN%uQ;vZb;Kg-I`aQ?5V zhUI^poOI-6>;f2II*-*}RxHXWaF(EjGzBH3&)Edqy(D0w7Q9CSe}DUui1JRv6Tcqv zu1`y@Dn}{c#pBoI3&RI6#oO00Lk8lBo2aMzDfii_cn2LtlOCqE(^nzJzdaXNt}RbH zS+TMY`$X(}A2)RCo&g?UN#Nk`OdKFqRoPXVrSV*hz@R;*e#NU4lgU9}Y!zMJlIm}h z#3f=HxY4$UI@de7EtvD*s4EP(o*Ho*kjh3wlh}$GzZygV-+4y)=f!=0v8(WhVwd#r zWvRL*7Y&bW-Q+_1=C}?@H^|0_hjsNqjqTjqPPOHRzk)koIRfqfClxDbC-T5)NWn_f?6n@c6D<_Ckz(zW_U z?kkh&)v!(1%hl{oz(!i@{pPz*_xoqpb|+5YurLSCR7H}N>VWM=9RVSuWM%vzji-r0 zJP|RwRx$Kfq=_lB+`IvZFagY{0pJE9c#moNCYL$Vi!PEK6A0Y&KIQA4@Y@1pH<1VN z0z4Zezs78}xfIg?u@?xif&&68$Po&W78WZ3atCi5k9^0!r8=@`5zf&{G#qQe(20VH zi(CJvlJS&@IT7rv=;S0t59X;_k(#)aweEqYQ6VQua@6r)AzgxsFbF0Ks||sZq*&pIsYq}kp(6?Ms1S<;Vag^?Qy8LyJ+?>a@7D3r9c|dwo~WJdUD{*T zd)r&~8@s!2QVfClSp$QAGXx)|;h+zJ%#@qQf|@&RDdW~3n%+Z+fq<&T)QGtgC1H?I z0s2{=I-qi{ z3M4WLnQID?@$OOBOuXA18)8Kq@cEFNrN8gYNL}uVI0>mlKH|PFB5uO^4+xAK9&Kl_ z!WdH%>|TQFi&nY{(*TatN5Kz{PaxHCY4E%~DlHR>(n(cg!eq;Y$Wr%@J4S|>fyA9b ztCC?bvHKz$k*;*rGWb+%3G3Xp^1AD@v*#54`V&wN+^ILdH*$ta_?b^*4ke?fR3Dj; zUK@D%_lA&wXddEJ|JmuAyz}SQV9BE#iX%Uz=ex!eb(>XHBmi2Ttkl|zqW4sX`3p*> z2ld%7eF&Wj_h=GDGF0)sGFeowg#KdL#KfI9&vC0*EDYOkgU;DheBI>MML21#GR zM!WS^K#xe|5|Ta{qkH4^`*wq^V_x$n{`0qi=wBIpqzcrpO`N1ChK)BZfcn4AqYg3t<@wpJC)zUKYYfH7mo$5`c6%-r{9WSFY4dge0QVs zX}Jcx?9&xdEIn?fQ3Kjlk(-nL9`Q4ow3AE<|8=|sFCa3o9D2Cql3qFB>SEaiyq)Z8-y?7qt(J)y-*L`y$SwQO0E2_o8-qVf zxi0z5#zmJwn}LG1Haq1&41U4WZ&EycQ#u0}T>7*YqR+2n^CBeNZt|6@Q&Crt)v_s^ z{G)YG@}*SuBnq2Xq-&Z*^| zFpAfW`;*EyJ?go<#&Uc5FW=`akW`tW^#OSV{8k#_t%vMz3d;f=JjfOQw$mlQeh@Ux z!;4G4Fn~K978IV!Anep6wsy_Kzm|T$$td#?>WMQgXeDiBHeB)wD`-~;^g1VbaPNhI z0E`nRXDD*c82-jNsqsGdS@Tkgs^+QjvsiPU<}#)7yA&L5{Kwa1~fe5@kb2Tcfdn7?vmChqUFhs$Z^#aW^*riZ&%&g*@L?fobqpDW^~ zqRUIC&Uo?Yka1zd=`R&24_ihj3j4aX7}Ax1jB7^u+U`R;q!;O>IUi9Zw@1A_26(1i zSLd{lzbQP&Suw90kEpGJcy}>A#(OQujT?guPyQ)Q8M(5rNn?c=MI~U~M|aODr|Y?g zm3>?=aXqVP>|119xYnZAot6!-o^6=_tM>OE+RqwjuwjZ0(Wze6WbJsRD5+Q1n zteQ}h*FwuKOf+v789v&@Vn9@b;09{LzK?O8l1hv>c+s$Kl?h^c#WS?r@L(~$;|6>U zz@kAi!*gQ}75tmoA`}<^Zhec$7i*64iNW9jv^(evcD$m) zVf9DMh;`kB^OW}Ip9uK!d=h>lC`#!dOAv?o{8~Yv6i>TqHEOYP!gvVLkI}ls{*7#7 z5Y+(|d{eXM>{WUleI{st0E${k`McoO6-6?Zlm6|Jt78%vu61N26P%{@#smuV1lvN&+negh^9#^5l7JBiB;IsIYV=grq{Z@fT9`NNh^MX@#4F%x|O%_kNx zcuzcD=wfK#*Mp$>!0`2Tc>k<6@PH7<63Y6EXAG2l^0rE&T-!G-+&Hw8J{t`TbnSeK z`VXBs%E~eg0B`K{6a3x(H|_ip2azU>R(JVS2`La({|F6P0_m(@t|J-^@2ktW)=Q-s#0=}z9 zu#h{m=F%z3Hw~*p6~)BLmgfdh*&;Z%;qr-y3(&nhXhPM1vmC^MF7=^kddyjYvXCm& zfO#)>8qsS0Hu+yFchxe$&v+07i~$$Hm>B(C6$7N8F+(R25O4SW0=J?5^_p%rZE6z9Byn(o`4AWS8%>S*QRcVc2QkQdQ!t=#n`?NhRUuK zx!7S;goO0sk438aa@BlEwbI)7B|%IR5V8roCKTpjxBFv5<%oLdEj?C5uOTC^X^%8U z&?R61ss;)u*o)RrJr|z-)ev>%7u`_#4ckYWT6F2vqclE)4?p86K)DNY;L zz#WNCz&fZ)9iec{o6(%o@t3FkmppGIutKh<1_`B4?VF})b3i1Wtehq#IP$JMFe!4( z7l}%ZUUF;~EgxZ}M{awO&&!wE>S!VIW-LIoVmm$YpIcOntM=*j^$LopEGq7O4=G+t zgBp`JI8=6xTw#JX3=$548a zjP1u%ey(EBTT^exdLRqllCDwe`KOOY-wii;DAJ;5`Ts zsjoSsW($OZd5rf4d{a;Bk5TW(;m)oTy!HmE1Fye@(V&rHH2BzvzCG{&IxS#gV$ZK{ zCcy_8f!LB>CApb;BY!OlMN9Su(yYK^B=XEa{v)A1h2Gawmk{^l%3;eqvD{RlqIN|h zJ&kA>jmR1u#uZl?$4HLTY9yQf`WrYv9falp;0k+eEC-^bq=6 z$Y)$vnzo1x?jN^K*T6NMVZscB=v!Aw_RN5!WGB-4VEJP6?JnYXh=XHr6^4h;c^kb< zPTpac()+Ve9H-|PV!xpdp_*9t;C0M8sBY=@@TECv>ie~&v z@#4?sARV}`mG|Wk@ntvk@A_}M(W)8-{d-p5%D=whT@$~#tZV)|;L zlyv}B!0k_4;MicM}vBUztrncbg{5W9#-zQ8~SGQdEPzlp|# z2mMtVnjRI(eP)do*Oe@*n;JY9vH=fnn_gs&n(ek;(`{Cp+*V5@=Q+If&)#0wb^rh~ zaNlAQ0tAR0cm*t^4tf&<2Z?kNQmJ-_u|g^l9WSTiB@brL+wucw57-|tjqyj}FNQ`~ zu~jTDcG#-1biAXZ;nX3U$|X~c#;)M@Pd3AxJ7={PN(~u{w}O4{H+J6n*3E*c``6n*9+k@HpM0Ke^#Pd*l!{4<5p+o?~Fc6|J2|`6k);Q7wzr*I^(Bn*mcBCSINq-8#tcV`c z;X|!mu3ZJS%5%(FQ-|0Wqub_#KX=u(lL^^b2dNiaoc4D+i7HC@#ooKw$9yaAsxy89lZ!cO#0X%p{`oZ!Nh?zL8#O|mgT|uZ@e3*g< znjt-QWC=7#ZUMQ}WRumRvC&Uk%k37{0qX0emXLPz#=VYBsck zH@Z;Yr1U|?r;sdKa!Hiju8?@o3x~V+3Qc{BL|B0YRX^w`UF=9;9nm%Qsv{+$-w$N? zs~6dRm@byQ{)c_ZrcTjClG-4-E&9%dQ^w8l7Jme z%p%>jsd4RW71|Dlwm*R?qJulCJk3j(N9;zFK{0=0{# z%h=Y0YDi~MK<{?Tm#vH=eBHBX#V=l`w2a%V8(#vfpJJypF?~m5uUq2ep4|9D?T!IB zrq#kbGZ$$au^3=H4u)2Mu%}(Qt;$$o+y z6<8y89;FnU->WKiL*64-%#?z%eeheX*2uoD0R=r3111dF5c{Q!4GAu1^Y2bL>wgJ_ z!I!4y?YIuea)X9BoG+3*_jb^+2r`%=BG3?m%tah}k!WgB8r&z{YCEftMFNU28qO1~ z&@&a(6dQo(qm>fC%CtX~xuw%(?EIEUq4xk)i z#X7U#V6Z-Dpi^m3NzvLy6*{|#>lLz+lJV;wjLhOi_B+tMn>6e(sF52x$$E%eF=AkpQt5NR`cPR9L@Xu1Cg_~1$=KjqM70?FDzQz# z)tEv)CkUEe2XpLh0k_zf(%G0;R;QloOE9t74MGuJ{{{-_4cRIYaOH!uz5Ry#R=@%D zLvb8fuljZ<52Hy-PT+#^joh{2RsN_^e~(AI9LG7u{E4;X2S&S_2%I89jNF$+4*-a8 z=OO#SrKi;nRJMK#>GO!)d}J1CaP#R%dL_B&-K}qnHQ6g?-U2>3Decr!n8aG^1yxK8 zT5fhxTJ+E@n8DcsO1@mTgIj&i%gzACOKi5jl#>}D^Ksy}GjFYkiqibjwrok?68xo^ zWqR+AqJms@3;dI7FL2EhM`)I$-)BY34})Mn*)%0w&9!5ewahOn7etf(3fxMVCZ^$h z0Z)F-T9x*>qd@9fW-ib&S(DfSPL011;mM`GZ4S|@gM9n1Rnp!)*V8=T@!SDnUBMzZ zq6BHfYMlvU>ZEcc10E92ccQkbhu-sC=pvdfc;4b-!1!2pO^Vu3y zx%|(GB*=f)XJX@{6AkkY4XFXLi=Og{_-b+urSNyOCC_+y#xZ+ac}018FMT%Bgky`W zWQFH_1tztJHhTI6Bb|N^_MW<^d_PuY~%}O1nMz*TFkGjCst9J7=({bY)WjqB`uZOmtwN{&0^&jZ%tJ?Ih}mUR7U^^c-rLTAeA4&y+cVJtqG%;9_D%m~VF=amnKSp$J$>BqjrY-A zRytf8{rx>ShHP`ah&>5NNuPaX>+Mld_Es4QDkxVp9&TTrW=A?JA1 z(c(+kgbo2SDcO;K|FvJkwSxG@>sru+#bW0#9>WYYwi5@nVDK z!Ro}4VfNhOg~uALD94u^4xB^VJ1BMp{0iNwT}H71hernZD*tmsytw3-I*jB9mRj>S$0PF z_RuG#^z_6`7s9pJ^+LVuVT{J`PprIjt@@KV>${eRfMO6ABPvTCB3i=!=eCcANigZ5 zw4j5lLYXvRHGO$yL;HBgM|IgamsE8@AJrK?ze13(ErjA!Vz29iS6W-mQdGZE>ras0 zCwN^|a=~(3ZXfgN1WKZ6A5$BcX2s4`L9beDTDIQEg^X;KME>nUOV14t#x^$mQ|S{r z-XwpTn%PFVQ~gz$l-j84KlXPJ+pEr`DHJWK33*k3Emg1>7d%$ouk68baA8(@e9d$W zDN+`8mNuJHTtAtI&ixYl`@pQETm2MShCUf&$MWm)LYKF2|IML~O|UNGuX#D+l}RZS zjUSS~jE;tj3}-+U{|&mvnLg*iqS5bdG$u6AbDpbAx#j{5*E788%4%$Zod22Vx_6cwM2b{&OnUh}NXu+qhHi&SJ#j+I>ICEq8%6ZW^0P7i2O`RBhq|7A}p3(xc8>*YKEWdLIjL z5$-7x{Dx#6*Z3?%-T(83er30R)AoQPFzpgbSJ1+04 z2a8e8u8l4ua1XoZ6o~8U^qbxC~y62*>$(_hy=@D zcRRnwsp+XJ@}AYluxNMC&N_p$x-c%7ge_O5AdbI;~;hD|Tc_juTapkCB+ z6QpDCWOB|mpDX4M><`Cd@&v4yNVKVLpwhB(&4CHyW&5Oek`un5EN|cN%7uw$X;F{T z*6!ZT&8vUxYU*PXM|a_l&!sRMSEtW8@n65ox7b_$TX5v~Q49R1;E0HX5UcvtB2kfV zpfCaq{)>bSRQCT~!114rb3*t472v8xFk(*?J)PhkO;TNj%|uETxDJ}4E{rB`BtCa8 zqDA?<%H`EgXH9oq*UPK4$@3AL=fUF(`Qc0F>hl{Pua75<^Vs|Ry=yy^0vr1e2@)sm z>R!FWcpatg*7-tQ**{F?5?Tdu5cTT{1Tko%SYC4b#GVKc*VtSHXkzOdMS$0>idV*0 z)(Vd%mqmk2gE5R~7*U7@e{~1w58O4HL^I&q@fhLsRF$Yqg2iUoFfQlQ&2Q-Nca7g( zML=I!+FW{X;uH_BKBdf!%u*=e2VZ06tm$^%W|58G(e0bQTvjx`{j9^sOGYS$2q;{l00uTv&O=-~ z{obb&^;NfIVU11~k}26J#axiKL}Lv}mzpft$~#hmE*)Gzvcx=;tSnrT*G*(U6s{~< zQs`Rnv}7(SR8Hha6#!KvRHi@`3sQ<(kfjO^FNhyV9BF%2wmc(nG!ecm)(vCH=ME@_ zEklYJsNKu4=^zat0i2V_6{4TEHYD@earZy%>YLWA+6HBLK=6~8N+fiy@Qr@Oe$oqP z;Ckau!D%s9=&z*oKf`^WRyNwPa!)y27^6KBhggjOn2rlt~iQJ45KuQ;J!f<hxFJ;4Ck zv}r)LGIROz!HE*UTY%67QVBC8{SFtin+ndij@0+*agu+#=YvG*!-x-h^U0rf8h{E; zJqEvSd%>5mHU<2=M{R#t+bMVyvSbm^Qi-@e*SCr)2+&cHr-kp|FB347qm z%ATH*-71JHPj_2XZNlStMVR-%t~qwJjV8-fY%W-N6p%JPU1=;sQ6zey4 z(Bt+d2Ly2NpavV@R{^r`L;=+iimBv5k2_%f1d+o9uuMGe)5Wni8&9!G2F&U_8Ye-c zbK>m6?6~{qpVUqIY2F0J+_e6-mow2#jzY4o*cDF zS7$O`<2~FD35RrAd0PjPD~^61W@)yP^fWae>^#ll_&rGnLFgMKG_Sv}9S``TU(g=R zEdL54=9HB<@F~FIDd&OarORt8BH5)12xR8I<@Uaf&`okg#$X(K7BOjewBWDPaInMp z0myg-!xMUe>hTG6yc9;weB7J?TDYB5w$u?ik3HFkyA6r2W-fSTHWJkKNss=69_=-ST^ur0zOotGw2=Q}>_ z7J9VsUMaAA{;Un}#P|ES`r)ovey8gJ01=PnYTqdK8D9%>kHKgNWOl|us_&T;@Xpf- z--=_^P0$3tLMvTlf4Eoti=j)Sr0;i8?b|tBw~Dq(cc=B2_oO2GcD7e@OwLK!{$DRO z!#_3V?Blp^%dvmE>i#Z~0FU0=^{Ucz5PuMzL$J}`_v{HsKj~I<1n7BCSr|R)0Gtym z0e_uYJ51O*fJ;H)J;eCCHEpTb&Rjfxyy80B_YSzzkz$k^6I~n!s;75pt6kM+@J!zz zNsMHs_i_EWfGq7zag;!btyBE^H^kj1qATC~l5nK+F|jT6oN%d(Fd0>x;9Ru#v8iQo ztCO$ANhxv0#4OTqoEpuZpJ+?F02ghQgW%1#Ll4$QY#IJ@uD2}-vI3E~$y=V~rLl7~{n;K=pEbL4k?K5ms%_)~$$m6BNxw`xo$PYA94;Lk213b#fL$7~; zoSwN~z^@x)NCNd9BZcHB($p*xacJVu`$OXZ&5ce)&bZYN+qP|^akBmXd$s56{anw?dG$DtQa8wy^Y2psWr)kv(mG`?*vj3F z+b5b+y5MY{Ti^2RvAZKS>*EgX3ZcZJ5>%Az*=_4Ax$ZJ1 z8Ne4T9rp*I9QS954q7uI(m(a;VqzLsQVo&{^^bSzE0gJR8Sx6{*4g6Okkm3mE6D9W z;8>AFk$mw1kYfA*ZL)B(gn7Pazz;%trH-00biO}&Zo60Ms~GIiJ3QfSb~)k*DwkRA z$%7WZe1Z1Bb`$@K>p{_m-Wi8IJTO)U%~I&we2^i#E1^PdS?CDH1Xbu_=SmQ@m0Q?E z#S6t;V@#pmfPyc^iz>#ocnR1#uZel?=;$7eRBkHZ@XS-Lehe{lf7DaUCWq_sP}c~9 zd5jPUjByHLgMIY(gTAK|X>g@US>c$OcT5s%VXfE^t$2Y}8Dujx=dQ?-Ui{Oz&x0V! zW2z#m#{@_1?!4L7=ngxdP~sdSJz76Fg2%BBXl57naAigXU+b7RscD$2Q zHbMc~hJ^Q-lwJ~R_|QXJ46pkKo1bx2x4qXNnP@N>y>zH`m4NG`uC2~IOE@m0_@^ay zZ3O=UDKhOFDzL40*}_3Bh*^Kd?oWoq-HL)jzC%U0l2bsAq&bB{;y#&RML=GlK-m6nNaih7| zDOkLZ6ikCHDb?9`)B0Lit^;JuD*%a-(nFHD#d|b#a{njOl&_EFY1fOr2I$G&E1aWT z2v-V<2REvUkx({`p2QHn@V3EQ4he0%*uH+9-+I=s%_)zoIQU)uTp~=J-BuZXfb51l zXH%1+gKr=MU3UPKFbbF6a$)*1d7?5I5qmir-mFtaaYtmQ{T2il0`Nc^|faK#sI`zQ!wX$~>%JUe*ZbIf(`qQA?X zd*AH=1dBA{;LVfU0p(*|%9Pivnb((I4RFyF2YdE0U4E6q9E;q~GpOW%ta}r$6TRYUU^tOPmEUe7Pab7XSkKIUKa@I#XkJ0 zybL#XaGinch0uePyLwlzoZ0{?IyzoSW#i`OX}=+|Y;-wYJjNUnu(>?gN4#V7XSV2B zCS>%wL6mH@ytP{&&)*h&4E@xOFQ-~UT`eon!;qLz z$lI{Sqi&j{dPh#IuaT5&8zymc35c#lXxij52=_E%qb#A}iOHVEB^M*fv`Dmjb)rP#wD88Q}+xs$1 z$KPu(^vgl$ezu+T2mFd5w>OIQJbQ7tOJWRP#QZoLz&-bI zfgiDButJkk)w&S#=J08H9pKRrI;fQ{>t{zvR@kDt_aN2@ZQK#9 zPQ~{ZxaGfWz~FKCKA}ZZDrfC_{dH%&ZO!}z4#on3-cn*gD#L73@185C4K}CjKOJP< z?GMODwUgZ0F1(iOUIm}~VJM4clk0b_@b^v$!`|WCL`3yX@wM!n%o^w=zh{Tf>m8dg zSIK#PcTpkW9<>$d`VUz>3el#7X(rBhBsTv{VqqQO$~*huAoYr+q?A1TbOgiXI^KL+ zSIp}Mdf{pNORU3Bs3Sn}F$hTg1=%q#>-Oio{uZnjU2FRMty%daDQ6S%eLzS1`ZE~k z;%Byj33Y0R@tNp&*4a?f7|Kz|Scuk@u!pQQ$y>N0D@+*}aPUt>~nMW+GeAn-k z-`$vc5C_ZE!i`&!N;W^#u+tdyrge~vm^x>!fe-NTI`e7U2&Q*`<1@g6Ei%iM=FDgk z_o1f`b1RlHJcO4r8iiC-xKFuvacr!Y^I-Zj^u(*JijoPJ;Eyp@G{in3wZHKwX1Ef1 zJ3 zK(Z!KJ`QX!5L^d2^sp*km?BnQ8ZtjGE+eru`J{X`enYopz>>!loP*rHzXvRPe#dti z2{fHtLQ+CDdz|w0Ix^0kX%6?0#!+zN(=#CA1^iv{7t(Nru!w2l5ti>_5Z*b_0CM?G zhdz?BIz$m$Rgm$=xbi|^+~Mjf=Bs5C@Z5$U?Gpr|(?}H}9D0X&^T-Id^-+~dAt9ei zk^jEe$CF&IPC-tW$cBX_sc}eZWn>t@O6#aueAd@L@4|`TfJj+FT)V)3ACy<( zQduqf#9ovD$s2exyPJnhVPaCRZN-PNicq`aYbx#)ML;&J%lz{IeY>%l?Kq2k)rNXv zngQ)-4FQ!l;-ozGgDqHB%IN>ru0T2H|F33+7;m~v3d+IwKY?m&84JiLLHbAGoYb2N zMH5iMdt`9182*=ZrBOgqO329(7L@P9&I=(&h`&HQfD5}r7LkuJIrLG!Wm(d+Dc@4D zu{tihtW@SYTs!?h*qmsq_xF-gHIZH#lTrCQy7l$>`SsQXjFXd*Ns`95(r6>KF;ly$ z+?25l;WC6)zrKCPY6gZmjgx*~&0WWYCA&%@8zQrb&W(|%l3kR>=_qnUUJQI(J=nVx zPSZw40Oe)zaXxYYT z`{&nuHlYlo3CQ>+;`39tPuX1S3|&QV4~tb1t7*CuQqm#ILjduRx$3LA>WjHhMC!q^ z>m{r~o^$vXV!c=TQj0WpRrE|z@tLARqaDT2LxGZwj#Uc*uX4JXl*CNj^v@4xFR3zK zmGmr(a@pA;%!jo@i~hdG@rY2fwVmh6*8!!@rD3sh>BaNLpoWG5aBpw3Q@gIA1om#L zgH)yNOFBHsN5J8I+GKT|V3)Voh87AM3g%9FTyox;smRpe(Tw4CUC|5Rr4`Y}Ih2{q z^Q7Q2hi~+8&(shGmkTfDH^+QLLzSw`6D(y>!a$V~k(*V5Z43-6gjM2ByLPnM}X-=KJClT!tOH+ZBiUJ%|(+F@Pl0no{_0te}{A)JK%;1xNi z{2$0EbV;9Ff3^KHpQblAlAJCKExe{fD>NLCbnH78RR+B_(CWoQOp?;`J2%7P4?A)y58?c zKvPKFVHei1-jZ)2u}!d?JlhF7G|n&6s)Q~(lvL%H62+L$v6@bHa@kyis^mO1kZKc7 zwhB78U}`oi+N`i*PZn(B_tNgu6A3+{e&C1CL@1B(*eY^YNdFWhspmp8EvpMO4~_ny z#Ff3OpuYbOH4Cbvzzv1k46OzDauHdMJ7Mx)q!oCR+`i1DzCYlehC^uqi8xv2fyvt_ zx-r%z{KGP68>_Z5rrS+dH;nMp>Bqig29wQ9db|^-A6+Uba9Au;`Qe;aJdec*e}Kt9 z$}~6;G<|fKmf!iGw2+p<=Gf((!8{96>7{w!ze$uP#G#-rN}0$?02S zWoKr{#q>;OZ`*t2Bl4s;oCC}|N-l>J-+-#~tJLC+FCO)P)gJ`o*7eNxlTCTXz6HH?(ORX%Nmy||3QNz1GOgrSIqUV9rdi39 zQ}xf#9ae}u^=6XVXe!P8X60^Vf=Jt44OBt14d5prmxN(|_`v&J{rNZ%-U8mJWbQA{ z3ikDE^3}EMf7YQwr~h`~g14XyLr6-vt)Qf6yyh8~hv)ur?L}OaF~&=r!LFpEWTvPA zP4foLe9=;nprPpCa2ZRAM>e5iBS>|0cad1odUCW{e{z&BW;#d;@{8S0QG*kF;lyqQ1J1z0~K%nq8=z| zi**=xgl$>r9jy2@eTEssgW>w+=ru%$$JUiX*w-Vt!=%ol728h(sl?Z>YK-it`aY3q zWVx2=af#|{3R<#3)(30?e-73hb_<9b1w-XS)=K?0P?z{KiRhfF&~+?Vq+UNQJRm>( zGtU-5-9~U9nLU3`SM+m=PfB3VSpGEwmKNA?+8qFQ<^SP4cQZr( zTYSuX@|7i^sN(m;>#QTL(TXbkvIb3XAX@!oS{3H4v1pOR4{&VxM2kiv+m!>k0Sm{r zMRVqR%PNjVzX+|cC}Xe-++=yO;iIPvmjg8^y%pVg8O>M;@diyRIIPmBSZFa`)tZ0z zujP`^27}TTxj2B&1jo8=$2Bce$A+4_zhO%91!fz?X#Jv$S*?i@JHe&f_ExR;N~Y|Y zz5>lf87T){WnYSdyqI%~-3Ro19r59IN09N{`7Q58BLwRbM*pE&yhkje4_E)b&|iPj zxiQs`8N@%2F7AhBZ_vs@nG%z=n^|}f%1)xHAr^q?}4H7gTIMII4|Te$6(s; zz6JIE$McX8et*N>+wKgI!1W8EAou_E5|AB@@oEfhMvfnhI5OVpYXYmSy~WB7DGwI0%2I-m0k&fB)T)dEx^t0d-uJ3|q3v zo~wqgkIt&{ciB3HBPJ*G)s;#Ux@Shc2FgzGTruhP>1O}(Pqe&Ez9CZV$jSyt+=^p$ z2Zu_++-vT#eHlMGP+8>7%P`ne3@K|8NA+ zSLD^>EexjpY0uUN<8aB<*E(QJ%vR zSoiY^Rovfdn3|c2HjFvTaELjztG6c(DUqe zbW9s*GOq(lGUIbJqJ%ZRby(V2+}w1i&RZ%E&iaCq`dxXz2lz-G@CD#|7P*4upAfD~ z(eE=DzM=_Xh3dW||5Y%&j1Y>=hV1d6-_8#7qcE@n2PdvBo0+{iyLQn^cWUdJ&V(%sH6>+end@V=9{9}D8UL>+8?yz zkLELKUbhq(Y?_;!Uq)4;tSu;RE11(((NZ!~m44=uB>fHhzZ^ctf71f-$%kAZ|MluQ zr`I+g_eFL1!|A0H{12@*sUjFF!Hzti7YS=pGA+aN)3 zfc7K!w31NpNSYrkATZD%d49;?0x?@?N#IF!3x!h(BJS7Hen?zRy6OwW7G4I(^8=>( zc?^eK@mgKiPuc4HBgq}tUz$nk#z#|~$60q7_ZcGm7??<)zC9bGtIp@n$s+JkQFZjI z=i^BiH;>WKw{iDRO?CCF$rvaDgnotKK*fSjBfa4i7rCan>l+d!QNVJ!C8h!LK4DCP?89sdvG5ieH~k_N=^&HacAR z+w>wigwCypbw*TdV|@mPzMmk_;fLc%m1-0C+YKwaW_s6+d}?SYm^h}ps7D5RfQ{L% zso5@Z_-@q?jSfnf`kTLSH_*5BF)!*Z&s`=+sHarX4L8Z-d3{7W^$oUAkP!_bv7`Pp zEwZgPA=Rn{)zKnKDbdv%f=D|SwMNDD;enOZQhK|HE!%9=bIbap$S~pJIy&Ls0tq+F zPZdNGx(lVQx)-9cQCgV|UF8lGfX`NvrfbetYP*{Cmeo!RlwMFY00k)^BZT;;Fmo=kJ{$*%9UWI+6k8G!lI(l5 z4@1hoFa6C5{lraaY`T2%Y>pgd1R^hi{|FVKg?!ja>n-g*6^e=!J8!Mko^1RG?)l zjh0dtu6%!2+(JVtu7OK?(q5{EX&;nv#t&RT2`G$Y=C4_r}NmA5LBrKS?av8 zy?34z=Fi6>L1u3V{(E5G~{mjm-NRTM1frDk1qBM~b5z=x%QbBU58KPzX0IOacCj*aY z+-Lx<0R3YUJs06HtyJ9DcPA%?KZ8~r_(p6*RyjJCaCH06Nm@rf4NVnoen$^>DlnHD z0=6Ar?cOUJHY1e0=*?p(2`$v5B;eo>&!iBN47G@mDKOO^@9)V=C=@bqj@C&PoZ@Xu z-l%AM5^NQ~)dLR)H0v^E$Z-0NB{%ByfaWb4{a}61-mWV8x~WMBvZmX`%JG%c;g%{H zAGiD7voqBI2Z*pmuaL#xOn78RYtFOp*l-quoXzJdEGHTtw+>)&>oQNZ1bwpwlzvcf zX8M$;Nd(I5m~_Vx8xslhF+vK^h}xJPV%_ka`q#QZd*BJ`jgJ}e3((#R0=ZK$(msd`QtF@cIBd}?G5p{E=0!dD`D2Xwec7dlG{-0UOp&o(ikSv75U@b2`QIchq-%)OMm&|0a5N-dl2 z!hWFvJ_>9f7E9a88>Gtxgxp-wZrwtl<-*eHowS!HrivoTMWYxKBGMDF9bhN6kNz9h zW_nh724ci0?U*pgsspnerxVtx2Trkk@jLj@$nP%4M`SYe`41}Q$XZ~0o)#b%6U3LS5qEiKl<2+$lGb^m-6unwJ_>+_7d}1Gk-d%#VVLaFA}cSQA0(5(_WQ0DTi`zfKmSPf=cYxoKd-VaNrHF z*4&Mt{bF0K%z>MnjJ-{JX?$jGmLrlVrD$p?8pa7`WWu-_YQMjf)7f|}QHz1C2h}uu z{p|^gspmPpH`u-0y9{+>N#G!d;2Z+f&H^JIFFOu5Uo`Yo(gpkUERwB@YZICLHl! z?{!E(;C+dd8Jy0^iP&ZN&}{MU@XmA(w`&%!c7E@B>@8wiW0T%dULzi_8GwwlxgXCM zsaU7aq)!ZmYNwnzP3HrGk5nN^)l%(mE~8#+D*#KS+AGKnqjxPYR*`catRxQ@nCwXR zO+e^^l(X{8Cly$XX^Ea+(SX}ixbX25_r8(N6^OGk) zXo`7HZ{I&O)QoXCyE4sJJRa5dRW##Xi6vUGfr7kvYe)3};XwveZna^*TK%L8>BoqGcEaEkaCJ;KAkG__#l z=@kzq2OM&hb^P(7H^QGpT}fTzl;{kv2@|Cj2)4*tAm@K`GW$yH5csMJyv0yDN)b>? zEByE)GMM>3luGs020Gtpti*oKv_~*8?NBf;`bz^@2>SGVk2O$Mey#diLR+-m@4IlPtspN{gB=D!RcL?BC!@}_9A|oP zO9m@ISwpVZbec+qvYRtb+R0nHU-7a6q_@;e8ut&brU?<9<~d(8t(M{fqg8FQjQ*bV zMw`OnAYI!&Z1|K^!9@XNuhWm&pBGyqY^rS;LbRG($1EXhwL?`p#hs3i?PBP-87;7T z?)#r`AlSocq3s{+=exxPW6@BMC;F0R&+*ik`fX+%D=bY%gs3dKL>TSR}3lXI5e!@%S5XVP>oCKo)(TGr^apKh`lUgJE=iK73+ zAumg8prFi05mfYA@@&M6&|RAk)-Bma%{9^qL+Z)=1fjJn@=Z_4#;FY69-)2o$pGRW<^e@#$a)1JMvViD59Iie!nE?EB;QNt^ z>28aPts2DS#?eB~5fK~6u7sgq#=I&~GG=t#3b|SI8*S<0x>lR^x8J;9huTld;G|_I zEgO9WN8P&Sj-vLupymiGI=du;q}93= zJC2f`FTR!eQ6?~x{EFLG%oij9IlS8=7A`GbbEVgeBPsWG@H?gdX!fl}GBTJ&@i^*4 zQ%X2d{%Uh%N=+I$D4K;jm2yLto|KlMoh~&YerW{`Um)b2xAa7^A7(E#{h1p#+ISji zs!$gbS&x#yoRYNhtTwLATt{ym@@Z^_aXz}>Gul~_k{y;)T3}!98 zp;6cHI(M|S)Yqdav!XIJ7yAD)RGBTZ{HBGLT$ot!4>1JyY@eu_M5>HcEu}!-TCR2I z6fh59K2b@jkQGsogryaX?Qu)narnK}=%{I_Ip>JpjYIS-n53b3ux_#f0BO^Ikyy zAcrr;;z-zYTEXohnw4gx@Da+h#w)arE8OfCA2{Z!Vq`FMv1L5vNz+y4j}YPI<%UNJ zAwVS^%EVua&JRX9nqp#t^lTCkGgEJl9X;y%*c}Kuj`ENUfw(!at8sRBMKj0D8eam! zHS^Dm>PpB{D|pKq8@sd-Xe^UdY#k6SIXDh4I%8+*vD5E9V@O(GCt;1!u;+1t?qKd< zC`ls6G+GHM308KAo=p68w4UK>sn$ha9nHcLHLQ zB8wHWubOB*D}=xOGOn5ZR5D^(m_c>-OfU}ix039Z@Zr58&)&H6vv^Y_C#dhAK~`ZO zc9DqYXCkQie|6|P+`0&tmx<`6vSR6mgnOy)7^J?zWRQ8vcW>j`Fs2NsZ$kqc8E=`r zR+2eaFj`!@rIw<0vkMq~81r$=B5p}rNN%y;tGINaC| zsT|qKJ}9qLncG)ns=%d)k}z>Aj3@40v45`L_%Mc|ScTurIoHl0EJI!*^N};Rv?+$O z2nDWGxOY|xQX2KfK0j8ZG&=Y=Y9>VTuXaD}ODM!oqb_js{f0gTr&6Gy;+_8mgtPj_ zf}EPirUEnU*9*r3cCo_HC{NE~y7BRw9`aWfZ~B?R_=Cb5(a25%^ue9nwJ<&=XF^Z? z$c~({60x+`Y!+_+fTVvgPid4}_7E81*9j7YC;bKZ1`e|&lDwCHXR$l>*!~5QN@zm< zh{F?||7U-U{2TXGuqi<6P`)Y~EX{1fJvC-8e$itL)gFg@*H@@H1j3BaOE=|>AKX(R zCFIvHmqeda!C0)mrk&=JVhocm3@k?A1#ncoO_NKVa;AoT0F?s}pJ0%RR$urSN9Mt7 z5IMp1A@Eq&R&5d=LqGbR7zzx8HuWvp0l2J)QHb&0osHJAEdT{lR$Be*jL@vCyNEGu zijJJTB93`zNp!?uPtd=d&CYEt17_T;2BPvy>7veI7_0mb{`S9J@vlmQ%CHnkVN93T zpHyrTqNY0C@ER?MkUQdJIFZ(aQ7a6bIQacy=Y73MIA@wWEAzEvjQFm%$}5=B^vM)64(_hU{jsI`1Jy zZtP*XD^`)W8tf05}p(YXi-(nWn*u(A7-R<5VN0kK zj4V+{lSRiK3JPEk+SgdrQ>}2aQ8H=bN6MKf&D~)T@BuL)m2qK%Q#N4Y6t^L!P_|}u zBLR9z<9+3b0F9vH*@YW?z+eOo8lFD#`~Ertz5})OGVi*GDZJr_3@?Xqd-!j3dm8FP z#g;9%sPi5{vDB~YDDcMyn)Z#S>e2Sc?bk@QmuoJJgw+GqoJ{2IYZu~QoiLKrD zg|yFg=)mBU=j-O*XX|F|FW>vquKwgJLOEVkRWhYP;j+YxSKE8Q2FT9Z0tF0 zDDN!J^E(Y-iFAZNK|>ywf&Kc&bNKr1YSVk&($c*tlVjfD1-{S!0;INBAt|B2l4nbE zQ(Hv^cP#PhkI?&~?UniX?LG@lVIj+I79BaOEHDo7IW;D|3&T#LYxXzoSxI}xSGbgs zdX*`fwm+-yyR^1rc|&PVo21Y_OU*SOysJRcL<{JY%yD7);R*61nC89O2IeSnF?q@i zPD0WpI+=k?R`(c=xD~&IRT!soD8u8r7!S*u_9&ap_Am<4);mzX>vt8)av4z(U-VfK z4H)Nj5dW1jm8OTTG>_yX?p%AG)x)9-)*0~NZlV*yCOAQpfaB%tnzVxbqZol>v zz{r}FNn9n(*>=?FqK~UJLxA*nYWvE7AyiFwmTv}Nw zzM-qB&Zr>Q!1=1J^C|(}H1pbtGJr@^1=zFr6pJ5=d5XQsdt6jmJkl=g+AJnEd6U@= z2u1xZ2raLqE#ZC%3Bj=J5Hk|dGQ+%Z*;&6J6b4thT)E{wcQr1KCA=$GmdEljo|1^X z?6tl$`uCvuLQI<`Rm`C*vfSRj%)ij{*k|Y{&sB6wTSsk6Jwh`7no(8 zp`lT-fK!)EA^k)RKlg)~N&3fW`%IccAfC*`!-@^wV{Wy>?N>Mr3LH}^{nwT* zCd*IQYYb!iNd8275*K+Y^vY`ay?2b>FtOQskcFdcVwfZhJ6`D~tG-D#G;*hoCxtW2OK3!}+*j?ez)AwsDFOyu819|8{ zUdidS)Y8mM*PQZa#(?#i{ibS`lG)vQ$~5vmp)8iUch@h&5JUB&*0FS1m#@9O(@_r~Uzsq9X)5%X_A3hWeD9Uj@r4SeEWdEJ zY+8DAQ?MY<%dfj_h!8ROw{ix+fK$kxY7;v;E`?8`^8a}2si(3h6S$oY3 zs}uaL^QlKgUA90EK}-bo1{iD-U75UMu^MP~3rhYdECip$7N+Bb|L32_j43l8Ewk=p zq2qMY<8Nn*AIB>91W($_G;{SzX-zJGe?Jr+CK%4ZrGP%woMl5De#zif%0gyKxyDgWaUbk&J zT?On-`iIp5q*>cnf3TFApJSD2jL#z&ALd3yrT>$R;+a12a-l$Wo^gXQ~K! zNFzEQ_L2@<_LszCr*-1be@4cc@XU>ic3AkRNZZJIXD5Uv;DLCES5azER!FoduGo=8 zmbLQEhdA9Zt=_s+frWE3zH@`gE|*>BmOo&-5p3rcBRl&xiy?PkGYwuT*?Ep zs(!T4Wt~NIODj^qc++gp=q9yrGEvgS!trwV5ZE>B~N784)^saL}iFuV5L+c!_)41=)H*( z#QjCZE@GkbO)Rac15;6mUiIfzyII#@qXmi0dQN91YqW@pSXX;xaaoC1G~I|P(^V*> zV31OR&Mb5uzQT+e;xH7DiF^gMH=+sH=R`gaD%GO`6s0UiG=&-k&*pvnM2nO(w8j_k z3hu*b`Sm}M4B%3)?Ldaj>mm_sq?EZ{n6k5yUCg7cUzh%x`<|?aW z?A7xX8Wwu}acHhTQXPhU4{qlKI*N5eXS^r2ZL&;^yv%RFAqOiU2XQIdXfioCa5%B3uuI!=BjS~odn%ss5t zpp4MmaH4wug^6qz?*i0g$^jp~Cis3&{`POYD`y2LvNkFn!EnlXNc|!cO~d4SGl0gr z94#J97E${_L@YH>y;tg*Xv-(T(%Ax!62#*}7PZ}zAiym`j*S}Lu3FVhp<9K9O<6G*nk-WIzbt6HLz7`Ib2|Xj0OH?W@tNE>UoMvx!`vBj|ZU#}A5Q zykLjg3zzn5z1O4IN2L1gF+v$_{?wfO!;OZAj=k$-3T)S-=xWEw_A4x1io~2Klby^9 z&_O)cY2Oys+7Nl#bwXANW!F@x#H#`%96txik-WJxbpJ+?q!^E&?w+^EV&KNdqmn^Y zn3yAS1y;}*np26kPGjPF_DtdrIp7z&(W7AN=7YapS7c=Er{V}Oxc@+|5o;pRe=p<7 zYVq#mkqS`N>$*D4TxZknhl!#1ipEw{FCBePhV-l1`$F0$t3NJH`m=z{M zPaXX}WEkh1XFaz&CJ6UMSu#n-%y3#YK1nyXU<$8&!fDEwTABT+v-btTE~ta`{}LB$ z^v$6e>HnLBO4cO;!TMGC)%C^s?VB(pG}-^};QwZ$k{5_TkO3%1l;u`Dg6I_-6j;f9 z%oL>Gkl!sQ?#N?~z(EHtFf8|KzITkm)EOD5H$~9=UgDff6ip}DM}@KUHv-#Qd6Mhl z$I3}ymKIdQf;?cZwz@mPJ$yarjFnCch;Jx$WKLsZayk0k{`kE9`b5&z(@Ww1<;viF zT2_D>UR0&kNDI)hiSQD!x~uC+$~bGBY?xcavY`bi;sn|?_z*$ZArr9CMzl3+rMv>W z{xb!(dM>VN+h~riuw9qwzj)F5zaJsxT3w5?Q+slEqjNBM>Ywzi-Xz!b`qP83B71=3 z*FdePVjx3id7bnVa{owYBv{flc?sHUr{G z#Ra2xVW@SM5@Fnb>bOPgC`Icyt5f*WXi_uCk_#m373>*_-7w>XPuGzP1vPSF4ABlK z?ok!>i9^*_p(X6JeWm)o(8V1JD4@;Sgehc`(Zr$a3*uTHp+e)>?hgXv5?9R>S_LUX zqmsmbDgdR#*hET)-^3~AJ4@Ip2N*gDjt zZ?Cpd4YUc*17!S_w z3Lm$VQDSs`+1ZI%%GDEEM)0Dy{G@kw)p~xu>E>~v*S8-iM7ldJeiRYe00n7b=&_N)!&0(24vEIHsSdO1mPa>~e)BuGXD!P}K z2HsYV__60DIbHmIWaFJ!HOwZNAs{ABm5p(pkwy&UN*)N^-|7dFs+WUMN~7wQMp-xA z_XrsCotA+l35)F5Vb$@3k-@M!-YvP(20q&i5`4um(>a{_S`VsCGK2T&*m^PX z`vo43mwEaA61*JjEUZ2_$43xQcJ!PYSUJH{f=V=cue{94cYlL#15vz!Zmp;ulqFVwA#^S91l1i1rDN6 zPuz$__h$=6(UU(gqdp(1S(FBN5Fw#K{dVSL1A8^BTQOu(zFdflW<2r~XrjX*n7?cE z!2eL2Fvp7Z+H`H&Dv2g~lU4E4z|uzUZKMY=79!zkR>YwbvpDLIs$6ejKUB8QBZsK5 zMn7+CH5Iojz5z?L*5rCYpC!Y$0tCAAh#I_U*ASTCp?*0_k2Ll|=~v@nFsqc$iIbEl zQ`L`N<`k~MnQM8Nvir6Nt*f=8BPNQfOe?8X!m_AGTU2P2ht0SPJVLeS`spqBXoQd5 z@~eCQh7Jud#YhVxo#bdb@b?$Pl69WP_QDl`7>ODx;)naQt?mScXlfSA4v2NXE(+V% zf9ju?e#6oD$KA%c$ zm9cbbA*5nsH7XP+j^pn|I)Rz6W)H!f-dMsAmP6X9<^(3_HS@Z&XOCx}{I#Q!X2teh zrVZEm&x*T?E3iJ^-7!HMU=)m4k zVY(0O&v4g7QX==Z26yXs8a`dUTek6y(?RTfB1VAd*+OL>{*dcHbEO2iVK*lix6gD< zAKq^jWL5EV&+fI(DJ+$8*Z4=U!Wz#mJTf=zl@C8bX8wfm&pNC}sBttwSYO=icZ{{x z{@#@y2eyK{`0!Q(1q9RN8JRA3;|Po8l-o|a_41q`_i@?AuUy%`;0h+TmyXObSQu3x?aH@JIH>r0)FtiAw!8}^L<{GAiSKyALw$_B&1Tb@&acX3e`=G%-5FNs{%TK)%#ms z&az;)RSgtGoY>L~feGftliHU#YgFm@e|~xKD&`7Ov6Y-`v|`5FH7-=pkj_07WVvm? z>)6TV6VqrV0WGx?*;Mg|BMFTnZ)*l__bn_oHubyc=;OD|d`;_@& zzF(zpL;B-?VKd%6nnFa1h9|&AQ$^xE{*l?C-SG|w2gt>LJ}UNcv{g%H{#vxG6+UfT zLe31go3DIZgJp&5oU%5nB2e40Ur?YATMu6s?)1{x<+|vR6S{J2^P)|| z#`<{^JloPmHEmy$AAWgpp~snJf3u`0EHwH^&aQaDz~!Vg#VSfVZtNhAf)Lv@ry-GD z>lzjg31klH&MKP9Z9_K%mG@gjs%RpGiheR7KXK$h_~=oZKIrR&b28+=XX@aErj+~D zbq%|w&KsAKdckY@#|I%-HUB+xbIzs-tE^j`MT+w#g>I2QKKBURDCW!4>*58*H0nk) z6gLm7{$Av|WM2B}p@*!8en#H2R>~(TlEJN30;7h;c6!znm6B9Ca3LTXYwt2=qF()@ z-&SD{))YjIXbaJE>RSd)Sr`JA6r0M+rZ#tq+IB6Aw--+y#4fqvES=thE=qY{d+|q! z{?dq)H|6b~F}HE2&!Qq}J{f1ZHsH(HDIn=kru#djf498@lW|wY*ccuR-`z<5^dppq z1|)@0OJJqFsC^A~j8i}oXT&Eth_ezy^R~hYV{Bh0p1}<*`>fdC)mRcXe2^aY>k+M-TByIFdOEGB(>5=;=fpFnIUiVcVutWL zoWBqT#Hw|~h$xhv9B?obAE|%4er-I?Q@bH7?IEJzaw@ioPo6A5H8|I+R}zXoQePzg zX`O!^5R%?!91wMwczsOZ23&;na5y9eqV1a9FRVQhHaCA@jg;&7nQD`}65+M0eq;ON zujw}L`t5As4VGtpy~NKaD6>iRaH5oXHP~?Z!t|WL8hBpa9QN2pvu?(kkQ^%;>V8@@ z(Z%}g3}#cW)WB^d0Ri~DYAaKOiDG=d;AHN)od~j>8N3Z5UkY9a0VX57qAJ4>*-J%Z z^Ziik!f1PXRrW)R{qdqTA-32v4_r!pLmO))3jJ^}*_6^qdWucd{wDk_I;EL-O z4dHwo`jmyEELUAeX9NgV0?ppldt_Lkz+=~=< zEAA9`io46f-Su|n<|Z?lN$%VKupj?qXRYkDzIgA-k*^ac+}#?u)Ge?SYeG$Q?IrMY z3C0&%H9Pu+QC=(gXiC2X3#&Yua`t~FA$I6U!JA;`di1d(Q#@pcAueDGHI{*??f>v| zka5koiB=ssoz(TA7c4&_Ug z5;tc~6xo_d_^xDhXP>8S>Ix(An=>N%5_Etpz)VH?wU56S zAlK)kZkMEY*lym&3wQ%o*ikS5CTug(7ggqJ>=EYkoVd^)!dq!(9zkx@c^V2Yq8W2=;BVQ2H3*ev(T>|vz? zxw1V9_0YGxk->{M?Vj0dsbMhtDjwd`v766J;u%U(#4^DiWb)k6ejO}PRU-ldJ${AU zWXlBV2iJ%FaSW;VCb_qvlM+^sr!seyD<~$DCNQ+B0;XaM0B)F3!><2U+gvg^+{55w zwqvY%Jo~{~CMOoNA1!}6ZGzr=j6H2xR6Q)t{q@qa{*5OSS)C!%Lhb8*q?To#d&IL$ zn{&hwwP6S2zEBOr7c%gice!%Q!!$H+uP)-Lg9`3k@A+=`8AxzDqP*eiJ}m;N6U!%u zs_)B>0k%_~JWl~fX@<8oN-~WlyEjT(9UU{HM^#MWHIdU-Cy_BLfseCt*OuNsfs;r7 z=FXJ^&=yf&?yg`#2xtEX2B`k8?*9L2WfXn&@M3YRW312S#2sSdKLIs6%FX_<#hSh_5)?gp_tg@v=qqHrZIu!a)gqiSiOQ& zoKgAN=Z#H^JN0TxHO(}(h`y_KCzlN`9ql(87w0&o+f5g5S1{ewFIoQgM!r>!{wMm| zSVl%*xVWL8T{MDbC#w`Sp^htsYURD|D8UDvWonYH%?tHYb(~CHf$(r+mpUsUc;3I& zJ1e^cZ`*1h5jANyhPVHYc;9uWa>Xz^LQ7g7^5~uNFHjzd?@}%l&wJrF(~uH}ellfU z^}^n^D{0A81ZHa6c9cNSaJJkTWQ@SPal;yIuJ#ez#xrFu}&{PC(o^ypjaTUVF!VWqTH*~ zOE4;mB-mE@p+SLXS2Ue3Y0;oTH8WC_|JPohO7cWQKATQZi&E3JDBt@=lCnyJA@Kz4 zc3gA=Il;CFV)y|HK+P%0t|81W%$^eBaa`B`Np%nwUZvaaeX=5&E%qhqtBvHeS~jm% z9-3QjS`TZcSFBe;xzKd1svjt zACkOvkxSwoN+24_i0pm`GZ8Ggh)6mxWh$>|X#}-O@KBXNTKY*)w>Os0j<6%^MdHv6 zX}ci5pz$^6{*{ciXpzlWoP~B1rxG&){>O&V2LHv!{qkXwi0O4GCk{jzbcgp?ePi!s zd#|3S;?E@~a@1aep%h^G+vB=f9be^BV8s{R)8?~NH=($RGkmRYWC{W>0Q67bsxq!? z)2df>MD?3}H-q20e(_?$lYRl2f3iFyUuJhgWFr7Uj(I)}XmCjLQ;5irg^a;|`rQ zKYZ1SIW(*5wxguGCqu7XU-6Iu%rro0ezHy-O>}I8&C%yaea0-U{;eO|zW2GO0Y&Iz z!`O(5BzgJEZl$=r^kO2>lr%Ogyif$lZNKB>M3Lm+KP4X!>Q=NS9=Q~Q|1r9n$W+r- zVpFyCGahp`D)EVYUav8DQ*=4(w+APP#c_=>0!{zOkf9s3T$>(pu#J4Py7MrKgZ1DS zT>jP~zf{ps_;U{b$+ULs@3AEP+Y0f+_KoW8y#G+{X0(BO%rpT$p}rKeXH?oztYW^+8*hj=U ze;|HhFM2EYYJ5V;1l%V+pDSsfr{}z%Rzzfd^r-u9T^X!(3&p_ci95|NpN`+trU*{O zDtHP$)#R51WFpf)nho{IvyH%5^_U=eISFKKBRl>k?R{^-Z`EOr1E*wZc;wg~A3`1a z*Sxn_`Y|u~qlHA_t$Kr9d)Ba2fbap-p?^@eKi@Km`i`*Itfae?@JEe%@18CDJVvXW(Wp?PMj&d zKyMZ+XS2ut1q%67IT%Xm$#k*?;#*Ff3Eilh0`8wvz(~?$UT{EQ4nYaifJ~O++4VIU zl0Kc+t9%zGU22RLK#6JSL-XkF7WkD`uw1t+_LkI`gR_A@mqASZ)v^j7B<9VA?Sq_O z8CJILmfM&Y+e%eB;A!rnPGcF^v4xO$9KQ1QEuTB@BDp9J9ZUtUPmGoYXCr8mI^aZF z>Kv7{_HGhJy+5t4wz3PTo^l_qztLIN(ZS(##o_#8^wzFR8CDhZ z9wjr@4>B&EG(C%9)C=Y9a5*GROE`(0FR@n?g)#XaCj9bsC!gcHz!LC0_n{v4c`HPz zb0AYE$;pcg8k_~w%zUR@=V4HIkl2K8r`{}p2eLBwxEYlW(j?HJ-zeWP26uM2pooo3E@zowfj@CDb^|GklQ0a zvk>*bZ^F$XR!iWMkg~R5+rfQ(Ou_1}ItMcYh^tsR0=Lnw${~Cq!Cf}}v0gIflyvfnH2Ib-utoL4E^1l)Sz%e;tI8%3Xb93y2uLVc;TzESGVN`5Y zQZ#OP<+4KfnVzNloU)(8VfJ1g+F z{4?pv<_Z=ZW8<3mA225guV(R@8#xQyo4*`xBTdky5qzCLibTNR03B);{+1L2$_o#viW?p?e1*Y6t zs%|~4ws@+hJ~n}iV%V;b<%t#My}wY2y3R$!#4L`xye=EnJ?B1%-!)%X4MPA_QPJK- z>fo$XQZdJeN?f|{7v#=SzD0HIEK~-dOV1(F@bRnc5F$&3q0@K?ny1`V#8gSiBUC*o z0+iC_Zs(9u_#MFa<8zm&{oTRvZNJ1eosl4=NS@R_n!RksY%9buu2twLA#$fb-DvfI zED5a!7lfYCpMpSABiwt1N*gFc%311zQgErTD<3Rt!oL4PfMpD#Da`#e5JW7^o<0_J z(Z>EmZ(XPR1b2!g{8ej_$&$;SMYM}7CU}n$@s7UT5me@Vc})kQ2+ZwkImq!1^l{F1 z|6;d!$f1D=11hUkn#ClmnWozz<~ln=Lpw9Uo>^L^TzrPb$m?nB`_~x2@-6MhH5dv& zox4Yybyzr}p%aY(X)yG&s z_3m2z4XJThinh@5PF;Pe9Nd=A;a&RX0Y?i8gfZkG5rJD+mNOg+`(|a<&&xcSm!}PD z8iK1ZxNZJfK(0DI7km#T)Tf=U4o0VcZRLcb^V-p70mgk+4J$~Ryz=gBCB11?4tX*d zh(d(Nv#+M3;XKsj;s2R!mg3v*6W=Mr7fVWT)WVLNAK5)morWzs${(&~2zbjSYzP4NC#4BBp4O>=(QW4wwgF`;;CLNR_SpA6B z6TT4d1pmq`{=k@zu^qu6sYTjlBn@B+Epb<}=3J>%5QRN-GlW?~<(cQ{oi%Zeyks8Z zpGB{|`L)oJY*bvI&CUJ^!qhB$`%%BoN&~w!d!0ISa+{L0+#bt0bg#Prx+24i>xlbY z8z{kA5?&T)Tsyvp2p*Tl&GdP|J46<`*a*YbFru!O~H73yP|Moq?o=N6!8Ue-zyiF=8mFPIlnU`pB9}Fy=hNqu_xR=>9At=R(uq~DOfLx|3B1lQ z)*KIQ)3cRn&1hmybwh_8e^w4!=><~f{@fPL*z~y1fk|f_!&y4dUEpKkkVoC($0{CA z0_%CrAXaq+-3O4!IJvA{60qhGRtajd)=Ot7ppiQUs|az0>7r{4gm~%Oxe)lbUfl>I zFo%l(9-=*&5VoCGX%gF%)=oFOHd7RzJm?8jc~_wc-eL+e2A`4aI44=w-aL+DNq!lK zMjG_fQ{}C{JKwRfh9{P zm}58= zB~7(ooiZ=kGmQwe;VhRQk!9vA+~1Q+tE=Ae9o%bD?A+mFHuQd7kT(8{!)t09)eEvS zaxxNVMA6_=DZSxUDWaxM_!fS!|M)cAWOaHImr{`?dCo+#5VRt}H-yWz*u-{YK%1fk z)>9@$jQVrqt;B`u@Nv*FR>;|s-gz2`Itd|hYO5VoV~qvc-I@IK{+H$N+;D079u&zY zy0zd6Z5-cNfR=z>sY~HBO%|R-OqY@6ulc;6Mr9QMRbXhq8vBZAIU|H_V6L{Trj3yX z^DQf9q<6sI0NXQ9h}u2i$To>%Zfy+}Y!bE=nMho)$dW8ENviz#yS=2a30Bp&VPO7% zp}N9u&~UwQR}LiNkQKFL>VQGzm7zEogX=hU#Ky^)J!bWL?1@B6|7&}9MYP}YfOZ{s z>pE&-mbagC#>AR(^McNc!WI0&_(e7SX-`&R>t_V$m!|ca57POG%w>W>2H~S~Fe}5b ziH0z7>P=kSY)4_cBzL@OC@CZ}aUl~sH{}?QAJ(3kiJ5m>rA$B3HW?t1=whtBhxjnr zXEg?Z&gyg6TZ~JwId5(sVLB7ALlDDMXx-d7f65qL8nAG3);0ZvOzS08>gUhYg>#1U z83*wMP_!m@Km8xB0f2-3KiYcITtuO9 zsFi^MoshwP#A-z-8X@?)|84j`%Y4#yMWLDC$1hny= zaTp#^1uR=Q_A5f>bljTrzxv;PYdQ|NeW~WrJ~Em9S(&n0C`DBTHsT9NjQvg)`+PCa zO!&Rqj_qm|S!M#kd!L! z>M)kXS+e;l=9rl1R{hOL<>FV(B8^Zy`U`*}($YNtB=?<-DvR5ZX)v6~^bZrSLy>$6 z>;2owzQ*oMM@MRAGl?H_jW&vHl&-?+?b+x~P+i5qE%uFgl02SXpQ0;}+M%)tsQSv5G&u_G)Vr_U+<(K;ALh=^}(&%*^!Pre{qMQM%}jlwJo5 z8fU2|XG8Q)el|^>ThLWynv?ICs7WDH?g5Wen;+1#Iuo2bNk*)_YuT!&9-ZYWaAWt=~SW24>25=wC`3vaY ze4qPB#n@!2|%Nu72O!I;=}5(SAa|MBEOCMtKU>J`|%0nK7)Ypl-SRMm?*e_A@8F(>I~c z*li{ET+cCE-U0)G?g77*l|AYX|d9gr*%;;mSrke1dS&bPppnAyD^>u;v{v8lrzvL z6;(&&8(NG4x(o`z-~jG^t6f)T{$OrqN@HPFyj{G$T?64( z5JNSt{K4RHA6FUeb)|==TkA9I5?xJ&Pz4@Ku6|9?$(?eJpr8t{qv~T?Rk>ugEX)m< z?SGd@ZOl}}!&#;Xyx~fsiF<|qGjpu-Uq0u5Jpc1fiTyvb@Gvsa(x^aIX&V<;H*$6^ zATTLVgc!`t`QK4?X9hNo#4=59?*US8)lFZ=77B&+W*`!+R z)QdNYZ}cqQN=XOu!{S!{E)D>P^y$djNaTshx9V8y%92RtX;LU9hb{bKt>q3w#oikk zYY(O_{KFgnR~&Cib8w`Wjx8~dt>s*aX_(Rr!@H+9yf+vZ2~R7ep?@K`fh!DN?!?|y zNH&;G3c!w!PhE(lTF92J6CVZ*Mod-SB`imv03c$Eo1tLORP^%IA}xXcBaYA7Lm34l z{Tuq8g7G*=LD{S;j{K7*^a&qq0en{TF9JF2rWhh>2|7w0U$!u77Exv7b;D3fHJwwq zbi^4SQyXpMK4L=jXYYYOP9Y@=YTJniCj3K$gr8zB|3WPcnf%++jh<2UP9xs@NG?9H zLAjkJ(WS@(373rz(|^H{VHi=#e;9izv8(T)pJg8xWR_ITXa^JFi)Fm@cR-jSiaFsOf{mRsz;h^D0rF#|OUtW<&+F4MhF6- zfJ=B+@h_3})9R?dXr$%-SnK|oh63DgAvoZeXYgx^rW9RuWa`| zn5W5mQcTDJULX^&9r8C=Lnm1n_>?>WjbKUgNxGoj)W6rrXmE^;^T3`HdK{B)vUKE~ zq6CaC6r`v-ir6}XpNipOC?ub=Sc-%mt?w`KcDXEfF1B=Ca&@DatE zxb)yEo2FYK(G+Qjn&kxvQWRRVT?7%zpHr>XgsNl!z7-XNPkU-rIfxFk{4P^`+r zc-v1xOU`WT51XDw{vFl)4@0{n9XHo+%ULpUGP|4n7__sd+-Dq((MFK)NgD_SI=NYm zE7`1(M?e7Bd9*vk^XBR9lq`F4!213CO_wj-z`goQy)9Q(Ox$G2TgCCi$Zhj{+47d5 z`@BepXU$DM(RjOjI0yMG`A`ag_xDN~JBR&u?5&IS_6HGP0R4>^{&jAW_CF0Dq;p+g z?bd^+=6W>4U*v>Z{X3?)UxCHjTbCofQk6!HGW82s9nhCDltR&_Z&tFfoUx@awuZ&c zMBGZ00yV*0H%oll5e!7F(c!R<@5J0rUCKc7z>hV5b}i=`CjZ8o)k@>x5t1ErK{yj= zB?*<-*}<&ehUPGuHqM;42P3&L+|k@W?#Pzplx4UbI$l?~j@@26iSFGVqgKU)e9y3k zue<~H38Y$0rH^Cys<+@3NQ3I5aQaNVvaEWX>?2`QmuTIC9lgn1C$MT_&&O*6<`M+~Y}hhC|LYA!-!O2&(MhF^1Vgg(kLRG#G5ep~LyWU1-wJjVz)G1hRj zTAVj=6DGQa6pXZVkmj&*&(!L;ohnL>%tU}|H6mav6rZFn9}DGw`Xo1|7RW)`C#B%= zf4zGw<<^jgnU&0)CP^~6%Z_=|t9sBEZSP%v8GFnX_Ua(fx_LizY0_(=h!&@4OP+2` z#9L}ka0Uu&#;c+rR#Z{Xt)%9}zSCl(Z`=(L%w{}_{@4z4ow8yfptyIOCV1n9No&@~q%lee>C%t?Q%B{& z`sB@S(qzSPoHyhaK=H=rNV+$1WWNfAn13860(If@2rTwUP))xI{b8kBS>mRv{L)*| zt$gnLe!5>UyKAMg8PL(@=PO*!5?=2j{8AeQo7x0y6fH8T0SthW<=DAQ?Ya#3Ku6>D z?@=IzuA*+s`FTXq)+2U%gArnmLrVF$4HQEM8d6LNE0mla$ZSP{fk&J5|n0(d6fA6uP_1@vvS>7 zPE?C|+#7x9J4~PX*S8dE$-IIkAk{II9*_N3sEqcQ_g#W{>&tWJkII|F+g!fCQ&Zzl z89#b;P0v&XiWrb z@nWXm&{G9q26D?VMML*um{$lTe@h2&ZZB|W-qjo=jqF#}m3RM~iq)~6Zf@R-Cp1MrqF4;;A5?3FMrXG^Sif`?NsFa+@c2Cto#_tmOWU!v z`hmH-bbI9%e&whD+>Y;;IpC6Vc0}V3B$H(<@XERl^`!3(>|hZSo$CEZq?>*)GLn`?zVj7q6proJ^-3U_~=0F5-8>Y93MeUEcY zfDz&_W-`}nHo8uwXAxq+vjH?XGB!n$%ENrs<3 zl06Vc(hfpJK2dLOM8(Ny7d%z^lA~kHnbzFk>N1jyC_ajkUi%}Qmq~Q}4eV^pc)skZ zwmg>TI_tSQh_4ZFnj*b^IzLeK^upBQT&FPpzU2iTZl-7XU+r4+o{VM{%%G5X6W?gD!b>?OD!z<;yz3PX(S$8F z!988QjE!xijzwXpobLSQwo6lzyiTo3vyhC9iymXCHf)kl?QJkhE$h}dxOX`FEdjQ0 zKd}fwtJE|`H}h}eE;3}m@8x$4pEUQ*Sf3_x4;Kf~uY%j=8`O$wt2!K)K5qzATi)pU zEYk)FRqYl$S=_yOy9cm@a*MZ+>!700Jjw&^oi|SWCZ%38{3bQMV<3c)BC&iG4{uQj z5TEfY-b-Md!q7kF%Kb*F)#}vCtgWER#k6WcNkreR^5mo$aSkG52rO*fj}Zv!z+i3( zgTyP^HTW~c_6|W`QcYjdN4QG3@F9%odgSanW92iKE=S48YtoTzMv|^Y*TG&VGe&>& z^%Sk{rFQ#r_;Y)}S-CCEqScwn%6_~O-z}+2X=d(9P`5p#Ci8V7miH^S@V6gvrozfD zX!R<>j7fHBay%9*?0cx}#I_mbG1=6+zXoeI)xpA>EV(wL5RV64fKB#OKq}Z80*=-l zK9)M1b217|(#sf;P^|h5Xag1)VKm<2PmNgf|6~n$aRxVWsY15*gmC!)j46JzQC(6+ zHIuS-5RiXPhUDhz^-hntpsPeji($t)PVZ=_Bd_TW-7|%3e><{H)uvGO;l!46U z-C@Is#&u%y=nsN<&~*TRsijnQ?yOP>7((|ejYwaUkv(VEYheOKj&)Nvy@M;cuft+p;uJ!Lj}asHtHh)nj>vMSsOYp&ewC z#(c(s2Wdh&>WvlW@236631PLIvK7t1%jjq-85KcE(QcwFXsNBp--K`)IbzL%SApzr zO6;AwIIdWThTRhn!sqgy>kmILjT2BTWnA)>@wpFPQlFG7Cp`5bGIb}fOX=O)!i_AR zF2=)bfNgd4Gp#8|aoO;?3Ko8bG)Oz2*@0tFTVAr!ziZXKYh766oL>Z#J%vHyK}8<+ zn#|lR^L0Fd)D<+8h4Z-a>Y)o>ff*`u*HuIbtL236&JIp)SBq!X8*XYDjjWavYgWA! zPMbCcA2WKxO#&|Tx`}>b{g@$Xwi z#3QLNsfy+NgW1(o6!FLTd>a=1+5K)r(zL~ZiqCNXHh$HC--wT9ghv&E=x3f++d_y0 zKaR%A-`!}&VV(;AlrQJ|N8qlBcA@{tkw|icm3qXJWo@>}Q zrN#XgQ@t%);@Chfq975vmY=I%xp?W~FXOSjKfqa)g`0n9v)VXVxYol%*>U_S9ENZ@ zwtgII<-YQWKfoH#o4}w@BrY>|Hv7Ph%ZjB4Q&9#`H}lYOhH#`tyDj5PI0{mm@_04E zz0FW!qXD;7qyHv=1)|5R$^A}N4IW3PAsM1(z(L_N5tC`Xz&Z8uXI;vEz1=$+BN&7F z>WS20P|Oo#)s5ga*#x7qDa&Tvo?rrZL3xEEx9^DKRdsJCKD8E_qc1*HfPpC*_~rGp z8rc@2L#UDHK*D5y^`e0*7r*v;eNXVV=hzYEn*?~}%Pa4aX=K7{CXp2kA}y{oNF(hF z^kC_eSea}?$RUDxTL0s^6+g+0$*<`au3ENG;(9~UNPkguivGoZZHQSS#UBproa&A5 z9h$lWZwuYVx!vz~Ev6fYNn_iFCbKo>oB?P+(`cX*KT`~vli3wC?`%lT?Xm+3Z;JX% zlomMjy9#rVzS2^tRSWbKUFPK;Rl5O4-7y8rlY4utVkCavHwm8n<+=@8R7wHc{#G&n zVhif$ELlFbmB8?;X+Jt3x)j=VOGyA_WVb9%G zN!Yg|6RSoa)6OZv+U8_nwyIPl!*CODzem9U+~@CPcVxw-o&m_<9FdM51t{oEB6InE zYL>sRudM!wxx-gONHa8F+H-J5XgWh9O<$7*-grah)VfBvy!g~?2ukEovS&9cJNT;x?dB7pT%$jGjk1((mls6v+ckFmJAvw(# z;oSrBjY&Jbub+nyV9u+vB2M1qZ;ip4$_(pbYOE?F*1g@z7nQc#n2QW? zgv}hZK0bMKWFRHf<64T`iuik9_onMHD`POM--p^xp6pJZgf-(tY~vt2pl&e)QgTPB>2U7`LMLirpiU(L~X}aj@nlgSPv$*0IIOrQGEn6`MVcY$Ds!!n2rD0V+SXdkL zV73?{wsBJU4WgD8cWM1uBD0)GHLDaVO$tY9(VTH}-?zW3%?jqPrn&=Py-wO%(7f_9 zdD@Nn{r$o9qmi>FBWR-wg4o!ZDjV#AEYv1&y~ zBAP|uxpZO0+i`uGV~&Uv;Xj4Teo>_|r1E^@>DjDG-@0%{_oTTVi&Zrd%ZY|joI4hb z^7LX)c?k8-MV_?-7|6mCdp-S}xa4P|s_G0_g zi<3Rr3aT+B6IYyRXMfV&tr(fw#gf+c)T{wF z^d%~f=jv!**bKxBcdtzNbLrBS4CLp+x2jFV%2PD`QW$%t>vJ()Clw<_^u`LM+`RT* zEK&>P|7Vf%rOoL>vnZMJm|AeKnQ?M+adDcnn*l93ft-A1-z+T6Oo5g_4sKz=|L=q$ ztGbPk1%QKtEltG$ng-0pEi4Rhb#t*WwFh{uaL=u($2fl;y1L*A|6#qaik{~(oU!nv z(Qk>IVlK%?Q>Q#qM(4uh7B8s=jA3LUPeHs7 zngs-=gefT#WMgErvW8q+a4N2_7EHbv4Gz(j2X#~4YM%BIFM)qVp*_NxU!s4n#kd~` zSRxZ5jD~e0AKWJY9CLLzK#?9OQTNH$DLu;TOaNoZa4AZ~8IHERKcHS9sg_WtoEpxa zEX>!5EB4Q~&(XX8{BRS7;%&IBh$M}~kL8ghXOZGvf4}eQ8Z+S4Z1pq7=Md)Emq%&(E;37-$LMNf^|NKEg18136;9* zEErOvNz^Uyp=49-Y>(XD)a7B1(%O{P?%`!95K?VOU%igCs2cm$M4;hgTUnuDgs-#6 z|2F!ZKl+pMgui4{&sgp0aqKyBv_$ZPk)c!gRrC++3Skqc+aG9v#V7-T~AeMeIZ7+E~4C=YL1S=85L Zp0MuJY3WALqyQiXCxC`VN<|v*e*o6Z?xFwy delta 61303 zcmZs?Q+J>Z7j0RwS+Q-~wr#Uw8&AcyDyrDFZB%UAw$tzF(HGwsr|w5b1jpUwF;?U-+u_VR9(MLg#UmbWa)c3BKFaz;UeX5Mdj>Wcckf58o~LUD z(rT=gG=9&qb^620*FK=Vx9Z3v%Z`cTz)E}FPe+t;h4AV5E1yVdidj)|pOrW|hFB%20 z%rdy-XzZncS{{+FQJQeldUxAYmjXIzMq56ii@E9WYaI)Q&^go9rO&U@1#>0xE&8k${XX2PeB-MJ*_*EdJ%NZld*Ev z-Ju^Zw*+hVnRUR5*nVyGV68YGDV^IllhYKZWC;)Y?9V_pDFWI-NoKa(FK}|@96IxI zaq@Z(i*fC6iv0v?6QS968b1pM+-*MQ7k!{&hh_%>f%BC#z34Hef;sZ4sxkKLS{T&37S;rswPl%IIlZ_*A(^-qG%=x#PiMtRmyKM1Gne0*#mRE)9Y&8C z9r`HxE4r?A2c|J&{+TTSApASAZ^0^gWz}$+2a&1!#NOa!Acf#I@D;!6TZkWyGmjX& zHRq=nFziWE$3{*M;q7MqoR|E=>PW0%fqL#kY>QIMjAv8Ogr48i=)To+NJlCEW^3W| zi*yOp7Joaj=|%v*p($S8$D_N)hI_lt;TqdhXDrT|oHh4sUV{Y;2euOb(?KV~xqq1r zT>vj~s6ab>J*V?@u@kJ@7sxII=Ve^FK%9(gDbm>jEi4X>0?auXt* zVq%21H4vdfD_JWn-$U<9YQ5{EFzj|A-4m2s&i(nNtW{`kV7X6ck2`f&F3YY!SMl3x z?OmXALZOWEq)qirjoGN={c!iboA_ZTfE8Q8RpC#WTE*D*HCEu0(w>By?X#d&G3Go_-uB6?`*t}M`e3TSAbMc@E&*)ve7(feCd(45)V6;9>B zE-^Uyp>_@47Hsy(Y?O%V>m_OEg2q2>CJg1N8RUB`RJDj4FUB7=j{h+6p<6k!!9$qY zF0)NBtB;0`xfX*kc?`e)853eHnnara+4RPYzP-gbc*Sx!7i^PJQMkbHd>EJ+DLw=G zAW~;}v)~4p@!@k1Fi_+dAvo#hZR)9tTQPW4QjJcrMtl_T3{kyx{^Q908zd4tF^3gk zE&MMs%FVLEhl4z~7be1+gK|TIZikCdCag;%9QI8Z$>GJ_>Ph1lcS)P~ds*}&${GkY zv{}rPfLNFdTTq>dj!vGJj^fmcpDMXv8-2T7N7X*SuqEP_)LBPmUq9*9PsXcJAl{9C ze-p|JWrU-DzHyAVS<>M6Q+QVhR(&k-DaY?0efhSay zhOR>VvR!SXt4w~xB1>8W{nnGmWHSm!Ov*{XJ`p4Bx}$%}nv@&}olUu~dU*%m zT_rCZIC`O|+|Yg7+i8|S4=mBV3voG2D|HjHTo9wY3VoB_529?(>s2HYlVkO63qGK5 zME@+kB+W?rfT9KBWLL>dy-sScYiCm*Gw=g%n!$uRC^j=hLfuh!mMyIrQwfiQRw~4z z#<+8Xhu9ai1FCN^YB4Zvw5n^{b`n z=2NErB~v~zr(U8TLq{5MQ16AdSY_kMDzD}R5rU$jnU0hBU;Lz1TV@_sc}6;ai`NM8 zT)l_OQ=l^CG&Fg?Ecpg?@xdZb8i(cqIGO$z8WweA9dJ33yPq{L2$=?+!I*rhX24JA zLmb4B63iYKMDMJhLa$QaY`oGk>VqV)V3Om=S+=@j~bZoKcH5{H}D zmXEKmPT$vZOkyo235Mz8Lt(7qR^1)l^TXGNXVPN{0sdg*9Y)}sThsDID9RafyNq(^ zRp;b*8*+EHX<#f>~cnsA;p z2m;b@b63Fj!;#uDeu$MM@xty8=E4Q!P)9K0h#f1YF;t)_7~nO?3p$UoxtHb{2E&wK z|4mBuijZ8t5k1*;hcUK)$bJ5p%#LkY_@#o9TS}f+SY(9e>qr~OfOaNImTiK2w)g@r zm0ZJc9(!-zHLhxv65)No>j1B=QSj^MD_u%IrX7Osyvg)!NjsE@;+p$l7`<&y ze_vdeB2xweSE`28T7I;&QTSJRr*rF7)K^tR6;)iAdRD zAMa7tC|m4RIW$;9g)osI-os&qO*_m~7LpLjxgTIJOW}Rl*h~FfKU498vTV*mTG8i7 z(C)7pPdx=kadDA`NhpeKv~^_?UilKS?bTc} zn1I+O*>>@4Yt=2Y=M1-`N5ZuD_hNid{%I6Nfh$%;Uijwi_HgTLg5Rr1v_xxG#rMU2TvVMq4rE7reCHUueS`JOZs0SY>j6s zhw!NTG$%}CC6Df*Z($OJ#4l4w8Cd6d4!TbT@Y#%X7@H&Rd6jD&R(Q?P7aq|n{ba_i z0U0;hNcdALE@=iLx4(}OpQXfH*-7)LVOf+Glo(aZ#1=HV;n-7Z$g0Q%o#DB%hY)~u z*d@**nPS!7YM;#I2amKz+(mcByI*_@oz27}DY+@qb{+*1jr0K7ckJ3QQ&BJ-!>g~a zzxsWWu?@|*nFA406Z{M&f)qbHag}|8e4PjWo{xBQm#cE!I^Au%Ny-nKN(=P$7@S8~ zX0~wmSB#ok29+k1Tm0RA3En5QC??>5pUqsBZ9VUi9XW?G&HyETLgC z3p)rpG5cI3%jiW1c-qEN$wLJipD+bL1c^q^>l! z=!boelCFHpuJ$$|C^jV5I{U=lH2ecCMEnc!JBZag=@r_&n~RFTx9wy()Z!2_@d{)g z7pD?-4MG4O4_jDS-eV&g%69pBm&s*zrtsZ5Hl@AyjQR!mSGh0$s{^3+Co*L9y6B&Y zG`X9XWC;5Sr;{oEB($0^_ts{Vcn|z=xAOq}^H+Ois}JxdbFy*c3%x-dyi2)rnx)B> zbrole7~lB;p%+t5PR@^h^uTZ{Qb>nEGM<`(%wKnlO~DH))`RlY)d#Ci_-f1AX$oQ1 zPzfSUx(h7Mm$}DPUG6}!zXGC;0 z*32aWDCinG>d!^F{hD^YluLAGQ|tC3@!_L58Tbot;|nw8O2Ve92PEtR9TE_5?E94* z{3d_+>kIR3x=4pBjKh8M#Krb3X}61$;#!N7Uoo2SI-2l(VAMce9)DhmzY$xAg@Gcf z?MG#51~X3%+|rz#4_GDr#A2kpA;Ls)?m~NXw>#pF!lKa(Lh%=Peho2#TFH4z)f2KY zWhmB2EZa>BN>^)j8%p$AIqujruDc5)inG~>!|xo>UzxQAo8T`Q#wgz28&BAmSc7HP zdYqfQIcxOw1sT8x)W%ynjas!CntNQHP&U^Kwq*1U( zt?gUcs(%oD8-WCICK2v@{3V$k1As2z+nd`IiI(xehr3G zXU}h!*%r)w;c{V9^BBwicAZ~Z|6V^^zCqF}KVy<~P`CkZCa(X5lYhEnvFGh5o5!>t zVE-J8q1n7qh`fZ{8CyGu;3_t=)iD^qd!Q>uNwgE`#^_g}uiPdwB8PAk5DFOqy#?`N z;0)FEjgc|uTiUXxXu4-zdC+KO8~A8;yzPnOdmTBHM-Y(&yjZ883l@f?Y4sK`f&Ho* z3jRm8*Y1z6(UX*IlL;_Yov* zm2)LWQ6xy1xe)EPFCHE6({1|{C@6f;88@?;D~^j}%8BDFp`X0cvEV$QG;Wq{;M44; zfyP!do;#t_GXv{JDuG_5Lg~zjcGDWyfXg17DD(DGoIHJ-`4%gk5$DD8_O4b`Tc@B3n*%~c>~x(Jk_laUJ8vThpnagUHjJg~ z`(kh1?*4`Hw9T4Fj#GA{aJhB}CxbXTp_xSBoAv-k(j<|&$0;>6%|23(E^p}a zgcDo!>EDEMf)3dhav8pD{&IqvNL4Jq;S5i~9rd`Quo%1C zikr$_=pr5$pkcO-lNri62+M2RGbN|Vw9~fi0Q7lE^yi+8uf!_ zZmMlPeeNI{uYNwJEN!N^5mf+LFDP57T6pwizf3p`$x~-x*NnIq(5m(Nf!fRc>?=&6 z(8=K;H|hz?Tq1tU-a>~TEKyee$X0r1_(+@SMI9>5DCv=&=Jl>iE1c~Xly5P!s7WSxX4m%!RfnPn=Y4+_R5 zC~l>ni}83WL-Uma2x4`K`a{OPRF6IX=I9LD_dO=N(neS$3uFogu&7jh_lcl^H^`L4Fyoge%Ya6#|N>K3qww`5;b<1zmmozJdI+zWYAp7u<_n(t{ey8Af`OF7-~5)6x1u>|+Mx6)V5e3@U4}TNNwpnqi5kHuqIDl7 zLdL>S#>jUVgK?goJ$DeVGk)BG29gTD4~>Li*0J6@!IS7USq4!x{k}`C%AMiX`2bO%xWK#w{-7N;7AZzeq?8Q<& zfcdj;CSaIwIk4UuPcNA8nX9))yOR8Q-mj?y*u^Yw32e>X@?TT4=+q4@BjInAz|}tR z<(u&0G7l)C+;!2Dgz8>SW6m`rmTgJDdd2U|tE2B`PHCcwN+DeD5KX!9hcn}b_B7qr z6Qj7rh1iXtR`sTjx6$yLt8}Y{{yN`wCB$7XXO=-T66aeS&t`Lc8G2-Dmio6JZ=1J>W{5@$<-m_EP_o4?6g8;_( zm?}k_chTl0s+)r)hg(igEM}wrNrN5=v|HUm$v*4h36R$X8K8u%-Vsc3y?ol@khRpQ zgR4uaGm*tp`*B`ya#^s%%LKQ+)a$ZvRX`Hkl*MeiUM%}{4q-WIzYHL&kaLMySUPg` zE)oew`}SBS!{CR2fUi5i^UHI=` z{+p(=H_&O^yhxpbrM;XaauHzy*k#~Nu?HONp4hR4@I(eouu^8JM4PDJ1Fb6wd2h}= zKBn?)^j}mpT&+rfuOj;&wsiGQ+Ww^bV8|=nx69FHG|Ap;K=7wA zvA$!gvH1#?VEQuZ);;53*s};KYbRu4c_PtSeFUL}JB_O5C~r-{MsDT=d_E@51vZY) z_(tSMan>rtYEAyOT&ot?WIVUe^K@(KuS_GfwK^B~{F9-G`x_*;z(9D3lmdscohDaG zej!l83TI?pXt8sg`eUw0uMWtEH~xScUWk5Vn_S~i>lzFUdnv&Akm$~=KY;o9eIwGA zihH__s-KV;JM2#0BEeA%z}DBPP&6Y4HagBNAM1#yymc(wrDkGL3Il1PPH9-FI5D({ z=&FyGrkGcwGsujKwd?XX%B)kw$eWPY)uDG-gEQ$GpDEGVqyGAj_X#JkZAUA=k@&&k zR@A2gWeiF8C!cN&7VMUMJ(4lUU(BN?pK#ffPK{!k#QbvFTp2sd0^K`x%k-QL>!}00 zg6(0$q^xeL^|JguCriyyn?>fv4Q<9f1uN+)jBt=PJ1x*8gYkAL16lbIj-jP~9Is0r z2b8TQeQm)>Z==X)<#JbguH|(kC{CpTgS=S^LZo;yqmeE+o9(sU#_Zd%Gm=b zjEtW>Ww#6$yPwlm>Oc3IG**HdU90)XboUVVx2h%^9py$KmImqYz*oh~?${}zT`h9n z;4VyTt;aK8%IBqAh*Y+yRwIL7eZjWgYwX2I87jRxgfP4vaH6oT=m&4IlRxte3L1|< zjq3OL_S}90!9J>JMBZt)kIW`V3hB@O;?F|Tk8YqtuUl_RT#^XJ($e(5iwcI3BlkK@ zHS+FRID-Pnr={HAE2oLLSA}?pPlNF`VpWC;)tp4qPThHjw#Mw&i##*HbsEn9f`6E- zPwkJxV9V-W5C^4K{p?TUy2P#Gb8OA}(@l*jiG<-5QY?P%PX1aOSGzSUbpLInwss9yW1Y zNw*kBESp65CbCh~snh(ZkBWqjWB}W zA_WcB+}`Z}>l6RG989cXIoOf{;wb=Tj{oKIL){5`+P440*Ev+e{ApGcPmEA?PbnV9Vk4IH*8kUD5A`67tZ5#{Ph<|<^`KPv%e+|Khqvg zOCIjyzTV?%CXfW%|6}S#U4xn^<$jtTE#n`l%W*wjQdSJ7fTS!8p^6T9QIzH7yvy~R zC0EWkRKYZ*soa~aVUgN(oA#$2SU2+(-h=E*1EIlOxxY7KQpWh1wGCw+de5D0X7M5r9a;H~^1X*F_^IyoWj{UFr1k3~-*lq- z%k%3ggpS!U0eBFt(y? zhqVz-K%3A-W1-F#XZum>jWw#&bq(cXy ztnU*y)2}Xlr~`4gxR%C~gGB_p zA&U+gU@9N;e4ei(bweJby;Hz;3(u*KKbOn1Dv!0Tvy*{l&;Av4lv(VSL9)tbOPG1w z%0~cIUvH_bR0NHCHR_)^<}RYm{?@vQJM^HQAJNvKoEl3b9zQmxA6i?*lI#tf5bNv> zze(53AZEJpG+I1h4$A@UR$W9JEp>w5($D`k;K@`SH|3)Xi{d~ZlkGIpZ~ z9DFJNdKSAHehcW2U&viBarw$BaBOPPMF*9*L(zQfYo!@TG9UbQVj1CJ3K}^Z*ioi# z|Me=yF~ZBkj#o{t^ww4A)(4Bd`JB4chX8(d4G}<#EHv$kD9l7I!mZ7XD7>U>vtW@S zUMkSxX(j6S#QCUG2I_|MRZ;d9#0A&_Eq}Vl?Yr=|>3^HiJVk7p;OlEaT|illYP@qm zlfwkL4rNz54sTXb!%TEH^X{u0$=sP|1+^hoaHKI34QcPf3(JT|kGq$ztFgbGO~1i! z(Iz_QtGpyIWjYiOKY&Y*{OD@||C>*c5<~Ln1BzTp3Nl#OnF#u!l;baZDS&GSq!ZsQ zEu2)q-XHJvGY(>3s}OGLv@Ao{r8^Lmk{BPQ-qIsD^EL3OiLxF03zT6#frloI@KulQ z5kFRQ@`aLiCovTewWxR1la#^}zxO4hrRNF(yVtjdh}DD;J) zZG@@{$t_@Sx}cbMOl*K<`sgbIA}6uEdkENV;#OfdUKI@zQs%V}i5`*9WJrHX#Q4&? zbLkekG;@;oC>iG2R*pmMjtHv)VR5w=ajX>+5$Y(ZEJAy-C=iRx%@k9b;F93g$yZjb zEPMJ3$KXRFrSltmB6^tr2)6u)=OmV0%IV@N%Dkakr6m%!&t|H~g*u=Gv?vqcpf)hS z8B7TzNs;CqR`FL3na8hAE_fQx`yTX?gT_QX(^vd*9{l8aMIg}$QNsEwGVLyg+q>CL z9p2S3gPjVQeMTQ%xdM_Cby}rD`5d8p7c@7T(%nPFsZpvH_1~$U)k&%0l{v6@8EKj0E~n~75*Ju( zu2gJTFunQRNk_Or&AW3fByvC7p$R|lt^+}{HyrPZBz~+Mra{aBh8MGfX*~>r4j_ee z;mGO)nsB0e)AE}e%XWYB@2F9p3Vw6v_BQu7)}zt0>t{$~(595g4oGsQa3_by4IBDf10Oc1_F)>UGg^|{a+XU_pPX*|puhY&1lX~_7nIky6welp63(bl zMi62#1mbsS5@xFaTZ_cOad7*VT~vv5!{Z}L%Xg$l+eY*;^{I!+WuN`z@%w?=3F4YD z>-iCHDd`rF>afS(EpARw8`KaQEXeKk3#&)CyJ^xTe8_rFyB=8-F-`U^9a#m(WUd_7 z`fJ&usfsU|0d@swVVThH$s%ilEgOx3tJ)K%cz?lArI2?3&@z~3!c1QTGv5Oik2t&+ ze?NQf`~8K13!ztNmS$RP?~Rtksx1ei17n6CfeLH zDi!U`rBiqXu=`Dps>&Qr^7ViWbm5ANC$)cEiUjY@W*f0E^qQ3pzYw(I+$F5UZ6^EC z+hjZ!n&!QM`hTZb+iluzIhQeeRoz4Asn~8+B)F-67o-&A8fB{A*`vnBf~@-Kl(z#Y z4WJY{xDA}^tslSUAZ#NCS6ZAXjfb)qI(hEnkJeZ-o1;Dvx7;?odU@EmRV?&PdDzA?0V5GEF@JulJU)eNIV?*cl={%ZWBGt$2i66m^H>T zjMoj_fN7M!7PZ!#W%*r*c?f93bug=I!q!tXV^HB8@NaW+O5$N*OC8ROr7KR}9$^kS zhYMvqdYeQPxBmKjFqn_5zOYcT0c-0Z0z<`NYfrL`D6h%?BBTm8`(TPZw*1Za12JHW z^$xB8S`*)X3wK*KcKTyyhk_7Rzc12Yff$~yaVg{ z8oh>1^}Qnrt%MPYYQ-f>F;hr!L>=%$b+{3gHQ^nB_6?PC2Q>U;y%GNN#K@-q9CkcKD))e+K~qQG@f<= zs!+X_V8?r2zz!FqzIRzhks(#X|K706AbnSR}Yh`cbpjf zvCp-0E>S2PFiEiKU`dQAb75oFt8(y~Dj6*lD%3H=qQeC$#qIYMQNLe%b3%-74Yt^; z$~ay!CI@I&Ro|n9|CGk9QJxnu%x7i-{b4o!#3s%l`*z4%TTghkh3i@)+0ywHhQCC7 zDv-ckIB^G%u z46UmTI8Iy1zTivh`1PNlx&9lDm)*Y}AtH?+$Vx~H@eH-OaowJU>UeTx$|kP~gkv?NcVs>3y~SiJAf?$%Vcu7_Yy_6nhS*dpx#*Pyg3L zO+cE)>n82GWde>S$kPe7s>}EL<(RVy*d93V>Hhw_Yq@^bB|j{oI4W;i)&aA&BmP!+ zTrEN|&t^=I4n;QGV%z6GirrF)UGeD`Nsue{AU=g;sXp+jlB14@lYI_}CCe-m7CgZo8l_H+Q#m>_{%^uo&;@B(^u#j{u&(f# z2$PDMcY}3tZU()BZ zf^@sAI#KH3S$0hGq1P&A=g(^br2SR!isvH-3T@#j(K*@cwNbEswO7lx{3e1&PuPR4 zRP{3qAkkHGn@w_C>9r~-D+@; zWC+2i21^dX&_B;tbR6iG%;P2v&c%)sp3pX*W!gp_Ly8#7f_)UrE7t{B=gDH8CTfHq zuAA;4?^fh#)+&6pYjrfoO%msL9@|YL^5}K7N6#@(x!~LR6Aq5nOEZPlZ!gRpIw#!E z+y0USN?U~pZ(5PuNElo3YOWY}nlT>}aG2niB?iJtc49&`h7-TIfhsNkZQsQ$Rk z&A6sW2>S)F-bMo`{d6_vmihb&Gc;&_Ok86l;y*o2NL9oS=Ei)=#MyW~s=&2EV^r=$ z)ID6?3@1F;drj+K@2fY%L96v=)^qJmnss=Jxobv68jK41C&7~di}iR%-Ct;pGDhB? zav_pcMxds3pdGfj%~Y|C;nL7jl?JoVdP2vC3WD&!(a9b&n~?b>#-NU2ju*ND)(4qW zo+h8&4K?+RrG9bQ>;a2a$11RDca~Y2;ZsF>)g(3iS3p6$m+-#wFVNzjzFN=2fMs` z!IuncL1f?~e>2}O?WI^gy@li3#L)9jF~BM~^(NvY;GhG2*=CX}V6JyA$y>-*+ycC# zV%R-vcI=nX?hyhducJaL!|6%EY%Mgu?9Z-eL(#hd;}VmCj9o{{LN~>g@b|rwk+u?r z(0iKS-^7%pRetbU`Ps@Qq$BF|(cE0PsXc)@&F2Po)P3tGR=*~iV=ixD`8Fx>Iy|_% z9!MtLuL6K=-*5x0&Y#{`ors7g(`%Cx_SmFKQrm9CpnX&G{NsCAKa5+U`S(+sl@%;3 zVhJ&zC*Jcgm2O*wl2m_#22m!nE4EPE3Zi@*|D`@CeR*wX7 z59_>J;m(zb+#WClZ1B@pcalkXeeE#mi$OurtPp^t3vpM$`3%Q3)@7;i~ zivZpp{ks~_p+*{fG=~WSTL~&JLZx;l1>-F)1G%|zP>%pF9qJ;lh>BimjuwM->7#@O z$k0zV0}eOL`ACU4Mfb#H%8u#w%Y>ZcGt#1qdZF29v-e-p+TXy(lK)5B*#J$N-d=ujO!8oIo84@oXn-EBTy z`Sf9{I)nunsk+I8wf+|E6GWodE>7Mt8{U@#_oE@+v}xJc@#^n?qXVkk#+-JSd=CGaCV3^l9!=yCjq6Z6Jv;mZB68K6d5htD@9?jGVxe&K6Y-@N?1R4+pzmG= zZ3SE5k$7d5&a;FV9{a|0O0saI8vnP?(6oO_q>GjYFT7g{-@vKjLIZL~FLy9T=#9)I zGw18rqRzFzF;xEwusMZLiKAb>vQ^ruVBCOIA`Xn{hIAXg*Y0aoVr|EUpm_>J1w6S zfpP1Z&_xHgt6Yn)cmFlI3vh-+nLcY0skjZMZDf9Za?H`X%wGX`n0y(BJkxVq3Tcuu zW7)Xj@4>O`rHy<#{ar3d=enLzKTWELg7PhgcbX{cv?DHU@09LLA+;3|cW(=$!A9*V zO5Dy~)lwqt8y`*2yc7GwW;-Td0^rOp%a;md&Bn}Y3^$Npb^*MhGZ`T@_ncC};sa^% z$^+h#!*jMy7Y*~aKkyrIMY|4*l=N9|+Swf545K}fqLmu}F4fQm2 zwilWb81wSE41w-v0F>(owg=JSYUMXpixO0k%mA;4u6_otU zyiC_2XSW~6YeO0RMpu^;O^@G!e_0ci>B9AjOjlnCpOl^ITI#D@x?;cXMf#5Xcf~rZ zrvnEbp!kdd^B2uZF88`ZPFFW3hKVGllrMlYPj=&kkfE?TM%#J9DZdiBByj7-sZC`q9#%07^op@qu52>`04(Gj~nw` z&K67Q-AYCsJo-hM%UWB*NKL+n!NUiQ41jU`DwCC0w~C&blZSI^|9rci0QopT_nVC6w#w_e z0xPv`9{$72jI*j|98jcM!-K}%5r9?Dw$SCks`0Yq(|xjnVkl(R5prOB7C&^~xcjj5 zH`(q-aE6^{-O_kIv_<{wliA9|mPaE7u*197vRC)+5)C4cNC1Tx(7l0Ith<7jq+q8I zQl=tN3caM&i+-`zciwVua;vOd{Q`#Zj4qSgKnN{OOeuw(pz#S!$u$j;?Bq4Ipl(FY z^dn9=x19X02WP+i7Qqmt^Lm8j>E|^(ffpg+<#2)y=W>JRz#htA)GYytq$$b@aL)YO z_@6=amVWhuWCWoHQj_FQA)~?gUjtTCRGWc3G z(*1nYv-p&JXlMHTdsZ9a@~AZW!p>(22k(%0fF`_d07-)(k4m!PjmpeddU;Dd^{cHq zDz@eX$2Q&Rt;6A zQMJ$pd87y#bn*%$gV(KTbR1oSc@`W^o|^Ba3SmF{bE7Y8k4Qk#N;wKK_;!ioJRuXn z55?^Yq2~FoLHIj9>co!dkM5AbA5wR)+O{tnKulCe+E|SzFRzJ^-WF2>@UZ0=#eVYZ@=H9d57&#f7W_RH2{4K(SpnRd&Zl=mn16VAc?{GVB79L zwym(;`Y{#xhc0%pF_z`$CdX>yDOrbY0`YG77wX<@#(+kXLv2-%|A1I@^Nv}3^piuJ zJsM1o?ZPF(C^88F?IzF*@D0hoLg5coD5#A$cd`e~Tt^-5k+i2lHM66pYN|yKhs@$g z=EU#m&ToA1wH;{nxn7!$=!`?|nM^~yJ{#^x`d6+^w!{O2Igj+;_lTZ~T;gQgWV1VjZJGx3uLP3Yz?JMXh-dgy{rL`X;54ZK-h`Tt8{7%$#)w=gV^n;y;(N!`_~(h#uin;&WhN}bByB|2E?VVsHhXmkV-rp?USNJ^WZ|GrcPF0^#cV1Fx4HCEFd zE-GyY3f$?zz<|d#^a^om-$92|G#65XYbDyprbsoTc2SWc0V(p*{r@dfe=KU%qOW;^ z1P=dHfwf`RI^vDV)OeWqT=-m&W8;=fMg4>=l(J@J`)}MUZ?3H3 zc0#^n2u`-Z*%}8$nAMHdtuC+q&x8kLh+1rWtGSgdkZhDeDu%}lLj+4N5(Z9yOk^-%- zPwf)Cgjee|vTaQZRr5$keaCEMt_+tz@g9C^vu*hxz>e#i0;Ci^i;sp1=*L+rc&Bx~ znkwYK2I{bqk;k?bL779dK*{?Tsg&3ty`tgIm{_R9QQgN&bP0Fnv)S+pclX2Ga+u4Hj3TAT^}M@&=X;QZf((&HE$|Y6+cwwNBmL?Fb=wajd#wH2j6HdY zs@Yfdnl(gC5wmKT%LT;`N$`6s!etbepSCF;1c1XiaytN(q{A}ZndXtoHv5e}IAPqI z+5ttQ2M^YX3HPjAMTE+}+1ffGpWi+IQ6%ZWt#%qg`&=M-U>SmSo{46(t9%{6qHB!0 z#C>#w8HVFy!}IGna#z(PPwCu%R$Kel6@@!mZBgQBj3bO49r{s4p-a0_uOsr7kvuSvjVwnWVEE|D zAmUd*pOOrmE=TiCYEu8Vj zVo=uNt8gZIJr$P#=ziYe=+d1P?8cHPB9u=~P@%g`BBi2E{&iTGRwSWN69AeIQ&opaDl*pv_-@BX`iXo2q69?waJ9u|}@s~zUr zWW^1kZGBm-0Kg#%9zqs`JX-X(CoRP#-G+~g*fX}@Dqx`If1F&yJ&IFyjbeEJSQ zIwNT#ffzBX=)Y)NBjI@|K2TTcD>$B=w>E$x#GH`ChV(RR>VO-!oEX6cn3iq)6=-*x zy2^c*CITfQYy>>AZ68W?Y$y;~nE7}t{R_MgmQddsE5`2BBH$#9JgO0X2CNc$XUiPX zE%o16hxQ?eDF(~#KT%yng^`5n0rizcA#?U0iMC^e{09cI#|}?ZJ?!8;Hl&Y`CH7Zn zktCO`Y)bS)Nh}z&F_H;De{0*e#|2+M_V6%yO%gP_LF+Ez0~bA+?n)KLD-{8{Ft78^ z;H>6ZSsTa4uf$81RU`9vo%!S8^JGUELw19uir%Bs)wCu{B%8|j$vhpM0sG6GWuvTV z8aPazUNoelxVF#sT(PAfe@50?vE&fTxlLU3j z^3NRQnU`s#&(}?@--kV({giPQJXmXHqJT!IgxPL7qe}*aSpmPKc(-BO;^O zLkDa(+!}B~M_?L4%)g55K`DGkQ{+4*vE%saT~=9~ z_77n%aB(k~l1!9)86nsJ-1`ETCx{(eFX)YHE}cj?()RD4xL3f?9@DJWFqN&=HmfSu_9$9Mo(;?2xeL!Bz9eWA#Cy|f$D_Z+1%(8wEiP#SbOaow zNhP_tGO;#qsrK`}w{pt*B!m29k*$@w*Ku9LNvQqE3oA;`mEg*JlWjM8c$|gO4LHS& z?EZ^?Kv;FrH{JjQM|kf7Sb0wz6B`7_n%%8vo^gJpOkBrmX9^#|3H1^*xeN}j9OtQ; zI4#O(f2-bB{EWDB4oM9)xKHO#`DbTl9Js-Z_Fpq?BPO@<))zKUMXbytSB4TlM2Q5r zT_Jt11Ux#e1s*(}eV(02CBXL&Dl471hU=A7kHmn4i$H+&PbS&z|HH;N24@m=-A-(C zV%xTDbCQW|`-$x*wr$%sCZ5=~Cc1gQ`{%x2-5=duy}SB!)jqw?uCw=Ai^Y`7usjs8 zoG&=dM=N^w5vh(UgL2XyW#J#s1ofSe<7QNK`6F48KFr$>GoeQOIXsL)^7)4yl~yUOg$_>PgWH!0?^R>Mmj{_r=m za*C;y8BsHwVXn2leh8RuhjIvw{}@i;;AxV?CCYG`B3`x`3ZXtAkB#oC4&^)OLPM0` zgLbs|Nt1LAur_|aG*A~_GH``oG}(~+#x)CPc&I(;CDx)>7Q4{#24|E@^8HD~+~QPz zQqepp0lTI|*ruxy-V@oLfzb(bgURTN_VZw>ax5q@w8f%6MnygKOsGr>XgT{~KURU&q zn17-^T}gdGTghx#r6YGevdfSOtI)0k|337%M*H+#YThDJXs%s#(1!D7MOehsj~9(s zofu^D09>Nj7x_jvM>5!vsND8U2!HhQWH}RBwLzq{3*oOnf?Qb|`>^Fm1{Ao`u(guU z{leYayZmTC0y+{LeLFgwFw%9%j`Dc3P9f|`OENyj`Snu!+2b#H7e~@d}Q$lMpYc+#P~{B(aK$XVg`dcobOqw9S8fS4GQEVH@*Hw z82;}?!(>DUR)LH18#9FFr^M6&D4s|B&E;!&fpTD^~g)(H1 zpn=-x7L0S7;*GQ&V{(ahURbS}pMKK(HkSGsJn1I>B+NFfUU)KmVMz(6ZzdGef@XJp zyYw4^Nk`Q^$X|Se)V*_-&`Rt}Gg~#{*5u*cM(spC7{3Q9hQ{fb4mkSCXC` z@(qjG=e%b3_pW_f8_w{)?)SznM5qH}gD%k7or%AEFc&S$ zV~tbO#%*KnRI`>-@9sYrJJ^n9;~Jy3DGv*CKhrrNlb&*}i?H_|Y>kMr4{J|bPtR{N zY_eF;-tzi{0zw!>wf;&k0&vXHC3p){)e|WYhv0h7|4uLLi9b~om^Gn;H93rzm6eC+ z(*3N_;M-00L9@r=eC-!Y6Xw>}f?eEZTA#R6H=9X0fCX(J}c@O2~Y_d{LXKnQL) z+mqbfY(Q@SgBpVu522tNLvFsi(lHp(f#6e%lmDhn8{t|tl%1UG0^$HIS2G^Oyy{^# zZYKwGmg_5aRukRaR{fJ~488j`ErF;jppyS4!mm6Li&zj10$SkdW9Zn!u|_v?2xv+$ z-GkJgBumTU*nsaet4V>Lp<3%k0VKgwm%J*NAFM@gN~ znZTmW3nVH+S$*_$0G6g8)_E6|Xaf@zCMN4K5i+A5KhS;G@UjcZ-8=jjElLYG1KF5D zcQ6;Zt7LgA$6gU_*5x*S7qNaV6gRTosASJYnlSwkA5mv?V@HqVEKTkGjn&AwZZk!O zXn@=_#dpV+?^Hsvc_}kELpxmrg)&`on9Oyw<8?Xrhl-&f6Y%GuC@^P9bSE47WaZRw zeUB+NDhL7$hSu4tpW)P4yhDZ1yXw0BY_$D-02OZ@zrhKFAms;CqE~?C7S${Rb1eyP zmXj27_Wsg>0__hT)PUAHBhex}xJg~p>EOJqmg+k7MX7bUx`{T2gA~@Emep(xWWA*$ z0UUVKHA`()H~>q$ePy$ne9V|iadLs=V_(PM!XX)4(6;a~)8U6E)mH54)1WqB{z)mST~)8#5>6o~V|& zLoT@cXHQcTZKq3+Zfhy!|yx3RQ8W1AWWw___T9keU0Q^ZmxF%?#!vT;pC4;^WA zN!0k0Spzt`YD!RQm4O|qI;43l>rGAHx77*UXL!}6>@~&gP8>-^n{yo*5={~Zu8X7Q z8T)0`lw&?*JxSAgo1z^wz|5lCvu-b1{4-SUI5HUD~`sf9;diggxd&E+wh{ zmi6SqRi>XlH_B4V0;`>^pVQo);nEnxBIABWeJyi1adv6{V%joiadFhlo<|{{(>%o# z5EA`|xiUjysv%UCxMTL(Af>YQ$EJIo6%O-c;J(F2^tVMQL_k$zFTu7Oz{U0fFX#UncpAd@ z&3$_JekLLQj{#-cdZ(xNicO#r~9Tf0TiK1~=OCJ*0 zsYTIf`a1yRaXie}isFWkG8wyr;;E+q|z@0ELvDs|Atkonftrxj&K zqJ4z2cV1_x5BQU9qrZL%i*$6Q+MEYD51cNxxR7s@@eD#45&>nLwe3JYye$vWWcyJvE?)NuVK%j=Fs$Ye@o^;*~8gq?AQ5%TFU07Rp9%EQ)1fkTBIrY&JwdS3g(b zle4u&A3rV93bV^OPqZvd|Jr_etw!WKsFsPR)!_Run|h5sH#!1<-ghdh#7qnZ@i5Lf^Lq0i)^8#2k@Nno zQJ~%tI((_rmTkmz6pL_1;FD5v^VHKux2+^fPiGH} z1^V&waxBBgk~*2fpC*p*;<61Zle^gp+AyLi#KRjMH?o2Eb60nt9ssw`gPx`F>y0pA z`mxjnX>^uvxuAsgPi|{Ku*sHv)P`x1o&9XLRxKFu0CiP&^c4kWW{2SXrq9!nl~c9t z&|VtGXHgsCAd;(zBnpJ(+2XK8?U{84ys3Ci69UA!MTbiLOernG*z(s_CAeX!^P^se zHi0>iFVZDzh73b0Fh>X$ym;N;EhhyatAt1{C9MQ1qR;E(=DYom$q!66Jv=%J72m-cd}?88%k>s^nEafa$v8EM{|Yq%ouw#xXxp} zwO70kO8tHNQ$4J2W+St1uQN@BH-a|5FD=pKt*vBJKdop{C3%`h;7FBQm&OkKDr@lg z1ik6QS{q1r?Q>hV35N$K&&{`!DWVBhKHB~Gd@%A++1aH&IuOW6j`VtZ^(4;RN=}EJ zPGNQd0ELOv`K_VNimNymL4bEF``U8W&?fOlC*#{WQ&u@CYh<6SDkWAyYenrTOA^M~ zLe`ir>lvq`I4)WMYDF9n4 zG@LvSnwi340z!(kLmFt(gVw?d`FTKUXes}v^CKm)rg@|=Z9HhTa9IrtvgVlZ z4f&S8(~yv~zZQsy>u~THsvkw$n@b;x*SuUAfv~Eu>YyjYH2BQ-C=_KSyV1V|Q>>df|8xiQ36E5-J|O;1902DNFo6E?-yy=q`ClQD zC?6NdgdBSP9!aoi1D_<~h$d1{h6`L`FIZz8I7yU}r6G8KhV#Wm+5k^1WxaRndG~4j zTUKKJxph*Jm!pTHj@xk_Rvw;xx=s}rR%KVQmGGfyyXNWFL*J>lhI%jP{yO`4^V!UQ z(xS$f#_#~B&dG_jX3&<$Y9q+Sub;a$)8@P8Z^m_lU-UdZ2`bl^4@d0~2Jn;mjFRl3MO*Hn!qoyq9qz*8EZdU2&oR(zUcff^pm zKI&%7XEQ=R6NP)2QMZx_6WgfxYurQ&S+5F_fDZ%mxcSiHRUHrZ%u)*aRNBBDhkX6B zN=RXJzRyvj%k!{J!3gN0sx`uM=w*zUDSJQAwPo<8%uB9~u zHz9EL4rtyhmKi=F3d_yDwBRzV`=`tY_p}fMDxcG{8s`dH_RWiXU)Ak`)9W7kxKGUN zvy!uq=I-a>xUG+NI|@fsbyrWckgq!x7vSkp`w8Oku;k*$?&y`n%O~LewYVEyp3mFo z_V`V5Ua+V8$_Q8eQ|#f~{J2o8Yc?)-CA0S;Qx%sU6G)YTxN&w~{S{51q5gK&8*}aV zn0$SHgvZ}y8@oGwyX8vwxtFQSmPwbo+lK9Fs{3lKnbgCW(U?nTHrN=A*}1E&;G_D{ zD$r`;1s3T9 zpGC{Smkef%)wP5=n22*tlxc^O(k4Qgrb3}4&)&rEjzu~o6#%Aoh&O~i>PYyC9)kM^ z>xhvFvY?S*T$w$jl0cAPo(*o|^M)O0VeAlMqwjXdBFeh*&*>_%p_f8y8q3^B9^rn{ zRjAsn7w{DSu2S3IELfal#LQL*o>BWbmo5XB%-Pngw)OpzG9))iCy+D&FMn}7LF!qk zI{QjEm{jx-9}t@r?#<+qJ(!DjdcMQ4DYHGl(t2t)AaTpZ zem(-2{#SE3qPP2u6&;{Y`M(Rkz&ao`fSv8X#KZKGMsDvZzd%GjafjhpAX>c^<}kLFGo+Xbn~Um#W@uYbFAOag)lLuC6=}rpciVo5kaFyuY1Ub+c<<$(kQikLMdM zZFN6r!zS zvlhgofML2)1Y#Zz2YWZjVmam}mk#J+Tux*s-a)S0*^@;KN;0bh6$WjA_qsnj;% zHB|x60zIR0c2>;3u=5TJ6$99nbB}tdAy-_cBW!HY1&ebAhcDtp&pBh~$TnbUgH!2$ zR<6S2Zw&nZN-Db6LEj74_6NpWno3}5TZTV$`G|&>bcFQwG*5}hFH?4;*XJdESppg= zAMc}!XjWrN&x}bklc&}*F=5h5Ty1Kcj!e{{85hff* z!qq&=b}9SRQedMpQjL_+#!&{=SLN@&PZ|301a1wy^YdS7lpT?wJ?KR;p2W0HC6s2$ z9Q^g-4gX5LtygE7U+9G!yKZtoH1!8*~-szv& zAliV1jQu#l3Ub4<=r|(Tc-hcO=FqSS+4c{4Q({L6)0I!FY>ui{I9*$k-75DFxYBXS zmz{oYr_V?-tX&SUroaLqD$qLhJG*oKmtL^mg6w}L0_vtS*C>vf{3V(KIarKT3fOYs zcrt&I2J5J);XKw_dj%NF4;+}yPWO$;KCooS6kgrdNv6aR+Z>ZottIFnb1c>+rC&i) zS4E_|r{5@Oyf{#D$rYC!5O}u{bQ^vC*v%_iN2+1nt^jzm_hzwjqGK$D^9%B#67VW2 z&idtXq&B0THkV-`9-dksAzg+e)^t9x{%r%xk)P=&7RJ?x?4#j4%F|hCOOx) zsi^;P7nkmc=WJM>c^NXwj#0EpsQQd~6IiHmebqgo{<|5w8;jOfuWW=al7r+q2bmxc z+!Y_f2LOOwBL5WnNkY6myb2o0gek%&`i=AVN~roVFabJ+MK*_O zOqY{wefO!g`nxVjC0ZD+ihPWyiri!ud=!~<>e!LMt*P%cv<$Ug$uwXQp}sJ@InW_T z8M=DP^}bsHOYrf$Qg1SB+4wE3gd>LgQHk_)=^5@j+tS^Cf?yAfHvm7hlEl)9pjcB^RDW#>GQ>i+F1kH+gikthlMhSU{1v)6=T8cattKvr^M6PO)bjs5=`nd@fs%N6_oA(*QX_CP;P}IjlhZe z{g=Zm-Up2?-XscflqTNE&KFby{JLT6RB|>9zf&YIn20!*<^_F>8N$FZk29c7*0)dC z{);c8_wAEGCiw0*&6DqqZ6@BbEOZrhh|Rf124+j4F>QMOr;sD!>vPoR+#op1$t%CK zVpqj;^AgBQM3xPcP-!&@-d`!y{9%3Fl*7Cxc-drq%V6^^9@sBxc+gr!!E5{NS;Emq z)&aW}^NZ2UyvIj?)0n=Hp*!Voinw@2*KYd~;=FR(<2)+tAGxMp&}{u@>g|}hBv0b7 z(i;RCD;3gGtX=@oAdbG!WK*lu%~qho?oNmpYKx?X%@I{T*OW3#)7kb{ffes7Emebi zXL|PW8b>`A-&w(Sm>xIk^x~p&Vr^Ss%S&6PyFi7?CrARAp3?{LGM5k-RiFo`)}Vv% z5vp3o0!M`r8AB6M6M{!(0SXO>h7hLY3`!hs1qq>Z#gO$+jr09> z9El=4GQ2ahFiPnvin7;x>WMNHWh81sM<5wvD`>%1fyAPMgZ_6P2sx=xTpLX?9o1q)Jyu)dJKa0>CQ z6iWl9w6F>acLRtr(a&(yaS116e3hYNjyP)-F`RV?kUg=hn+6ZfftmZlmr@8>i0Q!0 zf#w0+0YC)goScgm9s@^2Z;lBVe}aw9Gj}{n*U^6Cc~4?aOA#Qi(q(xM{^$T1q+l*e zF4xHaWGzKMH-=GKT48nB)}8aJmVZvU%{{C-u!MFTuKN1*-wj&nf z;`&{SOv}Uh`%Za6UpfcLv?q}>v^|2C0Qv4cWs&2!xCLJLv=~z#Dqo1ss!C~Y1-oLP_eNAVnliWy{2Le zLNw;YMz{!l;qp~0N8+lGyr%kga`H93uT{UZ15MVg-bI{&%#S?pajBN&v*v%9hyl9# zd5`BvA$XpWOc>T#N0KWSj!3`@LFFkp%4^KC`TCAKc`^Wl5bUyG3o$S{H$ncxi)%7fLKW!Q7QE2ZE*UoPr z9-fHt(|G{{(cQFQlH%CvdedCzrso#a6k!@D;T5khJ4Ak`9wg{oT;Y~X-7sX?+dL1h zXmcEwT)FE9mWfU9>mw}}g4`U;9DG_GglI$;UT!%}o|>|V0rEP)a)v+F;|lT`zKA_0 zrgsHNIaU8uP^~ZL%F?4@(|h!nbcL!IXU2SVTiyZ7xGa}xQhE+V@bsJ$WmNpyrgGxc=^=$P~ z3&8>M_>WWM?>xxN^Co0vM(-CU48=RQ=ZUy0i4t{)b^J+cot?QR;#6*s1^GoeH3;PF z{uMSD5y1qmErg~#H&3L|zJd|_^$Fdywv0A3OjlG>oE+B{w)T5f#vh=L`Zi9=FY{G?c7K= zKdz6Sg+$1fWs;wkI^>5iZN2hgx3fGA`owTz)pH0EyZ8A{1tlJu;PLSK*wCPu;&n81t%|3d5D`^c!iH7;35vF4&|uetHMc zIV@}nND0_TE`Vn{-;bnb=&-x8$$k-3d^__y_Ek-e1 zo3kC1{Y5Vuk5(W zsiVOxC=p&#F}7|zt$u?RZ<4HRB~b;=4~H9_tQWj64)W=JmuF!+swn}H=eB#SBUel1 z4TrcXBg&1lpcTkxvNF3CWw$PJrnOh;pB zUB47L!(UivsostQA_j&zG9!k=%>9hak{@`Dle=ZEC~3|2WlAdxrGhcrh&|8JWm3N& zF0$u?@FISD=FZjt`chl^QPC9|I5{??qNtE+F#n0EPqULEOz#17p4CfWpm zyHPMUY4aNT6qc+oZJne+vK;GujbSUoh|mYdTRa3F{l~4=^@%!(nss5-3r^bJ zF@C$-$9l-5j~g){JV8gSxK>xz=FrG`*r^0M%n8N4Z#?8!qV`t@J=pF&BR|66R$8af zn)`JVAUM_0xj1q^4uPd?0hu#?xiR^P}!&&R67 z*`s>rB0siq2D;T5uIVf#w^e>}uQh@ZeSNV$CTxG8u#y&FYmBSX^pbx{U?6Ti#xfdY z<&b5@XXev^7Pui4sEvfO%g{QgAGX4s_4b!64aDwGvnP~fHYm zD2ae~@Xvl7_eSkrD{^;bpv3q~l4!vgKU*`1;5$Bi%EkDMQk^M%dc3sS4kl4c3{x)11>aULn1 zaHMde&wJU4+4^qUU~|h}T_hyGh*l)zj7TWn27Q6g+<1togQqT$Zw+fwjnaQQO!*x9O#BNydfzD;NUa@lOPCcHh#7xEFB>*Hhfj zQ=S0x89coE$6*INB!zM5g;I;bX6jQ&IDEAHQaMv`$jp_bq0qYg=y((9=;U3x-9bFF zn$0Pm1d69JXfdOoq!PlW6c%3mwJ!sSrHoEVLX`t2%?7aCfa+C`XM&z)xl^|e3-Y{C zMlvC!DxqY?tioZym?yMQ@&F%i(YzY4+!fR?haMjO!@q<|$)Gj0N{#Bml%jpfOy$5? zpsC=b7_ItdM4YVTjD@7>>=D=H6!+i>mUpc68#UU1J0;%q{=18(vU*i1*pU$@s^5qi zzhpETI|Oh!1Y0jd5b8}Ipp}P2`D&EBO2jZ!dF%F`t{5?k%$VYis1I#4o9w+qNuV`P ze}>b;Gvz?$7qkh%o@nS>duP0$dj07o^-qaA5L7wONt}$@ul`BLEG{UTL0VCV9s;Yx(&EuDdS6nL4P z%rHQ65KijxM+JB#A8OL^$|~eaAJ6ggC*yJ57}%QKUv|W8-=Tf8n?`WIV6&$XNn1`W zI+KPHnt3YmM86?#_}5KAf=Y7bhpje*`XSvA^O;rCBetIMZdU*<2uK#fpg}&Jk5&VN zeR3j=z?O{-^|79bv9GZx)Ga`lA6BX+fg6eG4N0mU5}Q-^^vS{Znqa@4 z+xf2r!CQe`o^%XioR?^j2Qzw)qz3BU#<)Ua#*n4`*pAM*mSQyNB=m6qTC2^ z7+VIuD1yPwhIqiO-(W>}jrl04G3Dap?vs%zT)0o}(|pB2<1U!9+w}QQj=K4H=JfPR ztu#R8De&Zlz8tcFJO)r|x)VezmI|1xnq{+G?xN@QI6y8GIH~O+PqWdfjG2^=k=1(D zR&2SjMfknwx#AP$-;WlT>y71qDvK9N?0e&u8=n19*%nBj%^J-D@%DtjCP^eHSmvL9 zoon~CH+AY+Bdez=Ssee3YtTV1S!QGd+Ty;FntxO8P)Yf5Q-=?16qY9OVgd4=hlqe% zLs`qcOw3F`fdLNm`O{9S5M50{rmWeK(XboH`u-S;p4@KDpTiYx0j$(sC}q9b{{ktKdS^-XV#K} zxhsNXGiAs?=1fN6(oBXWL)I(O2b=rc|8I%qPC%gm1~;;TFarY$c)mN-TrB@@|E*dJ zP7Uq2B?miExc?8!$a-{kM0Il{hEm0{q`0s+-5yFljeuvcxfBr$xEjGOO5!^>=oqfZ z04aR976FY~RY9|Qkw67~wYoxF6P~T5btV7TN!?648h5o`Yq$Ak^HnxG?RdsoI$*Z- z`LoA96cEJ4MTCcVJdCgbwhZ;gaI=j^6^E2euhYe(gqlo-puVbTmuEiD2x1;cft+zL z_d=#KRcy}7Brx+AID@!Po7SSuH;fkgj2h^`HoGQR%Z~&x!`RsSD}`&ep0MrYohDF0 zgex5G4pfB1IX-NR%Y1=QLl>7A3HTx|Wm18y4mdO7M2h3|Ie;mTOe?cU_NWgFJ3fD! zJv6fCye*l#;cD0UiA9Q-EFR9;9>Lie0d`>ZWD)I=^NRuzC>AC|I(#SP7;h5BB~7hN zHLMKlsS@balgUNJBSEb(iQ#DUq)VJ2Ba)m5?U+a>Qh;1pKyI|XV=KIe;FK)ij*P9mTdS+_xVfMEi1$FmpOMjC~pXhPip?}?@zTP37H zqCbW+guCY76=NgOLJ}~>K?c1Ra3MJm50D~*j1b?8_aOT&C6xcd)N#uUnyL@F@IP>- za30{o0CE8rD14`rox|{#x!8Yp!?m)C#JfEQisH8w$({?pgO) zv+~&-&5}Dbb1;6MGd!2#N54VolXKwVrefTC)H?A#z(Wxbwd;9wo|Hy7O?`@^$N$GtV?pQ4n*?sg_G`(c$rsl!--Nw&h!T7uo<^xNIqtU?zIVG`f zwL#2!4AY_peE{f;&^n8C@M4j00R4N;F65;~@Cfn^MWic>358;)KK(ch@n~;z!6>9> z!XqVFs$;kSc96&d?e8{aw2EkwqBDn61wO8hO*enJR{sGU6nN2kgyudi4S76kF6qZz z`Z$&}B9%Tdi>mmJMf<}hr2g)~U+Wk=Fi6Kg^iqUV^GTP>G75V2)}A31eXhK+c%s_WDxo=2<1$<34u6ks(>RT+B6)r)C>? zK4U=T$+)+oCC=Ccf^{GPfTO`=C2+l6vjx)MZPRs34)iEEo#Zw@KUn~|J#8^XafP-c zd%z*m&zsR*zfF@_9wyFTCQy2t(z9N$ynK^;h@mBLbuJw~kRkufu$~hh7*DR}%utnS zJOSQ6X1IDda?@uFwr9eCp$a)1nu)kd;oL=_dOD~9&62c(CcL*|07&YP>%Uaj4J`@P zu6os_x3ZVsNGXYjQ2qkyYyqzXtW1NKR;ek(X}&O>Qj7+Uj0>1YX6Ma1{PlE>g*50$ z*&FaHiDs*TM!p)POoGrovvQ^{InHU8Q&YLWh_QGcg@#1zLRmxPFbNrGewN#gd?^o2 z#g0=#jB{kH{AfmC0Bm+sZ`S4W7GnVygdIX|D06dK6;MiTIlaGVIyx^%pFQn8y@!%U z*hY~}PhUgNiDOqOYrNg<9x$i_Z$gklK;A@JMo^;nk&&!r1@X52P~vp0 z`yP%QUJ3-e;-Ps}Z}lYh{Yvrrjq|w|6wr@}s-QP)%`-=f06>Ph`vIZ2;f|Q)iVLZ| zi+BD|d-C?6Z%CqcH)7k1(Q>*na2JE{I|#GO7yN`eF;a4SE|rip-x0j~H%@1C)4&12V{tT9%q z1``tX$NqnzXJ?Rs!<>di0C31<;k!n9QYYQ~^}~Qm$&JB{)rZC=!M~)z3bX(ZZiifv z9H~AB^vvj@Yzxk$-FSE7wgx5p3G#Yr=rJ&D&tRtw27n$(EH{x~=edlEluadhsSuPu z74886S^A;{%@{rB;c;pz>gMz{d)CM-M+hDju{Ft^C>aS1bka3B)8uDa5%jRYUwhTr zX*Csl8kV#h9Np9Tqa-VFDW1n zs!Z7h$I4ls-VYNSe@AzfXp5A5_aKquM!P|xVT!6S@TtebNwy_^3fzmh?a`P`Qm?|q z4OUauZu_3hR@sxV#0Y7|Y6b@Kpjyr87%Uv%JODC&k(gjyr_t^FJ?GjV^X3EFJ_PMghv}kHu{fDR*B(NfsTf$g@ zl-U!SvRE^)-gIpqVW2x?`dp-4)u+LbziB1PNb<>Pq~2nspvXl zodK}!Ac!mgmF>s%rfobErmGWCg3sHJ%0~p1rYbFOnX*PwL0v&zO;&X68o=_NNvkQ? zYU)0OPu$6~4Mx#52mTO3)?yMvp;$SNUYu;Emii~73cN8RolFkG5DFDqTc(TR=QB9c znYFNcOia-feK95;?ie13vpSjBNGbH!UNd0BH^6-xihN`ymZD(63;Wk-7%@_pFzivi zp1nDn%!m^X3-lmVeWnY&tOYMd-ms7e;DNwG1D}}3v@^=+hI}`($g&9Jb7*wLua-7t z`>3Eix0-7S=|P?>q$eB1OA6axpu_ERp?Crx1RQv49sqj8^LKrgItb&}>W@~~w{$?H z!5;=l^vkg$hyniB^slitvK44+DRO|nAkj1`q0874jfjzd#>@Q;wD9-m$En=zXNe8b zton5oKz#3OX_SQo|0E!R!Fe;E_j?NUYy0Rqwcnr%XD|MWFBe5-$P z493NMDmHtvy2uU*-`zJER0>|vc&cX0JqBG{Q*Vchaw$O9aAd#?>MP$ znZnY_iujf658_P(2bB@vhckdN?l$;pL4=H%g#BiVB!)p?d_%AWE|{&yhP#kGDa0e4 z%qZ^8j_Ub>HxfhVXfbg$Mr?a56IZ{_z2xx#>|gwrcHOHVzJvC`u+2C08ZMuX=OCvX zr08{c?a>BOt6ap6&#w;D1|Dx~1x(jUbKS8c<#LsigTh+;!Sdcm*xZ1e&X0SSA&iHW z{vQ3L#yGsV4@LDG35@1Vl-aBU_>uAFm?ahM5N-LgGo&T<4g8{?2aTU7nOlns=2v}! zZ(~7@X-r;d47JyB6pDRn^<%$IE3&btyL2V(3>SA9s|anREw*~qj&c%Zv58XSl%r2( z{~bOrL>qBi3A9*>Evss7!bv#A>i*v5lFLYAh00TB$cc6$jWoS zFYoRR5;0~PjN$-VD=hLa!YasTq;N4e5YJZ7tB~fZQ#NjL^(SOKhK7GYk+KUjid$>b zGz11e)Lh;2E*B6wQ(ynRA>;m9`%xMjsB9WExum@9OC?yczdh&S-zw{PMy6i$pl$q*d80lQy)1KZdw~=Q1?` zW0Ib|Hq{DP`rY;S&rUeMVeYS?iCul%#)22i5$<* zhW!k|5U1l~Pt ziaH7dnrW0>Y(Qn*SS+lc){)X&V1AyfI?j7epHYF67h2IO{1;YnSk8pCnOgD*6E!V= z{6Yu-zMdkH(Eb;E2)i?C-H>s&O^1D2L{@%SS{G5{gZ}WpO^`0j=1Nl&O8(xh8a=8= za5{t799Yu&*DINvgCCVfT$-RcH;(rF&cM=?5W(W8pBf0vVtKDC&s!J!gy!`#;qicy zr`R;?s>*AtiVvphvc>1JtTJ?l7?0~-%DN&3Xbm{|A$L*ZEpNr*kc1BUR1v={yEbr= zO1Jl#u?B_zit3K5Chg*>rJmh!SIlh}N*EPj^#ceWs5AV9?qbnaPfyy*MU5G?tq93N zXSpY3a?x{v^3nMqb}T;nSVr?0g;+vm)kcBVc#Q;qau->&`0IHk3msV1)O&dAEZs84 zE1<5VuVb`}rivGMFar!|L}NFd8_%*gk?bsE+Fn&Zys&9j$BB}IkT5n>&c9dV@%^`t z75oKJLLJ%)+!;XsMwwH5*GtimIX>H@iV6&s$3dZfkW)eU{O2JE`+v6h!0165fR(yK zp}1qUESkwSC`{!5=lcL!S_x8V@Yfh4hkx5Q0PA;i>uJ=$(fopRp=|-VF_jED^VC1jLj;E=LfIOV z{-^!w-&u|B#YH6Zbtr{;erF#aC{Z6vejwjeJ`!UQBUE#R=bN-{G5q8*7#P@C<*A38 zH1?%`+={nXF2gcQu}rRA9CTv&kq??xSv5B~H6DuiiaiL*ZRMmGejxo7fE%F@9;JE) z10ab8Zr(giAlun0)n(CXq-#I1j(C?2S_#n?JIF2wjjew#3CDtR>qLN4TvtH?q zn&b$TM%V>(_#a5B5_wgsCJ>OwowT&F*1wy^MnNT&?7~+82S2O5U;0FK+|N5KbFO<^ z?bgpQWK+72J8it=M50NQ0M*JbP(x)R1I>$Hqk56=b$=|Z@Yq8#6xvl;%hLbQSs}8g zW=M96PnTkHTKBjJ)^Aeo|BM6yEi|i66pmze72AUwE?cTdcJD>lnkXe||3FT5nmnW$mwy z)18STuEay|(G5I#DBGt3O=)7Hyzt4O7G2+(sw7g=(`JlCwr>>TL>C ztoVFDmKt4K6KXPA0dw^rWm?n6=p=>At+-iP`6^y8-cltA#~EHqv>Oks3rlw|G$s=c ziRh4`VM8FLW@!ay!ORq+UdTa&;c3Pq*2z^)NHTjGxJsVQcmt=S*ZM;YJ*y1Pu@%(y zHTgXa%_JW?Ge$LYYC$xs=lCG^FZgUZ5$3+(!vqGnfc^V8z;t$)hnXso%IA=)G%cJG zMjYpW!CDh{gdyQedh8c|*$CmYBcg{{sC3;WEPMYyhSB5MeC&&#Avfd}rc7q*?jG=? zd^c+u$Va1t(m0G;w8{%u_X&dA&%ks6CC9vi_xQ`u8rJelItRucP)&jjT$7D?9b2MS zavy6Q>~jncKm$!gm`}z}z+Is#)HEHuWSVwA?@mfIrlCnx8OB9F+{KUx6LSq2M)Bps zxhhM0@I%?*6`h+f)8ncqSafj0>#=LPRPEyF>&3;vCQf^Wr@5`^`6n6@b9O6%H^X2{ z+DIY5AuNKa5XI)6JIs5GEgJK=Wzd}k5I(4Ci2bzt?}+;M!($s&h^LAc zlpPbih$r7V(O{6fJ^a>$Eu209PtY(hgdmO1*M-$&U%6+ib`OjW_#8$zL9&_)kAqR?52zwRY(iL@c0YlH2jl}hEc-dM>M(b?*qEVQ08HGx@sTre%0ZD0=frC9tisHWhD2@n z#(=!F(cy56_ZTpvs4Uz zXv+lVMoDB`1>MD@h)wTWA8%0;+;&U2!rw5s=V1}%s+52eMoJF+-A}KVi+RR_*}uH? z0O&ZK4u`vc9naS<&RPxJ{mzAWi;BL|KmHPILg~(6^u)iC)2xI#X*nvQ{;sOw7{Bgi z(*XE7y}{O0%<6Lhddwm+?Vr0hMq_iU_Wiwejb!R9ILGn-X(agfH25!*fsWtX_iNB~ zk-w9iL$feG_U-+Ud(!_u0D(Y$zpT82UwJBNWA$AEbcBbS-?R-8IkE#HSqQaF^2(lR;bYWJ>fAEf%SYqu01*vcEzvyIto3QF6_ z<4!sOr5-9W8j61kxYClA&ac_WXxiIL&^SCSaCPaq5S~#`-TT|Cc&3|biLMKb2u<8N z``#QF!ZC_PFumtn7|uJ8a7g>X&k8|>AQB68PL|0a?XgT27Spx*Tuq`5?M~rvPv83z zB^ApveUbN&v84pFFkV)Z*rZbW#U;jZ zj3ZU!=U=#q#oW4gmW3DjnM3%U35mf$a%FX3tefOI+ z^_mi{X3Huxi`9IH44J$#Kc%%oUSKFI-p@s!JWGGF4BVN|Z+1ntq!jV>Ft}z8wsq=L{^lz{u-MIqljQT0jD2?9w&<@l+!=>eT)Z9_+V*75~qhB zrN4iJslHG8%l#H9_ag(0<_RG*Q1`npAFb3b+jIYW<$#L>NH+p-@JMSeV=Nk8L`*IGIH^^I} zt3yLH+Tb-8BW`{5{i$ah<7Vh}`430oHOS)E1;Z_{!dmA_D|a%*!Y#r8yW)`{l}~@l z$;wGB#q%ND861C>6qOVg-e5^wqT^8@8|{mXF}#v4smb1(m64^>@pvVkAQ6-_qyJ+* zm_-AwGnI8WUgtzkmzR|7uQ~`rv4=CWD1R@32sx9Q7EdHY|ALyU)&;3urATKUh%`x( zwHzeRnWNA~DxsIBnHzsj{byud-DiLOsRehEpE^^hrOl!-4HVLc1AilE=K3qwfpU86 ze+t`7*yie2#M;u)cyl@zDx z4e>0FCj56z8mrewXK}j3czq%pLv&j87uEyr^&1dFN9j-}ji5B+ueJ@EV zHt6@WH7Ku|7aq`62E*Z8&Uo;U;UGKEeRaQyn6>o^f7g0Tyn`2oaQ*T5{{N59?f$a)?h6jgD2u390UsN0#W2wL2x*T!!D&Vx74|t zJ-HCgI^_a(XkL%PEb}zKkClg z-_G|{VbU(J!604#+yGvHm5Yrk0mTSI=8q zpbXxjVgC1DKjX2B(+Yny2fK5ahi>4dq|oPiS&i|MJNNe|j2C?cRGzEvvkGM(?~d9)RetmNWy zkiLSgL^;(w_|Sh9D1Uc)wmxkSr~E)tsoC5%nZ@H4&cLGOEn7>I_){B?WIT^~8e5{P zinHCHT(90FSH``KZDwJ<0VeF_4(d@(JR66yV|eUC^h|nLzQIsf#1$78?ys%2-S)}D zWD-x0t1n)VOg+vpfxH36G+b#AwO)r^*Tupl;AJPHP4RyRIltzRy!A!4tBT(*J}JNQ zEvf`@-ZG7mOEwe`-Oz9D-}DWUG>fVk9w3iE_Jnpx8FA@Jm$A!U`$r z9+%`@;XbxL*mlp159G_cP(f|!{``Dye>p1Yl*6=Au(@=XgUR3}DJ()plbondz^2n+ zccjJf1TdHZA~Hd?0~qEN5!Ze)P)xpqhs3W!Z|;BK>gZ2%E*?3}nX9_muCNs?*_s+Y zAZwR8N*+`f({$K$p!33xPsidn@PY-nbUDIhkj62efb)-EfP%-2LFR_$k6WcVU692k znb7@0ISlJQb^ZyOKaq3LlfM3jH0KvYrB5NMpf^ESEsG}u$1fA5@i>imOY~*I*D#)a z(D#20o}!dOgb^Zi5(}Opd~=_M@db16phA-69|`Kv7VwRC{24?lGYmB|J%Sw!mvyT) z(kmh&!{0~OsyS$e@fJKDd{wmGZHt>*wrwbZ%?G$q>hdt=)}79?cdUZE4LET8=qngu zwnoPV4}wAaz@-fakt-Jlr;-SH$v)QnfZc!VxNqt{y?9T4cgZEpW1D$CZ*6Ydb-4bc zisRL3&0F)i4)b-C$9{`EBOBBw81sOVP*cvvjr@*(g0rzB3OU;!aAz294XY z9l2mCZbeS>7T!`=*4QBLh^+VHnDj-e$Vip@)AeNRoOkccLA@ao5Px~S>z{J4Q+$SY88l1ISfsj`Whjb`T!W0!yz&waOZyxp z35CYYYPP(F3;3r%B92*!iqJ~UH3F**-PT8lC04pnaJ8v1?JdJ%t#66w?L>t!0e`&=_qk|HxxMs1G^^IXPerJ%f2-e_nj zX_cF_l@a0ExR9-#stXTK-|0NWL5QG|l;-6YTz;)LURji$J@rbKP{Ly7hm|_D?2|k#1@T z9?DPnb@KgH4-#5?1Ch=$bX7;t_@&-kDiJ~aTvvR?hu6S6AI zurns{RX^_l!;XJg`%JLpCjAa6d5NbaK_+qIB#m5haljr*`8B1(=q^0qMhCk&>{R@Y zqGUTK+sCt0p;I}7e4Cu1bhrO-MmdwBWwOaGZqtWHe!a!gSi@G`o3XmYwD>gRJRd*5 z1%ZYnV@iCSK20;v&u{)*`}mqBz(=z(W?O>Y%HDr=s<2ADk ziJGlCeaw#S8pC!?xGqAIo~lbp)x@P3(vwoXd^F+u_*6}%AtgaWK2vl%bTO&ASWS9j ztS&{9rq^kL*R2iLEH@;kX+q++=@L_Q8gFlnCRL}?=+n}Y7Ww+7rN{XgQsR8KlV?(W zcf5Eg)z^RiKkwylhlYEHycrl2x;DrsEh|m4-H@V*)uqM6?@0Ce`M4B$ag-Z1hw`C( zsd>~Q>UC-fb83 z*Nq>YaB$+piQ0+Bl^#l?(xUuwQp}_bIOQ}lf<*8TrOlbLk^gWNXEV5BM4@QO%SF35 z!~T3@fq<=}e^F!?n(~)$8Cn{~+Z0`wkm-ydGH4#EQI}MogGmZ#ps!&M#au0I>wJRx zxbA;P$kZ<2yHKFQSv1gaQsE?BD(u)P!rLdnyTkbyjE7jDS*>)gS=E$-a`;dys%cU~ z0`tYPf5%>7*lGX#E$vyyPPR4lp2(^*74xOX+pN{x$L%pogm`9|3774|Gu3R~9GGJK z@Kdp;w~=T4cc7^6_yM}U8Z`?z3K$i8YL0(zPD;eK_IH7Td9~+kypvR3*ey-&cJ2fh z1XF8a>Z>r7eJrKGcvbBlwAW}c=M?cF$&pzR92O9G_FqEa3aa)xlc`2v!;QPm8T-^f zh4uhDmagI11{}N;GuRQo{PkS$f#071$1=g`2O5de7orS2!A*JzJmn)-;7b)G;n{zn z!khTf04-3XUtmfr1=6q)X2WE7N5Gy|6_(|$PuR={N6z0J%3%-b3-F*n_&h6UP-u@R z5B5aA|%5$|rJZAA#*~7Ao3hF4|qlM`na2tmN=?3%vZE07G{~jD*=I(8#rvizSw^gZ^Mx=6Z=BdsprMl&k0E-CHgzZPIi`S&5Ou_mKWHK7-qnvzeBL_P=L7%7OdPy^q9{Q`v`v6Neg#tE`UZBJ;jN zH9H|GrOw#WQg@`8#|d*)o6(B-JbNW+KDv4KEV}vV5n8cX0LADeRb1>k?246}`unfF zk7{`sPoD$@S|yNbL%)C28rbO^O^WS~gk8nuP|f^xU6<#ah&8%&-U5$l_SrvF-RQaH zS_YhL;A~QmXLSt79t^&Jx*=l;kDFdh5n*5<;F+ujuE^mQ1gM_jE3*l@D}LtA47ud# zDq@<@fF_yW>V=}XC@*B&N-|Fq{?J;+*7FVO=lZ`vrXIlwZWDh^8z!;-7x+1U27cHH zDE26Hxr(bKPlmmW1MKl#9b?6Hdk{`G1v~9SX;{^#Z;y`F>!YLF^?iNq?R`Wnz9VaW zHMB*94fex-PgGv#Yp^i8hrS$`SBlhy&MQMOAG@*-cI)Y%(RKpk$8KV8%vv zVnds3ru=dNufcy_3Mq2P4ExIAI*a+R&}y<;($%A0%;*eBuV5pp^DNd34jb)?c#TfCSPUkf z%`>H%k%3Fm(yYI&^D^q<*n-~k_8f~T3>#wHWi2)ei8hP1Q7zRoQqkz=3brw~(rP)x z9YYmOg7kke(`dCGxAE*0TXQiw&W%;_KLBShl=lJcoZI~Cd(2Y6pA-8WsnOKiQaz_CTOHPOe3mH&NHKeeSFv(?kI!H z)Yj97hO9@f3Zu1HAdGnTdo;)meveG=5&|D1$1d-I!53Zxo!~7W(Mh=~7&q&`@gjb7 z;ZIIP{QDc?-+hEhoq~udD2E^h1aQ0!;|1*Px(vO6=kQn!gTT=+8!ZX6%L867!t@S! zAZCAy3EhMwGy)f_AOKGW7uJ!IotZ_h`|@&3s-BvK~=`o?)lw9kE(#Yx$n;^QDd4%}b%! zd5r(yC%X@Ra@c$CpK&_zry?M9M&Ps?oY;R^QmEvhy0ETwL(sO3A!$4)81@cc^qUe; zblyOw4nbT1fy_ro!RcEbW$j8-Z*9wLZEb7l<_Q?YvZDJWrcZX`8GQImF5QAHDv&R_ z?{|d9GfyhERjfVzCw1TP>)(Dl9FN_a_|y_)Zs3~HfhGao8grw3i)C*fzj=$If6af& zibxL64V*J$<*BHKbYXDQ=>m|YJ|YcKV}|3w?4!w1>d55fuPniH>%l9ZKWsq<(z#Sr zm?q$r#1r=&t|%@pE9d+B6`MYITuAVI?K&uiiI;CGY)j~nxHjj`TabH;&64JWM%9{7 z{`07wI|)7rJVI~HFtv?T{W_Q`mxe~Bsc=80bEEVQTM=gJ?$7Q73 zt^A~>rli=hwCX;p<6tpuOwYR&cKCa8&FhK-UoN??&v-2 zO^9-lnEX}lDj7`|301tMd!K(W@Ji+Dn64xzSW9}P{}*9xrt@>4wIWOq*=Le7Oi^9X zMlit%sfIP^MiURMr1{1kuvW`hJU7jnWpa!ob@v%QMr$6X-}>b2yM%9U?X2qH9`pzMFV_VJEh8N>j#1>~B6FtN$gl;{ zQkorSZ#6H#@Q~~$!Iaze^2Z*NV(?qPP-HFhTEzN*H%vz_^6>SqX7(_e`{{paxsC4i z^NSgB>A+qCGW)0+_}hO-Br*H%>N2F6qO3)FPcGdh4U@>2QxYvHoS)r4kF=Wd5i%F; z6-a|^!z{EYE{ZgsV!||;zQI7?s8W$qU4v@4x=LF^r2vaSQq-1~l-=N782EEh)+k+* zOP{%l%NYDeh$OcUS4C}2Y1!w*uYFDK_HAmb%>~uM{z7ElzyE&^-qXB*QFN1SCYkU! zGJT67jYJ53341ECcEzDcPRo2{drstvF=iboMToFWcm^^Uhg}u1#l`n~<4Y;n%3l2%v1=7!2DnxEhhZcvU#%8B9xpeLTP z*{s&$5^Gu6>1!2ArC8cqQ(9#!FDb6FDJT6MgiK2ylOWaX6DYl=brMM^PELM7#R@)fxvvX&35N4o95ct+e<^F?<}0Z z-P<=J$U~;Pw~3q1y~dg#4iOw9;D2ZX&ccv;-AHXBz$;A*wI)UbPFVYg^iQ?$HG&W% zPT-FQ^dvAfnZf@xW0T37x(k%aOhRNp2#86<6ao=%5Wf(A3W)!`oVAzK(|fa*cZl3y z9=*tN;ld^Bq@mF=e_ubj#iE4^7thljS6HmIw6OKqA1I9q5A?V22=TJ8wSTm*x3qAO zM)6nuE#8ubSa^E-c?9`bNPR3Ey?0wggnP@vEqrCth|uu2EiD}V{KGAxq_RK@{!`{1 z#OuTiUMI7N*~A=TE-{aoPgoKQh5$lN!gblHg*hJV89}sqgJ>fuXCAJaUi5-L^;eSNzCR~WUggdd1 z@E|;i{e&0cP52Oggg+5L1QNkS2q7gxi7-M&gcEWil28!QhP;vZmn~tdGnWw&OZ<<3 zH5g-%YVg!B#PGS1i&2MBzmOJ&37?Sx^Aid)iHVFWS_}5#nZ$Wrp%dg zW2)oSnyJ5=hnm-z|2b{vv~MNOlIxNev?qOKdcTijg9&*kCpChNqw#pIT6j2FsSct;Vp;EG27iwqs1YjVY-TExn3|dt zF9~jBE6_`_vYu^ii(-A5x?hE`jI4V@=o`fb1=q8c%uBMOk!@x0YS=Bt=Hw0dL};3- zan!&qjoBG3#A+!8SKcOWm9cRiNqIRb2!cenc7BE5+&7b58(b4xU)EgMrA7zT>gsHy zE-hgT>3^LIT7S>r4HoDD1%eL_={vwvMkzUb= zDv9xRV^e5*&qE*eeA5Lpa~V^JzG29@LV&m;p)ga8WEC4b!b*X-Y+hVYQcxwyWn1K^31G zB}r#Pjv$zLTbLP^wK+tR%m#FHupNahSvN8pk;dPr`lg3*Y*RLSfUYj7EMs_moYg=p ze-Iq+{jL`_^cr&V2jXTan-r75CMBUjKkr0;8WVGXfEn=i&o6&zK9S^5$7E+nD+B12 zwo9=PkAJ&qb+_l)QLw(wLM&d7r{jruD&B-Qf+?N`7LUKW*uw092(gvh_I<7%SMGmx z^5df?j&HL!PJjaFMW5taZ6=RfVqA9zWM7x#RE<8zLM@D#O^| zpa!;_X&O+5lCd)0$c=0%16d>`2jP|e`^-DgEr0e5+&l-p32rcnq(1w));@r#!5@j8 zy|ykvn1V<^BxUq<>smM6&f%^Ggc`w*TFBQLa&ZtOh6#&)dfmk>I>;Y^t*9;apg&qW zveb!zd@_oS>^#I)Hz1GhW6A9_2!8wlD8^>W+zqxHR{K3VjqZppUpjyF?xnR$km+&_ zoPW{11)$JQ{+jc361T|I$p}x+VLxn>z*12|Mz>=tI@(ayp>8k+b5R3(Bnd{NflUE0x_NmAoVJW#fEfQJn9dEIFMTl^PygpLLLF%mP71_D*AL zB?@NU&V?ZP(T`Q9X+AdEn7>H@m&C2%>VG5@uEqx0nZ3raQq;_zaB4w~E_S(obPT`U zu&Q)kvnZ4G4UpiaqWxuo$K+^7V5V!j1lx#0SYJFd6X{mx4N~##57l3kG3tEwOta*% z=tH*b!*W#i;c0cfehZ9gqJ}%55ggINWnRk)SS9WVXA_gOT&ex?!J(L#8?A?E`EadQZp8k>|Er9$zk3Ri1-*}9wGoo)sZ&@~^i z$&8=6N?A|W*HpCJd4qMsYqsF&i+{1n_cOr^m_t8RFs3X_g3T~V0Io2}5bkqE;;!Jv zKyO)4kWXt^`{9PRHiR!5{q36WIo&g}4B>f$SmX7P`+j+Fpm&R`BfmhMU4Y{3U1Jl{ zjgvB>)1oACWib`)FE4kM$W*K zgsG3f0+#ZAh{tTh6Zn9c%PF6cAne7{urV`;dY|gN-3%JR(nf0omXl4Xc&?C#zc5yb z+_-%5Z|;s4ku3q9<@;zXm^%+s43&c?KA!V?@6o1~W<)vovdSaq4q4uyLp)1(S4?&8 za9jS~`YpHmpWVEE^IFdiM}K{UM`*xZW5!3>RP70^tCsqc%jy>Qi>laKe?K-d3fbUl zh=8dgPd1hht=cN|bm(5JC&E*~ous-Ua~G*#BM#|&f{!r0qyuBfI2|PDRM0x03?5Mk z$B>jkM?qn`ZsY8ge_ese8Z#=C^BQu8=#&hF3hj>AnJlH(tU2>dEPn%M$(ky*3&;BCzOKPQzwte;;8Tg4cLodIkD!hezp0sOr#9acUk zOS|}cI;#Ze-h!7}n9f^;hlO}9RXnWONh7-K7*Ga`ay3h`tbc*ex8ZCo;{*XPo%~0m zP3LdrjIx++y*>?0;vvXR`{TEU+-B~A_{vH)cIA6}m!Mse%!YdH)l(6{Qz?bynAvHzS=n+BC3KBY32REIxXIV7vI|_kO}- z{oGX%o(Q&sN`Ex+d@UKEN)BXjl_;8(w^!!o9Xx>Ao4PA6(GO3owOzS>%e&GK4ty+S z^70N8R7+aq<&km0$zIF9+5ko{>G@+Y)bEPWaIZxP;BIdppEy&%MXZ|~t%l#o4%GpF zBqhVsvZCS{tiXQ?ljGUUC`mw}strLNChW=B@S$D9rhk!**#mK3f5zaoZDK4VK?W~{ zy3H-tz;TV>uofEm&8a}8i`+Pb$B}U|USIWmW;{w_qXcKyU9{Eve7c?u^B??jzw@db z6BSHMc78(RUobT?Ezv&?wfgNZ^PsWGo0!I%vE8qH!X9_=Xlq?H6TwCeS{7D`>g#lg z1V>*1>wk+MUxD|p1Ya?0xuno;*TN=k*rjyswoBARg3IU3#dV6dor%s_{(BKMmMDt# ztJ+J?U%zJAzKVb{1w#pl#MtDBV2NL;tS|vls)^Qa?8ZdN(%&3lGEDxh?`uR^TXaRA z+1-Q+;yr5Lp*N5z@oaVq6PL=CCNR{D#Kh99T7OoOn_ZfF5M|~ZmiN$4?%eKYs6}g9 zlUrh%QB84uZi(7BG`~)DkgljJZejRJ#8AB5-Q8)Y$Eov(x}JCO`0;ZWj=JtbKwvC( zU$bxa>@~-ZR~ELnSEKTVLiP^b4?=b+W6Jr#WpPPLQBncI-+(t?d1a`R=~zXAT)|)E zD}S#eyw3PvVWKKNMIn(_C6pKDs0&LGJcRwi!u*m0RgzaVj^JA@`01@xzg_k(q|>>I44M;bO;;7ow0CLdFZ> z4sqnqyN|8fE|>J3TlHwSN%L z;A+Lq5w%ijM1)jY8`0ccTdRi_E<+=@)eknjoHFkIQ0Q$QneyR)CAn-xnj*!8Z45!V zdAWJzl6pn8Odb&zXm`W)MgJEUzC+xSR*^nknqq~9-+8D`;?w~#hlHc z1^Cqa3KL<^$znx-l0LPoPQ2U$j**q)H!T+fuvbp5h;&|2|-ly`#-VWF!Mt& zxrV68YVO%T>|;>d{k^ag-r@0z*AZWaq0HR${H$!e1P+_SJa80#Si`ophO$a#v2K5Z zHpRZUN(fc8qOxK8&mP>ot|HghBd^Y0kgvu>z%=qHi~$RrBYaiA-y3Z*7=OoG-wIrI z^zHzc$$!wUvUqF%dWUx}mlM1dAkb!WT(&AC)4@Y8lg$BwsW*2++^*-o@>HG&($K~>~ zMY4g2Q;OPoLow7+9f3tVNY8X-STeH-yCwK0hopu~%OaCbEr#OEeB=5g8LOms=yk$S zEkQMGI~q`m0wdWVhRV~)jfNJbJ{g=lOf4$fdks70#vhQEc;~5%Q-AV{RmF5k>4DM% zOiupSkY9Y>SUnI%>gLdIoJtxccOPGGnw{^3ak}^9=~NF_qLBl|7#`Q_a8u*YWe@b zFkd^Y=z}iaB3h`wzy22W8y5)I#gK{(wezsytmSw-CLb*VgMV}9D!NY~JTYnYTXX4T zUv+sTlbe^9Um>ZFt`3t$#RLaduIKZ#IUkmjz!|OnOzgOG`*N#YpWOZSR`2a&&GM*n zL>aex6)M(ChG<`}7Ml1F@Z(7*9F1(o_Sil$6d%J!YeK;u>}s3fD6%OO+q3HvccLAM zVUdgI#j=_+34ct&S@zqHC4KCtMJLhalD6W9^u5kx$1C4A~TjE$!D>Tif4z`rY;Gw{BmvU8n~_Qw^B%rCS>R zyu(m{F61gmU1_99O-M*X-pia46`97dS&^AiiL5fMtbeLI|L}1%V6{**l74eXoZe0Y z8Ttg9$xkWg)`*{4KgJ@2<^PVSfOrJig24_Zkzjo1@l&3~?b>HE7rhP{zmw07+3e!e zg-inrbSYf#JjbuoV~ZLS^d$D(>;eT-9w;wF0PELhzeIJc=h4N|K1=>Ps&VF zNfhO=RrLjxMY#x?{@5tYJ(!(WAUQYiyZElp+)TM`?&*RcZD<| zLD77?yRx;Uq%xQ<-8%+!S3~)$O~;Q{H5C_Eg@3xgqS!iG-uHJ_KCHC6`rbnwZ<9mV zanR1r+y!!wt;BevmQc^e?KC!;$x~cB@%uSo@af5}x*7%tI*Ue<$jYIbd=WQAyxn=l z3TxY&kDuJsKDc+{z0JrJzJOB#j^VC}Pv!U@h^G}HiS9W}33eC8sdFNm>4v<@3N?e5 z!+*a2IN%j8GvjN;%~}s_HP6hbAGoTg;`VShF-gt_XQ7l#pBO27^88iyKyn>QXpz?_ zi;St?Zgf>?x+UMd{}7Kwc*Fm#TnxBRR<*Lyc82=1Hj<6-kl3=pRe>nDqB-^ueYO6^ zVSc~xi`dz1+d{Ms0&bI3|C8feT}FTm=6`F!P|JQzE#zXkapLNPqsw=H5N+p(4vDDG z1~Z+(2vB~3`>aOg<NZj9Mab+P8I;)H%0lKk{fwKblo(T#=Pk z8A$7z6bv>O#j>*2+WgY?LKJ*N6MKyY@MURmSPqI&XUDV+N`Ivt6e?Y*%0xBp?yQ2wE9EPE7yK6UM9K7|Jc!>V z@$m^*=(?lmz6@2Sr5A+_$}vYTMq#2gVNv^+r~glVsyzI?_(pKMw{Mu# zUs~bUgW`93E8 z&fi-9Ii!E?q@_;rsc5Gd$i@BGz{x4b(+$DvrQbh%L?0?oOv_`^($Z3+CE=A(jSbZm ztv$XM=3oi`GoEKiNno`0Ie(%agW#vHz=Q{|rJJ{}v-RrHM4_bm?D|qk-<31}`r`a1 zYh=p#{4raPOcAQM_*8x;|7{~w#b&W7lIXIS>e_;`l6(YT{$V35C|9!wBtx~qC)y|c z&*bG?+NjnDO$MZ-1TbqwubLa@VcLMwX%tjgkLr=|OvZe4BP3M^;(r2N*ev38yA#aB zm28b)KvrZ7vd`L{B&XkF&owZR49iEgDwaPaUp32CEE#E*Ji-~|+)sV)-2LKMzrOvE zeGQy7X2<)t^q2I*SnYl-6{7D)-EzIWxfS((*nIJVK$2dwLujBGGLOog}G)&(Ch!=CH$V;r{oE zPK7afc?J2^uV~JqAGh&^!PKvxJk{sd3_foAL8cASQW;!Ox43brL8Oo(oJ>*^FQ0vO z@7NJz>gmLOOTCvQhIk7?~SaDiOasfJ7c7LkvWBTD|dlzqT-nQA1 z!C}}zn4FTDrj+RD1fufb2}v0b_xl`m&@`&cIh~3d>2eN}!N1g2{v_4&j#Wb7Dz>8? zLEYaeFfJtLYQyhzcOPu-LX>Nux`wT!hZ>)zc%_cxV)OsNaZ?^}GL2a!*x@(8?sKrC zKI3wRIpoaYYJazrc@JNX-=%n8wU4jd(>l{DlDp<`)6A)TojN+ELrH4uOpfe8NuIX5)1G>EP#8$ z=24x7F(b*Ml>`xfD)cYrc@SMy$95F)a0%ZFTZd|%lz*?d5RF+8EJ=nXZLoxT${o~! zg>GA`MkOH99eXhLPkyA9;g;lpZVq0v&D2_HCug<$tk!1@wrEg)nu;Q1stu;G?o=K zvITT;J%8Jo$K2+sg+)y|Y197&XElOyaQPlw47ogRrnohnjYe2RMu+n%sbi~{9&!&p zE6gI(8{dwA8Xl=jb830X@|?QxnA{ZOnBq!a?tiYF^4eVH3iJzG^~Tb}jad`eBUm|sUzbzVYe>@T9fSJ37bJ3VJ!XCWoA=tnkO7ibKejWCY z_eqUb1?fVpD!E2gWeFi$n;B1fCddW|3mE8YKnxSAyvaqEg;by02+iN+c^N=?SFCgU_?wc`$#=c{$Eyz1P1 z6O+!G?A!u%mHOa?j)NxSx!TG9B?kU~tIC%`lOWa<0XdNoC6^K+0U01u|9$^;002Z- z3O5R6Ze(+Ga%Ev{3T19&Z(?c+GB7cdfucH>g(3kGe+yU>SK6K!Cf+DkG~F^|XX2$+ zs~}!}SMBz%Rw>>^0j-xRw{S5KkPrw$NXT`PlT2P?#ey^*dcB`&yx7*fw z*=n`V_TSz1ch97Ur~f|zyKQ~i-EQ(^GSAGMne)Bp{oe2WMu3HdVFH2R#Z~dk)+R5W zvV6swfBd{u`SjT6B}J*ZIq9KuE4eY;OCX%$D2$^8965-S2)VIg)V-y`wEqhqgeHay zyTil!HlxF1@U7nj@s}`6U>*_L_Kt+Z!pHG@ku$<4gbthye;FG*2oqoZ#9V+*i1v3P7Lwj5i5C19(u zL@XIwi*3NRV5wL(mV@PDd6-hjW66JBf5Ki0p&EwO2qFcAg8v!h7ixrGgk22#7MJ6k zsC4ks!NDPIL&Jt94}CCf-Y|A}eE7KVzdd&#Vp7DV5%TA!_C-b90s*)oz-=lKTns)Z z3@&aE@6dy?b&RLQLZt*nxZi4J%g8dbL2IPZ-M-r?Z={&BEm2ylwGO&EzomB@$Y;Ux-9idF+unrgsOo!xBL{sYWD z(p3!_XtW5L#7HWFE8)j@#BpUH7#$G6SMLjhr-QGHZ4R5uK>(|_k^%;x(^AV9;MY@D z*R3Z}8j>L;(x5s2m;fob4hrDbe-qwHU@{tjo}tm}Z=;dR=8(Uhc^;0t+zh9G3TBc#Q7&NJF4k*v z(U9U!;rpxHwhr#?35T~)Vg-la6ESnx3P9FAgYY4o~g828ETRq*I2by6`}QlniF!v@0`MAx_^3NY2TY(?G#1As7R~U>u+222ipZc&Y&KIBF?Ka$R`4$K$y| zHdTQJpTTaRrD;q?dK#NS8Y`Zq=1OG2QLE?@H2w#Jp5?O-uyj`sd$7BQIY_#B5%_LO z4q$iG(C@=$e;l@omY|*gau6MXuEJI41^1v!2=Bm+V!O-bcM#P&P)4D3q7np{s1;PwIF9zdj%56)F}oow=g#_CF7 zrqffIw6qj9jWlQm)_mVyJ~&H-l^2>ZeLeVAy-vTFe=OF4QmxzKrn?WZJw1n+Zqm&Q zBmcZ_`!n##lSnxF{PA~3eaKIDAO|aerQA%(^#xN_lX|tSwPi=gj!yb2d;|CHwR;+g zccsml(K%?cDWp_8Z1x%l)lt>*=mP2UnTixzxj{we&B>gEtEFab36Zfo?abp2_^N{% zC28fdf5lDZ{ydp1SEj5h-rL?DXs04l2Liv$T@(hxpjFIg0;91qDg!k`mV$<$SUwki zpe19t9$rga-cLxcsNTn8q2;mIyoq@yEtO6G1qh1dq-);wnT5^Ze?Q_xG(4c@n zjK=m|d6t8n2idN!9;Wjt2X8$^G?ZMAf-}S(vr|XqZe?V$95$CU@epaNtX1?Gi>IWR zf6!SB7CnUq^({lIxO%+KXtfoSXyiX5ai0Tv02ro{MlbfYs*^G+-udN`h`DMg>wAos zJ8hO4(&w->I%z23dh4#9XZPBo*lJrn9Ua=h+?@c7eE^-{m4FzarOof8ZZtHW43I5A zt}SC!<}!LdI*VJ3Rue;LJ>@&A>)nlRsvFL7`dv*AN-L#V&7c6 zVhb9sPNyq!7+o>3Wlz?LNBiJpCl&FfvL!gDSpX+J;G}nj!M$997|wb5FDMeFf1-3$ ziOSKG#}YUOZi1Om360e3L*kiPC~9pig@j9IB+Msc6K})e$7-PD28^H|pMCg;`{bW) zu0q7qs@Pxct8WN77YvBMNVq=hyV5=3%8F0n^H2=O!B?obgW?qB1lcMoN&fcc4P-`U z;O40oC~QAR_jaCWJ4l|~vn7GU^Z$z;d z+Hg2c1S28&cQ}-u*(xq6pDf)%Wn`~cts+sR=o)Or4^+892YF9)iM3|=bvw*Kx70*<-J4Tc7oLeglnZLoXf_)GFuN=1b8|hj z;|Me+p>HrUpcG22=8Xhla4;?(9Q+9!cb|fT;F17L`Ues5C0hIVPt9bsx$ zVc#8LaG6!?HaU%Yi_u`Af8vVP=Vy{RirR-38qU25pM$GlJn>Up*uUT7Zld(-EOIrG z)RcJv4(Wl(fU4q@;+b2J4gJ^4RJ+A^YayAGx@Kb;Yp|Q>MIA-AZxUCV;gk>HVCqrt z-FI)1pI@AZhSR95Z-ZE)kZEP4HVrgyQPz=*s9pJZB%UAwv8PpUz|$CwryLLimi$(w%zsj>5D$6FZ%wyT4Ss|_I%fz z&qN-Qbkvh1qfz^G#m7m0r zDLn^8Wc)IZiv63mZzhuiwDwTvWKr*qwypDfv*@`iRmh^mcZ!CvXklqK#-lVXnTn^?Jg_ zOz`<SRySIMHPvw0VNOwV2HRK&CeV}QK zTv;|uX8}HfYCU;$wTaAKcLWKTZRkn5bs~z|hKqh)SOxu1ZST9`#Xgy=t#}F9tw*~f4p(&2) z_(**XKQ|p3y>-KZzWUKeb`h3##U}VPM5yQ~69k+d|9^%`O`arrbo=E8E^dXFJMD+N zbl2b34HdX&ck00|9eQdhww7alOZ#Oz_Zfz?aA+GJC>MmfKR4&$PR46J%QdeURLsBF z&xTVfq0VXWt@qtbj(;_%D){0=kn1tX1WWRm9R|ImBG6n9u={`DHh{4&w~J)^BKyPV z3|t~D*a~vKa41t{h4R@1Zc4M;dum{6VBT(<=cPZL1<^!Q+>I85mEpB!Oq$!6_)ET| z_hw(DZt3#F2Mq7EJckgewRTm@)!3a*tGD7r4kl`Ga&l(qr8ZsWZ>?V3%>xINAJ75L zGF$L%22ekNWC*xk^iS-#-PCJH?y_W`F~k>T4lyRdZ`an{&4*zdVY%maqIDag0&Sb- zt_`7zhPpp26HXZxGLOp2F|^#iDL>PC|G{)=ypWP~91Zzv+f+KPJuj8DhARacmq?1) zdaVsCy^l`#G-;usg= z8odY}tf|GpRnzE9Z>0)Lh$OJ|9jjSVP}ig3=n=whW~a)p=p7!uV4`#)t$RHAeYN=c zql68IC;e;*eE%u#tZi9oza%&BwQbXkD+5*)H^W**`J1$cMUZ>si)4p$*sl#(dEN;~nfCbbt^2bBhkRLa__+Cio7tFX3kSsA z#vmzReF{;C&6xf_V)*MnHT)mORH~pTI7(^*3pnL}L8SmTR<8fXjZW6|)tk6Qmrqsid@d!o*8Wy>!xk{xDPX=2#cVB&G7vOuMQ*bNuDsFvo= z>htN7X`AyVhtxa)xAo@5m&(_viwPn=^qID0qF(Y`^69Q={>$5d+)LLOgxi||Gk|rq zNxsuyv&~{6dMA_fxT(Ww{%yOx_T-02aq;~C+kjgq8Vne^Rl2Y@OiU^BaJ1^LnF*O` z)Z*n8yraEdoR2@`xpBq~`-ak6hm>MM2Xfb2wSuaGRQlLzADDyY4TeecmLD-6=1Ix* z9aidERWi0wT-t_ka7YGiGNrA!yTBqY`mKu7Rj}|e-%oFj$ko0P@{`{qLtf#FBdmDA zY4Rd+p;Pn*v6dF6O>#{#gOtN89o&>E%}LTM|GK0k>}QIPVqJsNq~yC2Sxyl^F;BKi z6y;ilv?$}4Ou zjVtgg(OSfqp_7AuO_@xi>&;hO>>yjve81_&Ru3+j;?>1!aks#($8^Wp4||yS)>Fp} z7u0*vFQO+&dsvvT2@C-SX#h?qldr7DtZDctV?26J@4emq&8^Fr=+S|gnHkTjSy~FVHzghG1Qmdx;QoOM- zh?-n*Fm6z}pU2;E#Bpg!CPywx6Q{Kj`R7gO_@yil4lGKct=8aA`v65RG5F|==a?D)xDH|ydzn=XaWyxp_;sF`nudg&c8pL~=HNH$gxJFSRUc-X zOq*D7O*!C0aQ?T)1AswAWqFz8#v!3~y)GInm~sZ;^qOn=SX;|QzEI0xd2v%4i(kZN z&?A%QnxtqpvuSALw}!lw(4-K+tiXgd78Z6pn0j)2#_eswKNGBv805`Ao3RcbbsDg!ao}s_hiTj*y ztPcfMX}_MpTL@kh;sNvHN`F7z?2g+uyy&VQw^ZLxG5xz4>^D;X2WM+x2D5GSAlC>) z`C+`I-MDh~ z>SVInoyu1|S2BOyS>l?JZ)QU)U^l^dP9`Y0kGnK_H+|B+u7zV5v+G*S;X6zIobFkn z!tdCbCnI9S&I5(DRbBBZ{6~jGH>_g_~w%;=pPB&ud80eGn}|)fM?{0%80S=v+;VH*&9r3 zjd#UL%-(jv-Cm!SAN7%`*psO!D*n{R@+)$@u>cu6IS1PQ$P-}6wp^ia%K*%_$ z#QOKGp}-I!JI^?_!A_+0S{G=zX6*glV#xDLGO_<0> z5JtkqE6#m%^G0^Z*FB3!BZyF!hQXPvG%IFu3Qjy;zRXO%esZ(zFqPEzd}yVewVjUb zYLYODyamR^i)tpftfcR2*R7H3G zBZG(lbSaRQzp40%v^W*9d6Qx%kg6cw0h6wjx+NW7ANAceAb6s-R!>44UAhUS>AZkIR#8Th$zrDcI%$vJ@4LKumFek~`SB zau>9wJO=qs547UN%hn7lU{?{*8*@sAqFppsDU*qFB_M2#bS*{82fa4Y2k< z(666A5rg6@*M12Br8RB`=M_cq=k>K~_{@S>V}CpcOhDapWnvH?_Xwrug< z=t8DM_ltT*$WIol)GASfWDc{@3N3;cQ1L}no#4(`vJvYw+i@D5`LQ+4YpUwtLm^qr zuRUwu6SU@moFy@R!H;9G*pz|G@$R!YabkRj&Pepuy4n77Uwt>)U3IklZ96KxC$eii z64fgbyoPD|m3NS^2)jInL}Dmi1)Pt1<(Y}gHK&Bq$~$ZzFWdo z*eI2;u}gcSc(%MnIJex$tv557sok!7FR>MPlU)1&B!ixWflBVL3W(XSFJ!W|DNAn> z>iNgqI8J}>%4K`GF>Pc;T%^qnk`~H_Q)D|N@12U)yUOZd%U5||oMqhzngI{u1=)Vt^?~Aclv*cs^u1KUJTGC{PLXk6-oR@cw>oqWE z|2A(?v$DZ=vHlIUVr@V}Ugjcb@>6u2<6B>getn&2x@S8uSz|T?3OW4TeBe6n{ z6hpS4@Q~-xAJo>Ag@+w_w4N)Sv?6m??E{!_K)73g|J1>pb$yo5WoXmb5rGq~wxgqo zsl5c-ip9D+ak7r1kgDP!26mYfGFnjX4&vT?4s4Z9iPJYQ5D%9UuHb9MNi>s$!dBwT z#sM=-=(6``zwh^2BXkReCio2jLG?Y7G8@jSADV(JrP~)TOEF?l0`z0j`bkMQO~10t zfCeQ!Y47WG@X#KHW`j&K>BWmuvFbLwz5cc$(qsJ7m?J9$seO*oeLWrFyPo)DIfuU$*+(Q(Fez38gC(7CojEw^UOC+Xs8qg8e5W`P+**`ZhB63* zVd@J)!hbh^Pg0Gp+$IittJ>zLR4px?yD)gexjsl+yoBS=G@)zmEY2*sF zfSMp4j0jw)0}^(&4q9Rx9er0D>#48`M%o}U$Qh10&I&b*q#vh+SR7Rk5AS{uY+9Om zEF6W3G>;kuKn*SQ(}qlPrQw;cCf)JhVIFS|0n7DI9qr0*3+#;<^~bu4 zVg9DeQR(7;!)zK)^At1)tw#p7Y+q_Do)0E7q(7;YJPh8 zaU7mZ4q`4ghC{pCpyX?JpLBqxM`0}hJ=D{#RPWC!4IhW7I)?frEska6(Y2S4kDzZ4 z&m+vP!A(!v_T}8%lbZ0<0Rk#dp_#h3K@Qy{?XQR1$!5g$k)@Ic<8tOqrZMr%P5kac zA3EM>8zsG(Z>{pqs~c?`DUZmj+uLG8INbEOhuFc#|Dl`2cnb; zSQzX^p(P48F~7(D2@M376)%JRvodE$lz*18S$*Epv;qYyDx2RTaugCRj?O^|5eWjt zhkDICA$#qfEXs0i_uI!{^$v0+Ia;u$LkBhKd`B57|Hy~-gpy#=hK_iaPU&>O9k~dM z|5j0NP^@mPTVxd`5tXQffD1s{{G4C&sQ8Om{7%5{x2#hsq%_7E`tRImr@1u4%h)PP z+aLD8FY64D<9KQZ2c{VfZil)`Qmxj)gCI?13vYkl&Dc`6K z*M?)@l&NnMXZ7$dk2bl;tGcD1xoLKOdE6X($EqUr1&b*VUAAhOiuDt!<$8epRE+k| za+$1hz6fsc%!RrE7cH>$NJzUWqHq4ZKBfUrohY*mY5=sSX6&5lFRATQJ#P7iJ4`HG z+pCx)Zg;kSGNYI1X2@wYn18w&Ul#UUnelSj!weU=_|fFZVK)+(v9@4DA0xZJ?#qzo zWV3`8qI%o7)^OWyBzlsqlSo?85Bze!sRA5im}(qWG!JuE;e7i6!Ua@2U9v|*Pn=JE>mstM0G8NiZ1#O43` z`lZ^6g2Vo&)R8=ON(x*8fsIMR+Qrq4n1!8je5 zb-Jwg{*wBi?m&1y=?fiUVsEl=N2z#Uw!lT?l zGiXr{!GrnMOkX5WG`ZFN3j(P3#KP*h<^^OdDSaWcLR0{^+!9r;H{SEs5?+(+7hQt?_{&awqnw zfH9@vtw|E45w9$)il)wlvU7u?m|bRUjNlh4siDqrVOe2EW*gWz96*TF_!X(#v4j@j zt4HHw6{JwOSOi~Vs7Y*qArvhvOq3{5@f_t(s}xb6j1Vd{bazUOnnuJRc11iJQIXki zMiqU=;i;Uf%L$0%UvVJAP>^h5+1pEvy1qeB4*yAW6OsHuIwuJMG4SanFJ=N3flj7G z`m!xoY`dmwTq0e|41M^kGXp)JC!g~P%^vz}J{){Nb}k83hk`c}z?R09QTEOuuG<#N z;_mn5zik4yga*XviEqXj)uibLi;sxyZ1S#_q$=N#}7hpw>ZHIvk%{c@RpetLeL>6y@#1g2jASOR(Bahg|v= zbS`iQ#xx>L&XOYzOlM}rkzUYHiIj4e8*Q7Vu$fc$p?1S7u(5tvPyJ|6eIw@-7f+*A z%OKl^)(pIg@uWdw-L4B8fo3P>jr9BUKOBwcQa|kX;!pSddQ z59Kg>`ZmLJ&OZPd`N)gRd?tTb+Nk)x{#;5RnZ+cYrM=At4rY3v>f>QNvZW_K5OW-RNm;P#|*=gK9mw~9% zH7Vs>P2ZLUWSOFHGln-H{#q@d&&VG`? zu3;WEZnCdshJ3|TzlXxZdA>gpEIDdc8T6w)7>Yh0n9(&^-pa^EEY?7H$!~&r!>#+y z=qY?2pJN&qr!QKeBDsO>l+rt-L>hR6R)djgJL_Dq2EC)hcC0e3IB#QtVV?IwpMmvo; zF5_z~D$Vg4h-G!hkMzd(@7Kq;GxhDH%fdpIG|+79WfjE$bXe%i*S(1o8<+N<(_V%? zf2+WI!kn;480SUE;g??5G2_896?X_0oAA|v+h`Zo?lT0ckg3<_dv!}67GaZ~sC+1v zHS8r$6ew7>8*>S^r(QZ`=EVVl^q52bJpM3z%WSIOs`LL^82koI7;=l%II?;ERviCk z)0Vfa%JYT-H&CPs;acok_x8Ujx;4FD?sD}(Obz&njC{Lu*K&Vb5BQ5`S7psav$_C) z=*o}gOwl=u#0t89xzEbatd+-?#mv!Cs#=4dS1|PH`^RtwO({&vtx}EyvMnoT*>nL^I7Mu%}V4X zqxrs^H@Pb+l`Q5iR9GPFr}P(6Y0<<=$do@Y&O63yoB5X6S?Y!TuZQoqQ+xBJt02ay z$>DZ$8ipzYn^H9j#)4jy4KkSg6HSHao*LeGgYLKI>(zKgUdwo*tS+y&P1jaHrYv17 z4@#SM;|nMUFLO(6r|{H1EHkYFC$^2SE#%~Psydq|C9#Yd{i?zt`5MH~+NXu^!b?k) zd(2DAOV7WuJuZknMt<~{yzMBf$InGZEyXcnRglQ$dnl4#wJWDUnx20fVQuaF4-ix< zSTiGm=RzV@$-CDezq9H6TD=Nj&onhzWLsYYB)M0O96cZT8N4UYv}ZMoZT>pMOY4&H zop0EmhodvKE^2?L_u|DhG>9o#^!_}lz}LK;nsmEif?*8_D(OY00^(8&hP&X&Vt?Z) zP`9TmNZC#hpOHYVa*EAMsW_QF=>EkvM6$#*=BJe->vdIiX^!)8`Isk?txMnNo~j}l;j;KhJ2>)dsRE!~K7@+9MQ(~&cD4|HIMxmy z7M{-fEeW8FN}jYWdxOf7Ys`?^C2!J@E4@qNp3hJ%@yPD46ZK;kM*V(He*8_FZt%8< zH%EfSBip=I){1o-^_v4GKR(jpJG?RDo~wL)&G-dzt0YED1@|pJKUj!Bw`Xr@(?i~z z+<(Qczr|V>?o`n={+XM9@pF4FOAYprZ+T$q{m>|qzaFsF-TinPTvT@)wI611>1?x~ z9I;17?J_^LFGe{T+--5iYpwofzEIstAzM1E-%FD&mT%>LY99iGXiTgJxHfSV>rc_G z$S+C#+PmS*^>bA6lp0EDu)kT7NgimqF;L}+@l=`o+jvJRKH#G>B6(YR@)~`zD+*&9 z>LkL9g(Jk#{~i z?}>jPt;euDCM<2-mCU8HDQ^`kD$NyalAm*u9zFT*Hzv2Zo=4yB2A?|v>?>?2mM!m% z)(&70d1APQk<@QheXm;2-%OKwH_)jnMk1=NS$;1|*BApW9 zHt7{H+2nh9Beg~z7&pe;$Kd|XVf`Ub+^f!!_`L3_~Z+*o=4TY_n)7TXai6x=3sV<+Znd@XCJl?>|wbQ;(sdz|f~YYE!n3 zB`4yQ&j7xxUrn(ID#0B-}_lIi7v<(y4I!H?q{Kh#5Sd#&Ig~a!wF1~di!{j+r0nj!6a-##1Om|m3vurJ&1%+FqcvMw~{Ef5Wjd94EN%_&=M#K({ zOX=kb#10#2uG2A#WBaAV$&425c}CkcbNS9H>r&6Ly|bJf?nV+twk{@#X`8dOZ|Pkz zrTBo5E^kCPX=eVIwWrLbehz5M+jgr6=&JG!{VEXgP|{vF9LuZGm1mmk}l^$m2T7iFni&12iZ}d=-_jniG#tLhQChwJU;xxTIabjIJb6;;@ll_Fj zf^)J{@;95nJ*Yk`uzM=nhWkV)>n+)1nt=Sy`MT?3w&`S=YF-?db!=7sS8`(b$_y|T zc=Fq_nzt60hpi!Ra{sRJ`QEbP?I*ybLaINnHCBLEY`?K0U^PB&s7N)49Ae{hw|o^p zJ9)MHQoEZg870=#^vN$cb%HHFLiO(L?skK`(I85Tjb$GD+L-{L?>dfZyVg2XT!(=3 zEw584O57SWOh=E`oxHJE8u+If#sVYEnro=CxjuDU1>VW2vn8_M$=QTXre8IaWEr(- z-C|<}3Ogm*a;~Ll%%-E<%uPEE^{`wX_;EwdpEoF^{?I)gVr)%Is7k$?ob-)i3mh>i z2gZ9gb8x@-F{l?%B%fzs`*u@+wU4*^vECltg)VoI@FKr9(r)_uJUr~L?g70*fHPiiL>03KufWD(KT)cqOtY|OKE(@fWfY?HKF9b%qyRG%$ZcddYAMM$D@ zTJ&w@q7eO(mnw6d$DDW0t;}PD>0Y(x-FY$J;*e60r#llIc;wOiiiyKe6NItr=N`Mx zp^jD9!C54de2TCiG_0)L4r^5}!J)&=d$LFh;h(F?0mOW&S0X#ExEvnIzJciKuk6&AqS3390fd=}+ z^m$l!Xg)o7O0C*^utE_t&`&{l`B+NkB`GWS8Mbi}VHLiZTEI5E7^6NWNs+5)d^SM} z_BgWPEZPbS3G;4VhaCh8StO)Y$Y#h9lxgY^e{NVEPtlZcp>w&ZF$|YP=LY&=px!oB zY`#|WFu7Q;IXS<+Kf-g_4F7pxlMr<66|BT|oUty$@JDB%yGrPWQ3CIe7_(F760(CG9Avvsd@=KO6 zw}s2{M^cX2bc%Fak(;w=?L--BL>PWSE%1|(nB;2EK-e(a1QB&S#+>*-I78%<`l|#B zUCQ-9qBvQbN&TZF|83QyesN0w@T)scNz$JV+8;o^Qx>tJLTBk|nI`F)jt|1Qp80cI zf>+EW3cS?tBa=~lpIm6P5dHv}L>|X)CPm&8Q9l%%->|t6s9)gT%3+dAafB`0WkNes z_)aE|y5$5M2W|}&?iCn2ySbD{3_xY?+N0sv1glaN|H7u>!-t4FuAfRP`c|gAD5)m$ zrbaLxDgGkDfWQB}lqpxx`?(<~uv3<5*PbWHf}8biME3Z`7C){krIKb)Sq( z4HSDkgT1obc+B2`(`ip!LsLI}MWeR&=m`7_g&)$uvYI!T|GH$`j-5FXIcwb?=r(4c ziaKhzWONhUJP@&PqIPm9r&*e7yUj%@rAm&brWhI?`E^35q=i=e?aq{*`ke!G_XW*9 zV1hBBu_%*fs4|T+l$liAHK3!wn~;@a5&P}jZ&SbSs1%En>FzPjrFovv9Javk`;ovP0o@>{=eaGA&?9*Xi2~E?F zSZUau;~@~!Ti%Ssc1t)Q?0tJ)osa~8Ke_QE8(g_@hIfaTmk#&JCWSwgZz^eV$aLUw zEO9Zv+o`jY020wchlLEJFW@{{K!8qx?)f8*0Oxs|#uRlsy`@UeInu_dkpKH>-b$kQ*gE;oU_Bt*M(Vr^Sg6erT?a z`S-p;ZiMmBNhI{M)=lRAh_5InKmIt5Pon}^Z|sEmp2N9`yuvY?c$*P$z)nk;5;V+g z%dvMEwy`dPf26d>xg7zm*n5JvJdA53O6LPV5~c|>EfTn;?y6TEet<5LXCOX9`)j_* z{xt2<@D+6A?2iKi+VDR?(@v4K7jh6tNZ5RJsK^Ps^AoH6iKe<#2Kd1Xo60XrEN@6G zn8tUXV1$;ifBw&oGSyNP91)x|71scqQG<Xj6RYe5H9=$%4c2-fl zAXOm^{i*9f#j7BL)lMN^(=JgK3Df>fa(tFV`Y`5t1e@vKCf;-eyUTclZ^ZWF%j)~o z-lS#E?Rs{0_Gb1sR28tcEvfOZ?QW#vBQS`O&7 z9*d0j4<#QjG;-M!oqc*Vv^pR&XO|ukp-vlRKR!T4t6tvnd$f?YdD>1pa8&KY#!fr( zp7#Er#cU5Yd1R}Fejtgq+CbN(PNZ01I7N@Yc<#DCWw?z{b6Z9)xYCKEroZ@T*iSEd zVkZ8y4$Qv||F#aLb%$~zP+ThpuO33S9$~_nPGj3*BRIAVuXPV;0|an*!Pq)8E$uk- zhm@*!WIYzoz0Wt7j&Y=&t>K;GzU;0opRIjPx)X2nYW>AUT5Ggd2KhA!R^G7MZJyj2 zp5D^d8fvwccY*4A%5EOw@70q%idn|MfJ$a2bYi=t0UsC3Cs~pRGcB>uvHcdA3 zGjc5bmyZ+f2^O;+muMc Date: Sun, 23 Feb 2025 22:53:49 +0100 Subject: [PATCH 08/80] started the next changelog entry --- changelog.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/changelog.md b/changelog.md index 54df5d9..896c93c 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,11 @@ # Changelog +### 2.7.1 -> 3.0.0 [breaking] + +#### Changes to the `.janno` file + +- Made the `Collection_ID` column a list column that allows multiple entries separated by `;`. + ### 2.7.0 -> 2.7.1 [not breaking] Only changes to the definition of the Sequencing Source File (`.ssf`): From b02650383715d4372b832722c303cf9322f73e78 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Sun, 23 Feb 2025 23:16:55 +0100 Subject: [PATCH 09/80] changelog --- changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.md b/changelog.md index 896c93c..646b71f 100644 --- a/changelog.md +++ b/changelog.md @@ -4,6 +4,7 @@ #### Changes to the `.janno` file +- Adjusted the definition of the `Group_Name` column. The role of population labels as general analysis labels was emphasised, and the original recommendation for the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 toned down. - Made the `Collection_ID` column a list column that allows multiple entries separated by `;`. ### 2.7.0 -> 2.7.1 [not breaking] From 2acc9d3a6e2bf629851abd73dd022a1c1ec3062a Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Mon, 24 Feb 2025 10:39:37 +0100 Subject: [PATCH 10/80] added missing pipe to table --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 90d5230..7b01ffd 100644 --- a/README.md +++ b/README.md @@ -121,7 +121,7 @@ Packages SHOULD start at `packageVersion` `0.1.0`. Genotype data in Poseidon packages is stored either in (binary) PLINK, EIGENSTRAT or Variant Call Format (VCF). -| | PLINK (binary) | EIGENSTRAT | VCF +| | PLINK (binary) | EIGENSTRAT | VCF | |---|---|---|---| | genotype file | [`.bed` (binary biallelic genotype table) or `.bed.gz`](https://www.cog-genomics.org/plink/1.9/formats#bed) | [`.geno` (genotype file) or `.geno.gz`](https://github.com/DReichLab/EIG/blob/fb4fb59065055d3622e0f97f0149588eae630a3e/CONVERTF/README#L67) | [`.vcf` or `.vcf.gz`](https://samtools.github.io/hts-specs/VCFv4.2.pdf) | | SNP file | [`.bim` (extended MAP file) or `.bim.gz`](https://www.cog-genomics.org/plink/1.9/formats#bim) | [`.snp` (snp file) or `.snp.gz`](https://github.com/DReichLab/EIG/blob/fb4fb59065055d3622e0f97f0149588eae630a3e/CONVERTF/README#L67) | | From d4e9a4bfb6d4f9bfba973b43fb2a6f77d5dc01b0 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Mon, 24 Feb 2025 10:55:08 +0100 Subject: [PATCH 11/80] added Custodian_Institution column --- janno_columns.tsv | 1 + 1 file changed, 1 insertion(+) diff --git a/janno_columns.tsv b/janno_columns.tsv index b87f712..3c121c6 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -8,6 +8,7 @@ Relation_Degree relationship degree for relatives mentioned in Related_To, multi Relation_Type relationship type for relatives mentioned in Related_To (e.g. sister_of, child_of, nephew_of), multiple values separated by ; in the same order as Related_To in case of multiple relations String TRUE FALSE FALSE FALSE FALSE Relation_Note arbitrary comments about the genetic relationships of the sampled individual String FALSE FALSE FALSE FALSE FALSE Collection_ID alternative sample identifiers shared by the provider/owner of the sample (e.g. grave 40 skeleton 2), multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE +Custodian_Institution institution that curated the sampled remains at the time of sampling, with name, city and country, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE Country present-day political country of origin for the sample String FALSE FALSE FALSE FALSE FALSE Country_ISO present-day political country expressed in ISO 3166-1 alpha-2 country codes String FALSE FALSE FALSE FALSE FALSE Location unspecified location information for the sample, e.g. administrative or topographic region or mountains/rivers/lakes/cities nearby String FALSE FALSE FALSE FALSE FALSE From bb950598c072021a71b0372d3e595625be9fe435 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Mon, 24 Feb 2025 11:37:01 +0100 Subject: [PATCH 12/80] added two columns for chromosomal anomalies --- janno_columns.tsv | 2 ++ 1 file changed, 2 insertions(+) diff --git a/janno_columns.tsv b/janno_columns.tsv index b87f712..c42bc7b 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -22,6 +22,8 @@ Date_BC_AD_Start lower (older) bound for the age of the sample in years BC/AD, n Date_BC_AD_Median median age of the sample in years BC/AD, for C14-dated samples median, for contextually dated samples simple mid-point of the archaeological intervals, 2000 for modern samples Integer FALSE FALSE TRUE -Inf 2050 FALSE FALSE Date_BC_AD_Stop upper (more recent) bound for the age of the sample in years BC/AD, counter point to Date_BC_AD_Start Integer FALSE FALSE TRUE -Inf 2050 FALSE FALSE Date_Note arbitrary comments about the dating information for the sample String FALSE FALSE FALSE FALSE FALSE +Chromosomal_Anomalies genetic anomalies on the chromosome level detected for the sample, so extra, missing or irregual portions of chromosomal DNA, including gonosomal and autosomal aneuploidies, multiple entries separated by ; String TRUE TRUE FALSE X;XX;XXX;XXXX;XXXXX;XY;XXY;XXXY;XXXXY;XYY;XXYY;XYYY;XYYYY;Trisomy8;Trisomy9;Trisomy13;Trisomy18;Trisomy21;Trisomy22;Other FALSE FALSE +Chromosomal_Anomalies_Note arbitrary comments about the observed chromosomal anomalies, specifically if Chromosomal_Anomalies is set to “Other” String FALSE FALSE FALSE FALSE FALSE MT_Haplogroup mitochondrial haplogroup derived for the sample as specified on phylotree.org and as reported by the Haplofind or Haplogrep software tools String FALSE FALSE FALSE FALSE FALSE Y_Haplogroup Y-chromosome haplogroup derived for the sample following a syntax with the main branch + the most terminal derived Y-SNP (e.g. R1b-P312) String FALSE FALSE FALSE FALSE FALSE Source_Tissue skeletal element, tissue or other material sampled, the specific bone should be reported after an underscore (e.g. bone_phalanx), multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE From d98daa19d29bf61b6f4fa809216a1bc26a6aff75 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Fri, 7 Mar 2025 15:13:54 +0100 Subject: [PATCH 13/80] Update janno_columns.tsv --- janno_columns.tsv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index c42bc7b..0be2197 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -22,7 +22,7 @@ Date_BC_AD_Start lower (older) bound for the age of the sample in years BC/AD, n Date_BC_AD_Median median age of the sample in years BC/AD, for C14-dated samples median, for contextually dated samples simple mid-point of the archaeological intervals, 2000 for modern samples Integer FALSE FALSE TRUE -Inf 2050 FALSE FALSE Date_BC_AD_Stop upper (more recent) bound for the age of the sample in years BC/AD, counter point to Date_BC_AD_Start Integer FALSE FALSE TRUE -Inf 2050 FALSE FALSE Date_Note arbitrary comments about the dating information for the sample String FALSE FALSE FALSE FALSE FALSE -Chromosomal_Anomalies genetic anomalies on the chromosome level detected for the sample, so extra, missing or irregual portions of chromosomal DNA, including gonosomal and autosomal aneuploidies, multiple entries separated by ; String TRUE TRUE FALSE X;XX;XXX;XXXX;XXXXX;XY;XXY;XXXY;XXXXY;XYY;XXYY;XYYY;XYYYY;Trisomy8;Trisomy9;Trisomy13;Trisomy18;Trisomy21;Trisomy22;Other FALSE FALSE +Chromosomal_Anomalies genetic anomalies on the chromosome level detected for the sample, so extra, missing or irregual portions of chromosomal DNA, including gonosomal and autosomal aneuploidies, multiple entries separated by ; Suggestions include XXY, XYY, XXX, X0, Trisomy21, Trisomy18 String TRUE FALSE FALSE FALSE FALSE Chromosomal_Anomalies_Note arbitrary comments about the observed chromosomal anomalies, specifically if Chromosomal_Anomalies is set to “Other” String FALSE FALSE FALSE FALSE FALSE MT_Haplogroup mitochondrial haplogroup derived for the sample as specified on phylotree.org and as reported by the Haplofind or Haplogrep software tools String FALSE FALSE FALSE FALSE FALSE Y_Haplogroup Y-chromosome haplogroup derived for the sample following a syntax with the main branch + the most terminal derived Y-SNP (e.g. R1b-P312) String FALSE FALSE FALSE FALSE FALSE From 04c1d36a3fceb99d7c9364a68ae28c4aeabc0ac9 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Fri, 7 Mar 2025 15:14:24 +0100 Subject: [PATCH 14/80] Update janno_columns.tsv --- janno_columns.tsv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index 0be2197..4281377 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -23,7 +23,7 @@ Date_BC_AD_Median median age of the sample in years BC/AD, for C14-dated samples Date_BC_AD_Stop upper (more recent) bound for the age of the sample in years BC/AD, counter point to Date_BC_AD_Start Integer FALSE FALSE TRUE -Inf 2050 FALSE FALSE Date_Note arbitrary comments about the dating information for the sample String FALSE FALSE FALSE FALSE FALSE Chromosomal_Anomalies genetic anomalies on the chromosome level detected for the sample, so extra, missing or irregual portions of chromosomal DNA, including gonosomal and autosomal aneuploidies, multiple entries separated by ; Suggestions include XXY, XYY, XXX, X0, Trisomy21, Trisomy18 String TRUE FALSE FALSE FALSE FALSE -Chromosomal_Anomalies_Note arbitrary comments about the observed chromosomal anomalies, specifically if Chromosomal_Anomalies is set to “Other” String FALSE FALSE FALSE FALSE FALSE +Chromosomal_Anomalies_Note arbitrary comments about the observed chromosomal anomalies String TRUE FALSE FALSE FALSE FALSE MT_Haplogroup mitochondrial haplogroup derived for the sample as specified on phylotree.org and as reported by the Haplofind or Haplogrep software tools String FALSE FALSE FALSE FALSE FALSE Y_Haplogroup Y-chromosome haplogroup derived for the sample following a syntax with the main branch + the most terminal derived Y-SNP (e.g. R1b-P312) String FALSE FALSE FALSE FALSE FALSE Source_Tissue skeletal element, tissue or other material sampled, the specific bone should be reported after an underscore (e.g. bone_phalanx), multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE From de5c143fdb37ede0fec196564ef32e272d95504c Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Tue, 18 Mar 2025 13:39:30 +0100 Subject: [PATCH 15/80] proposed two new .janno columns for cultural affiliation --- janno_columns.tsv | 2 ++ 1 file changed, 2 insertions(+) diff --git a/janno_columns.tsv b/janno_columns.tsv index 8772fc3..bb11937 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -9,6 +9,8 @@ Relation_Type relationship type for relatives mentioned in Related_To (e.g. sist Relation_Note arbitrary comments about the genetic relationships of the sampled individual String FALSE FALSE FALSE FALSE FALSE Collection_ID alternative sample identifiers shared by the provider/owner of the sample (e.g. grave 40 skeleton 2), multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE Custodian_Institution institution that curated the sampled remains at the time of sampling, with name, city and country, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE +Cultural_Era the cultural eras approximating the period in which the sampled individual lived (e.g. Bronze Age, Pre-Pottery Neolithic A, Migration Period), if possible taken from an established space-time gazetteer like ChronOntology or PeriodO, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE +Archaeological_Culture the archaeological cultures, technocomplexes, (pottery) styles or political entities the sampled individual can be associated to (e.g. Hallstatt culture, Corded Ware culture, Neo-Assyrian Empire), if possible taken from an established space-time gazetteer like ChronOntology or PeriodO, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE Country present-day political country of origin for the sample String FALSE FALSE FALSE FALSE FALSE Country_ISO present-day political country expressed in ISO 3166-1 alpha-2 country codes String FALSE FALSE FALSE FALSE FALSE Location unspecified location information for the sample, e.g. administrative or topographic region or mountains/rivers/lakes/cities nearby String FALSE FALSE FALSE FALSE FALSE From fbf8f54834d7b461d33d017db49ed4ab187ceef6 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Tue, 18 Mar 2025 14:47:37 +0100 Subject: [PATCH 16/80] transformed % values to 0-1 fractions --- janno_columns.tsv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index 8772fc3..9999435 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -35,10 +35,10 @@ UDG udg treatment for the libraries, mixed in case multiple libraries with diffe Library_Built strandedness of the libraries, “mixed” in case multiple libraries with different protocols were merged String FALSE TRUE FALSE ds;ss;mixed FALSE FALSE Genotype_Ploidy ploidy of the genotypes for the sample String FALSE TRUE FALSE diploid;haploid FALSE FALSE Data_Preparation_Pipeline_URL url pointing to a description of the computational pipeline used to generate the genotype data from the source data String FALSE FALSE FALSE FALSE FALSE -Endogenous % endogenous DNA as estimated from SG libraries (before capture) as for example estimated by EAGER, not on target and no quality filter, in case of multiple libraries only the highest values should be reported Float FALSE FALSE TRUE 0 100 FALSE FALSE +Endogenous fraction (decimal portion of 1) of endogenous DNA estimated from SG libraries (before capture) as for example estimated by EAGER, not on target and no quality filter, in case of multiple libraries only the highest values should be reported Float FALSE FALSE TRUE 0 1 FALSE FALSE Nr_SNPs number of non-missing SNPs for the sample, counted on the SNP-set stored in the Poseidon package Integer FALSE FALSE FALSE FALSE FALSE Coverage_on_Target_SNPs average X-fold coverage across targeted SNP sites after quality filtering Float FALSE FALSE FALSE FALSE FALSE -Damage % damage on the 5' end for the main shotgun library used for sequencing and/or capture, in case of multiple libraries a value from the merged read alignment should be reported Float FALSE FALSE TRUE 0 100 FALSE FALSE +Damage fraction (decimal portion of 1) of damage on the 5' end for the main shotgun library used for sequencing and/or capture, in case of multiple libraries a value from the merged read alignment should be reported Float FALSE FALSE TRUE 0 1 FALSE FALSE Contamination (modern) contamination of the sample as measured by the method in Contamination_Meas, multiple values separated by ; (for different methods, in case of multiple libraries report a value from the merged read alignment), the variables Contamination, Contamination_Err and Contamination_Meas must have the same number and order of (non-n/a) entries String TRUE FALSE FALSE FALSE FALSE Contamination_Err (modern) contamination estimate error of the sample String TRUE FALSE FALSE FALSE FALSE Contamination_Meas method to measure contamination, should be a software tool (ANGSD, Schmutzi, …) and the respective software versions, details should go to Contamination_Note String TRUE FALSE FALSE FALSE FALSE From d47f5019a3e3cbee6569c517c5cedf4df549325f Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Tue, 18 Mar 2025 15:57:41 +0100 Subject: [PATCH 17/80] replaced Source_Tissue with Source_Material and Source_Material_Note --- janno_columns.tsv | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index 8772fc3..f9f4773 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -27,7 +27,8 @@ Chromosomal_Anomalies genetic anomalies on the chromosome level detected for the Chromosomal_Anomalies_Note arbitrary comments about the observed chromosomal anomalies String TRUE FALSE FALSE FALSE FALSE MT_Haplogroup mitochondrial haplogroup derived for the sample as specified on phylotree.org and as reported by the Haplofind or Haplogrep software tools String FALSE FALSE FALSE FALSE FALSE Y_Haplogroup Y-chromosome haplogroup derived for the sample following a syntax with the main branch + the most terminal derived Y-SNP (e.g. R1b-P312) String FALSE FALSE FALSE FALSE FALSE -Source_Tissue skeletal element, tissue or other material sampled, the specific bone should be reported after an underscore (e.g. bone_phalanx), multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE +Source_Material sampled material, multiple entries separated by ; String TRUE TRUE FALSE petrous;bone;tooth;soft;sediment;other FALSE FALSE +Source_Material_Note free-text complement to Source_Material to add additional details, multiple entries separated by ; in the same order as Source_Material String TRUE FALSE FALSE FALSE FALSE Nr_Libraries number of libraries produced for the sample Integer FALSE FALSE FALSE FALSE FALSE Library_Names identifiers of the libraries used to generate the genotype data for the sample, multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE Capture_Type specifics of the data generation method (e.g. capture method) for the individual libraries generated for the sample, multiple values separated by ; String TRUE TRUE FALSE Shotgun;1240K;ArborComplete;ArborPrimePlus;ArborAncestralPlus;TwistAncientDNA;OtherCapture;ReferenceGenome FALSE FALSE From cb4a9930f68a273ebdfc4ae80077a47240c6d111 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Tue, 18 Mar 2025 16:10:17 +0100 Subject: [PATCH 18/80] removed Capture_Type ReferenceGenome --- janno_columns.tsv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index 8772fc3..57c1687 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -30,7 +30,7 @@ Y_Haplogroup Y-chromosome haplogroup derived for the sample following a syntax w Source_Tissue skeletal element, tissue or other material sampled, the specific bone should be reported after an underscore (e.g. bone_phalanx), multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE Nr_Libraries number of libraries produced for the sample Integer FALSE FALSE FALSE FALSE FALSE Library_Names identifiers of the libraries used to generate the genotype data for the sample, multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE -Capture_Type specifics of the data generation method (e.g. capture method) for the individual libraries generated for the sample, multiple values separated by ; String TRUE TRUE FALSE Shotgun;1240K;ArborComplete;ArborPrimePlus;ArborAncestralPlus;TwistAncientDNA;OtherCapture;ReferenceGenome FALSE FALSE +Capture_Type capture method for the individual libraries generated for the sample, multiple values separated by ; String TRUE TRUE FALSE Shotgun;1240K;ArborComplete;ArborPrimePlus;ArborAncestralPlus;TwistAncientDNA;OtherCapture FALSE FALSE UDG udg treatment for the libraries, mixed in case multiple libraries with different UDG treatment were merged String FALSE TRUE FALSE minus;half;plus;mixed FALSE FALSE Library_Built strandedness of the libraries, “mixed” in case multiple libraries with different protocols were merged String FALSE TRUE FALSE ds;ss;mixed FALSE FALSE Genotype_Ploidy ploidy of the genotypes for the sample String FALSE TRUE FALSE diploid;haploid FALSE FALSE From e1de8ea1ada4d0ae6c651327699795820d2a7976 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Tue, 18 Mar 2025 16:32:04 +0100 Subject: [PATCH 19/80] updated the changelog --- changelog.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/changelog.md b/changelog.md index 646b71f..8fc9c47 100644 --- a/changelog.md +++ b/changelog.md @@ -4,6 +4,13 @@ #### Changes to the `.janno` file +##### Added columns + +- Added a `Custodian_Institution` column that documents the institution that curated the sampled remains at the time of sampling, with name, city and country. +- Added the columns `Chromosomal_Anomalies` and `Chromosomal_Anomalies_Note` for genetic anomalies on the chromosome level detected for the sample. This includes extra, missing or irregual portions of chromosomal DNA like in gonosomal and autosomal aneuploidies. `Chromosomal_Anomalies` is not limited to a specific set of options, but a common notation is recommended (e.g. `XXY`, `XYY`, `XXX`, `X0`, `Trisomy21`, `Trisomy18`). + +##### Changes to columns + - Adjusted the definition of the `Group_Name` column. The role of population labels as general analysis labels was emphasised, and the original recommendation for the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 toned down. - Made the `Collection_ID` column a list column that allows multiple entries separated by `;`. From b864bf01dddfbf0234db1c9ebdec5cdbf668ed14 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Thu, 27 Mar 2025 11:56:10 +0100 Subject: [PATCH 20/80] Update janno_columns.tsv Co-authored-by: Stephan Schiffels --- janno_columns.tsv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index 9999435..b402426 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -35,7 +35,7 @@ UDG udg treatment for the libraries, mixed in case multiple libraries with diffe Library_Built strandedness of the libraries, “mixed” in case multiple libraries with different protocols were merged String FALSE TRUE FALSE ds;ss;mixed FALSE FALSE Genotype_Ploidy ploidy of the genotypes for the sample String FALSE TRUE FALSE diploid;haploid FALSE FALSE Data_Preparation_Pipeline_URL url pointing to a description of the computational pipeline used to generate the genotype data from the source data String FALSE FALSE FALSE FALSE FALSE -Endogenous fraction (decimal portion of 1) of endogenous DNA estimated from SG libraries (before capture) as for example estimated by EAGER, not on target and no quality filter, in case of multiple libraries only the highest values should be reported Float FALSE FALSE TRUE 0 1 FALSE FALSE +Endogenous fraction (ranging between 0 and 1) of endogenous DNA estimated from SG libraries (before capture) as for example estimated by EAGER, not on target and no quality filter, in case of multiple libraries only the highest values should be reported Float FALSE FALSE TRUE 0 1 FALSE FALSE Nr_SNPs number of non-missing SNPs for the sample, counted on the SNP-set stored in the Poseidon package Integer FALSE FALSE FALSE FALSE FALSE Coverage_on_Target_SNPs average X-fold coverage across targeted SNP sites after quality filtering Float FALSE FALSE FALSE FALSE FALSE Damage fraction (decimal portion of 1) of damage on the 5' end for the main shotgun library used for sequencing and/or capture, in case of multiple libraries a value from the merged read alignment should be reported Float FALSE FALSE TRUE 0 1 FALSE FALSE From 8f7acb8a17fb42e4c9d68a1872dd1edeac3bca6c Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Thu, 27 Mar 2025 11:56:18 +0100 Subject: [PATCH 21/80] Update janno_columns.tsv Co-authored-by: Stephan Schiffels --- janno_columns.tsv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index b402426..402679a 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -38,7 +38,7 @@ Data_Preparation_Pipeline_URL url pointing to a description of the computational Endogenous fraction (ranging between 0 and 1) of endogenous DNA estimated from SG libraries (before capture) as for example estimated by EAGER, not on target and no quality filter, in case of multiple libraries only the highest values should be reported Float FALSE FALSE TRUE 0 1 FALSE FALSE Nr_SNPs number of non-missing SNPs for the sample, counted on the SNP-set stored in the Poseidon package Integer FALSE FALSE FALSE FALSE FALSE Coverage_on_Target_SNPs average X-fold coverage across targeted SNP sites after quality filtering Float FALSE FALSE FALSE FALSE FALSE -Damage fraction (decimal portion of 1) of damage on the 5' end for the main shotgun library used for sequencing and/or capture, in case of multiple libraries a value from the merged read alignment should be reported Float FALSE FALSE TRUE 0 1 FALSE FALSE +Damage fraction (ranging between 0 and 1) of damage on the 5' end for the main shotgun library used for sequencing and/or capture, in case of multiple libraries a value from the merged read alignment should be reported Float FALSE FALSE TRUE 0 1 FALSE FALSE Contamination (modern) contamination of the sample as measured by the method in Contamination_Meas, multiple values separated by ; (for different methods, in case of multiple libraries report a value from the merged read alignment), the variables Contamination, Contamination_Err and Contamination_Meas must have the same number and order of (non-n/a) entries String TRUE FALSE FALSE FALSE FALSE Contamination_Err (modern) contamination estimate error of the sample String TRUE FALSE FALSE FALSE FALSE Contamination_Meas method to measure contamination, should be a software tool (ANGSD, Schmutzi, …) and the respective software versions, details should go to Contamination_Note String TRUE FALSE FALSE FALSE FALSE From 9d8521aa7bd677a64e649b050106b8e43d75f2eb Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Thu, 27 Mar 2025 14:48:44 +0100 Subject: [PATCH 22/80] update of changelog --- changelog.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/changelog.md b/changelog.md index 646b71f..0850f27 100644 --- a/changelog.md +++ b/changelog.md @@ -4,8 +4,9 @@ #### Changes to the `.janno` file -- Adjusted the definition of the `Group_Name` column. The role of population labels as general analysis labels was emphasised, and the original recommendation for the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 toned down. -- Made the `Collection_ID` column a list column that allows multiple entries separated by `;`. +- [breaking] Changed the scaling of the columns `Endogenous` and `Damage` from percent (0-100) to fractions (0-1). +- [not breaking] Adjusted the definition of the `Group_Name` column. The role of population labels as general analysis labels was emphasised, and the original recommendation for the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 toned down. +- [not breaking] Made the `Collection_ID` column a list column that allows multiple entries separated by `;`. ### 2.7.0 -> 2.7.1 [not breaking] From bba6ed9e3f163564927edafbd022ed68e3e657b2 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Mon, 31 Mar 2025 12:29:50 +0200 Subject: [PATCH 23/80] changelog --- changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.md b/changelog.md index 68dc232..ffc5146 100644 --- a/changelog.md +++ b/changelog.md @@ -11,6 +11,7 @@ ##### Changes to columns +- Removed `ReferenceGenome` as an option for the `Capture_Type` column. - Changed the scaling of the columns `Endogenous` and `Damage` from percent (0-100) to fractions (0-1). - Made the `Collection_ID` column a list column that allows multiple entries separated by `;`. - Adjusted the definition of the `Group_Name` column. The role of population labels as general analysis labels was emphasised, and the original recommendation for the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 toned down. From e1161e891d7d06841477dec11fdd5b10a8a564d4 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Mon, 31 Mar 2025 14:44:36 +0200 Subject: [PATCH 24/80] proposal for _URL columns for cultural eras and archaeological cultures --- janno_columns.tsv | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index 80a9982..f0c80dd 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -9,8 +9,10 @@ Relation_Type relationship type for relatives mentioned in Related_To (e.g. sist Relation_Note arbitrary comments about the genetic relationships of the sampled individual String FALSE FALSE FALSE FALSE FALSE Collection_ID alternative sample identifiers shared by the provider/owner of the sample (e.g. grave 40 skeleton 2), multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE Custodian_Institution institution that curated the sampled remains at the time of sampling, with name, city and country, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE -Cultural_Era the cultural eras approximating the period in which the sampled individual lived (e.g. Bronze Age, Pre-Pottery Neolithic A, Migration Period), if possible taken from an established space-time gazetteer like ChronOntology or PeriodO, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE -Archaeological_Culture the archaeological cultures, technocomplexes, (pottery) styles or political entities the sampled individual can be associated to (e.g. Hallstatt culture, Corded Ware culture, Neo-Assyrian Empire), if possible taken from an established space-time gazetteer like ChronOntology or PeriodO, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE +Cultural_Era the cultural eras approximating the period in which the sampled individual lived (e.g. Danish Bronze Age, Pre-Pottery Neolithic A), if possible taken from an established space-time gazetteer like ChronOntology (https://chronontology.dainst.org) or PeriodO (https://perio.do), multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE +Cultural_Era_URL urls pointing to definitions of cultural eras, so permalinks complementing the human-readable identifiers in Cultural_Era (e.g. https://n2t.net/ark:/99152/p0zj6g8ks9s, https://chronontology.dainst.org/period/Gx4uxaeTCbbg), multiple entries separated by ; in the same order as Cultural_Era String TRUE FALSE FALSE FALSE FALSE +Archaeological_Culture the archaeological cultures, technocomplexes, (pottery) styles or political entities the sampled individual can be associated to (e.g. Hallstatt culture (Hungary), Neo-Assyrian Empire), if possible taken from an established space-time gazetteer like ChronOntology (https://chronontology.dainst.org) or PeriodO (https://perio.do), multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE +Archaeological_Culture_URL urls pointing to definitions of archaeological cultures, so permalinks complementing the human-readable identifiers in Archaeological_Culture (e.g. https://n2t.net/ark:/99152/p0nxc78fxgt, https://chronontology.dainst.org/period/bvLwqFcGyoaL), multiple entries separated by ; in the same order as Archaeological_Culture String TRUE FALSE FALSE FALSE FALSE Country present-day political country of origin for the sample String FALSE FALSE FALSE FALSE FALSE Country_ISO present-day political country expressed in ISO 3166-1 alpha-2 country codes String FALSE FALSE FALSE FALSE FALSE Location unspecified location information for the sample, e.g. administrative or topographic region or mountains/rivers/lakes/cities nearby String FALSE FALSE FALSE FALSE FALSE From c5a524ba64244fe8ea71d0bb28adb3f9e1990d60 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Mon, 31 Mar 2025 15:11:52 +0200 Subject: [PATCH 25/80] changelog --- changelog.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/changelog.md b/changelog.md index ffc5146..1add7b4 100644 --- a/changelog.md +++ b/changelog.md @@ -4,6 +4,10 @@ #### Changes to the `.janno` file +##### Replaced columns + +- Replaced `Source_Tissue` with `Source_Material` and `Source_Material_Note`. + ##### Added columns - Added a `Custodian_Institution` column that documents the institution that curated the sampled remains at the time of sampling, with name, city and country. From 4081709dcd68e459a420e595252bf2f385aef6e1 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Mon, 31 Mar 2025 16:59:56 +0200 Subject: [PATCH 26/80] proposal for the damage column --- changelog.md | 1 + janno_columns.tsv | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index 1add7b4..2f1822e 100644 --- a/changelog.md +++ b/changelog.md @@ -17,6 +17,7 @@ - Removed `ReferenceGenome` as an option for the `Capture_Type` column. - Changed the scaling of the columns `Endogenous` and `Damage` from percent (0-100) to fractions (0-1). +- Allowed multiple values in the `Damage` column for estimates per library. - Made the `Collection_ID` column a list column that allows multiple entries separated by `;`. - Adjusted the definition of the `Group_Name` column. The role of population labels as general analysis labels was emphasised, and the original recommendation for the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 toned down. diff --git a/janno_columns.tsv b/janno_columns.tsv index ebd989a..db2223c 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -39,7 +39,7 @@ Data_Preparation_Pipeline_URL url pointing to a description of the computational Endogenous fraction (ranging between 0 and 1) of endogenous DNA estimated from SG libraries (before capture) as for example estimated by EAGER, not on target and no quality filter, in case of multiple libraries only the highest values should be reported Float FALSE FALSE TRUE 0 1 FALSE FALSE Nr_SNPs number of non-missing SNPs for the sample, counted on the SNP-set stored in the Poseidon package Integer FALSE FALSE FALSE FALSE FALSE Coverage_on_Target_SNPs average X-fold coverage across targeted SNP sites after quality filtering Float FALSE FALSE FALSE FALSE FALSE -Damage fraction (ranging between 0 and 1) of damage on the 5' end for the main shotgun library used for sequencing and/or capture, in case of multiple libraries a value from the merged read alignment should be reported Float FALSE FALSE TRUE 0 1 FALSE FALSE +Damage fraction (ranging between 0 and 1) of damage on the 5' end of the libraries used for sequencing, in case of multiple libraries either report multiple values separated by ;, or a single value from the merged read alignment Float TRUE FALSE TRUE 0 1 FALSE FALSE Contamination (modern) contamination of the sample as measured by the method in Contamination_Meas, multiple values separated by ; (for different methods, in case of multiple libraries report a value from the merged read alignment), the variables Contamination, Contamination_Err and Contamination_Meas must have the same number and order of (non-n/a) entries String TRUE FALSE FALSE FALSE FALSE Contamination_Err (modern) contamination estimate error of the sample String TRUE FALSE FALSE FALSE FALSE Contamination_Meas method to measure contamination, should be a software tool (ANGSD, Schmutzi, …) and the respective software versions, details should go to Contamination_Note String TRUE FALSE FALSE FALSE FALSE From 6453f112bea0a139aba0cbf439b16f43f7abd6c0 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Mon, 14 Apr 2025 17:05:15 +0200 Subject: [PATCH 27/80] made some changes to make the format more species-agnostic --- README.md | 4 +++- janno_columns.tsv | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 90536d7..47b4227 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ ## The Poseidon Standard v2.7.1 -Poseidon is a solution for archaeogenetic genotype data organisation. This standard defines the core components of the Poseidon package. +Poseidon is a solution for archaeogenetic genotype data organisation. It is geared towards human data, but is to a large extent species-agnostic and can be used to track archaeogenetic data also of non-human species. + +This standard defines the core components of the Poseidon package. A .pdf version of the latest instance of this document can be downloaded [here](https://github.com/poseidon-framework/poseidon-schema/blob/master/poseidon_package_specification.pdf). diff --git a/janno_columns.tsv b/janno_columns.tsv index 0ea8442..7397e7d 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -22,8 +22,8 @@ Date_BC_AD_Start lower (older) bound for the age of the sample in years BC/AD, n Date_BC_AD_Median median age of the sample in years BC/AD, for C14-dated samples median, for contextually dated samples simple mid-point of the archaeological intervals, 2000 for modern samples Integer FALSE FALSE TRUE -Inf 2050 FALSE FALSE Date_BC_AD_Stop upper (more recent) bound for the age of the sample in years BC/AD, counter point to Date_BC_AD_Start Integer FALSE FALSE TRUE -Inf 2050 FALSE FALSE Date_Note arbitrary comments about the dating information for the sample String FALSE FALSE FALSE FALSE FALSE -MT_Haplogroup mitochondrial haplogroup derived for the sample as specified on phylotree.org and as reported by the Haplofind or Haplogrep software tools String FALSE FALSE FALSE FALSE FALSE -Y_Haplogroup Y-chromosome haplogroup derived for the sample following a syntax with the main branch + the most terminal derived Y-SNP (e.g. R1b-P312) String FALSE FALSE FALSE FALSE FALSE +MT_Haplogroup mitochondrial haplogroup derived for the sample. For human data, this should follow the specification on phylotree.org and as reported by the Haplofind or Haplogrep software tools String FALSE FALSE FALSE FALSE FALSE +Y_Haplogroup Y-chromosome haplogroup derived for the sample. For human data this should follow a syntax with the main branch + the most terminal derived Y-SNP (e.g. R1b-P312) String FALSE FALSE FALSE FALSE FALSE Source_Tissue skeletal element, tissue or other material sampled, the specific bone should be reported after an underscore (e.g. bone_phalanx), multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE Nr_Libraries number of libraries produced for the sample Integer FALSE FALSE FALSE FALSE FALSE Library_Names identifiers of the libraries used to generate the genotype data for the sample, multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE From c9fbf1ee3a68f25b448c57f9f23f9955349a1e61 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Mon, 14 Apr 2025 17:14:11 +0200 Subject: [PATCH 28/80] added species as Janno field --- janno_columns.tsv | 1 + 1 file changed, 1 insertion(+) diff --git a/janno_columns.tsv b/janno_columns.tsv index 6395b1c..d9bd199 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -1,6 +1,7 @@ janno_column_name description data_type multi choice range choice_options range_lower range_upper mandatory unique Poseidon_ID sample identifier as defined by the genetics laboratory (e.g. I1234, BOT001), must fit to the values in the Poseidon package .fam/.ind file, must be unique within one package, if multiple datasets exist for the same individual different Poseidon_IDs are required String FALSE FALSE FALSE TRUE TRUE Genetic_Sex genetic sex of the individual derived from this sample, only F, M or U because the EIGENSTRAT and PLINK formats only support these three, edge cases (e.g. XXY, XYY, X0) are undefined and should be grouped as F, M or U, with a Note added Char FALSE TRUE FALSE F;M;U TRUE FALSE +Species Species name of the sample. Should follow binomial nomenclature as standard in Biology, e.g. Homo sapiens. String FALSE FALSE FALSE FALSE FALSE Group_Name meaningful population/group identifiers for the sample. This can follow the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 (https://doi.org/10.1038/s41598-018-31123-z). It can also communicate additional categories that are meaningful for groupings in specific analyses, such as cultural labels, outlier status or relatedness to other samples. Multiple entries separated by ;, the first value must be equal the group name in the .fam/.ind file String TRUE FALSE FALSE TRUE FALSE Alternative_IDs alternative identifiers for the same sampled individual, e.g. IDs in other databases or popular names like Ötzi/Iceman String TRUE FALSE FALSE FALSE FALSE Relation_To other samples (by Poseidon_ID) that are related/identical to this sample, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE From 56c88a5ad47bc4409939cd2f90b222c418806033 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Mon, 14 Apr 2025 17:17:35 +0200 Subject: [PATCH 29/80] added reference genome columns --- janno_columns.tsv | 2 ++ 1 file changed, 2 insertions(+) diff --git a/janno_columns.tsv b/janno_columns.tsv index d9bd199..e477519 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -36,6 +36,8 @@ Capture_Type capture method for the individual libraries generated for the sampl UDG udg treatment for the libraries, mixed in case multiple libraries with different UDG treatment were merged String FALSE TRUE FALSE minus;half;plus;mixed FALSE FALSE Library_Built strandedness of the libraries, “mixed” in case multiple libraries with different protocols were merged String FALSE TRUE FALSE ds;ss;mixed FALSE FALSE Genotype_Ploidy ploidy of the genotypes for the sample String FALSE TRUE FALSE diploid;haploid FALSE FALSE +Reference_Genome_Assembly Reference genome name (free-text) of the reference genome used, e.g. GRCh37 String FALSE FALSE FALSE FALSE FALSE +Reference_Genome_Assembly_Accession_URL Reference assembly accession URL from a public database, such as NCBI or Ensembl String FALSE FALSE FALSE FALSE FALSE Data_Preparation_Pipeline_URL url pointing to a description of the computational pipeline used to generate the genotype data from the source data String FALSE FALSE FALSE FALSE FALSE Endogenous fraction (ranging between 0 and 1) of endogenous DNA estimated from SG libraries (before capture) as for example estimated by EAGER, not on target and no quality filter, in case of multiple libraries only the highest values should be reported Float FALSE FALSE TRUE 0 1 FALSE FALSE Nr_SNPs number of non-missing SNPs for the sample, counted on the SNP-set stored in the Poseidon package Integer FALSE FALSE FALSE FALSE FALSE From dba7e5fe3e777e10598567433fab15aaeffa5e2d Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Mon, 14 Apr 2025 17:18:34 +0200 Subject: [PATCH 30/80] m --- janno_columns.tsv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index e477519..0521131 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -37,7 +37,7 @@ UDG udg treatment for the libraries, mixed in case multiple libraries with diffe Library_Built strandedness of the libraries, “mixed” in case multiple libraries with different protocols were merged String FALSE TRUE FALSE ds;ss;mixed FALSE FALSE Genotype_Ploidy ploidy of the genotypes for the sample String FALSE TRUE FALSE diploid;haploid FALSE FALSE Reference_Genome_Assembly Reference genome name (free-text) of the reference genome used, e.g. GRCh37 String FALSE FALSE FALSE FALSE FALSE -Reference_Genome_Assembly_Accession_URL Reference assembly accession URL from a public database, such as NCBI or Ensembl String FALSE FALSE FALSE FALSE FALSE +Reference_Genome_Assembly_URL Reference assembly accession URL from a public database, such as NCBI or Ensembl String FALSE FALSE FALSE FALSE FALSE Data_Preparation_Pipeline_URL url pointing to a description of the computational pipeline used to generate the genotype data from the source data String FALSE FALSE FALSE FALSE FALSE Endogenous fraction (ranging between 0 and 1) of endogenous DNA estimated from SG libraries (before capture) as for example estimated by EAGER, not on target and no quality filter, in case of multiple libraries only the highest values should be reported Float FALSE FALSE TRUE 0 1 FALSE FALSE Nr_SNPs number of non-missing SNPs for the sample, counted on the SNP-set stored in the Poseidon package Integer FALSE FALSE FALSE FALSE FALSE From ce8e5347a9388c141249fd7e1a25dc529f324bfc Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Tue, 15 Apr 2025 13:39:29 +0200 Subject: [PATCH 31/80] changelog --- changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.md b/changelog.md index 2f1822e..3ac06a5 100644 --- a/changelog.md +++ b/changelog.md @@ -12,6 +12,7 @@ - Added a `Custodian_Institution` column that documents the institution that curated the sampled remains at the time of sampling, with name, city and country. - Added the columns `Chromosomal_Anomalies` and `Chromosomal_Anomalies_Note` for genetic anomalies on the chromosome level detected for the sample. This includes extra, missing or irregual portions of chromosomal DNA like in gonosomal and autosomal aneuploidies. `Chromosomal_Anomalies` is not limited to a specific set of options, but a common notation is recommended (e.g. `XXY`, `XYY`, `XXX`, `X0`, `Trisomy21`, `Trisomy18`). +- Added four list columns to describe the cultural eras and archaeological cultures a sample is associated with: `Cultural_Era` + `Cultural_Era_URL` and `Archaeological_Culture` + `Archaeological_Culture_URL`. ##### Changes to columns From ea68165277310dd261e51c7455cd53bab804bf8b Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Tue, 15 Apr 2025 13:58:40 +0200 Subject: [PATCH 32/80] changelog --- changelog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/changelog.md b/changelog.md index 3ac06a5..42bb71e 100644 --- a/changelog.md +++ b/changelog.md @@ -13,6 +13,8 @@ - Added a `Custodian_Institution` column that documents the institution that curated the sampled remains at the time of sampling, with name, city and country. - Added the columns `Chromosomal_Anomalies` and `Chromosomal_Anomalies_Note` for genetic anomalies on the chromosome level detected for the sample. This includes extra, missing or irregual portions of chromosomal DNA like in gonosomal and autosomal aneuploidies. `Chromosomal_Anomalies` is not limited to a specific set of options, but a common notation is recommended (e.g. `XXY`, `XYY`, `XXX`, `X0`, `Trisomy21`, `Trisomy18`). - Added four list columns to describe the cultural eras and archaeological cultures a sample is associated with: `Cultural_Era` + `Cultural_Era_URL` and `Archaeological_Culture` + `Archaeological_Culture_URL`. +- Added a column for the sampled `Species`, to make the schema more explicitly species-agnostic. +- Added two columns to document the relevant reference genome used for the DNA read mapping: `Reference_Genome_Assembly` and `Reference_Genome_Assembly_URL`. ##### Changes to columns @@ -21,6 +23,7 @@ - Allowed multiple values in the `Damage` column for estimates per library. - Made the `Collection_ID` column a list column that allows multiple entries separated by `;`. - Adjusted the definition of the `Group_Name` column. The role of population labels as general analysis labels was emphasised, and the original recommendation for the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 toned down. +- Slightly adjusted the definitions of `MT_Haplogroup` and `Y_Haplogroup` to better account for non-human data. ### 2.7.0 -> 2.7.1 [not breaking] From 51216560f5e9f5504fdea3e08772a749935261b2 Mon Sep 17 00:00:00 2001 From: "Thiseas C. Lamnidis" Date: Tue, 15 Apr 2025 16:18:08 +0200 Subject: [PATCH 33/80] Add submitted_md5 column --- ssf_columns.tsv | 1 + 1 file changed, 1 insertion(+) diff --git a/ssf_columns.tsv b/ssf_columns.tsv index 4993d21..9f49346 100644 --- a/ssf_columns.tsv +++ b/ssf_columns.tsv @@ -21,3 +21,4 @@ fastq_bytes number of bytes in the FASTQ files, multiple entries separated by ;, fastq_md5 md5 hashes of the FASTQ files, multiple entries separated by ;, must be in the same order as the ftp and/or aspera links String TRUE FALSE FALSE FALSE FALSE read_count number of reads in the sequencing entity Integer FALSE FALSE TRUE 0 Inf FALSE FALSE submitted_ftp urls to the originally submitted files before they got converted to FASTQ in the INSDC databases, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE +submitted_md5 md5 hashes of the originally submitted files before they got converted to FASTQ in the INSDC databases, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE From 23cacedd9813442574419097237d574ec8e7432f Mon Sep 17 00:00:00 2001 From: "Thiseas C. Lamnidis" Date: Thu, 17 Apr 2025 10:15:06 +0200 Subject: [PATCH 34/80] Update changelog.md --- changelog.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/changelog.md b/changelog.md index 3ac06a5..dedaf99 100644 --- a/changelog.md +++ b/changelog.md @@ -22,6 +22,12 @@ - Made the `Collection_ID` column a list column that allows multiple entries separated by `;`. - Adjusted the definition of the `Group_Name` column. The role of population labels as general analysis labels was emphasised, and the original recommendation for the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 toned down. +#### Changes to the `.janno` file + +##### Added columns + +- Added a `submitted_md5` column, which records the md5sum of the file in the `submitted_ftp` column. + ### 2.7.0 -> 2.7.1 [not breaking] Only changes to the definition of the Sequencing Source File (`.ssf`): From 06d877a3f968be568d7e9c2b740bf797ca5af02f Mon Sep 17 00:00:00 2001 From: "Thiseas C. Lamnidis" Date: Thu, 17 Apr 2025 10:15:31 +0200 Subject: [PATCH 35/80] Fix section header --- changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index dedaf99..1034d84 100644 --- a/changelog.md +++ b/changelog.md @@ -22,7 +22,7 @@ - Made the `Collection_ID` column a list column that allows multiple entries separated by `;`. - Adjusted the definition of the `Group_Name` column. The role of population labels as general analysis labels was emphasised, and the original recommendation for the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 toned down. -#### Changes to the `.janno` file +#### Changes to the `.ssf` file ##### Added columns From 3a174ec39170e8fcbfe142d2955c3a1a492bd2d1 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Mon, 12 May 2025 15:11:11 +0200 Subject: [PATCH 36/80] added some more info for the genotype file formats --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7b01ffd..2c681bf 100644 --- a/README.md +++ b/README.md @@ -127,9 +127,9 @@ Genotype data in Poseidon packages is stored either in (binary) PLINK, EIGENSTRA | SNP file | [`.bim` (extended MAP file) or `.bim.gz`](https://www.cog-genomics.org/plink/1.9/formats#bim) | [`.snp` (snp file) or `.snp.gz`](https://github.com/DReichLab/EIG/blob/fb4fb59065055d3622e0f97f0149588eae630a3e/CONVERTF/README#L67) | | | individual file | [`.fam` (sample information)](https://www.cog-genomics.org/plink/1.9/formats#fam) | [`.ind` (indiv file)](https://github.com/DReichLab/EIG/blob/fb4fb59065055d3622e0f97f0149588eae630a3e/CONVERTF/README#L67) | | -In addition to these files (and optionally their checksums), the POSEIDON.yml file SHOULD also provide a `snpSet` entry which determines the shape of the genotype file. +Both PLINK and EIGENSTRAT formats require three files to be specified. In PLINK, the genotype file is binary (with 2 bits per genotype), while in Eigenstrat, the genotype file is text-based (with 8 bits per genotype). The SNP and individual files are text-based for both formats (see links behind the file endings in the table above). The EIGENSTRAT format specifically is common within archaeogenetics, compatible with many of the important tools developed by the Reich Lab, e.g. the ones in the [EIGENSOFT](https://github.com/DReichLab/EIG) and [ADMIXTOOLS](https://github.com/DReichLab/AdmixTools). Finally, the VCF format is the most formally specified format, with properly versioned specifications being released regularly. VCF is well established in the wider genetics community and the de-facto standard to store variants in the field of medical genetics. -Note that genotype and snp files can be optionally zipped, in which case they MUST end with `.gz`. +VCF files, as well as genotype and SNP files in PLINK and EIGENSTRAT can be stored in gzipped form, signifified by an additional file ending (`*.gz`). ### The `.janno` file From 878d61229be6730da7dedf23090cbb27cc0a1f90 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Mon, 12 May 2025 15:19:56 +0200 Subject: [PATCH 37/80] moved Species and Reference Genome information to yaml --- POSEIDON_yml_fields.tsv | 3 +++ janno_columns.tsv | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/POSEIDON_yml_fields.tsv b/POSEIDON_yml_fields.tsv index d267b9c..59313d3 100644 --- a/POSEIDON_yml_fields.tsv +++ b/POSEIDON_yml_fields.tsv @@ -9,6 +9,9 @@ orcid 1 contributor orcid of one contributor String ORCID FALSE packageVersion 0 package version (should be changed/incremented when the package is changed) String X.Y.Z TRUE lastModified 0 date of last modification of the package (should be updated when the package is changed) Date YYYY-MM-DD FALSE genotypeData 0 genotype data section TRUE +Species 1 genotypeData Species name of the sample. Should follow binomial nomenclature as standard in Biology, e.g. Homo sapiens. String FALSE +Reference_Genome_Assembly 1 genotypeData Reference genome name (free-text) of the reference genome used, e.g. GRCh37 String FALSE +Reference_Genome_Assembly_URL 1 genotypeData Reference assembly accession URL from a public database, such as NCBI or Ensembl String URL FALSE format 1 genotypeData genotype data file format String EIGENSTRAT;PLINK TRUE genoFile 1 genotypeData relative path to the geno file String Path TRUE genoFileChkSum 1 genotypeData md5 checksum of the geno file String md5 hash FALSE diff --git a/janno_columns.tsv b/janno_columns.tsv index 73c81b8..657c953 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -1,7 +1,6 @@ janno_column_name description data_type multi choice range choice_options range_lower range_upper mandatory unique Poseidon_ID sample identifier as defined by the genetics laboratory (e.g. I1234, BOT001), must fit to the values in the Poseidon package .fam/.ind file, must be unique within one package, if multiple datasets exist for the same individual different Poseidon_IDs are required String FALSE FALSE FALSE TRUE TRUE Genetic_Sex genetic sex of the individual derived from this sample, only F, M or U because the EIGENSTRAT and PLINK formats only support these three, edge cases (e.g. XXY, XYY, X0) are undefined and should be grouped as F, M or U, with a Note added Char FALSE TRUE FALSE F;M;U TRUE FALSE -Species Species name of the sample. Should follow binomial nomenclature as standard in Biology, e.g. Homo sapiens. String FALSE FALSE FALSE FALSE FALSE Group_Name meaningful population/group identifiers for the sample. This can follow the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 (https://doi.org/10.1038/s41598-018-31123-z). It can also communicate additional categories that are meaningful for groupings in specific analyses, such as cultural labels, outlier status or relatedness to other samples. Multiple entries separated by ;, the first value must be equal the group name in the .fam/.ind file String TRUE FALSE FALSE TRUE FALSE Alternative_IDs alternative identifiers for the same sampled individual, e.g. IDs in other databases or popular names like Ötzi/Iceman String TRUE FALSE FALSE FALSE FALSE Relation_To other samples (by Poseidon_ID) that are related/identical to this sample, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE @@ -40,8 +39,6 @@ Capture_Type capture method for the individual libraries generated for the sampl UDG udg treatment for the libraries, mixed in case multiple libraries with different UDG treatment were merged String FALSE TRUE FALSE minus;half;plus;mixed FALSE FALSE Library_Built strandedness of the libraries, “mixed” in case multiple libraries with different protocols were merged String FALSE TRUE FALSE ds;ss;mixed FALSE FALSE Genotype_Ploidy ploidy of the genotypes for the sample String FALSE TRUE FALSE diploid;haploid FALSE FALSE -Reference_Genome_Assembly Reference genome name (free-text) of the reference genome used, e.g. GRCh37 String FALSE FALSE FALSE FALSE FALSE -Reference_Genome_Assembly_URL Reference assembly accession URL from a public database, such as NCBI or Ensembl String FALSE FALSE FALSE FALSE FALSE Data_Preparation_Pipeline_URL url pointing to a description of the computational pipeline used to generate the genotype data from the source data String FALSE FALSE FALSE FALSE FALSE Endogenous fraction (ranging between 0 and 1) of endogenous DNA estimated from SG libraries (before capture) as for example estimated by EAGER, not on target and no quality filter, in case of multiple libraries only the highest values should be reported Float FALSE FALSE TRUE 0 1 FALSE FALSE Nr_SNPs number of non-missing SNPs for the sample, counted on the SNP-set stored in the Poseidon package Integer FALSE FALSE FALSE FALSE FALSE From ff4f52dec898c2f5687b1fe537b73596d907afb7 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Tue, 13 May 2025 09:34:06 +0200 Subject: [PATCH 38/80] updated changelog --- changelog.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/changelog.md b/changelog.md index 42bb71e..c8e7599 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,13 @@ ### 2.7.1 -> 3.0.0 [breaking] +#### Changes to the `POSEIDON.yml` file + +- Added three optional fields within the `genotypeData` structure: + - `Species`, the species name of the sample. Should follow binomial nomenclature as standard in Biology, e.g. Homo sapiens. + - `Reference_Genome_Assembly`, the reference genome name (free-text) of the reference genome used, e.g. GRCh37 + - `Reference_Genome_Assembly_URL`, the reference assembly accession URL from a public database, such as NCBI or Ensembl String + #### Changes to the `.janno` file ##### Replaced columns From cc88d7b257a381c2526d97e99d26c5f12e2b6645 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Tue, 13 May 2025 11:10:53 +0200 Subject: [PATCH 39/80] moved Species back to the Janno --- POSEIDON_yml_fields.tsv | 1 - janno_columns.tsv | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/POSEIDON_yml_fields.tsv b/POSEIDON_yml_fields.tsv index 59313d3..19a5dc0 100644 --- a/POSEIDON_yml_fields.tsv +++ b/POSEIDON_yml_fields.tsv @@ -9,7 +9,6 @@ orcid 1 contributor orcid of one contributor String ORCID FALSE packageVersion 0 package version (should be changed/incremented when the package is changed) String X.Y.Z TRUE lastModified 0 date of last modification of the package (should be updated when the package is changed) Date YYYY-MM-DD FALSE genotypeData 0 genotype data section TRUE -Species 1 genotypeData Species name of the sample. Should follow binomial nomenclature as standard in Biology, e.g. Homo sapiens. String FALSE Reference_Genome_Assembly 1 genotypeData Reference genome name (free-text) of the reference genome used, e.g. GRCh37 String FALSE Reference_Genome_Assembly_URL 1 genotypeData Reference assembly accession URL from a public database, such as NCBI or Ensembl String URL FALSE format 1 genotypeData genotype data file format String EIGENSTRAT;PLINK TRUE diff --git a/janno_columns.tsv b/janno_columns.tsv index 657c953..eb3ff2d 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -1,6 +1,7 @@ janno_column_name description data_type multi choice range choice_options range_lower range_upper mandatory unique Poseidon_ID sample identifier as defined by the genetics laboratory (e.g. I1234, BOT001), must fit to the values in the Poseidon package .fam/.ind file, must be unique within one package, if multiple datasets exist for the same individual different Poseidon_IDs are required String FALSE FALSE FALSE TRUE TRUE Genetic_Sex genetic sex of the individual derived from this sample, only F, M or U because the EIGENSTRAT and PLINK formats only support these three, edge cases (e.g. XXY, XYY, X0) are undefined and should be grouped as F, M or U, with a Note added Char FALSE TRUE FALSE F;M;U TRUE FALSE +Species Species name of the sample. Should follow binomial nomenclature as standard in Biology, e.g. Homo sapiens. String FALSE FALSE FALSE FALSE FALSE Group_Name meaningful population/group identifiers for the sample. This can follow the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 (https://doi.org/10.1038/s41598-018-31123-z). It can also communicate additional categories that are meaningful for groupings in specific analyses, such as cultural labels, outlier status or relatedness to other samples. Multiple entries separated by ;, the first value must be equal the group name in the .fam/.ind file String TRUE FALSE FALSE TRUE FALSE Alternative_IDs alternative identifiers for the same sampled individual, e.g. IDs in other databases or popular names like Ötzi/Iceman String TRUE FALSE FALSE FALSE FALSE Relation_To other samples (by Poseidon_ID) that are related/identical to this sample, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE From 7850463dab43fddc4311aa53efec8d0a309470ac Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Tue, 13 May 2025 11:12:49 +0200 Subject: [PATCH 40/80] updated Changelog --- changelog.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/changelog.md b/changelog.md index c8e7599..bacdbbe 100644 --- a/changelog.md +++ b/changelog.md @@ -4,8 +4,7 @@ #### Changes to the `POSEIDON.yml` file -- Added three optional fields within the `genotypeData` structure: - - `Species`, the species name of the sample. Should follow binomial nomenclature as standard in Biology, e.g. Homo sapiens. +- Added two optional fields within the `genotypeData` structure: - `Reference_Genome_Assembly`, the reference genome name (free-text) of the reference genome used, e.g. GRCh37 - `Reference_Genome_Assembly_URL`, the reference assembly accession URL from a public database, such as NCBI or Ensembl String From 43a613793c3240bdfae65597312de9f11f1bd9d1 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Mon, 9 Jun 2025 15:56:18 +0200 Subject: [PATCH 41/80] another update of the changelog --- changelog.md | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/changelog.md b/changelog.md index dcadd84..a47c866 100644 --- a/changelog.md +++ b/changelog.md @@ -2,11 +2,18 @@ ### 2.7.1 -> 3.0.0 [breaking] +#### General changes + +- Allowed another genotype data format next to (binary) PLINK and EIGENSTRAT: the Variant Call Format (VCF). +- Specified a mechanism to store genotype data in a more space-efficient gzipped form. +- Clarified the suitability of the Poseidon standard for non-human data: `[Poseidon] is geared towards human data, but is to a large extent species-agnostic and can be used to track archaeogenetic data also of non-human species.` + #### Changes to the `POSEIDON.yml` file - Added two optional fields within the `genotypeData` structure: - `Reference_Genome_Assembly`, the reference genome name (free-text) of the reference genome used, e.g. GRCh37 - `Reference_Genome_Assembly_URL`, the reference assembly accession URL from a public database, such as NCBI or Ensembl String +- Modified the definition of the `genoFile` and `snpFile` fields to cover the case of gzipped data, for which the respective file names must end with `*.gz`. #### Changes to the `.janno` file @@ -16,19 +23,18 @@ ##### Added columns +- Added a column for the sampled `Species`, to make the schema more explicitly species-agnostic. - Added a `Custodian_Institution` column that documents the institution that curated the sampled remains at the time of sampling, with name, city and country. -- Added the columns `Chromosomal_Anomalies` and `Chromosomal_Anomalies_Note` for genetic anomalies on the chromosome level detected for the sample. This includes extra, missing or irregual portions of chromosomal DNA like in gonosomal and autosomal aneuploidies. `Chromosomal_Anomalies` is not limited to a specific set of options, but a common notation is recommended (e.g. `XXY`, `XYY`, `XXX`, `X0`, `Trisomy21`, `Trisomy18`). - Added four list columns to describe the cultural eras and archaeological cultures a sample is associated with: `Cultural_Era` + `Cultural_Era_URL` and `Archaeological_Culture` + `Archaeological_Culture_URL`. -- Added a column for the sampled `Species`, to make the schema more explicitly species-agnostic. -- Added two columns to document the relevant reference genome used for the DNA read mapping: `Reference_Genome_Assembly` and `Reference_Genome_Assembly_URL`. +- Added the columns `Chromosomal_Anomalies` and `Chromosomal_Anomalies_Note` for genetic anomalies on the chromosome level detected for the sample. This includes extra, missing or irregual portions of chromosomal DNA like in gonosomal and autosomal aneuploidies. `Chromosomal_Anomalies` is not limited to a specific set of options, but a common notation is recommended (e.g. `XXY`, `XYY`, `XXX`, `X0`, `Trisomy21`, `Trisomy18`). ##### Changes to columns -- Removed `ReferenceGenome` as an option for the `Capture_Type` column. -- Changed the scaling of the columns `Endogenous` and `Damage` from percent (0-100) to fractions (0-1). -- Allowed multiple values in the `Damage` column for estimates per library. -- Made the `Collection_ID` column a list column that allows multiple entries separated by `;`. - Adjusted the definition of the `Group_Name` column. The role of population labels as general analysis labels was emphasised, and the original recommendation for the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 toned down. +- Made the `Collection_ID` column a list column that allows multiple entries separated by `;`. +- Removed `ReferenceGenome` as an option for the `Capture_Type` column and further clarified its definition. +- Changed the scaling of the columns `Endogenous` and `Damage` from percent (0-100) to fractions (0-1). +- Allowed multiple values in the `Damage` column for estimates per library. - Slightly adjusted the definitions of `MT_Haplogroup` and `Y_Haplogroup` to better account for non-human data. #### Changes to the `.ssf` file From 8bd393a3ca10289746eff1856907bf57f89423ce Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Wed, 2 Jul 2025 17:38:35 +0200 Subject: [PATCH 42/80] added Source_Material category hair as requested by @Mattists --- janno_columns.tsv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index eb3ff2d..6f1fccb 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -32,7 +32,7 @@ Chromosomal_Anomalies genetic anomalies on the chromosome level detected for the Chromosomal_Anomalies_Note arbitrary comments about the observed chromosomal anomalies String TRUE FALSE FALSE FALSE FALSE MT_Haplogroup mitochondrial haplogroup derived for the sample. For human data, this should follow the specification on phylotree.org and as reported by the Haplofind or Haplogrep software tools String FALSE FALSE FALSE FALSE FALSE Y_Haplogroup Y-chromosome haplogroup derived for the sample. For human data this should follow a syntax with the main branch + the most terminal derived Y-SNP (e.g. R1b-P312) String FALSE FALSE FALSE FALSE FALSE -Source_Material sampled material, multiple entries separated by ; String TRUE TRUE FALSE petrous;bone;tooth;soft;sediment;other FALSE FALSE +Source_Material sampled material, multiple entries separated by ; String TRUE TRUE FALSE petrous;bone;tooth;hair;soft;sediment;other FALSE FALSE Source_Material_Note free-text complement to Source_Material to add additional details, multiple entries separated by ; in the same order as Source_Material String TRUE FALSE FALSE FALSE FALSE Nr_Libraries number of libraries produced for the sample Integer FALSE FALSE FALSE FALSE FALSE Library_Names identifiers of the libraries used to generate the genotype data for the sample, multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE From a06abe86b15c66a2c439895da0ec521cea128c26 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Wed, 2 Jul 2025 18:05:41 +0200 Subject: [PATCH 43/80] started to think about the allowed characters for Poseidon_ID and Group_Name --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b390936..7beacd7 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ A Poseidon package stores genotype data with context information for DNA samples A package therefore MUST contain: - A `POSEIDON.yml` file to formally define the package -- Genotype data in PLINK or EIGENSTRAT format +- Genotype data in PLINK, EIGENSTRAT or VCF format It SHOULD additionally contain: @@ -46,8 +46,12 @@ Switzerland_LNBA_Roswita/README.md Switzerland_LNBA_Roswita/CHANGELOG.md ``` +### Text encoding + All text files in the package MUST be UTF-8 encoded. +`Poseidon_ID`s and `Group_Name`s, so the primary sample and group identifiers across `.janno`, `.ssf`, and genotype data files, MUST contain only [8-bit ASCII characters](https://www.ascii-code.com) following the extended ASCII table based on the Windows-1252 character set. They MUST NOT contain any symbols, except `_` (underscore), `-` (hyphen-minus), and `.` (period, dot or full stop). The allowed ASCII character codes (decimal) are 45, 46, 48-57, 65-90, 95, and 97-122. + ### The `POSEIDON.yml` file The `POSEIDON.yml` file defines Poseidon packages by listing metainformation and relative paths in a standardised, machine-readable format. From c43576ee90fc9bfc9270e1c4959759a2f4b23569 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Sun, 6 Jul 2025 21:20:00 +0200 Subject: [PATCH 44/80] simpler, clearer definition of the ASCII limitation, now also in the .janno file specification --- README.md | 2 +- janno_columns.tsv | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7beacd7..fc58dc5 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ Switzerland_LNBA_Roswita/CHANGELOG.md All text files in the package MUST be UTF-8 encoded. -`Poseidon_ID`s and `Group_Name`s, so the primary sample and group identifiers across `.janno`, `.ssf`, and genotype data files, MUST contain only [8-bit ASCII characters](https://www.ascii-code.com) following the extended ASCII table based on the Windows-1252 character set. They MUST NOT contain any symbols, except `_` (underscore), `-` (hyphen-minus), and `.` (period, dot or full stop). The allowed ASCII character codes (decimal) are 45, 46, 48-57, 65-90, 95, and 97-122. +`Poseidon_ID`s and `Group_Name`s, so the primary sample and group identifiers across `.janno`, `.ssf`, and genotype data files, MUST contain only characters of a subset of the 7-bit ASCII code set. Specifically the alphanumeric characters `A-Z`, `a-z`, `0-9`, and the symbols `_` (underscore), `-` (hyphen-minus), and `.` (period, dot or full stop). ### The `POSEIDON.yml` file diff --git a/janno_columns.tsv b/janno_columns.tsv index 6f1fccb..f318d31 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -1,8 +1,8 @@ janno_column_name description data_type multi choice range choice_options range_lower range_upper mandatory unique -Poseidon_ID sample identifier as defined by the genetics laboratory (e.g. I1234, BOT001), must fit to the values in the Poseidon package .fam/.ind file, must be unique within one package, if multiple datasets exist for the same individual different Poseidon_IDs are required String FALSE FALSE FALSE TRUE TRUE +Poseidon_ID sample identifier as defined by the genetics laboratory (e.g. I1234, BOT001), must contain only the ASCII characters “A-Za-z0-9_-.”, must fit to the values in the Poseidon package .fam/.ind file, must be unique within one package, if multiple datasets exist for the same individual different Poseidon_IDs are required String FALSE FALSE FALSE TRUE TRUE Genetic_Sex genetic sex of the individual derived from this sample, only F, M or U because the EIGENSTRAT and PLINK formats only support these three, edge cases (e.g. XXY, XYY, X0) are undefined and should be grouped as F, M or U, with a Note added Char FALSE TRUE FALSE F;M;U TRUE FALSE Species Species name of the sample. Should follow binomial nomenclature as standard in Biology, e.g. Homo sapiens. String FALSE FALSE FALSE FALSE FALSE -Group_Name meaningful population/group identifiers for the sample. This can follow the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 (https://doi.org/10.1038/s41598-018-31123-z). It can also communicate additional categories that are meaningful for groupings in specific analyses, such as cultural labels, outlier status or relatedness to other samples. Multiple entries separated by ;, the first value must be equal the group name in the .fam/.ind file String TRUE FALSE FALSE TRUE FALSE +Group_Name meaningful population/group identifiers for the sample, must contain only the ASCII characters “A-Za-z0-9_-.”, can follow the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 (https://doi.org/10.1038/s41598-018-31123-z), or communicate additional categories that are meaningful for groupings in specific analyses, such as cultural labels, outlier status or relatedness to other samples, multiple entries separated by ;, the first value must be equal the group name in the .fam/.ind file String TRUE FALSE FALSE TRUE FALSE Alternative_IDs alternative identifiers for the same sampled individual, e.g. IDs in other databases or popular names like Ötzi/Iceman String TRUE FALSE FALSE FALSE FALSE Relation_To other samples (by Poseidon_ID) that are related/identical to this sample, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE Relation_Degree relationship degree for relatives mentioned in Related_To, multiple values separated by ; in the same order as Related_To in case of multiple relations String TRUE TRUE FALSE identical;first;second;thirdToFifth;sixthToTenth;unrelated;other FALSE FALSE From 6e9850a91e27e3e6f56821b9f4857333ea4fc512 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Sun, 6 Jul 2025 21:36:18 +0200 Subject: [PATCH 45/80] recommended the use of LF over CRLF --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b390936..8444acd 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,8 @@ Switzerland_LNBA_Roswita/CHANGELOG.md All text files in the package MUST be UTF-8 encoded. +They SHOULD use Unix-style line endings, so a single Line Feed (LF, `\n`) character, NOT a Carriage Return and Line Feed (CRLF) pair (`\r\n`) as in MS DOS and Windows. + ### The `POSEIDON.yml` file The `POSEIDON.yml` file defines Poseidon packages by listing metainformation and relative paths in a standardised, machine-readable format. From 59e4a210c2b7b946bd59ba70614e7eb63443b8e2 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Wed, 16 Jul 2025 17:16:47 +0200 Subject: [PATCH 46/80] changelog update --- changelog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/changelog.md b/changelog.md index a47c866..aa71feb 100644 --- a/changelog.md +++ b/changelog.md @@ -4,9 +4,11 @@ #### General changes +- Introcuded a specific, limited character set for `Poseidon_ID`s and `Group_Name`s (in the .janno file, the .ssf file, and the genotype data): The ASCII characters `A-Za-z0-9_-.`. - Allowed another genotype data format next to (binary) PLINK and EIGENSTRAT: the Variant Call Format (VCF). - Specified a mechanism to store genotype data in a more space-efficient gzipped form. - Clarified the suitability of the Poseidon standard for non-human data: `[Poseidon] is geared towards human data, but is to a large extent species-agnostic and can be used to track archaeogenetic data also of non-human species.` +- Clarified that text files in Poseidon packages should use Unix-style line endings. #### Changes to the `POSEIDON.yml` file @@ -30,6 +32,7 @@ ##### Changes to columns +- Introcuded a specific, limited character set for the `Poseidon_ID` and `Group_Name` column: The ASCII characters `A-Za-z0-9_-.`. - Adjusted the definition of the `Group_Name` column. The role of population labels as general analysis labels was emphasised, and the original recommendation for the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 toned down. - Made the `Collection_ID` column a list column that allows multiple entries separated by `;`. - Removed `ReferenceGenome` as an option for the `Capture_Type` column and further clarified its definition. From f51879b1063d6134a26ea2fe3817802f0b17bef6 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Wed, 16 Jul 2025 17:18:10 +0200 Subject: [PATCH 47/80] update of README title --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ac07af4..c5b3c86 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -## The Poseidon Standard v2.7.1 +## The Poseidon Standard v3.0.0 Poseidon is a solution for archaeogenetic genotype data organisation. It is geared towards human data, but is to a large extent species-agnostic and can be used to track archaeogenetic data also of non-human species. From 31900ef7635c29c31517958b0fd90b12a6193fc6 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Thu, 28 Aug 2025 10:56:56 +0200 Subject: [PATCH 48/80] note fields should not be list-columns --- janno_columns.tsv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index f318d31..17a1917 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -29,11 +29,11 @@ Date_BC_AD_Median median age of the sample in years BC/AD, for C14-dated samples Date_BC_AD_Stop upper (more recent) bound for the age of the sample in years BC/AD, counter point to Date_BC_AD_Start Integer FALSE FALSE TRUE -Inf 2050 FALSE FALSE Date_Note arbitrary comments about the dating information for the sample String FALSE FALSE FALSE FALSE FALSE Chromosomal_Anomalies genetic anomalies on the chromosome level detected for the sample, so extra, missing or irregual portions of chromosomal DNA, including gonosomal and autosomal aneuploidies, multiple entries separated by ; Suggestions include XXY, XYY, XXX, X0, Trisomy21, Trisomy18 String TRUE FALSE FALSE FALSE FALSE -Chromosomal_Anomalies_Note arbitrary comments about the observed chromosomal anomalies String TRUE FALSE FALSE FALSE FALSE +Chromosomal_Anomalies_Note arbitrary comments about the observed chromosomal anomalies String FALSE FALSE FALSE FALSE FALSE MT_Haplogroup mitochondrial haplogroup derived for the sample. For human data, this should follow the specification on phylotree.org and as reported by the Haplofind or Haplogrep software tools String FALSE FALSE FALSE FALSE FALSE Y_Haplogroup Y-chromosome haplogroup derived for the sample. For human data this should follow a syntax with the main branch + the most terminal derived Y-SNP (e.g. R1b-P312) String FALSE FALSE FALSE FALSE FALSE Source_Material sampled material, multiple entries separated by ; String TRUE TRUE FALSE petrous;bone;tooth;hair;soft;sediment;other FALSE FALSE -Source_Material_Note free-text complement to Source_Material to add additional details, multiple entries separated by ; in the same order as Source_Material String TRUE FALSE FALSE FALSE FALSE +Source_Material_Note free-text complement to Source_Material to add additional details String FALSE FALSE FALSE FALSE FALSE Nr_Libraries number of libraries produced for the sample Integer FALSE FALSE FALSE FALSE FALSE Library_Names identifiers of the libraries used to generate the genotype data for the sample, multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE Capture_Type capture method for the individual libraries generated for the sample, multiple values separated by ; String TRUE TRUE FALSE Shotgun;1240K;ArborComplete;ArborPrimePlus;ArborAncestralPlus;TwistAncientDNA;OtherCapture FALSE FALSE From a256a62c62f4e75ecbb3f13aa72995551230033e Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Thu, 28 Aug 2025 14:31:25 +0200 Subject: [PATCH 49/80] moved species column below the mandatory columns --- janno_columns.tsv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index 17a1917..ead050f 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -1,8 +1,8 @@ janno_column_name description data_type multi choice range choice_options range_lower range_upper mandatory unique Poseidon_ID sample identifier as defined by the genetics laboratory (e.g. I1234, BOT001), must contain only the ASCII characters “A-Za-z0-9_-.”, must fit to the values in the Poseidon package .fam/.ind file, must be unique within one package, if multiple datasets exist for the same individual different Poseidon_IDs are required String FALSE FALSE FALSE TRUE TRUE Genetic_Sex genetic sex of the individual derived from this sample, only F, M or U because the EIGENSTRAT and PLINK formats only support these three, edge cases (e.g. XXY, XYY, X0) are undefined and should be grouped as F, M or U, with a Note added Char FALSE TRUE FALSE F;M;U TRUE FALSE -Species Species name of the sample. Should follow binomial nomenclature as standard in Biology, e.g. Homo sapiens. String FALSE FALSE FALSE FALSE FALSE Group_Name meaningful population/group identifiers for the sample, must contain only the ASCII characters “A-Za-z0-9_-.”, can follow the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 (https://doi.org/10.1038/s41598-018-31123-z), or communicate additional categories that are meaningful for groupings in specific analyses, such as cultural labels, outlier status or relatedness to other samples, multiple entries separated by ;, the first value must be equal the group name in the .fam/.ind file String TRUE FALSE FALSE TRUE FALSE +Species Species name of the sample. Should follow binomial nomenclature as standard in Biology, e.g. Homo sapiens. String FALSE FALSE FALSE FALSE FALSE Alternative_IDs alternative identifiers for the same sampled individual, e.g. IDs in other databases or popular names like Ötzi/Iceman String TRUE FALSE FALSE FALSE FALSE Relation_To other samples (by Poseidon_ID) that are related/identical to this sample, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE Relation_Degree relationship degree for relatives mentioned in Related_To, multiple values separated by ; in the same order as Related_To in case of multiple relations String TRUE TRUE FALSE identical;first;second;thirdToFifth;sixthToTenth;unrelated;other FALSE FALSE From 844d05758208546d390d10f5f375b0d7e1b6f21e Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Fri, 5 Sep 2025 11:07:06 +0200 Subject: [PATCH 50/80] added information on group names and genetic sex headers in VCF --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c5b3c86..599cdc3 100644 --- a/README.md +++ b/README.md @@ -133,10 +133,12 @@ Genotype data in Poseidon packages is stored either in (binary) PLINK, EIGENSTRA | SNP file | [`.bim` (extended MAP file) or `.bim.gz`](https://www.cog-genomics.org/plink/1.9/formats#bim) | [`.snp` (snp file) or `.snp.gz`](https://github.com/DReichLab/EIG/blob/fb4fb59065055d3622e0f97f0149588eae630a3e/CONVERTF/README#L67) | | | individual file | [`.fam` (sample information)](https://www.cog-genomics.org/plink/1.9/formats#fam) | [`.ind` (indiv file)](https://github.com/DReichLab/EIG/blob/fb4fb59065055d3622e0f97f0149588eae630a3e/CONVERTF/README#L67) | | -Both PLINK and EIGENSTRAT formats require three files to be specified. In PLINK, the genotype file is binary (with 2 bits per genotype), while in Eigenstrat, the genotype file is text-based (with 8 bits per genotype). The SNP and individual files are text-based for both formats (see links behind the file endings in the table above). The EIGENSTRAT format specifically is common within archaeogenetics, compatible with many of the important tools developed by the Reich Lab, e.g. the ones in the [EIGENSOFT](https://github.com/DReichLab/EIG) and [ADMIXTOOLS](https://github.com/DReichLab/AdmixTools). Finally, the VCF format is the most formally specified format, with properly versioned specifications being released regularly. VCF is well established in the wider genetics community and the de-facto standard to store variants in the field of medical genetics. +Both PLINK and EIGENSTRAT formats require three files to be specified. In PLINK, the genotype file is binary (with 2 bits per genotype), while in Eigenstrat, the genotype file is text-based (with 8 bits per genotype). The SNP and individual files are text-based for both formats (see links behind the file endings in the table above). The EIGENSTRAT format specifically is common within archaeogenetics, compatible with many important tools, e.g. [EIGENSOFT](https://github.com/DReichLab/EIG) and [ADMIXTOOLS](https://github.com/DReichLab/AdmixTools). Finally, the VCF format is the most formally specified format, with properly versioned specifications being released regularly. VCF is well established in the wider genetics community and the de-facto standard to store variants in the field of medical genetics. VCF files, as well as genotype and SNP files in PLINK and EIGENSTRAT can be stored in gzipped form, signifified by an additional file ending (`*.gz`). +To make VCF files fully convertible to PLINK and EIGENSTRAT, they MUST be biallelic and contain only genotypes coded as `0/0`, `0/1`, `1/1`, `./.`. Furthermore, they CAN encode group names and genetic sex for all samples through special header fields `##group_names=name1,name2,...` and `##genetic_sex=F,U,M,...`, respectively. If these fields are not present, then group names are assumed to be "unknown" and genetic sex "U" (unknown) for all samples. Note that conversion to VCF through trident will automatically add these fields to the VCF header. + ### The `.janno` file The `.janno` file is a tab-separated text file with a header line. It holds context information (variables/columns) for each sample (objects/rows) in a package. From b0f3ffa75558adc7ce1116c3f283d4e6dc511209 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Fri, 5 Sep 2025 11:11:30 +0200 Subject: [PATCH 51/80] add Individual_ID as mandatory column --- README.md | 2 +- janno_columns.tsv | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c5b3c86..4402726 100644 --- a/README.md +++ b/README.md @@ -143,7 +143,7 @@ The `.janno` file is a tab-separated text file with a header line. It holds cont - A set of strictly defined core variables (defined by column name) and their possible content are documented here: [janno_columns.tsv](https://github.com/poseidon-framework/poseidon-schema/blob/master/janno_columns.tsv) - A `.janno` file MAY have all of these core variables, or only a subset of them. -- Only three columns MUST be present to make the file valid: **Poseidon_ID**, **Group_Name** and **Genetic_Sex** +- Only four columns MUST be present to make the file valid: **Poseidon_ID**, **Group_Name**, **Genetic_Sex** and **Individual_ID**. - Arbitrary columns not defined here MAY be added as long as their column names do not clash with the defined ones. - The column order is irrelevant. - If information is unknown or a variable does not apply for a certain sample, then the respective cell(s) MAY be filled with `n/a` or simply an empty string. diff --git a/janno_columns.tsv b/janno_columns.tsv index ead050f..4f56b14 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -2,6 +2,7 @@ janno_column_name description data_type multi choice range choice_options range_ Poseidon_ID sample identifier as defined by the genetics laboratory (e.g. I1234, BOT001), must contain only the ASCII characters “A-Za-z0-9_-.”, must fit to the values in the Poseidon package .fam/.ind file, must be unique within one package, if multiple datasets exist for the same individual different Poseidon_IDs are required String FALSE FALSE FALSE TRUE TRUE Genetic_Sex genetic sex of the individual derived from this sample, only F, M or U because the EIGENSTRAT and PLINK formats only support these three, edge cases (e.g. XXY, XYY, X0) are undefined and should be grouped as F, M or U, with a Note added Char FALSE TRUE FALSE F;M;U TRUE FALSE Group_Name meaningful population/group identifiers for the sample, must contain only the ASCII characters “A-Za-z0-9_-.”, can follow the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 (https://doi.org/10.1038/s41598-018-31123-z), or communicate additional categories that are meaningful for groupings in specific analyses, such as cultural labels, outlier status or relatedness to other samples, multiple entries separated by ;, the first value must be equal the group name in the .fam/.ind file String TRUE FALSE FALSE TRUE FALSE +Individual_ID identifier for the sampled individual; String FALSE FALSE FALSE TRUE TRUE Species Species name of the sample. Should follow binomial nomenclature as standard in Biology, e.g. Homo sapiens. String FALSE FALSE FALSE FALSE FALSE Alternative_IDs alternative identifiers for the same sampled individual, e.g. IDs in other databases or popular names like Ötzi/Iceman String TRUE FALSE FALSE FALSE FALSE Relation_To other samples (by Poseidon_ID) that are related/identical to this sample, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE From 2fd28075fc11f61434aba05eb8acb07c45113a09 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Tue, 9 Sep 2025 10:45:21 +0200 Subject: [PATCH 52/80] made Individual_ID optional again in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4402726..e590346 100644 --- a/README.md +++ b/README.md @@ -143,7 +143,7 @@ The `.janno` file is a tab-separated text file with a header line. It holds cont - A set of strictly defined core variables (defined by column name) and their possible content are documented here: [janno_columns.tsv](https://github.com/poseidon-framework/poseidon-schema/blob/master/janno_columns.tsv) - A `.janno` file MAY have all of these core variables, or only a subset of them. -- Only four columns MUST be present to make the file valid: **Poseidon_ID**, **Group_Name**, **Genetic_Sex** and **Individual_ID**. +- Only three columns MUST be present to make the file valid: **Poseidon_ID**, **Group_Name** and **Genetic_Sex**. - Arbitrary columns not defined here MAY be added as long as their column names do not clash with the defined ones. - The column order is irrelevant. - If information is unknown or a variable does not apply for a certain sample, then the respective cell(s) MAY be filled with `n/a` or simply an empty string. From ecfe3438ec3a2eb8a772fb261d66d86986e82f07 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Tue, 9 Sep 2025 10:46:20 +0200 Subject: [PATCH 53/80] Update Individual_ID description in janno_columns.tsv to make optional --- janno_columns.tsv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index 4f56b14..c8154ed 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -2,7 +2,7 @@ janno_column_name description data_type multi choice range choice_options range_ Poseidon_ID sample identifier as defined by the genetics laboratory (e.g. I1234, BOT001), must contain only the ASCII characters “A-Za-z0-9_-.”, must fit to the values in the Poseidon package .fam/.ind file, must be unique within one package, if multiple datasets exist for the same individual different Poseidon_IDs are required String FALSE FALSE FALSE TRUE TRUE Genetic_Sex genetic sex of the individual derived from this sample, only F, M or U because the EIGENSTRAT and PLINK formats only support these three, edge cases (e.g. XXY, XYY, X0) are undefined and should be grouped as F, M or U, with a Note added Char FALSE TRUE FALSE F;M;U TRUE FALSE Group_Name meaningful population/group identifiers for the sample, must contain only the ASCII characters “A-Za-z0-9_-.”, can follow the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 (https://doi.org/10.1038/s41598-018-31123-z), or communicate additional categories that are meaningful for groupings in specific analyses, such as cultural labels, outlier status or relatedness to other samples, multiple entries separated by ;, the first value must be equal the group name in the .fam/.ind file String TRUE FALSE FALSE TRUE FALSE -Individual_ID identifier for the sampled individual; String FALSE FALSE FALSE TRUE TRUE +Individual_ID identifier for the sampled individual String FALSE FALSE FALSE FALSE TRUE Species Species name of the sample. Should follow binomial nomenclature as standard in Biology, e.g. Homo sapiens. String FALSE FALSE FALSE FALSE FALSE Alternative_IDs alternative identifiers for the same sampled individual, e.g. IDs in other databases or popular names like Ötzi/Iceman String TRUE FALSE FALSE FALSE FALSE Relation_To other samples (by Poseidon_ID) that are related/identical to this sample, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE From 4453b463a78a91d92d3683b1a2763df100108756 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Wed, 10 Sep 2025 17:15:01 +0200 Subject: [PATCH 54/80] removed _Note columns from the .jano column specification file --- janno_columns.tsv | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index ead050f..ee24c70 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -1,13 +1,12 @@ janno_column_name description data_type multi choice range choice_options range_lower range_upper mandatory unique Poseidon_ID sample identifier as defined by the genetics laboratory (e.g. I1234, BOT001), must contain only the ASCII characters “A-Za-z0-9_-.”, must fit to the values in the Poseidon package .fam/.ind file, must be unique within one package, if multiple datasets exist for the same individual different Poseidon_IDs are required String FALSE FALSE FALSE TRUE TRUE -Genetic_Sex genetic sex of the individual derived from this sample, only F, M or U because the EIGENSTRAT and PLINK formats only support these three, edge cases (e.g. XXY, XYY, X0) are undefined and should be grouped as F, M or U, with a Note added Char FALSE TRUE FALSE F;M;U TRUE FALSE +Genetic_Sex genetic sex of the individual derived from this sample, only F, M or U because the EIGENSTRAT and PLINK formats only support these three, edge cases (e.g. XXY, XYY, X0) can be documented in Chromosomal_Anomalies Char FALSE TRUE FALSE F;M;U TRUE FALSE Group_Name meaningful population/group identifiers for the sample, must contain only the ASCII characters “A-Za-z0-9_-.”, can follow the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 (https://doi.org/10.1038/s41598-018-31123-z), or communicate additional categories that are meaningful for groupings in specific analyses, such as cultural labels, outlier status or relatedness to other samples, multiple entries separated by ;, the first value must be equal the group name in the .fam/.ind file String TRUE FALSE FALSE TRUE FALSE Species Species name of the sample. Should follow binomial nomenclature as standard in Biology, e.g. Homo sapiens. String FALSE FALSE FALSE FALSE FALSE Alternative_IDs alternative identifiers for the same sampled individual, e.g. IDs in other databases or popular names like Ötzi/Iceman String TRUE FALSE FALSE FALSE FALSE Relation_To other samples (by Poseidon_ID) that are related/identical to this sample, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE Relation_Degree relationship degree for relatives mentioned in Related_To, multiple values separated by ; in the same order as Related_To in case of multiple relations String TRUE TRUE FALSE identical;first;second;thirdToFifth;sixthToTenth;unrelated;other FALSE FALSE Relation_Type relationship type for relatives mentioned in Related_To (e.g. sister_of, child_of, nephew_of), multiple values separated by ; in the same order as Related_To in case of multiple relations String TRUE FALSE FALSE FALSE FALSE -Relation_Note arbitrary comments about the genetic relationships of the sampled individual String FALSE FALSE FALSE FALSE FALSE Collection_ID alternative sample identifiers shared by the provider/owner of the sample (e.g. grave 40 skeleton 2), multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE Custodian_Institution institution that curated the sampled remains at the time of sampling, with name, city and country, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE Cultural_Era the cultural eras approximating the period in which the sampled individual lived (e.g. Danish Bronze Age, Pre-Pottery Neolithic A), if possible taken from an established space-time gazetteer like ChronOntology (https://chronontology.dainst.org) or PeriodO (https://perio.do), multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE @@ -27,13 +26,10 @@ Date_C14_Uncal_BP_Err standard deviation (1-sigma ±) for the uncalibrated C14 a Date_BC_AD_Start lower (older) bound for the age of the sample in years BC/AD, negative numbers for BC, positive numbers for AD, in case of C14 dates 2-sigma post calibration interval, 2000 for modern samples Integer FALSE FALSE TRUE -Inf 2050 FALSE FALSE Date_BC_AD_Median median age of the sample in years BC/AD, for C14-dated samples median, for contextually dated samples simple mid-point of the archaeological intervals, 2000 for modern samples Integer FALSE FALSE TRUE -Inf 2050 FALSE FALSE Date_BC_AD_Stop upper (more recent) bound for the age of the sample in years BC/AD, counter point to Date_BC_AD_Start Integer FALSE FALSE TRUE -Inf 2050 FALSE FALSE -Date_Note arbitrary comments about the dating information for the sample String FALSE FALSE FALSE FALSE FALSE Chromosomal_Anomalies genetic anomalies on the chromosome level detected for the sample, so extra, missing or irregual portions of chromosomal DNA, including gonosomal and autosomal aneuploidies, multiple entries separated by ; Suggestions include XXY, XYY, XXX, X0, Trisomy21, Trisomy18 String TRUE FALSE FALSE FALSE FALSE -Chromosomal_Anomalies_Note arbitrary comments about the observed chromosomal anomalies String FALSE FALSE FALSE FALSE FALSE MT_Haplogroup mitochondrial haplogroup derived for the sample. For human data, this should follow the specification on phylotree.org and as reported by the Haplofind or Haplogrep software tools String FALSE FALSE FALSE FALSE FALSE Y_Haplogroup Y-chromosome haplogroup derived for the sample. For human data this should follow a syntax with the main branch + the most terminal derived Y-SNP (e.g. R1b-P312) String FALSE FALSE FALSE FALSE FALSE Source_Material sampled material, multiple entries separated by ; String TRUE TRUE FALSE petrous;bone;tooth;hair;soft;sediment;other FALSE FALSE -Source_Material_Note free-text complement to Source_Material to add additional details String FALSE FALSE FALSE FALSE FALSE Nr_Libraries number of libraries produced for the sample Integer FALSE FALSE FALSE FALSE FALSE Library_Names identifiers of the libraries used to generate the genotype data for the sample, multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE Capture_Type capture method for the individual libraries generated for the sample, multiple values separated by ; String TRUE TRUE FALSE Shotgun;1240K;ArborComplete;ArborPrimePlus;ArborAncestralPlus;TwistAncientDNA;OtherCapture FALSE FALSE @@ -47,8 +43,7 @@ Coverage_on_Target_SNPs average X-fold coverage across targeted SNP sites after Damage fraction (ranging between 0 and 1) of damage on the 5' end of the libraries used for sequencing, in case of multiple libraries either report multiple values separated by ;, or a single value from the merged read alignment Float TRUE FALSE TRUE 0 1 FALSE FALSE Contamination (modern) contamination of the sample as measured by the method in Contamination_Meas, multiple values separated by ; (for different methods, in case of multiple libraries report a value from the merged read alignment), the variables Contamination, Contamination_Err and Contamination_Meas must have the same number and order of (non-n/a) entries String TRUE FALSE FALSE FALSE FALSE Contamination_Err (modern) contamination estimate error of the sample String TRUE FALSE FALSE FALSE FALSE -Contamination_Meas method to measure contamination, should be a software tool (ANGSD, Schmutzi, …) and the respective software versions, details should go to Contamination_Note String TRUE FALSE FALSE FALSE FALSE -Contamination_Note arbitrary comments about the contamination estimation String FALSE FALSE FALSE FALSE FALSE +Contamination_Meas method to measure contamination, should be a software tool (ANGSD, Schmutzi, …) and the respective software versions, details can go to a Contamination_Note column String TRUE FALSE FALSE FALSE FALSE Genetic_Source_Accession_IDs ENA or SRA accession identifiers pointing to the source data used to generate the genotyping data for the sample, multiple values separated by ;, if multiple are given they should be arranged by descending specificity (e.g. project id > sample id > sequencing run id) String TRUE FALSE FALSE FALSE FALSE Primary_Contact project lead or first author who generated and published the data for the sample String FALSE FALSE FALSE FALSE FALSE Publication bibtex keys for the publications where a sample was published (e.g. “AuthorJournalYear“) or “unpublished“, multiple values separated by ;, all must be present with complete BibTeX entries in the Poseidon package’s .bib file String TRUE FALSE FALSE FALSE FALSE From 8dc337d2373c4c830a3720bb1448979875b906f7 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Wed, 10 Sep 2025 17:30:33 +0200 Subject: [PATCH 55/80] specification of the now general concept of _Note columns in the README --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c5b3c86..253e465 100644 --- a/README.md +++ b/README.md @@ -145,7 +145,8 @@ The `.janno` file is a tab-separated text file with a header line. It holds cont - A `.janno` file MAY have all of these core variables, or only a subset of them. - Only three columns MUST be present to make the file valid: **Poseidon_ID**, **Group_Name** and **Genetic_Sex** - Arbitrary columns not defined here MAY be added as long as their column names do not clash with the defined ones. -- The column order is irrelevant. +- Arbitrary, additional free-text information directly related to a column **** from the set of specified core variables in [janno_columns.tsv](https://github.com/poseidon-framework/poseidon-schema/blob/master/janno_columns.tsv) SHOULD be added in a column whose name has the form **_Note**. +- The column order is not fixed, but MAY follow the order in [janno_columns.tsv](https://github.com/poseidon-framework/poseidon-schema/blob/master/janno_columns.tsv). **_Note** columns SHOULD be placed directly after the respective column they are refering to. - If information is unknown or a variable does not apply for a certain sample, then the respective cell(s) MAY be filled with `n/a` or simply an empty string. - The order of the samples (rows) in the `.janno` file MUST be equal to the order in the genetic data files (`.ind`, `.fam`) in the package. - The values in the columns **Poseidon_ID**, **Group_Name** and **Genetic_Sex** MUST be equal to the terms used in the genetic data files (`.ind`, `.fam`). From 48af7fe6e44a543b374e44768c2ffbd1f4030b0c Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Wed, 10 Sep 2025 17:46:20 +0200 Subject: [PATCH 56/80] update of changelog --- changelog.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index aa71feb..4d32893 100644 --- a/changelog.md +++ b/changelog.md @@ -30,7 +30,7 @@ - Added four list columns to describe the cultural eras and archaeological cultures a sample is associated with: `Cultural_Era` + `Cultural_Era_URL` and `Archaeological_Culture` + `Archaeological_Culture_URL`. - Added the columns `Chromosomal_Anomalies` and `Chromosomal_Anomalies_Note` for genetic anomalies on the chromosome level detected for the sample. This includes extra, missing or irregual portions of chromosomal DNA like in gonosomal and autosomal aneuploidies. `Chromosomal_Anomalies` is not limited to a specific set of options, but a common notation is recommended (e.g. `XXY`, `XYY`, `XXX`, `X0`, `Trisomy21`, `Trisomy18`). -##### Changes to columns +##### Changed columns - Introcuded a specific, limited character set for the `Poseidon_ID` and `Group_Name` column: The ASCII characters `A-Za-z0-9_-.`. - Adjusted the definition of the `Group_Name` column. The role of population labels as general analysis labels was emphasised, and the original recommendation for the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 toned down. @@ -40,6 +40,10 @@ - Allowed multiple values in the `Damage` column for estimates per library. - Slightly adjusted the definitions of `MT_Haplogroup` and `Y_Haplogroup` to better account for non-human data. +##### Removed columns + +- Removed all explicitly defined `_Note` columns. The schema allows arbitrary additional columns since v2.2.0; a specification of free-text fields is not necessary. + #### Changes to the `.ssf` file ##### Added columns From 88ad934102a87b3b72b48e244900a0e52d70bc37 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Fri, 12 Sep 2025 16:05:59 +0200 Subject: [PATCH 57/80] updated field descriptions for Individual_ID --- janno_columns.tsv | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index c8154ed..c02fcf2 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -4,9 +4,9 @@ Genetic_Sex genetic sex of the individual derived from this sample, only F, M or Group_Name meaningful population/group identifiers for the sample, must contain only the ASCII characters “A-Za-z0-9_-.”, can follow the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 (https://doi.org/10.1038/s41598-018-31123-z), or communicate additional categories that are meaningful for groupings in specific analyses, such as cultural labels, outlier status or relatedness to other samples, multiple entries separated by ;, the first value must be equal the group name in the .fam/.ind file String TRUE FALSE FALSE TRUE FALSE Individual_ID identifier for the sampled individual String FALSE FALSE FALSE FALSE TRUE Species Species name of the sample. Should follow binomial nomenclature as standard in Biology, e.g. Homo sapiens. String FALSE FALSE FALSE FALSE FALSE -Alternative_IDs alternative identifiers for the same sampled individual, e.g. IDs in other databases or popular names like Ötzi/Iceman String TRUE FALSE FALSE FALSE FALSE -Relation_To other samples (by Poseidon_ID) that are related/identical to this sample, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE -Relation_Degree relationship degree for relatives mentioned in Related_To, multiple values separated by ; in the same order as Related_To in case of multiple relations String TRUE TRUE FALSE identical;first;second;thirdToFifth;sixthToTenth;unrelated;other FALSE FALSE +Alternative_IDs alternative identifiers for the same sample, e.g. IDs in other databases or popular names like Ötzi/Iceman String TRUE FALSE FALSE FALSE FALSE +Relation_To other individuals (by Individual_ID) that are related to this sample, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE +Relation_Degree relationship degree for relatives mentioned in Related_To, multiple values separated by ; in the same order as Related_To in case of multiple relations. Here, "identical" refers to identical twins. Identical individuals should be encoded through a common Individual_ID. String TRUE TRUE FALSE identical;first;second;thirdToFifth;sixthToTenth;unrelated;other FALSE FALSE Relation_Type relationship type for relatives mentioned in Related_To (e.g. sister_of, child_of, nephew_of), multiple values separated by ; in the same order as Related_To in case of multiple relations String TRUE FALSE FALSE FALSE FALSE Relation_Note arbitrary comments about the genetic relationships of the sampled individual String FALSE FALSE FALSE FALSE FALSE Collection_ID alternative sample identifiers shared by the provider/owner of the sample (e.g. grave 40 skeleton 2), multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE From 3eddcb839adb1702482e85b9c060cc9cf768a69d Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Fri, 12 Sep 2025 16:07:07 +0200 Subject: [PATCH 58/80] further update to Related_To --- janno_columns.tsv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index c02fcf2..4bef578 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -5,7 +5,7 @@ Group_Name meaningful population/group identifiers for the sample, must contain Individual_ID identifier for the sampled individual String FALSE FALSE FALSE FALSE TRUE Species Species name of the sample. Should follow binomial nomenclature as standard in Biology, e.g. Homo sapiens. String FALSE FALSE FALSE FALSE FALSE Alternative_IDs alternative identifiers for the same sample, e.g. IDs in other databases or popular names like Ötzi/Iceman String TRUE FALSE FALSE FALSE FALSE -Relation_To other individuals (by Individual_ID) that are related to this sample, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE +Relation_To other individuals (by Individual_ID) that are related to the individual this sample derived from, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE Relation_Degree relationship degree for relatives mentioned in Related_To, multiple values separated by ; in the same order as Related_To in case of multiple relations. Here, "identical" refers to identical twins. Identical individuals should be encoded through a common Individual_ID. String TRUE TRUE FALSE identical;first;second;thirdToFifth;sixthToTenth;unrelated;other FALSE FALSE Relation_Type relationship type for relatives mentioned in Related_To (e.g. sister_of, child_of, nephew_of), multiple values separated by ; in the same order as Related_To in case of multiple relations String TRUE FALSE FALSE FALSE FALSE Relation_Note arbitrary comments about the genetic relationships of the sampled individual String FALSE FALSE FALSE FALSE FALSE From b61c9a65e580994f81fbf2ee9d451c1f368e9fb3 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Fri, 12 Sep 2025 16:14:57 +0200 Subject: [PATCH 59/80] removed reference to trident --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 599cdc3..e1e3b13 100644 --- a/README.md +++ b/README.md @@ -137,7 +137,7 @@ Both PLINK and EIGENSTRAT formats require three files to be specified. In PLINK, VCF files, as well as genotype and SNP files in PLINK and EIGENSTRAT can be stored in gzipped form, signifified by an additional file ending (`*.gz`). -To make VCF files fully convertible to PLINK and EIGENSTRAT, they MUST be biallelic and contain only genotypes coded as `0/0`, `0/1`, `1/1`, `./.`. Furthermore, they CAN encode group names and genetic sex for all samples through special header fields `##group_names=name1,name2,...` and `##genetic_sex=F,U,M,...`, respectively. If these fields are not present, then group names are assumed to be "unknown" and genetic sex "U" (unknown) for all samples. Note that conversion to VCF through trident will automatically add these fields to the VCF header. +To make VCF files fully convertible to PLINK and EIGENSTRAT, they MUST be biallelic and contain only genotypes coded as `0/0`, `0/1`, `1/1`, `./.`. Furthermore, they CAN encode group names and genetic sex for all samples through special header fields `##group_names=name1,name2,...` and `##genetic_sex=F,U,M,...`, respectively. If these fields are not present, then group names are assumed to be "unknown" and genetic sex "U" (unknown) for all samples. ### The `.janno` file From 57fcdabac966ca1a74880eb5ae40ab5523b019d0 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Sat, 13 Sep 2025 14:16:24 +0200 Subject: [PATCH 60/80] Update README.md Co-authored-by: Stephan Schiffels --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 253e465..6416b03 100644 --- a/README.md +++ b/README.md @@ -145,7 +145,7 @@ The `.janno` file is a tab-separated text file with a header line. It holds cont - A `.janno` file MAY have all of these core variables, or only a subset of them. - Only three columns MUST be present to make the file valid: **Poseidon_ID**, **Group_Name** and **Genetic_Sex** - Arbitrary columns not defined here MAY be added as long as their column names do not clash with the defined ones. -- Arbitrary, additional free-text information directly related to a column **** from the set of specified core variables in [janno_columns.tsv](https://github.com/poseidon-framework/poseidon-schema/blob/master/janno_columns.tsv) SHOULD be added in a column whose name has the form **_Note**. +- Arbitrary, additional free-text information directly related to a column **** from the set of specified core variables in [janno_columns.tsv](https://github.com/poseidon-framework/poseidon-schema/blob/master/janno_columns.tsv) SHOULD be added in a column whose name has the form **_Note**. Example: `Contamination_Note`. - The column order is not fixed, but MAY follow the order in [janno_columns.tsv](https://github.com/poseidon-framework/poseidon-schema/blob/master/janno_columns.tsv). **_Note** columns SHOULD be placed directly after the respective column they are refering to. - If information is unknown or a variable does not apply for a certain sample, then the respective cell(s) MAY be filled with `n/a` or simply an empty string. - The order of the samples (rows) in the `.janno` file MUST be equal to the order in the genetic data files (`.ind`, `.fam`) in the package. From 2588df0a0731470b717077212cb48e097dc3e564 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Wed, 24 Sep 2025 17:48:47 +0200 Subject: [PATCH 61/80] draft of a better conceptual specification of the Poseidon_ID and the entities it signifies - derived from a paragraph in Supp. Text 8 of the Poseidon paper --- README.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5c7c3d1..520bafb 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Poseidon is a solution for archaeogenetic genotype data organisation. It is geared towards human data, but is to a large extent species-agnostic and can be used to track archaeogenetic data also of non-human species. -This standard defines the core components of the Poseidon package. +This standard defines a data structure: the **Poseidon package**. A Poseidon package stores genotype data with meta- and context information. A .pdf version of the latest instance of this document can be downloaded [here](https://github.com/poseidon-framework/poseidon-schema/blob/master/poseidon_package_specification.pdf). @@ -12,9 +12,21 @@ A changelog documents the changes across different schema versions [here](https: The key words *MUST*, *MUST NOT*, *REQUIRED*, *SHALL*, *SHALL NOT*, *SHOULD*, *SHOULD NOT*, *RECOMMENDED*, *MAY*, and *OPTIONAL* in this document are to be interpreted as described in [RFC 2119](https://datatracker.ietf.org/doc/html/rfc2119). +### Primary entities of a Poseidon package + +The main operational entities in a Poseidon package are discrete sets of genotype data attributed to a single human or non-human individual, scientifically generated for archaeogenetic research questions. Within a Poseidon package each of these sets gets attributed a unique identifier: the `Poseidon_ID`. + +Generally, archaeogenetics operates on depositional contexts, e.g. graves, with one or multiple (ancient) human or non-human individuals. Usually, it is possible to attribute the (skeletal) remains within these contexts to individuals based on archaeological evidence and physical-anthropological analysis. Each individual can get sampled one or multiple times, either by directly probing their preserved tissue, or by sampling any reagent that contains their DNA (through whatever pathway or taphonomic process). From one such sample one or multiple extracts can be derived, which can be transformed into one or multiple libraries, which may or may not be subjected to a DNA capture protocol and then sequenced one or multiple times. The raw sequencing data can undergo various different forms of computational processing and eventually genotyping to produce the data relevant for most derived analyses and thus stored in a Poseidon package. + +While the wetlab-processes yield a relatively predictable tree of separate physical and digital products for any given sample, the computational data-processing breaks the conceptual tree-ness by allowing for arbitrary conflation of sequencing data obtained through potentially separate means: Data from different libraries, for example, may be merged if they are from the same individual, even if they are not from the same sample. + +`Poseidon_ID`s therefore represent one consciously selected end-point in the complex data preparation graph laid out above. Typically this end-point corresponds to an optimal result for a given individual, research question and publication. + +For the sake of convenience and despite the lack of conceptual clarity, below we sometimes use the term *sample* to denote `Poseidon_ID` entities. Data aggregation on the level of physical samples is often sensible, and the term is conventionally used for analysis endpoints in the community of practice. + ### The Poseidon package structure -A Poseidon package stores genotype data with context information for DNA samples from (ancient) (human) individuals. Packages are defined by the POSEIDON.yml file, which holds relative paths to all other files in a package. +A Poseidon package is defined by the POSEIDON.yml file, which holds relative paths to all other files in the package. A package therefore MUST contain: From 8ab500cede0ed5ea19c819c7dda5000a8f836b00 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Thu, 2 Oct 2025 16:07:02 +0200 Subject: [PATCH 62/80] update of changelog --- changelog.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/changelog.md b/changelog.md index 4d32893..cfcd725 100644 --- a/changelog.md +++ b/changelog.md @@ -7,6 +7,10 @@ - Introcuded a specific, limited character set for `Poseidon_ID`s and `Group_Name`s (in the .janno file, the .ssf file, and the genotype data): The ASCII characters `A-Za-z0-9_-.`. - Allowed another genotype data format next to (binary) PLINK and EIGENSTRAT: the Variant Call Format (VCF). - Specified a mechanism to store genotype data in a more space-efficient gzipped form. + +#### Clarifications + +- Clarified the exact meaning of a `Poseidon_ID` and the entity in genotype and context data it represents. - Clarified the suitability of the Poseidon standard for non-human data: `[Poseidon] is geared towards human data, but is to a large extent species-agnostic and can be used to track archaeogenetic data also of non-human species.` - Clarified that text files in Poseidon packages should use Unix-style line endings. From af32d80d8632760cdb820455eb921358a5cc403a Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Thu, 2 Oct 2025 17:08:34 +0200 Subject: [PATCH 63/80] adjusted the names of the new POSEIDON.yml fields referenceGenomeAssembly + referenceGenomeAssemblyURL --- POSEIDON_yml_fields.tsv | 4 ++-- changelog.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/POSEIDON_yml_fields.tsv b/POSEIDON_yml_fields.tsv index 7595df4..fa7f74b 100644 --- a/POSEIDON_yml_fields.tsv +++ b/POSEIDON_yml_fields.tsv @@ -9,8 +9,8 @@ orcid 1 contributor orcid of one contributor String ORCID FALSE packageVersion 0 package version (should be changed/incremented when the package is changed) String X.Y.Z TRUE lastModified 0 date of last modification of the package (should be updated when the package is changed) Date YYYY-MM-DD FALSE genotypeData 0 genotype data section TRUE -Reference_Genome_Assembly 1 genotypeData Reference genome name (free-text) of the reference genome used, e.g. GRCh37 String FALSE -Reference_Genome_Assembly_URL 1 genotypeData Reference assembly accession URL from a public database, such as NCBI or Ensembl String URL FALSE +referenceGenomeAssembly 1 genotypeData reference genome name of the reference genome used, e.g. GRCh37 String FALSE +referenceGenomeAssemblyURL 1 genotypeData reference assembly accession URL from a public database, such as NCBI or Ensembl String URL FALSE format 1 genotypeData genotype data file format String EIGENSTRAT;PLINK;VCF TRUE genoFile 1 genotypeData relative path to the genotype file. If gzipped, MUST end with *.gz String Path TRUE genoFileChkSum 1 genotypeData md5 checksum of the genotype file String md5 hash FALSE diff --git a/changelog.md b/changelog.md index cfcd725..95e1198 100644 --- a/changelog.md +++ b/changelog.md @@ -17,8 +17,8 @@ #### Changes to the `POSEIDON.yml` file - Added two optional fields within the `genotypeData` structure: - - `Reference_Genome_Assembly`, the reference genome name (free-text) of the reference genome used, e.g. GRCh37 - - `Reference_Genome_Assembly_URL`, the reference assembly accession URL from a public database, such as NCBI or Ensembl String + - `referenceGenomeAssembly`, the reference genome name of the reference genome used, e.g. GRCh37 + - `referenceGenomeAssemblyURL`, the reference assembly accession URL from a public database, such as NCBI or Ensembl - Modified the definition of the `genoFile` and `snpFile` fields to cover the case of gzipped data, for which the respective file names must end with `*.gz`. #### Changes to the `.janno` file From a26108bccd99d8cd3bcd011e994424e30d9a31e9 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Thu, 2 Oct 2025 17:28:50 +0200 Subject: [PATCH 64/80] proposal how to implement the contextualisation of Alternative_IDs --- janno_columns.tsv | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index ee24c70..bb632de 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -3,7 +3,8 @@ Poseidon_ID sample identifier as defined by the genetics laboratory (e.g. I1234, Genetic_Sex genetic sex of the individual derived from this sample, only F, M or U because the EIGENSTRAT and PLINK formats only support these three, edge cases (e.g. XXY, XYY, X0) can be documented in Chromosomal_Anomalies Char FALSE TRUE FALSE F;M;U TRUE FALSE Group_Name meaningful population/group identifiers for the sample, must contain only the ASCII characters “A-Za-z0-9_-.”, can follow the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 (https://doi.org/10.1038/s41598-018-31123-z), or communicate additional categories that are meaningful for groupings in specific analyses, such as cultural labels, outlier status or relatedness to other samples, multiple entries separated by ;, the first value must be equal the group name in the .fam/.ind file String TRUE FALSE FALSE TRUE FALSE Species Species name of the sample. Should follow binomial nomenclature as standard in Biology, e.g. Homo sapiens. String FALSE FALSE FALSE FALSE FALSE -Alternative_IDs alternative identifiers for the same sampled individual, e.g. IDs in other databases or popular names like Ötzi/Iceman String TRUE FALSE FALSE FALSE FALSE +Alternative_IDs alternative identifiers for the same sampled individual, e.g. IDs in other databases or popular names like Ötzi/Iceman. Alternative_IDs and Alternative_IDs_Context must have the same number and order of entries String TRUE FALSE FALSE FALSE FALSE +Alternative_IDs_Context context of Alternative_IDs, so e.g. the name of the database (like AADRv62) where a respective identifier is used, or just “popular” for a common non-scientific name used in media and public discussions String TRUE FALSE FALSE FALSE FALSE Relation_To other samples (by Poseidon_ID) that are related/identical to this sample, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE Relation_Degree relationship degree for relatives mentioned in Related_To, multiple values separated by ; in the same order as Related_To in case of multiple relations String TRUE TRUE FALSE identical;first;second;thirdToFifth;sixthToTenth;unrelated;other FALSE FALSE Relation_Type relationship type for relatives mentioned in Related_To (e.g. sister_of, child_of, nephew_of), multiple values separated by ; in the same order as Related_To in case of multiple relations String TRUE FALSE FALSE FALSE FALSE From 4865fe2f26f1539c55b8f04d8ea40d2e3ff46421 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Tue, 2 Dec 2025 14:26:12 +0100 Subject: [PATCH 65/80] added another capture type and some documentation on the individual protocols --- README.md | 13 +++++++++++++ changelog.md | 1 + janno_columns.tsv | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 520bafb..35487aa 100644 --- a/README.md +++ b/README.md @@ -229,3 +229,16 @@ The `.ssf` file is another tab-separated text file with a header line. It stores - If information is unknown or a variable does not apply, then the respective cell(s) MAY be filled with `n/a` or simply an empty string. - Multiple predefined columns of the `.ssf` file are list columns that can hold multiple values (either strings or numerics) separated by `;`. - The decimal separator for all floating point numbers MUST be `.`. + +### Details + +#### The `Capture_Type` .janno column + +The following protocols are specified: + +- `Shotgun`: Sequencing without any enrichment (whole genome sequencing, screening etc.). +- `1240K`: Target enrichment with hybridization capture optimised for sequences covering the 1240k SNP array, see [@Fu2015](https://doi.org/10.1038/nature14558), [@Haak2015](https://doi.org/10.1038/nature14317), [@Mathieson2015](https://doi.org/10.1038/nature16152). +- `ArborComplete`, `ArborPrimePlus`, `ArborAncestralPlus`: Target enrichment with hybridization capture as provided by Arbor Biosciences in three different kits branded [myBaits Expert Human Affinities](https://arborbiosci.com/genomics/targeted-sequencing/mybaits/mybaits-expert/mybaits-expert-human-affinities). +- `TwistAncientDNA`: Target enrichment with hybridization capture as provided by Twist Bioscience [@Rohland2022](https://doi.org/10.1101/gr.276728.122). +- `Carpenter2013`: Whole genome capture as described by [@Carpenter2013](10.1016/j.ajhg.2013.10.002). +- `OtherCapture`: Target enrichment with hybridization capture for any other set of sequences. diff --git a/changelog.md b/changelog.md index 95e1198..c4501f5 100644 --- a/changelog.md +++ b/changelog.md @@ -43,6 +43,7 @@ - Changed the scaling of the columns `Endogenous` and `Damage` from percent (0-100) to fractions (0-1). - Allowed multiple values in the `Damage` column for estimates per library. - Slightly adjusted the definitions of `MT_Haplogroup` and `Y_Haplogroup` to better account for non-human data. +- Added the option `Carpenter2013` to `Capture_Type`. ##### Removed columns diff --git a/janno_columns.tsv b/janno_columns.tsv index ee24c70..0aedc02 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -32,7 +32,7 @@ Y_Haplogroup Y-chromosome haplogroup derived for the sample. For human data this Source_Material sampled material, multiple entries separated by ; String TRUE TRUE FALSE petrous;bone;tooth;hair;soft;sediment;other FALSE FALSE Nr_Libraries number of libraries produced for the sample Integer FALSE FALSE FALSE FALSE FALSE Library_Names identifiers of the libraries used to generate the genotype data for the sample, multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE -Capture_Type capture method for the individual libraries generated for the sample, multiple values separated by ; String TRUE TRUE FALSE Shotgun;1240K;ArborComplete;ArborPrimePlus;ArborAncestralPlus;TwistAncientDNA;OtherCapture FALSE FALSE +Capture_Type capture method for the individual libraries generated for the sample, multiple values separated by ; String TRUE TRUE FALSE Shotgun;1240K;ArborComplete;ArborPrimePlus;ArborAncestralPlus;TwistAncientDNA;Carpenter2013;OtherCapture FALSE FALSE UDG udg treatment for the libraries, mixed in case multiple libraries with different UDG treatment were merged String FALSE TRUE FALSE minus;half;plus;mixed FALSE FALSE Library_Built strandedness of the libraries, “mixed” in case multiple libraries with different protocols were merged String FALSE TRUE FALSE ds;ss;mixed FALSE FALSE Genotype_Ploidy ploidy of the genotypes for the sample String FALSE TRUE FALSE diploid;haploid FALSE FALSE From 25af2cca6e8a4776945c4cfd4ab84a2fd0cb7cfb Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Tue, 2 Dec 2025 16:12:14 +0100 Subject: [PATCH 66/80] first draft of a data licencing specification --- POSEIDON_yml_fields.tsv | 2 ++ README.md | 14 ++++++++++++++ changelog.md | 1 + 3 files changed, 17 insertions(+) diff --git a/POSEIDON_yml_fields.tsv b/POSEIDON_yml_fields.tsv index fa7f74b..1bb01a5 100644 --- a/POSEIDON_yml_fields.tsv +++ b/POSEIDON_yml_fields.tsv @@ -9,6 +9,8 @@ orcid 1 contributor orcid of one contributor String ORCID FALSE packageVersion 0 package version (should be changed/incremented when the package is changed) String X.Y.Z TRUE lastModified 0 date of last modification of the package (should be updated when the package is changed) Date YYYY-MM-DD FALSE genotypeData 0 genotype data section TRUE +licence 0 short name of data licence that applies for this package String FALSE +licenceFile 0 relative path to a licence file String Path FALSE referenceGenomeAssembly 1 genotypeData reference genome name of the reference genome used, e.g. GRCh37 String FALSE referenceGenomeAssemblyURL 1 genotypeData reference assembly accession URL from a public database, such as NCBI or Ensembl String URL FALSE format 1 genotypeData genotype data file format String EIGENSTRAT;PLINK;VCF TRUE diff --git a/README.md b/README.md index 520bafb..ab6cae3 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,8 @@ contributor: email: paul.panther@example.edu packageVersion: 1.1.2 lastModified: 2021-01-28 +licence: CC BY-SA 4.0 +licenceFile: LICENCE.md genotypeData: format: PLINK genoFile: Switzerland_LNBA_Roswita.bed @@ -135,6 +137,18 @@ When the `packageVersion` is changed, then the `lastModified` date MUST be updat Packages SHOULD start at `packageVersion` `0.1.0`. +### Data licensing and the LICENSE.md file + +Data licences are a common way to grant the public permission to use a dataset under copyright law. + +Poseidon packages MAY specify a licence, and if so, SHOULD use [Creative Commons licences](https://creativecommons.org/share-your-work/cclicenses). + +Licences are documented in the `POSEIDON.yml` file in the `licence` field, or with a `licenceFile`, or with both the `licence` field and a `licenceFile`. `licence` SHOULD include a short string with name and version of the licence, e.g. `CC BY-SA 4.0` The `licenceFile`, typically named `LICENSE.md`, SHOULD include the full text of a licence, or a short notifier further contextualizing the entry in the `licence` field. For example: + +```default +The Poseidon package Switzerland_LNBA_Roswita © 2021 by Roswita Malone is licensed under Creative Commons Attribution-ShareAlike 4.0 International. To view a copy of this license, visit https://creativecommons.org/licenses/by-sa/4.0/ +``` + ### Genotype data Genotype data in Poseidon packages is stored either in (binary) PLINK, EIGENSTRAT or Variant Call Format (VCF). diff --git a/changelog.md b/changelog.md index 95e1198..fc22b31 100644 --- a/changelog.md +++ b/changelog.md @@ -20,6 +20,7 @@ - `referenceGenomeAssembly`, the reference genome name of the reference genome used, e.g. GRCh37 - `referenceGenomeAssemblyURL`, the reference assembly accession URL from a public database, such as NCBI or Ensembl - Modified the definition of the `genoFile` and `snpFile` fields to cover the case of gzipped data, for which the respective file names must end with `*.gz`. +- Added the optional fields `licence` and `licenceFile` to encode a data licence for a package. #### Changes to the `.janno` file From 740b0e06ef7364d93736bb4bd5c1647beda6b560 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Tue, 2 Dec 2025 16:18:30 +0100 Subject: [PATCH 67/80] british english --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ab6cae3..60a9b90 100644 --- a/README.md +++ b/README.md @@ -137,13 +137,13 @@ When the `packageVersion` is changed, then the `lastModified` date MUST be updat Packages SHOULD start at `packageVersion` `0.1.0`. -### Data licensing and the LICENSE.md file +### Data licensing and the LICENCE.md file Data licences are a common way to grant the public permission to use a dataset under copyright law. Poseidon packages MAY specify a licence, and if so, SHOULD use [Creative Commons licences](https://creativecommons.org/share-your-work/cclicenses). -Licences are documented in the `POSEIDON.yml` file in the `licence` field, or with a `licenceFile`, or with both the `licence` field and a `licenceFile`. `licence` SHOULD include a short string with name and version of the licence, e.g. `CC BY-SA 4.0` The `licenceFile`, typically named `LICENSE.md`, SHOULD include the full text of a licence, or a short notifier further contextualizing the entry in the `licence` field. For example: +Licences are documented in the `POSEIDON.yml` file in the `licence` field, or with a `licenceFile`, or with both the `licence` field and a `licenceFile`. `licence` SHOULD include a short string with name and version of the licence, e.g. `CC BY-SA 4.0` The `licenceFile`, typically named `LICENCE.md`, SHOULD include the full text of a licence, or a short notifier further contextualizing the entry in the `licence` field. For example: ```default The Poseidon package Switzerland_LNBA_Roswita © 2021 by Roswita Malone is licensed under Creative Commons Attribution-ShareAlike 4.0 International. To view a copy of this license, visit https://creativecommons.org/licenses/by-sa/4.0/ From 85489feef766f7d75f05595a19c28585dd551f9c Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Mon, 8 Dec 2025 14:43:34 +0100 Subject: [PATCH 68/80] update of changelog --- changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.md b/changelog.md index 95e1198..3f89f6f 100644 --- a/changelog.md +++ b/changelog.md @@ -33,6 +33,7 @@ - Added a `Custodian_Institution` column that documents the institution that curated the sampled remains at the time of sampling, with name, city and country. - Added four list columns to describe the cultural eras and archaeological cultures a sample is associated with: `Cultural_Era` + `Cultural_Era_URL` and `Archaeological_Culture` + `Archaeological_Culture_URL`. - Added the columns `Chromosomal_Anomalies` and `Chromosomal_Anomalies_Note` for genetic anomalies on the chromosome level detected for the sample. This includes extra, missing or irregual portions of chromosomal DNA like in gonosomal and autosomal aneuploidies. `Chromosomal_Anomalies` is not limited to a specific set of options, but a common notation is recommended (e.g. `XXY`, `XYY`, `XXX`, `X0`, `Trisomy21`, `Trisomy18`). +- Added a column `Alternative_IDs_Context` to document what exactly the "foreign keys" in `Alternative_IDs` are referring to. This is a list column with the same number and order of entries as `Alternative_IDs`. ##### Changed columns From 0182dab6e549fff88ffd5bb116ec3b40083cf990 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Tue, 9 Dec 2025 15:09:12 +0100 Subject: [PATCH 69/80] reverted wording in Alternative_ID about sample --- janno_columns.tsv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index 4bef578..aa29be5 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -4,7 +4,7 @@ Genetic_Sex genetic sex of the individual derived from this sample, only F, M or Group_Name meaningful population/group identifiers for the sample, must contain only the ASCII characters “A-Za-z0-9_-.”, can follow the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 (https://doi.org/10.1038/s41598-018-31123-z), or communicate additional categories that are meaningful for groupings in specific analyses, such as cultural labels, outlier status or relatedness to other samples, multiple entries separated by ;, the first value must be equal the group name in the .fam/.ind file String TRUE FALSE FALSE TRUE FALSE Individual_ID identifier for the sampled individual String FALSE FALSE FALSE FALSE TRUE Species Species name of the sample. Should follow binomial nomenclature as standard in Biology, e.g. Homo sapiens. String FALSE FALSE FALSE FALSE FALSE -Alternative_IDs alternative identifiers for the same sample, e.g. IDs in other databases or popular names like Ötzi/Iceman String TRUE FALSE FALSE FALSE FALSE +Alternative_IDs alternative identifiers for the same sampled idividual, e.g. IDs in other databases or popular names like Ötzi/Iceman String TRUE FALSE FALSE FALSE FALSE Relation_To other individuals (by Individual_ID) that are related to the individual this sample derived from, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE Relation_Degree relationship degree for relatives mentioned in Related_To, multiple values separated by ; in the same order as Related_To in case of multiple relations. Here, "identical" refers to identical twins. Identical individuals should be encoded through a common Individual_ID. String TRUE TRUE FALSE identical;first;second;thirdToFifth;sixthToTenth;unrelated;other FALSE FALSE Relation_Type relationship type for relatives mentioned in Related_To (e.g. sister_of, child_of, nephew_of), multiple values separated by ; in the same order as Related_To in case of multiple relations String TRUE FALSE FALSE FALSE FALSE From 8434d870a52b7c888186d132b84c4ee51c6fc7aa Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Tue, 9 Dec 2025 15:09:51 +0100 Subject: [PATCH 70/80] typo fix --- janno_columns.tsv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index aa29be5..526bd85 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -4,7 +4,7 @@ Genetic_Sex genetic sex of the individual derived from this sample, only F, M or Group_Name meaningful population/group identifiers for the sample, must contain only the ASCII characters “A-Za-z0-9_-.”, can follow the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 (https://doi.org/10.1038/s41598-018-31123-z), or communicate additional categories that are meaningful for groupings in specific analyses, such as cultural labels, outlier status or relatedness to other samples, multiple entries separated by ;, the first value must be equal the group name in the .fam/.ind file String TRUE FALSE FALSE TRUE FALSE Individual_ID identifier for the sampled individual String FALSE FALSE FALSE FALSE TRUE Species Species name of the sample. Should follow binomial nomenclature as standard in Biology, e.g. Homo sapiens. String FALSE FALSE FALSE FALSE FALSE -Alternative_IDs alternative identifiers for the same sampled idividual, e.g. IDs in other databases or popular names like Ötzi/Iceman String TRUE FALSE FALSE FALSE FALSE +Alternative_IDs alternative identifiers for the same sampled individual, e.g. IDs in other databases or popular names like Ötzi/Iceman String TRUE FALSE FALSE FALSE FALSE Relation_To other individuals (by Individual_ID) that are related to the individual this sample derived from, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE Relation_Degree relationship degree for relatives mentioned in Related_To, multiple values separated by ; in the same order as Related_To in case of multiple relations. Here, "identical" refers to identical twins. Identical individuals should be encoded through a common Individual_ID. String TRUE TRUE FALSE identical;first;second;thirdToFifth;sixthToTenth;unrelated;other FALSE FALSE Relation_Type relationship type for relatives mentioned in Related_To (e.g. sister_of, child_of, nephew_of), multiple values separated by ; in the same order as Related_To in case of multiple relations String TRUE FALSE FALSE FALSE FALSE From eb4735523e1ebd43644b21b9ee181f4eebf70910 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Wed, 10 Dec 2025 10:42:04 +0100 Subject: [PATCH 71/80] small change in wording, update of changelog --- changelog.md | 4 +++- janno_columns.tsv | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/changelog.md b/changelog.md index 3f89f6f..4f81f2e 100644 --- a/changelog.md +++ b/changelog.md @@ -29,16 +29,18 @@ ##### Added columns +- Added a column `Individual_ID` as an identifier on the level of (human/animal) individuals. - Added a column for the sampled `Species`, to make the schema more explicitly species-agnostic. +- Added a column `Alternative_IDs_Context` to document what exactly the "foreign keys" in `Alternative_IDs` are referring to. This is a list column with the same number and order of entries as `Alternative_IDs`. - Added a `Custodian_Institution` column that documents the institution that curated the sampled remains at the time of sampling, with name, city and country. - Added four list columns to describe the cultural eras and archaeological cultures a sample is associated with: `Cultural_Era` + `Cultural_Era_URL` and `Archaeological_Culture` + `Archaeological_Culture_URL`. - Added the columns `Chromosomal_Anomalies` and `Chromosomal_Anomalies_Note` for genetic anomalies on the chromosome level detected for the sample. This includes extra, missing or irregual portions of chromosomal DNA like in gonosomal and autosomal aneuploidies. `Chromosomal_Anomalies` is not limited to a specific set of options, but a common notation is recommended (e.g. `XXY`, `XYY`, `XXX`, `X0`, `Trisomy21`, `Trisomy18`). -- Added a column `Alternative_IDs_Context` to document what exactly the "foreign keys" in `Alternative_IDs` are referring to. This is a list column with the same number and order of entries as `Alternative_IDs`. ##### Changed columns - Introcuded a specific, limited character set for the `Poseidon_ID` and `Group_Name` column: The ASCII characters `A-Za-z0-9_-.`. - Adjusted the definition of the `Group_Name` column. The role of population labels as general analysis labels was emphasised, and the original recommendation for the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 toned down. +- Changed the definition of the `Relation_` columns (`Relation_To`, `Relation_Degree`, `Relation_Type`) to operate on the level of individuals, not samples (`Individual_ID`, instead of `Poseidon_ID`). - Made the `Collection_ID` column a list column that allows multiple entries separated by `;`. - Removed `ReferenceGenome` as an option for the `Capture_Type` column and further clarified its definition. - Changed the scaling of the columns `Endogenous` and `Damage` from percent (0-100) to fractions (0-1). diff --git a/janno_columns.tsv b/janno_columns.tsv index 550efcd..dcd0485 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -7,7 +7,7 @@ Species Species name of the sample. Should follow binomial nomenclature as stand Alternative_IDs alternative identifiers for the same sampled individual, e.g. IDs in other databases or popular names like Ötzi/Iceman. Alternative_IDs and Alternative_IDs_Context must have the same number and order of entries String TRUE FALSE FALSE FALSE FALSE Alternative_IDs_Context context of Alternative_IDs, so e.g. the name of the database (like AADRv62) where a respective identifier is used, or just “popular” for a common non-scientific name used in media and public discussions String TRUE FALSE FALSE FALSE FALSE Relation_To other individuals (by Individual_ID) that are related to the individual this sample derived from, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE -Relation_Degree relationship degree for relatives mentioned in Related_To, multiple values separated by ; in the same order as Related_To in case of multiple relations. Here, "identical" refers to identical twins. Identical individuals should be encoded through a common Individual_ID. String TRUE TRUE FALSE identical;first;second;thirdToFifth;sixthToTenth;unrelated;other FALSE FALSE +Relation_Degree relationship degree for relatives mentioned in Related_To, multiple values separated by ; in the same order as Related_To in case of multiple relations. Here, "identical" refers to identical twins. Samples from the same individual should be encoded through a common Individual_ID. String TRUE TRUE FALSE identical;first;second;thirdToFifth;sixthToTenth;unrelated;other FALSE FALSE Relation_Type relationship type for relatives mentioned in Related_To (e.g. sister_of, child_of, nephew_of), multiple values separated by ; in the same order as Related_To in case of multiple relations String TRUE FALSE FALSE FALSE FALSE Collection_ID alternative sample identifiers shared by the provider/owner of the sample (e.g. grave 40 skeleton 2), multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE Custodian_Institution institution that curated the sampled remains at the time of sampling, with name, city and country, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE From dc2bedac2666cd6d9b83c9c6783a84e2c8242500 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Wed, 10 Dec 2025 11:08:15 +0100 Subject: [PATCH 72/80] implemented the suggested changes --- POSEIDON_yml_fields.tsv | 5 +++-- README.md | 9 +++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/POSEIDON_yml_fields.tsv b/POSEIDON_yml_fields.tsv index 1bb01a5..5c81c92 100644 --- a/POSEIDON_yml_fields.tsv +++ b/POSEIDON_yml_fields.tsv @@ -8,9 +8,10 @@ email 1 contributor email of one contributor String Email TRUE orcid 1 contributor orcid of one contributor String ORCID FALSE packageVersion 0 package version (should be changed/incremented when the package is changed) String X.Y.Z TRUE lastModified 0 date of last modification of the package (should be updated when the package is changed) Date YYYY-MM-DD FALSE +licence 0 data licence section FALSE +name 1 licence short name of data licence that applies for this package, usually a Creative Commons licence String FALSE +file 1 licence relative path to a licence file (usually not necessary, the name is sufficient for standard licences) String Path FALSE genotypeData 0 genotype data section TRUE -licence 0 short name of data licence that applies for this package String FALSE -licenceFile 0 relative path to a licence file String Path FALSE referenceGenomeAssembly 1 genotypeData reference genome name of the reference genome used, e.g. GRCh37 String FALSE referenceGenomeAssemblyURL 1 genotypeData reference assembly accession URL from a public database, such as NCBI or Ensembl String URL FALSE format 1 genotypeData genotype data file format String EIGENSTRAT;PLINK;VCF TRUE diff --git a/README.md b/README.md index 60a9b90..2f2aaf6 100644 --- a/README.md +++ b/README.md @@ -85,8 +85,9 @@ contributor: email: paul.panther@example.edu packageVersion: 1.1.2 lastModified: 2021-01-28 -licence: CC BY-SA 4.0 -licenceFile: LICENCE.md +licence: + name: CC BY 4.0 + file: LICENCE.md genotypeData: format: PLINK genoFile: Switzerland_LNBA_Roswita.bed @@ -143,10 +144,10 @@ Data licences are a common way to grant the public permission to use a dataset u Poseidon packages MAY specify a licence, and if so, SHOULD use [Creative Commons licences](https://creativecommons.org/share-your-work/cclicenses). -Licences are documented in the `POSEIDON.yml` file in the `licence` field, or with a `licenceFile`, or with both the `licence` field and a `licenceFile`. `licence` SHOULD include a short string with name and version of the licence, e.g. `CC BY-SA 4.0` The `licenceFile`, typically named `LICENCE.md`, SHOULD include the full text of a licence, or a short notifier further contextualizing the entry in the `licence` field. For example: +Licences are documented in the `POSEIDON.yml` file in the `licence` section, either with just the `name`, or with a licence `file`, or with both the `name` and a `file`. `name` SHOULD include a short string with name and version of the licence, e.g. `CC BY 4.0`. The `file`, typically named `LICENCE.md`, MAY include the full text of a licence, or a short notifier further contextualizing the entry in the `name` field. For example: ```default -The Poseidon package Switzerland_LNBA_Roswita © 2021 by Roswita Malone is licensed under Creative Commons Attribution-ShareAlike 4.0 International. To view a copy of this license, visit https://creativecommons.org/licenses/by-sa/4.0/ +The Poseidon package Switzerland_LNBA_Roswita © 2021 by Roswita Malone is licensed under Creative Commons Attribution 4.0 International. To view a copy of this license, visit https://creativecommons.org/licenses/by/4.0/ ``` ### Genotype data From 766a1afe1780a6f19c8af69603818b43301b31dc Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Wed, 10 Dec 2025 11:09:40 +0100 Subject: [PATCH 73/80] update of changelog --- changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index fc22b31..6b269d6 100644 --- a/changelog.md +++ b/changelog.md @@ -16,11 +16,11 @@ #### Changes to the `POSEIDON.yml` file +- Added the optional section `licence` with the fields `name` and `file` to specify a data licence for a package. - Added two optional fields within the `genotypeData` structure: - `referenceGenomeAssembly`, the reference genome name of the reference genome used, e.g. GRCh37 - `referenceGenomeAssemblyURL`, the reference assembly accession URL from a public database, such as NCBI or Ensembl - Modified the definition of the `genoFile` and `snpFile` fields to cover the case of gzipped data, for which the respective file names must end with `*.gz`. -- Added the optional fields `licence` and `licenceFile` to encode a data licence for a package. #### Changes to the `.janno` file From 50d2c8282028a07c626824201bf133c8e10ca2e8 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Thu, 11 Dec 2025 13:03:20 +0100 Subject: [PATCH 74/80] renamed Carpenter2013 to WISC2013 --- README.md | 2 +- changelog.md | 2 +- janno_columns.tsv | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 35487aa..017727a 100644 --- a/README.md +++ b/README.md @@ -240,5 +240,5 @@ The following protocols are specified: - `1240K`: Target enrichment with hybridization capture optimised for sequences covering the 1240k SNP array, see [@Fu2015](https://doi.org/10.1038/nature14558), [@Haak2015](https://doi.org/10.1038/nature14317), [@Mathieson2015](https://doi.org/10.1038/nature16152). - `ArborComplete`, `ArborPrimePlus`, `ArborAncestralPlus`: Target enrichment with hybridization capture as provided by Arbor Biosciences in three different kits branded [myBaits Expert Human Affinities](https://arborbiosci.com/genomics/targeted-sequencing/mybaits/mybaits-expert/mybaits-expert-human-affinities). - `TwistAncientDNA`: Target enrichment with hybridization capture as provided by Twist Bioscience [@Rohland2022](https://doi.org/10.1101/gr.276728.122). -- `Carpenter2013`: Whole genome capture as described by [@Carpenter2013](10.1016/j.ajhg.2013.10.002). +- `WISC2013`: Whole genome capture as described by [@Carpenter2013](10.1016/j.ajhg.2013.10.002). - `OtherCapture`: Target enrichment with hybridization capture for any other set of sequences. diff --git a/changelog.md b/changelog.md index c4501f5..6cefcc2 100644 --- a/changelog.md +++ b/changelog.md @@ -43,7 +43,7 @@ - Changed the scaling of the columns `Endogenous` and `Damage` from percent (0-100) to fractions (0-1). - Allowed multiple values in the `Damage` column for estimates per library. - Slightly adjusted the definitions of `MT_Haplogroup` and `Y_Haplogroup` to better account for non-human data. -- Added the option `Carpenter2013` to `Capture_Type`. +- Added the option `WISC2013` to `Capture_Type`. ##### Removed columns diff --git a/janno_columns.tsv b/janno_columns.tsv index 0aedc02..0f9f3d0 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -32,7 +32,7 @@ Y_Haplogroup Y-chromosome haplogroup derived for the sample. For human data this Source_Material sampled material, multiple entries separated by ; String TRUE TRUE FALSE petrous;bone;tooth;hair;soft;sediment;other FALSE FALSE Nr_Libraries number of libraries produced for the sample Integer FALSE FALSE FALSE FALSE FALSE Library_Names identifiers of the libraries used to generate the genotype data for the sample, multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE -Capture_Type capture method for the individual libraries generated for the sample, multiple values separated by ; String TRUE TRUE FALSE Shotgun;1240K;ArborComplete;ArborPrimePlus;ArborAncestralPlus;TwistAncientDNA;Carpenter2013;OtherCapture FALSE FALSE +Capture_Type capture method for the individual libraries generated for the sample, multiple values separated by ; String TRUE TRUE FALSE Shotgun;1240K;ArborComplete;ArborPrimePlus;ArborAncestralPlus;TwistAncientDNA;WISC2013;OtherCapture FALSE FALSE UDG udg treatment for the libraries, mixed in case multiple libraries with different UDG treatment were merged String FALSE TRUE FALSE minus;half;plus;mixed FALSE FALSE Library_Built strandedness of the libraries, “mixed” in case multiple libraries with different protocols were merged String FALSE TRUE FALSE ds;ss;mixed FALSE FALSE Genotype_Ploidy ploidy of the genotypes for the sample String FALSE TRUE FALSE diploid;haploid FALSE FALSE From 8e7b3f6cefbb3bc2a2f93c4c5df90046c83dc6b5 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Tue, 6 Jan 2026 12:42:27 +0100 Subject: [PATCH 75/80] Mark 'name' field as required in POSEIDON_yml_fields Updated the 'name' field to indicate that it is required. --- POSEIDON_yml_fields.tsv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/POSEIDON_yml_fields.tsv b/POSEIDON_yml_fields.tsv index 5c81c92..79775a9 100644 --- a/POSEIDON_yml_fields.tsv +++ b/POSEIDON_yml_fields.tsv @@ -9,7 +9,7 @@ orcid 1 contributor orcid of one contributor String ORCID FALSE packageVersion 0 package version (should be changed/incremented when the package is changed) String X.Y.Z TRUE lastModified 0 date of last modification of the package (should be updated when the package is changed) Date YYYY-MM-DD FALSE licence 0 data licence section FALSE -name 1 licence short name of data licence that applies for this package, usually a Creative Commons licence String FALSE +name 1 licence short name of data licence that applies for this package, usually a Creative Commons licence String TRUE file 1 licence relative path to a licence file (usually not necessary, the name is sufficient for standard licences) String Path FALSE genotypeData 0 genotype data section TRUE referenceGenomeAssembly 1 genotypeData reference genome name of the reference genome used, e.g. GRCh37 String FALSE From b2dc9c6ed96487374f86c8b9c2a89df15dbfe696 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Tue, 6 Jan 2026 12:45:35 +0100 Subject: [PATCH 76/80] changed license spelling to US English --- POSEIDON_yml_fields.tsv | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/POSEIDON_yml_fields.tsv b/POSEIDON_yml_fields.tsv index 79775a9..0ed53d3 100644 --- a/POSEIDON_yml_fields.tsv +++ b/POSEIDON_yml_fields.tsv @@ -8,9 +8,9 @@ email 1 contributor email of one contributor String Email TRUE orcid 1 contributor orcid of one contributor String ORCID FALSE packageVersion 0 package version (should be changed/incremented when the package is changed) String X.Y.Z TRUE lastModified 0 date of last modification of the package (should be updated when the package is changed) Date YYYY-MM-DD FALSE -licence 0 data licence section FALSE -name 1 licence short name of data licence that applies for this package, usually a Creative Commons licence String TRUE -file 1 licence relative path to a licence file (usually not necessary, the name is sufficient for standard licences) String Path FALSE +license 0 data license section FALSE +name 1 license short name of data license that applies for this package, usually a Creative Commons licence String TRUE +file 1 license relative path to a license file (usually not necessary, the name is sufficient for standard licenses) String Path FALSE genotypeData 0 genotype data section TRUE referenceGenomeAssembly 1 genotypeData reference genome name of the reference genome used, e.g. GRCh37 String FALSE referenceGenomeAssemblyURL 1 genotypeData reference assembly accession URL from a public database, such as NCBI or Ensembl String URL FALSE From 22377f5d15cccd6a0e1c431911bb7609bc38a9ac Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Tue, 6 Jan 2026 13:00:30 +0100 Subject: [PATCH 77/80] added URL for the license --- POSEIDON_yml_fields.tsv | 1 + 1 file changed, 1 insertion(+) diff --git a/POSEIDON_yml_fields.tsv b/POSEIDON_yml_fields.tsv index 0ed53d3..facbd36 100644 --- a/POSEIDON_yml_fields.tsv +++ b/POSEIDON_yml_fields.tsv @@ -10,6 +10,7 @@ packageVersion 0 package version (should be changed/incremented when the packag lastModified 0 date of last modification of the package (should be updated when the package is changed) Date YYYY-MM-DD FALSE license 0 data license section FALSE name 1 license short name of data license that applies for this package, usually a Creative Commons licence String TRUE +url 1 license URL to the license String Path TRUE file 1 license relative path to a license file (usually not necessary, the name is sufficient for standard licenses) String Path FALSE genotypeData 0 genotype data section TRUE referenceGenomeAssembly 1 genotypeData reference genome name of the reference genome used, e.g. GRCh37 String FALSE From 3fc74a87d6e1f5c1fec99b0bcdefc38ee2c94bc7 Mon Sep 17 00:00:00 2001 From: Clemens Schmid Date: Thu, 8 Jan 2026 16:55:55 +0100 Subject: [PATCH 78/80] Individual_ID is not necessarily unique within one package --- janno_columns.tsv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/janno_columns.tsv b/janno_columns.tsv index 1fa5d05..20a3e26 100644 --- a/janno_columns.tsv +++ b/janno_columns.tsv @@ -2,12 +2,12 @@ janno_column_name description data_type multi choice range choice_options range_ Poseidon_ID sample identifier as defined by the genetics laboratory (e.g. I1234, BOT001), must contain only the ASCII characters “A-Za-z0-9_-.”, must fit to the values in the Poseidon package .fam/.ind file, must be unique within one package, if multiple datasets exist for the same individual different Poseidon_IDs are required String FALSE FALSE FALSE TRUE TRUE Genetic_Sex genetic sex of the individual derived from this sample, only F, M or U because the EIGENSTRAT and PLINK formats only support these three, edge cases (e.g. XXY, XYY, X0) can be documented in Chromosomal_Anomalies Char FALSE TRUE FALSE F;M;U TRUE FALSE Group_Name meaningful population/group identifiers for the sample, must contain only the ASCII characters “A-Za-z0-9_-.”, can follow the geographic-temporal nomenclature proposed by Eisenmann et al. 2018 (https://doi.org/10.1038/s41598-018-31123-z), or communicate additional categories that are meaningful for groupings in specific analyses, such as cultural labels, outlier status or relatedness to other samples, multiple entries separated by ;, the first value must be equal the group name in the .fam/.ind file String TRUE FALSE FALSE TRUE FALSE -Individual_ID identifier for the sampled individual String FALSE FALSE FALSE FALSE TRUE +Individual_ID identifier for the sampled individual String FALSE FALSE FALSE FALSE FALSE Species Species name of the sample. Should follow binomial nomenclature as standard in Biology, e.g. Homo sapiens. String FALSE FALSE FALSE FALSE FALSE Alternative_IDs alternative identifiers for the same sampled individual, e.g. IDs in other databases or popular names like Ötzi/Iceman. Alternative_IDs and Alternative_IDs_Context must have the same number and order of entries String TRUE FALSE FALSE FALSE FALSE Alternative_IDs_Context context of Alternative_IDs, so e.g. the name of the database (like AADRv62) where a respective identifier is used, or just “popular” for a common non-scientific name used in media and public discussions String TRUE FALSE FALSE FALSE FALSE Relation_To other individuals (by Individual_ID) that are related to the individual this sample derived from, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE -Relation_Degree relationship degree for relatives mentioned in Related_To, multiple values separated by ; in the same order as Related_To in case of multiple relations. Here, "identical" refers to identical twins. Samples from the same individual should be encoded through a common Individual_ID. String TRUE TRUE FALSE identical;first;second;thirdToFifth;sixthToTenth;unrelated;other FALSE FALSE +Relation_Degree relationship degree for relatives mentioned in Related_To, multiple values separated by ; in the same order as Related_To in case of multiple relations. Here, identical refers to identical twins. Samples from the same individual should be encoded through a common Individual_ID. String TRUE TRUE FALSE identical;first;second;thirdToFifth;sixthToTenth;unrelated;other FALSE FALSE Relation_Type relationship type for relatives mentioned in Related_To (e.g. sister_of, child_of, nephew_of), multiple values separated by ; in the same order as Related_To in case of multiple relations String TRUE FALSE FALSE FALSE FALSE Collection_ID alternative sample identifiers shared by the provider/owner of the sample (e.g. grave 40 skeleton 2), multiple values separated by ; String TRUE FALSE FALSE FALSE FALSE Custodian_Institution institution that curated the sampled remains at the time of sampling, with name, city and country, multiple entries separated by ; String TRUE FALSE FALSE FALSE FALSE From 1be349d67a9de7fa4692e6e341c606836af5627e Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Fri, 16 Jan 2026 14:55:50 +0100 Subject: [PATCH 79/80] fixed license spelling throughout --- POSEIDON_yml_fields.tsv | 2 +- README.md | 10 +++++----- changelog.md | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/POSEIDON_yml_fields.tsv b/POSEIDON_yml_fields.tsv index facbd36..3a9b4e0 100644 --- a/POSEIDON_yml_fields.tsv +++ b/POSEIDON_yml_fields.tsv @@ -9,7 +9,7 @@ orcid 1 contributor orcid of one contributor String ORCID FALSE packageVersion 0 package version (should be changed/incremented when the package is changed) String X.Y.Z TRUE lastModified 0 date of last modification of the package (should be updated when the package is changed) Date YYYY-MM-DD FALSE license 0 data license section FALSE -name 1 license short name of data license that applies for this package, usually a Creative Commons licence String TRUE +name 1 license short name of data license that applies for this package, usually a Creative Commons license String TRUE url 1 license URL to the license String Path TRUE file 1 license relative path to a license file (usually not necessary, the name is sufficient for standard licenses) String Path FALSE genotypeData 0 genotype data section TRUE diff --git a/README.md b/README.md index e8fa08c..245ba83 100644 --- a/README.md +++ b/README.md @@ -85,9 +85,9 @@ contributor: email: paul.panther@example.edu packageVersion: 1.1.2 lastModified: 2021-01-28 -licence: +license: name: CC BY 4.0 - file: LICENCE.md + file: license.md genotypeData: format: PLINK genoFile: Switzerland_LNBA_Roswita.bed @@ -138,13 +138,13 @@ When the `packageVersion` is changed, then the `lastModified` date MUST be updat Packages SHOULD start at `packageVersion` `0.1.0`. -### Data licensing and the LICENCE.md file +### Data licensing and the license.md file Data licences are a common way to grant the public permission to use a dataset under copyright law. -Poseidon packages MAY specify a licence, and if so, SHOULD use [Creative Commons licences](https://creativecommons.org/share-your-work/cclicenses). +Poseidon packages MAY specify a license, and if so, SHOULD use [Creative Commons licences](https://creativecommons.org/share-your-work/cclicenses). -Licences are documented in the `POSEIDON.yml` file in the `licence` section, either with just the `name`, or with a licence `file`, or with both the `name` and a `file`. `name` SHOULD include a short string with name and version of the licence, e.g. `CC BY 4.0`. The `file`, typically named `LICENCE.md`, MAY include the full text of a licence, or a short notifier further contextualizing the entry in the `name` field. For example: +Licences are documented in the `POSEIDON.yml` file in the `license` section, either with just the `name`, or with a license `file`, or with both the `name` and a `file`. `name` SHOULD include a short string with name and version of the license, e.g. `CC BY 4.0`. The `file`, typically named `license.md`, MAY include the full text of a license, or a short notifier further contextualizing the entry in the `name` field. For example: ```default The Poseidon package Switzerland_LNBA_Roswita © 2021 by Roswita Malone is licensed under Creative Commons Attribution 4.0 International. To view a copy of this license, visit https://creativecommons.org/licenses/by/4.0/ diff --git a/changelog.md b/changelog.md index b31c0ea..11732b6 100644 --- a/changelog.md +++ b/changelog.md @@ -16,7 +16,7 @@ #### Changes to the `POSEIDON.yml` file -- Added the optional section `licence` with the fields `name` and `file` to specify a data licence for a package. +- Added the optional section `license` with the fields `name` and `file` to specify a data license for a package. - Added two optional fields within the `genotypeData` structure: - `referenceGenomeAssembly`, the reference genome name of the reference genome used, e.g. GRCh37 - `referenceGenomeAssemblyURL`, the reference assembly accession URL from a public database, such as NCBI or Ensembl From 6c0baa528386e46cb7b13879a9ad4a47d65bfb19 Mon Sep 17 00:00:00 2001 From: Stephan Schiffels Date: Fri, 16 Jan 2026 14:56:51 +0100 Subject: [PATCH 80/80] added url to license example --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 245ba83..b660974 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,7 @@ packageVersion: 1.1.2 lastModified: 2021-01-28 license: name: CC BY 4.0 + url: https://creativecommons.org/licenses/by/4.0/ file: license.md genotypeData: format: PLINK