Return-Path: X-Original-To: apmail-hadoop-user-archive@minotaur.apache.org Delivered-To: apmail-hadoop-user-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 0F70D10F85 for ; Thu, 12 Dec 2013 00:47:11 +0000 (UTC) Received: (qmail 40630 invoked by uid 500); 12 Dec 2013 00:47:05 -0000 Delivered-To: apmail-hadoop-user-archive@hadoop.apache.org Received: (qmail 40530 invoked by uid 500); 12 Dec 2013 00:47:05 -0000 Mailing-List: contact user-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@hadoop.apache.org Delivered-To: mailing list user@hadoop.apache.org Received: (qmail 40523 invoked by uid 99); 12 Dec 2013 00:47:05 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 12 Dec 2013 00:47:04 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS,WEIRD_PORT X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of justlooks@gmail.com designates 209.85.216.172 as permitted sender) Received: from [209.85.216.172] (HELO mail-qc0-f172.google.com) (209.85.216.172) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 12 Dec 2013 00:47:01 +0000 Received: by mail-qc0-f172.google.com with SMTP id e16so5757135qcx.3 for ; Wed, 11 Dec 2013 16:46:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=/3kvNKY6RVWEQrjqPCEIS6xNh8PgfDALekgjipciAps=; b=XPd2cqs41qlb1mQwghBI28Ovoy2iARMc4FLH0BOmB8VyvRnKHx3QSSRZm4gK9E2Jdh CrLtxhPbG9D0X+e/a/sxt3i5Mmn6jGIrwY2551E/0A25vj0cg+O351NuGEU1iVMMkaRl j8ikPsTE1Kj8yly65R74byeu92kKgIjrXrcnHZMSaAqMBQExSzKcuCEBR4oKtdFwj7t2 6phCtp9hLS0r6NduLDAcx9dSzULVNgq2d2Ye6PYKRjd/m5DyoKyDtmRoIBz3j4s3aJpw uCnEq7bRJPkcMZQLxp/GM2Yz/A8sbBRmiyu0oqKp3277Qt80q31Wl6JualBKoQ/IcVUH QkXA== MIME-Version: 1.0 X-Received: by 10.229.105.9 with SMTP id r9mr824440qco.12.1386809200236; Wed, 11 Dec 2013 16:46:40 -0800 (PST) Received: by 10.140.20.37 with HTTP; Wed, 11 Dec 2013 16:46:39 -0800 (PST) In-Reply-To: References: <1d9a556d0c984c8bb5eff3a845b786f0@DM2PR08MB301.namprd08.prod.outlook.com> <5DF48A23D7B14649BBA72C2F64C6663B82B35496@szxeml523-mbx.china.huawei.com> Date: Thu, 12 Dec 2013 08:46:39 +0800 Message-ID: Subject: Re: how to handle the corrupt block in HDFS? From: ch huang To: user@hadoop.apache.org Content-Type: multipart/related; boundary=001a113382b4c0af4104ed4bad5d X-Virus-Checked: Checked by ClamAV on apache.org --001a113382b4c0af4104ed4bad5d Content-Type: multipart/alternative; boundary=001a113382b4c0af3f04ed4bad5c --001a113382b4c0af3f04ed4bad5c Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable and is fsck report data from BlockPoolSliceScanner? it seems run once each 3 weeks can i restart DN one by one without interrupt the job which is running? On Thu, Dec 12, 2013 at 2:33 AM, Adam Kawa wrote: > I have only 1-node cluster, so I am not able to verify it when > replication factor is bigger than 1. > > I run the fsck on a file that consists of 3 blocks, and 1 block has a > corrupt replica. fsck told that the system is HEALTHY. > > When I restarted the DN, then the block scanner (BlockPoolSliceScanner) > started and it detected a corrupted replica. Then I run fsck again on tha= t > file, and it told me that the system is CORRUPT. > > If you have a small (and non-production) cluster, can you restart your > datandoes and run fsck again? > > > > 2013/12/11 ch huang > >> thanks for reply,but if the block just has 1 corrupt replica,hdfs fsck >> can not tell you which block of which file has a replica been >> corrupted,fsck just useful on all of one block's replica bad >> >> On Wed, Dec 11, 2013 at 10:01 AM, Adam Kawa wrote: >> >>> When you identify a file with corrupt block(s), then you can locate the >>> machines that stores its block by typing >>> $ sudo -u hdfs hdfs fsck -files -blocks -locations >>> >>> >>> 2013/12/11 Adam Kawa >>> >>>> Maybe this can work for you >>>> $ sudo -u hdfs hdfs fsck / -list-corruptfileblocks >>>> ? >>>> >>>> >>>> 2013/12/11 ch huang >>>> >>>>> thanks for reply, what i do not know is how can i locate the block >>>>> which has the corrupt replica,(so i can observe how long the corrupt >>>>> replica will be removed and a new health replica replace it,because i= get >>>>> nagios alert for three days,i do not sure if it is the same corrupt r= eplica >>>>> cause the alert ,and i do not know the interval of hdfs check corrupt >>>>> replica and clean it) >>>>> >>>>> >>>>> On Tue, Dec 10, 2013 at 6:20 PM, Vinayakumar B < >>>>> vinayakumar.b@huawei.com> wrote: >>>>> >>>>>> Hi ch huang, >>>>>> >>>>>> >>>>>> >>>>>> It may seem strange, but the fact is, >>>>>> >>>>>> *CorruptBlocks* through JMX means *=93Number of blocks with corrupt >>>>>> replicas=94. May not be all replicas are corrupt. *This you can che= ck >>>>>> though jconsole for description. >>>>>> >>>>>> >>>>>> >>>>>> Where as *Corrupt blocks* through fsck means, *blocks with all >>>>>> replicas corrupt(non-recoverable)/ missing.* >>>>>> >>>>>> >>>>>> >>>>>> In your case, may be one of the replica is corrupt, not all replicas >>>>>> of same block. This corrupt replica will be deleted automatically if= one >>>>>> more datanode available in your cluster and block replicated to that= . >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> Related to replication 10, As Peter Marron said, *some of the >>>>>> important files of the mapreduce job will set the replication of 10,= to >>>>>> make it accessible faster and launch map tasks faster. * >>>>>> >>>>>> Anyway, if the job is success these files will be deleted >>>>>> auomatically. I think only in some cases if the jobs are killed in b= etween >>>>>> these files will remain in hdfs showing underreplicated blocks. >>>>>> >>>>>> >>>>>> >>>>>> Thanks and Regards, >>>>>> >>>>>> Vinayakumar B >>>>>> >>>>>> >>>>>> >>>>>> *From:* Peter Marron [mailto:Peter.Marron@trilliumsoftware.com] >>>>>> *Sent:* 10 December 2013 14:19 >>>>>> *To:* user@hadoop.apache.org >>>>>> *Subject:* RE: how to handle the corrupt block in HDFS? >>>>>> >>>>>> >>>>>> >>>>>> Hi, >>>>>> >>>>>> >>>>>> >>>>>> I am sure that there are others who will answer this better, but >>>>>> anyway. >>>>>> >>>>>> The default replication level for files in HDFS is 3 and so most >>>>>> files that you >>>>>> >>>>>> see will have a replication level of 3. However when you run a >>>>>> Map/Reduce >>>>>> >>>>>> job the system knows in advance that every node will need a copy of >>>>>> >>>>>> certain files. Specifically the job.xml and the various jars >>>>>> containing >>>>>> >>>>>> classes that will be needed to run the mappers and reducers. So the >>>>>> >>>>>> system arranges that some of these files have a higher replication >>>>>> level. This increases >>>>>> >>>>>> the chances that a copy will be found locally. >>>>>> >>>>>> By default this higher replication level is 10. >>>>>> >>>>>> >>>>>> >>>>>> This can seem a little odd on a cluster where you only have, say, 3 >>>>>> nodes. >>>>>> >>>>>> Because it means that you will almost always have some blocks that >>>>>> are marked >>>>>> >>>>>> under-replicated. I think that there was some discussion a while bac= k >>>>>> to change >>>>>> >>>>>> this to make the replication level something like min(10, #number of >>>>>> nodes) >>>>>> >>>>>> However, as I recall, the general consensus was that this was extra >>>>>> >>>>>> complexity that wasn=92t really worth it. If it ain=92t broke=85 >>>>>> >>>>>> >>>>>> >>>>>> Hope that this helps. >>>>>> >>>>>> >>>>>> >>>>>> *Peter Marron* >>>>>> >>>>>> Senior Developer, Research & Development >>>>>> >>>>>> >>>>>> >>>>>> Office: +44 *(0) 118-940-7609* peter.marron@trilliumsoftware.com >>>>>> >>>>>> Theale Court First Floor, 11-13 High Street, Theale, RG7 5AH, UK >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> *www.trilliumsoftware.com * >>>>>> >>>>>> Be Certain About Your Data. Be Trillium Certain. >>>>>> >>>>>> >>>>>> >>>>>> *From:* ch huang [mailto:justlooks@gmail.com ] >>>>>> *Sent:* 10 December 2013 01:21 >>>>>> *To:* user@hadoop.apache.org >>>>>> *Subject:* Re: how to handle the corrupt block in HDFS? >>>>>> >>>>>> >>>>>> >>>>>> more strange , in my HDFS cluster ,every block has three replicas,bu= t >>>>>> i find some one has ten replicas ,why? >>>>>> >>>>>> >>>>>> >>>>>> # sudo -u hdfs hadoop fs -ls >>>>>> /data/hisstage/helen/.staging/job_1385542328307_0915 >>>>>> Found 5 items >>>>>> -rw-r--r-- 3 helen hadoop 7 2013-11-29 14:01 >>>>>> /data/hisstage/helen/.staging/job_1385542328307_0915/appTokens >>>>>> -rw-r--r-- 10 helen hadoop 2977839 2013-11-29 14:01 >>>>>> /data/hisstage/helen/.staging/job_1385542328307_0915/job.jar >>>>>> -rw-r--r-- 10 helen hadoop 3696 2013-11-29 14:01 >>>>>> /data/hisstage/helen/.staging/job_1385542328307_0915/job.split >>>>>> >>>>>> On Tue, Dec 10, 2013 at 9:15 AM, ch huang >>>>>> wrote: >>>>>> >>>>>> the strange thing is when i use the following command i find 1 >>>>>> corrupt block >>>>>> >>>>>> >>>>>> >>>>>> # curl -s http://ch11:50070/jmx |grep orrupt >>>>>> "CorruptBlocks" : 1, >>>>>> >>>>>> but when i run hdfs fsck / , i get none ,everything seems fine >>>>>> >>>>>> >>>>>> >>>>>> # sudo -u hdfs hdfs fsck / >>>>>> >>>>>> ........ >>>>>> >>>>>> >>>>>> >>>>>> ....................................Status: HEALTHY >>>>>> Total size: 1479728140875 B (Total open files size: 1677721600 B= ) >>>>>> Total dirs: 21298 >>>>>> Total files: 100636 (Files currently being written: 25) >>>>>> Total blocks (validated): 119788 (avg. block size 12352891 B) >>>>>> (Total open file blocks (not validated): 37) >>>>>> Minimally replicated blocks: 119788 (100.0 %) >>>>>> Over-replicated blocks: 0 (0.0 %) >>>>>> Under-replicated blocks: 166 (0.13857816 %) >>>>>> Mis-replicated blocks: 0 (0.0 %) >>>>>> Default replication factor: 3 >>>>>> Average block replication: 3.0027633 >>>>>> Corrupt blocks: 0 >>>>>> Missing replicas: 831 (0.23049656 %) >>>>>> Number of data-nodes: 5 >>>>>> Number of racks: 1 >>>>>> FSCK ended at Tue Dec 10 09:14:48 CST 2013 in 3276 milliseconds >>>>>> >>>>>> >>>>>> The filesystem under path '/' is HEALTHY >>>>>> >>>>>> On Tue, Dec 10, 2013 at 8:32 AM, ch huang >>>>>> wrote: >>>>>> >>>>>> hi,maillist: >>>>>> >>>>>> my nagios alert me that there is a corrupt block in HDFS >>>>>> all day,but i do not know how to remove it,and if the HDFS will hand= le this >>>>>> automaticlly? and if remove the corrupt block will cause any data >>>>>> lost?thanks >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>> >>> >> > --001a113382b4c0af3f04ed4bad5c Content-Type: text/html; charset=windows-1252 Content-Transfer-Encoding: quoted-printable
and is fsck report data from BlockPoolSliceScanner? it seems run once = each 3 weeks
can i restart DN one by one without interrupt the job which is running= ?

