<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>CERT/CC Blog</title>
    <link rel="alternate" type="text/html" href="https://www.cert.org/blogs/certcc/" />
    <link rel="self" type="application/atom+xml" href="https://www.cert.org/blogs/certcc/atom.xml" />
    <id>tag:www.cert.org,2011-02-08:/blogs/certcc//1</id>
    <updated>2012-01-05T19:11:14Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 4.35-en</generator>

<entry>
    <title>CNAME flux</title>
    <link rel="alternate" type="text/html" href="https://www.cert.org/blogs/certcc/2012/01/cname_flux.html" />
    <id>tag:www.cert.org,2012:/blogs/certcc//1.84</id>

    <published>2012-01-05T21:15:00Z</published>
    <updated>2012-01-05T19:11:14Z</updated>

    <summary><![CDATA[Hello this is Jonathan Spring. Recently, Leigh Metcalf and I uncovered some interesting results in our continuing work on properties of the Domain Name System (DNS). Our work involves an unconventional use of CNAME (canonical name) records.&nbsp; Besides an IP...]]></summary>
    <author>
        <name>Jonathan Spring</name>
        
    </author>
    
        <category term="Analysis" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Research" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="https://www.cert.org/blogs/certcc/">
        <![CDATA[<p>Hello this is Jonathan Spring. Recently, Leigh Metcalf and I uncovered some interesting results in our continuing work on properties of the Domain Name System (DNS). Our work involves an unconventional use of CNAME (canonical name) records.&nbsp; Besides an IP address, CNAME records are the only other location a domain may have in the DNS. Instead of an IP address, a CNAME record is a redirection or alias service that points to another name.&nbsp;</p>]]>
        <![CDATA[<p>CNAMEs should behave similarly to IP addresses in the DNS &ndash; relatively statically. IP addresses have shown departures from the expected consistency in the past. Several years ago, content distribution networks (CDNs) popularized a DNS usage that is known as IP flux. The IP address of resources is changed quickly in the DNS for geographic nearness, load balancing, and redirection in the case of failure. Malicious actors soon caught on, and implemented their own networks using IP flux.</p>  <p>Leigh and I have found that CNAME flux is also in practice to some degree. By using a source of passive public DNS resolutions we have found domains that change their CNAME destination multiple times a day. We consider a domain to be exhibiting flux if it changes destination 8 or more times in one day. For example, the following records of a domain exhibiting CNAME flux were observed on October 2, 2011.</p><table cellspacing="1" cellpadding="1" border="1" style="width: 364px; height: 165px;">     <tbody>         <tr>             <td><small><strong>rname&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; <br />             </strong></small></td>             <td><small><strong>class&nbsp;&nbsp;&nbsp;</strong></small><strong> </strong></td>             <td><small><strong>type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong></small><strong> </strong></td>             <td><small><strong>TTL&nbsp;&nbsp;&nbsp;</strong></small><strong> </strong></td>             <td><small><strong>rdata</strong></small></td>         </tr>         <tr>             <td><small>corn.best.stanford.edu</small></td>             <td><small>IN <br /></small></td>             <td><small>CNAME&nbsp;&nbsp;&nbsp;</small></td>             <td><small>10&nbsp;&nbsp;&nbsp;</small></td>             <td><small>corn26.stanford.edu</small></td>         </tr>         <tr>             <td><small>corn.best.stanford.edu&nbsp;&nbsp;&nbsp;</small></td>             <td><small>IN&nbsp;&nbsp;&nbsp;</small></td>             <td><small>CNAME&nbsp;&nbsp;&nbsp;</small></td>             <td><small>10&nbsp;&nbsp;&nbsp;</small></td>             <td><small>corn02.stanford.edu</small></td>         </tr>         <tr>             <td><small>corn.best.stanford.edu&nbsp;&nbsp;&nbsp;</small></td>             <td><small>IN&nbsp;&nbsp;&nbsp;</small></td>             <td><small>CNAME&nbsp;&nbsp;&nbsp;</small></td>             <td><small>10&nbsp;&nbsp;&nbsp;</small></td>             <td><small>corn15.stanford.edu</small></td>         </tr>         <tr>             <td><small>corn.best.stanford.edu&nbsp;&nbsp;&nbsp;</small></td>             <td><small>IN&nbsp;&nbsp;&nbsp;</small></td>             <td><small>CNAME&nbsp;&nbsp;&nbsp;</small></td>             <td><small>10&nbsp;&nbsp;&nbsp;</small></td>             <td><small>corn10.stanford.edu</small></td>         </tr>         <tr>             <td><small>corn.best.stanford.edu&nbsp;&nbsp;&nbsp;</small></td>             <td><small>IN&nbsp;&nbsp;&nbsp;</small></td>             <td><small>CNAME&nbsp;&nbsp;&nbsp;</small></td>             <td><small>10&nbsp;&nbsp;&nbsp;</small></td>             <td><small>corn12.stanford.edu</small></td>         </tr>         <tr>             <td><small>corn.best.stanford.edu&nbsp;&nbsp;&nbsp;</small></td>             <td><small>IN&nbsp;&nbsp;&nbsp;</small></td>             <td><small>CNAME&nbsp;&nbsp;&nbsp;</small></td>             <td><small>10&nbsp;&nbsp;&nbsp;</small></td>             <td><small>corn19.stanford.edu</small></td>         </tr>         <tr>             <td><small>corn.best.stanford.edu&nbsp;&nbsp;&nbsp;</small></td>             <td><small>IN&nbsp;&nbsp;&nbsp;</small></td>             <td><small>CNAME&nbsp;&nbsp;&nbsp;</small></td>             <td><small>10&nbsp;&nbsp;&nbsp;</small></td>             <td><small>corn24.stanford.edu</small></td>         </tr>         <tr>             <td><small>corn.best.stanford.edu&nbsp;&nbsp;&nbsp;</small></td>             <td><small>IN&nbsp;&nbsp;&nbsp;</small></td>             <td><small>CNAME&nbsp;&nbsp;&nbsp;</small></td>             <td><small>10&nbsp;&nbsp;&nbsp;</small></td>             <td><small>corn23.stanford.edu</small></td>         </tr>     </tbody> </table> <p>&nbsp;The CNAME here seems to be balancing the load on a particular service by redirecting users to the more available servers, given the naming scheme and short time to live (TTL) of 10 seconds. However, like CDNs, if benign actors gain benefit from a tactic then malicious actors are likely to be able to use the same tactic to their ends.</p> <p>So far, the domains using CNAME flux amount to a small percentage of the CNAME records observed. There are around 16M domains in our data source that use CNAME records each day, and only 15-200 of those domains exhibit CNAME flux. We measured the incidence of CNAME flux between October 1 and November 30, 2011. The results are presented in this chart.</p> <p style="text-indent:.5in" class="MsoNormal"><img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgQAAAGECAIAAADGOK+EAAAgAElEQVR4nOy9eXgV53n3P26vNI39Jm+bpL3SJJeztLavOM2Vvvk1vzh5f3bSLLWxmytJnTRpDNolbMfsBgR4A9ssAmPMJrANJqk3rA2QhARCYgchQALs2GCkcyR2JEA6QujMzHPf9/f3xzMzOggjbIzQSHo+kZWjOXOGOSOd5zv3bsFgMBgMgx6rr0/AYDAYDH2PEQODwWAwGDEwGAwGgxEDg8FgMMCIgcFgMBhgxMBgMBgMMGJgMBgMBvSGGIiIiHTb0vMOAJRSiRtFhIgu3f8DX2swGAyGj0lvWQaxWCwajR49ejRYu0+ePBmJRE6fPq1/dBynoaEhEol0dnYCcF2XmcXHdV0RYWYi0g9EpJtgGAwGg+Fa0StiUF9f/4Mf/GDIkCH/+q//+sQTT7S2tv7P//zPbbfdNmTIkNtvv33nzp3Nzc0PPPDAD3/4wx/+8IcPPPDAqVOnACSKgSbYoq2EYHtvnLPBYDAMZnpFDH71q19ZlgVg+fLllmUVFxd/4hOfSEpKAnDrrbd+97vffemllyzLOnToUFNTk2VZCxYsAJBoB3Q7IDPrjUYMDAaDoTfoFTGorKxctmwZgKVLl1qWtWbNmk9/+tMjRoxYuXLl//7f//uee+5ZtmyZZVlbtmzJysqyLGvx4sXwF3qtB5FIJCMjIzk5OSkp6ZlnntFiEEQRDAaDwXBt6a2YgW3bd95553e+852nn3767Nmzn/vc5772ta8tWLDgm9/85k9+8pNXXnnFsqz77rsvJycnUQyC78XFxd/73vdKSkqKi4u3bt2qRUJ7jXrphA0Gg2Ew0yti0NDQ8M///M+/+93vHMcB0NHRYVnW0KFDAXz729/+9re/nZuba1lWXV3dmTNnLMuaO3cu/JiBPkJJSUlWVlZwwG7BA8N1hCEEYaDnLyPSBkP/plfE4De/+Y1lWU899dTs2bNnzJjR2Nj4q1/96hvf+MaMGTM+85nPPP3009u3b7/55ptHjRo1YsSIm2++efPmzbg4A7WkpCQ5Obk3zs3wURAIgV0QQQggMIEDASBI8GXEwGDo3/SKGGzevHnRokXTp09/5plnpk2b1tLSIiLz5s175plnXnnlFb1PTU3N9OnTn3766ZqaGgDdgsZGDMKAAAxhCIvoBzp+T4AClN4CAcQYBgZDf6dXis4+6j6X1hAYMQgJBDiADbjwNIABFijABRzAAVzjJDIY+j+9JQZEpPOC9Eb9o37wgcVl3YLDRgxCgQAMFsQBAgBRAAs8KWAQ0IngWYPB0I/pxXYU2vOjlAqqBHR6aBAEpgSCfTRGDEKB9gAJGMxQAkegRMgzDRQgUBAXzMY2MBj6Ob0SM9C3+YEYaBeQNhS0NaCUCnZLbDgRHMGIQUgQ/Y0VYAM2EAccAWmjASwJ3iODwdCP6RUx+MDOdIkbL60x7raDEYOwwBAXIIbdabeeFu4QcSAsrgiBGC5EgUwE2WDo74S0hbURg7CgRByCctDa/upjT7SejgIKzMxCAodBzIqVEQODob9jxMBweQQg5YWHL9ivpQ3vONMIAHAVkyOihOE4UI6pMzAY+jtGDAw9IBA+Gz1cnD2lJvPRiv/z462Zf3hr7Oj6XdsBiQt1sqM4ztQpJp/IYOjnGDEw9IAAFG8+cbig+MSyot13/mfj3JffK1jd2lAvru1CbIgjNottAsgGQ3/HiIGhJwQMigMOzsbK0x+KNx0EBI4Dm5ihCEwsTCZkYDD0d4wYGHpCABEFttHcnJ+VETtWC3SCRBGUzi71Cw4MBkO/xoiB4bIIQAIRhsM4fmZVUtL5o/uAOMjrUQFdjWySiQyG/o8RA8NlEcCBOMJQgubWvHvvW/mHVKhO6AZ1WgIEJpXIYBgAGDEwXBYBOoVsCJhx9tyqn/77az/+KTo6dftqEBhwAWXUwGDo/xgxMPQECblgZhetZ9b86Kfr/u1etLT73iGwNh3ARgwMhv6OEQPD5REIEQspcRA7s/YnP1t/1z1ojunedSDtKRI2RQYGQ//HiIGhR1wSYoEDu331nXeV3PlTnGuHsAQJRCwQk1pqMPR7jBgYLo8ArogSgXvuvbfL//M/S4f8B1pbIcoFO7rSjAVkxMBg6PcYMTD0iEtQBKD0sYkH5s3bkfkgmlsgSoFtwAGEBcqMMzAY+j1GDAw9QsxEANY99diBuXO3Jaej5RxYCdgBLgDkFSP09XkaDIaPhxEDQ0+w34Ju3eQJ0dffjCx9Zfe8BRABWAGdWgzYVCAbDP0eIwaGnmCBIwKgYtLE4wWrThaUlI991HsKID3rTIwYGAz9HiMGhp4QFt2PdEN29vE38o+9WbR+8mMIFn9v+KURA4Oh39OLYy+D78GI48TZyHq7Ho8sl1SwGjEICySiGMC6yZOOFRYeLVi9dmI2AK8ZhUAEdOnvz2Aw9Dd60TIIVn/ykQSYWSmlNwIIHmiMGIQCgbgKSgCsnTLp6JqCY0VryrN9MWCIiE3KYVOBbDD0e3pRDBKtAfimQOLqz8yJCkHUVchqxCAsCAsxgOJJE5oKV57IL16fPQmAMDOzS4ohxGayjcHQ7+ktN1Fwm88ftFJ08ysEvqMAIwYhgcCKGUD5lIlH1xQdzytdN3ESwKQcJiYIM4GMGBgM/Z5rLwZ6We/o6MjKylq+fLneePTo0YyMjKSkpNGjRzuOA+CNN95ISkoaNmzYm2++iUs0w4hBGBDAAfmppdnHi/KbCtcWj88GGKKIRQmJ65p5BgbDAODai4GInD17NiUlxbKs3/3udwDa2tq+/OUv33XXXVu2bPn85z//X//1X8XFxTfeeOOCBQtefvnlG2+8MT8/HxebC8XFxRkZGdf83AwfCQFcv9dE2fhHjxXmNVVuXjXlcbcjxk6ngrAISEzRmcEwAOgVN9HChQtXrFjx13/912lpaQBisdi//Mu/3HfffVu2bLnllltGjBixdOlSy7JOnDhRWFhoWdb8+fOD12pJWL9+/U9+8pOSkpKSkpLt27cHT5m8leuJAARvwPGG7OzGt95gpTYtWrzjxRch4mgxYIBMOwqDod/TWwHk9vb2G264ITU1FYDjOE888cQtt9ySnJz8pS99qays7OWXX7Ys6+GHH/71r39tWdaSJUvgy4D2F23evPkf//Efk5OThw0bNm3atOCpD4xAGHoJARisb/vXTZgQLXgDwM4ludtnPQfARTDprG9P02AwXAN6xU0EoKOj44YbbkhPTwfQ3NxsWdaIESMAfOtb37r99ttffPFFy7KmT59+6NAhy7LmzZsHf63Xy31xcXFmZmZwTJ1olJiMZLg+iF9RVpY9sWHVSgA1ubk1M+bAVJsZDAOLXhGDM2fO1NbWWpb1H//xH9Fo9NSpU5/+9Kd//vOfR6PRL37xi/fcc8+rr75qWdbOnTvXr19vWdayZcuQkHsKoLS0NCkpSR9QCwARXa5CzdB7BGKwNntiw+p8ADVLcmtm5GiDQOuBwWAYAPSKGMyfP//uu+++44477rrrriFDhkSj0X379t15551Dhgz593//92PHjtm2/dRTT/3sZz/72c9+NnXqVNu2dXZpUJRQUlKSkpKiD5hYjhDsYLhe+GIwaYIWg11LcnflzAQAEzY2GAYQvSIG3dbryzn6E7cHZoG2DAIx6Fa07LquEYPrS4IYFBUAqF6ypHrOs5fUihgMhv5N3zSqS1xIEtf6oPqspKREu4kSLQb93SxC1xPxmhChPHtiJL8IwPaFi3fOnY4gemwsBINhQNBbYnDpkp24jl9agdxt56DoLLHnneE6IwABIgrAuvHZ9W+uBrDnlRU7Z89kOw5AAcobeWBiBwZD/8a0sDZcFk8MlBM7ebLksSePbN4OYXW+vWLco02bNwNwABci4hoxMBj6O0YMDJdFABIBsGXG/G1LFgFg7gSp8lFjGtZvAMACYRZyTYqpwdDfMWJg6AkmgULN9Pm7X1zIQCc6oZx1o8ZFNmwEIEpEsSn+MBgGAEYMDD2iAAd7pj+358UFDHTABrllfxjXsGEjABCBxIwzMBgGAEYMDD0iAFCTM6smdwEAFgeOKhsxoX7DRgEELsRIgcEwEDBiYLgsArgAgN05M3YvXAgAohBXG8Y8Ft1QCYDFFhjDwGAYCBgxMFwWBjoBAHtmTd+zYBEACMPh0hHZkapKAIDNYBMvMBgGAEYMDJdFp5YCqMmZXrN4YbC19Mln31lbKmSDOoXFdJI1GAYARgwMPcKAYOfsGTuX+GKgyGk+/eqokW2H3oUoMc2iDIYBgREDQ48QwNgxe9aOF7WbCBABXcjPzIzV7QdcYhZl1MBg6PcYMTD0iACC6lmzq5cuRjDQxr2wOjW1fe9ehnKF4ZruRAZDv8eIgaEn9CK/a9Zzu3IXA7B1FMGOl6Snn6+rJZArAmXE4CK6hr9xYhs/Bth7zlwuQ/gwYmDoEQGA6pzZ1blLECxiTnx1ZmZ7bR108Nisbgkw4ABKP1IQ1m2bGOICLohNWz9DODFiYOgRAYCds3N2Llka/Ag3np+e1la3z5QfX4poE0B8S8Dr6aoYroirO4KLMaUM4cOIgaFHuomBxo0XZWbE9tZCiV7c+urswoh4NgFYGMIQASuICyaIHhRqbANDCDFiYOiRy4hBXkryhXfeAQmZQaTd0NUZisFKoEQILOxNhgABKmGytMEQHowYGHrkEjeRiCDesfHxx46Wr4Myo4e6I7qzt7BAAS7EBXmuIbAeBwRjGxhCiBEDQ49cYhkwM8jp2L+vMD0DtoIRg4txgAtAJ9jxxEB5IQJPHHRRtxEDQ+i4TmMvEycY90CwvxGDsCCASPcAMqv22r1FWcPhqD49uTCixcCGKFGAC+WCBAxhsIAYRAxmGAU1hIxrLwZ6WVdKAQhm2SullFJEBEA/0LuRjxGDkCIAsOu5OdvnLwDgOkpEAIrV1RZmZsGlPj698KHdRMyAMFwHjgsRZvFiCS4JCxwCGcvAEC56xTLQK3ugBMHjROOg25Zu07KMGIQHu61t61NPHsgvgB58BkCMGFweAhyI0hUHDJdIXBfUdvxYW/1xMLOQ2Mp4iQxho7csAwCJSqC36EVfP6W/aw0IfgwOYsQgPNRXbFg7aqS+kxX9KzJi0AMEcdh22REIMZTDiAPYuCx34/O5ABiOMJtkIkPY6PWYAV+SenhpvPHSLUYMwkPD+oryMaPhuCK+0hsx6AESUSoOOQ+QsIgDagM6axc+V/vMHJANOU9wjRoYwkZvuYkAnD17tr29XZsCAE6ePNnQ0HD27Fn9o+M4TU1NTU1NrusmvkpjxCA8NKyvKBs7Gq4ixULQYtC2d09ealpfn1ooEQK77CpSwizCtPq5ma9nDlv3/91V/f/8W/nv00pycsTMCjWEj96yDKqqqv72b/92xIgRAJRSK1asuPXWW4cMGfKFL3yhvLy8paVl6NChP/rRj370ox8NHTr01KlT3XKKAjEI/Ev6sGHKYpSu7EBB0HxAbxXRNUZezoh0e13CpvD39YlsqCwbOwauw6RvZwXg85HI6kmTz75/GGZZ6w6TirOrvGauth1rrG+tP3xo4uOHRzx2fu/h9oYjLK4K+6/dMOjoFTEoLS397W9/a1lWSkoKgJaWFsuy0tLSAMyePXvGjBlLliyxLOvgwYNHjx61LGv+/Pn6hYEYrFmzJjMzMzhgEGrmsEzVEoguJmW/GQ2JELGQgERIxRXZDLCIiM4tBAuUjpML/MYEzGAK94IaqawsHzMayk3UZAANVRtXjRoFIpMleTECsFdHwAA5gA1g79KX9sxYoPdwQa4RA0PI6JUAcmlp6YEDBz75yU+mp6cDaGlpufHGG//pn/4pNTX16aefBrB06VLLsrZu3ZqVlWVZVm5uLvy7fr3cb9q06etf/3pycnJycrJ+iY42X/Oz/Riw7jngte0kAYsC2AVcL70ceqVnEUAxE7PiQAx0uzJhSMhX00jVhvIxo+G63eyyyMaNZaNGwnXCrWXXHS+04teViSPoBFD94kvVsxdBIBASYgnJbY3B4NErYgAgFosFlkFzc/Nf/dVf3XPPPSUlJZ/73OeGDx++YsUKy7LuvffenJwcy7KWLFkCILHaoLy8/Mc//nFJSUlJScm2bdt0LcKlsei+RSDsdx/Tt/+2FoM4Kztmd7RBQUiYmFwlIux9sX6x/uoHbqLLiEFDVVXZ6FFGDLrDovtPsNeGyAE6AOzKzd01a773yyZCWGxcg8Gjt8QAgGVZw4cPB3Du3DnLskaNGgXgW9/61m233bZ48WLLsmpra8+cOWNZ1ty5c+H7gvRri4uLu7mJArshLJ4ibzXXrh6xwRcgFwAGAfFo2ep1M54EmBwbSpiYiUnYJn9EZP8ZcmLE4KMhAuYEMXDB5wHULFi4O2ceADDDVeaiGcJGb8UMJk2aZFnWbbfd9swzz0Qikfvvv//WW2999tln/+Zv/mbatGlbt269+eabx4wZM2LEiJtvvnnTpk3wV3y91hcXF+sAsl79tdFwaaFyH6LdPBCGKIFSUC5IKRfiAO7pN16t+cOD3q62giJhZmGX/cJTIwYDFhaw9+sVARTYaW88Uj199papz7YdPybCouISLp+nwdA7lkFJScmzzz67ZMmSF1544ZlnnmlpaRGRF154Ydq0acuWLdO77dq1a+bMmdOnT6+pqUFC8yItBiUlJUlJSUioXAubGLDXcUx5g62YwAyiureKyjIfrr33vm133Fk8Ovu16XPisfMgElYspCAXVVr3B0kwYvCREAiBHf3nwdo8QGTlqh0THl//2OOH1pcBELKFjRgYwkUoupYGS3yw2gRiEFrIEwMHiAPk5xTh9LuHG8rXv/PEtPVDUw5v2fbOzhoVd8AiTALWr+rvYiBeNlFV2ZjRcGxQuN/A9eViMfCiyMfeWlM7NnvDE0/Ub9wAwHQtNYSQUIjBpYS/6Iy9T7MNxCEMgRLE/VWxsbhs/eNPej8or2+Z+GtDfxcDXSd4uLx87Yg/ADCWwcWI9/sGghX/xFuF+8dO2PDYYw2btBiYrqWG0GHE4OPAgANxwaKzRtoABwK4DW/lb3jsMQBgFdwFSuINYX+QAc0HWgYi0nzwYOXECc379nkTbwweOssMEBA8Z9Cxwry9j47ZOGVyQ1UlABAbBTWEDSMGVwsDzF49mUCHkh0RUZ2g8yfXFL72f793YvtWbTTAX/m9G0bp+gq/InQTg8SwTc2cnG3zngdg7nMvggEFYXEgutfKsVUr94wftXnylGhllbeDuWCGkGHE4GphAbMLON7NPkMIrgu6AO44W77mxU996r3nXgh2v8gSSBAD7hZFCB+JYoBEMRDUzM6pWbSoj88vhAhAEBYF0dN/jhW9UfvoiC2TJkcrNiLcv27DoMWIwdUhEIJwHIh33RaLkHf3f3ZtxUv/6+8PLlwO3yCg7mLgmQr9oB1FdzeRiAgpBlCdk1O9eBHM6nYxvvEnwZ/GifzX94/9w+ZJkxvXbwRgA25fnqDB8AEYMbhaRBgS15mD3qefhPXNM86UVb70t/9waPFyQPuOdWzBu6GWwDskOic91IklDRs2lo0eDdcBtBNcMUiIIKiZM6dmSS7gCR0FQRH2HwX+kPC7w64d0vX/XlnJibdW7h8zYnP2pGhFJQBb/9kYDGHCiMFVoqPBSrv9RQmIoSCk18Ez69Yt/vRnDi325gYzpBMc10ujQLzaBL1iSsizDBsqKstGjYGjhJmgXDgKDliBUT0zp3rpYsALfrjBwHedXq88MeDAEBoM+L2JGAK4BAFwMq/wwNixVePHN2yoRNf9gMEQIowYXCVdMQARsGIQgYQJDHH5ZMmapX//2cNd/nRxwY6+VWbdowAK4Q8kCoDGLZvWPDgScYFDYKXEccQlFhB2zZi/a3EufL9HsOgz4Apc8eRA60LIQyPXDBHdwVzXJOr8gdOrVteNHFU5aUpDZSUApZxBcjEM/QgjBldJl/ef9XhDVkJECkDs6NHS8SPfe35W7dPT7Fi73s1bJMXLKaTgDjrUt4hM8Xjdytc3z54HJUICxSwcF1IiEGydtmBX7ssAXCHPXaYAAgM20Ak4/jvtXm03gBEBfDEQZoAc++DLL773/Nzi8RObqqoAsKvMeBtD2DBicNWwP8xAAFGAEgiTAK1HGldmDkXLsfV/eKShcmOwrx8wZp2HqjPQQ+4+aX373dfT0hHvEHYIDIIwHN18R8n75VsrZs5rO3oMQp4SuF1THgJHERD693mtYZ1TrDv4NkUKUpPQfHrf629sXrrUbm2DMlJgCB1GDK4O8cKlviLoGIDuPtba1PBW5gM4Gqn8w8jops2AH2EQQHRolXSb4/BXnrXV7S/IzIB7HlAiIoqhm3ISYAuAVROyDxYUAIAIlNfF3786XUUVEn6X2DXCDwGRL/eINTUUpAzF8SYo+5W09HNvvxPuIJFhkGLE4OrQy50KAqTaHyLMANqORPIyHsCRaOXDI6MbN+m9E1JrdOBZBb0tQ7xGSqxu76oHs+DGAQiLMHv2DelH2DBlfDT/dd3H26uwSyyekC5X2CBxE3mdq4UgXs+m9mhkVWoSTh+DfaHgwQdjdQeMGBhCiBGDq0MYiuH6XQf0519ABKCtKVqYNgzHjlU8MjZSVQW9Dno3yMLevEzl9fQJtWkgsdrdRZkZcJXuvCHQ1XY6NgwAVVMfPVqWpx+zTiYS3xAIvsj3j4X3nV4zPDFgBnu+oFikYVV6Ms6dBtlFmZmxvXWD4ToY+h1GDK6ODxADMEM5AGLRhuK0VBw7WTrq0fqqSgAOlA1mXYkAYQR6EPJ+FBKr3bMqIwOuIsAOlnkht71t859e3fXiirKf37tneEr1cwsPVe4AWEF1Qrm6SJn9JEoZRGLQlWPmp9PGog1F6Sk4dxaKijLTY3v3DobrYOh3GDG4OoRBrGMGEnQwBdgBEGuIrB6WjFMtBePGH66oBMShjk5h5Y1EFAKJl5Qf7u6VglhdbWFWJpQSgMQvrGVyW9o2L35t15w/bv7RPfuHplQ/sfBQ0TbY5IDOgWIQJ6H0mi6+SIMB792Kgo4ZpKfhTCscKcxKi9XVhPqXbhisGDG4SqSrnsqLBYiQcBxAe7RpTVIGjp48e/C9oimPn2+KsnR2wlWAKIiAwaIzbyTsjvS2ffvyHswE2UBCfqgQHEfvsGvsuNNFqwBACRxHmFxwHGIn1BboOELIC62vGV11BjqxALGmSH56BprbEEd+Vnps/y7I4LgUhn6FEYOrRrqJAaBIOgHEIkcKhmbi1Gmw80b68Na6fUBnXPvdXZ2CJIEYSLgXhljd/oLhGaALgO7ECcXiiIC9AMn67InR/HzAUYgDLpQNJhGQ6ER779KEvwXTtYO88gII0AmgrampwBMDyc9Kix3Y5VWkGQxhwojBx8B3i/u+cdeFFoOmgtSHcOYs3AurMx6K7a0DOlwo1llHiYEGL4QQVq+BILZn/+qMDNB5gIVgAxcAW1dVOQSgZOLk+sI1gBLYIo7oN6Ur1KjLOiDwoJkBT948A4igE5BYY1NhWhaaY4hLQVZabP8uQA2OS2HoTxgxuEq89jJd3YYIIAIBiEWP5Kdn4lwLHLskPeP87hqBa0Nc9nOIREGUiDi6SiG0ziJBbO++VRmZcC8AwsKu7jyh3zwLgNLsyfX5RTqqLDpfNujDF2QTBUVYgwIRxULCxCwXALv9aCR/6HCc6oSNogczY/t3QVSYzUHD4MSIwdUh2u/hBVT1DbC/1rVFj+RlJONMM+JOcUZq+95qeGuoKIfABHHBikVPT2aIE9rgaqyurjAzU7cs9Vuy6gZs3r1teXZ2pLCwT88xZAh0kypFxNwJPt/8Tm3RyPE45yKOgoz02N5qwFWDRRoN/QYjBleHbkOhZxp7YhB8uGONR/LTU9DSAtt5I/m3ne+9DQUmkIC1MxlKoLx6ZGG/yVsY+QAxEBEREtbTDVaNGNFYvKaPzzJUiBcR6gS5fAFnW/MfHt38Th0EiKMkfXj7nt1Ba2uDITwYMbhqvJZE2s/DIPZ7zsUaG4tS0tB8BsqtXjD73Vf/CBeim9SR0kFjV2cdsq48C6ub6DJiQEQswsIQ/vNrr+2e97zTfr6vzzQsMOCIxFkcZiEHJ84VDBt+vukQAHGlYGhS/MDbIDPOwBA6jBhcLSwQXwxABCJ4yZOxpsiqlDScPgtI58G333jgv6FEBFACcsG6gAtebqbu+xxSLfgAMQDAzKLFgFzE2t8cNqw1EunT0wwRCugUUQJWCnYcJ1qL0h5ujxwUgInee/XVnXNmw3ZC+xs3DFqMGFwt/gwTAAx2vYRKAIg1HS5IzURzG4DYgdrCzEx0EgRKKRKHQRCv/jjsRWeXEQOlFDGLCFjh1KmC9LRYY1OfnmaIIIEjfhGy6+LUubzUB2OR9/WW+HsH85OS0Hmhr0/TYOhOb4mBdM0F7r7YddsivvMh8amSkpKkpKReOrdrhOj6MQgI4gTZ9aDOE9EVSak4dx6CWN2+1ZnDYSsRHVa0BQoSjIdkEVGhdRJdRgx0zAAAWOHkycL0dCMGXegmVEyih4Q2txWkPRiL1usnY7X6etp9e44Gw6VcezHQAcbEH7VXIXH7pXrgOI7nfGBGghgkvpaIuh28T+kSAwEcMOnmzvELtfkrN+fm4kIchPbdfy7J+gOpTlfbEWTrULM3KFgRC9shrkFqq6vLT0+H64jopqVe3Nh3GCk0N+enpcUaG/v0NMOE156WBcxgNLcVpmTFGhsAgBDbu68gK0vIMQFkQ9joFTEAEI/HMzIyVqxYgYvlYerUqU8++SSAN954Y9iwYUlJSa+//joAZk4Ug+LiYu0m0tu1DIRODLzhNoBAQVz93s+1Lk9JuXAsCmY4aKs+VJg6XHDehisCuASWrpnAzAwJby6RtgwyMuDaDCb/dwQjBj0gfscOkIig+VxhamYsGgEAkVjd/vzhw0FuSP6IDYaAXnETnTlzJi0tzSKH/YkAACAASURBVLKs//7v/0aCHZCdnW1Z1h133FFSUnLTTTctWrTo5ZdfvvHGGwsKCuCv+3rP4uLizMzM4IDBGpS4T1+jW3FCxGvb7BUXt5zJS01vO1IPAA5iBxrzHhlltx0TOKQ7EpGvIuIdJczrQseBA/kpKXDiAmFfj2HE4Ip43YkEzWcLU9Nj0aje2rZvf17Wg1Bu356dwXApvWIZzJ8/f9myZZ/61KfS09OD7ePHj/+Hf/iHT3/60/fee++SJUssyzp+/HhhYaFlWS+88AISPEIAysvLf/zjH5eUlJSUlGzbto2IiCiQhHAgAnZ0aqgL6LbUonD69KqU9NYjDQzAYXH53eLVpY9PhojOIBIv3ix++2oJr2EgcqS8vGLyJLg2MbFvt8GIwZVRousQT51ZnZze1tQIAEKxurfzsx42YmAIIddeDIgIQCwWsyxLi4Ft22PHjr311lsPHTp055133nnnnStWrLAs6+GHH/7Nb35jWVZubi60y8T/vmnTpq9//evJycnJyclPP/203q6PHBpEwLbuMqO8jkMsCqdOFaeltzY2MLzpNdHKdWsfeQRK2aLFgCBxEeYu20CFVA+UKkhPP79/H1gJRBEFvwIjBldCMRQJcPrsqpTUNn19iGK1RgwMIaW3sona29sty8rIyADQ0tJiWdatt9764IMPfuYzn7n77rtffvlly7KmT59+6NAhy7IWLFigXxVYBmvWrOnmJkqMKIQDEbCrY79BETG7OH2yICm5rTEKPywcqVxXPmokHEc7lMAkiCv4SUQiXu1aCFGqIDMzVlcH5QgSIgbw1YAVWprz09Ni0S4x6NohsXwi5O6wa4vAEwMA59oKklNikSgAKI7tPZCf9ZCQaVRnCB29FTOora21LOu+++6LRqPnz5/fu3fvpk2bSkpKPvvZz373u9997bXXLMvavn17RUWFZVmvvPIKfCXQq01QZ9At5TRMbiIgcYnzascYp88UJKfFGiPwF/iGqory0WPguFDk9fTUfSi8ymMJbw83pfKzMmP79kKUfqvelPegaFoUzpzKT0+L1R8BAIELVn5rOvgT3dj/MaRvsxcQ0cOLUP3C/HeWrSA7DgAKsV21RVkZil2nj0/QYOhOr4jB/Pnz77nnnu9973t33nnnkCFDDh06FDz1wAMP/P73v7dte+rUqT/72c9++tOfTp06NR6Pd1vl+0HRmUaCb7qZNePU2cLUzFhTQ7BL/YaKsjFj4SpxXLiuELv+6yjxACFEuflZ6bF9e3U/vWBxFwTVcgpnThWlpsXqj+ptLhRpXzkBDAU4gRiEt+nGtUe8SdcoGfto4+pS6LfuIla9b01aOpFj+lEYwkZvpZYmwglc+pR+oNRFn44BIgYCAJH1FetGj4bt6FHyIEVBazpvnkFYUW5hZnqsbq/Xk5X9Vt1+Bw0RhVOni5PSYtGjwfPi7wxvgs8gswy8ojPPaFw7ObuhcBW0Mgjaavbn/T4VELCRA0O46PUKZA0zK6V0+FFXDATbg4KyxP0Hkhg0rN9QPmokiAUAOxASwAFIBKT0kICQLpLKLcpIi9Xt8Xqysrfeu97ENrAQTrSUDMtoa2pSAOuxBay79kmgHIxBFTNgCBN7TsJ1kyZECgohcCEKrnP23I6FSw+8nmf6lhrCRm+Jgb7lD2IAicZBYvmY67r6R505Grx84IgBwz7btvWpJ/fnFwAQ1u1KvZIkkKsrkEO6MCh3VUZarHa3lxfFnnfIBRzt/xHBydY1SZmxxgYvpqDdQb4YcKIKDBYxIIAc0b2nUDFxfDRPiwF34gKAI5s2r04bAZNPZAgZvSIGXXWqPfai0AKglEqsMNAMHDFQAFA9Z862BfMB2MrW881EtKvFYbAT2nWymxj4qztBCKyHtuFM+6u/T+483uSFBfQ+7PXmli4x4NBK3rWGAHITxaAgH4AjRLABNFZUbhg1Hg6FvEehYbDRK2LQbekPhCGwEi4Vhm4FZf1RDAQMZpw+V5Sa1SUGBBB2zX5u19JcaEeKdrF4q6XDoPA2quuKGTAQLO0iYD3znQHE7S0LF+3Ly4MThyjxOm1IsPrrXq4CDmLPAx0G2BHR+UIVE7OjeSshYIgSBSC6vnL9mDFw3UFxMQz9B9PC+uPRTQyIcPLMqtSsWPSwfp5FIKie8Vz14kXQiaTsDYcXCOAyOLxZNoEYiCT4/AVCIPamvkMuHIv8aWgKzsXA1NWaW48CZegeHAJCqNuzXktY2BaKCwHYMHFy41v5UGCBHmIQ2VBRPmY0lAkgG8KFEYOPR5cYiAgLEU6dDSwDRayLi7bPmLd98UIAynFBDHZZJ+yDJORikJUa27dbu7X88ySIC6VAnt871vjeqpR0nDoDVg5gBwaQqIvEAOGNlF9DXCAOYSEiF0DF+MnRN4u0KahthUhVxbpRo80UZEPYMGLw8egWMyDCiZai1Ky2yPsMERECA9g084WdS3IBiCsgBjtB9ZaEOf8+EAMR7uqzTRAXpIR0bz60NR1ck5yCk6cvFgMb4uqAszOoxEBgM6Ac4U5AKrIfi75ZGrjJYMTAEFaMGHw8uomBUjh5ZlXa8FjkfYGIHn5G6v1NW8tnzWw92gQddRWHdK8C9rzpIV0WlFuUmRqr260HfOpMeQgBDkTpVZ6AtiPvr0lJwqkTYMevLWPABlwQhLUIKK9N34CHAUfAijkGYPXEiQffKIcXXicAkcrKdaONGBhChxGDj8dFMQMBEVra8pPSWhvrBSLEYAW3E0Bh9sT3ClfDu792GA6HWgcAAK67Kj21fe9uQBwtBgywAuICl3y/Ryx6uCB9KFqOQWw/44gZtsDV8XMCCEoGjxiwHlqh6qvWbpg9u63phAAsLOICiG7YuH7kGDhGDAzhwojBx6ObGIjsfH7hgaXLld3BQkIMZogDYN2k7GhhCbz2DH5nO+nDYiy5qBpM4DVMSjwb112VkR7buwdCSt/yewu9q7uwacdRrCGSlzEUZ4+BXb/thLePtzJ6YjAo3ESA17QDwI5pT+/JzUVQoEcOgOiGTRUjjBgYQocRg49HNzcRUDpmQtOqUuiRmN7gewKkYsK4aF4hCK5eFIV1pn4f9ezR85pVUE4MZpAr7AoxgoGeyi7KzIrt2Q10srjMcJU4Als7goT1acciTYVpyWg5Cebu4iaBH2zw1Bl02Xs1s3JqcpcAYBFhxaQANGyoKntkhHETGcKGEYOPxyVisG7iY5H81TpNCAIHsIUBWf/o6OjKt6DgNSoQgRCg2O9get3PWwFughgQyCVyWBEr8RoQuZ0FWQ+11daCYmAbLESIazEQgFnbEbFIU2FaCppPg/QGfxaaV7V8cdfrQUDwC92Vk7NryVIAIkTk6gtxuGxd2SN/AAbRBTH0C4wYfDyuJAauwGEFoGLi2KaCQh1j9u+TRaD6qH+1QEg3pvZ8GkLCDokrAJG4LEoI7oW8jIfa9tSBzkPZokS54gWCRbccYQCxxsaCdCMGXVwqBixKZ5oK0H7s+LYnn4xWVfXpORoM3TFi8PG4khgEy2PlU5MPr3xNXBYGSC+pwn0rBkxdKY/CEGWLExdyBXFhFoULbXlZj7TVvQ2Jw4nDYVFg1vN8GKIUSIC2pmh+erIRg4APtAxElCKl2xXWzpmz84UX+vQcDYbuGDH4eFxRDFiEBXHHiR5eM+LBtiMnAIAVQRyIHnbTNzlFLGAOisIgDCgbygY5AlcE7gW4nctTMs7ufweqE6x0AEQXy/lioBhoOxLJN5ZBAh8oBsyuiOhepTUzZ9Yszu3LUzQYLsGIwcfjSmIgArDAJpxpfi35gXONeiKYDRGGKJD0mRh0dSEl72flgBWEBMwEp7NhY+X6nOc7T50G2WDSQ8v8IW0CJoZioNWIwcV8oJtIRAXtt3bNnLlr0aI+PEOD4VIuKwaXGzB5aeO53mCAiIEeByaAYpw+XZCR3tp0TABIXPf28ZxEfbJKivflp/+QQCkdFCZdTCBvjBrTULkZgLCje1J3LevMYNY60tYUKUhPwamTeuqBCA1mMdAZuywCkZrZs3U2UdC2TydU7c7J2Z1rLANDuOjJMtCTBubNm7dixYrTp09nZmZ2dHTA7zDarc/otWWAiIFebbVxcKo5PzW1talJAIjti0Ufp1t2JYIKAUrg98dQLkgVj51QX1EJgEAORAVZsL4Y6NOPHYkUpqfg5End6JpYuaS8ow9SMRBFCpDqnNnVi5cAOk7vVXUAqJk1q2bx4j49TYOhO1ewDHbs2PH3f//369at+8UvfvGFL3xh3Lhx8G2CDxxjea0YIGLAECUkUEJoOZufPjwWOQwA7Oomp/6Ned8oggQnLQLxowGBGDhO2ahxDRsqAbhg2y9C7ipU89Z6tEYPvzns92iPQZEwizAJD17LQIS1ESVckzPbjw14vZ2MGBhCy2XFQC/0q1evHjVq1P79+5988snS0tKkpKTg2W4ja64tA0YMQFAsBMG5tj8OS71wtBG63Ewvl15YQV1/C0H89Umgq6d9MfBiCQ5se/0jY6MbNgJQEBfiQpSe2ByIgQiA+NmWzVOfOFqxHvqPgkkxy2AVAwjIf8c1OTnb5s0HdHzeiIEh1FwhgFxVVfWNb3zjy1/+8saNG++///4HHngAxjJI5EOIAbGwEOzzdW+9tXXxEnTGIaJ9Mr5t0Ddi4HsuBMwQF0J65RZA4MCNr39kbGTDJviuD28OQ/Ceu3xMaCxetXrkCHhHIxIwD1YxAEhEIM0H362aMLF5/wGB9sIZMTCEmp7EgJkvXLgwcuTIKVOmtLe333PPPcePH4cvBiaADHyImIGXfuMCTufx6Kv/nYoz7brBqYCckIgBEdgVkC5AU4CCA+pcP2JsdMMm/82JQEkQV8BFYtBQlFc+caI+mFJuQs+jQScGAjhKAagvW1v2yCPwfsVsYgaGkNOTGBARgPb29h07duzevbuqqurkyZPaJsAlgyp7JkhACr5rLmdb9Bsx0Jkj3kddAJRPmhIpLAoydbxWpsIAVH1kW9JwtHQAAJRu/Bmk71zn8064s+cgoZS8MZ1w4YLsdSPHRDZs9N6lBKKVkP7kP4gU5K2flA1AWISF4LuJ/BmYgwlhEQCRqsryMSPh2OwVGjL5vrNds+buyl0IPQ3Oc9hdnFQmg0U7DeGhpwAyETU3N99///2Wz29/+1skrOmXMw66DUBmZiIiokQVYWallFIq2CfxCP1ADLyPq+t39ff8J2snZzcUFEAgDBFyoSB0rHZ/VU7u3onPbvt//+97U6ZumTGv9UgjRLG4IO6+EFzPNyDand29RRJDoNzykaMilVUJb/ayZxnNy6/InghfG8lrWef/rP/r7TcUFnTWFRqqNpaPHg73gog4QAdznImoA8DmaXOrly4E0AlyCLAFNgVVGl7X7z6pTDcMYq6QTVRWVvbtb397+fLly5YtW7Zs2datWxOTSnu2DIJFP3gA39rQSqMJdg4eo7+JAcMNkvBLsifUFxVBl/cSOULM6tj+t6sWvFjz9MziH37/velPbVkw79zpJhvcKTaJ9NGgePG6SwsLlJ68Jv77EgGUKh81MlJZ+WGOFc0rqMieAO1iEpDX0DvwL3V5SAY+fii+fuOmtWOyYHfAFRa4unxbnYd74cT+P6+e/uSJd2sJrGxvBByJKNHDklUwIWiwXDRDCLhCALmkpCTIINIkBgw+TACZiLppxqX+pSA3KfHfDbkY+OsmMRwFx/OoA2uys99ftQoAszCxApiUnn4ebzmaP3wY4s0AMdR5qPNQbh/1sO49MXCDcjv20qVIFyAMkoWNCYqhxWDsQ4h3wvb03iWX2AZ1ACiYMv7dgnw9QlRYHHAcsAGv1Fu8yvBBcs0MYeAKqaVbtmyxLOuGG274i7/4C8uyMjMzASil4N/dX2ocBMt6dXX14cOHgx02bdpUXFxcXV2tfzxx4kRpaWlxcfGJEyeCYwb0HzEQgUNwRABX2k+fXv3EE03btkHYK9kVIZvgkkBajxzOz0hF81HhC8JMil0h1o3iBooYuLovdiAGAoYoHUIYJDe67N0WNFRtXDv2IbidIMBlOCIsimwFF8D6yZMiK1fBAbviEF0AXwArQHl9P4wYGK43V7AM6uvrMzIyUlJSkpOTMzMz8/PzRcS27cspAXzf0YsvvmhZ1rBhwwDYtv3oo4/efPPNycnJf/d3f/faa68dPHjwjjvu+PnPf/6LX/zi+9///jvvvBO8UFNSUpKSknIt3+i1JiFDxhXY2sO1ee6CrQsXAYAbZ2HS1UcMIVaQc0eiRemZaG4mJy6OwIEoEuYgXfO6v4NrLwaOFgNhHVZnwIUfTx4kYuCHRxoqq8pGPwKOE5iJQYASFnbAADZMzI6+UQgHQrAhnVCukA7hiC8Gg+SCGULCR2hU19LSkpeXlxgcvtyef/zjHzMzMz/xiU9kZGQAaG5utiwrKysLwDe/+c3bb789NzfXsqxTp04dP37csqy5c+d2O0K/sAz8jA8F2Hoa8O5Z8/YsWAQA4oroGz04wo6wAloj0YKhaWhphWI4gAtRTEJu3+TbXFMxyC9YP2kCAFuLAXtRcRdw/aFvg2RhC0Ll0YrK9SNHgxwb5IJFBK6weF1fyydMjOTlAXAgF0AEAhEcgBhQg+dyGcLDZcWgo6OjpaXFcZyzPn/84x9//etfI0EGLmccvP3228eOHfvLv/xLfXfvuu7u3buj0ejx48e//OUv33fffcuXL7csa+XKlb/85S8ty1q6VLf57YpDbNmy5Utf+tKQIUPuueeesWPH6sP2apnbRyVBDAhwtBjUzZhbt0i3H3BZlM7EVCIO4ABk2+8s+58dLyyATigU6MafLri/i0FDfv66SeMB2LpHmyJdhmvrhU0GUQDZBWwAQGNFRcWo8XBJgWwwa7+P7/opmzyxYdVbgHRC4lAiCi7DBshzMw2Sy2UID5cVg+Tk5JtuuqmiouKmm24KUkuHDx8Of9VOzAVKRMtDLBa74YYbUlNTg+1PPvnk7bfffvfdd8diMe1E+sUvfvHmm29alrVo0SIkZB8BWLt27f333x+NRuvr648dO5aYg9R7lW4fia6PqzDgugCA2mdz9iaIQeDzZT/VMrpqbfG4cQAcL7bqih4c3wdcSzGoLyhYmz0egNJZVYrAQoEYMA+e3BiC146isbKq6OFRYBDYhigAEuSdotQXA1tPydZi4ECEHaiuHlAGw/XismLw0ksvPfzwwwUFBZ///OdTUlLS0tJ+8pOfpKWl4eKc0UtfqBdrZg5cQ0qpsWPH3nLLLfv379f7PP/885ZlHT9+/PTp05ZlzZkzR78wSDAtKSlJFJLEYoWQiEFXRamw6N7NwO6ZM3cvWgpAoEhUVyEuMYhBiKxcVZGdDS+ZUPyWP9TPYwbSkLeyfEo29N8GibiuXv0dbSgQD65wqIjTfG7HwiW1r78JIRfiBs0ofDFYO3liQ2EeglC7dqwxXJEOcNyIgeG6c4WYQWNjY5D/s337du326VY+dumrVqxY8dvf/tayrK985SvJycnV1dWWZd1yyy0PPfRQSkrKU0899ec///kHP/jBL3/5y5///Off//7333333eBo+oCJMQP9zwU6ET4x0P8TALtmz9yV+yIAAbFQV10yE5jAEl1ZtGHiRPi1vAzqu0XymorBqrfKHssGAIIoUeTowgs9DgfM0lcJtNcfARS37v3zW8kZcG0W54L/3nWalb4K5dnjI/l5QT0G/D8iG9IBthO7wxoM14Weis6CG38dM6ivr9+3bx8A13X1Hfrlson2799fWlpaXV29adOmkpKS06dP19bWVlZWFhcXFxcXb926FcDJkyeLi4vLyspOnjyJBNeT/kcDyyAIJOgHruuGRAz8z2nQh5oA2jln5s5cbRmwHnHoeDeCnrc4kle4PqjUBRSY+6xbw7V0Ex0sfqtowjgAsEFAHETCfthYdAVyKH5t1wMGqbY9b+enZMI5HxenXfzRb8E9BFCe/WgkP0+rRILLEQrigMn/cfBcNUOf05MYiMiFCxfGjx//qU996hOf+MQnP/nJSZMm6af0onzV8226+ZeCFT/RTaSL3RKVQEtFqMRAgoR6EODunDNz55Kl+mmtpf6n2hPOhsLCtdkTg0MEi29fcCUxAMpGPHK4vPxDHImPVG9Y88SU2IkW2HCBdpArrOsnBCJ9EyHvG1gUxG3bv/+N9Aw4FwTi9eJQAIMAnWuwdvKjum0JJMHKJOhZSH5OkvTZrYJh8HHlFta33XbbbbfdNmTIkLvvvlu7ifSK/IHR44CgX0XwIBCAxI3Bj902Bm4iuZiP+3avHb4YBPd1DHD1nJnVnhiQnv7ovWf/hrChsKBs0sSuI4jfs6EP3oB4sQomiCuBGLC3BJ1+e//GKRNaDr535UOxC6itCxdtfi4XgPKmenYtcn002LNv0LPiYgcO5A1/EE4n4LuGGGBhQOcarBk3sqlkjX7JRWLAvhj06Z2CYRByBTEoKiqaMGHChAkT3nnnnbffflvPMwju0HtvdQ5/nQHgf8IT8mR2zZ65K1ePOXRFFHSZkYieew8gUlC4Tnf39DSVmKVv0mUFEGEGM4McCOvwhT/LEtufn1Mz99kPfSxU5y6tznkegI4bwLunFQzCm1vhtrr9+ZnDoZzgCgRXQ+vj0cqKLVOfjDe3ABD9aUIgANylBQbD9eIK7SjWrVv3+OOPT5069atf/erXvva1kSNH4uLb/F6i34mBvhzdxUB0lzYRYhsCoP7N/LKJEwBAMWwC2BVxr/unXgAH6ATi/nBeUcwCG1C+b2vX4oW7Zj/z4U9tV+7SXTnPAfCCyHrVG6xiEKvVYuB6uu/9hfhXQwSx1oKkoW31DXp/ESEWIwaGPuQKAeR4PK7X/aSkJO3EDzJKP07M4IoMEDEAwBDFEI4LifCx7TvWPvVk+6lT6HTEEQEriHPd3SgCuEAH2BY+e/JE29FjUCyKlF7FBQBqFuXWzJrxEcVAV5IbMbiiGDCaTxWkJrdFGwGAiZjIq0UxYmDoG64QQAZw7Nixl156afny5cuXL9+6dauO8fZQdHZNGCBioMutWEAkRKJsADuXLNo+43kwXBJX2BGiPlguBeKC2gG1LfeFbTOeAwniMYitoLRTe/eil3fPmPPhj2jEoIsPKwYpsUgUgDCxsCIjBoa+5Aoxg4aGhu985zvdhtsEMYPeKwEbIGKgY4MKIGJl626Uu5cs3v1MDhQYiIMViPm6ty0VQbwDbacRb39vxrPvPfEsTrXibCvogkLcgQDYtXj5rlnzPvwhjRh08eHEIC95WGtDhL1hcCJdCmDEwNAHXGG4ze7duz/5yU9alvX666+/++67J06cCCq/ejXLc8CIgbcokhJxFBjA7iW5u3OeBQOk6wzIcyhdZ1y3eFbOG2mZJT/8SdUd/1b2m9TyZ3IgDsNhMICdi1/eOduIwVUhfOHtd1empPUsBqvS09oaIiLQRXlsxMDQp/RkGYjIuXPnHnnkEcuy3nzzTSMG3blEDHbMnL5j4WIAxDazqzOJBBCQwIsTVy/OrZ4zFdCv1YfoLW9bD2cuhLYTza3Hj9c8O2PPhGntDUfOnzgOZhCBGcDO3Bd3zuneTbYHjBh04TpH1q6rfOIpcWxmJX4tejcxKExLjUUbobOJYLKJDH3MFSyDzZs3WwkYN9FFfIBlMGvr3HkAGA6zyyzkja4hwGtAtHNx7s7nnkKQb+jpwfUmSAfbv3Dxn+e85G8FXAYxgJ1LluycM/vDH9CIQReOXZCaeb7uAEgxucJKjBgYQk9PYuC67qlTp5YvX/7KK6+88soregayCSB3cXGdQcvBgxunZDcfeFs3cdZi4EK3JCWIN+C8enFu9ZxpCAbQex7j637yevwW0JC7aO0dd5+vr2ddkOyIFoPqJYurZxsxuCpsOz8lI1a7D0xMDrrKD40YGMJLT24inUK6Zs2au+6666677nrooYdgUksTSRADAPXr1q0bNQICUawoLqJExO9gH3St0GLwDPTQ9D77tAuEYJ9nt6Uxd+6f/vp/ndpYoZ9gFh0zqFmyuGamEYOrwrELMx6M1e0Hk5Aj5Bo3kSH8XCGbaMeOHV/84he/9a1vffOb3/zqV79qis4u4mIxiFRVlY8aAdtlYhGXWTEFHSk5uP2vzs2tnj3DMwdEpI/aeYooiDqyYc327LHVDz90bN1aAK42DCDQWU9GDD46IiJ2vCB9eKzuAEgJu3p62SVicNKIgSFUXCFmUFRUlJmZqbfs2LHj97//PUw7ioCLxaBhQ2XZqEfgEhgiLosrukuZMOB/2oGdixdW58wCIEIQYS+ocL3RA1iaCot3jh2/c8pjjeUV8IZ0eidTs2RRzaycD39AIwYaFmY7virroVjdAQgLuxCVIAb6P0FLc74RA0OYuEI7ioqKiq985StpaWl6uI1eoHWooFf1oD+KQaSyqnzMSLgKJF1DTODbAP5He8eihdVznwMEIHAQSrjeJ657Z54oLK0bPXHzo5OaqioBgITZ66S2e8mCj1R0Vr14SfUsvx0FuyIDUAzEbyrHCGw9/0uCx4DiopSs9r374I1z0ENOBaCuRb+t449ZD7dHDkMUEwmx36u0a2T0gLluhn7BFSwDANOmTbvppptuuumm733ve9FoVD/VrSnpNac/ikFDZWXZ6BFwFbhLDLpu8bxAMZ0/fmzd5Oxje3d6SUZ9YRcIEAcAHH+rsG785C3P5hwqXytEcIjJG+G7e8mC3dM/Qmrp1udf2DlrDgBiF6IGnhiIP5UiQQwYl3wRQEqKk7PO79nLgNOVOsy67MR7GJfIpp1rpk7BhbMiAsW6DlFBWDvqjBgYri9XiBns27dv586dpaWlpaWle/bsASAiSqneniswkMTAyxpifV+oACkZN+bwhrWATjLq9QDM5c4dgsa3CjeOn+B2duSNHBV776CWJ98yWLx75od3E8l7BUU7n50VP9cqyvmWmwAAIABJREFUTMKu34x1oImB78gJfq8XPauAOKCc+JrktPa9ewhuJxSL0+0AWiA6osf/lJGCthaGMOk/G8+A6DIkDYbrRU9i8Kc//SmxyOCzn/3stm3bgkE0RgyuKAaSKAZ6VWSCUsVjxx6uWgdASIiF+mDcmYAJroq8mb8u+zEAhRnpsdrd6HJkoCZ3ac2sGR/2cOTCobKR4+o3VAIYkJYBB1MHFOAiGFLGvuHH3gAbRmesJC29fe8eEVeJw8oBCcgLo4h/c9B28PBbWZk40yIiTtCoTkQHnE3MwHCd6clN9N3vfnfGjBnLly9ftmzZsmXLHnrood/97ncAPuaYsw/DwBADJLiJvI+3YjhUPHq0JwYCgrjcW7V7PUEOyInmFVVMeQZA4YMpsdrtnr9aAGDX0pd2fbiupQJRyoGtykePi2zcBECUg275M/2f7mLAnhUVTCfzHTsu3POFmRmx2jpACdlwCa7eVQAor/QEbYfez09Ox+kzTByHxIU88xGkgn/LYLhe9CQG9957b2NjY7AlWKB7u/wYA0gMEvcFAGLYVDJqzOHKdTqsrN3EffCpFxfs1hcUlmZPA1D0YEqsbhuUgLwoRs2LL9XMmPVhD0YKcWftyLEN69cDkIGYTcT6rt+PFBAQBzq1V427FALKds6cfG30yLb3DwIkQiAJog2S4F6KRSKrhqXj5BkWdIDjXTFmoj6pSjcMbnpyE33jG9+wLkZPOuvt6DEGnBgkxJAZLpWPHR/ZsB6AsBDg9EkLaxCAxtVr1oybDCB/6H/F/1wLAhNICMCul17a+vSHdhOxgqPKRo1rqKwCIOzKgLMMoH/V4kl4HOgAOvV11DaC6/WbWvPMs++UlgoTi0vCIl12oncpGABi0cjqYek4eRaMTkin53WSoB5xwFw3Q7+gJzGYMWNGSkpKcnJySkpKSkpKWlraa6+9Bl8GjBh8BDcREsRAUdm48Q3rKwCwYkfI6aN58U6sbc+8eX9+Iw8su2bnvLtihZAoERFqPXJkfc5z9RUb8SE7jgjDUWtHjWuoqgKAwEE+sMQgaC5IgA3EARcQFjgCF2AhMBilIydFN2wBIMTConzZ8H2GDEUAYo2R1cmZOHEWJDY47rmGBKJLVfqmGtEwaLlyamk3tI8oaErRSwwQMfDSSSVIIgULXCkdPa6+ogIASBisrn/XUgBAa31D/gND0R6DcjsPvrcyOUVc0u/l/bcK10yYBADqw7XXHkxigCCNVHt1FOAwiB38/+y9aXBU55k23DNVX00mzrzzzdTMVCVfppJJ1VdTjl2TzOt5XXEmjuPEydh53ziTiZ1kHJtFSAJs9lVgJ14IZgcbzOYvGO9m0QJIIARIbAYkgRA7xkYtsSNWtaTuPue5l+v78TzndIMNajlCAruvchkh1KfPon6u577v675ubkUSwusGjY1WVAGwZrUiSNjGDgVDBAQhALGm6Io+jgwIklaTZjBUXaSRRRbdgw6M6sLOMisnFREiCtNEWW+ijslABCKqLr+sCnhSPnRUg23yIgUTS/cPvgSAWPTEit59cfYkNNmyd8/S/IGaNLaRqmlpUVXBeGQudv+ckIFKarMuQWqIFCKsJgnfUw+mbcPwYY0bqwAo++qTCPygIGz1ZHZj0NIUXdknD2cu2j2BOMWpqiUDAWXJIItuRAczkJnZaofCvxKRtaOwf71Bp/XZIQMWO7qEAM9uD1lL8p9q2roZADwBkarpkdOPNZwo6tUbzScg7bG9e4tyByJuAEAounxZxejRyHwx+tyQQaqF2NUJVIlJidSD2nY9s2ZM/+PVmwEAbMRPqBobRggAMMT+ilxFBvYuMZTBV1mjZ5FFN+B6NYNw0bfrfhgH+L4ffucGndZnhgxUBdYGVCBq+7n8vUvf2L7gNf9SAgJRCdq8uhuxhhMlvfug+RTYa62rW5mTD99eikSXLy0fOxaBhVHH+JyQAUSgHKaKCBD1ldrhC4yJtby/8PUPX5pV+x/frx08asvcRR9urFBIEiJhS4JAVQ2UgJZj0VW9cnHmEiSwtFUQ1M92IGfRE+igZmATREhLCoWJo2yfQUgG9i40VG0oHzoUxpoNOa9KAxFIujJd0Q60LH3iqdiuJgU8l3XugQ9+S0Pjyr45OHsWzC176pf1y4URm7NuXLZs3ZixyHwGm/AVZKAisMM8P2OrmgjUpDWXMzQOSsBXMeZ8y7ZXl+596JFDkcjh3LFbpiz8aH0FyBM3zUIRbBLslr+lqbGkVz9ciEE1FK0yYNJ/q7LIortwvcggHo+nBwRIo4SQKq712mg0evfdd0+cONH+2Pbt27///e8/9NBDDz744KlTpzzPe+65537yk5/85Cc/ee6555LJZDgjwR6ztLQ0JIN07umB5qxrQSEkysqkogbgpi3rSweOhAcViHiGkhT6D6RcKwUgmPiKnEGxXYcBseFDT5w+Wo5FV+b0w5kLIKVEYvd772yZ9YpVyjQtX1I5Zgwy5CgFiOH5pUOGfFRZBQAkBMQBSpPF3DRP7lMj5ShCdrMvEBBrHMzwFQkCcPGlP26M/N/xym32JUrGBhACYYgbcGGP5ft7Xlu8edZsAAhHYYeu51kpURbdi2uSQTQa/c53vnPs2LHwO6GcNEwc2XLCx1+7b9++Rx55JBKJPPHEEwAuXrx42223/exnPzt37tzXvva1Bx988J133olEIhUVFdu3b49EIosWLQIgIsYYYwyAVatW9e/fPzxgGJR4nneT8IGKQpQZRlQlyYlLu5e8uXnGXBj1k6zis/h+ikVDjakAgKGS3Cdju/daaWJPfOgVQMuxo8W9c3DqopICaNyycdXAwWADeI3vvrFh9Ghkvh4RI54oHza8oWojAJCyIg54lgzI9Vvd4mDAQEUsGdiNvBpRX8hOh8Ppqs2VQwrqX3y5uXqrQFqVmYGEgpXBBqQqrvtMAKCpbEXpqJEAlK24NAg3Aw1rFll0G65JBo899tjPf/5zAIcPHz506FD4fUsDtpL8iZkiVV28eHFVVdUXvvCFPn36ADh//nwkEhk1alRdXd3f/d3f3XfffX/84x8jkcjhw4cnTZoUiURmz54NgAMAqKys/Pa3vz1x4sTnn39+8eLFNm6wteubhAygKgoPSKiomJb6fe/l5ILblAgMeElI4DCDm5AMAGhr9EhxzgA0tygrgGhlxdrhw2E8wDQtX1I1bhwyThMJGJ63fsiIaFWVAjAEEQMk7aL52SEDT4MEv926M+ADScCHAcc2T31535tLAVaJJ8X3iZx3ncCRQdiFzAoTb1r2dtVYSwZt4PawvBSaXGSRRbfhmmTQq1evn//857m5uXfcccftt9+ek5PTp0+fxYsXIy1vcy0yANDW1haJRPr27QvgwoULX/rSl+68884JEyZ84xvfeOCBB15//fVIJPLII48MGDAgEonMmzcPgF3o7csrKyv/9V//deLEiRMmTHjjjTfska/1jj0CgnpAXNWwgCRWu78ktz84xmCPRY0HY8DBEnizkYEq1LQe/fDtvvm42GpPoGFDRfmwQWACtHHZsvVjxwan2wEE8EEwtHbQqKiVzBoCqwC+ndeQVma/lcFQzw2gEEBZwKRqrCzUa9v88ov177wLIA7PQNkWgwjiuXIAwVBgQicqUBMtWlJeMBKASlJhyAUMAAzU2FxUFll0D66XJrrjjjuusqMIp551mMT3fT8SieTn5wO4ePFiJBL56U9/SkR33333XXfdtXDhwkgkUlRUdOrUqUgkMnPmTKQVDACsWrXKvtbi5uGAEAYaVzWqSoIkxXYdKM4fAK/Fh8RVWQ2I1A8UgzcbGUARby194bmGTZvhGYgAaNpUtXb0IIq3g9G0vKhyXCfIwIChWPHUiMaqTQBgfLsJDof3KG79ZU0ZYtQ+UWFoUuCxiihgxDQ1LH3sUe/MSYJeVia1LQhggeeGGxmGscmgsJHvREnRpoKx7i/CBuosLWCgPrhnbKuy+HziegXktra2CxcuLFq0aNmyZQBEpLW1NXSpw7ULyPv27Xvrrbcikcg999xTVlZ26tSpb37zmz/84Q8rKir++q//Oicnp6ys7Itf/OLChQtfeeWVL37xi4WFhfaFIR+UlZX16tULwFX16punhsx24L1d5Ehb6vYty82F184QD8riWxmRw81GBqo4f+7d3k+0n2wCAFEQxPe2T39+5+LFUDQsL1w7dgwyIwO1RgwqVS/PqXtvGbXHbV08TKbIFc1aty4kHFNqx0XbzCWpAih/ftyhtxepiBhlT+BBk2BBu0jC3gs1ApOEJAABzuzdH12yLDpqzM6HH20oqzqyfgu3tEGtAg0MUhh3G7PIolvQsR3FmTNnFi1a9Mc//rG8vBxp6/V11KWLFy/u3bt3//79c3Nze/fuffr06YsXL9qvhw8fbkvE7733nrU8eu+998J3/DgZhGdyMwqKALUbQ0Gsfl9Rfj78uOtSFUoJ0nE1GagxKwIyUO3+YQaAKk6dWZ2b29L0kdg7TAqgZuakHfMWAGgsKqwYX4DMV3AVsIdE61v5T10+dMSVCNjJ6gnyWbDhFIBhgDYFBRPJLJoPNpQ+Pf7c4b1OOuUDnpVSWcsiBTOEALIdBhDsKiqtGDx8138+uva7Pyof+1zxpJe9y+2A7TMAWZvTbJooi25EB2TQ2Nh411132RzRn/3Zn7377rsAQhnojSvn3gJ9Bm51d5u32O69xbm5oCSsVFRtxjxYAa8ig0SiqHde294DAImKdr9PnQjOnCnt3fvy8SYP8CCqCkXtlCm1C14F0FCybG3BaHeZHUKDngpOLM17KrbnkJvvaBlARcDUM/M9uxQM+PAVrQoDAxY7SPrS/sPrh044t/8w4Ea8ud8AO+VA2U40AhHUDTML80RNZesrCn5nv5agj832K6oK+LMgyM3iVkEHZFBaWvrAAw9YQdHs2bN/+ctfIuhEyzad2Q+vTQjH9uwtzOsH39qROW0gfUJkoKIMn06UVlQ986xyUnsmTSRoPlPap3esqYmANogdzLhryoxdC18FEF2xbO3YURkfDWBRqLJXnDswtnu/uy1urrtAie3Azxt1Pd0CBRjMIBDjAtAKP1794ov7Jk/eOm4MAFKjUFExYAMiO9cYBkoQciu7kxIB6gGJj4qKSscOBcinJKuqtaUQW27IIotuRQdksGrVqgceeODQoUOHDx+ePXv2I488gsCm4oama25+MgiXOSsHjNXvKc7rB+PIQK8qmV4RGShE43sPF/bOYb+dtSfywio4d2ZF3z6t0SYA7YGrzpZJM6oXLATQUPh2+djORQYKKFNxbv/Y7npXCxGrlhcIaXrS7BaFTfYwIHFoM9AKie+6+98O3HMXzh+FtieVrB6OwAQimIASOCRG+591dQHiR4pKVo2zaiIDBcSAxM4XMmHHYhZZdAs68CZqampKTxO9/fbb9p/CboMbdFq3BBlYHY1d82J1e1b266fsp6rE1yQDgKW1ds/KvAHqt9vtYHdDBReai/r1jUWbADhFo8iHmzdXTJ8RO368qaiTZGBL6SyFefmx+jqob6+ZAzLAZ6CGrIFOlhOXj+6vmj51zwsvfvj/fPXg3/6P6gm/O7m3VgBD4rytVQXiQRPQYFCBe/gCJavfEjQf/Khs4rQTBw8GptgElrDgknUtzaI7cb3IwLoSNTY2zp07d968eStXrkz//nU6kP903PxkAMCSgdUMxXbXl/Tr69z/lezu7xObzhQK0Vjd/hV5/dVvF3APzLZRxYVzy/NyWo5FAcBYRTwBKBw79mhxyenSZeUFYzpxPHtxRpfn57fsqYV6bhOslgWMc+a5pWEzeuxD+PKJE1WvLt4za8HG79137Omnd8x8+cS+fVAVFZGgcUxhXCE5SA2JrSGQwFeI7VretmBh1Ysvwd4reKrkzK4/C50ZWdxKuB4ZfFy6k24TdENP69YgAwVAjgz27CnOywEZwGop3eZOgx8MWMEWDjS2e++KvHz4ifB7XX9u6ctvEJW49UUULS3L+jxxuekoAPgC43587bhxJ4tXnixZWvH0eGS8l3c/ZrQwLz+2ZyfUT1k9WzVmp8hA7SmmAqxAmnTV+3UrVFWUwEbZlVgAFD45pP1oU/ADQmJEA4PS0INag7qw2rmiBPhQOxkZuxbM3TXpFcc0SBJ8E+wdbnX2zOLWwvXSREgTdHZz29etQQZAaFsaq99TnJcL8ty3NeUtI0EnUWB6DCi17K4r7JsDQ5yx5UPGUATtXil/TYVAPQgFRYuWut3rRwxvP31arVdCsPZuKBh/pnDV6VVrykZn2nSWAvnFeXmx+j12ii9SlCQBG4V+C1cYcwZ/hxURg0U0ydZDVUEiPjjpck9hAbZrblbnIKosysIiAgV5y/P7t9QfgECERfxUC/FVpxfkiDTkCNeigp3z5+2cPAtqM20kdtCo9tAFZvE5RgeRQTjSAEFJuXtw85OBplY6hSC225JBEm5FY6cjhAjEA0TdYCxRQExr3a5VeXlCHnV9ZKBW7a4C3+YogvXeA3OQu1o7elRTcSFgt6kUnkJVwdNNi986NGPO/neXKLN06uQ4WZzbP1a3Dy4okGB9t6flrJzdGQaxgl5FBpYO1FMx4kMJEIgSqYh9lQSO0N0MF6GoGoYQfA/Cb+b0ubR3n5KKMKsxGeuELeUBqJk/r2byDLjJFsHwHGTJIIvuxjXJIOzwSu/+7bbT+uyRgZthI1YySK11u1fm5jF7hBugwFe39UwjA1UVCTUtwJrxBdHiZVA1Kj4Mq9i1af2YMfunTtvyRG9cuqzt7Z1bc69LBki1JKcW/rQvg22zwGXNhZAMqttMIANiiA8kFJ52++Bom6qCKEhEBL7ZvbRoy8K5Xss5+EQiDOGMOwNUwcIAahcuqJ08A8iSQRY9jA7URL7vh19nySAdmZOBQhhBcgOwrmWx+r2FeXmQpNvAd+mtDQsVjmXshF25oo6xelzB0cJlECWVBCguPjGpMS0HDqz/xS/W/vRBnD8Lk+hcoqgjMkidXxoZcDpDWDMjkUTLaWk/h6RvFG124JowhMFGlQx6QJDLQFJV7JaeBYLlA4c3bt4AAEwCJSUxnOEN06DBpHbuK7VTZoJsrJMlgyx6DB2QAYBLly4dP348FBF1Dz5LZBAqCqE2JwMAl/bse6NfDmDgE/wurhUG6yqcwaYGeZWglAtgzfhxDcuL4Bti34Px1ahtqWprX3nv91f+8D5cPmdDmk68cSZk8DEmSJFB4PsDSr4xdvClI3WAR9A2wHNlEAL7Kuz1xKRQBeJMPvkQVgZ8rB08KlpVDoDZI2USVtK0lFsHIGYA216atXP6y3Bp2CwZZNFj6KCAfP78+R/96EfPPvtst5xMCrccGSQOfbD0icevQQYpD2ff2leIxs+cXjN1cnTLZhhKk6B25bkJoE6tTi5tZA1vFADWjh/fsLwITKq+wogaUYYILrWu/NF/lP7ox7hwDr7fuRPrkAyuyAqlk4FAJeX4DazMy40f2O1+TOA7Y1QflFRmvyfIwDlyK4MJBLTzhsHDGivXAUhSnJQAaMYeTGoHIyg3VG7Y9MzzseOngzuWJYMsegYdkEF5efm3vvWto0ePht/RNNy407pVyECseISkdtbLh95+GxJKKjnQlaSEhgT13bAXAdC4ecOyISNwA6Zepi25DJCCVBlwfV/2tNaNe7qxqBjgpHqqxCAPysK4FC/78cPF9z2ASzHhjG2TFApVEy/JzW/bvR9sX9YxGZBa2mRlgurZ4ydf//3zlaPHrfv2XXt79VoxZPBHO6rtOVtXBytH8rUH3BqCPJ/AzjlNSsXQwQ2VGwAo2HYNqHQiyBMVVR9A+eDhH61d776XJYMseggdexP16dMnkUicP3/+woUL7e3tYb4oVBndCNxiZGBo2RO9EocPW0+eK8hANW1hFkcGrAAaqtatGTYaXR8YOAIKrJNIIaJqF3ajTkNaUfB0tHgFwB5IhQmUVGIALebd7z646oH/jcttnHHfk8uAm0TZ4KGXtu+EYVE3q+s6ZABHVvbsWH3TfuHSvvL1TctKqu//0amp0z9cVnKpoclKmlJeTwrpCTGRlZWCDZhVAOI1Qwc2rK+012EloZ06KYUqDIxfMXRUtHKTe5MsGWTRQ+ggMtiyZYs1okgfbmN5IksG6WRQkpcfq6//RDJIGwhP4excANGq9RWDR8CXzuwmOwUGjMAwRNQNXE+oEU4AKB017sjSErDAWPsco8IqQKu3duDwlQ/+DOcudooM7Oiuiztq1gwahngyk5oBbO5FWESEBaww9n4m1uTlxPfWp6ywXcrLQBLgBLgH2ECtJotZSYgBk6wYPjBaWQUg9NzoFK9nySCLmwodkEE0Gh08ePCIESPy8/MHDx78+uuv2wY04HrzDP50fMbIgKypvRJbMlAAiFZVVgwZBj/jgmOnT5AAIyCGqqjNvCfhCyVPHzi4etKkswcOwSN4rAqQAds8PLdHD6564tc4dyY1hLHDN1NlIahpq99XnNMfxuo+O1YTCdTYYdEibBgk8BLg5Ir83NjuWsBTJhhWFQVDGZqEJsBuOlt3QgFWEVExJCIAVQwbcLRinb0MW93OkkEWty46VhMdPHhw9OjRDQ0Ndh5ZuiPFjascfDbIQIOSIAWRgab5EDVUbSwfNgS+3+XeRGGOCDCuo5WgBF/VQxLQysnTtr72KgAkDAwMwGrnLBog0d5Ytybnlzh5FIl2K4vN5C0FAvVjdXtKcvvDs7xyddNZulmT/Y9FFHCdjSwqAuKDb779zr9/zz+0H5qAGPgkytbiwxUNeqLpLCQD+4CbNq3b+ty41pOnwiBHYTRLBlncsuigA/nAgQNf//rX7bzif/zHf3z++eeRFhNkyaBDMmCr8HcrIoXGDAAaKjeuGTEIvte17VMS6nNACHJE1i+NIIIE4NdMnlWzYKH9aWLEAR8GKoc2bFmcO6Dsv3+16V+/+f6jv3yzb//mo9EM35eVIV7r7r3FOf3h2/ruxzuQAxc3u5orVNQQsShZ31NRMDbkPbV91JjNk/8g3C4gEXKSWHHWbz3l4EYiRoRFAbw/fXLttImAs5tWtbYjWTLI4lZFB2mikpKSJ598cuTIkfv27du0adOvfvUrAER0o92Kbn4ysHBuDcYvvpoMrImxEkjsXhYuXZRGBlVrRg6Gn8xcmZ7RKYXtBSEZwOlL1eWKqO7FGbvmLrQ/7wNxQJThef6Zi5cPHT2/et3O//Nf8Y3vX95/mNrbM3lTtYYXamK76lfkDoC5IjII+UBCMgi8iVygGfjSqSo8qR0y6sgrL5cMGaDkMUSUw9lf5ObM9wwfiMJX+CoAque8VD3pD3AD0OwT5qvK49eHm5Tj67oh4xsrN7hbFQZQ2qmDZZHFn4oOyGDNmjXf/e53f/zjH48YMWLEiBGPPvoo0tSln+eagV3QXOKakkV5+bH6PUBQc3Uif2WQXkEGqc7ZhqoNa4YNRiIRCDG7ChpQjlhT1ZRpXKAzqpk8tWbeAvt3UhgARuAzgwC0NjYtfXQgmuOAn4nrg8LObmcoxXbXF+cNCKy8gcCX3+mBMjoW7xw29PCMiauGDITvTNtCcg3uo/bAdGBNBVwAaua/UjNlcuqsnfMHZ1bMUFU2MEYZhBX9nz62pQIwCk5zM0TKvymLLG48OpCWnjt37he/+IWVEv3N3/zN5s2bEeiILD6/ZKAu2wEAJlmY3z+2d29oWg92a1YaGVg9DKu6m3Z0w7ryIYNArF086lbdOTgXTElJHoP3qZ4ytXr+fMD1oikAVrDEYTxwMhb7YPU2XPZIPcmMDAgiYAi11NcX5g8Akc0KEeA5S5/MrEYVYN4x6KmD0yeuHjoIRtVlYOwhRIPQp2dWSVWIsioDNfPn1EycguCabP4KQun3+zoHEpCqUWKQNm6uWTdtYuJMows1JcgWpSWNssjiRuN6kYHtJ4jH42VlZatXr965cyeuLBh83skgLAebZGH+gNiefRmTAQA0bt5YPmwIt7Z2teVax2RQM2VqjSWDVFVXBWJAzB7ImigZMV6GBWRnlCrUUl+/PI0MjEuhZEwGAJiqhw09PH3y2qGD1bACTHaGkgLCodC0J8hAmMVnexvr/rhg94QpYOfW3VkyULCQhyTDN4C+07vP5d177XF8e9PkKsFBFlncWHTgWhqPx5955pnbbrvttttuu/vuuxsbGwEQUbq19Y3ALUAGcPIgICCD+n12Qi7wiWkiSwYunoIqe8kdUyfvWrz4BpxXBmQw7woyEGcPyhBWZhJD7CPjDoiQDGJBZBBypaSniTKJDIS2DxtyaOr0dYOHqPFZVYmCcw/IoCe4wImqCZYsaxfMqZ0yCy7351ZwqGQ47JnVCPvwBaLgRGH/AbG6fdbUNm7NNhTgbGSQRffhmmRgdaWVlZVf//rXc3JycnJy7r///j59+uDKNNENOq2bnwzs4uay/ZwszhsQ270PHAT2boW12YArIoOw5gKgevrU7bPn3JBT64AMptTMm+t+NkiFi6oKQ8UIxcF+p9Yhl92gWH19Uf4AZZKADFIF5IxX8JqRww5MmlY+eKhyUiEwFNzMYJByjwQGGti++gRg24JXqiZPRcB2FO4CMrttDCUQRJVYvfYl+fkte/bbihKlCC9LBll0HzooIK9evXrgwIH26+3bt/fq1QsBGdxQe6KbnwwYStCwgFyc1z+2e5/76KaWKtVrkQEU0JrpU2sWuEJu16FjMqidOrV6zhw4uWdYbLadY/AAz2YqMjwrt+tXgFv21Bf276+uf8015XaKCRq3bq79wwvnS9eUDBgISUIMKJwMlHGEcSOgcOUelrMHDpZNfOHUgXoQ2Yly4jg102KGgXoI+q7jieUDBrTs3Z+6UanBP1kyyKKbcE0yeO65526//favfOUrf/mXf3nHHXd885vf/PKXv/z444/bfw0dKbqED1TVGJNOMGVlZZZ4Pj5LwrLMAAAgAElEQVRgpzvHKlwHBPWhbphJIlGY379lz37g6g/zJ5MB3P52+7TJ2y0ZdCWuQQbqEtCndu2qHD26/eRJm5RwdtCBQNIAyXBX2onbYd33uGXv7mUDB9g8OCDpczczPNz7L728a+ZMjjYuHTLEP38G5NtOCSfXkSvMTbsXqkEJ5YPC0pVjRwPWYSQgPAlOMgMQxIe6xkQ/UZw/ILZ778c3E1kyyKLbcE0yeP7552+//fZ/+Zd/+d73vnfvvffed999999//5w5cxBwQGcX5U2bNpWWltbW1tq/nj59urS0tKys7MSJEwCIbIu/S0+FkYEdqmPf0fY3fMoL7WoQ1Ld+0IaRjC/t379l74FAERhuXhXXJYMd06fs6HYyOLpu3dohQwBYMkimkwGBNUhYZ54CVNtOpgC11O9a3j8fST8oqYgG1Jjhk6udN7/2xclK/oHSlatemABVVVJXmgdEID1JBjbkiRaWrSsYA3tlEtxb7QQZCJRUiazrbcJFlmHe1d20LBlk0X3oIE0EoLm5efHixa+99tqiRYvef/99BGFB+hfXh+d5o0aN+qd/+qe+ffv+/d///VtvvXXkyJF77rnn4Ycffvjhh++5556DBw/iSue7srIyW5+wCL9/QwsVnQIrixqQqqhSfFl+/5bd+8BgIJE2bNIuiDcVGUSrqiqGDYUxCIbtOOknORFUaleauQ+nHeep1FpXV9IvD77njsgCUgRzFTI52K55C3a+OBlAw8Z1q4aNhoiBSXNAlYzd87ocKTJoWraismAMwgfN4sgwYw4VEVYle7dN8p3fPpE4eATM7iGlak5ZMsiim9BBn0FDQ8Ndd90VCfCb3/wGaVmdDGdhnj9/PhKJ2NrDnXfe+a1vfWv+/PmRSKS5ufnUqVORSGTmzJkIskD2JaWlpWHNQFWZ2b7XTZMmUlHDVhpIBPjLcvNa6vbZvWEC8AG10kC9qclAwh030vuCwxJAZuu3QgUJFQK11tWv6JsL8VUZEpABwygynJq2c96CnZOnAIhuXLd2yGgQ+fAFbg6OPeinvTN/IsRWQQA0LSuuLBiNsIzBrBpYWGf266mqzNawVkHewbffqX55Nti4B8BWnpUlgyy6Dx2oiWpqav7iL/4iEom8/fbbhw4dOnnyJDMbY6y0NMN12Rjz0ksvffWrX33ooYe++tWvVldXL1q0KBKJvPfee7ajbf78+Qi2//b/mzdv/spXvvLQQw899NBDI0eOdD5m3FOrwMehClYx8Bk++xcuLR0yKPbBQQRrK9mogG9WMhg6FL6xJHBVPj9MyCiu/IfrQ+BDBdz64f7CIYO8Cy0wDDYKsRbebNfNDI5UPW9+9dTJAJoqKzYMHQXy2M58INu4IH6mMUaXQyCuZtBYuHx9wSggMCdXEjAhINRMoBBWVagwxCQ++OCdXr3AXvhr0mON1ll8XtFBZHD58uWnnnoqEoksXbr00KFDp06dCtvNMk/XXL58+ctf/vKvf/3rxsbGf/7nf3700UcXL14ciUR+8YtfLFmyJBKJzJs3L3xT+75r1qz5r//6r8bGxsbGxpMnT9rg4KYJCwCoKDEMCYOx9pkZh9cUKbci3U4A0I4KyJsnvrDj1VeBDhe3Tl11ZmTgmbB9K+RYhhgIBfZBnWh5svJ6NiqXD5UXrnlmFgwgJglJZppNdNi+YP72GVMBRNevrxg6HCYhahyZCAzYB/XQEpkig2jxsopxo9y3VQEi6wCeORkI2Gd1huYUq6sr6p8P8tIjgywZZNGd6KBmsHXr1kgarFFdZ3FVmuiOO+6YN29eJBI5ceJEc3NzJBKZNWsWAiawK0dpaWlOTk54hFBNdNMEBwoogQgMH2uferpp4zqXzpbU1jq0Wk5zLSWFskIFEHxYVbV+6szY8dOq8G36WFPzfUUtsXiAx5KQzGqTGi79doyYtYGDiBvQhWhV1bqhw+FTuGyFWk2BUspurRM+0Wp7LpgAaty0bs3gZ+ArlDyon14K/aRyhBXaEiBiAGx+df76aZYM1q0bOgzsu8jC+YC7SRHBuXNo5aPq3EEE8FS7vmFLA8dt4HhZ8coRT7lLEagq2fxV5oV3+1SsVZVwrG53SX5/NUl3W1hEe8yPL4vPJzogg3Pnzi1evPj1119/9dVXX3vttffff99mh2wSP0N5jy0gf+1rX+vdu/c//MM/vPvuux988ME999zz85//PCwgX7Xrv/n7DOA2/gaGKoaMjlZuBHCFm0xwNW7lshbH6qutEpLTnawaVXBkaRmANhafFdoOarNrACsJtSu3AR5LXOBnEiJcYWGtbqgmq2c0aVeexsqqdcPH2jx8190Ku6YLgGhlVcXQESBj1aZuAXfqKlGoQEIDVxdnKpIKFT5/YPfaSX84eegQgOi68opBg2HMFVyiAam6I1r7BjvaE0oQJlaTVPUYXbxzCK4jcf5S5bNjj1WWQYwGhRdVIfiZ06ftQnc8zIjtqi/O6afkKSAqysa+WxZZdBs6qBns37//3nvvvffee3/wgx/cf//9s2fPDtNElg8yfycrLbUGRwBOnz69Zs2aVatWnT59Ony7ELcUGVzXjz7oWhW3iPnQQL/JCuiG8QVNhSsgIAEzE7cqxc0lz2/zFVARUfZVjQ/N2Nw0SPczQI501KgYN3t5c1XxU0M7oRTK7B0FaWQwbDjIV5BeRQZwMx5SZCDWd84ae+gHRUtWjB5pj9mwobx8yFCYICkU3M9Uug0AGPA0jBoEKp5yOyc9FRXt4r01i6ri8tFjS/v8GvFzYC+otttLM5n3wxHUt/PnjMKX2O764vw8JBMK8ZWNGoUoZT5rLoss/lR0MNxm7969t99+++23337nnXeGTWf2n4jIOtl1Fh9P/X+8h+AzQgbBShHs1m3mm9gYNswwgFk3bnB02RJrYQchBQGoem1J1VtLAUAgRu24MsooMAjgEieG7Jw1ZQiDheNe3XvvVc15uWtXyczJQKAEUau4VaiIqqhhJQHQUFxYPn6cPeaHFaWrhwwFQCqpanba/WT3CHybY1NAVaAJUCs8gu+rJLvwMjVwh2j56FhR3hM42+jGNqS6hYNhPhnAQH0VGKOGIRqr21ucl6cUV4hHxogRETVZB+ssug/XM6q7qkS8Y8eOkAw65Uhh00r2aLa5LCwPGGPC9/oMkgFSes3g54lhDIxRVxioevrJkyuLrjrytpfnbl+0yB3GYzVOmpn5mYVkYFcoW8iFoqX2g+W98sFt0OSnvvBrvGEGZBDMAwjJAFA2PozAVxAalheWjx0LgEHnP9hf+eyzZ/fvuypNZA8iLiHmttYaTEkWeCoekoSE7+aNdt1VijABl5tOruj3BJpPKgc6gU93x1Sg4quIIrZz39InegOs5MMIGT/LA1l0MzruM+jbt29OTk6/fv1+9KMfhUZ16IwXhSUP+xJbabDfDwsPHxeqfnbIgIN5Nm7TyKyGwd6l1rJJ09eOG7/mvu9t/dn/qRgxovzpMWtGD9kwqqB65LjND9xf8fCD5eNHr583G+RBNSmaKRmIhqVnwNh6sAckAIi2Vu9f1TcX3J7J1JrO3IpMySCoHVPQUMwqDFL4CtLG5SXrx48D4MMHUD3rpS2zZrl3cPfVekKIlS8ZQJTARgVJoB1oUxZVJFXbqatblUXEMNBy7Niqvk/g9EkldrGABG6lGVvLuVMjNsys4l889/78ObuXLIdhSnqsQiqS9a/OohvRQQH54MGDX/rSl2677bYvfelL3/nOd86cOYOAJ9K/6BDp2tAwvxSWH/RjoxE+Q2TgFEbBHlWgBix80T+6elt0VWX1f/73kTHPREtKGlYWNhQvbVpafKq47FCvJ3Y/+oujS99t3LpRvRbmBGnG5URRiNq6auCnZ3fNANC6s25lbj+lZNfmojtFBtaBwf5JIoYNWO2Nii4tWl9gycAAUj1tZvVCK70NS7OiELKTpV3vtNhEUgJohXrA5eaLJZOnoy3JXct47jGipamxrE8fnDkroq5YIUxQDwFVZXjHmGFYjbIoIMfeX78idyQ8CBujJsl+lguy6E5cjwwOHDiwdevW1atXl5eXr169urKy8vTp0+kC0E8t/O/wVZ8VMlDrbQp1w08UbvHSoNpSPmRI07JVVx35o+nzFn3xfyR37QQAjqsmO6M4d7VjVkACSSY7eWts786i/ByQ+ROv/eNvmSEZBP8jQMSadyqpigrAiBYWVRSMg0sFoWbKzJr5CwFLBrbvQSQgA7e9FqgtxQR0Gb9w4Y3cx8CJrr1Gp7wFYo0NK/rl4tzFgGIVSgTpFBkEKS/bkwcA0aryisHj4AHKCmKVrLQ0i+7E9cjgG9/4RuRK2D4Dm/O5oS1gnx0ygFGQqBt+YrXwIk5PpNDa4qWn6+oAscoRjw3EnKjcsqFf/8Nz5/qJNgZBPZszyOR2ayhmFYCCWSti5ToS27ujJL8PzI0YrpYZGbhrcGTgA3E1RshKpY6Xla4aNiy8fbsmzdz1iiUDDshAbQmabVcHQ9RO1iQond5dX/XyvF0TJm7//t0npv1h6yvzW86e67qrFKiBcPzY8cW9HkdLSxDlKJTY2hZlnCZCcGsU7hXRqoq1Q0aDVNX5UHSp4CuLLDrA9chgxYoVr732Wu/evSORyG233TZ79uxt27Z1SWTQIT4bZKBQgSGQYwIgGH4GmztnW4GEDyQBEWOgPrgdMPC8tx9/vOVYVEDgpGY8KTnVAe0sHNyS4wGAtO7ZvjK3j1IXZyAyIQMNbhkAO1dN3ZWzUSIgfvHCxmd/f6Ky0q6QUOyaNH3XKwvcz1s3uIDtCCoQsJKiHRD14SdPb6+pmjD1wLhno1/4wsF/uXPbnJdbTpzo0qtkxBNb5i/cvew9+Ek3CU5Vg7aBdLq7PiQsJ7lsFxoq15cPGwlhAgc9G1lk0X24Hhm0tbX99re/vfPOOwcNGlRZWWlbAbJkECKTyMCAfDAFTABf1RApqwYuoWQgPot4okaUDKkIhMF+w6aq0qefRyIB0w4idKbPgMN2aHELFAEAxfZtL87vi2QXP7UMySAVtdjOM4WBJJVISYHLDdFljz+OWCwoB2jt5Om1djwnSMGctt46iSmLiCZtBZcSMDHAP5iftykSOTa4P3AZ1N6V1ymCiy1v9M5JnGhC2GYXen+kkmAdI+icDjrwgIbKDeXDhkGMsQSeubNFFll0Ba5HBv/2b/9ms0N//ud//ld/9VeRSCQ/Px/ZNFGATCIDVhZ1zkRgwIiyIRCpGpsYIgERMRmoUSirMpihgH/+XPmTo2N1+8FJVQPiTFYal7tQhhoNtPEKm5o2sT3bS/Jz4PUAGdhAJRh348iARIwyKwFobWwqyemH5nMQe7ZaM2VazXxHBgKhMPcW9HlBSFSSYc+BtMcO1W559Oe7h43a9vxzda/O7NrLhCjOX1zSu2+ssUGhhhmibtiOu9ROkYFlElc0iFZuWDt0GNhQlgyy6AlcT1o6YcKE/Pz8gQMH2hnIvXv3fv3115ElgwBqPWk6VBOR26gzAJDC9+AnIQk7U0wBNlA7WcaAjSqT0wKh4b3i1UNHAhDla2jmr15/nOSFCewHXp+hIzIlD9SX/Pa/hbrY6sCSgR35Fd3wyWTAwdR4FxmwnRIpIqTMAGLRppJefdB8XlUZDOiWiROrX10IQGHIkoGmDDegAjEEbgN8dVralSOe+rDwbQDRDVvWjRgfbz6f9jDsV/pJ63bHv8mqUFI0nyvs07elsQHWh1WCCwE64euHMKKQUE0RrVxfMWQwyFy7WHAtrslWFrLoAnTQZ3Ct738KdWmncAuQgc1TqMCYtUNGNlRuhFv40lYaaxQqSHMwY4ANyIea0JEuqExCGMoCSUBJAdJY0/HK516IrtsEJxl16QVfQVAGWxsLIC0FYz1vVMVJisSWKAVQ5t3Tpn345mINhhR3GVTZjn4DomurKoYNs/XeoPCr9vSN9dRQV2hVBYMEzky7pTG6qlcOzlxUWxpWOX3gwNoXJzbv3wcwW5lOEOkg2FSTsqcqABQNm7eum/T7lpNHrC1RU9XW8hd+7509GWRwFOoR/AQM27yTugOBjCgbKNsdTqBUcspcOOZXIZw9X9onL9bYKACpQJwprbhbn+nKHJCHINhTNVSuXTt8CIjsKDf77fBjZjnQhSHB7xi7B8sBTwRM55QKGnbnZe6TkcXnFh1POusR3AJkoBABQ0H++uGjGzesh9vzhlu+K+KEjg8XfJwFSAKkVhyKPYsWbR8/WXyyTjbM8BWe2HYyEngC5vQtM1lXGxio24trsHUlKX7sseShvYChLlwcFBAlJV8ZQFPl1orhwykRVwDiQSksWxBYbYpc7cYeBj6JfR1ixxpW9snDmUsIrCoArBlT8OHSpQEVAq67CwBYtJ2NAYhERYVo0/MTd76+AADIt64+ywf3Obe9KsVK4pEkY0h68KzKy2uJc0s7jE/wEyCjqmzJVhFMKraT4FQh4uN086rHc2MfRRVwPKDwwKFNeeb3zD1tl11jr/X8tkkTDhQVQ6Gi1gDApcWgCmYQWZ/T4PfEg0rKt/WK/9QNCA1btbPapCw6QJYMPiVUlVUNfEDXDhp8dE0pEKr5r0ptdwAGPARF0+AlvmoCzJrgtraVT445vmu7Ako+fFWjYrMLxgN7CvYC3aqNBFw6XezYSRPkbwCjRXn9Yntq0kYYdA1EhAypggVszI7Jk3ctfgMA1IdysB4JB/mqkAxYjeGkXbhj0Y9KcgeguQWaWlkrCsZHi4o/gQxE2HC7VUmpAji5o6a0/2BqayM/odbOCHxuZ9WSgXn2LrOBEmBUWEXUmq2sfmFiw+pSiCFOJsDGFuopHFsjbN9PIaLEHk43l/XOb208rgCLm3rpgzW4yRmTfxDeuF8XBrR2xpTts+cCUBVVYbu318DHHPAQMikklKhpihCufoOg8CBZMsiiI2TJ4FOCWUSZ1Zyrr902ZtzFw4eQFph3lgwSLhRI7e1YkQSReoDULV2+aeErfssFIK5s1FMhAQuMARnr+Oq78WrBKqdujVCrZrWnYbQoPydWX3Mj3JGVFORGLtROmVY9dwEACEE4LF24jTTbTbXVGBkVo6QQTRxrer1PX7S0ZUAG1tzT9233nsJcurR9/rx9S5bYVxmFAaDGO99U/uLz0XXbYV9rE22eIu6a+HYMefJs4bswgKcsxmbWKPUgnVAINvNGHi7HSn7bt+VoEwBRCeIxVhU72SjDom+gqgpyi6oAaqZOqpm3EACrYSEKDJx811UHCdd3URvDaPCg09f6MEINS/aaJYMsOkKWDD4t2PWaVs+YVjdxMgDrbi/pu7DMyEBSU+kVgVrR5sOFWUCAKXy8d1v9bqBVpQVKhu2OksEEcmssAR7IgCXU9rjljBwxkRTn9YvV1SLjKXUZwQ4TYIBscgW1U2fUzv//ANgGbEa41Q6zIq6SIvBVDVgR9zfOn1+/fCmSyfDUcR0y0AS4FfBJSJna6uuX/fa3AOws4jYgIaomCXjt506vHftMdON6wAc8FQJDmlurfj+p6snB2/79f+75z59W9B5W9+ZKiBhou1qtakjprkTBUIh8+N6SXdNn+xdjCjXKbFdksE0aBlMqMnroARmIBqrh2kmTa1+ZD0BBDDJiQwT2bcpMAAMYWzggOyTJLvquyyEIM1LzHrJkkEXGyJLBp4SKbRZA9atzqydPgpIqOf/5VAE5s0O5YZhqpyq6TbswmMA2T2Aubqgo+cF9tTMmQxNxxHwIqbASgVlDyToExE6CGQQEKoCx6WMQF+bntuyuQ4YNbJneC6ioMjyPbBtd7eRptfNss5ixnBnQoqSVf21hwIcYCHC5fVHvvvFjDRDOgAwAEMSD8UUIkHWjR50oXQtVX5BUTSh8j2EIRgDUv75o+4Tx1ZOfTpw/CiDZ3HJ24/aZd961Im/A3v/+1QdDn4yuLjvzwSEF2TKyB4gAZAsXYY5eAZQOHna8eA0EJJwM1a6WDASccQIurTgscF7Y2PWHKbtesWkiX+0jE4J6DPagBjb3z1CfkCCbNAp3D84fHapIAnFrf5Iqhtue7SyyuCayZPBpEVjKbH117tZpU+02LdVblf5p7/hIQbWZhV0HktqFSWw9AcDFCxXf/V5d3yftK5SM8Y0dWRySgQJpenwTkIG6RQKAMcvz81rq67ucDGy1UlRVCSo7X5y6c94cALa+LRrejhQZBAkSY0sJONdS2H9g7MMD9pBiy+XA2rHjPpEMSJUEahQiFz/6cOXYguTx0xAYIKEgqNqYyUqvxG/Mz9n693/rH6o7V7dr4+SZSwcOiu3by0Tbn+r/9u3/L7gVgCChYAaSgM1t2cJz2KsBYO2oguiSFVAQtB3sigZpBhIZxlypWwIGfKsk3jN5Vv3c+QCgntonKwT1BBx3RniWpnwPySQ8hgmzWEHcABX4QBxoD+VqikDWlkUW10SWDD4tyH3Uts2bv23aDOBKNYdCIcb1I3UAGxmAFb7YLTFUCRQHkSiSenjl+1snTtuVk7/rO/+x/7mXa15abC602fUSNseQ8v6hwLPB7hIDMlADMPxEYf/+sfr9XZwvUAUbSwaAgZh9E6bum/syIIyEwKiIWl/SNMcGd75CYEsGl4ryci83fShQEWURW55dPWpMQ2HhVWRg0+hesLgtHTzyg3WV9kSCvEgCiNvHEIue3DF7xsE7v3XiC39z6FePvRT5s32zXoETbcnBd19fl597uLAYJg4kFZSEtLuJQDbrrlbsaR/lutHjGpesAOADbTZRKICwBlYZnSogW/4GPEsGO6e8tGvOXABQo+ps363/e1I1TiICiAoTqUnCT6oxqqTwVHwhsNqEI4t6qsmwqwNIlZKzyOIayJLBp0VABjXzF9bMmAWb5wmnsAtU2bfp/AxgCQBsjTzt/o+Msv368MZtW+fP3jriqcqfPLh/+syat94ybXEAlg0cKbjNf2j1TAp2hxUGEeBB44V9B8R2H9ZUi0NXQAXkG7CvgtZ2XEgcKXjxyIszQAbxNpAHJRCDxCqd0mTv6oq6vqL5fHFOn8uNRxlKNi5QArBm9NimkhK4lo10MmAFLh86uv6pEXV/mNBy+oRtpbANDEArNGH3y5ePn9k2d9ap6ZOr//3fP3rh9wdeXXyp7hBUGQLPQJA8cuy9X/TG5XaRduKkqIhxxn72hjrZqDCAtaMLostKACQhbdZfiWG7Q1y1IOPcYPCHUXg2ytw8c87WV+YCgEmKCkvwXAkEtAOedWjyVVlZhIP3b1dqF09s54kvSiri+juC08mSQRYdIEsGnxKqIBIA1fPnVU+b7lK2wmIHD4hCbEdYRp/AcKdMEEsAdr9Pqu3BInOien1FwRAXRQBCCsCDJEEMtc29YaFQwezIAK4hgeL+hZNFg0a2Hm5SqN+V90LAJgnyoKunzy77Te62f/tR5X0/W5Lz1MopM0HGxUisUDv2Mkisq4qS2OHBZ8+U9Ovd0tioALETf0KkZc++ipEj28+chCvDBAVk+IB/ac3qRX/xf51+548AwB6IXbIfCSippsmmTMub+U+0XT4NAAISTSqMAZLgVn/fK+9tnfoyAKUESOApKIxiFBA3qRNYM2pMQ/EKqPrQpB2kI44MgovK7J4FB1f4DF8VMNra3Lzy978/9v77CMTDViUAH+pJvK09wb6nKqzwFQkC1L94iWKtxF4Snm8jAeuIa65Sm0qYScwii09Elgw+DRRKEF99QHfMn7Fj6gtQD5xQkAnzyKnUQodHC3PNafU+X9koqRo1DAPgozWr1wx9CjBEMTWqBqLaDmpPU0K6jaSAwYzQBk1ZBSwVv/v9B6tXqwi4K3vOoKLkiQoJtzQfa236aP/Y323qm39u34HYmZNgD+KrnUajIlAT1jiUFUzMMIzmk4V9H7scPQbY9mk1ZECMC5dK+vRtaTyKkAwgUDm7q7ZxyduNo0dU//gHHy1746M1q/jCBXgE9tX+AXi2dK4KiaPt/Mppk2KnT9ljGMCD+hA2AuDkzvoVBU+3njwD4yuTiJpAtKqqviu/K4Cyp58+WroCgBG2iayAutMGNWdyz9wPs8An+KqObFYVFHy4YgVsfojVB1gVZNDcumLE0y3HPjRIJOGp7yMRB6hqwh+OrViPpIHXJvAMDINdMdmkfquyZJBFh8iSwaeDghK2tntk9vQPJk+wWRlGklzpMa2JrONj2RYxDUqs7BZ0VmFWTbImFbjwwdFNv3umeV8N1MCoJkVZCUzWI8eJU1N6fntAcnb/CkOrBw2Jbt4IQLlLpSUKZVEnd40D/t75c1742787t70GANRnGCOU3irlB2QgYCMCn3D57LJej7Z81AiAWVlEIcqCs+eK+vRpOZZOBgxgd9HyDYMG7fzPR8p+8MOKZ39X+oc/+BcuQRVqGGSF+axQFRYWFfgJkAfPA6kIGGLg+/CsYBTAlpde2jbrjwAETBrU3J3/lLAtxwBFBQWHVy4FrE+qwGl5XAG5E6uthjkiX2A0qKuXFYw5WlJiT0qYPU1C4jA+Tl3a/MsnzKF6IA71ESfEPcCrGzbo/NvF8IAkwY/7MEkbj7KTlwZC52yaKIsOkCWDTwvP2zDnlZXDx1b+8D9q771/U96IypdfVWWbFwr8JDL9AGooEU8jA1uVFEn4mvAFAKqnT9sy80UARsCkahRKbrBlsHghrGMqOOxgUMBI1ZBhx9dXAXBThLsKChBE1AMECcjl84fr3nzwoVNlGwAIyAN5YruMnebFh92wC6v4LGA58N7i2tmT/YutrhXBiuhZ0Xy+qG/flmMNCAW4aWb/p1Zv3jjmOQRHZghDrO2fiJVW+UbYt+ojSqoYEFtuNOrZ56UwQKJ5/951oyddONygAIkGdj8a9p5B9Mim7eXTpl0+cVSZlAVGVJwPYag3yvS2uqMbhQ9lBLOL1jxd0FBUZIspqizwL0b3lw0bVp+TX/Ot/7m9d6/1g4dWDilYN0bCYQMAACAASURBVKhg9eDRFePGrL33f+342c9W54/e+fZKECU00QbyVCTwILERQlhL+fg5fDKBpRRfcLchvQKRjTAyhaaCQKTum17xj1d92WPoJjJIH3ccWt2JCBF9ovvpzU4GChA11ew4+v627WPGVuf0P1axuWnXvvADkxov8+mesP0IuqWFbT4FQO2UKbXzZgPwVI3raCAFOfljuPlzSSrXmSy+iR34qG3X/prf/LZxzmuXDzXGT54OpO1dAbdgqoChBuwB2Priix8uWaqGWI1RY8Iu2cBNW2EnWbo7tGL44GOri9y9I0CM2DX53LkVOf1amo4z4EHspTJIAHPuUukDP90+djyceZ8qiCFJqxNS28THYclabLXCrdosGib5WTUBYPW4F/YXlisphwwKX0B+0EpWNWXGtoULAUBEWcAuJAg/yqlySAawVSZRsX6D9lOw9pnxDUXFUAkErZy43Hx03dpTixduuf/fG19/s3HDpqYNm6KVm49u2Bx9f9vaXr89NGVCw9qtZw5EAfHUtzUkdQGLjQudsIBSnW7BU2O1nk3i3tLGQmLbVAzggwSeDVyDYKMzEtrPC+TqRd99ZW+x2Nl87ja7no8gWgsi5iCA6zFS6CYyYGZmtuu+/cIygf3a/oCk7VVvdjKA7Q8DgLIxY7fPnBV+P/htSJlrdiF2Tp66c94rADwVAzWBJ43rb2CXFlYAyqFDXDLWWjJq7Lrf/Lrif/3r6v/98Bu9ct5/561MR/VmCLWlXd9VPRXmxIlVTw6MHWu0091EVRQMCfIh7PqjAqwZV9BQsgywWk5bUyYWwrnmwj45sehxBZIgcrPbfADtHx2tePhhOnpEmIwLGIxAkoCf1iyWCVhI2ffPnH2z95OJxlOwy7yognxQImCt6qnTqxfMg3u8Gvaa2SWWISFtZAJK96QisbHTmvHjjhaVQInFQFWDNsTdLzz96j9+mc9duOogVYNHHJw53X4t0DDwsb8MFKpLxf2Vw9XKFV9ElEg8ywk+ix3fCcAz8Ek9Toq0W2/cYMFyPJVFGgShYSxSZKBudBHZmBWcIgMJ+1dSTGDVAj1Gs90XGYRfWAII56aF/7+FyECDVrATaytnf++Hx6qr4cq87H4jhEKDti5819pJ02rnv4Ig9mdlTetB1WD1cx9zOMc6kMC0Aq0bRudF15UArByDJLvqvGyGSkVgjKq6EsWly2/86rH46ROAQjj4BXBqosBeNbWilI8raCgqtP/gK/vwjHhChHOXCnMHxI42AmrUV1L4VpfP8RPRd379S1w8J8TOpI+NqJhw/5vZNssu6qQCcPWMWYfffB3SCm2FJH0gDiEYG6/UTJ5WY8kAEBUBKSiwjRZOiyEyvG8mVVsSW9NfWzCuYVkRhCAE24GodPbQ3i1jCzaMetqcvywqbTC+1QYLGl99q/jue+LHT6rbCXDKMD3ougjJQIP4zF22gpUZLEpKogxPGGKOvr/54qlTDAiJ+gbGg6dwBldi6Tbzy/x8QFKRvPsbUpsF24GTyhs7g3EO3GRT+hGxkWbPoIdrBiFJWG4IcZOTAay9tKJh6fIN454GAPEEniIYLgZS9yNdiW2Tp1YvcJEBsx2WlgoH0gJT2BKo23IwAD2/Y+O7377j1KbNABgJUa+rzordBGeFx1DbrsXw4vVLl7w/Zz7akqzq24ggVdsQtVXsQOFSUTC2cXkx3FRkITHCDFacjhU+MbD1RAPgs3rGsHUeRSyx4+WX9i5/E37MTphRFlZmaMqZJ8MdrALKAgP4iaOH3n7s12i9CL8V4onaecQEJjDXTJlcs3AuHJWxgfFBzp5OyY6qy3TLrO7W2Y2kwj2PirEFTctWgkXJaFBo2fLihG2zXgIghn2lJHxWn8moUZy/tK5v75amKIW6AbE7UNX0hSZM/wchqwStMkZZmeATjP0MyvLhg45sqrAv8oRJya5qbpiPiOly29tbGjYWDh6oS9+63YhCXCegBoaD4WIfRgbpe7gejLi6gwxUddu2bd///vcfeuih++6778iRI57nPfvssw888MADDzzw/PPPe54nV9Yzb34ysHmOaPHSioLRgN1EJd0+Xe249i5PE+m2VxdsmvMyG8PCInZvnSZqtBCAYIWV6bvj/VNn7Hgily/GlUHq20mTXQJ26Q6FCTSuTIAkzx5/7zd90dxKiqSyEVfoZgCw+lbR4PQqCgoal9vOXjVg2KmdHuF8vPDJkc0Hd0Fi4CTbVwhw8kLJfz+WONvA8MX6iYsYG5GlOm8zpGMFM8SH/v/svWmYVdd1LVovycv97Pu+5+Ql1+9918/Jjd+1c7/cxDf5YkeOHdvXSXzt2InjRpYtCSEaoQaEQH1nSZYEQgiBQBIgo9ZqEKIp+r4rQBRNAaKHguroKbpqz957rTXnGO/HXPucQpLlklVUIavGV7YKqDpnn92sOdecY46RSdJ04PWpr/z9V2sWLInPdHy/lMw2jX5005SJjB0ICfTOKLwQc6nr3Mh5xzfO359MSJBv3v9w3auz4AI1dhHU+aqHHn7r+RcRtWkVkqq0i3pI4IkT5f37Nh+qsUQ/D/8xGGjHU4DzvuwseUBM6FYUqWupPdK+/8Dyfpfve/X5c0ePtJ89lxEFxlnIlIAGil6ACuiHHCjdcFpa2UnmmlFCJZPzCoN56MipB/JOHfLuRXcEg3Pnzn384x//8Y9/3NbW1rdv31tvvfXll18uKytbunRpZWVlWVnZ888/T56XU82bN8/8li9eKEkemls+b+gNJBVq5lkWBXItiC5VioTzWevie35Wv7CCMNV9qL3pOw7N5Z1D0NYybntqUtXIsVQGYUr1Xf04q2U/UKpl52yqr5nRZwCbEwjF+JwdAqQ3gTox3g8X3X1X7awFpE1FBBFIAEKASuOeXbOGDOGZU5q2Q9UrvJJtrTP7XHa2oVrI4AWhaDqJjrlX586/EqoemoFkONQw9dOfPfj8jA4/AE+SqHr0sapnJuaf1ipTSpDWxZfwvoJBaY1WCwbIREL98WUDhrbV1yOfEj+58c3l1w6WpjZnY9Fe6TzgPD1DxuOnZ13ePz12+LwCkclWdGxk2uqk54cExgviVQjJTrfMuO7eN6+6YcMlX1jy/e+/dNW1la/Mtk6DjWVkFCBQtZOn9aODjuEWRQYXSzFBi2LoIX84o+i8dvAm6uz9eoHQHcHgzJkzv/d7v/fFL35xzJgxr776KslJkyaVlZVVV1c/8sgjZWVlEydOLP6whYRVq1b9zd/8zYgRI0aOHGnGy/ZPF851+TeAa23b+sTj+6e+SoVXzf3NxbofeQG3CyN9ILn8zrvqpi4wUoyAShHm9sgdnvtih4ogoc2HDi9/7LGDq9aY+pnPzV+6BojrjIuVimCuncnZc6sfePjw8pVUwkw9mbc3SE8N9mvekZx99137Zi+01xMEBVQA1UA2Hz80+6p+PHacIRUwCVDw8Mola0fe037urGP+KMWPL4S3P5ZU8X4NlAi24FXNKd8yfsyeb32/9kcDap99ce+cJRQHJgIhuXX0uI3jxpGW7hkHp1gLVkCk02pw59WXNe8fiPD4uQV9rmmuq8nIQPXN5yonPrnrlVdIBFJtKQkqCJnVAtsLlU/9YseMcrqUCHldrJSbduBuSSybdRDeUzKIkfy8+pQtPl1deeiLf3/kplu14RhbMiaKPLlRmg1o7/DaeUCHcp/5TGQdeN5QEfg4Ci8lcVmNsyVa0tNCD0eD7ggGZ8+e/djHPvaFL3xhxIgRf/iHfzhu3LgXX3yxrKzs0ksvHTx4cFlZ2eTJk5k3kO3/i8HgoYceeuGFF+wvi+TUbjjm94Y9Refqa2Ze9ROePccAlXymynYIWtz5deHRCsmld99VN2OeVVGoBMW4nHlfqtjKsjsuLjnVs2bPu/sektAsiOv6vSgic1GibkPU0Kifv2jW0BtJ0oc4KB31GxhoM9Sgyv6KlYsff6zpyFFrKpe8bYBANh09NK9/fx4/RskyqglpzB8+5PDC2YzzHEaLsczX6K0ATMGzU8EAdAxkm1a98UrV4w8e/N4Pq8rKlv3+x3c//Sx9O3GWCGf2HVh71z2ntm9TFYRc/CkPQiA9USDTzl1yKTU2YiRTQL3w2NmF/a9rajhYIEBp27lr6lVXkYFaiBc0Du4hi2V8th8/8UKfATzXQognMxBQwFltItqMUkjJCxFKUSqEzFS9F6h6+JQFkkeenrCmrGzVp//MVe8hEkhQKVERTH6rQxGkF0ROhyaNhpZrtgtU1CFTZIVDDW++OhXqlfBAEiQDMyJQNDb4iru6Hvsg3bQzKCsrGzZsGMm//Mu//OxnPztlypSysrLy8vITJ06UlZWNHTuWpKoaA5Xk/PnzO5aJLAYU5xK64ZjfG3b5zx2uKR9wJU8ej2o7apOtsByPXawTbY8gF99+e92M2TRXS+tUGzE+JsLxf6ALDEXWR/3c2XNvvpWkMHMoFCv1XXhwiI1qJTSQBZBk3YrlC+69OyQFeg/NE3jETlmurM1Vo0a/OWUySWYSt8/R0kCVbDp8uHzgAJ48RvgMYkn60tturZ02k6QHIUEg0cseeZJto3+dOnY6qhcitZMi+x+9f9vQQa1Ll1Q9PPrclm3adIbkgWUrFgwfQgaBZCb/Y0pxOTUwkGnRivLXoVQgLi4BNpF97PTc/gObDh8QkiFbdc/PjixaRtWg7aIt3uTnNN9fqZJsqTky9+rreOI0xKdEAogGwhHh/GAQOgSDYPHS9OxENUUWtF18snXi+E133rzihz9I9+4g28h4dyHfi6IYw3pBkrEulJDexgR9HP+GMkFIGUhtqd7zUv8BVvnLqC1AgcxgyYoxIiS+1m/3zqC1tfVzn/vcJZdcsmDBgj/6oz/q37///PnzP/7xj7/wwgtPP/30xz/+8fLycuZVINsELFy4sG/fvvbrRSpqCIHntxZ6DiDZXF89p99VPHnSQwNMWU3ihl8y0ncxZxgkufjeu+rKp1MgSh971aH4iOc7EYDegoEnxaW7n//FhieeJuiZBiYi6GICWwwGUAZCTVcbXtUX1j39xKYpU/LDR6TORc0MZlQSG0Y/vsFq8U5pixgs7RWSzYcOTx8wkKdOkt5D1GetJ48vuf/+Y2s3UuAVhA+QyORVFGcvXOfOv5DtYKKqQCCIsP3V53csKid5dNWa5y6/qmLiMyHJjq+vXHLbEGo71CVkCzWFQmFVdXujzpeJ9B2Uf4IMwhOn5l5zTcuR/aQy6MuXX9m2ez+DBqRBm1KFzwcIQkwP2FrdsODyfjzbxOAKigQUmEitt6Dr8mCQ71UtGAgBBkAQCE9HZPWLli+85x4JzZX33n1i4UJqMzSLkcfaBR16pL0owrah3m7bvGMcRDPKqWMH65bOPf38K2u+/aPDixbvXbm0velMSrvfivQEs7H9CAQDkocPHx44cGCfPn2GDx/unCM5derUvn379uvXb9q0acxLQMUq0IIFC/r372+/WxxNYB4YuueY3wsAqemRhpmXX80zZxO4NiCzrXQ0GEgA18nFqLNQkpw9fGj9stkkVU0sJxAhb83mJWM7EqhlG82Hamb0u5pnm1WpCIALcaK5i5DXOkENViOLhdFActMzT2wc8zhjkg7TirAyKUCr7lc9OqbK+PtCVaakZwBTq7S2NBydNXAwT51SzTJ4Em+OGVs5eRJJZkIJhFMKpChIFMyPoJOHL2QKZBAvWWAGdXSW3FkpK9sxZ8Zb4yetHzy08tYhdhkC2cqQ0MHEZZkPPHeaDnJeH7e4BIjwZGP5wH4tDXtIqV9ZuWzU2OR4I5UBSWC7y23jEkoh7xWlZ06vf+C+Y8uXUIMAQSHiTabP4rO3shx9vogLNQDiCSiRGefdk752xoJFd9xHsr1q56I+/ZmepV0i6TDATPZwOeNig20NVJUhGI3BnKudp2r96jUrr795z//5mer/5/Prb7rvjVvuPl1dY1ZDuWSjKRGKDYr/lpeJOgMLBsUyUZFaig64eMpEBFlI3nzqmd3TZjNrBdsTFnn7AAVIydC1CZSAQXBk5bL1D96TnjwFY/fnOSIJazEyr2IpIh+lueHgrH7X8PTZEO9YQejKOIWiapAK1Oc2C1QNJCsnPb5pzCjGGbM8GMT9EwVKSNXox6omT2K+nKakGpWRnmRz3ZHp/Ybw1DmEVKgkt4waXTVhMklPdZqAicB1aNjbrkk7mcGCdEBQgRYQWoDMuELBVlP1e+fNmPLZ//bq//b7G750yYYbb17481FZc5NQvSbwAWIHagTTTl/yEs8k/wJEAk+eKO/Xp61hH8lp199Zs+JNklSIZoI0aBxkEbjAkPPXpWHhzLnDryfNfZUQk+H21rGUOHliJx7WrxFISmRWdAoKSUlfO3vxvNvuJ9m0a/9rffuxcI6SCHOt2JIORWl2rReEpSAiDKkNcCsFzKDUjBKOvfRaw3XXrf+Lvzjx2nQGZdquKpk11iLrVDP7RXwEgkFHzYmiLkWxLfy2P5JcsGCBlYk6ihp1/IFuwnn5m+YmYiTIxqY3rhiYHDlBemprgGSxg2rKOT43ze0yCClBee7sgit+2rr/oEZfw5xQmN9HmuscCOOIS/uh+qlXX8OzTWo8f6eQ95E4/1qgmN+IMART6nCgQClJa/2+lXfeenzTFkTWTu4OFkgBoETYOOrhjZOe4nki/IG2nJEttYfL+w3hyTMUL6R6v3XkyJ3PvEQyoybMlCkYotIbSKo35c5OR2PQduoJpU1DKizGIlCzxu2bj65YcWjUuK3f/tGx1xbULqiQtjaFU2QMAjH+eL4v6HwwQKn3qHarq7D57Mxh1zfX7do3fea6nz+VNrcqQShUrCMZS1HiTXvKiEgH5kybe/ctpA3Cg7FQlxPcSM3vE6WK5bG5BwZIBAWk/Ujd4tvuObezhsqQJZtef3XFxPFUHzSPWlJcrPJgUNzTxE4V8r/o0XpHtyOGVKpRRkv9MJWNr/5y3aMjsvq3nvnCf11+TX/SM2vx1IKRk6PgPDLmvI7f+jLR+0WPDp2hSFmPa1YgVU2mxtgsSvDUqfkDBrbW15FkqhBkZLvZ58ZfuwAhPoAnG+cM7N9Sd4hkMEV+2rx7FNoM0IwSbGnKyCStW7Ns7kMPspAqAAnU0PnSdudQ4jBZA5nRchdAG+GXDbm1NlcwjXN5tphYfQJh82MPbv7FBJKJorigmtIOyZYD9eWX92VLq4onWb9m3dJhN0pLq61wRW2g8w9II3fyfXwIRIEAlNq6IJlP59UtrVg46A460ktA1qqJN75ALgGUk7c6+a4gNVBcfD8weAZHaOOeqiUjb9308IObf/4U3/Zypeyk+KlBsnrGnPl3302SbIW6/PTGPrwWzzlIBjNWK1Wo1fSI0H7iyIuXXsHmgnHBatevmHHL0GiqGsdBIlm3qLheMmMSEBKoLg7n4/00UD7cABlAb1XafOUwo7wtL75e8cQE71Iy1K5csvzO29sONdBnomq5UL7fUqEXFu0xega9weCdsCJHvrzFTp8pz4TYQ1Pw9KmZA65qaaghI5MgIK9rQCMdu4uPiwzgicbygQOb6w6TVASfp+QCzeJTKZk4QKFUB55tenng1S211QyWVAbAd3WtzXgw2pFena/HBdJPGzysrmItyehyJpH1GRgHR6pGPVw5/lGSWaz8IydbeoLpqbNr73/o0PLlEhzJmuUrFt54U1dztX49Tuyv2Tx1LlPPtDWjL9CHPOFmzg7qdDCwDoPmZFtQM2jikQUyPVq/8ptf2XX78MMr1nbqLgIad+5bPOKR47t3kYnSObuDTakEqqboGg/NgYnkM1AICvVAoA/bZ81Z+9TTbG3VkJI8sHz+AqMFx7BtlbcoWioI5qehSh8vmjdFDrVgEP2MPhJQhVfxEKo2HTtUU1lJ4ZYXXls1bjzTAhl3rRseG7v+qfEkxQchAuKsQW7z4dGj8bM3GLwTALXjuLhttaNxu12uAJ498/qAK5qO1JDWCAJE8uChUaS2y6HCkyfnXnNdy8FakhCfSxZosKYF7KcCxAvhBDzXMrNv35bqapKqAvGiPpyvBNUViCIQWV6rAmz6IqVvq1m3av6ExwunT5WkWDwFLJCBPL33YMUd9zRu30YESgAQ57cRKM5O46H5i+YOH2ZvVLti6bxb7uyxdSZtB7NEUkU+KubjXiYvpnQqGMS1WYu1vQQsiLFzG45u/cT/dajf1SQ7JS6rgeTGyc+sfWQsyYJmBdKjWL9TpZdcngJ0yiTfBBEippjGpuyVy/omh2pJUXGgthypf/Pu+w+tqCQJZspUcuUckKADEuv5pEhVC4SLC1m+UfyI7AysWZU37bVh6ewVQwefePnlqhEPIWsjPTUzLse6sU+sn/QUSRUkIp7BdpZ5+ihFsnWPoDcYvBOxTFScFnQdKeH5V+WT43f9ckpw7ZHhF4Kp1FDz5kJXNzeiZvXps9Ov7F84epQE0yzSRDq+n7HH4dp8Ekhff2ThwOvaGg4r6SSFCrSrR/fyyjcAZ8oNSlF4KDQwFMj0uSt+0rKvmsWNFmJpBeSBRasWDr2DJJHRm48xhSLMqJn1Q+rnzFv6s/tIttfWLLr7zrP791K6zo+hs59SPJxjlkkqGhiUmcbacOlkdrZMVGp1i20RAuFd46mmHQ1N5et2XfK1cy+93Lx9d2ht78SLKcktE5/aMuIxgk7NJS7W2mxRjkYLal2FxFMib1fEjHDcoWPzr72htaHWPqrppW4e8djGxyeRJAtgglwEkEoJKZkcenPlyilPKyG+nVJktcUWQldP4F+ssA+apYWjteeqD56a8sud/+mP6/r/pHnnerhEqEBQH+hD68nji+659+iaSgCJqoOLJlOwAcb8MvUQeoPBO3FeRpM3/O1fSvoG82+5pWHuHBIeAlDVGz2eKI5rdnEwCKRA2day8L4H6tasZxboPAFPpuaRUqwhKxQuQyC55r6Hal6fCa+eKvQaHAXatQTdGAxAqPUkCQo0QDQEQuhbK+68/cj8RQSykmiShVrWLV299JZ76EXh6R2zQKEyCDPCm4ZS3ey5i+++j2Tzli3T+1xRrOx3Jzy1lS6hV6MIBNKpjW516JZ2NhjE+0OUIiZwT+jelatfvOrG5ZddP/evPr/u6qumDhjUWF3za1/K3m/LpKe2jBxJI5CWJEzjscV+gZIIysQUSgEiAM6TXHr/fdXTXoUFkgDjJO2YOnXVuKeT5lbadUNu+5Onr0dmz1p98/D4hyzQm5RdEBZ7MB+NYOBACetefeG5AYMrvvvjXZ/6480//J/T77qhvbXVkSJgUGYZyQVDbjw0Yz5pvGknxY6RaIeiY8+gNxj8ChS7BcWHW4p9fyW5/O5766fNin6IpA8p4Kxa4hlrq11cyAApQmSth6pf6zuYp9pMi0aY7zaLchQKgQ+akVx42111cxaRdIwPJ1TESxcW3PO1xph01jUhIB5e46iDK2zdtKhvH5KeksZqmyMLJGtXrFpy0+30CGKcGYvFMbzYs1FbXr7orntJpvt3vdH3J3Rdpr/deQiZUsWsjzM1ak3O5y+uee+HwKTFzF2iPId3VLYc2D974OU8VcfQXmxf/1pseGLc1scfpjGaPaja8XIU3zSXVM4sXASN/qcLb7+lbsFs+5iigAp9O4npd921b/7SeAJU4udT7l+2cvPDo2qvua3qq//61uMT1j37kj9XoFARHNPcUeejYYJjwcC1050h2bB02cphfelO0rcH0MEUUmLpeN/U17eMn5C1tTuCdHEHh7iVC71loneih4MBcoJEyDkpRsQL8Bo8Hckld99TM30OBSQzCR4O9NYhNYmxrs9d49ZbW+v3ze4/lCdaKE7OK1lb1Tq2+BAcyel33LV3wRL7BFTaRFyxwt1ViDsiaHz8lYA6hAw0/n+6e+vUL//t/qkvkwXPBEIGR2klWbdq9bKbb2VQZweoFtUUsd1MEnUzZiy54y6SlRPG7H7tpferFN0lABk5W550cbK3QBaKCy5YLM/8WpQoUPkHVYs0ZNPh+uevu5qtJ9/HRQJP7di57me3ndm/D6DYMDU1N0DOW/r2PYS5lpqQyJTk3LtuOzDPJMStcQGoJzn3jptr58wjCQHFASGogtxfuW7zgz+r+t0/2Pf339w+cdK6V17LCgVlpnSmYA7Ldj8CsUBts6sptZVk3dqNC265hRLIOBnqEEWyoGBz2xtXXN58uJ4k1UXR4ZyV23ku2oVAbzB4NxQpd8WnSuMSIOqhiU+zuXffXbt4KQEXggcCMpup1fg4qcZ5/y49LiiJlvqDswcM5omzDJmUZm1L1G/rwRLY8cYbK8ePT1pa4rGgQzDoeqDkAQkCURM6hsRjR2b/9X/f2P8qskAmDKQXiu0M1iwZOoxeHCkQIPYfiCI5EQ0zpq26+w6Srw/ol1RX03r13Q/kdcNAJROyncxKFZicc9kJBOZeZfDmihNpVEF9a6Fxzy62t5lgQWeggQSX3DDo4JJFIJNYxtIOBSI1Dch8ECCj5awgFW9Nf3XVuDFpUxMAY8QhD2orfn7PgddfsxFvdW2qqSue/WMHt/3FX8/75H8+/uZqkp6SsVVimdBaFR8J3wMpTvzAQ3TPwoqF94/N15Cg0ELePAkkm5pn3zTk1O7tVKFIh4Jez5+p3mDwboj3sBLiqIk9HmLuVgmBN6e8sOrJCeJTiE8VAaRt83N9+yKpqGsr85YzN9cenNP/Op5spLFJ4/tZE5IAvPgUIFk5YtTmKc+QpEQhzxIHsksPLF+/1VomQoqqmAlYxuNb9u2dtXDPsOE13/uXM7OnNyxaLAXJD4b1y9YsG3YHnQZFQBpQCKa6JPlsNVE/c/ryu4aTmNZ/UPO2vdRuJ5bmn7S4B9PcuAr553/3kYdfgTx0ezD1DLZyx8KN0c2dfx+7NyVTLB4ytG7lcpDtksYZjCKhtDgxGU+bjwUMJcn1Yx59c9zjVT2J/wAAIABJREFUJL0G09pT7+lBR99QN+/agS0NJ0gqHJiq+Q9lbfNvvLH25ddf+6d/3vLYqKylRRECM2UgocU5j55f4roDMHdvoGVfzfSb7szOJFRSPdEuTNqpcbhPSXWnd22aM+QmNrVaU0dsn5kPgvTuDN6OHu8ZSD47llHaSWfupF5s/V03evz6ZyaRdERbVN931BDpqNYYhOT12K6Bsc8IttQ0zB4wiI3HiZT53lLs7UFV9TCdE2x5dLSZsQBa5K9ciGAgxbp5Lolk9SIJQmLTjNnT7rp3zaCBq/5D2eZ/+Nr6MRPT5oIXb5uGhlUbZg2+xaQpBAmYalHJWmmC1bXlM5ffPvT05jUrHhyVHDtDiHZ7cRUdSWV5UCDZkWDa+WCQs9IU9IHOWFhq2XQA1HvR0PlmooKBs24a3rBmJUmqL1Yf4gqTe2HGI0SwXQHA1iNH1/3sgfqlKwmk6lNosIpFEKZgY9OMflc3NzQg3oCOoZ1k3arVy++5Lzt9guT0G4fWLrf3TUnR2N8vBqLfdoAM8AJVbdlaNWvgNSZZypAQbcIkYxAgf/LQduzAnKv7sLFRbANmc5gdAmhPoTcYvDuipguC0MoXZl4SEFqpbvOjT26ePJFkgUw1biFUMkpON7ogwSCuRM0HD03vfzXPndCQRDK30gzZGSuYahyXqtGjN00cz1gFjuzCLtfJMJTa7FLKREUDmBjD6NSmymX/6+u77n9kxYgJ7swpZaAgOX5y2ehxtavWUcRTVT3V5xUtZNSEBNh26ND+UQ8v+exnzq2pJEn0gAuv5huA805ekWig8dN39orn+0dQyNTZOmq7vxC8bwsQ13miPsgQ6tatWfTYqMLJ4xQzN4qbqyK5ALk2GkWLU3sHly6cd90wKtUFT3UqKvDIBBkd2dj68sBrmxsOgJ6i5iu6v2LVnAcebjt2nGwjs4MVby4c+Vh64iRDZBwVM4OPRDAgc2lY3/rW2tnXXMVMqWRwpDf7KSrhgExBNjVUz+5/KZuO24AB8wZLScW6h9AbDN4NsdUWKIFmWxMZhKJoJf3mUU9UTniCtmPwplIWArzkfnY2RRJlabvsqEAFSMnczheeq3ziEcA06a18Ye9IR2YAwOMbN628+da24w2BPj6cyNPZLr/hosx+5DIpo5MNfaauCcYaWrNh1agRzTWHdrwxd8moR7Ljh0g27d72Sv+rqFE23wGZdUHUlJiKQps8O/nxNWVl7UvXkAxRE667EVU2OnwhfsVQ2/lgUKo4wdsVU1ApKk7VZZIG9ei00jgIqifC1H4Dm97aReZ3C8xeNNjCH4pahpKXHcXtWTB7/sOPUAnvIEHVbLUToEBRBq3fULnkvnt5+pwt8OrcqhGjNr34gv3BzLRnDhl+ev3mIuHiIxcMaHlg1rp1zdxBVzMTggL4jjtmQUHUgSHJ9j47tmrCKJbOEmBKLewNBu9AjwcDkqQCRqdTKlURoIFp1nJ6w0Oj9s6caYurZV8aPXCLwQBdvjMgSDM3IQ/NLV90+02kCflZRUCJYGPADkKydsnipYNvJMyf1wKcs+Wgi2+4yJNA3H8UtS0FzDJKwcpZ0pZlJ4/Zb1QvWzZ/xP0HKhY3V65cOXgg02aLJRmZFZ3SjFmaj08c/sVjaz796cLmt0gkNJHS7kceBlAKBubnWfzq5GHFYABL1j2VUAg86ZU+pRcVhk62+vPtoUvnDrq2deuOeJgBVAjVxd0Woxd17iNHYVJTu2jYje70aSpAwJvKOUUcc6p067H6aZf+lE2pZiR5ZP362UOGhaQVdNaGJnh6w6bpgwdTTFKBYpfTborzev153yJvJ3S+sHYxA2J+GtK6rXL+oH50AWRW1N0FLLUs0Ftxs3bWGwtuHkx2FHDyhLPHuXhCSncUOnzFrWjX3/+9weDdkPdqg5lKQUH1UBu3r1+2eMXQm88TqAbjBS/d5OCFmDPwwTYb9TPfWHb3ncyL9fZYIT8mu50a1q2eN+R6Zj4338rAtgI1JaOcXNceW4fbE6X/oEN1XcmUIVhO37Bh3eI7hu298cbNV1xGtscfkMAgDNBgBQkWnRd2/eLJXWOetu8zqu/ZnBPnfXveo/q+Xwcd+oalVwI7/XJQBKtSuNf7X5Hs3U2POBOnXjQURAtQD0d19AplYjlBxvqxTy7713+1HaeCIYhX0VxSVlUVWeHM0YoHHjy0eDUD0da2cvzYt6a9TorAJ+ZC6iVtPLrgkftqV66mZzCLDa8QR/jioKY1SGJPKba385Hm/MNrx+1EXPhKO7D3e3a7CSDN1JVs3b65vN9P6TML8s76QOIJFYoy8VAoG3dXLx4x8sRb2+gVnj7YucqCxs2E3QW+g75LrjxoQf6ClEl7g8E7gWIfRwFAySAUIwCSrFu+dNmQYfTdXqYw8S9VAnUzpy+94w47QrN/I4MwRI6KIDncuHLUo3Vrl1G8FSXJTJkGRDZh92v7gB5IYnsSPLahcsPNN1f+0afX/X9/teaue6bd/cCZ6sNUgabUTFyiIlClyIopk+bcOnzFd7+//puXrhh8y7pfPKNM9aJdGrofoITgQEq2543n1j/5KNMQhfJFgmgS1ENFfSxfwwS3SXLFl76w4huXxKAkVPggCUUk+mSqrU6H55QvHHITycpxY7e++ktKYJapqkBFwSyQvm7lohlDh5IUDwpFQoY2ZcY8ZRHrtFJjSRGWvpRuRLxLLhz59xd1MCARVEAEtO3cOueaK+EKpvgEEwqEAxRQwnvAK0lunDxx3SOPkFRV51UliDprMuQz7VBqaXw1FhWRN3y6/mz0BoN3Ik+b49lXwouIDY+QrFu5bNlNNzPrkblxGCWzfvrMZbffTjIXvwAlmDpZRiIw2bB74Y+voDkhCwCJI0DGKrkwAtu/5tAZhKmDeBBgS+3Bhukzzj75QtXXv3/49UX7ZlckR9oQRJkCrRLaJBRIz6Stfu2aA/MXbOs3eGefIQ0zFhxZvYZZs2kg9cKgZAYSmtRsf+WqS5mmBL1oUAFtfDJqqnqlKrS9LW1sTA9WV377K0eeeqi5dnfW2k4PMCMKlCwEr6QognrSHV8yf9LnPlv9yqvlNw1JD9UyOIqqV4pCVH1g8NnZMytHjtgxewZJOqi4jM2BqXYQ+LJgYEoYhILn9cjfLRgwb3Rd1MFArQqQYcXP7jy2ZDZdprkYlAIh9vpIQSYskCR2vDil6tHH85yfJEUlE6iSwVpIgbZBzsWSO5YdLgR6g8E78baCjxKBHghwqiTrK1bOuv7GC1O1e+/DgipSFZI1U8uX3nkHyaiBbgRF7wk6UoUnX5254l++yywRMMvntyKn0PYK3f5kBUpqakogMqVkZNa2ZUf5D69k8CTFq0CIQM2EPoU4VXhHzUhuHvv4pgcfJ0k4Zllc3XpBxoQbpGjz9m0zr7mGhRRkO4Oz8ZckCafONu7dpxJMx6Nl8+5n//N/W37JN6o+/5m3Lvv21Cuv3rN8LWEaO160VTWYaprNIScNBxZe8ndL//gPW6pWkyScmNahQhSpePVKctvs6QvHPVxoPsOMmmWqTcpU8vY1yShPXip6Oy0uc78yGNgvXtTNBYEEAoHlA/oWdm6hl2IxrEOtFCrwQb0qmElry6ph92596VUNPoRgLRtIRs0LbfQUUxQMIW8f/YbVyM6hNxi8EyjyQxALnUFjyxDuXOv6yc+8NWNq91MbARp7nKqnduxYOuLh47v25qOLYAj0PtKXVOf927e2/uwW0tmeAcw1k211uHA31HscP0VsLs/KopJRWwpH6zZM/SU1FWpufaY000swC4BSNAjkYOWag6vWkAEqPRLMLl4A9KLqibT1rY3Lrr+WLkCYAp4AAiVt3rnj1QFXUwskd78xd+3PH6u8/rbTMxdtu/zSpGIpz7WyEFTJoJCMTFQ9ou6SVpWXr3964oGfXrWhrGzT0Ou3L1oAiAMSCESDqCc1kE5IvnrrDQeWLCfJFIFZRh+F32l9ZcmdFXJlD1s13zsYlP58cQICCQCzMPuafi1V6+kEavTn6BtBECoQkeDz5jznDbnl/j//q+TIEarTOJBcoKY5KSHkbt4BDEopkcEuzJnoDQbvBIonXEml5mazZGDzpv0zr76GLJDdrZVmtFFoNJrf+MzktSOfLC7zhFA9gzAo25oXDrg03V9JabbF12iLhAlkott3NaQdYRD6aAkICZD22DpGgFpZFURuHCqEUOw3omAdFRA9TxmuFxbhHRzZWti/6bmv/d3uV6flw49WI2pv27Rm3aArDq+Yu/CGGyrvG7Ft+gySDJx11dWtW7ZQYYZDoimRBElDcPDKlExRNWP++icmbfv3yw5878fbHxm7fWo5PRzZjki4trqqB4XhUGXFkiF3rB/9HFOmRKFIOIYyn60DSNoASq72l5OMzmNk/eZ9+W4FqAEeUCa+fGD/lq1b6KzKQ6vNxp6d1f9FqIHO0bnaZctn/vN30rd2MmmiSxjNgUyjy3SwoLF3EACxPXLk7F0A9AaDd4PtCIymSVUG86OisHXz3rnXXM/QHKVluhPmIBwQ4ElumPz0hkeftr92REYP6InqumduuGne4MFL//Z/bPjXb0+74qr9qzYgchIC1dlMUM8k1lCqWMfbke1ku40Yq5WObFgNuQ4rnT0WcZmAWWZ6wvEjY6DVOQSytZSb+KrnJ8278VaS7sSJluqavU/+Ysl3/23Td/9p9Rf/fMa3vvbYf/mzpqq3SFIzip6pqZemdhvcADWlyxjEJM5tEMrbDDh3jxu3c8S98U2cQuzKqMUiCgW2rnPqjy974RvftE2qJwOFEhgc6NsYEjFvTKFP/dkm31wwoW2IqogQAblQz4ckGFiVFlQ6V37toJat261LH0ijScedAeiVKqCisbrhuWsHrx50w+7P/tX+L3x59tV9qtdUUCmWslEVGpQJmQlgipkqwQZg2RsMuhOIeUoAQzEYCKls2bpr3qBr6Vp6YDlVms5zBk9i4+TJG0c/SVKhAfQUCWk413p21/4Ts8rf/IevNs2Y0bx9R3amOSELpEIo3ibCsh6TTddAmNJnG9lOqii9zUbl0VVjWhRiFokoEwhH9YGS5brWvTAI2Q5mwhN7D+5bu3L3xPEVP7z85Pwlv/jBv0/rc+Wc7/+o+onJrXPmrfnXbxe2b0vrD2lTk2jBMTiN5M04XS3qKGk+payk0lpOjuT2WdO2T32GCD5muGrGlholOYXQpoaGA/MXVI8bW/m//qlp7tzaFSuSlmalMLQzpIBP6Z2qZhAByXVTnl332usscmSAoBoAKbovfUiCAcWRnpLMuvbalm17GC2n7L9aLDfHDkkq4Vxybv+Btm1Ve//ui9V/+4WdI0e27qkmS752wWeZoh30yBVkVJQhdMr67jdEbzB4F6htXxGvgdAngJAMmu7Z90afK+mS7r9DLXfOoA6OZNWkZ6pGjaWakTpVAunpM6puHjL4l5/6v/2Bt8hWwNnTrBoNNLQoU9zNsNWFTMii9IKJvWnuCkAFgzAESojWLDEOezIjHOg1Urp7EWEVCAapmjFj+rAhay794Za//btt19208t4H3KkTdi+3bto//fJrY7x1iSAk0AIkY3DWnIzxwIZBIvknUHw0MPNUR59QEtCJubqKMufCZ0wJX7di3ezrh2+75tp9H/v4W//1L1b+bFRT3TGCzFqpqUpKZDbAYEe+aexjm597Jn4MF6gUkSBSsmX9UAQDgC5QCmT2Wv+BTdv2Efn9TO0o3SpB1YFOmdm5Pj1/4KUn3nhp7ZAbVz08pq3xDMmje3cd3bGDUAfJNJdBNDpVNNTtbSB3I/LKRAwGoHd2/3r/5oQx+6b+kj70QANWqcKMSM2S8Mmnt4x5PJYlhUE1kwzBMXOrr7923b23S9tJahskU6iP6wUJ9FzPIBbffHFrUpR1QDSGt/JzyZdT8+Yhzhv67f5jv6gB0DlmbWRK8tSC+ZuvvY5pgUjI1FOEdMdaD6zYbMUcAaCUoMHqjkU1KOthKqJrJmKX16wlFDYVrg7BmcUraMHAUQMTaoFOSYTaHZX//JVjd961eeg9bTuPUMlU6TyzZmpq8+m7x4yu6T9g21f+58rvfWfWz25f8MILxrcRH4LkVpxv+5Q9cWo7A5BQpfgdb0xbP2WKa2qhqOYtkFwakEqoBgkOojDukbYdWL3AN9aTPLBi9cJRY7Wl5c1xY9c89jgJ0kMVkvvVxWxQ47cXAL3B4FcBsYMMBX2k8Tj/Sr/LCvu390zRXUjPAlwrHcktU57bMPoR9SlJEWRKDyGwe9q0yhEPotBCcQyO4hCyAOTa9rbJ1+5/uOL7E6AG26QUn5Q8LQU1EK64d1HmupsdXuWiXRV6DEpJgYIwI1m7Zv2i++6ntJOtyiRVn0RKBENQJyokvNB501mBlXjs9kKgjcoW43SIm7ggMJZoADxDsAJ41OQJpIcGBJDSdGz39Ptudnt2HJ5WPu+BMY2760hWTP7FoTXLSUohObe/ZsWXv7b7b/6u5rK++6+77sCyBTWbq+gDfSCgqnK+SfdFvj1Qk1oXzLl2yKF1FaTVl0Fo9JRQa5PDMQRJEQKVGlS9ScOISkZy9xvl5d/9l1l//tl99/28rXpvW/0BilNFiEtNh2BwYR7f3mDwbgDjFKDa6unbTHEocQsG9G3dvJ7otBthF0LJAM+QIIVqaG5ddstNDWtXxQ0MTJ+YaydNWD3yYZKw8VBxVCfnMdK05CHWzYdvPQDjUCOYcGYUuQSNbxFK7ItSG78kF3qhdFk+1FBl8PQBikApSHauicGDCISHjccmQAGAhzo4+AI1pWRFM7ISjR/m6hdJW+ajp8wUGrwpXTkG4z6qM10ulC6sKDX45MxZuoyUU/u2rXpiVOObK5f0+enRuXNO79i1c8IvX/vhoMa1q7T56K6RP6+4eXi8oIljUIgHxBS4ihf5Ig8GMdT6sHT4zXWrVpAmS1a0NyNzCaqEFAGzoKoCAZCRBWUQsh2rHhg561/+cel//+yGL1yyrE+f5Y+OoLQLkYraEKxF35hVXYBktJuCQTHOz5w58/XXXydZVVX16KOPPvroo5s3b+74A4b58+d3DAbI8QGPorSQKE3jP9f4iNT3omiKMOSCXgq6zFxAMizoN7BtyxYA7oMdym90+ICKhzgConR+6bAba1cspaVuAgZpPnJ4yROP7V+z2giaIAkhAs4LBugRp/L8GOzIQkcHFB/3AChZPmkpGJynAacXKi368AJkgHpTceoQKdVIKCQgigKQEpGsSzhq1lE4qMN5jdRdyd17AqF0JZ+KEKx7bNMFwtzeLa8zxaMCSafZmeX33/7Uf/zYnE/+0e4BVz/9B59cNOgOFqK88+HKNWP/8RsNKyqsKMKguVteqahYqpFcxBddVZi5pcNuqVu9itYaMzqWIrd8o51Pmx9QIFAApMj54omyuZ3qqh8fu+/+0TzdzObTAW3tdGYdh7wp3XEUuWvRrcHglVdeKSsr+/znP79u3bo//dM/HTJkyLBhw/7kT/6koqLCfiCEEEIgOX/+/IEDBxZ/XXM490EWYSG9GtPLk6qBmY9rZjvRTvp8bl4zemfdNGPfwFHIjNMGXNO8awd7hJqpwuA8kVrqkSWLhw2uWbky7uMDCO6fNXPm7beSb7tX3nnj9OyDdXE/2R9q/Mrz+rZU+71/upg1fNDr5M+drnrhpepnXtn6z9/cd9VP94x94vDazbQ6VRCSKx+4r3bG9KJuXZRPypNfYyHHQuLFuyMExDN1i2+6tXb5CkaehJ0+AURs/Xu3s4l3nOuKSc9XjHqGnkjbE2YtdI4oJkZ58npBnqDuKxM9//zzf/AHf/A7v/M73/ve9yZPnlxWVtbY2Lhz586ysrKxY8cyjwQWDBYtWvTDH/6wvr6+pqbm6NGjIkJSRLz3H2B/EIOB2LeqoMstJVIyMT8AY68AEoz4TgEzUaGy4omxW2e+JNlZhEL3F4pAePUBAgUTZVJYcsvgmopVyshkhnMHXp224ucPdfOB9aIXvwJm90GSG4cMPjn9ldgJsoETguSiYcMPzSpn3DjaNInkFdrzg8HFuyNUDY5punD4zTWrVpOEFIeQ4uQwOh3Mmo+dbK45wiyBJCm8pyDvqFlNVcgLdC66IxiEEF588cXPfOYzixYt+tKXvvS1r33txRdfLCsrGz169He+852ysrKJEyeyQ/pPcu3atZ/61Ke+853vfOtb37rtttuie6+IiHyAYBCHnsy5zORI83svn4xHSWIxz0ZKas8V119/+s0lJAnNlcm7D4FIqV6D+kBHJn7xzYNrVi8jrbGk6fHjb/S/Jhw9frE+M734aAGkEEEcwfVPjT+2ehHZ7jRVpac4egKbx43fO+U5cZmPfVaN9UMliwx7shgeLkqoBEdy0fBbDi5bQdJIWQSRs6Q7HwxIEkEl8Zo6yUryLSGSWmIpr6sF8tk9weD06dNlZWWf+9znxo0b98lPfvKb3/zmCy+8UFZWNmjQoLVr15aVlT399NMkOy70v6pn8IE6B0oKFEjJdmt8USRvF6BIH8pDACFkOwnf5jdMfrZ61BO7v/HvW669bvX48fsWVdB1e6HIlKwojsiU9Drr+kH161eSpCdbsu3TZqx9+mlmycX6zPTiowUrx3qQTikpw1lqQlKUGUNCJwg8dW5O3wHNh2pjIUTN/1GtslLkNF3MlUUlADm9c2fFPfef3rXfOr2I8UyV71UmeicCQ4FZQufVEaBTprnMcOnXP7TBIMuyl156acKECaNGjfrEJz7x9a9//dlnny0rK6uvr9+/f39ZWdmECRPe9itvCwZF3vkH6iFriaroSKEQ4sG0OOGteTiwy6ZKpKT6xG184/VtP/jBprLf3X7L3at/8ey+igp2P5/IZuEUGTRRAKFuzfLlox9OjjVSyGb3wuV9CodqY1ewF73oadjwuJAF0FGBBCJQqlcN3iMN9GxsmnP5oPaGunh/x1Ss9BTmS+jFGw1s1V8/fnzVY+NJBs2HNYRUAeTtK/l7wlHb6L0Rs5xSyJC/WAdywIe1TNQRX/nKV7761a+eOnWqT58+X/va177+9a9feeWVjY2NPJ8ytGDBgr59+xb/0r7RDtNIvzlAEkoB4thuakrreTAIpQJdcXcXSDZOeWr+7//vrZu2kiSV6G6hOoIIgCCImWV40s/se2Xz5reo9EdOz7nuhta66h7pbfeiF+8CkIEqbCHboMVsHwHMUmqq9DzXNnfwHad37KS6mGCBLO0KioMmWmQXX3wAyQ0TJ214dCytgSd5pUsUEPd+MkchvdkZ+Kg+H2JLkx1e5LciGDQ3Nzc1NZH03h8+fPjw4cPev4vi2wWaMzAFdkAcXaBjcEpPMoPpidMsSAXBAQmZwLR8cKxi4Yrbb3rzyQlHtm7N1Xd74r7U858Jn8y7pm/rls0kVzww8sC06dAQLuLaai8+WshzK8nz/Lz/ScKBmVIIbdy1d9rw29jaRkgwHjQRR2FQDAZi0ww9+nl+FUBy4zPPbHz8CZIUMosD2uZ2mZ5vTfPrYQ+5NxIqE7LdZhTyF7lAQ6MfoaEzBcUG7YNXZsqM9NnZk7tWLQ7aLkxVA0QYPNV7oN0ko11AobVi3MN7Xn+RBFW9ake3jm6GNy94y/5DMnfg1c2bN5Ccc/tdB+bMZY8p0PWiF+8ASBW1Okk+NxD33BTAGzWj9cjhqX0HsvEcNDgyUYgGIA60FbWgL9pgYE/jpmcmbXpkrFV1bKTbjEcdJbOUsvOHj1LrvKTlxRK/tjSO06X4iAUDu3DOUzOGjEFbqt5646c/ZXaGaKc6BqFzDFl0l1eyECqeemrL688TKTMfPSt66J4EjIYh8cbSwuyB/dK3th+sqFgy5rHmI0cYetWde3HxAGTw9O3ULM9p86+8n0C21Dcs6DuIJ04huIJqAiiEdIS3Jp9nzve7KIOBTcltmTRxy4Nj6Im8X+DJzITCbVHvXDCItKkSbSjnU2nOKcq1QrocH6FgQEZPAqpSXHb0bEtlbesbS7b/4Mfp9q3Ne3ZJazMkQAXe0atJcLkjp1/uPzA5XkcEcwmjUgO0+wMCrIEehLlKmCbTr76K+2sqR4+pfGo8aZzZ7j6uXvTi3QHjfoQ03rS5/3Y+VWbtv7ZDhxcPuj7U1VK8AzKFSHRZsxTblUYOLs6bW0lumTx544OjKMy8tBEOAEzCL6endy6b7zBUQHYcSZPSP/QGgy4AQARlCCT2rVg38wfXbf/zL27+j59Y+uUvz7/t1nPV1QQyaLA+fgqScx4YsWPaVPgEKmrKDkGKIzPdCnRsTpnoXKh44IFTb8ys+vmI3bOmWYXyIn1eevERBHIZcmsWoBQMApnlHVFoOPj6K6sfvJeEiqoQEtAhGITSMPJFeXMD6bm21U88sWP6y4QK0EYGRKUOoeSrd6cW8KL+ynkfFaVJC1woaaKPUjDIF1BSIZb2Q3d84ZKdn/xk1a1DVz4xJjt6lGRQzUyITnl89/7yhx86dXAfVYMPBUI0UJ2nSA8FA1P3Z67lKdXVUz/1qfWDB5NB4DoIEPWiFz0MlEocAFQiuduEXaLiv9FGD86dNuf2IWQcTIB4pVNrPYvlxKK/skyEjgl0j9z+B2asmX/PPWQ7kZgDaPTgUFVKiNSiTi7gHecrNOe65y7s7xoqugi/DcEAHctqsRIUtdA6TA0AUDFNdhJIyWzfjNc2DR26+ur+Z/fsWjVm/NKR45ITJxhPtJzZv3vB7fee2L2ftPHo4KN6nUKL/hzdCMSGkmckYpOQ2popn/nM8tuGk1T6Huxn9KIX74R2eDCLGp7FFa34DB0snzb/nltpdmdqBpGiyNmZlMws5DuIUgjhY/NB1MT0EJX1uv8JqJu5aOk9d8eD0nxiNZjmjQZGqmKnXy9vrZRm1dAxOFygD/jbEAws0VBYxTyY27pQ82DA4myxqBYUGZXknumvrrzrjsLJ42fPpR8TAAAgAElEQVTqau11Di5eN//hh89V79dzLRufGLltwsiVP7uPcXcKk9nvYHpzYT75ewCk0oMZAUjWdqqpfs/ZRUsXfft7hxfNa6rd55OW1DvpnTjrxYcNtcsWz7vvHp+mEqwZFyyphkkJaxJbdJ4idMog6iCOShgZNQaDknlqNx//rBmL77qTpEreCikFvvyBvOify9+GYIC4ISMDgFCa3QZL1DT7XpiJgBoKyeIHH9w9Y4a9QoH0CioOr187feiNB6a8sP3zf739n/+BaGRxHBI2Wh9H4HpgyldJVQef0pGyZ8Wyl39y5YbvXrHqL/5+Zd+BL/cf0LhnD1Q09IDVQi968ZsDKt6vmzB+08RniKI4p1I9AyBCn8jZM2f27qV3nmyzGAFROEpeso35XugRH7+amdMX3XE7IwtIBYhWZ73B4IPj/QYDIahKr0CQoqRTLnzoi9UjIUWQFlZMmLBl2kyS8EkiWQEMIFXa6w+um/jkwi9dsu33fnf7f/nUhicfPLpre1GqCAw2luapPdAzUFAEEFCpju0tPNtcWL2j8rJBPHmcTadYaDUdlO4+sF704gMBJDdNmrLh0XFEABw8RTRo5jW44Elt2rv5l4MvVzYHpo4ZJKiIamDokOuZ+4v2wNBlXfnMJXfdSRKiqhJEeoNBl+H9NpBhab8PQJAOit/mK1FqqwrZWqgYO27L69No/x6EyIWtVVsbDq576vE9E8Zs/erfN9x+y/oHHzy6ZXu+zRDjdFKLbtfdi/zDaFAKVB3VN++oeWXAYEoLmWTIpEeaGb3oxQfGuqefXf/YWDIJaLXZgjb6xNrIIWnbumrpwH9DOA49R9fMLDV+qjUFQa9FdlJPrLn15TMX33EHSVirXBW9waCr8P7ZRHleYPN/xZJdB3pByNpDyyl38OC0fgOz48dIWIdelBmZCFSEWiBJYt6Pr0y27DJmtATbuwalFGNM919ZAAwAqDY+JyQQWgsnDtRoSEJInSpKetu96MWHA3bDbn7xpfVjHtHQDE0ZCIWnKrB3ZcWcn1xR++Wv7v1/P/Xmv//7zBuuP717LxRemMaOsXh6mAT9BWLgvyegUjPttdUPPUTa4iDKoot9bzD4wHjfwQAkVc02g/kQAEgBoMqglIYNy5cNG7Tl8ZGHV61QDSIKBwpFkJEZqADglYBw8agn2/bVMiQKsbn4wBDM1C8vQHUzQCjgcloFhKL5ve8DVEMQ9EiY6kUvPgCMKxNa25bePrThzeWkjdoCoATNjp1Ot+2t+bO/2v+x/6PqR1ccr6hkUyYZ2gOS3JdQcwsEq6F2M1qPHJp/w7W+oZ7BlPVUi7PWvcHgg+P9BQMrGIKe8FRPFSoVSB19hlziqb1q9YKyssYXJtA8N4IwEzqYYWRpiUfcbiqCMNjiG8iUSHKOf49cV6U4upTe7Nk8NaFCA51nCNFl/m1Kt73oxcUPkI7MdOnwIbWr5pO0KR9QAlOqP7J6XdVlfTZ+59/qVy5d/NDDhRNnSIqKi5kQmCiFQeG1B+RYWurrZvW7imfP5PP/vWyiLsVvsjMw92k1zWslBD4lMtJtnfHaqmF37P/+Zbv+w++t+cdvzH1kfNKaQZUhpXpCSmEghgR4SkYfGNSEUpQeTIzAqnrBZgDfGwoEhTef82CDFKIMKhApDnf2BoNefOgQlKlbdOPg+rUraFNCXgAxKYp5g4fum/HGkcq1JA+uXz/tlttWPz6BLiEDA9lGpOpFHESp0O5+MFsa6ssHXM1Tjb3B4ILg/TeQ3ybqoVSBeidtdO1ntu3a/dDk9Z/4dP33/uVk+cKD8yqlORAQZp5OzhMEtGuXORYcE9JFaqqPA18w+lpugtCtQD6NCERN4Hw+s50skKGXSNSLDyVg5iKLH7h/36JFEKWACnhPcufMmRU/H+HbW0kTeeDhLZvXj5uwatxjwbUvGTe5teYUSQfxCGAAulu3tzcYXFj8JnIUoE26R3FAr/Tea0KG5r3714wZu/eJceuuvzb+cGBQtCMkDD6fkYzSJxAyVetOwav1CSSXDAxkCITrfq3o4qyblOYqCDAlW2IwuFBz6r3oxYWEEg5wWcuZGcOGt+ytNikiOJ82n1s6etS2WbNJqgYK6OwhyPYumlH11PhZP7o8rTucv4xSfPdnab3B4MLi/e8MIstHctuymNCrO7nvwPx7R56u3tVUs2PnG9MpmTAVCV40Uw35hDKKFtywaUZ7QTGVUCGsOKRKBfLh8G6FTVhrTpwCVAHTUfUaXWPBnlDQ60UvPhCgVAHIMGvA1a3bthFwJMm6hfNmDRtOUrME8KoKEVKbjtet/cXEBV/++tw//lTNffdvfnrM8T1VJERUu93Qo/VQQ3n/vmw82RsMLgjeGQzQUZcjP63FUr9EBn4uEitx6SS5ctzktaOfI0kWSEKyDO0+pAhaNNrIX9o6WVrUAQGtMBQy6v/f3pfHV1Vd+x/fT+XV91oV277WqrVVCAEUXxUUFbCFAkF9ffVppTKFMAoo0Enr8wmECwESIJCEQWRG0VZEhhBBIAkhyCAo85DhBghjJjLee87Ze31/f6x7NzvnhpCBBrTn+/GDN+eeu/fa3732Wntcmw8WcICtwE+aGDwvJImnVAmWCduCABEsgkWQIriGfMPrnQsXQZAazfsrVkf1qTh4gJ+bRcXb/m/cqc/TAPBWUh+EIAHbLs7OS4tNyIqbc+ixX+aMHLM7ZtyZ/ekCdqARkCN5tbcn+EDZEnK+WP0PZztyPiIAKDuZt3LgABQVBntirjO4ptCcQWCTqIp0KIm4h+yXqAJsgiT4SFokSJqQ3KlHxtyFFzK/8n6eti4mtvRcAYlAzRNIkA0IknTZmVyuenFZdS7XobSDs0K2GoVel6q9rGGCg7YE1r4FQZC+8OHCxTcIInDxlO/0pnUb//f/YAI2Xfjyq4+GjuFGTmQJmH5YFiwhzcDPTBx49Je5vQcCAKQtheS+UbV2LUEWbEHEHT0OHucD/CCbXw+EE9LDgUqeCrYCnb6AiZeX942oeDTl5Rveecebse26BDK+triRnUEkgMBMuIAk3nwMCAGTpEQloZL1REpLkiVskA924GjwvlFjsoaPOTppkiw8B0hLSHd11YWLGxEEsqWABJkVR/evjBwIn4Cf/vbqaxf2HIRfQggRCEIkBfwCVsAim7Rz2IjU37xQcjw7GJCMt5fr4wFBMCXZJlE5bzWyJcgkNvSSBMEPkCQEbyiTAKSANImPMfBZNkiCXc0ZACDCxYsf9Xml8uzZ68TdtcSN7wxMkD8YVohr1iafbRF8gC0EkUXCJJMvfamyigp2L1p4/L35uV06HTaMfaMH5mz9FNJnWT7XG7hwcSNCAn5JUsKqvPTVzk9HDQbEqS2fp74zwSwo4G3iflAl8fSLCenjaAAccSD387Upw/8IGyQkpCRpcWhhAkyQDSlg+WGXE1VIIr4jR0AQR5SRAtIPSeQnWJVAZfC2YSKywUONqziDTwZGlublXS/yriFuXGcQOWAAAAlbwiYKhqAmi0hCSCnJNi2yLNh+AGSSKUCANP0b3x6X8G/f/ez7P8z/45ivZntOpK6Dbdumz43a48LFjQkpYFkSsCpOfL24S/vTn364fszwvE1rAAjhg7AFkZ9P1wsB4Ye0JAkTkkC5qZs2jxyLSgFTkC14EwkFhhG8E1tKaUsIvmaAbNgycPMBCEQ2kY/TtCFsctwho/aWuM7gOkFzBsH77gggErBUUFIpJNk2qip8RcXSkgD8pZfO7NqxJW7ahW2Zn/yu/8nN6YHk/HwDqzsycOHihoMETIK0CELArsh/N3HbHXeenB5DFRchfEQ2hCDSgv1ICdgWLJ4U9peV7ZgYc/hvH4PU6Rs/YFLQUJAEbGmVXbJKCiD8ArKSgiYlEPXaByFgE8jiIAPVzpS6zuD64vICcmC4B5KBiCUQNknTktIH+ARQXPT30a/7Kn1VBYXpf/zjysGvFB/dCyB1/tK8tC8IkoSAD8IO7lhw4cLFjQQBmABsOvfVkSPrPjsXG3/MMHL6ROamZ4rSSuJwAFLw3o3AvYUgCVPAZNOcFj09Y3YiAJJWoPdIfkiLr6/lHR87Fy7amTAPVGXLSxaEugOKiOO7qP0jfsAiSA4zFNh35DqDawXiCBFX/haAEEJ/bf369f0DzkBIEpICOyohACmJLNMWgWopLt7x3785FR19bNKkc+s2oLwM/gpYflYxEraQNiQHbHCniVy4uOHAczIg7Fm15oM339rau/f+dm33jhiRPDnWX1IFgk1CkIpBCRCHIrPBkUptmfX59s+nzCg9eYogTTYjtoQQBBsisKMka/rM4xOmADZQyV7EX1p6fMtmVF0SsPhYkQUI2BKmSYKgdhGGjgwCaxKQEqWlH/freyk39zqRdy1xPUcGuvU3TVNKSURCCLAz6N8fAMEkWNImW/LldnywxAJQejxr68hXDw4btu+BB9MMY3W7tqf37oclySIp+OSZGlj6EYh3644NXLi4wUAgmyACBznzMzZuGTvk8p5OdbaGNwzJQGAYyZF7peS9Rete/0vO3z8FUMmHlAWIpIAJy5c+O3HT6DF7ukUcfPpXX/Tv/+WMqSA/gLKs4x+93BtFZ4ByCFsIVBJ8kmxJlUJKItgmpFXzyIB3JxId/uCDL2fOMMvKrxN31xJNNDLIzMzs1KlTRERE9+7d8/Pz/X7/+PHju3Xr1q1bt/Hjx1dVVREROwN2D2qaiPhwovARqsovHNs8ZRzKCgFUnD6du2zFgh/84MCrI7e98GLh31bmp31eciY/oCE26w4RbJANKflgsesKXLi44SBBloRtQ/gBnMhIWzPxf0F2YJN/YJOoIAQO1fDJGp7K5wECCJe+OvD52D9WnDkrAYvgt01bWiQETOv0lwcPTZm79OY7j414/fPuv3y/davPe/7m2PylJak7dkT8l3/7Fr93n6ws4aklETzAbFmWsKoC8Qg0ZxC80jLQj93wxz+eXrPmOhF3jdEUzqCoqMgwjF/96lder/e+++6LiIhYsWKFYRiff/55ZmamYRgLFy4EIKWUwYiDa9euHTZs2OUkpAnAf/rwhr6/xeEvSzavX/f6iNQ33zKPZCPXuzSy36Vz58EnwiRBEgmYHPAQNsjiKnbXDFy4uBFBJGy+McQPIUVllf/iBQibN/kj4A44CAu7ABno2knwSqIkifLS5b1/V3XqNAgWyCQppICwYPoBZH20dk6Ltl8nJMiSc/6so7lTEz9+9uV1A4ZuaffItqfaJ9z3o4J9BwBAVKHCf/HISavCtEia8MuQcwaCSAhBUkpBAD57882cj/9+Pdm7dmgKZ1BRUREVFbVq1SoArVu3Dg8Pf/fddw3DOHbsWExMjGEYiYmJAGRgzYYAbN68+ZFHHpk0aZJnoufDpSvPfn1sW2z8Ic+k9Ge6ZnfrutYwLqZ+RgBsoLQ0Y+mCisIiW8KUsIUJ8kkyLZKBq49hB8O4uXDh4oYDT+NasEmYZAveAS6ILEDAvLyzPBgcIHCSTBJxAAIA0kZl2bak2V/97e/w2Tav/0oiqoBZsv9vS3e8G5+zJTl70wbAAlXBsiFkWdbxz4b2Pfe39zdHDs94I+7A8rUAUHrxg0EDS07mCkgTfgHLsZvIliTE5cg3n735Zu6qj68XddcWTbdm8NVXXw0YMOCuu+5as2bN4sWLDcN46aWXRo4caRjGnDlzEHQD/O+WLVsCzsAzaeX77587cSxj1pyPfvbQZ61/ccYzNT8xwTx72gZMSWT7AUDCtmHbROQnlEq6ZJMd2GYmJV9y7Ib5d+HiBoTkiPAkIC2ybdsi0+YzAjZQRvAHjwsQrxjzDlK+iTZwqwdZIFlx8tR7r/we5RUkBAhEguDDpUuLevepOH080B0UlpS2FBaAktOnFw4diMILIBz8+/ovJkw/3Kdv+dI5uwf81rdvN8qr4LMCoY6qrxnwajNvVd/wlzfckUE9wGsGDz744F/+8pdjx44BmD17tmEYqz5edfbsWcMwZs2aBTC/ks8Jr12zduhQfZrI3r10xZcx8Rt+H4VgYBKbyJSW5HhyfDiZQGRJKiOUBdaVAitNbnhnFy5uUFCwbZJlkmVJyT1wwLZAZYBfBE4NS8APkkTwAzYkyE8kJJGEBaAs7/Tqoa9aeSchfBxtQvjN1OlzDnzwqfD5BCTfbmtJkBAA2T7/hRPHUVnOaxXl+w9t/m7z44+02Rl+//Zf9fiwd9SRzdsCAY4Cl6tLi4+qIWCsAHz+1ze9qz5RBamhbMH/3/jGp+nWDFq1apWcnJyWlpaZmfnxxx//2223LVzw3pykpNtuu23Vqk84PoklpE0AkLx2w4ABAwFIWMJXkRqTuO+jT/zFRRunJqDUEsG9aGQHYzZfJpstf2D4qIUo+QZUhgsX/5xQe/6D00DcA5d8AWbAIHMXXRIC54cJJHmzoQVhwiIhji35ZNPbkwDYKPeXFn4x870vl68kEpA2pLTA91WpnDgz7ija5C+3vLnWV4c2PPHrTx7uXJWV5S/Nh5SwCNIH8guggsgH2AJkgcOgbXhjdNaHqwBYQtpENlHgbKsKkwdJkELti72B0URrBq+//vrQoUMHDRrUv3//8ePHA/jgww/7R0b269tv5QcfAuBLpG0pLWED2LBm7UDeTVTp2xIbv3/ZKoAAC5aA3w5eScaRpgLrOy5cuPgWI7BqQIEdRCa7BxskYJJtwQ9pFu4/tuV/JxV/fQQQ3q2ffTxoNAABv02Ct/9IPpAMSZA88U9EIClhB27GqrCW/XbguoGjT2WkAz6YfgiALCKfJfwVUvJ9ufATbHH28J71ngnnvzoESZLIEoEAGIG7dykYOAEkQOKG3814fc4ZOGPGSVi2LQFJQpAJIGXNx8MH9QeQHjt3z3sfAoCohO0D2YHzHsFNZrwh7AZn2YULF40EqZsGg7cOBi1vYCaYRDmA7Flz0tp0upSxPSVmYt7WdFimTVYFyAQC1xnaFBgNkOQIRAT4ISxYIAuVFTnbdhRkede9My4rNR2SgtdeWVJW2FLYZBGq2HdsmeLZvnARANiQQkgpCbBlMEKyNiNxHS7Dqj+ayBlIKdUZY95CaoP8oCopSQImkV+SFBXwm7ABbEpdO+KVPkf/tvrQp+sAgCph+eEzLcvPIwR1L42EOzJw4eKfBRSYCJaBjrYALAJgSb+NKgBnVn20ptltGzs9fW5nOgCy/ZICVxMQAUJC2pKjnlLAq/B2QxOCpAXLx/Z7+8Il6ydMBeCDtAhk2xAm2TaBTBEwOLsSZ+xeNC8gmC1JkpTSksJUpxW+UdPTTeQM1JkyIQQ7AyJpkaySUgiCT8KUtrCrYJ3JOnwiLf3DOdO7/b9mGcP+7N3xpbQqAVNYfjItCh4j4J1dpF9Y6cKFi2811KEDAclHEHikYJO0yLLNipzUjNMf/X1v1y5/+96/Z69YduH44UCH8fLVhZIgTEiLJxg4AAXgA0wiYZkgG/DDrrLKfVvnvLfn4xWAjyBh2jBF4PAz4dyOLy+lZxwcOXznmBHHtqVn7/0aNkFwn1daRCJkcHDjo6mdAYKjBICksKUkaQsIsoEqQEJ+/eH61SPHT/tdn6EtWm//w8RN4+LN8yVEVCX9JlkcjtYE31TEmkC2O03kwsW3HbwzhM8cCEiTJ/8FSUmVEALSX1iS8qepuyL/sO/Rx7/87Yspr475+v21PJ0UiDZHfOkBsfXgewvUyTXB4wZbQNqwTUgBny9jeszhle9BVMHmrUyQIJD4eur01Ju+c8AwvuzRa9Wf/7p+4RJIghBSWKYwTVl9I/s3xCVchzWDgFfgZRW+hw4QxDsEBC/2b1+z/o3+/QM/sIhkYEhg8TI+32QTuJbIHRm4cPHtB6l9RQRe/iUQLCIRPCXMoYlN7Bo26sLGZADw812XECABS8Kk4LW5lrrTUp/T52NsvC4pbRBVnji+9JW+KKuEbcNfBSlhWrhw/mB8/PlpcV/1ei43PiEgny0gJZEQJFxnUC8QSIIEQVogG4G7JGzeVgRsWPdpVGQfACaEDbXyg0q+j14GglYFkoK88Yl24cJFY1FtB7nkOBQI2l0BacOCFGv/+nbW9s0E8pMwQZKIYBP8kscDwdGAGbzYvBqCCfICtaj0f/3R+p3zV36RGH9+bxoRHVj+/orf/e74hysB7FyyPHPxMgDgZQipNpLCdQZ1B7t2ISH9fJ2EDdiB24UArEte129gPwA+PuUhAs6gip0B1fSfCxcuvr2g4O1jAuDZBD5HZqq1BPAgwe8vLrarKi0S5bwyTDbIBPlBJoSEDAwLHKdQ1WkG3sNqaRFsjiasWPzd2/JnebwrP9j13tzi/GxYNqpgFvusCr9+L5qSU+qJfkOs0/ULYS0INkmQyaRLkERV8IDfquT1faMioQYAgZttgoM7ulxtapupCxcuvsVQzkCFFJCQtgpAGdhbKCUfSBUkCSZgAiYJAZvIhrBhE8lAr/9yuponULtX2bZbZeVfLF+x9cW+m2771/SbjVU/uSdv6wZA2Hy2gRMgCW2AUm0X6TfHE+C6OoNANQa5IwFZAbIhAazakNx30MDAazJwGpFng+ygh5BKD9wlAxcu/hlAqsEHjhmEdL2JQDaRBQSuuJFkSekDcbiiYP+dLp9BpstpC822EABJ1sUzO5LiDyYk7en+6+zBUUenxno/T7HI9qEcVA5pkm0JadFlfxRMUvuD9DRvYFw3Z8CLxoovXsKX0iJhAVi3fv2AyAEAYIOErIL0Q9qQgheOAhtLA5XrxqZ24eKfCZedQYjxlRQ4xgQpBVkCQvIQIXDdlQBJIWBJPnTGR9ZwOWhE4IwZX5dAEnYZ/zTttT+d/uijQPZCSikhbdiVEtIMRK5TkVWryeOGo7g6eFYu4OYlBKSADdvia+qS160f2H8Av0dSVkFWQVqQNk8nCRnws4G771xn4MLFtx/BZq7MN12eq6fgfiOigM3n40i2CD4JbEslEjY7A3V+WfMHqoPJF2MJmEJaANLmLDq5bXtg+GBB2iBBIFuQVMsP1br/rjOoO6qP7YLDKZK8e3j9uvWR7AyCh8qk/pPqQ7AbnGIXLlz8g1CjTYDjIZxPajMbTtsS/AcIbGdFNculJohQY4pa7je+mbqedyDXAnXtpQsXLly4aAK4zsCFCxcuXLjOwIULFy5cuM7AhQsXLlzAdQYuXLhw4QKuM3DhwoULF3CdgQsXLly4gOsMXLhw4cIFXGfgwoULFy7gOgMXLly4cAHXGbhw4cKFCzTxHcgI3nmpIITgbx3vO5wBv6ze5KT0e5WvlKmer+OJI80a01HvOB6GJq4XqpZ0avnXkdRVSxSaXWhB9Bd0GRy0OOSvPZcrZXelfGuXv0axr8RbaL6Oag2VX3+zFroazL+DIvVV7STUWCI9qQbwH0rXVVNwZBpafF2eGvO9Kv81klNLiUIL5fjqqvKjQfyHMuAolErckf4151/nU8lTo9i1k1NLjldC0zkDIQSXUMG2bdu2WWj+Vr2vnIGDd6aGf85pXskf8GvqBT13/sz/Oupb/6Ce86+g1bH+FSdl23aNdV+j/OornRAHPzXWbqj8umy6YFS9cUopLcsK/dYhv/6tbds1UqTLo2fqYK+O8teFfwqxLEpC1p8ay8vyq/oKZfWa8E9BNXN8UJKE0sJQCq//eU34J61a695MapTfwUYD+Nd/ord3B8mh8svqHb7Q4tdF/lr4d2iUqtnQhuCQX5dKl/Pa8q/4Ub+9UjOpkTRoXqTuaCJnoIjWrT9Dic5Nl6E7A/WVg1xlf2sBVyFnpJhiSVTuikSluyynrO6lpdYv4HfUkysZUy5sqPwqL91OOfippUS6/DrDSgDLskLlV8aRc/f7/SojVRes65ya7jxUvvwwVH5HI6y7/HXkX2WtM6wLTESmaYbKL2vqxV9D/pX2cnaOEulN2iE/BYfF0NxMg/l30KhKpNKppUSh8juk4jQbxr9lWSpBJs2RiGVZNaqB/mZ95a8L/3rW0JqJTpdt26Zp1iK/yv2a869age4MVFlqkV/W1CWtI5puzYCqQ/8q1IgoZ6CIUJ/17ob+bY3ZOZqTozXqqeliOEhX1ZCdnV1cXKwnherVoLcTR0NV6SsPAc3SUU0ILVSo/D6f7+jRo6rIjuakUxRKhYOoUMVSpaCg89NVU5dfb8AA8vPz8/Pz6yL/VflXUA3MITBVb5OhJVLvHD16tKqqStFyTfgPhWIM2qCkRvmllMXFxdnZ2ajeenX568i/ysiRqUOwq5aIH7KeqyJAcwz15d+hZnqJ9M+h8usmFYDf71d6XnuN1IX/0GaiC6xXRI3yI9j7zs/PP336tNTQSP6vhNBmosriaOZEdPToUb/fr4SsO5rCGYRyCmD37t2TJk3yeDy7d+8GoHdyETJNpGpXT0FVcC1Z6z8MfRJa06Fp6trzyiuvrF27FtXr25G447dScwN6XrrOhUpS9xLl5OR069aNqjfIUPn1FELbjHoeWiIEq0Y9r3EQoP7kvuGECRMmTJhwVfnrwn9oiUjrU9deIlTXva5duyrLe034V7/S7aCelG6GHCLxk7Vr1/bp00d/2DD+daWqRaS6FApAnz591qxZo3/VGP5DKdWdBLT+u0N+GfQZALxeb7du3a4qf93516lDiP1B9RpxNBOVy/jx49955x2dpUby76hQ9a0ja6o+rIQ2qgbQtWtXr9er/7COaDpnwGCh09LS7rvvvhEjRowZM+a+++5LS0tDdT+2bt26qKgoRzqXLl1KSkoKTT8hIaGsrMzxcNmyZYcOHdKfHDlyZMmSJXVMMykpqbS01PEwMjJyw4YNjoebNm3auHGj4+HRo0eXL19el7yWLVt2+PBhx8OUlJRNmzaFphkq/8mTJ5999tk6yr98+fLQ7lWo/KWlpXPmzAlNc86cOaFp1ij/5MmTY2Ji6iJ/3fnfuHFjKM9HjhxZsWKF41AvL88AAB2KSURBVOGV5I+IiDhz5kxd5K87/wkJCZcuXQpN88iRI46HNcr/2WefDRw4sI7y15H/I0eOLF261PFaSUlJYmJiaJqJiYklJSWOh5GRkaGiNpL/FStWhHJSY9upUf4zZ8706tWrjvLXkf8r6V6NPNcov8fjCdXzRvL/2WefpaSkOF47fPhwHe0JgIiICO70oJ6Dg6ZzBqQNsuLi4gzDKCws3L9/v2EYM2bMcPxk7dq1zz77bF5entfrzc7O9nq9Xq9369atrVu3zsnJ8Xq9OTk5/CE3NzcsLCwtLc1bHV26dJk1a5b+5uzZszt16pSXl5ebm5uTk5Obm+v1erds2dK6dWv+nJubm52dzZmGh4enpqZyUvyt1+vt1avX/PnzHQ8HDRo0ePBg9ZCfJyUldenShR/q8oeHh/NnFonlTEhI4N8qUaOiooYMGeIoUWJiYqj8qampHTp0UGmqvGqUv3PnzrNnz9afhMrPnISHhytO1JutW7dOTU3Ny8tTcjrkV2++9tprr732Wl3krzv/gwcPZk70jBISEjp37uzIyCG/QocOHbZt2+bVVKIx/HuDurdlyxaVJmeq0uTntcg/f/78Xr16qWI2jP/ExESvplEJCQmse3qJtmzZ0qpVK28IWrVqFSp/RETEu+++q1JoDP8KnTt3VpyoRIYMGTJ48GCucV1+TlMR4vV609PTlZ5fVf468p+amqrao3qem5sbHh7OaV5JfqUAo0aNUnp+Tfj3er2DBg2KiopylEilqZ7n5eXp9kQv1xNPPJGbm4sbc5oIIePQuXPnGoYxbdq0Xr16GYYxf/58aHMvAA4cONCpU6devXpFaOjevfvTTz+t/uzZsyd/ePrpp3v06BFRHZ07d+7atav+ZteuXTt37uz4rSNNhaeffrp79+6haXbr1s3x8JlnnnnmmWccD7t27dqpUyfHwxrz6tSpk0POK6XZrVu3UPl79OhxJU5C5dfzqkX+WjgJ5bmOaV5J/rrz30iedflV7hGN5r8xPDvSrLv8jrwcOllfTmrU8zpy0jA9V6h7mg49r13+OubVmDSZlmuik7XouSLfkSY/D5VfGUwebVx1ztOBpt5aysLNmTPHMIwhQ4Zs377dMIyEhAQAUkp9cdWFCxcuXDQYN6Iz0Ne7eIExISHBMIzTp08fO3bMMIzZs2erN/U9LU0gmwsXLlx8+9AA+9mk00RqzeD8+fN9+vR55plnunTp0rdv3wsXLqh3KLhrircGuy7BhQsXLuoCImKbGbq7qS5o0pGBvk/LNM2cnJyTJ0+aponq23jVZJE7X+TChQsXdYFjL6xj/25d0HRrBvoHh7/iP3Xrr8YH7sjAhQsXLuoINa2CG3PNALX6AB2OUx6hgwPHAZxr4iociVzp4Iz6QCGHbq40HLtWnqxGpxhKgv5OLVnXS0VIw5UEqFcW14oTqo5a3tR3LtQ4dg79M/QIUn1lC/3TUTsOpapLjte2Y3QlJQ/9fNVEQk9mXTXrGiuuxnSUEaix9dE13W+iF6dGGVBT3aEOVVPfGZsryaY+h5ZaPazxqN2VfqWn3HTOQJevsLDQ5/Mpy56fn5+dnV1eXo7qe4qUlGfPns3JySkqKlKil5WVqT8bow3Kzvp8vsLCQrVKUV5enp2drWIqKHlUhB+/369PcwEoKiryer3nzp3jP23btiyrwYKxGAUFBWVlZYq3/Pz8rKwsLrjD/ysSCgsLKysrOfeCgoIzZ85kZ2fn5OQUFBRwmnqQorqIwZzorbSwsFBFoTFN8+TJk3l5eYoH0naO8Yf8/Pzc3FyuXwAVFRVer7fGeBX14oeCkTAAlJWVlZSUyGD0gqKiouzs7LNnz/KbjqBpAEpLS71e7+nTp1Whzp8/n5ubW1hYiJAjsvUVzFEXSseqqqouXrzomDLlCD/8wpkzZ7KysliGysrKixcvnjp1ireWl5aW6ofhGyYYAL/fz3qu2ldRUVF5eTnrmArFoytVWVlZcXGxEvLixYter1dxqyLk1N3Y6YG8FFHl5eW6oWcdo+rBQnQDd+HChaqqKlW0/Px8r9cbelisvhTp/VElA2daUlJSVFREGlDdV3FlqQOw5eXlXq/31KlT6oUGS6VoKS0tLS4uVhql1wWqmynOlO1YXl4eggeSz58/7/V6WccAmKapKG26BWSlfHPnzm3evPnChQuJqKys7J133nnsscd69uzZsWNHFS1ARSaxbXvp0qVhYWE9e/Zs1apVRkYGgBMnTjz00EOdO3dGo10us1xYWPjcc8/dfffdvD83JyfnySef7Nmz52OPPfbOO++Ul5frixlEdO7cuT59+nTp0uWZZ57p27fvxYsXd+7c2apVq4iIiLCwsCVLlqhlnMaQtnXr1jvvvHP06NEAbNtesmRJy5Yte/bsGR4enpGRoXSRP7DjmT9/fvPmzRcsWEBEu3btat68eZcuXfr379+7d+9Zs2axSHUJ8KfgWImybfsPf/hD8+bNv/zySwAXLlzo168f74zmjQBqp4CyuePGjXvsscciIiKefPLJkydPnjx5kndMt2/ffty4ccpD1Be6acjOzn7ooYc6derEzzMyMsLDw3v27BkWFrZ06VJVF8oGZWdnP/nkkxEREVy/JSUly5YtCwsL4+rbvn07Gtd0Wao5c+Y0b95cHVouKCj4r//6rx/+8Icc3kppFItkWZbS87CwsIMHD3744YfNmzd//vnn+/Xr9+KLL65fv55qGtbUCwUFBc8///xPfvITZQt0HVMsKdUCkJWV1bp1606dOvHDjIyM1q1bKz1XLQI1RXS4Ej+6L1QyvP766/yCaZpjx45t3rz5nj17UH0yQHE7f/78O++887333gNQUVGhdOypp57KyclpGDm6Rtm2rcvAPLRp06ZLly66MMpSlZWVjRs37tFHH9X1/Mknn+zVq1ebNm1GjRpVUlLSeDOVnZ2tZACwffv28PDwiIiIVq1acV2w/Kr1ZWdnd+zYsWfPnr/4xS/efvvt4uLi+Pj4u+++m3+i9LypnYGq+GXLlvXo0cMwDD6czecMuFINw+jdu7fjh5cuXTIMo3///gBatWr18MMP7969e8SIEd///vfbtWunp9ww2LadlZX19ttvh4eH33LLLQUFBQBeeeUVwzAArFy50jCML774wvGr+Ph4wzCOHz9+6tQpwzAWLFjQunXrsLAwAEOHDjUM4+LFi42ULTk5+fe//71hGJGRkQAKCwt1Hu6///7Qn7z//vvMLQcD2LFjh2EYzz777OTJk9evXw+t41CvbVrKkV+6dCk+Pv7xxx9XnMyePVvnIfTA/bZt29RzwzDGjBkzePBg5nbBggWGYezYsaNh/KiyZGZmsj60bduWv3rwwQcfeOABAJwXG18d//3f/80yLFq0yDCMdevW3XzzzRwLq2XLlj//+c8bJhKDm9by5ct1Pc/Ozn7zzTfDwsJuvvlmZYh1FBcXq/oNCwvr2LHju+++axjGsGHDpk6dqsxiY5xBVlbWW2+91apVq1tuuYVlSElJ6d27t2EYgwYNUpLr2LFjx4gRI+66666HHnqIn9x555133XUXgAEDBnAQAX6uRop1AQVXBFmGl19+Wel5SUlJbGxshw4dDMNgaxWKpUuXdu/e3TAMDsbAer5gwQIAhmH07du3HqSECMZ6PnPmTJYhMzMTQGZm5tChQ7///e8zD6FVkJGRoev56NGjx4wZwzp25MiR4cOHZ2VlNaZ7Ydt2Zmbmq6++qmQA8IMf/OAHP/gBgIEDBxqGEToqYgOCoB3btGnTiBEjPvnkEwAtW7bk30Kr9ybaTaTc++rVq7ny2GDt3LnTMIxFixbNmjWLSVy1alVkZOTAgQMHDBgQGRm5e/fuZs2avf7666tWrbr99tuffvrp3bt3Hz58+PHHH2/VqpVKvzHiHT9+PCMjY+zYsYZhsDOIjIxs1qzZgQMHnnrqKcMwtmzZ8qc//YnliYyMnDlzJjfU7du3s7lZvHjxhg0b7rnnnoEDB7Zo0eLtt9/2+/2hc3b1QnJy8uHDh2+99VY2UgUFBYZhvP7666tXr77zzjs7d+6ckZHB8gwcODAyMnLr1q1r1qz54osvFLeZmZmGYfz2t7+NiYn5zne+w/FSVITROpJG2jxGcXFxSkrK0qVLlTNITExkHtgFLliwYObMmZGRkVFRUZGRkaNGjcrOzn733Xfz8vKqqqoMw4iKisrMzFy4cCGCBw8b7AzUTM727dsPHDjw+OOPt27dmr9q06bN448/npmZ+eCDD9511127d++OioqKioriGlyyZElaWhrLMH/+fHYGt9xyCxvitm3bhoeHN0wknbTVq1cz/2ywjh07lp6ePnr0aGVAlyxZEhkZOWDAAJaN9Xz06NEff/zxHXfc0b17d3aWo0ePfu211+6///5t27ZR4xYzsrKyMjIy2EjxTGNKSsrhw4f/9V//leOAlZeXjxw5kpVqwIAB0dHRO3bsOHTo0BNPPKG4Xbly5aeffgqgb9++eqenvs6A9VBKyTI0a9ZMOYOUlJRly5Yp3di2bRtXHNdgamrq6tWruRPJ3Do6lA2+IVH5p+Li4uTkZJZh586dADIyMg4cONChQwdlc8aPH6+IGjlyZE5ODgfw8Pl8XGtvvPGGYRgvv/zyyJEjT5w40TCRdLCeP/HEE0qGDz/8cPXq1Qg65l27drE8bBBWrVo1cuTIZs2aHTp0qFOnToZhfP311z6fb9SoUQMHDrznnns42JGuUU00MtAnRnfv3u1wBm3btp07d+53vvOdN95446233jI0rF279p577vnZz36WmJjYtm1b1fsLDw9Xn6/JpiMmlBvJ4MGDb7755ldffZVbTnJy8r333qtE6tWr15IlS/hDbGwsO7M33njjgQceWL9+/a9//eunnnqqtLS08dNEZWVlqrdYVFR0xx13/OxnP0tKSmrTps2vfvUr7tUqzJ07F8FeEn8uLy8/cuQIt1LDMP7nf/4HIUv0V4U+b8BgI86NZN68eczDtGnT2ClyfBFG8+bNubcybty4p5566sknn8zKygJgmmanTp1+8YtfNHKaSJ/vCg8PVwbr0Ucfbd68ucfjeeGFF+66667k5GSdqKFDhwLw+/0swzvvvHPp0qU1a9a0a9cuIiLi3//93x977LGGiaTLhqCec10w+vfvf9NNN7EzYPepkJyc/JOf/ITrt23bto888khJSQlHRjt+/LgRjN9VL5tbIxw9+rKysptuukmNPu+44w4lUvv27fmdsLCwNm3aqBQOHTrUvn37li1b8hQcqi/R1wWOQNDl5eUOIx6qYw4937Nnj7IhVVVVcXFxHTt25KHYsGHDGsYMaUtQCIbM0TsrrVq1UjrWvn17Xc8rKioAjB8//umnn+7YsePJkyeHDx/O1Tps2LAf//jH+/fvb5hUSjb+EB4erndWDh482L59+7CwsE8++WTv3r06UW+99dZbb73Fdox7IXv37gWwefPm9evXP/DAA4MHD0Z149mk00ScK586XrZsGYLDK65UwzBefPHFqqqqwsLCoqKigoKCoqKis2fPGobRr18/AO3atfuP//gPTvCRRx55+OGH+XNjbK4iYtiwYTfddBP/+eKLLxqGAWDNmjWGYWzbtq2kpKSwsJAFKysrmz59umEY+/fv59mbuXPntmjRguVh/8HH6BrpoojIMIzhw4cDKCkpMYJD4EceeeTee+/1+/1FQRQWFvJi2tGjRw3D4EHApUuXdu3axcqtnIE+oV9HGVSPibF8+XLDMNhOzZgxg3nggcv06dPLysoKCwsvXrxYVFRUXFxcVlY2fvz4Nm3asCICyMrKevjhh19++WW14NxgcvQ5k4cffljpw913392iRQsAf/jDHwzDOHPmDLPEGlVRUZGdnd22bdvevXsrGbZs2bJ3797y8vKwsLB77723MYIhaLJZz/Vgk8OGDWO9AlBeXq5EKioqOnPmjKrf//zP/7zvvvvOnz+/b98+ACdOnGBucS12Og0ZMkTJgKCOvfrqq/wn6xILpqKx6p2wbdu2/ehHP/J4PDVGsa6jDFQ9OA0ApecM7pUfO3YMgM/nu3jxIktVVFTk8/kQ1HPm9tKlS5s3b87Kyjp37pxhGC+99FL9WblcBCUS67ke5fehhx5SUzS8mMw2gfX87bff1vX8hRde0G0IB2ZuMJSJe+ihh3h6HEBaWtqPfvSj6Oho1UVQ1ccG4aWXXtJl2LJly9atW7n71a5duzvvvFMVnD809dbSxYsXDxo0yDCMHj16xMfH5+bmPvHEE7/5zW8mT57crFmz0BDBlZWVzz77bHh4eExMzHe/+91x48bt379/0qRJt95666233jpp0iTFfoNx6tQpj8cTFhZmGMZf//rXlJSUJUuWNGvWbOrUqb169Wrfvn1ubq7jJ+np6ffdd9+YMWNGjBhx7733ZmZmejye22+/3ePxtGzZ8rnnnuOeQiPXDHiQ1LJlS4/Hk5eX98ILL7Rq1Yp5+Mtf/hL6k8WLF/O0Vffu3adPn37ixIlHHnmkR48eTBdzW99JZ7XcB6C8vHzmzJk8XRsVFbV48eL09PT7779/7Nixr7322k9/+tNQjec1g549e8bGxk6bNi0tLY2nF8aPHx8XFxcTExMaU7rugvG/+/bt83g8zZo1a9asmcfjOXjw4Lhx4+64444pU6a0aNHi+eefr6ysdPyWG8n48eNjY2NjYmLy8vKef/758PDw2NjY22+//c9//nPDRFKQUup1kZSUlJOT4/F4WrRowV220EDolZWVzz33HOv59773vejo6IyMjB/+8IcjRowYNWrUT3/60/T0dIe1qi/OnDmjy5CampqWlsY61qJFC4/HE1oXzO2tt9568803ezyeAwcOPPDAA//yL/8yffr02NjYGTNmqB2A9Zp41AfNycnJb775ptLzrKysxMRE1rFBgwYtXrw4NAVlQ1jPs7KyHn300eeffz42NrZZs2ah4aPrCFWEqqqq6dOnswyDBw/+6KOP9u/fzzp2yy23eDwedtI6uFPLeh4TE6NsiMfjuZINqa9se/fu1e3e/v37W7ZsedNNN8XFxU2bNm3GjBnsJnUoO8Z7JQ4cOPDcc8/9/Oc/93g83/ve95QNuT4LyOwMpk6dOn/+/NjY2JkzZwLIz8+PjY31eDy8yBm6Sdbv98+aNcvj8SxatAjA/v37J0yYkJiYmJSUFB0dvW/fvsZ0wIkoPz8/Ojo6Pj5+3rx50dHRHEx87dq1Ho8nLi7u5MmT6k19T9Tu3bunTJkyadKkXbt28QsLFy6cOHHirFmz+JqhRs4RJScnT548ed68eTNnzvR4PIWFhVLKWbNmTZgwgadH9RbI/y5atIi5jYuLi4uLA3Dq1KnY2Njo6Gh1V0kDuFIjg/Ly8hkzZsTGxs6bN2/y5MlcHXv27ImJiZkyZQovciqW+Ffnzp2bO3fu9OnTJ02aNGHChNTU1D179syZMycmJiY6OnrixIkNdgYIKtXevXs9Hs+cOXMSExM9Hs/XX38NrS6qqqqU7qm6S09PT0pKmjx5ssfjiY6OLigoEELExcV5PB5eS2iMzeUfLl68mKtv6tSpCQkJWVlZHo8nPj5+7ty5kydPTk5O1kViVFVVzZo1Kzo6mmUAsGPHjsmTJ0+ZMoUvgGrkHNGZM2eio6NnzpzJ1Zeamrp169ZJkybNnz8/Pj7e4/GcOnUK1fVKcZuUlMRGMCUlJSkpKSYmZuLEiTNnzmRnUN+duPrIIDk5mbOYNWvWxIkTs7KyZs2aFRcX9+67706dOpV1jLTdTUII1vN58+bFxcXxgOnUqVPTpk2Ljo7mu6caDFUR06dPnz59+vz586dMmfLBBx+wM0hISEhMTIyOjt67d69jxHz+/PnExMS4uDi+sCs5ORnA6tWrJ06cGBsbyzakkWZq37590dHRSUlJiYmJEyZM2L9/f0pKSkJCgsfj8Xg8sbGx3OlRNorpWr9+/cSJE6dNm8a7S8vKytiesJd1rGs26bWXoRoTenpLzVCHTlDgCoQ2kuWrPtR3a5F21EB/3/ETh+f4R0DtLVGXdDtecLCtTE99V7ZVwa+aBTSvL7Ubff9BuJLJdtSOPkNNV1jqdPykkQdE6lLp+qbMUD1HSIWq5vCP0yiVUd2Nu6M7UvcsVEZ1fFmtD9XFhtRdkitlV8fXdLPrgGMWVL9L+R8klW5wqPqK2pUSkdWvJr0OdyArY6T3Iim4VVndAa1Uv0bo51YaU/26fVTmNRRKGF5iUvbXUShFtwweCm+wBqhyEZF+MEQJqVhiAfTd9PwkdIO2TlrdlV6nSPXOFBt63XGO/FCXU52WUgLzm410lqG1g5puoNWvGlddDUftKENTL3JqZ4yqL0jqZaeggVMc6if7QguFa6FROmP8J1+57shOl9Nx7EsJoLa0q5frVZUOjVICqAoirYErZnS1V0+4aSh9a6RG6Szp++5UdupblaneBJTMCJnhaKRUepEdZzt0ldAtp+qzOoqgU6Tk5z+bOmqpQ9tCmy6Ch+IUy/q3js9oNMuo7uRJMyh6jqqpqLB6yivoCio1k43GHWR1NE6dQ4fq60wqV6rLrCs3atogVDs5FLQLCBpNxZJOhW4RpOYzUN09KOOo2G4YVO0otwTNE+gjOQStnq5USkjdrqF6y2mMbPxBVyr1UP0pgufOFLfMs6pKaP1c3SI3WCpVdgqxqqGarOy+klNpgmIbwQPt9WJMz1GXASFWT69NCroK3YQ59Lwxg1HS/A2qDyj1diS1I756G4Sm9o6iNV6jEGKmHOqqcmSxHWZK7wnpCsklVaQ19ZqBbuMo6NxqNPcOKlG94+Z4vzGC1VhnqhHqGTmMsqMzoiuKqoPGkKZT5BBDd5O6bxDVO+yO6hdab71e/Ch5HFIhaPF146vLFqp/jhcaTI5eX45OhqxpTKnTqF5D0E+g+hBK/aQxsjmE1GnUJddpCTUiSlQe39Tdi9cold7WdBeOkIqT1YfCoVpH1ZtJvWozlAqdN1Vwh1aTpvw6yXo6jWlxjtxVYaXW0dYZC2376rkazehfNVKjQs2Uzp4KCuKwnzWaKQb/RJ9NarppIlUqnaYrvdDEUtULuu46/tSfXMOC1E5UKKX6+6GNrZFiOFIITdBRfF28WorTGDgYuJJIV/2zRoEdjVC1K/1l3aY3TH5HWRxf6cI0IP36ikHVR341vlBLE65XjrXoZ43VcQ2bVe2CoSa9ulIrq/3Pf5DAtecYqtWO1/RaZjS1M3Dh4gaEDJmucZh+fSWGgrMlMjjrRVq//noXxYWLBsJ1Bi5cXF5HCe146nMjQlvs5W/VVzyN8w/tubtw8Q+F6wxcuKhhEK1DX4FA9ZG1WhlSrqJJ5HXh4trDdQYuXFRbADx48GCHDh26desWERHRv39/jrPveD83N7dDhw4qFqw7O+TiWwDXGbhwAWhbCTm0wPjx471er2EYo0aNApCenr5u3brNmzfzOc+ZM2dyvISNGzfyNr6zZ8+mpKRs2LBB3TTiwsU3C64zcOEC0DZHciRdDnFjBKPGxsfHjx07tkuXLn379i0pKeEbL5544okRI0ZUVFQcPny4Y8eO/fv379ev3+OPP37gwAGVrDtocPFNgesMXLiodhBv165dhmEsXLiQiDgkH4D58+ePHTv2l7/8pWEYBw8ePH36tGEYKq4iDxQ4lLwKNy21I9/XsWguXNQRrjNw4aJa+CkeGaxcuRKAYRgjRozgWyu2bdvGN5YcPXr04MGDPHqoqKg4f/58QkKCYRjz5s1LT0//9NNPT5w4QcEgIo0/e+jCRdPAdQYuXFQ7UsQ3lA0bNoxvxUlISIiLi2NnwJdV7Nu378SJEz/+8Y+HDx/erl270aNHr1u37rbbbnvvvfdWrFjRpk2bjRs3UsgRXxcubnC4zsCFC0AL55udnT1kyJDIyMi+fftOmzaNv50yZQpfvjhkyJDs7Gwi+uKLL6KiokaOHMm3ua1cuZIvHVy6dKnuAKjR19G4cNE0cJ2BCxfVIvOEfhX6vuO10HNqqDW+sQsXNyBcZ+DChTP4JUIC4aF6jBcV/NkRFE+Zfj3mpRumwsU3Aq4zcOHChQsXrjNw4cKFCxfA/wd7RPuL8WKbxQAAAABJRU5ErkJggg==" /></p> <p>We can&rsquo;t say whether or not the practice will become more widespread. But CNAME flux is yet another creative use of one of the few ubiquitous Internet protocols, and creative protocol use tends to cause headaches for security folks.</p> <p style="text-indent: 0.5in;" class="MsoNormal">&nbsp;</p>]]>
    </content>
</entry>

<entry>
    <title>Challenges in Network Monitoring above the Enterprise</title>
    <link rel="alternate" type="text/html" href="https://www.cert.org/blogs/certcc/2011/09/challenges_in_network_monitori.html" />
    <id>tag:www.cert.org,2011:/blogs/certcc//1.78</id>

    <published>2011-09-23T14:06:00Z</published>
    <updated>2011-09-23T14:06:08Z</updated>

    <summary><![CDATA[Recently George Jones, Jonathan Spring, and I attended USENIX Security '11. We hosted an evening Birds of a Feather (BoF) session where we asked a question of some significance to our CERT&reg; Network Situational Awareness (NetSA) group: Is Large-Scale Network...]]></summary>
    <author>
        <name>Andrew Kompanek</name>
        
    </author>
    
        <category term="Analysis" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="https://www.cert.org/blogs/certcc/">
        <![CDATA[<p>Recently George Jones, Jonathan Spring, and I attended <a href="http://www.usenix.org/events/sec11/">USENIX Security '11</a>. We hosted an evening Birds of a Feather (BoF) session where we asked a question of some significance to our <a href="http://www.cert.org/netsa/">CERT<sup>&reg;</sup> Network Situational Awareness (NetSA)</a> group:</p> <p style="margin-left: 40px;"><em><strong>Is Large-Scale Network Security Monitoring Still Worth Effort?</strong></em></p>]]>
        <![CDATA[<p>One of the foundational principles behind most organizations' network security practices is still &quot;defense in depth,&quot; which is implemented using a variety of security controls and monitoring at different locations in an organization's networks and systems. As part of a defense-in-depth strategy, it has become commonplace for organizations to build enterprise security operations centers (SOCs) that rely in part on monitoring the extremely large volumes of network traffic at the perimeter of their networks. There has been a recent trend toward increased investment in (and reliance on) network monitoring &quot;above the enterprise&quot; in order to simplify sensor deployments, decrease cost, and more easily centralize operations. At the same time, the idea of a well-defined defensible perimeter is being challenged by <a href="http://csrc.nist.gov/publications/drafts/800-145/Draft-SP-800-145_cloud-definition.pdf">cloud computing</a>, the<a href="http://www.sei.cmu.edu/library/abstracts/news-at-sei/securitymatters200702.cfm"> insider threat</a>, the so-called <a href="http://taosecurity.blogspot.com/2010/01/what-is-apt-and-what-does-it-want.html">advanced persistent threat</a> problem, and the &nbsp;prevalence&nbsp;of socially-engineered application-level attacks over network-based attacks. For an opinion piece about how things have changed, read <a href="http://www.usenix.org/publications/login/2011-08/openpdfs/musings11-08.pdf">Rik Farrow's article</a> in the USENIX magazine ;<em>login:</em>.</p> <p>The purpose of the BoF was to revisit some of the assumptions behind approaches to large-scale network monitoring at this level. We also wanted to lead a discussion about the challenges we face in monitoring, especially in light of these changes. We considered the following questions.</p> <p><em><strong>What problems do we confront when monitoring at the supra-enterprise level?</strong></em></p> <p>We discussed a number of challenges, many of which are the result of networks not being architected with &quot;monitorability&quot; as a priority. We also discussed the following factors:</p> <ul>     <li>Bandwidth</li>     <li>Encryption</li>     <li>Everything in HTTP[S]</li>     <li>NAT, proxies, tunneling</li>     <li>Carrier-grade NAT/IPv4 islands</li>     <li>Lack of knowledge of policy and assets</li>     <li>Legal restrictions</li> </ul> <p><em><strong>What data can we expect to remain unencrypted?</strong></em></p> <p>We can expect that as more and more traffic is encrypted, we'll still be able to see the following data that must remain unencrypted in order for an IP network to function properly:</p> <ul>     <li>IP headers (traffic summaries) - Packets have to be routed by the public infrastructure, which means that IP headers will remain unencrypted for the foreseeable future. This will enable various traffic analysis techniques. However, it's worth noting that tunnels (including IPv6) and anonymizing networks like Tor will affect what we see.</li>     <li>DNS queries and responses - While DNSSEC deployment will mean that DNS responses will be digitally signed, we can expect that the content will remain unencrypted. This will enable analysis that will support the identification of new malicious domains and the detection of the use of DNS by malware.</li>     <li>BGP and related routing protocols - Just as we can expect IP headers to remain unencrypted, we can expect BGP to remain in the clear.</li> </ul> <p>In addition, there is other &quot;global metadata&quot; that can be combined with monitoring data and used for analysis. This metadata includes registration data (i.e., &quot;whois&quot; data), gTLD zone files, public certificates for certificate authorities, website reputation data, and RBL lists.</p> <p><em><strong>What can you still analyze at the supra-enterprise level?</strong></em></p> <p>Using traffic analysis techniques, we can see phenomena that appear as changes in traffic patterns. We identify these variations by developing indicators for the following:</p> <ul>     <li>Worms, DDoS, floods, large-scale scans</li>     <li>Trends</li>     <li>The scale and scope of global attacks (e.g., all banks, etc.)</li>     <li>Detection based on locality (e.g., identifying traffic from a particular country)</li> </ul> <p>A literature search on intrusion detection using traffic analysis will identify a variety of papers. For example, there are a number of papers in&nbsp;<a href="http://www.raid-symposium.org/">RAID</a> proceedings. Some examples can also be found in the FloCon<sup>&reg;</sup> proceedings, available at the <a href="http://www.cert.org/flocon">CERT FloCon site</a>.</p> <p>Using a combination of traffic analysis, DNS, and (selective) content capture,  we can develop heuristics that can function as indicators for the following:</p> <ul>     <li>Spear phishing, <a href="http://www.usenix.org/events/sec11/tech/full_papers/Stringhini.pdf">spammers </a>and <a href="http://www.usenix.org/events/sec11/tech/full_papers/Jacob.pdf">botnets</a></li>     <li>Malicious domains with DNS analysis (We have published a <a href="http://www.cert.org/blogs/certcc/2010/08/malicious_domain_names_the_tld.html">blog entry</a> about this topic, and the USENIX Security proceedings also include a related <a href="http://www.usenix.org/events/sec11/tech/full_papers/Antonakakis.pdf">paper</a>.)</li> </ul> <p>In general, analysis based on a broad view of network traffic remains invaluable as part of incident analysis. It provides a way to understand the traffic associated with a particular incident and to identify activity occurring elsewhere in the network that matches a particular pattern.</p> <p>A broad view of DNS and our network's traffic also enables a whole class of analysis we might call &quot;indicator expansion&quot;-various ways in which we can take a single indicator of malicious activity, like a single IP on a watch list, and find additional IPs also associated with the malicious activity of interest. This expansion can be based on a behavioral detection algorithm; for example, heuristics for enumerating the IPs of all the bots in a botnet. We can also often expand our watch list by leveraging DNS or other global metadata to associate an IP with a DNS name or a real-world entity, and to then map that entity back to additional IP addresses that we can add to our watch list.</p> <p><em><strong>How are attacks changing?</strong></em></p> <p>One thing we can say for sure is that attacks are moving up the application stack. In addition to targeting ports, servers, and hosts, they now target applications like web browsers and PDF viewers, as well as users themselves. The goal is to be able to monitor the users and the assets they control. It's not entirely clear what we can rely on being visible at this level in the future.</p> <p>There are several big questions that need to be answered in order to formulate a strategy for supra-enterprise monitoring:</p> <ul>     <li>What kind of selective content capture should we doing?</li>     <li>At what point do we need a different monitoring approach (on hosts, systems, etc.)?</li>     <li>How does the picture change at lower levels, (e.g. enterprise and below)?</li> </ul> <p><em><strong>What are some monitoring techniques that can still work?</strong></em></p> <p>During the BoF session, we discussed the following techniques:</p> <ul>     <li>Re-routing suspicious traffic to a place it can be monitored. This could include selective full-packet capture.</li>     <li>Leveraging routers and switches to generate traffic summaries (NetFlow/CFlowD, SFLow, etc.)</li>     <li>Intelligent sampling</li> </ul> <p><strong><em> What about &quot;the cloud?&quot;</em></strong></p> <ul>     <li>We discussed how &quot;the cloud&quot; is a problem because we can no longer rely on being able to distinguish individual virtual host endpoints within a cloud infrastructure. This could be solved by ensuring that NAT does not happen before the monitoring point. One thought: assign IPv6 addresses to everything, no more NAT.</li>     <li>Will Google, Amazon, and other vendors invest in the infrastructure required to do monitoring? Should this come standard with hosting services?</li>     <li>Will cloud providers provide flow or monitoring data? Should this be standard practice? What about other monitoring options for your servers?</li><li>Monitoring requirements could be incorporated into providers' terms of services agreements.</li>     <li>What about cloud-to-cloud attacks? Could attackers provision E2C machines to attack users on that platform?</li> </ul> <p>See <a href="http://www.cert.org/archive/pdf/jspringIEEESPpt1.pdf">part one</a> and <a href="http://www.cert.org/archive/pdf/jspringIEEESPpt2.pdf">part two</a> of the article &quot;Monitoring Cloud Computing by Layer,&quot; written by one of our CERT NetSA colleagues, for a list what's needed to monitor &quot;the cloud.&quot;</p> <p><em><strong>What about mobile?</strong></em></p> <p>We finished the session up with a brief discussion of mobile. We have the same endpoint issue as the cloud in a world of 3G devices. In the case of 4G, we can expect that it will be common to assign IPv6 addresses to the mobile device endpoints.</p> <p><strong>Final Thought<br /></strong></p> <p>At the end of the session, one of the participants suggested ironically that as data moves to &quot;the cloud&quot; and users move to mobile devices using third-party networks, a larger percentage of the traffic that remains on corporate networks might actually be illegitimate, malicious, and otherwise unrelated to business purposes.</p> <p><strong>Continuing the discussion...</strong></p> <p>We hope to continue this discussion about exploring the ways that supra-enterprise network monitoring is changing, what techniques can be effective, and where new approaches are needed.</p> <p>Please join us in January for <a href="http://cert.org/flocon">FloCon 2012</a> Austin, Texas. We will be moderating a panel discussion. In the meantime, we'd like to continue the discussion on the <a href="http://www.cert.org/flocommunity/">FloCommunity mailing list</a>.</p>]]>
    </content>
</entry>

<entry>
    <title>Signed Java and Cisco AnyConnect</title>
    <link rel="alternate" type="text/html" href="https://www.cert.org/blogs/certcc/2011/06/signed_java_and_cisco_anyconne.html" />
    <id>tag:www.cert.org,2011:/blogs/certcc//1.73</id>

    <published>2011-06-09T17:35:13Z</published>
    <updated>2011-06-09T17:36:24Z</updated>

    <summary>A few years ago, I published a blog entry called Signed Java Applet Security: Worse than ActiveX? In that entry, I explained the problems that arise when a vulnerability is discovered in a signed Java applet. Let&apos;s see how the...</summary>
    <author>
        <name>Will Dormann</name>
        
    </author>
    
        <category term="Analysis" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Web" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="https://www.cert.org/blogs/certcc/">
        <![CDATA[<p>A few years ago, I published a blog entry called <a href="http://www.cert.org/blogs/certcc/2008/06/signed_java_security_worse_tha.html">Signed Java Applet Security: Worse than ActiveX?</a> In that entry, I explained the problems that arise when a vulnerability is discovered in a signed Java applet. Let's see how the Cisco AnyConnect vulnerability is affected.</p>]]>
        <![CDATA[<p><a href="http://www.kb.cert.org/vuls/id/490097">US-CERT Vulnerability Note VU#490097</a> describes a vulnerability in the Cisco AnyConnect ActiveX and Java clients that allows an attacker to download and execute arbitrary code. The vulnerability note indicates that <a href="http://www.cisco.com/en/US/products/products_security_advisory09186a0080b80123.shtml">Cisco has addressed this vulnerability,</a> but what does that actually mean?</p> <p>To exploit the ActiveX version of AnyConnect, an attacker could create a web page that hosts and uses the vulnerable version of the ActiveX control. Internet Explorer ActiveX users can &quot;immunize&quot; themselves against the exploit by obtaining and installing the fixed version of the AnyConnect ActiveX. Once an updated version of an ActiveX control has been installed, Internet Explorer is designed to prevent the control from being downgraded.</p> <p>While Internet Explorer uses the ActiveX version of AnyConnect, other browsers use the Java version. To exploit the Java version of AnyConnect, an attacker could create a web page that hosts and uses the vulnerable version of the signed Java archive. Java will use whichever Java applet is provided by the web server. Even if a user has installed the fixed version of the Java applet, that does not prevent exploitation of the vulnerable one. In other words, simply fixing the Java applet does nothing to protect end users from being exploited.</p> <p>For the most part, this situation is due to a limitation of the Java runtime and how it handles signed Java applets. However, there has been one significant change since my original blog post on signed Java applet security. As of JRE 6u14, Java supports a <a href="http://www.oracle.com/technetwork/java/javase/6u14-137039.html#blacklist-jar-6u14">blacklist feature</a>. This feature can be used to disable known-vulnerable signed Java applets based on their Manifest hash. The Java blacklist feature is a step toward the protection that <a href="http://support.microsoft.com/kb/240797">ActiveX kill bits</a> give us. One problem with Java blacklists is that Oracle does not currently provide blacklist entries for third-party Java applets. Basically, Oracle is not providing an updated JRE version that disables the vulnerable Cisco AnyConnect Java applet versions.</p> <p>For additional information about how to protect against the Cisco AnyConnect vulnerability, including setting Java blacklist entries for the vulnerable versions, see <a href="http://www.kb.cert.org/vuls/id/490097">US-CERT Vulnerability Note VU#490097</a>.</p> <p>&nbsp;</p>]]>
    </content>
</entry>

<entry>
    <title>Effectiveness of Microsoft Office File Validation</title>
    <link rel="alternate" type="text/html" href="https://www.cert.org/blogs/certcc/2011/05/effectiveness_of_microsoft_off.html" />
    <id>tag:www.cert.org,2011:/blogs/certcc//1.72</id>

    <published>2011-05-19T18:26:00Z</published>
    <updated>2011-05-19T18:26:22Z</updated>

    <summary>Microsoft recently released a component for Office called Office File Validation that is supposed to help protect against attacks using malformed files. Because I recently performed file fuzzing tests on Microsoft Office, I decided to test the effectiveness of Office...</summary>
    <author>
        <name>Will Dormann</name>
        
    </author>
    
        <category term="Analysis" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Discovery" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="https://www.cert.org/blogs/certcc/">
        <![CDATA[<p>Microsoft recently released a component for Office called Office File Validation that is supposed to help protect against attacks using malformed files. Because I recently performed file fuzzing tests on Microsoft Office, I decided to test the effectiveness of Office File Validation.</p>]]>
        <![CDATA[<p><strong>Background</strong></p> <p>Before a file is opened, Office File Validation analyzes the file's structure to determine if it is well-formed. Office will warn the user if a file has failed validation before the file can be opened. To increase protection, Office File Validation can be configured to automatically block malformed files from being opened rather than giving the user a choice. Until recently, this feature was only available with Microsoft Office 2010. Office File Validation is now available as an <a href="http://support.microsoft.com/kb/2501584">optional add-on</a> for Microsoft Office 2003 and 2007.</p> <p>Microsoft <a href="http://technet.microsoft.com/en-us/library/gg985445%28office.12%29.aspx">states</a>, &quot;Office File Validation helps detect and prevent a kind of exploit known as a file format attack or file fuzzing attack.&quot; I was able to test the accuracy of this claim by using the crashing test cases from the brief Office fuzzing campaign that I performed.</p> <p><strong>The Test</strong></p> <p>To test Office File Validation, I used a set of 100 DOC files that cause Microsoft Word 2003 to crash in unique ways. The test environment is fully patched as of May 19, 2011. Rather than using the raw fuzzed files from our fuzzing framework, I used the minimized test cases. After determining that a file causes an application to crash, the framework will attempt to generate a file that is minimally different from the original seed file but that still causes the same crash. In other words, the files are as well-formed as possible, yet they still cause Word to crash.</p> <p><strong>The Results</strong></p> <p><img height="288" width="480" alt="filevalidation.png" src="/blogs/certcc/filevalidation.png" class="mt-image-none" style="" /></p> <p>When a crash is encountered, !exploitable assigns a crash Major and Minor value to help determine uniqueness. By using both the Major and Minor hash values, the original set of 100 crashes is reduced to 55. In this particular set of test cases, this corresponds to a 45% reduction in attack surface. If you consider just the crash Major values, the number of cases that cause unique crashes goes from 38 to 18, or a 53% reduction in attack surface.</p> <p><strong>Conclusion</strong></p> <p>The Microsoft Office File Validation add-on does help prevent file fuzzing attacks. Although the protection it provides is far from comprehensive, the protection is significant enough to warrant its use. I recommend that Office 2003 and Office 2007 users install Office File Validation to help minimize the attack surface of the Microsoft Office products. It is important to realize, however, that because Microsoft Office File Validation does not block all malformed files, additional runtime exploit mitigations should be used to help keep you safe. The blog entry about <a href="http://www.cert.org/blogs/certcc/2011/04/office_shootout_microsoft_offi.html">fuzzing Microsoft Office</a> outlines these mitigations. Incidentally, Microsoft has released an <a href="http://blogs.technet.com/b/srd/archive/2011/05/18/new-version-of-emet-is-now-available.aspx">updated version of EMET</a>, which provides additional exploit mitigation techniques and improves support for enterprise deployments. I strongly encourage users and administrators to evaluate its use.</p>]]>
    </content>
</entry>

<entry>
    <title>A Security Comparison: Microsoft Office vs. Oracle Openoffice</title>
    <link rel="alternate" type="text/html" href="https://www.cert.org/blogs/certcc/2011/04/office_shootout_microsoft_offi.html" />
    <id>tag:www.cert.org,2011:/blogs/certcc//1.70</id>

    <published>2011-04-13T18:52:00Z</published>
    <updated>2011-04-14T12:47:33Z</updated>

    <summary>Recently, Dan Kaminsky published a blog entry that compared the fuzzing resiliency of Microsoft Office and Oracle OpenOffice. This blog entry contains the results from a similar test that I performed in November 2010. Also included are some other aspects...</summary>
    <author>
        <name>Will Dormann</name>
        
    </author>
    
        <category term="Analysis" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Discovery" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="https://www.cert.org/blogs/certcc/">
        <![CDATA[<p>Recently, Dan Kaminsky published a <a href="http://dankaminsky.com/2011/03/11/fuzzmark/">blog entry</a> that compared the fuzzing resiliency of Microsoft Office and Oracle OpenOffice. This blog entry contains the results from a similar test that I performed in November 2010. Also included are some other aspects of the Office suites that can affect the software's security.</p>]]>
        <![CDATA[<p><strong>Background</strong></p> <p>Fuzz testing is a dynamic software testing technique that can be used to find bugs that result in the crashing of an application. Every bug that results in a crash has the potential of being a vulnerability. Depending on the specific circumstances of a crash, these bugs may also result in vulnerabilities that allow an attacker to execute arbitrary code. Fuzz testing can be used as one measure of the number of vulnerabilities that an application may contain.</p> <p><strong>The Test</strong></p> <p>I used a Python-based mutational fuzzing framework for Microsoft Windows. The fuzzer takes a starting, or &quot;seed,&quot; file, mutates it, and opens it using the target application while monitoring that application for a crash. Microsoft's <a href="http://msecdbg.codeplex.com/">!exploitable Crash Analyzer</a> debugger extension analyzes any crashes and assigns them each a hash identifier. The fuzzing framework uses the hash that was generated to determine if a crash is unique. Note that !exploitable may assign different hashes to the same underlying software defect. I configured the fuzzing framework to use a set of 19 different DOC files. The fuzzer used a random byte mutation strategy, which set the value of a range of bytes to a random value. The range used for this test was to mutate 0.001% to 1% of the seed file for each iteration. Each seed file was mutated in 10,000 different ways, resulting in a 190,000-iteration fuzzing campaign for each target application. I used the same set of 190,000 mutated files to test each Office suite.</p> <p><strong>The Targets</strong></p> <p>I tested currently supported Microsoft Office products:</p> <ul>     <li>Microsoft Office XP Professional (released March 5, 2001)</li>     <li>Microsoft Office 2003 Professional (released November 17, 2003)</li>     <li>Microsoft Office 2007 Professional (released January 30, 2007)</li>     <li>Microsoft Office 2010 Professional (File validation disabled)</li>     <li>Microsoft Office 2010 Professional (released June 15, 2010)</li> </ul> <p>All Microsoft Office products were fully patched with updates as of November 2010.</p> <p>I tested Microsoft Office 2010 with file validation both enabled and disabled. The default configuration for Office 2010 has a feature called &quot;Gatekeeper,&quot; which performs some preliminary validation of input files before opening them. If a file fails the validation, the user receives a warning but can continue to open the file. The standard fuzz testing run for Office 2010 indicates files that would crash the application without any additional user interaction. The &quot;Office 2010 with File Validation disabled&quot; fuzz testing run indicates files that would crash the application if the user proceeds to open the file despite the warning.</p> <p>I also tested the following versions Oracle OpenOffice:</p> <ul>     <li>OpenOffice 3.2.1 (released June 4, 2010)</li>     <li>OpenOffice 3.3.0 RC7 (released November 26, 2010)</li> </ul> <p>Because the fuzzing campaign focused on DOC file parsing, I used Microsoft Word in the Microsoft Office suite and OpenOffice Writer in the Oracle OpenOffice suite.</p> <p><strong>The Results</strong></p> <p><img alt="officefuzz-majorminor.png" src="/blogs/certcc/officefuzz-majorminor.png" class="mt-image-none" style="" /></p> <p>This graph shows the results from all of the products. As indicated by the first five columns, there is a clear decrease in the number of unique crashes with the Microsoft Office products. Office XP has the most unique crashes of any of the Office suites. However, there is not a one-to-one mapping of unique crash hashes to software bugs. More specifically, the !exploitable extension produces a Major hash and a Minor hash. Unique Major hashes are more likely to be unique bugs, while unique Minor hashes may be variations of the same bug.</p> <p>Here is the same data, but only focusing on the crash Major value:</p> <p><img style="" class="mt-image-none" src="/blogs/certcc/officefuzz-major.png" alt="officefuzz-major.png" /></p> <p>By looking only at the crash Major value, the Office XP bar is less of an outlier. An investigation of the crash hashes revealed that a large number of the unique crashes for Office XP contained the same Major value but a different Minor. Those results suggest that there is a good chance that they are all the same underlying bug. To narrow the scope of the data even further, let's look at only crashes that are reported to be either EXPLOITABLE or PROBABLY_EXPLOITABLE by the Microsoft !exploitable extension:</p> <p><img style="" class="mt-image-none" src="/blogs/certcc/officefuzz-expmajor.png" alt="officefuzz-expmajor.png" /></p> <p>With this particular fuzzing campaign, Oracle OpenOffice produced more unique crash Major values that are tagged as EXPLOITABLE or PROBABLY_EXPLOITABLE.</p> <p>While you can determine some trends with these graphs, it's important to realize that every Office suite contains bugs that can easily be discovered with simple fuzzing techniques. Because software vendors will never eliminate 100% of the bugs in their software, it is important to consider the features that can help prevent an attacker from exploiting the bugs.</p> <p><strong>Mitigations</strong></p> <p>Eliminating software defects should be a priority for software vendors, but software can never be 100% defect-free. Therefore, it is also important that software vendors take advantage of runtime exploit mitigations available in the operating system. Runtime exploit mitigations make it more difficult for an attacker to execute code when exploiting a vulnerability. For example, if runtime exploit mitigations are in place when a user opens a malicious Office document, they may cause the application to crash instead of allowing malicious code to be executed. The following are some runtime exploit mitigations:</p> <ul>     <li><strong>ASLR</strong> (address space layout randomization) - This feature prevents libraries from loading at predictable locations in order to mitigate exploits that rely on return-to-library or &quot;return-oriented programming&quot; techniques.</li>     <li><strong>DEP</strong> (data execution prevention) - This feature prevents execution of code that resides in memory pages that aren't marked as executable. To be truly effective, DEP must be combined with ASLR because there are several strategies for bypassing DEP that leverage predictable locations of libraries.</li>     <li><strong>Preliminary File Validation</strong> - This feature checks that a file conforms to an application's expectations. Software bugs are often triggered by malformed data. If a malformed file fails validation, then the target application may not open the file.</li> </ul> <p>Further information about DEP and ASLR can be found in the <a href="http://blogs.technet.com/b/srd/archive/2010/12/08/on-the-effectiveness-of-dep-and-aslr.aspx">Microsoft Security Research &amp; Defense Blog</a>.</p> <p>We tested which mitigations the Office suites use. In the table below, if there is a &quot;Y&quot; in the Permanent DEP column, the application uses <a href="http://msdn.microsoft.com/en-us/library/bb736299%28v=vs.85%29.aspx">SetProcessDEPPolicy</a> to enable DEP for the life of the process. The ASLR column indicates the percentage of libraries in the application's directory that are linked with the /DYNAMICBASE flag, which indicates compatibility with ASLR. Any library that is not linked with /DYNAMICBASE can potentially be used to bypass DEP. There are two caveats for this column:</p> <ol>     <li>Although a library exists in the application's install directory, the application does not necessarily use the library.</li>     <li>An application may install and load a library from a location outside of the application's install directory.</li> </ol> <p>The percentages reported for ASLR can be used as a rough approximation of the level of ASLR compliance. Finally, the Preliminary File Validation column indicates whether the application performs validation of files before opening them for full processing.</p> <p>In the table, the colors represent how well the product incorporates the mitigations. Green indicates the ideal, yellow indicates some conformance, and red indicates little or no conformance.</p> <table cellspacing="1" cellpadding="1" border="1" width="90%">     <thead>         <tr bgcolor="#66ccff">             <th scope="col">Mitigations</th>             <th scope="col">Permanent DEP</th>             <th scope="col">ASLR</th>             <th scope="col">Preliminary File Validation</th>         </tr>     </thead>     <tbody>         <tr>             <th scope="row"><small>Office XP</small></th>             <td bgcolor="#ffcccc" style="text-align: center;">N</td>             <td bgcolor="#ffcccc" style="text-align: right;">0%</td>             <td bgcolor="#ffcccc" style="text-align: center;">N</td>         </tr>         <tr>             <th scope="row"><small>Office 2003</small></th>             <td bgcolor="#ffcccc" style="text-align: center;">N</td>             <td bgcolor="#ffcccc" style="text-align: right;">73%</td>             <td bgcolor="#ffcccc" style="text-align: center;">N</td>         </tr>         <tr>             <th scope="row"><small>Office 2007</small></th>             <td bgcolor="#ffcccc" style="text-align: center;">N</td>             <td bgcolor="#ffffcc" style="text-align: right;">94%</td>             <td bgcolor="#ffcccc" style="text-align: center;">N</td>         </tr>         <tr>             <th scope="row"><small>Office 2010 (File Validation Disabled)</small></th>             <td bgcolor="#ccffcc" style="text-align: center;">Y</td>             <td bgcolor="#ffffcc" style="text-align: right;">95%</td>             <td bgcolor="#ffcccc" style="text-align: center;">N</td>         </tr>         <tr>             <th scope="row"><small>Office 2010</small></th>             <td bgcolor="#ccffcc" style="text-align: center;">Y</td>             <td bgcolor="#ffffcc" style="text-align: right;">95%</td>             <td bgcolor="#ccffcc" style="text-align: center;">Y</td>         </tr>         <tr>             <th scope="row"><small>OpenOffice 3.2.1</small></th>             <td bgcolor="#ffcccc" style="text-align: center;">N</td>             <td bgcolor="#ffcccc" style="text-align: right;">1%</td>             <td bgcolor="#ffcccc" style="text-align: center;">N</td>         </tr>         <tr>             <th scope="row"><small>OpenOffice 3.3.0 RC7</small></th>             <td bgcolor="#ccffcc" style="text-align: center;">Y</td>             <td bgcolor="#ffffcc" style="text-align: right;">84%</td>             <td bgcolor="#ffcccc" style="text-align: center;">N</td>         </tr>     </tbody> </table> <p><strong>Mandatory Mitigations</strong></p> <p>The information in the previous table indicates that none of the Office suites fully employ all of the runtime exploit mitigations available in Windows. Microsoft has provided a tool called the <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c6f0a6ee-05ac-4eb6-acd0-362559fd2f04&amp;pf=true">Enhanced Mitigation Experience Toolkit</a> (EMET), which can be used to force an application to use various runtime exploit mitigations. An example of how to use EMET to mitigate an Adobe Reader vulnerability was provided in the Microsoft <a href="http://blogs.technet.com/b/srd/archive/2010/09/10/use-emet-2-0-to-block-the-adobe-0-day-exploit.aspx">SRD Blog</a>. A similar method can protect the various components of the software suites identified in this document. The full <a href="http://blogs.technet.com/cfs-file.ashx/__key/CommunityServer-Components-PostAttachments/00-03-35-03-78/Users-Guide.pdf">user guide for EMET</a> is available in PDF form.</p> <p>EMET can be used to enable DEP and ASLR on a system-wide or per-application basis. Note that Microsoft Windows Vista or later is required to support ASLR.</p> <p><strong>Software Updates</strong></p> <p>The final aspect of the Office suites that I investigated was how the applications received updates. Unlike robustness to fuzzing, the method for receiving updates is not a direct indicator of code quality. However, the mechanism through which an application uses to receive updates can affect the security of the system that runs the application.</p> <p>In the following table, green indicates the ideal answers.</p> <table cellspacing="1" cellpadding="1" border="1" width="90%">     <thead>         <tr bgcolor="#66ccff">             <th scope="col">Feature</th>             <th scope="col">Microsoft Office</th>             <th scope="col">Oracle OpenOffice</th>         </tr>     </thead>     <tbody>         <tr>             <th scope="row"><small>Update Check</small></th>             <td bgcolor="#ccffcc" style="text-align: center;">SSL</td>             <td bgcolor="#ffcccc" style="text-align: center;">HTTP</td>         </tr>         <tr>             <th scope="row"><small>Signed Download?</small></th>             <td bgcolor="#ccffcc" style="text-align: center;">Y</td>             <td bgcolor="#ffcccc" style="text-align: center;">N</td>         </tr>         <tr>             <th scope="row"><small>Admin Privileges Required?</small></th>             <td bgcolor="#ccffcc" style="text-align: center;">N</td>             <td bgcolor="#ffcccc" style="text-align: center;">Y</td>         </tr>         <tr>             <th scope="row"><small>User Interaction Required?</small></th>             <td bgcolor="#ccffcc" style="text-align: center;">N</td>             <td bgcolor="#ffcccc" style="text-align: center;">Y</td>         </tr>     </tbody> </table> <p>Two important aspects of checking for software updates:</p> <ol>     <li>Does the check occur over SSL or another secured channel?</li>     <li>Does the software validate the signature of the downloaded software?</li> </ol> <p>If the software fails to perform those two aspects, then it may be a security risk. Oracle OpenOffice does not use a secured channel to check for updates, and the software that is downloaded is not digitally signed. Therefore, OpenOffice is vulnerable to the <a href="http://blog.infobytesec.com/2010/10/evilgrade-20-update-explotation.html">EvilGrade</a> attack. In fact, this vulnerability has been known <a href="http://blogs.sun.com/malte/entry/evilgrade_and_openoffice_org">since 2008</a>.</p> <p><strong>Conclusion</strong></p> <p>All of the Office suites that I tested were vulnerable to a number of crashes due to malformed input. The fuzzing campaign focused solely on DOC file parsing. However, each Office suite supports many types of data. For example, Microsoft Office supports more than 100 different file types. The numbers shown in the graphs are a small subset of the total number of unique crashes that can easily be discovered through random mutation fuzzing.</p> <p>Of the Microsoft Office suites, Office XP has the most unique crashes. It is important to note that the extended support end date for Office XP is July 12, 2011. After this point, Microsoft will not provide security updates for the product. Office 2010 has the fewest number of unique crashes, uses permanent DEP, and has the highest number of libraries that are compatible with ASLR. Office 2010 file validation, which is enabled by default, provides additional protection against malformed input.</p> <p>Of the Oracle OpenOffice products, the RC7 prerelease for OpenOffice 3.3.0 shows a small decrease in unique crashes when compared with the release version 3.2.1.</p> <p>We are currently coordinating the results of the fuzz tests and other security analysis with the affected vendors.</p>]]>
    </content>
</entry>

<entry>
    <title>Announcing the CERT Basic Fuzzing Framework 2.0</title>
    <link rel="alternate" type="text/html" href="https://www.cert.org/blogs/certcc/2011/02/cert_basic_fuzzing_framework_b.html" />
    <id>tag:www.cert.org,2011:/blogs/certcc//1.66</id>

    <published>2011-02-28T20:53:00Z</published>
    <updated>2011-03-23T18:36:12Z</updated>

    <summary>Version 2.0 of the CERT Basic Fuzzing Framework (BFF) made its debut on Valentine&apos;s Day at the 2011 CERT Vendor Meeting in San Francisco. This new edition has a lot of cool features that we&apos;ll be describing in more detail...</summary>
    <author>
        <name>Allen Householder</name>
        
    </author>
    
        <category term="Discovery" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="https://www.cert.org/blogs/certcc/">
        <![CDATA[<p>Version 2.0 of the CERT Basic Fuzzing Framework (BFF) made its debut on Valentine's Day at the 2011 CERT Vendor Meeting in San Francisco. This new edition has a lot of cool features that we'll be describing in more detail in future posts, but we wanted to let you know that it's available so that you can <a href="http://www.cert.org/download/bff">download</a> and try it.</p>]]>
        <![CDATA[<p>Since we released <a href="http://www.cert.org/blogs/certcc/2010/09/cert_basic_fuzzing_framework_u.html">BFF 1.1</a> in September last year, we've made a number of improvements to our Linux-based fuzzing environment. We are releasing the updates as BFF 2.0. Our main goal is to make it simpler for the creators of software to get started fuzzing. Along the way, we're trying to discover and refine techniques to increase the efficiency of finding vulnerabilities through fuzzing.</p><p>Here's a summary of what we've done:</p><ul><li>BFF has been completely rewritten in Python. After refactoring <a href="http://www.cert.org/blogs/certcc/2010/05/cert_basic_fuzzing_framework.html">BFF 1.0</a> into <a href="http://www.cert.org/blogs/certcc/2010/09/cert_basic_fuzzing_framework_u.html">BFF 1.1</a> (both written in Perl) to improve performance, we observed that modularizing the component parts of BFF would make it easier to add new features. We were also seeing more and more Python appear in the security community, so we decided to port the BFF code from Perl to Python and break it into modules. The algorithmic improvements made to BFF 1.1 remain in BFF 2.0.</li><li>We added a 'rangefinder' feature to eliminate the need for the user to figure out how much of the input file to fuzz. The rangefinder built in to BFF will automatically adjust the degree of input fuzzing to find more crashes by focusing on the ranges that are most fruitful.</li><li>We totally rewrote the crash minimization code to leverage some combinatorics and probability analysis we have done since BFF 1.1 was released. The new version is both efficient and relentless in its attempts to minimize crashing test cases to only the bits absolutely necessary to differentiate the crashing test case from the known good seed file.</li><li>Logging in BFF uses the Python logging module for all of its logging needs.</li><li>We have also incorporated a few statistics and visualization tools to help with analyzing BFF logs. These are in the <em>analyzers</em> directory in the scripts.zip file.</li></ul><p>We'll be posting more about these and possibly other features of BFF 2.0 in the future, but we wanted to share the news so you can start your own fuzzing campaigns. To get started, simply follow these steps:</p><ol><li>Download BFF 2.0 from <a href="http://www.cert.org/download/bff">http://www.cert.org/download/bff</a></li><li>Unzip <code>scripts.zip</code> to c:\fuzz</li><li>Unzip <code>DebianFuzz.zip</code> to a directory of your choice</li><li>Open <code>DebianFuzz.vmx</code> with VMware</li><li>Create a snapshot in VMware</li><li>Power on the VM</li></ol><p>You  may need to verify that the shared folder (<code>c:\fuzz -&gt; /mnt/hgfs/fuzz</code>) is enabled in the VM  preferences. Other virtualization products may work with some additional  configuration. See the README file in <code>scripts.zip</code> for more details.</p><p><em>Note:</em>&nbsp; For those of you who received a copy of BFF 2.0 at our vendor meeting last week, we've made a few bug fixes to the code in <code>scripts.zip</code>, so you might want to <a href="http://www.cert.org/download/bff">download</a> a fresh copy.</p>]]>
    </content>
</entry>

<entry>
    <title>&quot;Network Monitoring for Web-Based Threats&quot; released</title>
    <link rel="alternate" type="text/html" href="https://www.cert.org/blogs/certcc/2011/02/network_monitoring_for_web-bas.html" />
    <id>tag:www.cert.org,2011:/blogs/certcc//1.65</id>

    <published>2011-02-14T18:32:00Z</published>
    <updated>2011-02-14T18:32:42Z</updated>

    <summary>The CERT Network Situational Awareness (NetSA) team, specifically our talented and hard-working intern Matthew Heckathorn under Sid Faber&apos;s guidance, has published an SEI Technical Report on monitoring web-based threats....</summary>
    <author>
        <name>Markus De Shon</name>
        
    </author>
    
        <category term="Analysis" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Web" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="https://www.cert.org/blogs/certcc/">
        <![CDATA[<p>The <a href="http://www.cert.org/netsa/">CERT Network Situational Awareness (NetSA)</a> team, specifically our talented and hard-working intern Matthew Heckathorn under <a href="http://www.sei.cmu.edu/about/people/sfaber.cfm">Sid Faber</a>'s guidance, has published an <a href="http://www.sei.cmu.edu/library/abstracts/reports/11tr005.cfm">SEI Technical Report</a> on monitoring web-based threats.</p>]]>
        <![CDATA[<p>The report draws on related work such as OWASP but comes from a  different point of view. While OWASP is focused on developing web  applications securely, this report focuses more on situations where you  don't have that control, but you need to protect servers and clients  from web-based threats. The report may help you answer the following questions:</p><ul><li>What kinds of network monitoring do you need to  do?</li><li>How do you identify the attacks?</li><li>How do you prevent them at the  network level?</li></ul> <p>At more than 100 pages, the report is as comprehensive as we could  make it and still get it out in a (relatively) timely manner.</p>]]>
    </content>
</entry>

<entry>
    <title>Blog reorganization</title>
    <link rel="alternate" type="text/html" href="https://www.cert.org/blogs/certcc/2011/02/blog_reorganization.html" />
    <id>tag:www.cert.org,2011:/blogs/certcc//1.64</id>

    <published>2011-02-11T20:01:00Z</published>
    <updated>2011-02-11T20:01:06Z</updated>

    <summary>Hi, folks. As you can see, we&apos;ve changed the name of the Vulnerability Analysis Blog to the CERT/CC Blog. With this name change, we&apos;re expanding the focus of the blog to include content from other technical teams....</summary>
    <author>
        <name>Chad Dougherty</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="https://www.cert.org/blogs/certcc/">
        <![CDATA[<p>Hi, folks. As you can see, we've changed the name of the Vulnerability Analysis Blog to the CERT/CC Blog. With this name change, we're expanding the focus of the blog to include content from other technical teams.</p>]]>
        <![CDATA[<p>The current RSS and Atom feeds will continue to work, but you may want to update to the corresponding new feed location now (<a href="http://www.cert.org/blogs/certcc/rss.xml">RSS</a>, <a href="http://www.cert.org/blogs/certcc/atom.xml">Atom</a>) in order to avoid any problems in the future.</p><p>Past blog entries will continue to be available at the existing URLs.</p><p>&nbsp;</p>]]>
    </content>
</entry>

<entry>
    <title>CERT Basic Fuzzing Framework Update</title>
    <link rel="alternate" type="text/html" href="https://www.cert.org/blogs/certcc/2010/09/cert_basic_fuzzing_framework_u.html" />
    <id>tag:www.cert.org,2010:/blogs/vuls//1.58</id>

    <published>2010-09-22T15:26:00Z</published>
    <updated>2010-09-23T14:33:40Z</updated>

    <summary><![CDATA[Hi, folks. We've recently updated the CERT&reg; Basic Fuzzing Framework (BFF). The new BFF 1.1 contains new functionality and improves performance....]]></summary>
    <author>
        <name>Will Dormann</name>
        
    </author>
    
        <category term="Discovery" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="https://www.cert.org/blogs/certcc/">
        <![CDATA[<p>Hi, folks. We've recently updated the CERT<sup>&reg;</sup> Basic Fuzzing Framework (BFF). The new BFF 1.1 contains new functionality and improves performance.</p>]]>
        <![CDATA[<p>The BFF is a framework to perform file mutation fuzzing for Linux applications. Since the <a href="http://www.cert.org/blogs/vuls/2010/05/cert_basic_fuzzing_framework.html">initial release of the BFF</a>, we have made some improvements:</p> <p><strong>The virtual machine</strong></p> <ul>     <li>We upgraded the OS to the testing version of Debian (&quot;Squeeze&quot;). In the process of installing applications to fuzz, I noticed that some of them required libraries newer than what are available in the stable version of Debian. The VM used by the BFF is more modern.</li>     <li>The virtual machine now includes a generic VESA video driver in addition to the VMware driver. This can simplify the use of the BFF with other virtualization products, like VirtualBox.</li> </ul> <p><strong>The scripts</strong></p> <ul>     <li>In some cases, the gdb process would hang during a fuzzing run, which can result in resource exhaustion. The gdb process is now properly killed when its timeout expires.</li>     <li>BFF 1.0 discarded crashes caused by the SIGABRT signal. The reason for this was to ignore, by default, crashes that were the result of a failed assertion. However, this feature was also discarding heap corruption crashes that were caught by glibc. BFF 1.1 now investigates SIGABRT crashes to determine if they are the result of a failed assertion. Only failed assertion crashes are discarded by default.</li>     <li>The <tt>zzuf.pl</tt> script has been refactored for improved performance, sanity, and modularity. (Thanks Allen!)</li>     <li>The BFF now performs automatic crashing testcase minimization via <a href="http://code.google.com/p/fuzzdiff/">fuzzdiff</a>. (Thanks Dan!)</li> </ul> <p><a href="http://www.cert.org/download/bff">Download BFF 1.1</a></p>]]>
    </content>
</entry>

<entry>
    <title>Study of Malicious Domain Names: TLD Distribution</title>
    <link rel="alternate" type="text/html" href="https://www.cert.org/blogs/certcc/2010/08/malicious_domain_names_the_tld.html" />
    <id>tag:www.cert.org,2010:/blogs/vuls//1.55</id>

    <published>2010-08-31T18:28:00Z</published>
    <updated>2010-08-31T19:15:50Z</updated>

    <summary>Hello, folks. This post comes to you courtesy of Aaron Shelmire from the Network Situational Awareness team. Aaron writes: Recently the Network Situational Awareness team at CERT has been researching the characteristics of malicious network touchpoints. The findings of this...</summary>
    <author>
        <name>Chad Dougherty</name>
        
    </author>
    
        <category term="Analysis" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Research" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="https://www.cert.org/blogs/certcc/">
        <![CDATA[<p>Hello, folks.  This post comes to you courtesy of Aaron Shelmire from the <a href="http://www.cert.org/netsa/">Network Situational Awareness</a> team. Aaron writes:</p> <p>Recently the Network Situational Awareness team at CERT has been researching the characteristics of malicious network touchpoints. The findings of this initial research are very telling as to the true state of security on the internet.</p>]]>
        <![CDATA[<p>The Domain Name System (DNS) can be thought of as a multi-level addressing scheme that overlays the numerical IP addresses. This allows content on a numerical address to be called by an easily remembered name such as cert.org. It also expands the possible naming space to a nearly unlimited number of options, like hcjakaudbre.net or ajkcausdih.biz. While the options are not necessarily easily pronounceable, the possibilities for addresses are endless.</p>
<p>The DNS is laid out in a series of labels referred to as levels. The first, or top, level is the last part of the domain name. As an example, www.google.com is a three-level domain name with a top-level domain (TLD) of com, a second-level domain of google, and a third-level domain of www. So, when your computer needs to look for www.google.com, it asks the DNS root servers responsible for the .com TLD who the authoritative DNS server for google is based on the .com zone file. The google domain server would then supply the answer of the numerical address of www.google.com. Addresses on other domains use the same backward resolution.</p>
<p>Looking at this construction from a security perspective, we can identify the level responsible for a malicious domain. For example, let's consider the invented address somebadhost.hoster.com. Because somebadhost is a subset of hoster.com, hoster.com would be responsible cleaning up any malicious content on somebadhost. However, if the malicious touchpoint was something like badguy.com, the responsibility for removing the malicious content lies with the registrar that allowed Mr. Bad Guy to register the domain badguy.com as well as with the root server operators.</p>
<p>In our research, we established a control case of randomly chosen domains to compare against a population of malicious domains. This allows us to see how the behaviors and characteristics of malicious domains involved in criminal and espionage operations contrast to those behaviors of the general population of domains.</p>
<span style="display: inline;" class="mt-enclosure mt-enclosure-image">
    <img height="399" width="657" style="" class="mt-image-none" src="/blogs/vuls/RandomTLDPicture.jpg" alt="RandomTLDPicture.jpg" />
</span>
<p>As shown, a random sample of domains is mostly distributed over the .com top-level domain, with some distributed over the .org and .net TLDs. For the purpose of comparison, note that the China top-level domain (.cn) is only seen 1.7% of the time.</p>
<p>Using the data of malicious domains, we see a very different distribution.</p>
<span style="display: inline;" class="mt-enclosure mt-enclosure-image">
    <img height="401" width="651" style="" class="mt-image-none" src="/blogs/vuls/MaliciousTLDDistribution.jpg" alt="MaliciousTLDDistribution.jpg" />
</span>
<p>Most of the malicious domains are still using the .com, .org, and .net TLDs, but these TLDs are less popular than they are in the control sample. In the malicious sample, the .info TLD becomes very prominent (as opposed to only .9% of the control case), and the .biz TLD appears as a more popular TLD (compared to .2% in the control case). The China TLD nearly doubles its presence to 3.0% of the malicious domains.</p>
<p>These results may imply that the TLDs that have smaller proportions in the malicious sample than in the control sample have applied policies and practices that enable them to prevent the use of their resources for malicious activity.</p>]]>
    </content>
</entry>

<entry>
    <title>CERT Basic Fuzzing Framework</title>
    <link rel="alternate" type="text/html" href="https://www.cert.org/blogs/certcc/2010/05/cert_basic_fuzzing_framework.html" />
    <id>tag:www.cert.org,2010:/blogs/vuls//1.53</id>

    <published>2010-05-26T18:00:00Z</published>
    <updated>2011-10-20T11:56:54Z</updated>

    <summary><![CDATA[Hi folks. I've been involved in a fuzzing effort at CERT. One of the ways that I've been able to discover vulnerabilities is through &quot;dumb&quot;&nbsp;or mutational fuzzing. We have developed a framework for performing automated dumb fuzzing. Today we are...]]></summary>
    <author>
        <name>Will Dormann</name>
        
    </author>
    
        <category term="Discovery" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="https://www.cert.org/blogs/certcc/">
        <![CDATA[<p>Hi folks. I've been involved in a fuzzing effort at CERT. One of the ways that I've been able to discover vulnerabilities is through &quot;dumb&quot;&nbsp;or mutational <a href="http://en.wikipedia.org/wiki/Fuzz_testing">fuzzing</a>. We have developed a framework for performing automated <a href="http://msdn.microsoft.com/en-us/library/cc162782.aspx#Fuzzing_topic4">dumb fuzzing</a>. Today we are releasing a simplified version of automated dumb fuzzing, called the Basic Fuzzing Framework (BFF).</p>]]>
        <![CDATA[<p><a href="http://www.cert.org/vuls/discovery/dranzer.html">Dranzer</a> was one of our first fuzz testing projects. By performing automated smart fuzz testing of ActiveX controls, I was able to discover thousands of vulnerabilities. Luckily, Microsoft has made some <a href="http://blogs.msdn.com/ie/archive/2008/05/07/ie8-security-part-ii-activex-improvements.aspx">improvements</a> to Internet Explorer to help minimize the impact of ActiveX&nbsp;vulnerabilities.</p><p>Another technique that I've used for discovering vulnerabilities is dumb fuzzing. Don't let the name fool you. Dumb fuzzing has the advantage of being more universal than smart fuzzing. Dranzer is limited in that it tests only ActiveX controls; with dumb fuzzing, you can switch targets easily after your dumb fuzzing environment is complete.</p><p>The Basic Fuzzing Framework (BFF) consists of two main parts:</p><ol><li>a Linux virtual machine that has been optimized for fuzzing</li><li>a set of scripts and a configuration file that orchestrate the fuzzing run</li></ol><p>The virtual machine is a stripped-down Debian installation with the following modifications:</p><ul><li>The Fluxbox window manager is used instead of the heavy Gnome or KDE desktop environments.</li><li>Fluxbox is configured to not raise or focus new windows. This can help in situations where you may need to interact with the guest OS while a GUI application is being fuzzed.</li><li>Memory randomization is disabled.</li><li>VMware Tools is installed, which allows the guest OS to share a directory with the host.</li><li>The OS is configured to automatically log in and start X.</li><li><code>sudo</code> is configured to not prompt for a password.</li><li><code>strip</code> is symlinked to <code>/bin/true</code>, which prevents symbols from being removed when an application is built.</li></ul><p>The fuzzer used by the BFF is Sam Hocevar's excellent <a href="http://caca.zoy.org/wiki/zzuf">zzuf</a> application. zzuf was chosen for its deterministic behavior, number of features, and lightweight size. By invoking zzuf from a script (<code>zzuf.pl</code>), we are able to automate additional aspects of a fuzzing run:</p><ul><li>Collect program stderr output, valgrind memcheck, and gdb backtrace. This information can help a developer determine the cause of a crash.</li><li>De-duplication of crashing testcases. Using gdb backtrace output, <code>zzuf.pl</code> will determine if a crash has been encountered before. By default, duplicate crashes are discarded.</li></ul><p>The <code>zzuf.pl </code>reads the configuration options from the <code>zzuf.cfg</code> file. This file contains all of the parameters relevant to the current fuzz run, such as the target program and syntax, the seed file to be mutated, and how long the target application should be allowed to run per execution. The configuration file is copied to the guest OS when a fuzzing run has started. The zzuf script will periodically save its current progress within a fuzzing run as well. These two features work together to allow the fuzzing VM to be rebooted at any point, allowing the VM to resume fuzzing at the last stop point. The fuzzing script also periodically touches the <code>/tmp/fuzzing</code> file. A linux software watchdog will check for the age of this file; and, if it is older than the specified amount of time, the VM will automatically be rebooted. Because some strange things can happen during a fuzzing run, this robustness is necessary for full automation.</p><p>The BFF&nbsp;is preconfigured to automatically begin fuzzing a very old version of ImageMagick. A debug build of ImageMagic 5.2.0 is installed on the system, <code>zzuf.cfg</code> is set up with the fuzzing parameters, and a simple Netpbm seed file is included. When the machine is powered on, it will automatically log in and <code>zzuf.pl</code> will invoke the zzuf fuzzer. ImageMagick's <code>convert</code> program will repeatedly execute, attempting to convert the seed file into a bitmap file. The way that zzuf works is that each time the application is launched, the seed file will be mangled in a certain way. The goal of fuzzing is to determine malformed input that causes the target application to crash. The zzuf.pl script takes this one step further by collecting additional information about the crashes. Cases that are determined to be unique are saved.</p><p>To begin fuzzing on your own, simply follow these steps:</p><ol><li>Unzip <code>scripts.zip</code> to c:\fuzz</li><li>Unzip <code>DebianFuzz.zip</code> to a directory of your choice.</li><li>Open <code>DebianFuzz.vmx</code> with VMware.</li><li>Create a snapshot in VMware</li><li>Power on the VM</li></ol><p>You may need to verify that the shared folder is enabled in the VM preferences. Other virtualization products may work with some additional configuration. See the README.txt file in <code>scripts.zip</code> for more details.</p><p><a href="http://www.cert.org/download/bff">Get your own BFF here</a>.</p><p>P.S. If you are interested in this sort of stuff, check out our <a href="http://www.cert.org/jobs/">job opportunities</a>.</p>]]>
    </content>
</entry>

<entry>
    <title>Top-10 Top Level and Second Level Domains found in Malicious Software</title>
    <link rel="alternate" type="text/html" href="https://www.cert.org/blogs/certcc/2010/03/top-10_top_level_and_second_le.html" />
    <id>tag:www.cert.org,2010:/blogs/vuls//1.51</id>

    <published>2010-03-05T19:10:32Z</published>
    <updated>2010-03-08T19:11:20Z</updated>

    <summary><![CDATA[Hello folks.&nbsp; This post comes to you courtesy of Ed Stoner and Aaron Shelmire from the Network Situational Awareness group at CERT.&nbsp; They write: Recently there have been some statistics published on botnet Command &amp; Control (C2) channels. These statistics...]]></summary>
    <author>
        <name>Chad Dougherty</name>
        
    </author>
    
        <category term="Analysis" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Web" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="https://www.cert.org/blogs/certcc/">
        <![CDATA[<p>Hello folks.&nbsp; This post comes to you courtesy of Ed Stoner and Aaron Shelmire from the <a href="http://www.cert.org/netsa/">Network  Situational Awareness</a> group at CERT.&nbsp; They write:</p> <p>Recently there have been some <a href="http://blog.damballa.com/?p=575">statistics  published</a> on botnet Command &amp; Control (C2) channels. These  statistics claim that 94.58% of botnet C2 channels are under the .com  top level domain (TLD). While it's impossible to accurately comment on  those statistics without knowing the methodology used to arrive at them,   we at CERT have been doing research concerning malicious domain names  that arrives at a different result.</p>]]>
        <![CDATA[<p>Over a period of the 6-months from July 2009 until February 2010, our malicious software collection expanded by over 250,000 samples.  Those samples reference nearly 120,000 domain names. The top 10 domain names were</p>
<table cellspacing="0" cellpadding="0" border="1" class="MsoNormalTable" style="border-collapse: collapse; border: medium none;">
    <tbody>
        <tr style="">
            <td width="148" valign="top" style="width: 2.05in; border: 1pt solid black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><b style=""><span style="font-size: 11pt; font-family: Calibri;">Count<o:p></o:p></span></b></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: black black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><b style=""><span style="font-size: 11pt; font-family: Calibri;">TLD<o:p></o:p></span></b></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: black black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><b style=""><span style="font-size: 11pt; font-family: Calibri;">Percentage  of total domains<o:p></o:p></span></b></p>
            </td>
        </tr>
        <tr style="">
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">28191<o:p></o:p></span></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">.net <o:p></o:p></span></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">~23.9%<o:p></o:p></span></p>
            </td>
        </tr>
        <tr style="">
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">25040<o:p></o:p></span></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">.com  <o:p></o:p></span></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">~21.0%<o:p></o:p></span></p>
            </td>
        </tr>
        <tr style="">
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">23674<o:p></o:p></span></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">.info<o:p></o:p></span></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">~19.9%<o:p></o:p></span></p>
            </td>
        </tr>
        <tr style="">
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">19889<o:p></o:p></span></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">.org <o:p></o:p></span></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">~16.7%<o:p></o:p></span></p>
            </td>
        </tr>
        <tr style="">
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">8020<o:p></o:p></span></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">.biz<o:p></o:p></span></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">~6.7%<o:p></o:p></span></p>
            </td>
        </tr>
        <tr style="">
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">3561<o:p></o:p></span></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">.cn<o:p></o:p></span></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">~3.0%<o:p></o:p></span></p>
            </td>
        </tr>
        <tr style="">
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">1894<o:p></o:p></span></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">.br  <o:p></o:p></span></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">~1.6%<o:p></o:p></span></p>
            </td>
        </tr>
        <tr style="">
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">1046 <o:p></o:p></span></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">.cc<span style="">&nbsp; </span><o:p></o:p></span></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">~.9%<o:p></o:p></span></p>
            </td>
        </tr>
        <tr style="">
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">902 <o:p></o:p></span></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">.ru  <o:p></o:p></span></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">~.8%<o:p></o:p></span></p>
            </td>
        </tr>
        <tr style="">
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">594 <o:p></o:p></span></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">.de  <o:p></o:p></span></p>
            </td>
            <td width="148" valign="top" style="width: 2.05in; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">~.5%<o:p></o:p></span></p>
            </td>
        </tr>
    </tbody>
</table>
<p>Our collection shows a much more even distribution of domain names over top level domains.</p>
<p>As for second-level domains we have the following top 10.</p>
<table cellspacing="0" cellpadding="0" border="1" class="MsoNormalTable" style="border-collapse: collapse; border: medium none;">
    <tbody>
        <tr style="">
            <td width="111" valign="top" style="width: 110.7pt; border: 1pt solid black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><b style=""><span style="font-size: 11pt; font-family: Calibri;">Count<o:p></o:p></span></b></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: black black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><b style=""><span style="font-size: 11pt; font-family: Calibri;">TLD<o:p></o:p></span></b></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: black black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><b style=""><span style="font-size: 11pt; font-family: Calibri;">Percentage  of Total Domains<o:p></o:p></span></b></p>
            </td>
        </tr>
        <tr style="">
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">7200<o:p></o:p></span></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">.no-ip.biz<o:p></o:p></span></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">~6%<o:p></o:p></span></p>
            </td>
        </tr>
        <tr style="">
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">5810  <o:p></o:p></span></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">.3322.org<o:p></o:p></span></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">~4.9%<o:p></o:p></span></p>
            </td>
        </tr>
        <tr style="">
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">1980  <o:p></o:p></span></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">.no-ip.info   <o:p></o:p></span></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">~1.6%<o:p></o:p></span></p>
            </td>
        </tr>
        <tr style="">
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">1897  <o:p></o:p></span></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">.no-ip.org   <o:p></o:p></span></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">~1.6%<o:p></o:p></span></p>
            </td>
        </tr>
        <tr style="">
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">1488  <o:p></o:p></span></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">.dyndns.org   <o:p></o:p></span></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">~1.3%<o:p></o:p></span></p>
            </td>
        </tr>
        <tr style="">
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">1420  <o:p></o:p></span></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">.yi.org   <o:p></o:p></span></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">~1.2%<o:p></o:p></span></p>
            </td>
        </tr>
        <tr style="">
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">628  <o:p></o:p></span></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">.vicp.net   <o:p></o:p></span></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">~.5%<o:p></o:p></span></p>
            </td>
        </tr>
        <tr style="">
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">495  <o:p></o:p></span></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">.gicp.net   <o:p></o:p></span></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">~.4%<o:p></o:p></span></p>
            </td>
        </tr>
        <tr style="">
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">311  <o:p></o:p></span></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">.zapto.org   <o:p></o:p></span></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">~.3%<o:p></o:p></span></p>
            </td>
        </tr>
        <tr style="">
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color black black; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">269  <o:p></o:p></span></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">.mooo.com   <o:p></o:p></span></p>
            </td>
            <td width="111" valign="top" style="width: 110.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; padding: 0in 5.4pt;">
            <p class="MsoNormal"><span style="font-size: 11pt; font-family: Calibri;">~.2%<o:p></o:p></span></p>
            </td>
        </tr>
    </tbody>
</table>
<p>The &quot;no-ip&quot; domains account for approximately 10% of malicious domain names when aggregated.</p>
<p>There are a couple of caveats regarding this data.</p>
<p>First, these are only the  domain names as they appear in the malicious code. This doesn&rsquo;t mean  that 23.9% of malicious traffic is routed to domain names underneath the .net top level domain, nor that 23.9% of malicious activity occurs because of the .net TLD.</p>
<p>This also doesn't mean that 3.0% of malicious domain names are  physically located in China. It simply means that the .cn-Registrar has allowed those names to be registered.</p>
<p>They could be serving an exploit payload, serving as a drop point for data exfiltration, or serving as a point to grab the RAT software.</p>
<p>Lastly, these samples have been sorted and made unique. This means that if a domain name appeared 100 times, we only counted that domain name once. If we kept all occurrences of domain names, we would have nearly 500,000 instances of domain names being used within that 6-month period.</p>
]]>
    </content>
</entry>

<entry>
    <title>Plain Text Email in Outlook Express</title>
    <link rel="alternate" type="text/html" href="https://www.cert.org/blogs/certcc/2009/11/plain_text_email_in_outlook_ex.html" />
    <id>tag:www.cert.org,2009:/blogs/vuls//1.48</id>

    <published>2009-11-13T14:23:00Z</published>
    <updated>2009-11-13T14:23:28Z</updated>

    <summary>Reading email messages in plain text seems like a reasonable thing to do to improve the security of your email client. Plain text takes less processing than HTML, which should help minimize your attack surface, right? As it turns out,...</summary>
    <author>
        <name>Will Dormann</name>
        
    </author>
    
        <category term="Analysis" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="https://www.cert.org/blogs/certcc/">
        <![CDATA[<p>Reading email messages in plain text seems like a reasonable thing to do to improve the security of your email client. Plain text takes less processing than HTML, which should help minimize your attack surface, right? As it turns out, Outlook Express (and its derivatives) is doing more than you think when it is configured with the &quot;Read all messages in plain text&quot;&nbsp;option enabled.</p>]]>
        <![CDATA[<p>Outlook Express is an email client that is provided with various versions of Microsoft Windows, starting with Windows 98. In Windows Vista, the client was renamed <a href="http://www.microsoft.com/windows/windows-vista/features/mail.aspx">Windows Mail</a>. Windows 7 does not come with an email client, but a newer version of Windows Mail called <a href="http://download.live.com/wlmail">Windows Live Mail</a> is available for download. Despite the different names, all three products are essentially different versions of the same software. In this blog entry, the term &quot;Outlook Express&quot; refers to all three versions.</p><p>Security-conscious people tend to disable unnecessary features to improve the security of software that we use. For example, most web browsers can be <a href="http://www.cert.org/tech_tips/securing_browser/">made more secure</a> by disabling features like Java, ActiveX, or even JavaScript by default. Sure, it's a trade-off with functionality, but when you're constantly processing untrusted data by viewing web pages, it makes sense to minimize your <a href="http://www.cert.org/blogs/vuls/2009/06/vulnerabilities_and_software_a.html">attack surface</a>. The same techniques can be applied to your email client. For example, most popular email clients include an option to display messages as plain text. In <a href="http://www.microsoft.com/protect/computer/advanced/browsing.mspx#ENF">Improving Internet Safety and Security Settings</a>, Microsoft recommends setting the option &quot;Read all messages in plain text.&quot;</p><p>It is reasonable to guess that the &quot;Read all messages in plain text&quot; option means that Outlook Express displays only the plain text MIME part of an email message. Or perhaps it just strips out the HTML&nbsp;tags from the message. However, both these guesses are wrong. Outlook Express is doing much more than this.</p><p>When Outlook Express receives an HTML email message, it determines the handler for the &quot;text/html&quot; MIME type. Outlook Express then uses the&nbsp;Internet Explorer rendering engine (MSHTML)&nbsp;to process the message. If the &quot;Read all messages in plain text&quot; option is specified, then the content is reduced to a plain text form. The important concept here is that the Internet Explorer rendering engine is used to process HTML email messages, regardless of the plain text setting.</p><p>In fact, ironically, setting the option to read messages in plain text can put the system at increased risk! While investigating attack vectors for the Windows animated cursor stack buffer overflow vulnerability (<a href="http://www.kb.cert.org/vuls/id/191609">VU#191609</a>), I noticed that when the &quot;Read all messages in plain text&quot; option was enabled, Outlook Express could be compromised just by displaying an email message in the preview pane. The default configuration of displaying messages in HTML format was not vulnerable via the preview pane. The HTML&nbsp;email referenced an ANI&nbsp;file on a remote server, and even though it was configured to display messages in plain text, Outlook Express retrieved the remote ANI file and processed it. Microsoft was notified of this behavior, and they updated their <a href="http://www.microsoft.com/technet/security/Bulletin/MS07-017.mspx">security bulletin</a>  with the text:&nbsp;&quot;<strong>Note</strong> Reading e-mail in plain text on Outlook Express does <strong>not</strong> mitigate attempts to exploit this vulnerability.&quot; The behavior of Outlook Express does not appear to have changed since then.</p><p>Consider the recent <a href="http://g-laurent.blogspot.com/2009/11/windows-7-server-2008r2-remote-kernel.html">Windows 7 / Server 2008 R2 denial-of-service vulnerability</a>. This vulnerability can cause a Windows 7 or Server 2008 R2 system to hang upon attempting to create an SMB connection to a malicious server. Similar to the ANI&nbsp;bug, if Windows Live Mail is configured to display messages in plain text, the vulnerability can be triggered by simply receiving a malicious email and displaying it in the preview pane. The default configuration of displaying messages in HTML format is not as vulnerable because it appears to require additional user interaction, such as clicking the &quot;Show images&quot;&nbsp;link or forwarding or replying to the message.</p><p>If you are using an email client based on Outlook Express (including Windows Mail and Windows Live Mail), avoid using the &quot;Read all messages in plain text&quot; option. While it is possible that the setting could protect against some vulnerabilities, I have investigated several scenarios where it puts the user at <strong>increased</strong> risk. Note that Microsoft Outlook does not appear to be affected by this problem. In Outlook, the option to read messages in plain text does appear to offer increased protection against vulnerabilities.</p>]]>
    </content>
</entry>

<entry>
    <title>Managing IPv6 - Part 2</title>
    <link rel="alternate" type="text/html" href="https://www.cert.org/blogs/certcc/2009/10/managing_ipv6_-_part_2.html" />
    <id>tag:www.cert.org,2009:/blogs/vuls//1.45</id>

    <published>2009-10-06T19:44:00Z</published>
    <updated>2009-10-06T19:44:54Z</updated>

    <summary>Past entries have addressed both securing and disabling IPv6. This entry describes ways that administrators can secure their networks and generate test cases to test those settings....</summary>
    <author>
        <name>Ryan Giobbi</name>
        
    </author>
    
        <category term="Analysis" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="https://www.cert.org/blogs/certcc/">
        <![CDATA[<p>Past entries have addressed both securing and disabling IPv6. This entry describes ways that administrators can secure their networks and generate test cases to test those settings.</p>]]>
        <![CDATA[<p>Administrators and developers who work with IPv4 will notice that IPv6 has made some changes beyond offering many more addresses than IPv4. The following are some of the changes that have security impacts:</p> <ul>     <li>Many hosts that currently have private IPv4 addresses will have global, publicly reachable addresses.</li>     <li>ICMPv6 contains much of the functionality of DHCP in IPv4 and cannot easily be entirely filtered.</li>     <li>IPv6 addresses can be predictable or partially random. Modern operating systems allow both, and there is a tradeoff between system management ease of use and user privacy.</li> </ul> <p>These changes can cause problems. For example, a host that accepts any ICMPv6 type can be fingerprinted easily from remote systems. That might not be a problem for some networks, but it could be critical for others.</p> <p>There are ways for administrators to handle these challenges. The examples below aren't universally applicable, so use them as a general guide.</p> <p>&nbsp;</p> <p><em><strong>Managing networks using global IPv6 addresses</strong></em></p> <p>Globally reachable addresses are not &quot;hidden&quot; in the same way as NAT addresses. To filter traffic destined to these clients, administrators can use application-layer proxy servers, stateful network filtering, or host-based firewalls.</p> <p>Below is an example of filtering traffic to a globally reachable IPv6 address. For the purpose of these rules, 2001:1::/64 is the local network, eth0 is the LAN interface on a firewall, eth1 is the WAN interface on the firewall, and 2001:3::1 is an IPv6 address on the internet.</p> <p style="margin-left: 40px;"><code>ip6tables -A FORWARD -p tcp -i eth0 -s 2001:1::/64 -p tcp -j ACCEPT<br /> ip6tables -A FORWARD -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT</code><br /> <code>ip6tables -A FORWARD -p tcp -i eth1 --dport 3389 -s 2001:3::1 -j ACCEPT</code><br /> <code>ip6tables -A FORWARD -p tcp -i eth1 -m state --state NEW,INVALID -j DROP</code></p> <p>The following is an explanation of what's happening in these rules, based on the behavior of a typical router doing NAT.</p> <p style="margin-left: 40px;"><code>ip6tables -A FORWARD -p tcp -i eth0 -s 2001:1::/64 -p tcp -j ACCEPT</code><br /> <em>Pass any traffic that has entered on our LAN's ethernet interface (-i eth0) and that has a source address in the range our LAN is using (2001:1::/64).</em></p> <p style="margin-left: 40px;"><code>ip6tables -A FORWARD -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT</code><code><br /> <em>Pass any traffic that is part of an existing connection.</em></code></p> <p style="margin-left: 40px;"><code>ip6tables -A FORWARD -p tcp -i eth1 --dport 3389 -s 2001:3::1 -j ACCEPT</code><br /> <em>Allow any traffic coming into our WAN interface (-i eth1) to pass through to our LAN if it matches the TCP port used for RDP (--dport 3389). <br /> </em></p> <p style="margin-left: 40px;"><code>ip6tables -A FORWARD -p tcp -i eth1 -m state --state NEW,INVALID -j DROP<br /> </code><em>Drop all other traffic.</em></p> <p>After configuring the firewall, administrators should test the ruleset to confirm it is working as expected. Two commonly used tools that can test IPv6 TCP and UDP policies are nmap and netcat6.</p> <p>Building on the example above, let's imagine that a user logs into a host with IP address <code>2001:1::2/64</code> and starts a netcat listener on port 3389:</p> <p style="margin-left: 40px;"><code>$ netcat6 -l -p 3389</code></p> <p>A scan of that IP from any host on the internet other than <code>2001:3::1 </code>should fail. This result can be verified with an nmap comand:</p> <p style="margin-left: 40px;"><code>$ nmap -PN&nbsp;-sT </code><code>2001:1::2/64 -p 3389</code> <br /> <code><br /> Starting Nmap 4.76 ( http://nmap.org ) at 2009-09-02 14:32 EDT<br /> Interesting ports on </code><code>2001:1::2:</code><br /> <code>PORT&nbsp;&nbsp;&nbsp;&nbsp; STATE SERVICE<br /> </code></p><p>&nbsp;</p> <p><em><strong>Filtering selected ICMPv6 types</strong></em></p> <p>The ICMPv6 protocol includes some great functionality. IANA maintains a <a href="http://www.iana.org/assignments/icmp-parameters">list</a> of ICMPv6 types and codes.<br /> <br /> It is hard to make general statements about which ICMPv6 types should be allowed or denied. The following chart provides some guidance about reasonable firewall policies applied to ICMPv6 types. The types are listed based on whether or not the ICMPv6 type can typically be allowed or denied.</p> <table cellspacing="1" cellpadding="1" border="1" style="width: 504px; height: 173px;">     <tbody>         <tr>             <td><small><strong>ICMPv6 types typically safe to allow<br />             </strong></small></td>             <td><small><strong>Purpose/Comments</strong></small></td>         </tr>         <tr>             <td><small>1, Destination Unreachable</small></td>             <td><small>general connectivity testing</small></td>         </tr>         <tr>             <td><small>2, Packet Too Big</small></td>             <td><p><small>sent by routers to notify a node that it should fragment the packets</small></p></td>         </tr>         <tr>             <td><small>3, Time Exceeded</small></td>             <td><small>protects against routing loops</small></td>         </tr>         <tr>             <td><small>4, Parameter Problem</small></td>             <td><small>error messages and handling</small></td>         </tr>         <tr>             <td><small>128, Echo Request</small></td>             <td><small>ping</small></td>         </tr>         <tr>             <td><small>129, Echo Reply</small></td>             <td><small>ping reply</small></td>         </tr>         <tr>             <td><small>133, Router Solicitation</small></td>             <td><small>sent by clients to the all-nodes multicast address to request an IP address assignment</small></td>         </tr>         <tr>             <td><small>134, Router Advertisement</small></td>             <td><p><small>sent by routers to the all-nodes multicast address; clients can use the information in this message to generate an address</small></p></td>         </tr>         <tr>             <td><small>135, Neighbor Solicitation</small></td>             <td><small>queries nodes for IP and connectivity information</small></td>         </tr>         <tr>             <td><small>136, Neigbor Advertisement</small></td>             <td><p><small>sends IP and connectivity information to other nodes</small></p></td>         </tr>         <tr>             <td>&nbsp;</td>             <td>&nbsp;</td>         </tr>         <tr>             <td><small><strong>ICMPv6 types that can typically be denied</strong></small><strong><br />             </strong></td>             <td><small><strong>Purpose/Comments</strong></small></td>         </tr>         <tr>             <td><small>137, Redirect</small></td>             <td><p><small>alerts clients to send traffic to another router, presumably one with a more direct route to the destination; like other ICMPv6 types listed, these messages are unauthenticated and could be malicious</small></p></td>         </tr>         <tr>             <td><small>138, Router Renumbering</small></td>             <td><small>automatic reconfiguration of routers</small></td>         </tr>         <tr>             <td><small>139, Node Information&nbsp;Query</small></td>             <td><small>allows a host to be fingerprinted</small></td>         </tr>         <tr>             <td><small>140, Node Information Response</small></td>             <td><small>allows a host to be fingerprinted</small></td>         </tr>         <tr>             <td><small>151-154</small></td>             <td><small>deny by default</small></td>         </tr>         <tr>             <td><small>others</small></td>             <td><small>not yet used, deny by default</small></td>         </tr>     </tbody> </table> <p><br /> We've talked about filtering ICMPv6 types <a href="https://www.cert.org/blogs/vuls/2008/11/icmpv6_types_and_hostbased_fir.html">before</a>, so there's no reason to discuss it again. Instead, let's focus on some test case generation options.</p> <p>There don't seem to be many tools that can generate arbitrary ICMPv6 packets. One of the more commonly used tools is ping6 or ping -6. The ping command sends an echo request message to an individual IPv6 address. Creating arbitrary ICMPv6 types requires a different tool.</p> <p>Newer versions of the scapy packet crafting tool can be used to generate most ICMPv6 types. Here's an example of typical scapy usage:</p> <p style="margin-left: 40px;"><code># scapy<br /> Welcome to Scapy (2.0.1-dev)<br /> &gt;&gt;&gt; a=IPv6(dst=&quot;2001:1::2&quot;)/ICMPv6ND_Redirect()<br /> &gt;&gt;&gt; send(a)</code></p> <p>To list the available ICMPv6 types (layers), use the ls() command:</p> <p style="margin-left: 40px;"><code>&gt;&gt;&gt; ls()<br /> ARP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ARP<br /> ASN1_Packet : None<br /> BOOTP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : BOOTP<br /> CookedLinux : cooked linux<br /> ...<br /> ICMPerror&nbsp; : ICMP in ICMP<br /> ICMPv6DestUnreach : ICMPv6 Destination Unreachable<br /> ICMPv6EchoReply : ICMPv6 Echo Reply<br /> ICMPv6EchoRequest : ICMPv6 Echo Request<br /> ICMPv6HAADReply : ICMPv6 Home Agent Address Discovery Reply<br /> ICMPv6HAADRequest : ICMPv6 Home Agent Address Discovery Request<br /> ICMPv6MLDone : MLD - Multicast Listener Done<br /> ICMPv6MLQuery : MLD - Multicast Listener Query<br /> ICMPv6MLReport : MLD - Multicast Listener Report<br /> ...</code></p> <p>To view what parameters a layer will take, use the ls() command again:</p> <p style="margin-left: 40px;"><code>&gt;&gt;&gt; ls(ICMPv6ND_Redirect())<br /> type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ByteEnumField&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 137&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (137)<br /> code&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : ByteField&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (0)<br /> cksum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : XShortField&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = None&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (None)<br /> res&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : XIntField&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (0)<br /> tgt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : IP6Field&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = '::'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ('::')<br /> dst&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : IP6Field&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = '::'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ('::')</code></p> <p>This information can be used when creating packets to allow greater control over specific packets:</p> <p style="margin-left: 40px;"><code>a=IPv6(dst=&quot;2001:1::2&quot;)/ICMPv6ND_Redirect(tgt=&quot;2001:1::3&quot;)</code></p> <p>&nbsp;</p> <p><em><strong>Disabling/enabling privacy extensions</strong></em></p> <p>Currently, IPv6 addresses are typically assigned via stateless autoconfiguration, DHCPv6 or static assignment.</p> <p>With stateless autoconfiguration, an operating system is expected to generate part (usually the lower 64-bits) of its address. If privacy extensions are enabled, the generated address will be pseudo-random. This is good for privacy but makes remote management difficult.</p> <p>On Windows Server 2008, privacy extensions can be controlled with a netsh command:</p> <p style="margin-left: 40px;"><code>C:\&gt; netsh interface ipv6 privacy enabled|disabled</code></p> <p>Linux users should check /proc/sys/net/ip6/conf (the exact location varies between distributions and kernel versions).</p> <p>Testing the address status of other systems on the same Ethernet segment is possible, assuming that echo requests and replies are accepted on those machines. If the following commands run on a Linux system produce predictable addresses, privacy extensions are disabled:</p><p style="margin-left: 40px;"><code>$ ping6 -B -I eth0 -I [global IPv6 address attached to eth0] ff02::1<br /> $ ip neighbor</code></p> <p>Windows users can use these commands:</p><p style="margin-left: 40px;"><code>C:\&gt; ping -S <code>[global IPv6 address] -6 ff02::2<br /> C:\&gt; netsh interface ipv6 show neighbors</code><br /> </code></p>]]>
    </content>
</entry>

<entry>
    <title>Managing IPv6 - Part 1</title>
    <link rel="alternate" type="text/html" href="https://www.cert.org/blogs/certcc/2009/08/managing_ipv6_part_i.html" />
    <id>tag:www.cert.org,2009:/blogs/vuls//1.44</id>

    <published>2009-08-19T14:07:00Z</published>
    <updated>2009-08-19T14:07:46Z</updated>

    <summary>This entry is the first in a series about securely configuring the IPv6 protocol on selected operating systems. Although this entry focuses on how to disable IPv6, we are not recommending that everyone immediately disable IPv6. However, if critical parts...</summary>
    <author>
        <name>Ryan Giobbi</name>
        
    </author>
    
        <category term="Analysis" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="https://www.cert.org/blogs/certcc/">
        <![CDATA[<p>This entry is the first in a series about securely configuring the <a href="http://en.wikipedia.org/w/index.php?title=IPv6&amp;oldid=306038060">IPv6</a> protocol on selected operating systems. Although this entry focuses on how to disable IPv6, we are not recommending that everyone immediately disable IPv6. However, if critical parts of your infrastructure (firewall, IDS, etc.) do not yet fully support the IPv6 protocol, consider disabling IPv6 until those components can be upgraded.</p>]]>
        <![CDATA[<p>The following are some of the reasons why an administrator would want to disable IPv6:</p>
<ul>
    <li>Many networks have IPv6 connectivity running on their LAN but do not have IPv6 WAN connectivity. Programs may see the connectivity on the LAN and unsuccessfully attempt to use IPv6 to connect to remote IPv6-enabled servers.</li>
    <li>Local IPv6 traffic might be able to bypass IDS systems or other low-layer network defenses.</li>
    <li>Operating systems may obtain global (publicly reachable) IPv6 addresses by creating <a href="http://www.cert.org/blogs/vuls/2009/04/bypassing_firewalls_with_ipv6.html">tunnels</a>.</li>
    <li>Running an additional protocol increases a system's <a href="http://www.cert.org/blogs/vuls/2009/06/vulnerabilities_and_software_a.html">attack surface</a>.</li>
    <li>Global addressing restores end-to-end connectivity.</li>
</ul>
<p>There are also more than a couple of reasons why an administrator wouldn't want to disable IPv6 connectivity:</p>
<ul>
    <li>The network has full IPv6 connectivity, and software on the network actively uses some of the features (usually the large pool of <a href="http://en.wikipedia.org/w/index.php?title=IPv6&amp;oldid=306038060#Addressing">global addresses</a>) found only in IPv6.</li>
    <li>Network services running on the LAN are actively using IPv6.</li>
    <li>The network is designed to be a &quot;dump pipe,&quot; and the administrator is expected to not interfere with passing traffic.</li>
    <li>Global addressing restores end-to-end connectivity.</li>
</ul>
<p>Below are instructions for disabling IPv6 on some popular operating systems. At the bottom of the entry are links to scripts that you can run from the command line.</p>
<p>&nbsp;</p>
<p><em><strong>Disabling IPv6 via firewalls or access control lists</strong></em></p>
<p>To disable IPv6 at a router or firewall, block protocols 41, 43, 44, 58, 59, and 60 as well as UDP ports 3544 and 3545. This firewall policy will likely miss some tunneled and non-routed IPv6 traffic (such as Teredo-compatible tunnels on non-standard ports) running on the local network.</p>
<p>There is too much variation in firewall syntax for us to list rules for every vendor; instead, we've written a few rules in Cisco's ACL syntax and included an ip6tables script linked at the bottom of this page.</p>
<p><span class="content">
<pre style="margin-left: 40px;">
access-list ipv6 deny 41 any any
access-list ipv6 deny 43 any any
access-list ipv6 deny 44 any any
access-list ipv6 deny 58 any any
access-list ipv6 deny 59 any any
access-list ipv6 deny 60 any any
access-list ipv6 deny udp any any eq 3544
access-list ipv6 deny udp any any eq 3545 
</pre>
</span></p>
<p>&nbsp;</p>
<p><em><strong>Disabling IPv6 on Windows XP and Server 2003</strong></em></p>
<p>The easiest way to disable IPv6 on Windows XP and Server 2003 is to run this command from a prompt with administrator privileges and reboot:</p>
<p style="margin-left: 40px;"><code>netsh.exe interface ipv6 uninstall</code></p>
<p>&nbsp;</p>
<p><em><strong>Disabling IPv6 on Windows Vista and Server 2008<br />
</strong></em></p>
<p>The IPv6 protocol cannot be uninstalled from Windows Vista. The most <a href="http://technet.microsoft.com/en-us/network/cc987595.aspx#EBE">effective</a> way of disabling it is to edit the registry:</p>
<p style="margin-left: 40px;"><code>[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents]<br />
&quot;Compatibility Flags&quot;=dword:0xFFFFFFFF<br />
</code></p>
<p>If you don't want to edit the registry, the following netsh commands will effectively block IPv6. Note to administrators: using the &quot;<a href="http://technet.microsoft.com/en-us/library/cc748991(WS.10).aspx">domain profile</a>&quot; feature of the Windows firewall will allow you to create rules that block IPv6 connectivity based on whether the user is authenticated to your domain.</p>
<p style="margin-left: 40px;"><code>netsh advfirewall firewall add rule name &quot;IPv6&quot; protocol=icmpv6 dir=out action=block <br />
netsh advfirewall firewall add rule name &quot;IPv6&quot; protocol=icmpv6 dir=in action=block <br />
netsh advfirewall firewall add rule name &quot;IPv6&quot; action=block protocol=41 dir=out<br />
netsh advfirewall firewall add rule name=&quot;IPv6 protocol 43&quot; protocol=43 action=block dir=out<br />
netsh advfirewall firewall add rule name=&quot;IPv6 protocol 44&quot; protocol=44 action=block dir=out<br />
netsh advfirewall firewall add rule name=&quot;IPv6 protocol 58&quot; protocol=58 action=block dir=out<br />
netsh advfirewall firewall add rule name=&quot;IPv6 protocol 59&quot; protocol=59 action=block dir=out<br />
netsh advfirewall firewall add rule name=&quot;IPv6 protocol 60&quot; protocol=60 action=block dir=out</code></p>
<p style="margin-left: 40px;">&nbsp;</p>
<p><em><strong>Disabling IPv6 on Red Hat Enterprise Linux 5</strong></em></p>
<ol>
    <li>Edit <code>/etc/sysctl.conf</code></li>
    <li>Append &quot;<code>net.ipv6.conf.all.disables_ipv6 = 1</code>&quot;</li>
    <li>Execute &quot;<code>sysctl -p</code>&quot; as root</li>
</ol>
<p>You can modify &quot;<code>net.ipv6.conf.all.disables_ipv6 = 1</code>&quot; for a specific interface (e.g., &quot;<code>net.ipv6.conf.eth1.disables_ipv6 = 1</code>&quot;) to selectively disable IPv6 on that interface.</p>
<p>The following steps will disable IPv6 connectivity on all interfaces:</p>
<ol>
    <li>Edit <code>/etc/modprobe.conf</code></li>
    <li>Append &quot;<code>alias net-pf-10 off</code>&quot;</li>
    <li>Execute the command &quot;<code>modprobe -a</code>&quot; as root</li>
</ol>
<p>For those of you who really want to disable IPv6, add these lines to your iptables scripts:</p>
<p style="margin-left: 40px;"><code>ip6tables -P INPUT DROP<br />
ip6tables -P OUTPUT DROP<br />
ip6tables -P FORWARD DROP</code><br />
<code><br />
ip6tables -I INPUT -p all -j DROP<br />
ip6tables -I OUTPUT -p all -j DROP</code></p>
<p style="margin-left: 40px;">&nbsp;</p>
<p><em><strong>Disabling IPv6 on Ubuntu Linux (version 9.04) </strong></em></p>
<ol>
    <li>Edit <code>/etc/sysctl.conf</code></li>
    <li>Append &quot;<code>net.ipv6.conf.all.disable_ipv6 = 1</code>&quot;</li>
    <li>Execute &quot;<code>sysctl -p</code>&quot; as root</li>
</ol>
<p>You can modify &quot;<code>net.ipv6.conf.all.disable_ipv6 = 1</code>&quot; for a specific interface (e.g., &quot;<code>net.ipv6.conf.eth1.disable_ipv6 = 1</code>&quot;) to selectively disable IPv6 on that interface.</p>
<p>The following steps will disable IPv6 connectivity on all interfaces:</p>
<ol>
    <li>Edit <code>/etc/modprobe.d/blacklist</code></li>
    <li>Append &quot;<code>blacklist ipv6</code>&quot;</li>
    <li>Execute the command &quot;<code>modprobe -a</code>&quot; as root</li>
</ol>
<p>Ubuntu users who run <a href="https://wiki.ubuntu.com/UbuntuFirewall">UFW</a> can check <code>/etc/default/ufw</code>. If <code>IPV6=no</code>, you can block IPv6 connectivity with this command:</p>
<p style="margin-left: 40px;"><code>sudo ufw disable &amp;&amp; sudo ufw enable</code></p>
<p>&nbsp;</p>
<p><em><strong>Scripts</strong></em></p>
<p>Here are files you can use to disable IPv6. As with all scripts, make sure you understand the implications before running these on your system.</p>
<ul>
    <li><a href="http://www.cert.org/downloads/IPv6/ip6tables_rules_dropipv6.sh">ip6tables router/firewall shell script</a></li>
    <li><a href="http://www.cert.org/downloads/IPv6/ipv6.cmd">batch file to disable on Windows XP and Server 2003</a></li>
    <li><a href="http://www.cert.org/downloads/IPv6/ipv6_disable.reg">reg file to disable IPv6 on Windows Vista and Server 2008</a> (Microsoft has published <a href="http://support.microsoft.com/kb/310516">instructions</a> on how to import. Also see the instructions in the solution section of <a href="http://www.us-cert.gov/cas/techalerts/TA09-020A.html">TA09-020A</a>.)</li>
</ul>
<p>&nbsp;</p>]]>
    </content>
</entry>

</feed>

