Java学习之——Java Serializable
1.什么是Serializable接口?
http://en.wikipedia.org/wiki/Serialization
Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。 将序列化对象写入文件之后,可以从文件中读取出来,并且对它进行反序列化,也就是说,对象的类型信息、对象的数据,还有对象中的数据类型可以用来在内存中新建对象。 整个过程都是Java虚拟机(JVM)独立的,也就是说,在一个平台上序列化的对象可以在另一个完全不同的平台上反序列化该对象。
类的可序列化通过类实现 java.io.Serializable接口来实现。没有实现这个接口的类将没有序列化或反序列化这两个状态。一个序列化类的子类(subtype)它们自己也是序列化的
。序列化接口没有方法或值,实现它仅仅是为了表示序列化的含义。
2.为什么要有序列化?
StackOverFlow上,有相关问题:
http://stackoverflow.com/questions/2232759/what-is-the-purpose-of-serialization-in-java http://stackoverflow.com/questions/441196/why-java-needs-serializable-interface
1.在程序运行过程中,所有的对象都是在内存中。当运行结束时,对象所占的内存被操作系统回收。程序就像是忘记了它运行时发生的所有事一样。序列化正好解决了这个问题,
通过保存对象到磁盘上,因此它可以在下次开始时重新读取。
Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长。
但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java对象序列化就能够帮助我们实现该功能。 2.方便传输和持久化:序列化是将对象转化成能被存储的格式(例如文件或内存缓存或在网络连接中传输)。这种机制允许你将对象通过网络进行传播,并可以随时把对象持久化
到数据库、文件等系统里。
3.既然Serializable中没有方法,为什么不将所有类都默认序列化?
为什么不将所有类默认序列化,而必须通过实现Serializable接口来实现Java的序列化机制。
主要有三点原因:
1.不是所有的对象都能在序列化状态中找到有用的语义。例如,一个Thread对象和当前的JVM的状态有关。反序列化的Thread对象没有了保持有用的语义的上下文环境了(Context)
2.对象的序列化状态形成了类相容性的合约。保证不同版本的序列化类的兼容性需要额外的工作和考虑。因此,将一个类变成可序列化类需要深思熟虑的设计的决定,
而不是默认的情况。
3.序列化允许访问非短暂的、私有的类的成员,原本是不能被访问的,包含敏感信息(如密码password)的类不应该被序列化 或 externalizable。
import java.io.Serializable; /**
* 实现Serializable接口的类Person
* @author lenovo
*
*/
public class Person implements Serializable{
private String name;
private int age;
private transient int no;//临时的,该属性不会被序列化 public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Name:"+this.name+"\nAge:"+this.age+"\nSSN:"+this.no;
}
}
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream; public class Test {
public static void main(String[] args) {
Person p1 = new Person();
p1.setAge(20);
p1.setName("John");
p1.setNo(123456); try {
FileOutputStream fileOutputStream = new FileOutputStream("C:\\Users\\lenovo\\desktop\\PersonDemo.txt");
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
System.out.println("1.序列化:"+p1.getName());
System.out.println(p1.toString());
objectOutputStream.writeObject(p1);
objectOutputStream.close();
}catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} try{
FileInputStream fileInputStream = new FileInputStream("C:\\Users\\lenovo\\desktop\\personDemo.txt");
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
Person p2 = (Person)objectInputStream.readObject();
System.out.println("2.反序列化:"+p2.getName());
System.out.println(p2.toString());
objectInputStream.close();
}catch(Exception e){
e.printStackTrace();
} }
}
运行结果:
aaarticlea/png;base64,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" alt="" />
序列化文件(以16进制保存):
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAdsAAAC9CAIAAAB0wkCQAAAgAElEQVR4nOy9eXgU152off6YYDKO8ZbJMll87es4YzvBgAGzGRBeQALiuZPrLTFIQGxsBN7iYJDYBEhCC5KQhLZudbe61fu+71v1vqn3fZFYJLAzifHkJs93v+d+4++PU9VdLbWEhO2A53Y/79NP9emqOqdOVb/8+NWpI0BTxagYI3jUsRFVnKqOU9VxmiY+qo3TtQmGLsnUJ1mGFMeY5hjTXFOaZ87wzRkBkuUjWQGSESJZIZIVQMx5Mnxzhm/O8MxpnjnNM6FwTWmuKcU1prjGFAdiSELYhiRbn2DpEyx9gqlPMHUoDF08D10LidG1MbqmwKgahaaO0dRRqipKVUVHphMZUUZGlJERRWREEaEoIhRFhCQPk+RhkixMkoWHZeFhWZgoLWJIEhqShAbFwQFxcEAc7BcF+kWBPqH/otB/UejvFfh7BGM9grEe/lgPb6yH5+vh+Xt4Yz08fzdvrJvv7+H5e3j+bp4fLnfzA918fzc/cIHv7+b7u/iBLr6/k4fSwfN3cP0d3EAHxw85j9EOYY+1sf1tLH8ba6yV5YO0MFHOMb3nGN5zDG8zw9tM9zbTvefo3nO45Wa6t5nuaaZ7miCjnsZRTyPN00j1nKG6T4+4G0bcDSPuUxT3CZLz+LDz2LDjGNFRT3TUEe11BPtRgqOO6KgjFDiKo45gr8czZK8btNcN2utnMjQNxzE8hBIcJzhPFHOc4DxOcB0nuo4TXccJzuME57EhB7r/AXvdgK1uwFo3YD3ab61DsdTn6UMgdaUx112claMXzUd785hmYDyCp2cmBsjHGIcL6POFR3qNRy6a6vrM9f3IsQHL8SHbSYL9FNHeQHQ0DDtPk1xnyO4zFPdZivvsiOdL0oiH4mmkeM5SPGfJ7jMk92mS+9Sw6wTBeXzIWT/oONpvP9JnO9xr+6jH+kE38n6X+d1O86FO08EOU+15U+1544H2+dFmfKfN+E6b8UCb4Z1Ww/4W/f5zurfO6d5s1v6uSbP3rGrPGWXNaUV1g3zXSSnkjROS3x4Xv3FcMifSIk5I3zgh3XVzZCU4Kdt1Uj5Pdk/jlGIWlLMB8EaGUqaqYlDEVE2chumYoUsw9Um2IQVFzDdnBEhGaMmKrVmxLSux5aS2nNQ+LnNg2PPkpPaczJ6T2CBZiS0rsWbFxYgglozIkhHmQTICJJ2Hb07h4ZlTPFOKZ0pxTUmuEYWTBzV7Ig/LgFO8Ps7UFsHQxBmaOF0TH9XERjVxnNNjNHUMdboyOqKMUJQRiiJCxgw+LAsTZWGiLESQBQnS4JAkOCQJDokLDIqDUOJ5lQ+IQ4OSMFwYkIQGJKF+SbhfEuoXh/sl4X5xqE8c6hOjCxfF4Yui8EVRqFcY6hWGekWhXmGwVxjsFQR7BKEeQbBbEOwWBC/k4QcgXfxAFy/QyfN38gJdvEAnN9DFDXTxAl28QBfX38X1d+Io8j7b384aa2ONtTJ9LQzfObq3edTbNOppGvWcpWHkf8ZUzxmq58wIBtVzhuo+Q3WfxTMyf4rVQPU00jxNNE8TzdNM8zTTvM007zma9xzN20rzttJ8rTRf66ivddTXkofmPUfzNlM9zVRP84i7ecTdPOJqorjgexPF1UxxNVOcRZAdc0Eq0ESy42ksYGsctjYOW8/OAXE6Z4jWM0TLGaLlNMFymmBpIFgahlBODSGnhpCGIUsDwdJAsJ4mWs8M286S7GfJjqYRZ/OI6xzV3UJzt4562+i+NoavneE7zxw7zxw7z/RPo+PLcZ4x1kYfa6P7Wmi+Zqq3ccRzhuxuGHadIDiPDTrqBhzQyx92Wz64gLwHvdxhOjh/KbehvNNmfKfV8Harfn+Lfn8LKuV9jWoo5eoG+e5TsryR3zgxt45nGPnLSPnkAqQ83chzSbm0l6cbmaqKUdUxTMSJUW2crksw9QmWIckxpnimNN+cFiAZkTUrseWk9pzcMS53jCtdEyrXJbW7JBNq14TaNaFyTahcE0rXhNI5oShiXOEcl0McOYjMkZPZcdhyUtTmmTxiW0ZshaTF1rTYkhYVI4QgGOa0wIxp3ZTim1Ch84zJPPkgHY3TDUnM4AmmLsHUJhjFUTkMw2nqKFUdhUE39DVFEaYowjD0JqOE8xInySMkRQR9R4mSFNFhDKIiSlREiIooUR4lyqMEWZ4IQRYZkkUG4bs0MiiNDEgjA5LIgCQ8IAkPSCIDkki/JNIvjvSJwyUQhTDjY4hQLgpReoWhHkGwmx+8wAteQG2Oyrqd4z/P8rez/O0sfxtzGmMorLF2CPPW8LdDm7D851n+Dra/k+3v5Pi7OP4LHP8Fjr+bE+jhBHo4gV5OsAA32MsNFOAEejj+bo6/m+3vZo91s8e6Wb4LLF8309fDgoz1snyQHqavh+nF04vRw/T2MD09TE93ATfkAoThvkB3X6C7u+juLrqrczZGndPoGHV2jDrP05ztGG00RyvV0Up1tFAdLSP2lhH7uRF7y4i9hepopTlbac62UVc73X2e7ulgeruY3gvssW6Ov4fj7+UFIRd5wYv80FeDINQnCPUJQhd5oV5esJsT7GIHOpj+NvpY66ivmeo9S/bkvXy03374ovX3PZZCsLygSLktj+FtTMr5MHkfFibvPiWDUn7jpHTXCekcOt41e5g8HynvPiHbfauRcgkjn5TvPrlAI+OlTFPHYJqCrkkwtAmGLsnSJ9mGJMeUwrtYZs8pnOMq14TafUnruaT1Xtb7rhjGrhhxGCC+IvS+y3rvZV2BS9o8ngIaN4raPVHANaF2Q62PF3CiQLMrHDmI3JGVO3Jye05uz0Jk9qwUYstKbVmpFZKRWjMSa0ZizYgtGbElI0bSYiQtQnAqhzY3pTGP40NyLAAvZFfiTG2MqY0xoLgxRrWxUU1sFCZVYBiuiY1q0P+CjGoTNG0C/55foGoSVE2CqkYZUSdG1HFKHlWcooqTlXGyMk5WxcmqOFkZJyljJGWMrIyR8ChwTPuIMSyPESGyGEEWHZJGB6HuxZF+caRfFOkThvuEYWjtXsEtwZ/BjHUuCkJ9Qki4XxgeEIUHxeEhcYQgjhDFkWFJhCSJkKRRkjRKwSBLo2RppABcRxImiSMkcZgkDpHFIQrGiDg0glsYEYdGxEE8FOydIg5QRHj8echCP1noJwn9JMHYsGCMyB8jYAyVwDfE9w3xihjk+Qa43gGut5/j7eN4L7K9vWxPD9vTjeK+wHJ3s9CPPWxvL8d7kevr44318/0DgsCgMDgoDA2JQrBbiJIIURodlkaHpbFZkd0cUjFESZQgjgyKIv2CcC8v1M0JdrL87YyxFpqvacR7huw+RXQdH3LCYPmj3oKUYfpi/rmL2jbjgTbTDClrSobJu07KZkp5VwEpbmG6l+dp5OmclEG9zsfF1dNRVJ8qMLeXwe8OfLgDe1VVVW3duvXFF1/ctm3b9u3bYeGbBz7kmlJ8c1qIZMTWLIyLla4JteeS1nNZ77tsHLti8l9FAleR4KQlNGkJlgYJTiLBSXNw0hy4iuJHMfmvmvxXTP4rRkiR1i8X4busL3BJ5y1C65kowj2hdU9o3BMa94TaPY7iGle7JlSu8QLOcZVzXOkYVzpwQsckDkEljuZb0NhcZMmgwTiSEphTAnNKYErxTUk+FnFzjUXpFLYhyTYk8AE4RoptSLGNxRhSLAP6DmHCd32KqU8xDCmGPsXQJxk6SIquSzF0KbouydAl6QVSdF2Krk3iGS3+mC8c1SZHNUkaRuHfAFWcooxTFHGyIg6tPSyLEWUxoixKlOHj9yhBFiVIowRp4SPxVhmWRaERyPIYRRGjKuM0VZyuijPUCaY6wVIn2RoUjibJ0RQ+4kiw1Qm2OsFVxyE8dYyvifLVUYGmgLBARJBHPSt8dYSvCvNUYa4qzFWGOMoQWxFiKUJMRYghL0Cfhmw6o7IgTRakSYNUaXBEEqSIAySRf1jkJ4r8BJGfIPQPCceGhGNDAj+EIPQTRAGiKDgsDg5LQiRpmCyLUGSREXmUqojC/qGpEjRVYhSiTkLoXw6aKjGiiJPlsWFpdEgcGRCGL/JC3RwYL8Ng2X1qGEoZi5QvIO91mQ91LiB3UdtmrG0zHWgzHZieu9C+2ZSXsqKmQV7dIKs+Jd99UpYXKE7H0hnIMDA1zyNlgVlYPkPK8t0nFfOk+qRiupdPzeZlZfUpZfUpFQTs2LGju7ubwWAMDw+3NDW0H3uTcGZP08nDg4ODDAajq6trx44dn/75L0xNWGzNwtBY7Z7QeC7pvJcNPtTFluCkNTRlDU3awlO28JQtNB1raNIamrTkQTV91RK8iqBcQYJXkMAVMw4THv8Vk/+KaeyycQYGH+SSwXdJn0dN2QS2N6kndN4JnWdC55nQYu/Q1HlfY5oeVxcEnVM5c0oHChZ0w4g7J7NnZbasNJ88gYKGqRIYXKN2TgrMSb4pyTcledh7kanRWDvFNSW5phTXlOKidztxDNcBUNdmSnNMaXg3FaPI3WxDml2k7zTLkJ5RmGLqUywMtj6flsGhSzJ1SaYOE702ydAm6ZrkqCZBg4JWJUZUCYoqQVHGKcoYRRkj51HgwJVTlDGKMo4RmzdxqjJOVcVpqjhdnWCqE2xtgqtL8nRJvj4pNKREhpTIkIaIi0gVk5QYklJjQmZIyA1xhTGuNMZVxrjKGFeb4mpTTG3ME50DVR5DVGmIKAwRuT4i00WkuohYGxFpCyrnz4B4divY2E9UR3jqCDePynT0WbD2tIGtDJ17C4A3uaOyIFUWHJEEKZIAWRIgSQLDGCRxgCQJkCVBsjRIkYUoshBVHqbKIzRldFQZHVXFGeo4Q51gahJMTYKpTbIguq8AJrwAoJdlMaIkOiiK9AlCPdxgJ8vfRh9DpUx0HRt0HO23/aHX+mG3pThMNtW2m2rbTQfaS4fMtfkVClI2vtNqeLvFsP+c/q1m3ZtN2t81avaeUe05raxpUKBGxqT8RmkXl/RyqRt3pcCMPIN5S7l6Jqh5ldPUjNcxauTe3t7u7u66I38Qtrz8R1H1Jc6uJKP65MmTvb29vb29O3bs+OKLLwZYeqktJ3fkMxV5HWsOgfzrFDV6zQGJ6N4D4D3+NUfkmj0yZY9M2dGSKXtkyg7FbRytADvbDZPQ19bQpDV01YInWARq7eAVJFDsbv8Vs5a6Gexo0V42+TFTa0Y2gx3nNEW+NngvGbyX9Bg67yWdd0LnnRZTj0OKNO0aVznHlc6c0plTOHGJkXwQbc1IrbJ9AOyjZCQwqY2kRRb78QqAf+0hpabdn+SbU3xzmo+gCJCMAMnwsXc+qR6A+vNwGcnwzBk+HK8yA0ziGQhvmtmNaa7RXrcZrD1n5xrTedpr8a2ra4e6NxRgG9IsfZqpTzF1KYYuxYABtSYfTSdoqKzjeGhFJGYg+m1Rr2z7iJmgaeJ4RjVJuibJ0CSZ2iRHl+TpUwJDSmRMS8xpmTkjRzIKJJtHacGBZJVIVoVkIGokrbGktZaU3pI0WJNGa8JsjSPWmMUas9hiVrhgjVmsMas1CrHMDmKJIpao2RI1IhEDIjiQP4JagdwQkxtiMkNMZohJDTGJvsBI8zawaWBEX1Qo0SMnNoH1jWahNnr+bQD289mqCFMZpitCo/IQTR6iykMj8iCEKg+hKEI0RXhUERlVRhiqKEMdY2riLG2crU1wdMm2A2DGq67dkOZ+CTj6FEtnPbwR29+GgXZJdEAY7uWFLnAC55n+1lFf04j3DMl9guCsH3R83Gf9qNf6wQXLe13Iux3mg+fNeeHenDZT7exS3ndWPU3KWBJDtuvE3EYulvI8vDynkee+WTeHl5U4Kc8EZ+T6+vqPP/74g7de/ULx6tBHz1f/au171VW1tbX19fX19fXQyK0DPLljXOEcV7smtJ5LOt9lo/+KWUutAKCiL2ALTzkiU05BA/hY74xdc8auOaPX5AM7wcd6Z97RUf17ALwnmHJEpxzQ0abRLWDneeOUPYw5OjxZROiqtRjMzlcQPIEr5sAV0kdgc68PDa79l03akbyjC5oeu2wcu2T0XSoKq6GdPZdgKJ2PowtqLqQ7xlXOnBJD4cgpHIUktcyWpbVXgXdlUjQrnRZb7ScqwPpWuwi9wSjZCwCoIAwjKQGSFqDvaQGSFiIZFEsWG2qSFVqyQlI9APWd6IDCDAqpHoD6DkzTfPMcZIsg1YPNw0RThg8xZ84fBOCgDK58/iCA3/JMGR5mdq4xwzFmOMYMG7VzioXaOcnIJz00qKNHNQkIXZunRIaErhW/AcAbg9hHNuEZAMDbYro2md+QgcVoHH2Kb0gLjWmxKSMzZxSWrNKaVduyGltOOytZnS2rs2X1tqzBnjXZM2a79BAA71ITDkfc6Yi5nVG3M+JxRjyOsNcZ9jrDXtphAA4z4bKjgGcGbkfYaQ87bLz3AKhoN5qtESMSHTy47awwpjHH1ea40hxXmhJ46C3bwOYhuimhNCUUpjiKEWnYDDY0I1DfQl2Mr41y1FGWKsxUhhnKMF0ZHlWEMMIQujJMV4bpqghDHWVqYixNjK2Ns3UJji7B1Se5hiTPkOIbpXsA2ENM841pfv5czwNiS1XR5WHK8E0ZnjHddgDsGkzS1UmaUvQ6ACtPIoOiSJ8g3M0NdbICbXR/M9V3luw9New+PuQ80m//Q6/tw27L+13Iu51zGvn8DEoZ+e0W/f4W7C5fPn1xWlHdIN99Sr67OF6eU81fUaR86mZGxql5zkh5diPv27dvz549b7zyUufb668MbslcrDj/1tp/e2lHTU3Nvn37oJGbexlyx7jSOa52T+i8lw2+yya/r/VFUNHnt4Ym7eEpR+SaK3bNFbteAKE/B3Z2IrD8mjOqfx+A9wVTzuiUMzrliE45zKNbwM4O85QjgjkaZdIembSHUfCOznvZGpwRQXNOAnCSlA+c0agZS3f4p6vZMIYFzngvo2q+NFvIjMs+55ROmNPIFoJl6fAGUHVSkpHaMhJrRmKxn6gA69vsYmzshwiR7AVgXatdUHTnELo4I0RgbjpbgFwPQH0X9hHVNBlqGgoaG/2d93V+MDgyA7NsDwB7SIWh4tDI6PrC4XWg6piwSOI8U7YgaFwEDb2MBc7FQF/rkgz4rS7F0KErY0h2AbBrEFfCIawplCSZuiRLn2LrUxxDimdIC0xpiTkjQ7JKS1Zty2nsOZ09Z3CMz4bRkTM6ciZHzuTIIc6s1Zm2OyXvA/ABLeZ1RfyucMAdDLoCQZc/5PKHIaMfAfAR1+UPufwh11gIXfAHZxBw+v3OgE/W+zx4oVMatNtCFmvEZIkYkJgeieuQuBZJaJCEBknmYbVWggoCC/2YUJshljObwbMtFoUpLjPGJYaYCEpZE2WrIyx1hKmK0FVhHBFGHnWEqY6yNDG2NsbRxjm6BFef4BlSPEOKb0zzTdI9AOwZzghMGYF5AQy3VIHNw8PFhXxThmtIs3QphiY5qk6eeQuAN4VD4mi/INzDDXWxA+cZ/haar4niPT3sPklw1Q84jly0/b7b+kEX8m6n+RDeyDMVPBM0uWE60G6CQ+LebjXgh15gI5SV1Q2K3afk1TONfEK6u2SOeJ5h8sk5jXxyIUbO5yXmNnJDHlV1gwrA23fbt29//vnnV69evfuFJ5pe+/kXxBVH/+cvX3jhBfjtF1980dTLgCkLrfuSznvZMHbFrKNWgJ3txkl7eNIRmXJGr7lj1zzx6564/gMAPhBec8eCXdvAcwNBd+yaO3bNFdO/D8D7wmuuKIaZ/hzY2WG+5oxO0T7GpT4iU47IlIN/Kl/0Hm/SHp6U9u0EL55690UAADjEnRT37cC+39FmuGoJag4BcIiL5Td01M1gR4sOClp9ML+vj9QmP5bT6D6BlZ4gYF4e+rDwX763GRNaz8TABwA8R2ahwbJiPwD7R8dVrtzF9wtrvkWFwbKzYQvYcN4ptWcktozE6jhZAda32/Mj84RIuusQABUEsiUtRHA5jYphsiUjsmS6Cjmg+i5LVkzJG9l5vAIAULX3UFWh1kMyoSUrFA2vA4X9kJCsEMmRWqtABen4oWnl2c6DAByUwQd5pn8UDq8DVceFWSGSJbXma4GOzpw/CEBtfQ0AAFTV8dO4/yDXtcDc9FBdoWEHJDCabjkAwAHCkU1o8ZpmG0ufYukluwHYPVRIarP0tiObADggYRlSLINkd34/tVK+KS0SDm8AVafb62HZpg63kXYcXeE5isA1YXJNmFyelufym21vUYwjrpzFlbO6Mg4lofAN+AOP/hEA4GO6O+Z2I53PAfDc0fdx339Ai7tdMZcz5nLGXK6YyxVzQ9wxlzvmckddrrDTHXQwPgIAvMd02f12W9BiDZssUaNoYBPY1ixO6i0pvSU1dAiAQxK9NcVtrwQVhObCuSCwLSmtxXa2AmxstarMyYsHAagVSQxxUvM2sHGg7m243taPmZFz+7GuO2tiqiNMdYTJ7F+D7WlNI8LVJXh6GBqn+Ma0wJQWmGR7AdhLygjNGZE5I0KyIsRZdKUhWXJrFQBVx4VZEZLtOggAqN9b+IWA9a1OEZKFCE1ZvjHD0adZ2hRDY/39s2DVKYQoiQ4KIxd5oQvs4HmGvxWOuyB5ThJcxwacR/vsh2HiohM51GEudq75JrQX8U6b6e1WKGXDW+f0bzbrftek2XtWvQeXvkAzGDgplzbyzLHGJ2dSPHximpSLRhnnvQzHSMzDy/jEcUNJcEauqqr69db1I/t+tqfi4Q+2/vSLjp+c/LefTTOywjmhcl/Sei7pvZeNY1fMnJMAnBoJT6EBcvSaO369YGTRdU/8ukd0GmyjK2PX3bHr7pj+A2jkGAYMos3XnIIGABpo0WuFFIfgFFSzPTJp58PlSUnfTgDAu7xJW3jSZqRVgB3thqKEhujiDvAHDZrW0FErwI5W3RUkoD4IwEH2FbP/itmvrgWglg1zGgC8MMIfu2QcUx0AYFO3R++7NPQhAM9TON4JnXdCxzgOwPZG1YRGSdkItp9VTqjd48yu7eA5MsM13vc+AM+R6a5xpSOnoB4DoKpBmpXbszJqPdgyTIVDp6GR2/JGTomQFKm1ElQQSIj9eAVY32YXWdIixHG8AqxrdUyLiEXWrIh8DIBjXVbX8QoADslF1pzIkoOFnZacyJIViYbXAbCXnBVasiILtpolR26rAgCsa3MJLTmRRb4XoOVCEWkdONZpyQmRnBDJdR4E4KBcZMkJ4bYVJDLcFjM4qRVd7jgIAKiqF2R4pgyPWIcmneH9Q32aPVQHQOURbiovXCjflgMAYPIdaK4EoK5Vn2JjRmbrC7QeAOCABP2KkOIaUzyjZA8Ae4bTYuHwBgBABYllH9dSj0MRC10TZgVlMwAHRyfMUMcfKBH3BOKeEHZtB+A42TVudeXs7rTLnfS4hR8C8BE9EHZ7Yy6npXMLeK7N6iQfBaCOZko5TSnaQQAOip3mZB4XXEDyJFAsUYc17LAFJedfAACA5zvEPqs1YLZETOKBzWBbsziht6X0VszIthS3vRIAsKndprel9DbJAQDAIYnOamusABvbrBok2XcQgFqR1BgnN28DAKxtRLiaaOvbBRH3n90KwOFz6giLObAGbD3CirI0MTZ7YA3YVsdJ8PQJvj7JN6YExpTQlBaapHsB2EvKisxZEZIVI64TFWB9q1OM5MSI63gFWN/qEiO5roMAHJSLhaT1oOqEMCdGcpTWKlBBoiA5MQ6hOcs3ZriGNFuX6j9bCcDRM/I4NHIfL9zNCXYw/a20sYKRB51H++yHL9p+32N5rws51Gk+2FEQ7sH5gJdyPoPRgouUGzX7zqr3nlHuOa2oaZBX53MXcyl47qc/5hhuXBj3NuPRj/k8klfSyIpZjKysblAWYuQdzz9L+s2Pb9TfM3l4ycWXf1jx7LrKysq8kZt7GUrnhMp9SVNk5J3txil7eMoZueaKXvPEYYyMB8bL1z2YkT8Qwni5yMiuqB6Gm+8JUCNTCyEzfO08b5yU9O0EL9Ik4Ulb+Ko1PNb+IgAAVPSNWUNXrTCPoadWgB1t+quWwBULZmQz++S0fW3u8Ro1I5vB9nMadHjG0IcAfKjSeVUHAHiHmc8mexqfBxu7PBq35+xzAHygULvcZ54Dz3a6VS7FWwC8RUOzyfnQWGbLSm2yfQDsG8lIrBk0j9xmF1lSIktKiKSESKrzIAAHJUIhYd20Zh2UChHpXgAAAHvJGVzWomp9BQCHZCJLVmTJG7m+05IVWbLQnmRLTgjBnA5jZBKSg5uQ26pABYmEmXddq6tg5PyrgkS25LBgHP+q7zBnO9CMc5ZvyvBMshoAAADVxDTHmGYb05hP0Zh3oLkSbCIMoDEyGi+zuIQ1oPIIt6SRbUc2gTXNNjY+0AYAALCuxS4WDm8AVWckOY19XOdQHACgdnTC7J4wuz0tz4GKLg+ipFSA7a3KCWhkxK08BMAh+rjVlbO7Ui5X3Ovi/R6AP4x6Ii5HzIEkHTzCFgAAqGxnpm2qtE2Vpu4HYL/ErkrZVCm7Oo/kvXxD3hbbNUm7NmnTxmz6iNUYtJr8VkTVtgUAACp6hJaQSdS/GWw7B41sSw0dAuBdiQEaeQuBa0vBcvSj1dYEjWxJ9h8E4CBm5E0DRF2Mq4myBz4G4HALzGAw+9eArR8zoZqLXtWDca4uwdMn+Ia8lIuNLBxeP/1Kk4uRnBiR7wMAALCPhMp3upEtObElJ0SyMHHBHqwDoPIjZoIijxOl0UFRpI+PGXl0rGnEe4bsOUl0HRtyHu2HRra+12U51IkswMUlvYxJedrQi31n5wqTZ30ker5h8vTyLyFlZQkpz2Hk/fv3Q+1u27Zt8+bNa9euXbduXUVFRV7H+/fvh0ZWYFkLPcxaBDSHANjS54dZC1d0yh275sEBkxX0jwH4WO+OFZIYhaxFITSeckan4PAMAHZ2mKaohwE4rHNEJh24nLK0byd4kSbGssnW0Eh8//8AACAASURBVFVrCPUyTFZYgmOtL4KKXh8SQGPkFi008snh4jyyQU3ZBLY3q3GZig9VOq/qHQDeZoxr3eNa97jG7T77HNjY6da4xtWjxwE41icnPQuOXXTmFE7ZWzBTgSaRnae2gA3tDvikyYVDABySii3oWIt1rTYhkkKHxJlh3JfkCwnrQOUxYUpgSgnMaYyMwJwRIrK9AMD/VApJ9Zgu0aBViBRu9+Fj2GlfYeVoLJwXdH6TYSQrQFDP5pMYQiQrRJzHK8C6Vic6RQmWce7A3QNEM8tGaTUAAFQe4aFGZhnmZeQSWYv8V0N1ANS1GlIcQ4prTMP/hkMjnxbnNPYcamTauNmFhsabOz1mBWUz2N6imEBc0MiKQwAcGs1ZXVm7K+lyRj1O7u8B+APVEbGbYzZd0qqUHAIAgMq2kbRFlEZEafJeAPZKLOI0jpRFgiFNWSRJiyRpkSYtshiiCCOqIKLxm/Ues9lhph4CYHOrzijs2wy2NovjemshRjZYU7z2SlBB4FpTsJyLfoQxsk2DJPvxMfKmASLMJvcfhnExc5qRN/YPqKMsdZSljrI1UbYmxtHGuXqYu0jyjSmBSboHn7UQDq/HEhTFuOA/vXtJORGSEyE5cmsVqCCREfQjRGjO8k2ZoeZKAOrOaVJUVZICY2RR5CI/dIETLAy3gEYeRI38Ybf1/S7LoQ6kyLMd5oMdyAxKSzkfKR9oM910PFwpKd/0rh3+6Y+Sdv4yRsZJuUG5u6R/T5cyck9PD2XOV2dnJ3pnz55TOcc1hTt7V4S9OwAAW/r8jvCUIzLlEjSAj/XTsxMI/TnQMBqdckWnFAM7AdjZYYY39wIdWwH4WOeITjn4p97jw/t7cIQczFSA97AExZY/aG2hq5K+HeBFqhjmKPTUQxfHUAu/gFrYHLhi5pwEL1CF/ismeGdPc9k0pq4FAPxebfBdNvi8zc+fIPgu6dDRypd03gmtd2LwQwA+UGrc4wMfAACOD7jG1a6cmnYMgKoz8pzKmVM65W8B8OyWKvCeTO7IyuzZnvcAAPXdcGDySD0AVSdE2JPcQuJ6UNeJpARm27HNYF2LDY5K5gsIawEAtSKeMck1Wus3A7CZQDSmeMZUe21lPT/NI9bVEOE0TDJ4cwYd/WZ21G8GANSfhyMo0MIs35zlC4fXAbCuxcE3Z/hwtYMyvjlDbKkCAOwh4ddxYvfrZHtAVb0wy8fu7EHPFt3hAVX1QrSudS0OvilzvhaAWhnPlOYZ01xiXTURpixQtzIH6wB6ay7J1Ip3AfBMk5WhS557B4B3JOj9PQ7hGVB5mDPjzt5gHQBgTZMtf9MPvCNh61Mcg61uc915Y1okJG4AVadFWbUtp7XL3wHgAG3c5Bw3Od0tz4HNHW64AJ4jC53jZte4sHM7AMdIzqyFVg/AEZoj7LazPgTgoxEkbNHFLEpr63qw+ZhNWF8JQN0wO2Vip4Z3A7BbYuKkULiQJI6EiZcw8eImXtQoDPNPvLD5lNqgdBl1diPpIAC1w2MGM+cAAJtaEZ0lqRMRNgEADkl0lhSnrRIA8A45pbOkYPmmNpvOYmusABtbrWpzoi+fR27aBjYOEDRRtjrChEaGt/IY/c+ArYcZcAE8c8bEUEUYav6ujQP9+Vt8ujhXl+DqkzyDuAaAPUSYU84ITI7jmwHYPEwyZ4XmbOfBquNCuADAQZmQVI/+22/Oklqq8qvlEZiyhOYqAOrOaVN0TYqqTJDlcaIkNigMX+Rhd/ZGfU0j3tMk90mi69ig40if/Q89tg8vWN7vRN7NG7m0i3GcR0oZGaltR2rbzQfazQdaTe+0Gt9uMWJSxucuFNX5cco3CZNLPZJ3sohZjFwifVF9Ul59Sl7qMTzF7lOK3Q2Q0kauaVDWNChqTitR0BIlqK6ufvnllzdt2rSu1Gvr1q2//vWvv/jii8YehtyeUzrH1a4JnecSfFTP7L9q0dO25P83tHVUGbuGGllwzRmFBDu2wo9TxXfwYBQMh74Fzr+YL9TaQpO2EJo1BgAAcJISumoNXRVd3AFepIqwh0pIH2HfQwWjAyrUtWDHOS1270592eC7ZFBTsHtL4B3mJZ33kk5N2Qi2n1WNazzjGs94/wcwKTGudrrOFm7zVJ2WZRWOrMKelduzo+erAKg6JcnIbBmpLSO1Ok4U/ndfeVyEezbEbKvfDPYMJ/kma/3m4v9jEhIcQ4JjSHD0CbZeVI2Vr2m2cvRJtsF6NN/QWgnHmOYS6wCobzdl4GhiAEA1McMzytANa2VcU4ZLrC9UUCuD4yIILVVgc33N5kI515TlmrJcU4ZnyrTXgrUtDq4p3V4LQK0UG7Cc5plS08cpbyYQjEmuMdleC0CtGHvg0Hqk0KEihjbB0MYvNm7Lt+KZs8ioJkHXJJrfBuBtEToMjk14BlQeZifpWvGuol6pPMxGn0ZhaJMMOBgO7a4k15ASCojrQVWDMKOyZjU2+dsAHKDCsRbuc1vA5g630TFudChwQ6uPDTuyZkcWodYB8DHVFnTbPEz0xtr+gZb1AKwd4rMTRpa1+RkAniFwaUlD01H4/YGmpIGeJ2FgYNDjenpcz4jrGRE9O6jn+wf35uvb3Cw1GLw6o5/Tkr+Oj759EICDYi2SZLdWgoqjb+evloNiLZLUItazFWBji0VpSlysBaBWJNLFhhu3go0Dg+ooSxVhXDwMwOEmOO6N3vcMePEP9PCoIjx68TC2oxcP09GRcAx1jKWJYQOTxdUAVBNSPEOab0zzjRm+UbYH22Zdi1NgynbUAgDqO0zZomUBeosYrgPh84fXguLXm0KCODogCPfixlo0Ujynh90nCM66fseRi7aPeqzQyGiMfFMdF6RcTDtSex5iPtBufqfN9E4Lmr7AchdqNExuuHmYvPuEbPcJKcasRt59Ujob1SdlM56QlpV+Eq8BzywxMt7ImJTBkSNHXnjhhaeffvqpUq9169a9//77f/zsb409DJkth09c5B+etobQrIIjgo5sK4xvi0w5IlOy/p1g66gsgo1yC+MITdlCkzb0HX1IxDpjcBsSuIoEr858MARNROCHtfkuEz4E4ENVfkwbfGYP/3S1xpMfZZxTu3IqV05VNMQ4l7ew3JaV2TIyW0ZqTUutafjoR2FKIyQNU8MCbPYi+FQe15gknKsEm4YIqHzjHH2crYuzINo4S4vOfVE8/1yCqU0w8Y9a6dFBYCx9im2Ao8Hgk3hFD3GUZKi5EmwiDqEfMyjGDPrIH7EOgLo2Q4pjQGdAZevR6U/Z+gRbHy+gw1qujbO0MQhTG2NqYgxNjKGO0tXRUXV0VB2lqSI0VYSqilLR92hh1ir80yIalNE5YWjQruDok3xDSmRKy8xphSWjsmQ11pzWltPbc3p7zlAKoz1rtGeN9rTZnrLYonar32lxeRDLmFkfNMkjRn5Mz4zr6XEdLaEbSWjJSS05oSUntJSElpLQjsR1I3HdSFxPjeuocS1KDGUkqh0JaUYDGpZPw/WoBQ6N3KLVm3QWnd6tNfi0xqDGFFGb42pzXG1OqJEkNtatBCpzQmmKK4xxuTEu0ceE2igPDn1TRRjK8KgiVHgwpBQ0eZgmD9MUYRr+gRF1jKWJs7QJtjbJ0SW5+hRXn+IZ0jgyPCMkezMyPPSeXpqlTdE1KZoyQZHHh6WxfBK5k+lvo4+do3rPkj1wgouj/fbDvbaPuq35GPlQx7yNPM3LHcjB83kjw0jZ9A4aKc9MKMtrGhQ1p+TVJ2XVJ1HzzngwWlrayLBkdhEXG3kGp2QwbVIk5WIjz5I1VtQ0KKdJGXwxj1f3iKq5lyWxZmGYrHFP6DyXDL7LRt9lk/8KErhqDV6FSi0MIg7h0b4LdrYbJm2hSVtw0hqctIYmrcGiZ6mnP5sH5Ys+OV14hNpU4vlp7OFp7GlpnYqyCRwfxI0mLn76rvCIB5YFzsrtqHkhEmtGgvOvGEmJkJTInBSakwKYfyiauQINe9mGRN5fTJ1oF9j2MTvO0MYY2jhDE6erY9Bco6roqCpKm06MporTVDGaOkZTxWnq+CgKfOACfRyDMQ+Y2iRTm+xvrAQbCX3o6OA0RpKBPidt/XgT2DWYYGjjDG2cro7R1VG6OkJXwzGwIcgoRBnEQ1MGaYoATRGgygNUeWBEFqDIAhSZnyzzk6V+kjRAkgZIsgBJFiTJQmR5mCyPkBVRsjJKVkaLn6guzYgyPqKMU1XxUVWcro4z1QmOLsE3JMXGlMyUlpvTSiSjtmS01uxMdBBLRmdN660pgzVhsoQsiM9utruMJq9BHdCLQzpOVEuLa0fianJcTYyrCXE1Ia4ixtV4hmOa4ZgaJaoejqqGo6rhiIoYURGDSsqYkuZRMpxKjk0lNqvUerVJrXWqdR6Vzq80hJSGmNIYx0jglouQG+IyQ1ymj0l0UaE2ylNH2MowAz6zJwuNSINkSZAsCeAIzoQiDVKkoRFZiCoLU+URmiIyqoyOqmJ0VZyhjjPV6EPVbG2SrUthpOcPS5tialN0dTKvY4IkNiCK9vLDXezgeYa/ZXSsccR7muQ5QXDVDzqP9MEnRKwfXLC+14W824kcKpEjnp6gQP07i53xYfKBNtM7raa3WwzvtOj3N+veatK+2ajed1a597Riz2nFHryUUS+X1LG0ROE8jHzLUi6pY8i03AX45Yr1jy9dPY0nlq5+4qnVTzy1+smnVi9bteHl3Qd7qCoxkpFYszJ7Tom/xee7bBy7bPZfQQJXLcGr6PwVs0w2lFcwOpdFfsqh6bMOXTX6rxrHrhiL5xgy+C7rvSj5qePyEwyp0Ukq8JN/wkefxwuRL+65Zyz5gJ/4LT83RUqEzU3BN6LwjEmuIcE1JNj6BFsXZ+kTLF2cqYtDqaFq08To2PycNDROjFJVUaoySlVGRxRRiiJCkUPCZFmELI+Q5BGyLEKS54mSFFGyIkpRRCmKGEUZo6jiIygJqiqOkaCpkzR1kqpOwgWaCoc62XO2Emwk9OS/LQI+yhynqmJUZYSqCI8oQiPyIEXmp0jHKFIfReqjSL0UqZci8VIkHorEQxG7KWI3SewmiSAuksg1LHQNC11EgZMgcA3xnUN8xyDfOcR3DfBdgwL3oMAzJPQNifxD4iBBGiJIwwRZZOZ0QrNBlkcpihhVEaMp40x1nKtNCnRJsSElNaZkpozCnMk/J61CMuppmNMac0qLJLVI3GAOmo0eq8Hq0BvcOsWYVhBSMyIqUlQ1HFUOxRQDMUV/TNEfUwzElANR1WBUORhVDkZVQ1HVUFSJElEORhSDEcVAWD4Qkg/4ZQSvjOySUe0yhkUuMCoUWoVBqbIr1C6FekymDcp0URR9TKaPy3SxYtBvpbqoWBsVa6MiTYSnirAVYbosRJMGRyRBsjg4LAoQ4KxDcxEgigJEUWBYHBwWB0nSEEkaIkvD+RmIaOg/bAl05iBNkqFOMjSp+TOqTtKUiRFFgiSLESWxQVG0TxDp4YW6OMF2ZgCv42ODzqP9jsMX7b/vQW/rvddpgQ+JlJJyKU3PHjUXpNxmPtBmOtBqfKfF8PY5/f5m3ZtNmt+dVe07o9x7WrGnQV4DzXhzI5fiKzAyTspFRlaU1PEMIyvAifbR+hZKHUZ9K6W+deRY28ixNurxduqJ87TTFxhdZMWoIiAwpUVIRmLNSm25fE5Zg45QxkLmkhNy4oETckIKesVN4Zafk7MwISc6yTKcYVnlLMzAqcSEC+cAkttzMhucBigrtWanzbGJzauZEqDzIyf5+Kl/DAkumt5NsPUJmGFgauNM+KdJcBEuZtjC1PVkVKbwj4+EiNIQURoiSkIESZCAzl4fglPXD4iCA8JAnn5hoF8Y6BMG+gWBPmGgTxiE9AtD/aLQAEQcHhRHhsSRIQkKQRohSCND0ghBGiFKY3OS11+MmJ+wTRolSiMEaYQgCQ6JA0PCsUGhd4DvHuA6BjjWfjaCwjL3M019TFMf09jHNPYxjH0MQx/dcJGu7x3V947qe0b13aO6bpruAk3XRUXppOk7aYbOUVMXHeliWi+wHN0cdw/X18Mf6+UHegVBdN59YagXm465rxQDwtCgKDwkDhPFEYo0MqqIMZUxrjrO1ySE2oRYl5TqSyPTJ2X6hFyfkOtjCn1ErRvTax0mtQlRq+1KkVvOHJORg9L+kLQvLO2NSLoj4q6IpCsi6QpLusPSbvRd2h2S9qBIukOS7pC4OyDuDogu+IUXvMJep3DAJiAgArJRyNQIRXKxWixBxFKbSO4WKsYEypBAGRIqw0JVWKiKCFQRgTKMIwThK0NcRYgrD7HlIbo0QBUHSEI/kT82xB8b4Pr6uN5e9rzhohN19vHH+vn+AWFgSBgcEoUI4jBREhmWRoalUZIsRpLHSPIYWRYjy+MYiVlAVxiWxojS2JA4OiCM9AnCPbxwFyfYwQq2MfznRscaR3yojoecR/sdH1+0f1QIkC3vdloOdczfyLNnNnBGrm0z17aZDrQaD7QaoJRhmIyTsqLmlByLlOVzGlmy+4TklsLkub28cCOj6QtFTYMCjCpjEJoyRoPLqhhdFaer43RNgqlNsLRJli7Bgc8FmdICM+plmS0nt+cUjnGlY1zlHIeRqQY/nXEpVPmp6515cLMbO8cVjnGFfVxuH8/PVQ+nq4egf3zEksmD/s2RoimM0/mp6Ln4SehhVIsmbWNMbYyB/RUoej4TqoxQC3/nKUxB/8hTcFgaJEqCREmQIA4S4J8FEQUHMZ/2Cf19Qv9Fgb+X7+/l+3t5/h6er4fn6+b6urm+CxzvBY73AsfXxfF1cbydLG8ny9vJ9HayvB0sbwfT28H0nse9d7B8nSxfJ2ssP1N7F8d/gRO4wA1c4AW6eYELvGA3L9jDC/ZgU5X38kLT4Qd7+cFeQTH8UA8/2MMP9vADPTx/N8d7ge26wLR30S2dNFPniK6DrG4nyduHZe1EWTtRep4gbieI24fE7UOi9kFh+6CwdUDQ2s9r6eOd6+M19/GaL/KaLvIaL/Iae3mNvbyzvbyzF4Vn+0Rn+8WNg7JGgrqZZDhHQVpp9la6s43hbmd60cns2f485/HAWepZ/k42nJze38sNDPKDw8LgiDhMl0WYsghbEeEoojxVDA8/jzImUEaFyohQGRapgjKFWym3aGVag1SGiDl2IcUt7B/jd/r55/289gCvNcg7F+SdC/BaA/zWAL/Vz2/189umw2sb47X6uK1eTouH0+Jkt1tZXSZmr545oGZTZByOkCPj8vQcvpkjtLFEbqbYzxT7WWI/SxKAMCUBpsQPy/MwxH66yD8q9NOEYySej8Dx9rM9vUz3BYa7k+46P+pqpznb5kf7qLN91NVOd52nuzsZnk6mt4uFTmnfy/X38gIXecE+frBPEOoThPuE4X5BpF84L/oE4Yv8cA83dIET7GIHzzMD0MVNVN8ZivcUyXOc4K4fdB7pdxzG6fj9Lsu7nZZ3O5FDHQg08s2lfLPkci16rw9K2YgPk99q0mC5C2Vx7kJeIl88h5G/pJRP4e7y4Zw7w8iKmdQ0KGpOK2pOK0B8/N/zxHDEJyB/Skz8KXHpT4lLf0pe/nPy8p9TV/6cvvJZ+upnmaufZa9+lr16Izt5Izd5Izt5IzdVmixkcnauTieD8lnm6mfpAn9OXcFxOc+fkpdQEsXEL/0pPgH59/hE/uj+GM2hRHJ/jGTzfBrGCGU+DWU+DWY+DaY/DaY/DaY+CaY+CWD4U5+MQZLXfZBEnmu+xDVvHMWDww2JzZv8JkUP3XziTXzihe+JT3zYO8anPvzH5Ce+5PRvvYlPvInr3sQ1b3zKE7vqiV52Ry65Qzl3MOMKpFz+hHMs4RyLu3xxly+GI+r0RhyeiMMTdrjDdnfY7g7bcFjdYas7YnVHrJ6Y1Ru3+RK2sZQ9kHWEJhzhK87IVWd00lV0aNdLEMOIX/fEr3vj133xT/yJT4KpT8KpTyPpT2OZT+PZT+PZPyZmJ5n9YzL7aSr7aSr7STo7lc1cHk+PX0qnL6fiV1PhqeTYtYT7esL9ScL1ScL5ScLxScKJknR9knRdn0bCdT3hupZwXYs7r8Wd1+KOq3H3lZjnUsw3ERvLxcOZeDwVT8cTE/HE5Xjyaiw1FUtdx/ikmOt4oqnrEUjyejBxLRC/Nha/5otNeaNTnuiUOzLpKuLqnEy6IpNuSHQKdrInBi/C6754/nr4dKwkqVLArxKf+hKf+hKfeuOfeGKfuGOfuGLXndHrjsh1e+SaPXzNGpqyhqYsgSnEP2n2T5rHJk1jkybfVWMRV+bB1XlzxeC9YvBeNngv6z2X9Z7LOvclnfuS1jWhdY1rnOMa57jakVM74HtObceTvTmO+ZMrxbjaMa52LpQcXABrt+4u8OLuNbOy65lZWP31sOrvyNfaHtwedn95Vs/gmXmAWx+25I1VL/x25XOvrdzy8tOb/23FxpeWb9i+bN22p555fumqiqWrNi9duWnpyo1Ln3526dPPPrViw1MrNjy1fP3SZet++dTaXyxd8+TSZyBPQJ5a8+SytU8uX/fk8vW/ePrZX6zc/MtVW5Y+8/xT6yqXP7tzxaZ/e3rLyyufe23V879Z9eIbq7fuWr11d0meKWbttt3rtu1eX1n9bFX15u01W3bseX7nnhd/tWfrS3u3vbS3EvKvM3hpb+VLe6pe2lP1Us32l6p3vvTbl371yv/Y+W+/3rHzlR1bX9te8duqDbsqn9ldubq6clV15cqaqqdrqlbWVK3cs33Vnu2r9+yAPDONmu3P1GxfXV21urpq9a7KNb+tXPda5YZXKjf9z8oX/kfV9l9t/9ftO17ZvuP1qp1vVP6qujLfvJf2Vf7r7Ly0b9tL+7a+tPfFX+19fufeLTv2bN6+59nKmg2VNesra9Ztq16z9Svmmdn5yusqs3B2r9m6G/znf35RpkyZMmXuBMD/+f/+s0yZMmXK3AmAv/0//6dMmTJlytwJgP/46/9bpkyZMmXuBMBn//G/b4K/bRVY0+j/35/9h7ga7OPcdP2vBN4+sKrNV1T7182XOLq/XyNvqcZ8Z/6d6/2/mr/jj6Uk34AzFW1cBQAA1bzb3pKvmwVcDOD6v/+tmHDDStysIitbnO6Wp8HqBvffrv+7aBfYy5i+/i1QXEXJfbL2gpUtzn//2/VC7beMKD+vzS7W3Kvd6tF9BY1cSI8VnZR5kO/MecPYDcBuEb7EeWb1guv9yg75K7nqFnLs017FXTE/vpIfS9F5n/PqncHf6UzdegudZ1bfUsfeCYQbVhYfrLvl6blO9wIuBjD56V+LCZ1aCX7L/OuM8r9Ofir8LdhLK1G+UOaoAoO5F6xssS50q9Jtzm8VOrVyjvYv9OhurT1fW48trDPnsUlRb/w9D/avk86WpwG+OuFvb9L+r6N5X/Jq/0p+LKFTK1efcub7BFv+Wri1Prz1FtJ2gadPh762w/lamdFXzpan5zrdC7gYQCT9p2K8h5eDl4l/mlH+p0ia/TKo7i9RvlDmqAKDWA2Wn1UsdKuZaM8unb6f2Vjo0d1Se76+HltYZ86nN3A1as8u/WpO/dd0sF/HufiSV/tX8mPxHl6+8rAW/dj/Klha572Tuv1LtfBrPpyvlRl9dZMfyAIuBhBJ/7kY3+Hl4GUirkTbuBRU96f/HElzXkYX4DL6Wlrnm7GTuZlRxYx9AgDA8kZFoXbcV8sbF1IX52Vwk7qw9t/06PCFjfj2KApdNO0o8IUrD9dVf2U9VnRSSu65VGcuhP5XAXiVA5cVdSvR5VmOFNbb/yq+M7EGE6sXdsq0jUvnau3M7i26NhSznoKFgr8e5jizc5xxdFlRt/JWG+M7vHzlYW3hjCyt82EXA+fluY93zjM19/X8tbYwf6nMdhKxFt58J/O5+PEX5LTVvtx5me33OFvt8FvcQQEASqkJxLKfFeM7srxwepcd88UMjctA9WD2s1iW80phYdURQ2H9V4Y/m7GfOSiqArzGiaH7LOxn8DUAljeqsp/har+Fij6LZT+LDcMTBnfyGVbXzPbPfXScV2BvFB8F2p6iLsKtNlwNcOXokRoalxX2fys9NuOkzNzzLJ25IEr2fFG903tJdWwV2pLh6mXLV8F+GHxtWr/N43zlW2toXIb9ZubsXvy1Mds6CyV/Pcy92znKqweLeuwW8B1ZjnVy4eTCiyG/z1kaMOeZusn1/NW3sIQucBdGyRXms5NZL/7iQyu17Zc9L2DGa+7eLlyohYMqdXGCeO5GMWNHloNXSLgSY9MyUDOUuxHPcV+BC6SaaW1Zdmxsxn7mYEYVcJ/Lm9QzPxZqL7XVvFEfWwUAAK9z47O2f86jm9a8ae3JN3L6avl1uK+AVUeM+cL88q32WNFJmbHn2TpzYWCVFuoqPtKZvYR9O/T6qiNG7ivLm9S3cLAlWos7NaW7F9c/s66zULBKS7cK2+1cZzx/ggAACz3jhb1hL/xZxh3RbA2Y+0zNfT1/5S0spYuh1zFvlF5hPjuZx8U/17Zf6ryU/j3O7ZbpG5boc5Acv1HM2NHl4FUyrsTUtAzUEMZvJMe5r8IFcg1Y3qSZvuH8mVHFzH3mPxZqL7XVwuC+CsCr5NnaP+fRlSjEtSffyOmrjR1dvuqoCe4cLuALv0SPFZ2UGXuerTMXiOb4KvA6F75Pr7f0PmEDuK8ub9LAZXLTsgVXjT+iuU9Nvidx/TPrOrdwtcAennO3c51x3ObjY0eXAzD9uOZz3mduUnwxzNaAuc/U3Nfz19tCFMLrYNnxsdlXmM9O5nHxz96AL3deZvk9zu2W6RuW6HOQmvi8GH/dCvAqGVdialoGaogTn6cmeK8WFgrrEF+HhfNnRhXT9+mvWwHAiiZtUe0lt7oZpqZlr/NwVayqM83W/rmPDl/IqzvuL2pPUReBZcf9aI3kGvQoClXDA8kv32qPFdU4c8+zdOZCMTUtA6uW4VtbfKQzrwHt8VXLVqwCr/Pyg2A1SQAAHY9JREFUy4XemDfa46sAwHdR0akp1b34/pltnYWSr3Tu3c5RXkOc+DxlaqrDnYgFXsAlL5Vp+5mlATc5U3Nez19DC2deKsTX880uucJ8dnLTix8eWqltv+x5meP3OIdb/HUrAMCMpD2+CoDp8gSZy38pJli/Arw2gitBzi0He4Yv/yVzWfAaugAL0VfRyvMiWL8CH9evqkf+krn8l8zInkLJyT1gxTl9Ue1/0Z9cBQAAK84tqDp0q2lNLdH+mx1doXB6e/S4RmYuC14rHBq+EDvMy8H6FfnlBfTY7Cel1J5LduaCCdavAEXb4o909l5CPyLnloOFHmmJEwQAWH4yiH1Vsntx52L2dRYI7nqYs+rZzzi6PPwb7MvfCBbe/zM7cMbFULIB8ztTJa/nr76FpRow/BvcaS2xwnx2MsvFP+PQZmvAlzgvs/0e53ZLsH4FeO03+d9miYsT5K78pUyZMv/VsJxbDvaQbnszyhQRPLYCvE6dax0wfvV/lSlT5r8YplOrwYpzptvdjDLFBI+vAK/T5loHTEz+tUyZMv91oO0FAACwl3zbW1JmOqHjT4PXaXOtAy5N/a1MmTJlytwJAIXOW6ZMmTJl7gTAjfKr/Cq/yq/y6854gUWL7y9TpkyZMncCYNG3H7jt3FWmTJkyZb79ALjtLbjr2w/c9e0Hy5QpU6YM+HLb33aVl5knt/9SK1OmzE25ZSM/cNe3H1i0+IHbnnYpMw/KXv5G8N0yd/3j/+3cgpFxLr7r3m8tWvKtRfeUuYNZsuiue78hXr7dOijLqMztZqFGfuCuxQ8sWnz/t+66d9FdS37wz48+9sQzv1y28ZfLN0GWrtiMUZFffurpipksW7mlzIIo2Y0zOzx/Ln65fNMvl2187IlnfvDPjy66a8m37rp30eL771p8J0v5djuxbOQyt5sFGTmv4yX3P/DjJ5/a8NTTFY89vva/Pfr0Tx9ZUZKfPLy8zNfNbJ3/00dW/LdHn37s8bVPPV3x5FMb7n/gx9+6a8mdLeXb7cSykcvcbhZmZKjjB7/30C+WbXzs8bU/euipMt8IHnt87S+WbXzwew+hUi4b+Q7kdrugzJ3A/I2MJivuufcHTz717COPrfrnny4t8w3ikcdWPfnUs/fc+wM0fXEnSvl2O7Fs5DK3m3kaGeYr7rtr8X0/f2LNY4+v/cGPf1HmG8djj6/9+RNr7lp836LF992RuYvb7cSykcvcbuZrZJiv+NFPHn/ilxu+989PlvmG8sQvN/zoJ4/fqbmL2+3EspHL3G7mY+QHFi1+YNFd935nyfcf/8X67/3wiTLfaB7/xfrvLPn+orvuXXTHhcm324llI5e53czTyPd/a9GSnz689JHHVn33+/9S5hvNI4+t+unDS7+16A4Mk2+3E8tGLnO7uamR0QD5nnu///Mn1j74/Z+X+S/Az59Ye8+9d2CYfLudWDZymdvNfIx8/7cWLfnRQ08+9N9XPPC9x+bgwX/60eLC38RdfPeDc638ZSiuCIDFP/p6qih9CHN89U3hof++4kcPPXnnhcm324llI5e53cxtZPi09H3fvvvBn/3Lmvv/6Wc34yDvxuc3UALNq5fcc/NNbg18RZ/f4NWAxT/6Gqrwt1Qs9KtvDD/7lzXfvvvBRYvvu5PC5NvtxLKRy9xubmrk+79115J/+uGjD/9s5b0PPjo39z1Yy7vhb9n46L0PPnrffvGNG4LfPfjofQ/+cBEayf7wXvTj4kWLF4N/+O49Dz56z90w2F1yN7oHbGWw+B/vy5cs/se7l8DSf7j7oekVPbijzf/5De4+3PqlqgPgH+5+CK1t8Q/vnaU6XHkN94a/eTW6Faz3nrsXg8VL8F/dtE++Jr77g3959fU3v/uDf5m2PH8e/tnKf/rho3fYoIvb7cSykcvcbuYwMjoGedFdSx5+dOUD33tsQUa+5+593BuiNx989O7FNWg8y9v3j/eh6/D4oRv+7o0P/nBtc+DGjc9v3JC+9eCj9+JXvhFoXvPde7B9NreIYTg81vzs3cUV3fvgo/c9+C7/hv/chuI9TKvuxuf+5tV7+Z/fuPH5De5bd89SHbbD9wVYAO5v3/GW8HN/87N3w9YKpfivbpeRX3n9zcNHTr/y+pvTlufPA9977OFHVy66a8mdNDb5djuxbOQyt5u5jAwf0rv/uz995LFV99z/yDw4wLvhb14NAACrmwM3/N0b7v/BHu7n3BoAwOrmMf+5DXCdz/1t2++5/5F77j/Eu8GrWfQDbPMf7OFiX+0X3xhrWbcEXf+G4H208AZ/H1rob3k2X++2Fv/nvDfRPZSublOn/8bnvDcfuWdTpx/dScnqio4Fq+J9/g1+Dajh3hC/Of2r28OS+37861eqP/r41Muv/e6jj0/9+pXqJff9eKE7eeSxVfd/96d30iN8t9uJZSOXud3MbmQ4qdCie37y0NIHv//zeRs5n96VvDm95HP+/mk6297q//wGfx8AS/5xuunyyzctfOSeJVuax/I7n626ORZKSraoZENr4MaNz/2t22dZ+e/Pw9/+zvehlH/9SvW3v/P9e+5/eKE7efD7P//JQ0u/tegebPqhspHLRi5zm5nNyOj0x99Z8v2Hf7byO/c9PB/uue8A78b/397ZtcZxZGFYsLFkKzP2yPlAThRLsqKEEGdJnA9ibGQMuTCxMWETE8iN7QQtNl4SI0JuzEIwgrCJwMqFf0ViQ1Y3/hfaBAT6GfKdLveie2bq89SpU9Xq8sxrngvbPd19+pzqd2qqq+vd/s959X/+9fve9k/n5ojPnP/lz729R990F7u97x71P9x9fvW3vf/9vKJ9fvB3/T9nn/vop+29P1bJ07n+4jzd7HMT3emedYobj/f2nv5+w9zUFjMvLX/x5Tff//Dj59euf//Dj198+c3MS8uC4ywuf9B/W6SEbnLbmghFBm1DKfKhyaMn5t6anTudoMif/rz9tB7IcCpdNcKx/efPK4ud3uLq4/6Hbzza2/71vPl5TVXro07c+H3v6fYvn9Knc6q553SPv+n19fqjib9Nz01P3vht74/V3neP9h7dmJxVN7WlyAM5Pvz8ywNRFhxndu70ibm3ipkG17YmQpFB2zgVuXorpHdk+ji/g9ypVeyvSluH/7ny6/ZgHEP/TLf33aNq0+PvlCNUH1Y/Y/5d+djTvb2nj/4ZPp39F//p/rvaq/V6b+/p9i+frj6uFf/8L39VoQ42taXI3d6rn1+73u29avxdwOLyB0emj09OlTANrm1NhCKDtvEp8syhqaMvzS7NLbzblugAkoXDz7/c6S1Yf49mbuHdl2aXypgG17YmQpFB29iKXL8VMjl1bH7pzNHjS21LD2iWo8eX5pfOTE4dK+BtkbY1EYoM2sapyDOHpo6+OHtq4fX3W9cLcAAsvP7+i7OnCugmt62JUGTQNoYi11Msqg5yd+ZU62IBDoDuzKm6m9zypIu2NRGKDNpGVeShsenLJ95AB3msWHj9/ZdPvNG2NWrbmghFBm2jKXIlx1FzkMHIUM1NbnXsom1NhCKDthkqcvXO9NSRmfnF9/hzkMHIMDt3en7xvakjM/33qlsZuABgrJmYPHJ8st87PjR19JWTb88vnWldHUArzC+deeXk21VLmDw8U7eNsWEKgLaZmDzcmzx87NBUd2p6Zu7kaYxXjDmLyx/MnTw9NT1zaKo7ebiaEgcAOCAmnjs0PXn42AsvLswvnTl5Cr1jsHjy1Jn5pTMvvLgwefjYc4emAQAHxsRbpz9+bfG9uYV3MdcNDOjOnJpbePe1xffeOv0xAODAmGj95gcAAFABRQYAgFKAIgMAQClAkQEAoBSgyAAAUAqjr8i3tvb3t9ZaDwOAA2Blc3e//2fr9kGckXN/dXuXH+yEP3bwwRdInCIvX713f33j/s1LrcfNh6/I3dtPBg1iZ/Ny4ib1/5mNrNtb29p3/Kl21A+4++Aia686A/ENPW827K2cSOgcCs6VvSi+9MpKGVsXI/ju7Se+o8Vmno9xfzmLwlFkIvixgqvI3Te/uru+cffqpStro6nIVUuqb5iLD3fU9iTf9ORWWvC+ZrqyuUs0X3Uv9fLVaA84G3UkkQkhcig7V/ai8NMrK6UBncNbW/v7Ow9XIvdKxJcBtSgcRfYFP26wFLnbu3R9/d6VNxe7vQ9HUpHtFjNoH7JNnRw3P9GOqy6Y8+Yn92L9eCwnG769xOdquCiyTd5SxgbvbOpZvoQIBieNahvM4MeQuFGLhhRZHT+yq6L8KtS6EtpPP30v88dpUIMuPtxx/OTcfXBRuKmT5eYnfoTqp+buxVTkBrJxa8sxsMDLgEuRpedqtiiE7IpKaRDMoVPU6L2ImyiUBPP+otpGPzPDO93qDkORK9pX5O7tJ8p409qWNvy0tqUUr9u7/GBT/X1U31r1x7SfTsPWz+ojK7vUDWuzbl6yTR2r1cYO3tWN2PM7zvcTj97LSO+BZaPfDVSGVnm/T305FJ+r0aL40isrpfPgzuuyB8cHWxnZcN9EzObRUfvIVFEuP9gxo1L2cgcfVZqRoX1FNlAFdGVzl/jRqjb9wSftTVGK3L34cEfv8ck2GcevugZRnUTnoZTmK+lw3dry7thoNvrdpcHNz+qqEznMcq5cRQmmV1ZKq82Hr8tu6sRexE1EhuG9v8iimN9J9rnQR64oQpHVp9X7yhe1r0ieB9lPbrlaf4Qib1pf8reFm6yAqV6SNyf+z9vPsoJ7VUnmCFD2bNhDpYIH62oOs5wrb1GI9MpKaUUbvi6fIjv3Im4iKgz//UUWxfz+4AQ/nrSvyMaDYOJBgRKG/7mWTJEvPtzRm6P+hR+9yX2Z7JufM7ZoH5DYK6o/mD0b9s952VSn4ZOiTOfKVRQivbJSOo7DuC6fIjv34j9RpC9neMNSRXEqMvrIDlpWZHv0Si2Mdw5TSKzNkej42QUrm7u+x8ScTcHLpOFMV7JvY3LKV8xzm9zZcG+KnQmnDj7mOFeuotDplZWSW5SQqBF7ycaOiPsr8U6BIle0rsjaL8d6+GLwjK761h38U3myV/VKnN/wypyb/u8y0Xxk47WC2E1mSGwB4vyMtae++vaKleOGsqE99uE9YKRzmH6uLEWh0ysrJflJ6rr8s9/cexE3UaAQnvvLVxRDkZ13ChS5gqvIZ29u3F83uHflzQwR9H/s7Fe/+1Y2d7VfN9pol/YbTZszZwh3/4hbtxeNA1KRBN6GittET+kj8CmFPtpufsC5l5oKLVWR78ulZ8NICFOO6RwKzpW3KMH0ykrJTIj7KYL/GaZzL99NRDUM8v5i3Q6uFghFrhj9dS0AAOBZAYoMAAClAEUGAIBSgCIDAEApQJEBAKAUoMgAAFAKUGQAACgFKDIAAJQCFHmxI32jtFHgOQbAGBKhyOpre9fP5QxCYARHO5XFylmiImc3MYtdiCfo2yaI0GmYFqwXsRexKXsY+r7aS3GyrzrZdfk2Besla2z1pXmXzNf2CvoHCsKwFzt2rIPoKgoYEPMWdX85i+65OxlFWWYEp2I4lamvrjKlLUWRmzAxS/Ecs33bpAZ3bhc7ol7EXrQtXt4wtJrqN7+gbYivi3nJWXz2+sdfczZjZgPgJ0RsY+gsClCRjFo0t259ynpU6je/Yi0jdJbjnroZE7OUd/zNDMRHSLvY+T4ptuDLG8aAepEzyyYjvW2kuw4S9aIi8Xlc9da2PIte8hsA/xYgDhg8l10UYFC6InN8wLRVpvr+BYOtvhUynecN+IDVf7T+eHYTsw6xVH9kNoIRco5guNj56iW24Msbhvrhnc3LmnGRrG004DpIHJ9uFYFl5DzGIhE2BbwOsszG0FkU9bD2/TWGyBT50vX1jbtXP8wejbn6Ks8HTPMhtto336tmIMSmcZ/H7i+7iRntOSbJhsjgjvYP9NVLbEiYNwwjCZYix7cN0XXxg0/32TObsfXNFGwAfDuVFBtDZ1GI+2s8kSjy2ZvZluI0UJ3Kgj5gTqcyo23ZvgZOaB+wwJLn+UzMtDy4lh6Pz4bE4I7vH6jVK4chYXoYHV159a8xUdvI7TpI1ItsouFS+hQ52AD4/XSxjaGvKLG3xsgTrcjVjIsmOsiGUxnfB8x8otLTvsBvxYxaDP9H6ePQdn8ZTcy0VLgtLOOyITO4Y/oHmvUSWfDlD8NYHN3ZHYtqG6Lr4l9yRp89fx850AD4T5JlNoZ0UbAyskqcIi9fvdeQHNtOZVE+YAFLyvinN4NGw3eQ6vRMRRbPhONYWHKyITO44/gHOuqVyZAwNQz9M/TI5jPkwcgpJTGeTu3F7iAzD+hoh/6iFPgqQLtEKHI16a2RB3oua5yoUiU+yKZ9wPh2f4kmZtrl5MiGzOAu6IrGrJfAkDA9DNPX3P97Ir1t5LrkXD57LkXmufPx3a1ENoZ0UZqYP/rswlXkA5bjCqYPmG8Wc8S8V9IHjLD7y25iVuHsu8myITO4C7nYUVNBUgwJs4RhHSE80pUYRsol8+fgB0vpn/3m3SsqD1EtitBZcyjJf3+NISxFrqe7mT57GV4SCTqV+XzACKcyZZeIaTS0DxjT7i/dxGx4dSHDNGY26Aip0jhfygrVi3ijTPZmoywMfXfjIZKjiLIwxJuy++y5OqHDCyQagKx/mmhjaH9NEvfXuIF1LQAAoBSgyAAAUApQZAAAKAUoMgAAlAIUGQAASgGKDAAApQBFBgCAUoAiAwBAKUCRn1WwPgsoFrhEiol8i7om81KceU3MrA9EvJKU8b2yCsL6LDEMx9oXztfbrDWXGSs5sBzYnOlNqZcPXw5lPnti2m0bnKLIXiwUNFE688TaQ7IcjhWSPvLy1XsZRbkhEzOBo5fsjVKZ9Vl6GIYii63P2DVyLTOmpzelXu7z+nMo89kTU0jbIIpCRJg3jGDmfQsnYUUhDnIPkSzOp82ZmMU6esmUy7uQDWl9liUM68YQWp8JauRMbwM+e9wcMiOUZ6CMtkFcsqABNBHGsLj2ovg5CjEOiBT5za/u5lLkZkzMaEcvJzLHPJn1WZ4wlEjE1mesGjk6yD4Xu5w+e/wcMn321CT3/6Q6y3X8y+tkbxtEUYhzNRsGW5GDYcBnr0Lq6rT21XKO0zdkYuZz9PKGIXLMk1mfpYWh/0plhGGIeOzgndOBze1il1AvVgyUIrN89obli7F0C6bXMK/R3VuytQ2iKMS5Gg3DvGTricXgdIEcwmdPIX7F+qxP9mROZcSmjt5Zi1LkWMc8mfVZrjAMRRZYn7FCshb29brYSevFSEsgh0yfvY5/eXVZUdyRsIsiV2T3bw5ns2kwDDvzRhKYOYTPnop81CKLt1N2EzP++JoWhsgxT2Z9JgzDkjCrj0yFoQXDc1QbnkXrznjTK6sXLy0hEWT77AmmDAbTa65NzC6KWAqtogRab4NhuL7gOZ5kahiYx6kinI+ca+Aiu4kZ4ehFhSFyzJNZnwnDCClyrPUZvzrE/WyPI2f02ePkMMpnTyY9dHqN+QNRRRHGYxcl1HqbCIP4veVTZE+E8NnTaFuRc5uY8W3WwmGEnU8l1mfR2VD646bftjKgEWt9xsGerkSmN7PPXjCHTmOn7JZuwaKYc0jYRZGJkX0JUa03Sxi0pRbHJVINA7PiVESjFufuZLF0qo/WuIkZf/ZbtGOezPpMFobhMK3eEunWZ45IGLOGzedmyfVyn8VrHxdOrBmhyNLNl15jFKj+MmAXRSKFnqIQ52qmiYaG9d1fn54I4bOnwFXkszdVh707Z7MGIXvXiPP+T9TcL5ljnsz6TBCGai63dXtxZXOXEwbT+syGI992ehPr5YrBkUOxz15H/T5jV4QqSj0gU/8/syjitkEUhdl6E8PgZJ7jEml9K8BnrwbrWgAAQClAkQEAoBSgyAAAUApQZAAAKAUoMgAAlAIUGQAASgGKDAAApQBFBgCAUoAiNw48x0YVrMkAshOtyP01OQ/utT3CByy7bZd9wKC/mdhzLBiAcUx9k7k8P/0albI7f23SlEt2bBV/M8mqLCglryhq5ok1TwLn0t6lZCzxETygGmRGs8pgQrKcSxbGSBKnyN3eh1fW8r9ILfMBy75ACfOAvoUEozzHyIOHY1jZ3CWE3ru+174wY/xL9uVQ/f+ob6m8BnfBRAVRMx+3jJRyLnWdndjln5wHtJcNyWJW6T9vznPJwhhV4hR5+eq9++t3zp67k1GRfRpE+4ClmxUxw7CiilgKrhO/9qt4QWc6jBTTOf4lk6VUV1jnCpmsyumlZGY+4kIs8wHOWn3iA+Yyq+QkLfFcsjBGmBgPkd6l6+sbd69+2M2qyDIfMJktXkoYypE9zucHqciB5e7CtniRIbEu2ZfDgXXI4H+Yq3E2ZH4YvC5m5geXPxyC8FyUY5F75ZMCDdI6yM2YVQYvP8u5Ej0YR48IRR6siZxRkWU+YDJbvMQwhpH47jqe51ggEn1H3xCn7x7m2+KxC8S+ZMLtzfr+4PQKmzM/DF4XgZr54ViQukqqvRClda56xbidhyuhAShOURzqnMOs0t8+c55LFsYIw1Vk1X86uyLH+oDJbPESw+iQPdMO23OMj8cgo/rj6bSybfG4BWJfcrAohkCnFCXR/DB4XY5gXJm3pdbZ2JznShnZd609ndmsksxDznPJwhhhWIpcP9C7ean+Z/4+sqPkymd8fWRXQ/Hb4iWG0SF/XfI9x2KS4+3H+R6A8G3xmPAvmc6hVpedh7cYoxbNmR/S1xUoipJ5R8vknUs9iK/l8ItSnzSfWSV1+bnPJQtjhOEp8rk7qv90dkWO9QGT2eKlhuFvKFGeY1EEBNF1nzNt8VhpibnkaLs/3lBSI+aHafc88VTKsUC+wxbP9Swr0tvF/hmU0awyePacxphpHoyjB0uRdQORnGYiMh8wmS1eYhjeKXqkyU1aH5kaBLcVOdIWLxxA1CXH2v2FZwE3Zn6YOG+SUGT7iaXLFs/8zogaSub67CWYVUYXJeFciR6Mo4fYZy/v7LdoHzBiL8IWTxwG6W9GaW6KIhPCYU8EFtjiBRISf8nBUjLjTKyyrJQx7cQ9+83Xe3W3Z+OxJE+D6KI0ZFbZ9LlkYYwq7StyR+oDJrPFE4TR8YhjiucYJwbSZdkMRmaLRyC7ZIbdn+CNjOgqx5aSkQp35o0YHO8HuX8l6GlMcAfXi+sOQ7Yp1JBynksWxkiCdS0AAKAUoMgAAFAKUGQAACgFKDIAAJTCxCsn/36QtH7BAABQLFBkAAAoBSgyAACUAhQZAABKAYo8LsDuD4Dy4SryiU++NRa1+PqTnIpMmOl1hq/06C+eWn/EznL65/f3s1qExYYh3iv0TlT86uyeA9IecXj/CgAxUYr87YX5/H1k2kyvo71y6pWndGe5hizCZMvgCvaiXw4WLD7pOyDtEZfd/BCAsaJlRabN9CqCHnHpznLNWYTJDO5i9wouWJHLXIpeWS27+SEA40b7feQKr9cDwyMu3VmuIYswmcEdsZdvHaKgs1ysIhMHJDzispsfAjBuCMeRZYPIAkUOesRlcZZryCJMZnDn26t7+4lh2BE2uBPZ/QUM7jwecdnNDwEYQyRzLd659u/76xtr1y40rcgcj7gsznJNWITJDO74ew26vRxnuag+cvCAzmHu7OaHAIwhEkU+MX/hH99v3P/++jvxgxi+OIJGIT55yuIsl989TBZGaC9zwWjNfdm6nIv6jpGK7HXM83jEZTc/BGAMEc5HvrDavCIzPOJyOcvldw+ThUHuZUxjMPrItLOcQJE9Bndej7js5ocAjCGyPvJnX69v3F/9rNFRC45HXC5nuewWYbIwyL1c88yUMYGws1yEIhMGd16PuOzmhwCMIRJFvrC6IZ534YsjeNP6XH5zOcs1ahEmmxamPw3THmDW2q2Nb1AGd6LZb44D0h5x2c0PARg3uIpcPc2rEfWOfYpMm+kN8Ayq5nSWa84iLF2RO8Ohlf39/f2dzcsrm7tMZ7mOyIDVd0DaIy67+SEAYwXWtQAAgFKAIgMAQClAkQEAoBSgyAAAUApwPgUAgFKAIgMAQClAkQEAoBSgyAAAUApQZAAAKAUoMgAAlAIUGQAASgGKDAAApQBFBgCAUoAiAwBAKUCRAQCgFP4PzhYU78sp3iUAAAAASUVORK5CYII=" alt="" />
Java学习之——Java Serializable的更多相关文章
- [java学习笔记]java语言核心----面向对象之this关键字
一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理: 代表的是当前对象. this就是所在函数 ...
- [java学习笔记]java语言核心----面向对象之构造函数
1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用: 给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...
- [ Java学习基础 ] Java构造函数
构造方法是类中特殊方法,用来初始化类的实例变量,它在创建对象(new运算符)之后自动调用. Java构造方法的特点如下: 构造方法名必须与类名相同. 构造方法没有任何返回值,包括void. 构造方法只 ...
- [ Java学习基础 ] Java的继承与多态
看到自己写的东西(4.22的随笔[ Java学习基础 ] Java构造函数)第一次达到阅读100+的成就还是挺欣慰的,感谢大家的支持!希望以后能继续和大家共同学习,共同努力,一起进步!共勉! ---- ...
- [ Java学习基础 ] Java的抽象类与接口
一.抽象类 1. 抽象类 Java语言提供了两种类:一种是具体类:另一种是抽象子类. 2. 抽象类概念: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的 ...
- java学习路线图-----java基础学习路线图(J2SE学习路线图)
安装JDK和开发软件跳过,网上太多了,不做总结,以下是我总结的学习路线图,欢迎补充. JAVA基础语法 注释,标识符命名规则及Java中的关键字 Java基本数据类型 Java运算符与表达式 Java ...
- Java学习之Java接口回调理解
Java接口回调 在Java学习中有个比较重要的知识点,就是今天我们要讲的接口回调.接口回调的理解如果解释起来会比较抽象,我一般喜欢用一个或几个经典的例子来帮助加深理解. 举例:老板分派给员工做事,员 ...
- Java学习笔记 -- Java定时调度工具Timer类
1 关于 (时间宝贵的小姐姐请跳过) 本教程是基于Java定时任务调度工具详解之Timer篇的学习笔记. 什么是定时任务调度 基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行的任务. 在Ja ...
- 我的Java学习笔记-Java面向对象
今天来学习Java的面向对象特性,由于与C#的面向对象类似,不需详细学习 一.Java继承 继承可以使用 extends 和 implements 这两个关键字来实现继承. extends:类的继承是 ...
- Java学习1 - java 历史
Sun的Java语言开发小组成立于1991年,其目的是开拓消费类电子产品市场,例如:交互式电视,烤面包箱等.Sun内部人员把这个项目称为 Green,那时World Wide Web还在图纸上呢.该小 ...
随机推荐
- java面向对象(1)
一.方法传不固定值的用法 public void Test(int a,Person ...Persons) { for(Person p:Persons){ ...
- mysql 实现多列唯一性约束
alter table j_assistants add constraint unique_name_course_class unique(name_id,course_id,class_id);
- redis主从配置<转>
一.Redis的Replication: 这里首先需要说明的是,在Redis中配置Master-Slave模式真是太简单了.相信在阅读完这篇Blog之后你也可以轻松做到.这里我们还是先列出一些理论性的 ...
- Redis初步认识
官网:redis.io Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的 ...
- 简单的Http请求数据保存到Hdfs
使用okhttp工具集来开发:(如果文件已经存在会报错) package com.etl; import java.io.IOException; import org.apache.commons. ...
- 依赖注入:Ninject学习笔记
依赖注入(DI)就不多说了,可以自行百度,本笔记整理自Pro ASP.NET MVC5. 1,Ninject安装 Ninject是一个开源的注入容器,可以通过VS的Nuget进行安装.由于是在mvc中 ...
- Hbase 学习(五) 调优
1.垃圾回收器调优 当我们往hbase写入数据,它首先写入memstore当中,当menstore的值大于hbase.hregion.memstore.flush.size参数中设置的值后,就会写入硬 ...
- 解决IDEA 中git 无法自动push 提交问题 Push failed: Failed with error: Could not read from remote repository.
Push failed: Failed with error: Could not read from remote repository.
- Spring cloud系列十四 分布式链路监控Spring Cloud Sleuth
1. 概述 Spring Cloud Sleuth实现对Spring cloud 分布式链路监控 本文介绍了和Sleuth相关的内容,主要内容如下: Spring Cloud Sleuth中的重要术语 ...
- Java设计模式(9)适配器模式(Adapter模式)
适配器模式定义:将两个不兼容的类纠合在一起使用,属于结构型模式,需要有Adaptee(被适配者)和Adaptor(适配器)两个身份. 为何使用适配器模式 我们经常碰到要将两个没有关系的类组合在一起使用 ...