read.table

Τα αρχεία στην R, έχουν συχνά την μορφή πίνακα. Για παράδειγμα,

Όταν έχουμε να διαβάσουμε αρχείο που έχει την μορφή πίνακα, τότε ειναι άνετο να χρησιμοποιήσουμε την read.table για να επιτύχουμε το διάβασμα του αρχείου. Αυτό επειδή:

Τι να προσέξουμε όταν χρησιμοποιούμε την read.table

Από το help της read.table, βλέπουμε:

Πολλές παράμετροι/ορίσματα (arguments) έχουν default values, και αρκετές φορές απαιτούν την προσοχή μας. Θα αναφέρω εδώ τα κυριότερα λάθη που γίνονται:

head(a[,1])
[1] 993.456926487997,996.344512432301,1002.9049522845,981.177199785499,981.737242322287,1009.54256480874,1005.06731128825,1002.6366321257,997.66358427581,1002.7575039689,975.34427483316,1011.80784235083,995.796425925395,1005.41274384577,978.228713058314,1018.54356240205,1018.66267949564,996.216068524058,1004.65714789092,996.617913653077,1010.43127968557,998.301464108468,1012.6735350822,1007.18691390647,985.177185768268,1013.3259095895,1000.91220949223,997.392439920212,1005.84587140071,1016.40554548295,991.60997654342,990.277559108942,1000.6501925067,993.449979179174,1008.90288292987,1001.11810848764,987.886774516222,1005.98501087111,1008.16933098235,993.574524971808,994.721015220084,987.435886939145,1006.35586916495,1006.22402015169,991.622662765669,1005.66001245162,1002.23720103658,994.469200501775,996.335765162221,1000.2825626808,989.28790590324,999.167802501627,1001.61594134189,1009.27825628336,984.119387872325,994.591359212539,987.914095663009,1008.4511603889,993.799199636873,989.536701289128,999.727103735702,1013.63358914887,987.058475065915,1002.58459765364,1017.82134623588,1007.07784228985,1001.14108412861,992.921207670894,997.66108117335,1004.59362832158,1009.01754729916,1005.35391903929,997.308515255054,999.980080439436,985.563219054816,979.797928658951,977.507645693771,1020.75981500267,1013.77833032087,1009.6872690868,1005.40203066005,996.435535578621,998.57787947328,975.194158258408,989.743466911614,987.036926890537,1010.64448649358,1016.95422550074,1001.74251614221,1005.10736070713,1009.67495127404,1007.09357152913,992.096452419606,1009.26981989013,1003.23923716231,1004.59092662211,1007.2690128741,1007.03555783216,994.40732146991,1017.36338549366          
[2] 1010.02822245498,1003.74865443458,989.211402010104,1002.27037062099,1012.14218082908,1002.99078275565,995.261588855233,992.530597734282,990.202855163054,985.554722986871,1018.50754720085,991.498617288661,1003.76648346814,1014.31146406605,1002.31686050277,1005.4486964807,1003.71658445916,1006.28156307251,1001.05672721669,992.653283539781,1014.05507920138,1017.95158324006,996.059396793013,1005.7371634345,982.948434587923,1007.03379122209,1008.29033931833,994.559760726079,989.757185608184,998.010285364102,1025.06646170249,986.707275999505,990.866147528678,1009.12723847288,1008.89064520198,1007.84243198759,1001.88580063339,1009.6642654508,1011.1315127971,1022.88100457588,987.250713635475,1011.23537733987,996.450055373972,999.790332934059,1006.50131023969,983.319865756842,984.402124979059,1010.86781104592,988.052784452896,991.677714044023,1001.50547565951,1002.14000018879,1009.01110736318,987.529025082563,1018.1152001431,1010.93236556594,999.43984679503,984.617454076616,1011.22975832434,1010.56463267629,991.663649113431,998.90280564188,1012.6218177938,996.35365688121,1012.49989423453,1018.4656134234,1005.15601853978,999.475966477076,1010.47053112375,1009.53298634658,991.375637331666,1007.7093626876,986.225959753646,994.625786856291,1008.81943151925,1005.41261854165,1010.22220021548,978.363837007348,1004.40423301136,1009.84598679376,1010.00149843014,977.260987099242,990.863451528821,1006.15713138725,993.282529999979,1015.96363293799,1013.38169689755,1005.80596041963,1000.41022163597,1006.28545828341,1002.56271592289,982.116085568092,1016.98730690562,1006.93290459666,1005.52781518679,991.353100398251,1012.66866920287,998.537423734581,1002.24430764214,1002.68065413141    
[3] 978.13311533137,998.587772790448,985.101746507447,996.763414412336,999.851833865411,996.8735877907,994.330383793199,990.031355224354,1004.1189359713,999.81473132857,1002.85626470194,1006.04629407684,996.066939011385,992.253755637423,1012.53131650954,1000.09240110377,986.956162280217,1012.4674650923,1014.01679643986,989.656992914872,989.375739966191,1010.80734793586,990.944137445061,993.607396365458,998.840265203165,986.204167532515,999.282561521399,983.77519500429,995.885480083437,1007.54016215904,1005.2931925312,986.812038174686,1004.78791672255,1002.83993244011,1009.80725343388,987.382853248395,1009.981648513,998.510631884792,985.11885792689,1010.44774780148,1021.58265964723,1002.68748192797,1008.69325448339,990.007899665339,1006.4933697984,982.856473584137,992.2145574648,997.064103747021,1014.97500576292,998.052932502623,999.752686554193,991.240374789577,997.453438209169,1005.390880612,992.086670712348,1001.90495529573,995.565354546644,1001.47688290408,982.160126686088,989.803998481419,1005.53288305031,997.108402411839,984.809173687074,991.985895484748,992.030347282986,1000.91918108745,996.830618791079,997.852826333007,1004.00063321624,980.435349163739,1004.93128574174,997.907565922452,1006.18254501197,985.859071972202,982.792324807196,997.476671658292,994.648498414788,1004.45323888636,999.2530185894,995.680314199142,1007.52878990479,1004.76329536831,985.498512832943,1004.95491747248,1011.10306174591,999.011356058594,1005.40943577966,1000.27360565845,987.179101825386,1002.54261811002,996.594312344701,991.040319823675,1000.44386711301,998.891118069459,987.782449164077,1005.07541386067,993.769099297407,1009.40451975101,1004.1870982382,995.760719719228            
[4] 999.204257763455,1005.39977021629,1002.50327821414,1006.64382674108,994.471991660819,999.063372220481,999.278942280235,1004.32361124726,1004.71009614966,998.8084611677,989.430136764989,1012.53447243593,1003.07829337864,1001.65556875598,990.130138808488,985.375686123209,1022.34384814715,997.688236193239,984.731131773086,984.141903550999,982.038157503213,994.412156264745,1000.46538281418,999.680695615103,1000.99808712327,997.038098773306,1010.75468702888,992.615645265736,1002.688710053,1011.47851211625,1000.16247862814,999.507813333272,1012.73373706574,1004.52613779414,1015.02198957643,1002.72318417566,1003.25784253792,1019.04462426941,986.678816668517,1008.19958766411,995.144363564928,989.793017514805,1008.93665872358,986.5794284211,1012.87150340453,1001.10118823509,997.386173723274,996.733005284686,997.973410378806,1004.53510888199,995.795700082981,987.625819430211,1002.88865516012,998.295973443192,1007.48038405596,979.548467263335,986.032263996351,987.735719912834,990.016265751191,1000.91842691723,996.085049403101,991.154557452911,1012.69488623084,1001.89424311927,992.419948350342,986.961369432977,1017.4119857671,1006.41405900233,1000.47076245746,1003.07152096396,998.000469025043,992.026083944889,999.919499138466,1012.3258636651,991.009213949401,976.400076456102,991.837500011836,999.59752091804,1001.20178871749,989.096530786455,985.475552369225,990.2456289542,1002.3697676782,997.092004794761,979.282801536036,1008.81657593335,1002.33915453936,984.521584753653,1012.37337593924,1001.5281031197,1015.5750809711,994.130781276593,990.660511137912,998.44155845786,1006.51525687091,993.699780724224,1004.16083094186,1001.30072868524,1006.6093742892,995.982770960576         
[5] 998.250315406543,1010.88740775988,1000.17774394304,1003.02241706664,1007.32707700101,998.226130256302,999.825491485664,997.907111469205,1007.55292465705,1011.47950332156,1014.61617212316,994.429515357734,990.012660947962,1018.83248712546,1007.76284755815,1008.10895290097,1003.42149482093,991.401016455853,987.15086078764,995.100171136637,988.881733563345,985.711161682828,997.046146343561,988.033924421144,1008.09626333095,996.525165246087,999.606271853544,995.103016547621,988.739627580241,993.341870413207,992.156006148222,991.190362149273,994.313294590165,1005.64456125325,994.113337546907,1002.66453346653,989.108757380918,1000.37058116789,978.783141692487,979.580364991844,1022.65493381512,1003.04900380958,999.676062679767,1003.23028171756,994.072996658769,997.570636891661,992.730447824591,992.436383195399,993.51901602242,999.025048941899,984.11529677243,1010.73434229097,997.873392290931,985.213369655481,999.150929480476,1004.71829790607,999.111384209529,1006.27226995641,1000.67781638542,1013.20655020523,989.67033467673,986.2461309394,999.544127479773,983.884534083242,1023.39404969439,996.867785348652,1000.56165386033,1005.97058346754,997.666822844066,1027.73548806392,998.329597301156,982.242634364927,979.806724277022,1005.42454811821,998.223036737602,999.333778114886,1006.69552870536,1003.03981727504,1001.93726800796,1007.44696275163,1003.45914114967,998.475260273693,1004.34732135662,991.282414070583,999.52507753356,991.510867034857,999.435117324964,990.276397076251,1012.54662691776,1009.35500414306,988.154897133873,996.424791867575,1000.74594758945,1014.71461622223,994.240088935281,1005.77879557209,1001.33100932822,996.946058657098,1008.30293440511,1020.13382444674
[6] 1005.00254810134,987.069238407835,998.37686148838,1003.71914452447,989.763359145243,1009.461467982,993.038370308769,991.578133885636,1008.55753416788,1012.3780283493,998.480403861857,992.497637817331,1019.6904896425,1007.16224947672,1007.34173467782,979.712129145283,996.337330846669,1002.87478953243,1006.4473215705,988.581504264722,993.152181849845,999.737574350169,1005.31250996235,1002.85438364168,1001.24454505564,998.531403301698,995.401281836039,1008.83697347363,992.698715553287,985.833471168135,994.764383301646,1009.89810445267,995.031751168214,992.311225245655,1000.818682119,1000.98826134031,996.301064028469,997.567750229158,997.556865846521,999.305120152538,992.454972509934,1016.31223414301,1010.6014172764,1024.93510799251,975.762155969366,1006.69977642854,1003.36895803429,1001.40213860206,1005.00354946936,1025.25618642905,995.498627348677,1002.28418275194,1000.17858497729,995.165606941179,1001.32482270233,995.414439278561,1005.6641188085,980.325937765332,996.998763189483,990.451332435508,1018.28187660914,1019.08233325704,1022.06866286271,1014.31659247085,992.163978346399,989.225699888484,996.494612113619,998.671160271923,1007.09469093086,999.18679351503,1002.67757464232,999.19784409995,1009.90453528598,1016.44835508955,1004.4166190013,989.190444200802,998.629754998805,991.143749909145,1008.25404742851,997.172608437379,989.941881006074,996.436975480346,1002.0903025439,1010.10877449704,1011.4542396068,1019.61201637377,985.8405235308,1017.79043286627,1017.3545931936,998.253586307543,1017.27013086595,983.270360472021,985.865702244995,1003.97583542171,1006.59463977629,997.307197105145,1010.57642400177,1001.89531464484,994.93125014791,984.934258377461            
200 Levels: 1000.02942510461,1002.40052500648,1018.96049658728,1003.7037248891,1002.42158314098,1006.84929202393,982.377077410139,997.726578409448,998.066608370127,1011.02304849581,1007.77705378109,995.803658562637,989.73317134568,1002.48942402833,1000.0337506932,999.087607134945,988.767899679465,1013.47204301833,992.271687748919,999.293522979177,1010.32421150571,984.98016185908,1011.39513134483,1002.33144714842,995.562423459369,1000.94269409005,998.6403359843,989.633040069085,984.992715659061,1000.50680919636,997.20995593097,987.329769141665,984.733526503986,998.497724226789,1002.43474842672,980.193660458447,1007.59164494924,1002.55924313448,1013.11749344548,1026.08620954781,991.025182230964,986.772855295757,1002.15997873246,1005.92779992925,1015.65788830109,1004.6322991285,1004.47516194184,985.275716961018,1004.03272539203,1009.26066394218,994.517874762242,1003.85864750557,996.085938362587,1005.7595004892,1017.04278124226,1001.92456838933,1007.46787603259,975.766099273193,1002.07044986458,1006.66837244571,996.737596141731,1015.84337321075,982.999046132443,993.921254259202,997.357623611069,1006.80677944509,1014.74312734052,993.096449121042,995.805421115177,992.508280583698,995.683722762038,1012.80353635373,989.311046444849,1017.16863606338,992.708934374968,1004.19349686642,1015.82901788461,1006.03945475203,994.126227201014,991.93226201609,1002.11326496114,988.522917274773,1006.90847586037,994.726163497567,1027.52559552088,974.458151860948,991.164496698076,1008.34526191042,998.352685946053,1004.62399753468,1007.32094669917,1018.39949045124,1004.64084570196,1006.20816050277,1006.73960944077,1018.80056086146,988.406402716513,1000.27120628192,993.551904373455,1002.75071452175 ...