On Thu, Dec 12, 2013 at 2:33 AM, Adam Kawa <k= awa.adam@gmail.com> wrote:
I have only 1-node cluster, so I am not able to verify it when replica= tion factor is bigger than 1.

I run the fsck on a file that consists of 3 blocks, and 1 block has a = corrupt replica. fsck told that the system is=A0HEALTHY.

When I restarted the DN, then the block scanner (BlockPoolSliceScanner= ) started and it detected a corrupted replica. Then I run fsck again on tha= t file, and it told me that the=A0system=A0is=A0CORRUPT.

If you have a small (and non-production) cluster, can you restart your= datandoes and run fsck again?



2013/12/11 ch huang <justlooks@gmail.com&= gt;
thanks for reply,but if the block just has=A0 1 = corrupt replica,hdfs fsck can not tell you which block of which file has a = replica been corrupted,fsck just useful on all of one=A0block's replica= bad
=A0
On Wed, Dec 11, 2013 at 10:01 AM, Adam Kawa <= kawa.adam@gmail.com> wrote:
When you identify a file with corrupt block(s), then you c= an locate the machines that stores its block by typing=20
$ sudo -u hdfs hdfs fsck <path-to-file> -files -blocks -location= s


2013/12/11 Adam Kawa <kawa.adam@gmail.com= >
Maybe this can work for you=20
$=A0sudo -u hdfs hdfs fsck / -list-corruptfileblocks
?