Βλέπουμε ότι δεν έχει διαβάσει σωστά το αρχείο, επειδή έχουμε χρησιμοποιήσει το default ειναι το ‘white space’, ενώ το αρχείο μας έχει ‘,’

Ο σωστός τρόπος διαβάσματος θα ειναι

a = read.table(file="example1.csv", header=TRUE, sep=",")
head(a[,1])

Θεωρήστε το αρχείο

A file with missing values

A file with missing values

Βλεπουμε ποιες τιμές λείπουν στο αρχείο αυτό.

a = read.table("example2.tsv", h=F)
incomplete final line found by readTableHeader on 'example2.tsv'Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  : 
  line 2 did not have 3 elements

Αυτό ειναι ένα συνηθισμένο σφάλμα. Όμως αν το ψάξετε στο google τότε θα βρείτε συχνά να προτείνει την λύση fill=TRUE

a = read.table(file="example2.tsv", header=F, fill=TRUE)
a

Η R θα το διαβάσει, όμως Το διαβάζει λάθος.

Τι πρέπει να κάνετε λοιπόν;

Εδώ έχουμε τις εξής συμπεριφορές. Ας δούμε το παράδειγμα:

Βάζοντας header=T, ενώ δεν έχει, ανάγκασα την R να δεχτει την πρώτη γραμμή ως επικεφαλίδα. Επειδή η πρώτη γραμμή ειναι αριθμητική, η R έβαλε το ‘Χ’ μπροστά από το νούμερο. Έτσι: Χάσαμε μία γραμμή δεδομένων και Έχουμε επικεφαλίδα χωρίς νόημα. Αν λοιπόν δείτε επικεφαλίδα που να ειναι Χ και μετά νούμερα, τότε κάτι έχει πάει στραβά.

Το δευτερο σφάλμα ειναι να βάζουμε header=F, ενώ υπάρχει επικεφαλίδα. Τότε:

head(a[,1])
[1] Individual1      993.456926487997 1010.02822245498 978.13311533137 
[5] 999.204257763455 998.250315406543
201 Levels: 1000.02942510461 1000.1320276211 ... Individual1

Εδώ θα συμβούν 2 λάθη.

  1. Το “Individual1” ως επικεφαλίδα, θα γίνει μέρος των δεδομένων, που προφανώς ειναι λάθος
  2. Οι τιμές απο αριθμητικές θα γίνουν factors, επειδή το data.frame δεν μπορεί να έχει και αριθμούς και χαρακτήρες στην ίδια στήλη. Θεωρεί λοιπόν ότι πρόκειται για “ονομαστικές μεταβλητές”, nominal variables.
file with spaces within columns

file with spaces within columns

Εδώ το “ένα δυο” ειναι σε μία στήλη κανονικά. Υπάρχουν δύο λύσεις:

  1. Το κενό μέσα στην στήλη να ειναι “space”, κι εμείς να βάλουμε tab separator.
  2. To ένα δυο σε εισαγωγικά και να δηλώσουμε στο quotes= τα εισαγωγικά.

Έτσι αν δεν κάνουμε τίποτα από αυτά, παίρνουμε το…