2013/12/11 ch huang <justlooks@gmail.com&= gt;
thanks for reply, what i do not know = is how can i locate the block which has the corrupt replica,(so i can obser= ve how long the corrupt replica will be removed and a new health replica re= place it,because i get nagios alert for three days,i do not sure if it is t= he same corrupt replica cause the alert ,and i do not know the interval of = hdfs check corrupt replica and clean it)=20


On Tue, Dec 10, 2013 at 6:20 PM, Vinayakumar B <= span dir=3D"ltr"><vinayakumar.b@huawei.com> wrote:

Hi ch huang,

=A0

It may seem strange, but the fa= ct is,

CorruptBlocks through JM= X means =93Number of blocks with corrupt replicas=94. May not be all rep= licas are corrupt. =A0This you can check though jconsole for descriptio= n.

=A0

Where as Corrupt blocks = through fsck means, blocks with all replicas corrupt(non-recoverable)/ m= issing.

=A0

In your case, may be one of the= replica is corrupt, not all replicas of same block. This corrupt replica w= ill be deleted automatically if one more datanode available in your cluster= and block replicated to that.

=A0

=A0

Related to replication 10, As P= eter Marron said, some of the important files of the mapreduce job will = set the replication of 10, to make it accessible faster and launch map task= s faster.