a = read.table(file="example3.tsv", header=F)
incomplete final line found by readTableHeader on 'example3.tsv'Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  : 
  line 2 did not have 3 elements

Εδώ ήμασταν τυχεροί και η R έδωσε λάθος. Θα μπορούσε όμως και να μην δώσει αν τα κενά στη στήλη και τα missing data μαζί έφτιαχναν μια “ολόκληρη” σειρά.

Ένα άλλο σημαντικό χαρακτηριστικό της read.table ειναι το argument colClasses. Με αυτό καθορίζουμε τι είδους δεδομένα υπάρχουν στις στήλες.

Για παράδειγμα δείτε το αρχείο

less example5.tsv

00000000010110010000000010000
00000000010110010000001010000
00010011101000000101010001010
00001000010110000000000010001
00100000010110000000000010001
00000000010110010000000010000
00000101100001101000010000010
00000000010110010000000010000
10000000010110000010100000100
01000000010110000000000110000

Οι γραμμές από 0 και 1 δεν ειναι αριθμοί αλλά δεδομένα presence/absence (μεταλλάξεων). Όμως η R θα το διαβάσει σαν αριθμό. Αυτό που μπορούμε να κάνουμε ειναι να θέσουμε οτι ειναι χαρακτήρες.

LS0tCnRpdGxlOiAiUmVhZGluZyBmaWxlcy4gVGhlIHJlYWQudGFibGUgZnVuY3Rpb24iCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCiMjIHJlYWQudGFibGUKzqTOsSDOsc+Bz4fOtc6vzrEgz4PPhM63zr0gUiwgzq3Ph86/z4XOvSDPg8+Fz4fOvc6sIM+EzrfOvSDOvM6/z4HPhs6uIM+Azq/Ovc6xzrrOsS4gzpPOuc6xIM+AzrHPgc6szrTOtc65zrPOvM6xLCAKCiogzpHPgc+HzrXOr86/IM68zrUgzrXOus+Gz4HOrM+DzrXOuc+CIM6zzr/Ovc65zrTOr8+Jzr0uIM6jz4TOsSDOsc+Bz4fOtc6vzrEgzrHPhc+EzqwsIM+EzrEgzrPOv869zq/OtM65zrEgz4PPhc69zq7OuM+Jz4IgzrHOvc+EzrnPgM+Bzr/Pg8+Jz4DOtc+Fzr/Ovc+EzrHOuSDPg8+EzrnPgiDOs8+BzrHOvM68zq3PgiwgzrXOvc+OIM+Dz4TOuc+CIM+Dz4TOrs67zrXPgiDPhc+AzqzPgc+Hzr/Phc69IM+EzrEgzqzPhM6/zrzOsS4KKiDOkc+Bz4fOtc6vzr8gzrzOtSDOsc67zrvOt867zr/Phc+Hzq/Otc+CIM6zzr/Ovc65zrTOr8+Jzr0uIM6VzrTPjiDPg8+Fzr3Ors64z4nPgiDOv865IM6zz4HOsc68zrzOrc+CIM61zrnOvc6xzrkgzrTOuc6xz4bOv8+BzrXPhM65zrrOrCDOrM+Ezr/OvM6xLCDOtc69z44gzr/OuSDPg8+Ezq7Ou861z4IgzrXOuc69zrHOuSDOv865IM6yzqzPg861zrnPgiDPhM+Jzr0gzrPOv869zrnOtM6vz4nOvSDPg861IM60zrnOsc+Gzr/Pgc61z4TOuc66zq3PgiDOuM6tz4POtc65z4IuIAoKzozPhM6xzr0gzq3Ph86/z4XOvM61IM69zrEgzrTOuc6xzrLOrM+Dzr/Phc68zrUgzrHPgc+HzrXOr86/IM+Azr/PhSDOrc+HzrXOuSDPhM63zr0gzrzOv8+Bz4bOriDPgM6vzr3Osc66zrEsIM+Ez4zPhM61IM61zrnOvc6xzrkgzqzOvc61z4TOvyDOvc6xIM+Hz4HOt8+DzrnOvM6/z4DOv865zq7Pg86/z4XOvM61IM+EzrfOvSByZWFkLnRhYmxlIM6zzrnOsSDOvc6xIM61z4DOuc+Ez43Ph86/z4XOvM61IM+Ezr8gzrTOuc6szrLOsc+DzrzOsSDPhM6/z4UgzrHPgc+HzrXOr86/z4UuIM6Rz4XPhM+MIM61z4DOtc65zrTOrjoKCiogzpcgcmVhZC50YWJsZSDOuM6xIM6xz4DOv864zrfOus61z4XPg861zrkgz4TOvyDOsc+Bz4fOtc6vzr8gz4POtSDOtM6/zrzOriBkYXRhLmZyYW1lIM6/z4DPjM+EzrUgzrXOuc69zrHOuSDOtc+FzrrOv867zrcgzrcgz4DOtc+BzrHOuc+Ezq3Pgc+JIM61z4DOtc6+zrXPgc6zzrHPg86vzrEgz4TOv8+FLiAKKiDOjM68z4nPgiwgz4DPgc6tz4DOtc65IM69zrEgz4DPgc6/z4POrc6+zr/Phc68zrUgzrTOuc6sz4bOv8+BzrEgz4DPgc6szrPOvM6xz4TOsSDPjs+Dz4TOtSDPhM6/IM6xz4HPh861zq/OvyDOvc6xIM60zrnOsc6yzrHPg8+EzrXOryDPg8+Jz4PPhM6sLiAKCiMjIM6kzrkgzr3OsSDPgM+Bzr/Pg86tzr7Ov8+FzrzOtSDPjM+EzrHOvSDPh8+BzrfPg865zrzOv8+Azr/Ouc6/z43OvM61IM+EzrfOvSByZWFkLnRhYmxlCgrOkc+Az4wgz4TOvyBoZWxwIM+EzrfPgiByZWFkLnRhYmxlLCDOss67zq3PgM6/z4XOvM61OgoKYGBge3J9Cj9yZWFkLnRhYmxlCmBgYAoKzqDOv867zrvOrc+CIM+AzrHPgc6szrzOtc+Ez4HOv865L86/z4HOr8+DzrzOsc+EzrEgKGFyZ3VtZW50cykgzq3Ph86/z4XOvSBkZWZhdWx0IHZhbHVlcywgzrrOsc65IM6xz4HOus61z4TOrc+CIM+Gzr/Pgc6tz4IgzrHPgM6xzrnPhM6/z43OvSDPhM63zr0gz4DPgc6/z4POv8+Hzq4gzrzOsc+CLiDOmM6xIM6xzr3Osc+Gzq3Pgc+JIM61zrTPjiDPhM6xIM66z4XPgc65z4zPhM61z4HOsSDOu86szrjOtyDPgM6/z4UgzrPOr869zr/Ovc+EzrHOuToKCiogz4TOvyDPjM+BzrnPg868zrEgc2VwPSAuIM6kzr8gz4zPgc65z4POvM6xIM6xz4XPhM+MIM66zrHOuM6/z4HOr862zrXOuSDPgM+Jz4IgzrTOuc6xz4fPic+Bzq/Ots6/zr3PhM6xzrkgzr/OuSDPg8+Ezq7Ou861z4IuIAoKCmBgYHtyfQphID0gcmVhZC50YWJsZShmaWxlPSJleGFtcGxlMS5jc3YiLCBoZWFkZXI9VFJVRSkKaGVhZChhWywxXSkKYGBgCgrOks67zq3PgM6/z4XOvM61IM+Mz4TOuSDOtM61zr0gzq3Ph861zrkgzrTOuc6xzrLOrM+DzrXOuSDPg8+Jz4PPhM6sIM+Ezr8gzrHPgc+HzrXOr86/LCDOtc+AzrXOuc60zq4gzq3Ph86/z4XOvM61IM+Hz4HOt8+DzrnOvM6/z4DOv865zq7Pg861zrkgz4TOvyBkZWZhdWx0IM61zrnOvc6xzrkgz4TOvyAnd2hpdGUgc3BhY2UnLCDOtc69z44gz4TOvyDOsc+Bz4fOtc6vzr8gzrzOsc+CIM6tz4fOtc65ICcsJwoKzp8gz4PPic+Dz4TPjM+CIM+Ez4HPjM+Azr/PgiDOtM65zrHOss6sz4POvM6xz4TOv8+CIM64zrEgzrXOuc69zrHOuQpgYGB7cn0KYSA9IHJlYWQudGFibGUoZmlsZT0iZXhhbXBsZTEuY3N2IiwgaGVhZGVyPVRSVUUsIHNlcD0iLCIpCmhlYWQoYVssMV0pCmBgYAoKKiDOpc+AzqzPgc+Hzr/Phc69IG1pc3NpbmcgdmFsdWVzIM+Dz4TOvyDOsc+Bz4fOtc6vzr8uIM6MzpzOqc6jIM6fzqfOmSDOqc6jIM6dzpEsIM6RzqDOm86RIM6UzpXOnSDOpc6gzpHOoc6nzpXOmSDOpM6ZzqDOn86kzpEKCs6YzrXPic+Bzq7Pg8+EzrUgz4TOvyDOsc+Bz4fOtc6vzr8KCiFbQSBmaWxlIHdpdGggbWlzc2luZyB2YWx1ZXNdKC4vaW0xLnBuZykKCs6SzrvOtc+Azr/Phc68zrUgz4DOv865zrXPgiDPhM65zrzOrc+CIM67zrXOr8+Azr/Phc69IM+Dz4TOvyDOsc+Bz4fOtc6vzr8gzrHPhc+Ez4wuIAoKCmBgYHtyfQphID0gcmVhZC50YWJsZSgiZXhhbXBsZTIudHN2IiwgaD1GKQpkaW0oYSkKYGBgCgoKzpHPhc+Ez4wgzrXOuc69zrHOuSDOrc69zrEgz4PPhc69zrfOuM65z4POvM6tzr3OvyDPg8+GzqzOu868zrEuICoqzozOvM+Jz4IgzrHOvSDPhM6/IM+IzqzOvs61z4TOtSDPg8+Ezr8gZ29vZ2xlKiogz4TPjM+EzrUgzrjOsSDOss+BzrXOr8+EzrUgz4PPhc+Hzr3OrCDOvc6xIM+Az4HOv8+EzrXOr869zrXOuSDPhM63zr0gzrvPjc+DzrcgYGZpbGw9VFJVRWAKCmBgYHtyfQphID0gcmVhZC50YWJsZShmaWxlPSJleGFtcGxlMi50c3YiLCBoZWFkZXI9RiwgZmlsbD1UUlVFKQphCmBgYAoKzpcgUiDOuM6xIM+Ezr8gzrTOuc6xzrLOrM+DzrXOuSwgz4zOvM+Jz4IgKirOpM6/IM60zrnOsc6yzqzOts61zrkgzrvOrM64zr/PgioqLiAKCioqzqTOuSDPgM+Bzq3PgM61zrkgzr3OsSDOus6szr3Otc+EzrUgzrvOv865z4DPjM69OyoqCgoqIM6UzrXOr8+EzrUgz4TOvyDOsc+Bz4fOtc6vzr8uIM6VzrnOtM65zrrOrCDOsc69IM61zrnOvc6xzrkgzrzOuc66z4HPjCDOsc+Fz4TPjCDOtM61zr0gzrXOuc69zrHOuSDPgM+Bz4zOss67zrfOvM6xLiDOkc69IM+DzrHPgiDOss6zzqzOu861zrkgzrvOrM64zr/PgiDOv8+EzrkgzrrOrM+Azr/Ouc61z4IgzrPPgc6xzrzOvM6tz4IgzrTOtc69IM6tz4fOv8+Fzr0gz4TOvyDPg8+Jz4PPhM+MIM6xz4HOuc64zrzPjCDPg8+EzrfOu8+Ozr0gz4DPgc6tz4DOtc65IM69zrEgzrXOuc+Dz4TOtSDPhc+Azr/PiM65zrHPg868zq3Ovc6/zrkgz4zPhM65IM66zqzPhM65IM+AzqzOtc65IM+Dz4TPgc6xzrLOrC4gCiogzpLPgc61zq/PhM61IM+Azr/Ouc6/z4IgzrXOuc69zrHOuSDOvyDOtM65zrHPh8+Jz4HOuc+Dz4TOrs+CIM6zz4HOsc68zrzPjs69IChjb2x1bW4gZGVsaW1pdGVyKS4gzqfPgc63z4POuc68zr/PgM6/zrnOrs+Dz4TOtSDOsc+Fz4TPjM69LCDOus6xzrkgz4zPh865IM+Ezr8gzrPOtc69zrnOus+MIHdoaXRlIHNwYWNlLiAKKiDOkc+Azr/Phs61z4XOs861z4TOtSDPhM6/IGBmaWxsPVRSVUVgLiAqKs6Rzr0gzrrOrM+EzrkgzrTOtc69IM60z47Pg861zrkgzrvOrM64zr/PgiwgzrTOtc69IM+DzrfOvM6xzq/Ovc61zrkgzr/PhM65IM61zrnOvc6xzrkgz4PPic+Dz4TPjCDOus6xz4QnzrHOvc6szrPOus63KiouIArOlM63zrvOsc60zq46CmBgYHtyfQphID0gcmVhZC50YWJsZShmaWxlPSJleGFtcGxlMi50c3YiLCBoZWFkZXI9Riwgc2VwPSJcdCIpCmEKYGBgCgoKKiDOpc+AzqzPgc+HzrXOuSAozrTOtc69IM+Fz4DOrM+Bz4fOtc65KSDOtc+AzrnOus61z4bOsc67zq/OtM6xIM66zrHOuSDOss6szrbOv8+FzrzOtSBoZWFkZXI9RiAoaGVhZGVyID0gVFJVRSkKCs6VzrTPjiDOrc+Hzr/Phc68zrUgz4TOuc+CIM61zr7Ors+CIM+Dz4XOvM+AzrXPgc65z4bOv8+Bzq3Pgi4gzpHPgiDOtM6/z43OvM61IM+Ezr8gz4DOsc+BzqzOtM61zrnOs868zrE6CgpgYGB7cn0KYSA9IHJlYWQudGFibGUoZmlsZT0iZXhhbXBsZTIudHN2IiwgaGVhZGVyPVQsIHNlcD0iXHQiKQphCmBgYArOks6szrbOv869z4TOsc+CIGhlYWRlcj1ULCDOtc69z44gzrTOtc69IM6tz4fOtc65LCDOsc69zqzOs866zrHPg86xIM+EzrfOvSBSIM69zrEgzrTOtc+Hz4TOtc65IM+EzrfOvSDPgM+Bz47PhM63IM6zz4HOsc68zrzOriDPic+CIM61z4DOuc66zrXPhs6xzrvOr860zrEuIM6Vz4DOtc65zrTOriDOtyDPgM+Bz47PhM63IM6zz4HOsc68zrzOriDOtc65zr3Osc65IM6xz4HOuc64zrzOt8+EzrnOus6uLCDOtyBSIM6tzrLOsc67zrUgz4TOvyAnzqcnIM68z4DPgc6/z4PPhM6sIM6xz4DPjCDPhM6/IM69zr/Pjc68zrXPgc6/LiAKzojPhM+Dzrk6ICoqzqfOrM+DzrHOvM61IM68zq/OsSDOs8+BzrHOvM68zq4gzrTOtc60zr/OvM6tzr3Pic69KiogzrrOsc65ICoqzojPh86/z4XOvM61IM61z4DOuc66zrXPhs6xzrvOr860zrEgz4fPic+Bzq/PgiDOvc+MzrfOvM6xKiouIM6Rzr0gzrvOv865z4DPjM69IM60zrXOr8+EzrUgzrXPgM65zrrOtc+GzrHOu86vzrTOsSDPgM6/z4Ugzr3OsSDOtc65zr3Osc65IM6nIM66zrHOuSDOvM61z4TOrCDOvc6/z43OvM61z4HOsSwgz4TPjM+EzrUgzrrOrM+Ezrkgzq3Ph861zrkgz4DOrM61zrkgz4PPhM+BzrHOss6sLiAKCs6kzr8gzrTOtc+Fz4TOtc+Bzr8gz4PPhs6szrvOvM6xIM61zrnOvc6xzrkgzr3OsSDOss6szrbOv8+FzrzOtSBoZWFkZXI9RiwgzrXOvc+OIM+Fz4DOrM+Bz4fOtc65IM61z4DOuc66zrXPhs6xzrvOr860zrEuIM6kz4zPhM61OgoKYGBge3J9CmEgPSByZWFkLnRhYmxlKGZpbGU9ImV4YW1wbGUxLmNzdiIsIGhlYWRlcj1GLCBzZXA9IiwiKQpoZWFkKGFbLDFdKQpgYGAKzpXOtM+OIM64zrEgz4PPhc68zrLOv8+Nzr0gMiDOu86szrjOty4gCgoxLiDOpM6/ICJJbmRpdmlkdWFsMSIgz4nPgiDOtc+AzrnOus61z4bOsc67zq/OtM6xLCDOuM6xIM6zzq/Ovc61zrkgzrzOrc+Bzr/PgiDPhM+Jzr0gzrTOtc60zr/OvM6tzr3Pic69LCDPgM6/z4Ugz4DPgc6/z4bOsc69z47PgiDOtc65zr3Osc65IM67zqzOuM6/z4IKMi4gzp/OuSDPhM65zrzOrc+CIM6xz4DOvyDOsc+BzrnOuM68zrfPhM65zrrOrc+CIM64zrEgzrPOr869zr/Phc69IGZhY3RvcnMsIM61z4DOtc65zrTOriDPhM6/IGRhdGEuZnJhbWUgzrTOtc69IM68z4DOv8+BzrXOryDOvc6xIM6tz4fOtc65IM66zrHOuSDOsc+BzrnOuM68zr/Pjc+CIM66zrHOuSDPh86xz4HOsc66z4TOrs+BzrXPgiDPg8+EzrfOvSDOr860zrnOsSDPg8+Ezq7Ou863LiDOmM61z4nPgc61zq8gzrvOv865z4DPjM69IM+Mz4TOuSDPgM+Bz4zOus61zrnPhM6xzrkgzrPOuc6xICLOv869zr/OvM6xz4PPhM65zrrOrc+CIM68zrXPhM6xzrLOu863z4TOrc+CIiwgbm9taW5hbCB2YXJpYWJsZXMuIAoKKiDOiM69zrEgzqzOu867zr8gz4PPhc69zrfOuM65z4POvM6tzr3OvyDOu86xzrjOv8+CLCDOtc65zr3Osc65IM69zrEgzrTOuc6xzrLOsc+Dz4TOv8+Nzr0gz4PPhM6uzrvOtc+CIM+Azr/PhSDPgM61z4HOuc6tz4fOv8+Fzr0gzrrOtc69zrEuIM6TzrnOsSDPgM6xz4HOrM60zrXOuc6zzrzOsSDPhM6/IM6xz4HPh861zq/OvyAKCiFbZmlsZSB3aXRoIHNwYWNlcyB3aXRoaW4gY29sdW1uc10oLi9leDIucG5nKQoKzpXOtM+OIM+Ezr8gIs6tzr3OsSDOtM+Fzr8iIM61zrnOvc6xzrkgz4POtSDOvM6vzrEgz4PPhM6uzrvOtyDOus6xzr3Ov869zrnOus6sLiDOpc+AzqzPgc+Hzr/Phc69IM60z43OvyDOu8+Nz4POtc65z4I6CgoxLiDOpM6/IM66zrXOvc+MIM68zq3Pg86xIM+Dz4TOt869IM+Dz4TOrs67zrcgzr3OsSDOtc65zr3Osc65ICJzcGFjZSIsIM66zrkgzrXOvM61zq/PgiDOvc6xIM6yzqzOu86/z4XOvM61IHRhYiBzZXBhcmF0b3IuCjIuIFRvIM6tzr3OsSDOtM+Fzr8gz4POtSDOtc65z4POsc6zz4nOs865zrrOrCDOus6xzrkgzr3OsSDOtM63zrvPjs+Dzr/Phc68zrUgz4PPhM6/IHF1b3Rlcz0gz4TOsSDOtc65z4POsc6zz4nOs865zrrOrC4gCgrOiM+Ez4POuSDOsc69IM60zrXOvSDOus6szr3Ov8+FzrzOtSDPhM6vz4DOv8+EzrEgzrHPgM+MIM6xz4XPhM6sLCDPgM6xzq/Pgc69zr/Phc68zrUgz4TOvy4uLgoKYGBge3J9CmEgPSByZWFkLnRhYmxlKGZpbGU9ImV4YW1wbGUzLnRzdiIsIGhlYWRlcj1GKQpgYGAKCs6VzrTPjiDOrs68zrHPg8+EzrHOvSDPhM+Fz4fOtc+Bzr/OryDOus6xzrkgzrcgUiDOrc60z4nPg861IM67zqzOuM6/z4IuIM6YzrEgzrzPgM6/z4HOv8+Nz4POtSDPjM68z4nPgiDOus6xzrkgzr3OsSDOvM63zr0gzrTPjs+DzrXOuSDOsc69IM+EzrEgzrrOtc69zqwgz4PPhM63IM+Dz4TOrs67zrcgzrrOsc65IM+EzrEgbWlzc2luZyBkYXRhIM68zrHOts6vIM6tz4bPhM65zrHPh869zrHOvSDOvM65zrEgIs6/zrvPjM66zrvOt8+BzrciIM+DzrXOuc+BzqwuIAoKCmBgYHtyfQphID0gcmVhZC50YWJsZShmaWxlPSJleGFtcGxlNC50c3YiLCBoZWFkZXI9RiwgcXVvdGU9IlwiJyIpCmEKYGBgCgoKzojOvc6xIM6szrvOu86/IM+DzrfOvM6xzr3PhM65zrrPjCDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus+MIM+EzrfPgiByZWFkLnRhYmxlIM61zrnOvc6xzrkgz4TOvyBhcmd1bWVudCBgY29sQ2xhc3Nlc2AuIM6czrUgzrHPhc+Ez4wgKirOus6xzrjOv8+Bzq/Ots6/z4XOvM61Kiogz4TOuSDOtc6vzrTOv8+Fz4IgzrTOtc60zr/OvM6tzr3OsSDPhc+AzqzPgc+Hzr/Phc69IM+Dz4TOuc+CIM+Dz4TOrs67zrXPgi4gCgrOk865zrEgz4DOsc+BzqzOtM61zrnOs868zrEgzrTOtc6vz4TOtSDPhM6/IM6xz4HPh861zq/OvwoKYGBge2Jhc2h9Cmxlc3MgZXhhbXBsZTUudHN2CgowMDAwMDAwMDAxMDExMDAxMDAwMDAwMDAxMDAwMAowMDAwMDAwMDAxMDExMDAxMDAwMDAwMTAxMDAwMAowMDAxMDAxMTEwMTAwMDAwMDEwMTAxMDAwMTAxMAowMDAwMTAwMDAxMDExMDAwMDAwMDAwMDAxMDAwMQowMDEwMDAwMDAxMDExMDAwMDAwMDAwMDAxMDAwMQowMDAwMDAwMDAxMDExMDAxMDAwMDAwMDAxMDAwMAowMDAwMDEwMTEwMDAwMTEwMTAwMDAxMDAwMDAxMAowMDAwMDAwMDAxMDExMDAxMDAwMDAwMDAxMDAwMAoxMDAwMDAwMDAxMDExMDAwMDAxMDEwMDAwMDEwMAowMTAwMDAwMDAxMDExMDAwMDAwMDAwMDExMDAwMApgYGAKCs6fzrkgzrPPgc6xzrzOvM6tz4IgzrHPgM+MIDAgzrrOsc65IDEgzrTOtc69IM61zrnOvc6xzrkgzrHPgc65zrjOvM6/zq8gzrHOu867zqwgzrTOtc60zr/OvM6tzr3OsSBwcmVzZW5jZS9hYnNlbmNlICjOvM61z4TOsc67zrvOrM6+zrXPic69KS4gzozOvM+Jz4IgzrcgUiDOuM6xIM+Ezr8gzrTOuc6xzrLOrM+DzrXOuSDPg86xzr0gzrHPgc65zrjOvM+MLiDOkc+Fz4TPjCDPgM6/z4UgzrzPgM6/z4HOv8+NzrzOtSDOvc6xIM66zqzOvc6/z4XOvM61IM61zrnOvc6xzrkgzr3OsSDOuM6tz4POv8+FzrzOtSDOv8+EzrkgzrXOuc69zrHOuSDPh86xz4HOsc66z4TOrs+BzrXPgi4gCgpgYGB7cn0KYSA9IHJlYWQudGFibGUoImV4YW1wbGU1LnR4dCIsIGNvbENsYXNzZXM9J2NoYXJhY3RlcicpCmEKYGBg