Anyway, if the job is success t= hese files will be deleted auomatically. I think only in some cases if the = jobs are killed in between these files will remain in hdfs showing underrep= licated blocks.

=A0

Thanks and Regards,

Vinayakumar B

=A0

From: Peter Marron [mailto= :Pet= er.Marron@trilliumsoftware.com]
Sent: 10 December 2013 14:19
To: user@hadoop.apache.org
Subject= : RE: how to handle the corrupt block in HDFS?

=A0

Hi,

=A0

I am sure that t= here are others who will answer this better, but anyway.

The default repl= ication level for files in HDFS is 3 and so most files that you

see will have a = replication level of 3. However when you run a Map/Reduce

job the system k= nows in advance that every node will need a copy of

certain files. S= pecifically the job.xml and the various jars containing

classes that wil= l be needed to run the mappers and reducers. So the

system arranges = that some of these files have a higher replication level. This increases=

the chances that= a copy will be found locally.

By default this = higher replication level is 10.

=A0

This can seem a = little odd on a cluster where you only have, say, 3 nodes.

Because it means= that you will almost always have some blocks that are marked=

under-replicated= . I think that there was some discussion a while back to change

this to make the= replication level something like min(10, #number of nodes)

However, as I re= call, the general consensus was that this was extra

complexity that = wasn=92t really worth it. If it ain=92t broke=85

=A0

Hope that this h= elps.

=A0

Peter Marron

Senior Developer, Research & Development<= /u>

=A0

Office: +44 (0) 118-940-7609=A0 peter.marro= n@trilliumsoftware.com

Theale Court First Floor, 11-13 High Street, The= ale, RG7 5AH, UK

= =A0

www.trilliumsoftware.com=

Be Certain About Your Data. Be Tri= llium Certain.

=A0

From: ch huang [mailto:justlooks@gmail.com]
Sent: 10 December 2013 01:21
To:
user@hadoop.apache.org
Subject= : Re: how to handle the corrupt block in HDFS?

=A0

more strange , in my HDFS clust= er ,every block has three replicas,but i find some one has ten replicas ,wh= y?

=A0

# = sudo -u hdfs hadoop fs -ls /data/hisstage/helen/.staging/job_1385542328307_= 0915
Found 5 items
-rw-r--r--=A0=A0 3 helen hadoop=A0=A0=A0=A0=A0=A0= =A0=A0=A0 7 2013-11-29 14:01 /data/hisstage/helen/.staging/job_138554232830= 7_0915/appTokens
-rw-r--r--=A0 10 helen hadoop=A0=A0=A0 2977839 2013-11-29 14:01 /data/hisst= age/helen/.staging/job_1385542328307_0915/job.jar
-rw-r--r--=A0 10 helen= hadoop=A0=A0=A0=A0=A0=A0 3696 2013-11-29 14:01 /data/hisstage/helen/.stagi= ng/job_1385542328307_0915/job.split

On Tue, Dec 10, 2013 at 9:15 AM= , ch huang <jus= tlooks@gmail.com> wrote:

the strange thing is when i use= the following command i find 1 corrupt block

=A0

#=A0 curl -s http://ch11:50070/jmx |grep orrupt=A0=A0=A0 "CorruptBlocks" : 1,

but when i run hdfs fsck / , i = get none ,everything seems fine

=A0

# sudo -u hdfs hdfs fsck /

........

=A0

...............................= .....Status: HEALTHY
=A0Total size:=A0=A0=A0 1479728140875 B (Total open= files size: 1677721600 B)
=A0Total dirs:=A0=A0=A0 21298
=A0Total fil= es:=A0=A0 100636 (Files currently being written: 25)
=A0Total blocks (validated):=A0=A0=A0=A0=A0 119788 (avg. block size 12352891 B) (= Total open file blocks (not validated): 37)
=A0Minimally replicated bloc= ks:=A0=A0 119788 (100.0 %)
=A0Over-replicated blocks:=A0=A0=A0=A0=A0=A0=A0 0 (0.0 %)
=A0Under-repli= cated blocks:=A0=A0=A0=A0=A0=A0 166 (0.13857816 %)
=A0Mis-replicated blocks:= =A0=A0=A0=A0=A0=A0=A0=A0 0 (0.0 %)
=A0Default replication factor:=A0=A0= =A0 3
=A0Average block replication:=A0=A0=A0=A0 3.0027633
=A0Corrupt blocks:= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 0
=A0Missing replicas:=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 831 (0.23049656 %)
=A0Number of data-node= s:=A0=A0=A0=A0=A0=A0=A0=A0=A0 5
=A0Number of racks:=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 1
FSCK end= ed at Tue Dec 10 09:14:48 CST 2013 in 3276 milliseconds

The filesystem under path '/' is HEALTHY

=

On Tue, Dec 10, 2013 at 8:32 AM= , ch huang <jus= tlooks@gmail.com> wrote:

hi,maillist:

=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0 my nagios alert me that there is a corrupt block in HDFS all day,but i = do not know how to remove it,and if the HDFS will handle this automaticlly?= and if remove the corrupt block will cause any data lost?thanks<= /u>

=A0

=A0


=




--001a113382b4c0af3f04ed4bad5c-- --001a113382b4c0af4104ed4bad5d Content-Type: image/png; name="image003.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: a28399808923c4c3_0.3 iVBORw0KGgoAAAANSUhEUgAAABUAAAAkCAYAAABmMXGeAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAO xAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUATWljcm9zb2Z0IE9mZmljZX/tNXEAAANVSURBVEhL 7ZVdaFRHFMfPmZl7dzca86GCfUixVJvsqiUtflUptLQPhULpWxobXaxEBBX0RaGgIYofj6UFEUr9 KJFNSl9aKIiV0icVLT6kNRtJabDQdGOUzZrs/dp7z3hmzUabJjViXgo5cLlz78z85sz//Ode1dnZ CXMdaq6BhjcPnXtV5zWd1/QZFOhIJkUq8dZ6UrF64fr5vvDn653ZbFRBfJbcm1AdHYexqfvOO623 z19+GrtnZdubKXvh5xBBsxQEWgAkxabeTOO6A2BbhKS3Lg3yx1Xqm7+XEcpLmVWfnGq9dWbPTOCe 5PaUlvKisONV0fgogO8AIIKIV70KQl5EqYBKztcKrDo2f/gCSgvlgkW7e1a3N0IU7m/Jnv1tKpwo OqhqFleF+btlWDm0BnKLwFBuUiQsezNh6TvleepPO+6PRcUH1SKWeJc850b3qh3nkOhsH1z7hfWi iQVeocB7DHxiVRSsgxCjoevs/Hig6yeVHvzyXmbltmOYsE9ExQLyNuKiqnoXOeO7mqINfZmmDTdA Uz9nt0SXgmnVQSsG5DwYNMDy9/RCcnsSNS0gd/w2dzbpkg/RWN6sDJx5Ci07ZbbLk0DPkGlZDpQs 8qNQCkp5EtYhVJbWgf84EyIgUwxzVaKi5ZR8eS6g1rcmoS3ZrlymMX1Y1dUfCQv3QYcGPFGIp3ms 0k8R20v8OAk1Dfbo0QuQBhmLt6NQDVzI2eKMRBCNF/4KcNGlf0DLOoDuBWWPUMlvKCeqZ8cViYVA nnsy3f8Fe2tC00ojJBoUgfeyrFkCxObWYem/qexRWbMYwsLI1eXD2dNPDp788rMdes+/1LY2JsQR Lv1GruiLPNC4+t9wA6yuM8YfEhC1vjF6PZwWal6mB7t+59uWzJr2Dq7opxCGUk/VAQWomnq22Ngf 6Dkftgx03Zm6quIz/TopezkFQS1b8zVEfE8IuYKMvXTlMCEgm8/oZ2SJnEK3PzK6L537dng6jRSE ri+k9TZaso31rGUo+9MDaccfjednA9K+W9Bu8TIgnfro16/KJ2emUC0D3ca0e79f9v5B18ZmcsNm ENiAEdVqwKJAyBGI/sATN/lID83GE5OF+iD3gwM5uMKTzPVcMf/ffy75pp38/9H0If8SW0JsdSu8 AAAAAElFTkSuQmCC --001a113382b4c0af4104ed4bad5d Content-Type: image/png; name="image002.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: a28399808923c4c3_0.2 iVBORw0KGgoAAAANSUhEUgAAABEAAAAjCAYAAABy3+FcAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAO xAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUATWljcm9zb2Z0IE9mZmljZX/tNXEAAANbSURBVEhL 7VVtbBRFGH53dm4/7qu9GOEM8KPQJq1WSwR/eIZKJPyxaTCgoiGRmBDShKiEmqr84Nz6QyUIMWJS MGIMkQ8VIkQIiQVCSBpIY0tNybUEqml6l7a0vb27ve7u7OyMc+dHIPWaIP+UdzLZHzvzvO887/PM YMMw4H4D3y9Aaf8DkLksPuDk/8NJorl5leM4YY9SkBHi83kKMSQFgzplzLva09OTL+ukacXKr3xC 13DGr2FAAEya15dM4pxQGieEqIlEohnH43FN4tIaj9CX+vt6r96Lq5c/+dSAQ+njOBaLibQ8C1gq 3AtAaa2o+Tfxkf+QvSTGv7gWBHG4VME/eqej7uJq7SFlqTWUurTX3HIrmUyi+m8zLxQoRNI3sqcN 6fvsnVXPAXl3Wfc2JSzvh/wkqAjMN3hX4pNvptssVX3TJAQg7A8kactqwz1j/gWEU6mU/eiKVb4G frmtvpN7BXwLCpM2RMK4Oour1hcsui4/LZI7swBqqAms2TpBQK+OfPaY7ln47YcPG8N+qPaU2m4i 6AF/ZmI3UZQnZBaIZsb84Rid+JrjPIOA/wH4kgzjmR8N7UJvKeEAiQTfSkf3YOwVf2ma+YI25o99 J9XpB6iWuJgbGW6tCrDFUkT5+TN36xjEavdB7uYguKq+tNbtOxTY3FLk6LXiNE/YVmEP/shsO7Ej +2G//sjC/bIWPMRsk0UXRNI8oDhxVgy/PHP23OfyxmfQ4qj6A99JPrbWLjonLwvS4tSQl3NaDe9k d5nYvdJ7IzAOz3fED7+q6fIRXkgv4RICnwHU6/z1froJ7NkQpEkVXGArwc7d/tSwj27/m9i7BBZa hAAXwPEEx0JJCidweabu/BH32acnUDh4Cj0HLBQCIBm9YosRdRaKFgjxScAYB5l5MMhrMl16uwco B0CFqImYlC4oy/PPuFsnnI6Uf4pCSkdhRAKZekEI5BGwvNgsdBJQAFxvFLQKIEoo+5MzJQ/qUdwI JgPEEUiudxuCTANZFecTAOaUC4QcrAjSmdpc7KjuarEJ3gcULU9bgVQN/dUA5uZFhS9CsTAOtvW+ Eb1yfV7Z7zbbRsWCDbsaBuUvU40+iORG8fg7yYZdO41Upw/RuV6v+Hh1lgDuiDJAhfiPvYC/A+wV dFgq4pO4AAAAAElFTkSuQmCC --001a113382b4c0af4104ed4bad5d Content-Type: image/png; name="image001.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: a28399808923c4c3_0.1 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 --001a113382b4c0af4104ed4bad5d Content-Type: image/png; name="image004.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: a28399808923c4c3_0.4 iVBORw0KGgoAAAANSUhEUgAAABAAAAAkCAYAAACAGLraAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAO xAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUATWljcm9zb2Z0IE9mZmljZX/tNXEAAAJTSURBVEhL 7VRLaxNRFP6SeeVRkaKipFgKpcSCiOjChbGELgV/gOLCLAQRBLeCINl0Ieim4MJF0YW7IoK4q+7E iLjwsbBVSYNErE2ieU9mJjN+dx5NFEyo3UkOczNzz73nu+d+3zmRs9ksdmLyToJF7AhgxMH/Ugc3 Ng5chRq7BEPfXlvIKmB1PslwQuehaEnYXTo4QiFWh+SBOQMwxb5ILCkzoAmzA+htTIyPoWFYqDZb PZC/YYTCAM/zulE3cObIFB5k5lFu6kjffoxCuQ4ofiYDEvEATBtHD+7BrpjqjsR4HIXv1W0AxDXc evoOtbaBb9UWcvkNckFgZoMwUw1zYtkeKYIfTdnKycvAtjG1d4w3sbA7okJVFcwlJ3Bich9WSzXk S3VcTM3CcRzcy60ht1YEohE31OfAxPzMNBbPpVznw/cFnD0+jcypWZhURglU4VrmZBKpm4/wKr9J FRQfgJLoQkKRDE/hgyazESaC7z//gEKlgWunj0Hl/HL6MDIfV3ijAGAAy59J5oWlZ0Crg/RMAnOH EpgkyZA8hYb+qZZJLCSSqMkoCVJpXbtXYUMBwqLi/CEJNf6wLYBgyQ2g+S8q2AsKvvt9PYC+jS6A Wwg9oP7v/q0eQFTF8tt1vFzYdPvnJ0t7YeUN7uZW0TKpjsRiYn1cWX6B609eo66boBxusfHXibOr UGk3UPnC8hWmqSjWTBR/sMnEvbWo616vkES77fki9DEVAbMEox1Cl2zzINfEqcKCuV8Tv/ks0Y1G Qc7u/3qHC2L8kw2VcRjqCAD4BYfBu8ijqyfmAAAAAElFTkSuQmCC --001a113382b4c0af4104ed4bad5d--