文件工具-base64转byte数组-网络图写入本地

package org.wms.inv.wika.utils;

import org.apache.commons.codec.binary.Base64;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import javax.xml.bind.DatatypeConverter;
import java.io.*;
import java.net.URL;
import java.util.Arrays;
import java.util.zip.GZIPOutputStream;

/**
 * Created with IntelliJ IDEA.
 * User: smy
 * Date: 2020/3/17
 * Time: 10:37
 * Description: No Description
 */
public class FileUtils {
    /**
     * 获取文件、二进制byte数组
     * @param arg
     * @return
     */
    public static byte[] getFileByteArray(String arg){
        ByteArrayOutputStream byteArr = new ByteArrayOutputStream();
        try {
            URL url = new URL(arg);
            InputStream in = url.openStream();
            byte[] buf = new byte[1024];
            int length = 0;
            while((length = in.read(buf)) != -1){
                byteArr.write(buf,0,length);
            }
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return byteArr.toByteArray();
    }
    //base64字符串转byte[]
    public static byte[] base64String2ByteFun(String base64Str) throws IOException {
        //return Base64.decodeBase64(base64Str);

        BASE64Decoder decode = new BASE64Decoder();
        byte[] b = decode.decodeBuffer(base64Str);

        //byte[] b = DatatypeConverter.parseBase64Binary(base64Str);
        return b;
    }


    /**
     * 获取网络文件并写入本地   测试用
     * @param arg
     * @return
     */
    public static void getFileByteArrAndWrite(String arg){
        byte[] byteArray = getFileByteArray(arg);
        byte[] bytes = compress(byteArray);
        //String json = new String(Base64.encodeBase64(bytes));
        File file = new File("H://new.xlsx");
        try {
            file.createNewFile();
            FileOutputStream outputStream = new FileOutputStream(file);
            outputStream.write(byteArray);
            outputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static byte[] compress(byte[] data) {
        //System.out.println("before:" + data.length);

        GZIPOutputStream gzip = null ;
        ByteArrayOutputStream baos = null ;
        byte[] newData = null ;

        try {
            baos = new ByteArrayOutputStream() ;
            gzip = new GZIPOutputStream(baos);

            gzip.write(data);
            gzip.finish();
            gzip.flush();

            newData = baos.toByteArray() ;
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                gzip.close();
                baos.close() ;
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        //System.out.println("after:" + newData.length);
        return newData ;
    }

    public static void main(String[] args) throws IOException {
        //getFileByteArrAndWrite("http://10.0.6.44/upload/public/0/4d90b2ad1a1249369a2888f07bffa976@付款计划-业务版 (2).xlsx");
        //getFileByteArrAndWrite("http://10.0.6.44/upload/public/0/889a2873ccf54431a1053f9b7fc99f0e@9df1692fe9b1dcb2b4fa55d380e1be64.jpg");
        byte[] a = getFileByteArray("https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2653513621,2041053246&fm=26&gp=0.jpg");
        byte[] b = base64String2ByteFun("/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAKmAfQDAREAAhEBAxEB/8QAHAABAQACAwEBAAAAAAAAAAAAAAECAwQFBgcI/8QAShAAAgEDAQQFBwcKBQQCAwEAAAECAwQRBQYSITETQVFhcTJSgZGhsdEHFCJCcpLBFRYjM0NTYoLh8ERUY4OiJDRzwiWTCDXxsv/EABsBAQEAAwEBAQAAAAAAAAAAAAABAgMEBQYH/8QAPBEBAAIBAgMFBwMDBAAFBQAAAAECAwQRBTFREhMhQZEUFTJCUmGhBnGBIrHRI8Hh8CQlM6LxQ2JygpL/2gAMAwEAAhEDEQA/APv4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMXJAFIC7yAZQDKAZQDKAbyAKSYFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEbwssDRKtvcFyAm+QXfAb5Q3yC74DfKG+A3gJvEGcKqbw+ZRtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODXuN+W7F/RXtA174F3wLvgN8C74Df7wG+Bd8Bv94Ec+8DFz7wOVb1+kW639Je0DeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADym13yh6DsTVtKOr1a3S3OZQhQpb7UVwcn2LIHbU9Zs9R0y3u7C5hXoXVNVKVSD4OL6/wA0qfAgy3wG+BekAdIA6RAOkAvSATpAMXWSAnTIDptW2x2f0KThqer2tvU/dOe9P7qywOkh8rmxzqYhrE6cuqpK1qbq7+RR6XY3bnTNr6Nelb3FH59ayca9KE8prOFUg+uD5p9XJ8QPVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8TvNDtttf8A8gtTs9Vo9Pp+nabGPRS5PMUlj01G/FIDzezmrV/k023udmtRrTqaRVqf9LXnyUW/oy7k+T7+IH2ulcQqwU4STTAz6QDF1cdYHmdqNvtG2VXR3dWda9kswtKGJVH3vqivED5vffLHtFd1XHTrCxs4PyVUUq9T8F7AOPT+VTbO0kp3PzOpDza1lKmvWsAew0D5X9Ov5woaxbvTasuCrKW/Qk/tc4+nh3gfQoXUJwjOE4yjJZjJPKa7U+sCSuUlzA4d7qtvY21W5uq8KNClHenUm8KKA+O7T/KXqu0Fd6ds909pZzluKrBPp7h9keuKfdx8AGifJXc3EFX1S5Vq58XCC6Sq/tSfBP1geifyVaJ0eFeagpedvwfs3QPL6rsPrOylwtY0S9qVHb/SVagtytSXXmPKS7fcB9b+TP5RYbX2crLUHSpaxbxTmocI3EP3kV711eDA+hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADrLiwsbKte6rStaUL2vSjTq11H6c1HhFN92QPlvykbJrabZ9zt4J6jZp1KD65r60PT1d6QHl/k224q1aC0i9qSdxRWKbm+M4Lq8UB9To6lGpFPIHldv8AbiWzmmwt7Bxlqt2mqOeKpR5Oo17Eu3wA8DslsPW16ctV1atW6CrJzc3LNW4fW8vku/r6gPqmnaZp+lUVSsLSjbxXmR4vxfNgcupJTi4zW9F81LivaB4jajYOy1GhUudLpU7W+SzuQ4U63c1yT716QPC6DtbrWzLlb201O3jJqdlc5cYS61Hri/DgB2Nf5Vtormq1QoWFtFdThKo/W2B0GsbT6rtOo/lO4j0FJ5jQpR3IZ85rrfiB9H2G2cp6VZQ1C5pr5/XjlZX6mD5RXe+v1Ae2pzyBsc2kBqlLLA+NbbafW2Y2op32k1J2s5/9VbypPDpzTxJLu7u/AH3n5PdtaG1uj7lW9tK2rWqUbuFvlRzjyoqXU+WVwymB7IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA63XJuGmy/ilFe0DzEp5RB8P+UnZ6rs/r1PaDTc0qNxV3pOH7Ktz9Uufjko9psvr8da0ildpxhVSxWpqSe5Lt7k+ayB4O2U9ttvZ1ark7epUaX8NCHUvH/2A+y09ylTjTpxUIRSjGMeCSXJIDbFtgY1HhAcWVbvA+R7eWsLTaepVprEbmkq0kl9ZcH6+AHM0/YS0lZwrahcXDrVIqThSkoxhnq5ZYHntK02D2np6ZJuVOF70cm/rRi8+5AfaIVuIHYW01LrA5M2scANOcsD5t8qko/OtIh9bcqt+H0QMvkSoTq7furQyoUrSq6riuDTaST9Lz6AP0gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdRtFw0vPZUiB5Xf4AdZrun2+raNd2V1T6SlVpNNLmnzTXengD8/07e60e/vLTp6tN7qi5U5OPSQfbjmmB7X5NY01rV28JONtiPpksgfTVPiByIVFFAca5uElzQHXu4UpYTyB832zn+UNrbe1p/SlGnCm8dsp8vUB7qpHEXjl1AfOJzWl/KBOrU4Q+cwrZ/hksN+8D6bKs4QclxwBvt9RUcfRfoA5q1FSSSi2wOXSbccywnz8APmVW2l8ovymUdOtpS+ZU30Uqkfq0oPNSa8X9Fd+AP0hY6faaZaUrWytqdvQpRUIU6cUkkgOSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdbr1N1NGuMLjFKXqeQPDqoBJSA89fbL6LeylO5sKVWTylJ5Uop9SafpA+eaPVlsjtrO1u5PoYt0nUf1qU+MZ+7PgwPqjqY4pr0Aca6uJJRUW118AOBUqTlzbfiBxtQ1O30jTal1XljC4Lrk+pIDyGyVnX1fXq2r3UeFObm+zfaxGK+yvwA+hTpfQA8Ptlo068YX9vByq0U41ILnOn3d65gbNndqKV1a0rO8qqNaKUYVJPCqLq49oHp6aT4rkBzqVahbRda4qwp04rLlOWEgPI7RbaVtXktG2ejVqu4l0TrU4veqN/Vprrz2//wBA+tfJjsFHY7R5VrtQeq3UV0zjxVKK5U4vu631vwQHvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhVpxq0Z05eTOLi/BgfMqsZW9epQnwlTk4P0AYuYRpnLIV5Ta3Zta5QhWoOML6gmqcpeTOPXCXd2PqYHmtI2uvdEf5N1S2qyVLgoS4VKa7s8JR7AO+e2GiVI70ruUH5s6ck/cB1t7trZU4P5nSq3E+puO5FeLYHS21jq21l7G4uJOFvF8J4ahD7CflS7wPo2mafRsLSnbW8NynTWEuvxfeB2O4t0DiXFupoDyGq7GULurOrbT+bVZPMko70JPvj1egDq4bMbS2z3ba5W7/AKd1KK9TQHIo7C6tfzjLUr+morzqkq0vQnhAfUPk52R0/S9W+cW9J1KtGm3O4q8Ztvgkuxc+CA+qoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHhdsbF219C9gv0ddbsu6a+K9wHnFVAjnkDXJ5A4GoabZalSVO8tqVeK5b8cteD5oDop7EaQ5ZhG5przY13j2gci12T0i1mpq0VSa5SrSc8evgB3lOkopJJJLlgDkw4AbM8AMJcQNUoICKKQGakkgPo2yunux0iNSpHFa4/SST6l1L1e8DvQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcTUrClqVjVta3kzXCXXF9TXgB8ovbevpt7UtbmO7Ug/RJdTXcwNKqZ6wLvgTe7wI2gCaAyUgMlMC9IBHMDFzQGLqIDvNltHlq1+q1WL+Z0GnNvlOXVH8WB9NSwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6baDZ+hrlrhvo7mmv0VbHLufagPld/aXmlXbtryk6dRcutSXan1oDQqwGSqgXpAMulAdIA6UCOr3gYut3gYuv3gdvoGg3ev3GYZpWkXipXa9ke1+4D6rZWVDT7Sna21NQpU1hL8X3gcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4eo6VZ6tbO3vaEasOrPOL7U+pgfONc2Ev8AT96vp0neW64uHKpFe6Xo9QHkVVaeHlPsYGXTd4GSq94Dpe8COt3gYut3gIynVmoU4uUnySA93s9sCqyhdatWjKHNW9GeU/tSXuXrA+g0aFK3owpUacadOCxGEVhJAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABrrV6dvSdWrOMIR5uTA8PtDtLWu4TtrPep0HwlJ+VP4IDxVxRjVealPL85cGBxHYZ406vomgMHY3UeUN5dzAitLl86UvUBsjp11P6jXiBvp6NVl+snhdwHY22nqi8QWO/tA7/Tqte0kpUqkoPufP0Ae00zUlew3KiUaqXHHJ94HYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHGu7yFpTzLjJ+TFdYHltQq172e9WllLyYrlEDqqtnnqA4k9PT6gNL09dgFjZbvUBvjbcOIGXQJAZKiuwDONNdgHIppIDl2107WvTqp+TJZ8CD2qalFNPKfFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1V60aFJzfoXawOirSlWqOc3mTA48oIDTOmmBolTRBplTXYFYOCRUYOIGLwBiBUwNiYGm4q7qSzzYHvdMq9NpltN83TQHLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6fUK/SV9xP6MOHpA4UpYA0zn3gcepWSA4tSuu0DU667QMekz1gTf7wMXIDHIFTAu+B119VfzqlTT5LeYH0XZ+W9oVq/4WvawOzAAAAAAAAAAI5JLLaXiBrlc0Y86sPvIDB3tBcpN+EWwNctSpR+rL04X4gSjqVOrWjT3cOXBYeQOaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANVxVVG3nUf1Vw8QPOSm+bfFgapzwBxatbCIOBWuO8o6+td4fMDUrvL5gb4V89YG5VMgN8BvAXfAm+B1lWe/qEn5qSA+m7O//obXwfvYHaAYynGHlSS8WBrd3bx51oeh5Awd9RS4OcvCDA1y1GC5U5elpfiBqlqfZGC8ZN+5Aa5anUfKUV4Q+LA1S1Cs/rz9GF+AGqV1UlzlJ+M2BrdVvqj6gI6s+qTXhwAwbb5tvxYGIHJ09Zv6Xdl+wD0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6vWa27Sp0lzk8vwQHSylgDjVagHX3FbgwOpubjGeIHTXN8ovGQM7as58QOypT5cQORGp3gZKoBzLaxurynv0KalBPDe8lgDlx0O6fl1KMPGeQNi0HPl3sV9iDYCls1Y05ucq9xUk3l8kB3dCs7W2p29KdRU6axFbyX4AWVxOfPL+1Nv8AEDDffUor+VAOkn5z9HADFtt8W2AyBAAACARgMgRgQDl6Ws38O6LYHfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADz2rVd++kuqCUfxA6ypIg4FerjJR1N1X58QOlvLndi2B1FPeq1N+Sy2B2tD6KX0WByY1cdT9QGarvsYGaqyfUwPT7O8bKo3+8/ADuAKAAAAAAAAAAAIAyBAIERhUA52kLN632Qf4Ad6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPJ3FTpLitPtm37QOBXnhMg6m6r4T4lHS3NfnxA6e5m6k93IG61ogdvQorHIDmQt445AbPm8V1AR0orkgO60FYta3/AJX7gO2yAAuQAAAAAAAAEyBGBAAEyBGwIB2OjLNzUfZD8QO7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwPFdJly7cv3kHFrxqT4Qi5PuKOorabqNebUbdpdspJIDh19nb9xbcqafpA6S6sLizn+mptLzlxQG+1aA7m3A5keQFbwBrlNAdxoTzaVX21WB2oDIAC5AAAAABkA2BjkAEAqMCNgQAB2mir9JWfckB3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxnJRi5SaSXFt9QNt+T5Fq3yq6lHVK8NMo2vzOE3GnKrBylNL63NYyeffV27X9PJ9ppf03h7qJzzPannt/8ONH5WdeXlWthL+SS/wDYntd+jdP6Z0k/Nb8f4bY/K7rC8rTrB+G+vxL7Zfown9Mabyvb8Nkfle1L62lWj8KkkPbLdGE/pfB5ZJ9IbY/LBdrytHoPwrv4F9snoxn9LY/LJPpH+W7TdbhqtF3UYKlvze9TUs7jzyydePJGSvafNcQ0dtHqJwz4+cT1h3NCukbHE5kaqYGT3WuIHGuLKnXg4yimmuWAPL3+z9S2k6tqm49dPs8AOJb13F4eU11MDtLbpbmW5Sg5Pr7EB2UNHnKOatbdfZFZA1vTbenUUatepx5fRwn6QObo8Ywo14w8hVpJeAHYhAKoABkCgQAAyBAADIEYEAgACZA7fRF9Gu+9IDtgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4P5TNo3pmjLTKE2rq9TUmnxhS+s/Ty9Zy6rJ2a9mOcvoP09oO/z99f4afmfL/L4uea+8AAAAB2Ok6pPTbjPF0p+Wl1d50YM3d28eUvI4vwyNdi/o+OvL/EveWWpU61OMozTT5NM9OJiY3h+eXpbHaaXjaY8na0rlPrKxcynWz1kHIjJMoOClzSA6+70a2upqU4Yl50eDA5tvbUrakqdKCjFAcjdwssDjVqqXBAcfSn+juH/ryA7ACgAgFAgAABQABMgQCAAAEbAjA7rRF/09V9s/wA7QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0Xd1RsrWrc3E1ClSg5zk+pJZZJmIjeWePHbJeKUjeZ8H512g1mtr+t3Go1cpVHinB/UgvJXq9rZ5GW83t2pfp2h0ldJgrhr5c/wB3WGt1gAAAAAcqzv69lPNKX0Xzi+TN2LNbHPhyeZxDheDW1/r8LdY/36vUabtBG4e79JTSy44zw7T0MeemTwjm+I1/CtRov6rxvXrHL/h6C11KE0vpI3PNdtQuVLHEDn05JoDJ8WBlFZYGm4qqKwmB11SrlgbdI/7es+2tIDsALkBkABcgMgQAAyBMgMgQABAIwIAIO90Vf9FJ9s3+BR2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8w+VXaLcp09Btp/SqJVLlp8o/Vj6efoRxavJ4diH1f6b0G9p1d45eFf385/h8qOB9iAAAQBuA3CpuBN3f7HY/Lc89VCfvR1aT43gfqSf/AAf/AO0f7vU3VjTlJzp5pz7YfA9F8K0Uru4tJYqLfgvrR+AHo9P1CFeCcZJgdiqiYFlWUYvigOur195viBw5VOIHO0V5tKj/ANWQHYgMgXIDIAAAAAQAAAjAdQEAjYEYEbA9Fo6/+Pi+2UveBzwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHX61qtDRdJuNQuH+jowcsdcn1Jd7fAxvaKVm0ujS6a+pzVw05z/3d+dL++r6nqFe9upb1evNzm+99S7lyPHtabTvL9PwYaYMdcVOURs4xi2hUAm4DdMhNzJU3TITcyE3d3slU3NfhF/Xpzj7M/gdGmnbI8T9QV7Win7TH/fy95Ujk9J8I4NanzA4tO4dnWVSLSX1lnmB3UNXpypqSkmmBpnq8G8bwGDvFLrAwddPrA7rQ3mwb7akgOzyAAAAAAAAAgFyBAJkABMkEyURsCMD0ulLGm0u/L9rA5oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD478qO0Xz3UoaNbzzQtXvVscpVOpfyr2s8/VZN57EeT7b9O6DusU6m3O3L9v+f7PnpyPpQIBN0yEmTITdCpugTdMlY7mRsbuRp938y1C3uf3c034dfsM6T2bRLl1mHv9PfF1j8vqUZRqQUovMWsp9qPW33fm87xO0tFaDcXjmEcF06VZ9HVio1Op9UgODc6dWp56JyXcB1lW3uFL6TkBspXdejwlmS7wOXDUIyXlcewD2ez7zpUX2ybA7XIABkBkBkBkBkABMgMgQAAAjZBi2UQgmQPVaasadQ+wmUcoAAAAAAAAAAAAAAAAAAAAAAAAAAAADotrNehs7oNe9eHWf6OhB/Wm+Xq5+g1ZckY6zLv4bop1mojF5c5/Z+eqlSdarOrUm51JycpSfOTfFs8nn4y/SqxFYiscoYhUCTI2GKZKkoEMlTdAx3RsrHdGysZli2NmMy9tsnrUa9srGtL9LSX0M/Wj/Q79Pk7Udmeb47jWj7rL31I/pt+J/wCXqHuzOh4jXUt6MotOKeQOPvyt/o1szo9U+uPiBvlY0a0FKOJJ8mgOLU0WnLkBono8YR/Vqfpxj1Aej0KHR6aocPozkuAHZAUBkAAyAyAAZAmQGQJkgmShkCATqAxcornJL0gZQp1av6ujVn9mDZB620g6dpRhJYcYJNego3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAfL/lK0baLWdXtlZafVubGjS+h0Uo8Jt/Sym11JHHqcd72jbk+n4HrtJpMVu8na0z+PJ4OpsltJSTlPQr1RXFvdi0l6zmnBePGYe9HGtHPzuqdC5XO0uF/tsnc3nx2Ze+NH9cMHTrLnbV1/tsdzfoscU0k/PDHE1zo1V/tsndX6MveGln549WO9jnGf3GO7t0X2zTzyvHqxdSK7fSmOxboy9pwz80J0sPOQ7Mnf4/qhOlg/rx9Y2k7ynVHVh58fWNkm0dUdSPVJP0lYTaGDmu1FYTZIXNW2rQrUZuNSDzFrqMqzMTvDlz1rlpNLxvEvfaDtJT1OjuyahcQX06f4ruO/Hki8fd8frNHbTX2+Xyl6CNVSxxNjjZPEk8rOQOPGVWznv0uNP60H+AHY0K9K6p71N8euL5oDNx4gb9I/wCyf/ln7wOfkgZKGSClAgATJQAZAw345xvLPZkDbChXqfq6FaXhBgb4aXfT/YKH25pe7IHIhoVxLy69KP2YuXwA5ENBor9ZXqy8MRA5ENGsYc6O+/45NgcqnbUKX6ujTh9mKQG3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxb/ULXTbWdzd1Y06cet82+xLrZry5aYq9q87Qzx47ZLdmkPlO1W2VfVIVKcM0LCPHo0+M/tfA8TPqr6i3Zjwh7mk0UUmIjxtLodmruep21aFSLdSjLml9V8vUevpp/o7PRz8X0tcOWL05Wd181fmy9R0PIYu1fZL1AR23c/UDZi7VdnsAwdpBvyY+oLvLF2NJ86cPuobHat1a3p1u+dCl9xE2hl3l+s+rCWlWj/w1H7iHZjoy77LHzT6y1PRrJ87Sh9xE7FejKNTmj559Za5aHYP/B0fuk7uvRl7XqI+efVjDR7OhWjVo28IVIvKlHKaEUrE7xCX1We8dm1pmHZUbqdJpT4rtM3O7KlcxklxQG7eUlzCNMoTpz6WjLdmvaFc22vY3DUJrcrLmn1+AHP0n/sn/wCSfvA5wDIF4vkmwNVW6t6H62vSp/amkQcGrtDpVJ4d5CT7KacvcUcSptZZr9VSrVPQoog0S2nrT/VW0I/ak2UYflm+qv8AWRiv4Y4A95oNna3Oj21xVoxqVZR+lKfHLTwB3UKNKlwp04Q+zFIDMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB02u7RWmiUfpvpLiS+hRi+L732I5NTq6YI2nxno6dPpb558PCOr5ZrGsXmr3LrXVTOPIguEYLsSPByZr5rdq8vcxYaYa9mkPIa5d5at4v8Ail+B1aanzS9HS49onJP8OXsPCc768nxVNUkm+PPPBcPSepp+cvL43Md3SPPd7ZQX7z//AEdb51N3+P2sBuv95/yfwAjT8/8A5f0AxafnL7yAjUu32oDFp/3j4gTD/tL4gYtPs9gGLXc/UBhJL+0BqlFAalvU3mEsdwHJo3261GfBgdlTkqkcriBrq0d55XCS5NAcu01T5naqk6LnNSbzvYXEDXV2huf2dClH7WWBwqutajPlX3PsRSA8jtNd6jc6fcf9dcp0/pLFVrgua4dxhkj+l1aO0Rmrvyl1Ozua9hcVZtykpRWW8vged3s0z03893s8Qp29PtHk7ukz1Hzjm0wObSQHNpRA+kbJz3tDjHzKko/j+IHeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPNbWbRVNFo06VGD6asm1VlFuMEvxPP1+pyYa7Y48Z8+jt0Wnplne8+Efl8zr3XzqrOrUrqpUm8yk55bZ89M2mZm3N78REREV5OBd1FQoSqy8mKz4m3HHamIWuOb2isebx1xOVapKpLjKTyz16xERtD1JrFY2jk+laFpL0rR6NBxg6010tbLWd99XoWF6z0cVOzXZ8Xr9R3+eZjlHhDsOjl+7h6JI2OJNyX7petA3R05fun6wI4S/dSAxcH+7l6gMd1+ZL1MDFxXmP1MDFxXYwMWl2AYtIDFxXeBjKPiBrlHxA1ygsAc7S5NSnTzwxlAdlKOUBx6lMDizpgaZQA8xtDUjQsbtt804rxfAwvO1ZdOkpN89Y/l1mzy6DR3KXDfqSl6OR4mo3nJ4eT3ss+Uu96GpQn0danKnUWG4TWGsrK957lLdqsTL5q8RFpiHKpIyYufRQHPoxA93sfPNncU/Nmn61/QD0gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOKlwfFdg2HEr6Tp9znprG2qZ8+lF/gYTjpPOGUXtHKXyb5SNl6llfUaumWb+a18uUaXKMl1Y7Os5sunjwnHV7fCNbixWtOe3j5f7vBLTdRo1I1I2VdShJST3M4aNUYskeT27cQ0V6zE5I8XYvWtpY8ZOrn+K1i/wNvbzR5PN9m4VblaPWWP5w7Rx5pPxtF8BGXKnsXDZ5Xj/APpPzn16POnRfjbMve5Oie7tBPK//uX87dajzoWz8aMl+I77Ie6tJPK/5g/PLVV5Vrav+WS/Ed/foe59PPK/5hfz3v15Vna/ekvxHtEx5MfcuOeV5/DJbc3i52FB+FaRfaJ6JPBK+Vp/DJbc3HXp8fRXfwLGo+zCeCdL/hfz6n16dL0V/wCg9o+zGeCW+v8ADL8+l16dW9FVP8C+0R0YzwXJ9X4Pz4ovyrC5+9Fl7+OjCeD5Pqj0k/PezflWVyvRH4l7+vRjPCM3WPyfnrpz529yv5I/Ed/VjPCs3WP+/wAK9stLa407hf7X9R39GM8Lz/b1T879If1q68aTL31GM8N1HSPVztI2m0u61Sjb0a0+kqvcipU2svxLGWszs15NFnx1m1o8I+72KjlGxyNc4ZA41SmBxp0+AHzraitVvdbenUk1GnPjnrk1z8EmcufJEfw9vh+GKY++tzl9D+TfZWhqVZXlxuys7GShTpP9pUxnL7lz72culw95aclnNq9XEzNKz4+bsPlG075vrtC9jH6N1TxJ/wAceHua9R6jzXl6XEDsKC5AdjQXBAet2RqbtzcU8+VBS9T/AKgetyEMgMgMgMgUAAAAAoAAAAAAAAAAAAAAAAAAAAIBQIAAIAyB5rbOdF6bRpSqR6d1FKFNvjJYeXjuMe1XeK+csorMxv5Q8HOl20/Y0ZI0Spx7GvSBg6S7/UBOhXaDZOg/vINj5v3BNmErOEvKhF+MSTESyiZjk1S0q0nzt6T/AJDCcVJ5w2RmyRytLVLQrOX7CK8DXOmxzyj8tkavNHzNU9nrV8qUfTBGudHXytLbHEMsc/8Adx57OUP3VP7rRhOiv5XbY4laOcflons5TXKlD0SNc6XNHK0NkcSjzmWiez6XKi/Q/wCphOHUR5btkcQrPzy489EUedKS9ZhMZq84ltjWTPK7RLSYL6j+8Y97eObONRknlb+zTLTKfmT9Y76eq9/m6rbW0LO9oXMd5SpVIzXHsZnXNaJ3a8mbJes1t5/Z9gptTgpLk1lHsb7+L5/ZZRA0TgBxqlPgB4fVLalDX7mcY/pamN5vqWFwR5meJvlmJ5Q26zinsejiK/FO+3+X035K5YsdSpebVhL1xa/A6tNymHg8JyTeLzafHd3G39irvZqVdR+na1I1F4cn7H7Dpey+X0uoDsaHUB2VFcEB6DZ2r0WrUs8ppwfpQHtwhkAAAoABkB1AAGQAACgAAAKAAAAAAAAAGQhkBkCAAADIEAZA87tLtXbaFSdKniteyX0aWeEe+XZ4dZx6nV1w/wBMeNnXptJbN4z4VfOrSvd6pf1tSvZ1Ksmt1TxwXcuxI59DW97zlu6NbNcdIxUc57vnteKPUeaxab5TT9IGDpvsT9AE3P4fUwI4LrTAbi7fYBd3vXrAu7/fAC7vd7AI4xfWgJ0fcBi6fc/WBg6K7PYBg6Mf7QGuVvF80vWTYaZWNKXOkn/KYzjpPOGUZLxylx6mmUWsbmPWjXOmxT8rbGpyx8z1emPesaPXiKXq4G6I2jaGmZ3neXNceBUaZxA0ThwA8Rq9Pd2gqvtjF+w48/hMvm+Lb99P7Q978l89251Ol2wpy9TaGlnxls4LPjeP2e/1C3jeadc20llVaUoetHY998Qoxa4PmuDCuwoAdpQXADsbWcqVWFSPlRkpL0Ae/oVY16EKsHmM1lBGwAAAAAAAAAAuQGQAAAAAuQGQAVAgAAAAAEYFAgAAAAAdRtHc6lbaVKWl2861xKW7mCy4Lzkus5tVbLGP/SjeXRpq4rZP9WdofJb2xv41J1Lq1u4zk8ylVpTy33vB4FsWWJ3tEvdrlxzG1ZgpaxVtacaUbejuxXJScWd2LXzjrFey48mijJabdptW0a/aWtZfZmpHTXiNJ5w57cPtHKWS2h0+fCcakPtUvgbo1uKerVOjyw2x1bS6nK5prxzH3myNTin5mudPlj5XIhWtav6u4hL7NRM2RkpPKWqaWjnDaqfDhJ/dM2KbjX1ov2AOjl5qfhgCODXODXoAxwu9AVr+JgY7vg/QAw+rHoYEe92N+0DHea5r2AYuSfUBi919QGDUe1r1gdxpLzb4znEmgOza4EVqlEqNE4geI2gjua8n204v3nJnjxfO8Xj/AFf4h635NKmNcu4edbZ9Ul8TDTfFLHgs7ZbR9n0+U1CLnJ4jFZb7jufRvh6xOtOcVwlJteDYVzqEeIHaUI8EBz6S4oDvdL1F2v6OfGk+OOtAehp1YVYKcJKUXyaYRnkAAAAAKAAAAAAAAAZAoAAAyAyAyBAAAAAAAMgMgTIDIACZA1VbW3r/AK6hSqfbgn7zGa1nnDKLWjlL41tfqVpe6rVt7DTYWMbOtUoznFKLqyTXHC6jl1enx47VjaPGN/V43EeKajFlimK8xs845VV9fPijk7jHPk04+P66vz7/ALxDB1J/WpwfoJOnp5S66fqbUR8VKz6wwbpvyqC9DMfZp8rOun6mpPx4vSf8wyjUhDyJ16f2ZDusscpdVeP6G3xRMfxu5ENRuoeRqFdd0sv3l7Wpr1b68R4Zk+eI/eJhyIa1fx/xVGp9qC/oZe1Z684/DdWNFk+C8erkw2gvo+VQoz+zJr8TONfePihs9grPjWW+O0sl+ts6i+zJP3o2RxCs84a7aC0ebbDaOyl5dOrDxp/Bm2Nbinnu1zo8nls3x1rTZ/t4x+1le9GyNTin5mudNljyb4XdpV8i4pvwmmbIyUnlMNc47xzhsxB8pJ+gz5sOXNHHHJ+pgRxb7X6MgYOOOaXpWANbS7PUwO30WH6Gbw/L/ADtGsIitMio1SWQPF7Vw3NVt59UqePU/wCpzZ+bwuL1/rrP2cjZbaC22e1mF5dqbt5xdGco8dxNr6WOtLBz47xS28p+ntNfU6ycVOfZmfTxe52v2ng7d6bp9SM3ViulrQeUoteSn2texnovfmJrO083iKUcBHOoLkB2VJpIDkKsooDJXeOTA5Vvq9e2lmlUce1dTA7OjtTPCVS3hN9sXgDmU9o6dT/C1F4SQHNo6rQq84zh4oDmRkpJSi00+tBFAZAZAoAAAyAAAXIAAAAAAGQAAABAAACAAADIDIACAfENtqtLTdqr2N6ugdabrU1jhOL5S4eBzTpNTltN613h81rtJnvntaKujp3FvcKLpTclPyfo8znviyUt2bRtLg7jJFuxt4trt5fu6n3GXu79G72LU/RLF28vMqfcY7F+i+x6n6JYu2l5k/uMdi/RPZdR9EsHbS8yf3WOzfoezZ/oli7aXmy+6y7W6J7Pm+ifRj82lnk/usbT0Z1x6inw1tHqqpVY8pTXrMJxRPOrpx6viGP4bXj1P06+s34x/oYTp6dHXTjHEq895/eqZq9cIP8AlwYzpq+W7qp+oNZHx44n+JhGs5zRj6GzGdNPlP4dVP1FPz4Z/j/mBPc4xVWH2ZE7nJHKXRXjult8dLR/G7bG+uKfk3leP2stGUTqK8t2+uv4fk89v3iYboaxex5XVOf2ooyjU568/wCzdWNHk+C8erfHXb2PlUqU13Nr8TKNdeOcMvYqT8Mti2hn+0tJeiWfwNka+POPywnQz5S95o9GUNNpSnBwnNb7i+az1HdE7xEuGY2nZyplGiTKjBgeV2zo4t7W4X1ZuL9K/oac8eG7yuK03x1s81Sp/PXGjng5LPh1nLFO1aIc/AdROl19csdLfmPB6GMFCKilhLgl2HfEbPem02mZnm2x5lRyKc8AcqNbhzAOsBVVb5AcilGUsAdhb2zeGwO0o0IxxwA5cMIDk21z0NTi/oN/SX4hHbZCmQi5AAAAACgAAACgAAACAAJkBkAAAAMgMgQKAAADIHyH5b9Ocqek6lCPFOdvJ+P0o/8Asepw3Jt2qz+7Vl2jxl8/jDoaUKafkRSyeDlyTkyTefOXzE3m15v1nd7jT4TutOt69SOJ1IZfFce86KTvG76bBeb462tzcl2ncvWjJuR2v8PtQEdr3e0DF238PtAnzbu9oEdt3e0G6O2XZ7QI7fuAxduuwCO2XYF3YO3XYE3lg7ddiBz5sJWsX1IkxE8yPDk7fQtnY3FaF1Wopwi8wjjyn2vuMJxUnx2hsjLePN7ONjVkuOImbWy/JafOb9AEekw85+so1S0lJcJsDqNb2enqOm1rb6MnJZj1Ya5EmN42YZMdclezblL5ta2l5pGsxs76jOlPju7y4SXc+s56xteHjYMU4dXWLfeHfbx0vcWMgM4z7wN0agGcW2wOVQhvMDt7WiuGQOypxUUgN6eAM1IA5AdzYVultIN84/RfoA5WQAAAAAuQiZAoAC5AgFAATIAAAAgAKAAADIEAZAZAMCAeQ+Uq3oXOx1TpniVO4pVKfDnJPl6sic04qzMecTHq49ffsae0/wAPjHRSq1I04rMpSUV4s4YfN4/HaH0R0KVvCnQ6qcFHgl1LB2xG0bPrq17NYr0Y7tPv9S+BWRu0+x+pAY7sO/1IBuw7/uoCYh3+pfECNR/tf1An0f7X9QJ9Hu9X9QMXju9X9QJw7gI8dwGLx3AczS9OeoXag+FKPGbXZ2Ae9t6MKNNQhFKKWEkQb1gCgYsDFoDCUSjrNU0y21G36K4pKST3ovri+1PqZJjdjNYnnDwF/a1dPuqlKqpbsXhVMfReeXHt7is9piHH38hFUwNsJ8QOVSlloDsbdrgB2tCQHNhPgQbVIoy3gI5AdlotXeVeHY0/79QHa5AoDIFAAAAAAEAKAAAMgQKAAAACZAZAAMgQABMgMkAD578p17mnY6fF83KtNexficuot4xV4fGMu3Yx/wAvDaDaKvrlu5LMKTdWXo5e3Bji8bRDj4dTvNRXpHi9hOM5zct98X+7O19Rsx3Jef8A8GF2Tcl5/wDwYNkcJfvF91hE3JddRfdYE3H569TAjg/3kfaBi4Pz4+tgTdfnR9bAm6/Oj6wI4vzo+sCOL85esCbr7faB6TQKapWu91zk2wPQQlwIM0wLkBkCNgYSYGio+DKONSvbK0dWGoTpRtaqSfTLMW+rJhe9aRvadmVKWvO1Y3ddd7KaBquZ6Tf0req+UaVRTg39nOV6CVy47fDaJW2K9fiiXl9T2a1bSd6da36agv21D6UV4rmvSbGDqqdRPinkDl0pgdjb1AO1oVO8DnU55RBuUwMuk7wNVW4jCLbZR3mg0Zxs5V6icZVmnFPmorl6wO2yQMlDIAABQAACgAAAIoECgACAMgRsBkBkCEABkBkCAMgTIHhtrNlNU1nWHd2rt5UnTjBKdXdccc+o5cuG17zaHja/h+XUZe3TbbZ8112o9mtWqaffU6kLiEYybpSzFqSysPgb8XDdRkr2q7bfu4fduppPhMR/Lrnr9B8d+8497+Jt91av7erL2PV/V+R69R/f3q9L+Jfdes+3qey6v6vyn5fo/wCavF6X8R7r1nSPVY02t6/k/OCl1Xt3638R7s1nT8r7Prev5ZLXk/JvL5+CkzGdBq45x+YXuNd1/LbHVq8/JuNSfhTmYTpNRHPb1j/K9zr/AL+rfC81Cfk1NS9MJI1zgzRz/vDLueIff1boS1Wf7e8X2m1+JjNcsf8Ayd1xD7+rL/5Zf4m5+/8A1JtkXu+Iff1N7V/8zc/eG2U7PEPv6pvax/mbj1j/AFei7cQ6T6nSayv8TcD/AFDfiHSfwnS6z/mK/qRf9Q34h0n8Po+zk5/ki06aTdTo1vN82zfTfsxu9jDNpx17fN6CFRY5mTa2qYGW+A30QRzKMHMDTUmsAeK29unabOVa8HxhVpvHat7ivUZ48FdRM4recSyplnFaLx5PP2ji4RrRfCSUotcz4/LWaXmk84fT02tWJ8pfVNldYlqulYqyzcUHuVH1yXU/Svce/oM/e49rc48Hha3B3WTw5S16vshpmquVWEHaXL/a0Ukm/wCKPJnc43jb/ZfV9Lbl0Hzqgv2tBb3DvjzQHAoXMd7dziS5p80B2tvcR4cQOfC5jjmgMpXsIrjJAYUrqreVOjs6NSvPsprKXi+SA7/TdnZb8a+pSjOSeY0IvMU/4n1+HID0SIAFAAAAFAZKHMCgAKAAAQBkBkCAMgQAQAIAyBMgGwJkCNlDIEyB8Z+WzT9zU9M1KK4VqMqEn3xeV7Jew9fhtt6Wr0asnOJeB2YhaV9o7O3v6UatvWk6bhJtLLX0Xw7zp1Nr1xTNJ2lKxG/i+jXOzOjU4Po9Nt4tde637zx51Wafmls7MdGiGi2MfJs6C8KS+BrnNknnafVdo6N8dOox8mhBeFNIxm1p5ybQ2K0xyi16MGKsvm77/SwMXbrrx6wI6Ee4COjH+0BHRXf6gMXRSAjpLsAnRrsQHaWOpq0pRp1OCjwTA7elrNJry0ByI6tT85AbI6pT85AZflOn5yAj1Wn5yA1y1an5yA41XWKST+mgPnfyh7QU69lR02k8yq1FUm+pRj8X7ju0OOZv2mF58GektrRrNS59DE+O4jt7Zl2+qX0+l37mm/R7LYK4ktcuKKb3Z27b8VJY95v4ZvGWY6w5OJRE44npL6Jk9x4y5A4d7pWn6iv+rs6NZ+dKP0vWuIHUVNitJk80p3VHuhVyvamBIbF2MX9K8vZLs3or8AObb7L6PQafzXppLrrzc/ZyA7anCFGChShGEFyjFJL1IDPJAyBcgMgXIDIFAAAKUAGQKAAuQMQAEyQMgAAEyBMgTIDIEKGQJkBkCZAmQPivyw6x881e30qnLNOyhvVMfvJL8Fj1s36DNtqop1iY/wB3oW0f/l85p57xP8cnzOjVnbXFOvB/TpTU4+KeT3717UTDyIl9y6SF3a0rinxhVgprwayfNWjsztLe0OMlwdTGO9/Agx3V1z9/xAmIedn0f1Am7Dsb9CAYXVF+sCNdkfawMXH+FesCOHh6gI4+HqAm73gTd8QI4JrisrvA1Ozg/J3ofZYGPzSqvJuKnpWQJ83ulyuf+P8AUB0F5/mY+r+oDoLp87n1RAjtqmPp3E/VgDi3da0s6Mqle4ioxWW5Ty/UZVpa07RA+ft1toNecsOKqSwl5kF/T3np5MtdFppyW8vzJhxTmyRSPN7t7tOmoxWIxSSXcfn283mbTzl9T4VjaHuPk906cKFzqlVNKv8AoqOeuKeW/Xw9B7XD8PZrOSfN42vzdq0Ujye2yek89cgMgXIDIDIDIFQDIFyBUwGQLkgZAuQAFAAAKUAKgMSAAyBGwJkBkCZKJkBkCZAZAmQJkCZAZA495d07Gyr3dX9XQpyqS8EsktO0bs8WOcl4pXnM7PzTqd1W1G9ubyu26tepKpLxbycWDLNMtcn3fa59NWdPOCseG2zp5LDa7z7eY6Pz6Pu+ubFXfzzZG23nmVu5UZeh8PY0eBradnNPq31neHZOMnLLhDPfJHKyTdfbTXpAu5Jryl6ItgR02uc5fcA1TqUKf6yuo+Mor8SxWZ5QONU1PTKX6y/t4+NeJnGHJPKspu409otDp+VqVv6KmfcjKNNln5TeHHntdoEOV4pfZpzf4GcaTNPkdqHGntxokfJ6efhQf4syjRZfPZO1Djz2+01cIWl1L+WK/EzjQZJ84O048/lBpfs9Nqv7VVL8DKOH285/CduHHn8oFw/1em019qq37kbI4d9/wneQ409vNTfk2trDx3n+Jl7vrHOTt78nHnttrMuU7WHhTz72PZMFec/llEXnlE+jjz2s1yf+OUfsUor8DHu9JXnMerZGHPblSfRontBrNRfS1O5/l4e5E7eir80NkaLVTypLRPUdRq+XfXkv9yXxJ7Xoo5T+GyOG6ufl/MNEpV6j+nUrS+1N/ExniWljlv6NkcJ1M9PVlTsnU4vCa7Xk1zxfDHKs/h04+A5r87RHrL22jaVS0226RPfrVIreljGF2I+Z4lxLJrLxXbasco/3l06bSV00TG+89XdaTplXXNWpWUG1B/SrTX1ILm/HqXec+mwd7fsmozd3SZfX6FKlb0KdCjBQpU4qMIrqS5H0MRERtHJ4EzMzvLZkqGQLkBkC5AZAuQLkBkABcgMgVAXIDJBcgXIDIFAAALkomSCZAmQGQI2UQCAGBGwJkCZAmQJkBkCZA6faLVrPTNMqK7hGt00XCNu/2meafd2nPqM9cNfHn0dGmxXyXia+G3m+LXFjZ1Kkqit40023uwbUUuxceR4vfXnzfRRqMvLtbvK1401VlutKOWll9R+haLN3unpaee3j+75XW4LYM9qT1djpWt6rpNvVoWEo9HVmpyUqW/xSxlGWbBhyTE38vu562mOTmvX9qq3kVKy+xapf+po9n0lecx6su1box+cbXV/2+oejEfgT/wAFXov9bXLT9p6/6yteP7dzj8R3+jjlt6G1mP5sazV/WTX89dse26eOUfg7NmUdi7yeN+tbr1v8DGeIYvKJXsT1bfzIrpcLqjn/AMbMJ4lXyp+VjHHzSn5k3i5XVv8Adkap4jfyrH5b648HzTb8J+Zd8v21F+GV+BqtxHU+UV/LfXHoPm7f4YvY6/X1qb8Jr4GqddrJ5THo31rwyOcWYPZHUV9WL/3Ua51mtn5m6vuqPKfSf8sHspqK/wAO3/uL4mmc+snnefVvrfhccoj0lg9mNRX+Dk/Bp/iaptqbfFM+rdXNw6OUx6f8MHs9qEf8FU+6a5rk892+NTo/K8f9/hg9Ev487Osv9tmM0t0bI1Onnlkj1YvS7yPO2rLxpsnZt0ZRmwz88erB2NePOjUX8jG09GcWxz80esMXbzXODXiieLOOzPKYFSw8E3ZxRvjHBjMt8V2exnLcpxist4SwjyYjezxb28ZmX0/ZTRPyLpa6WK+eXGJ1n5vZH0e/J9BpcPdU+8vn9Tm72+/lDv8AJ0ucyUXIDIFyBcgMgXIDIFyBcgEwLkCpgAKBUwBBQCAoFAAYgMgTJRAJkBkCNgRsCZAjYEbAmQJkCNgdbrOs2+jWbrVfpVJcKdNPjN/DvOfUaiuGu88/KG/BgtmttHJ8r1K/udTvJ3VzPeqS5Lqiuxdx4N8lslu1bm9ymOuOvZq6XU63Q2kuP0pfRRsw13tDp01O1k3nlHi6TTLSpfavZ29HCqTrRw8Zxh5b9CR6VN94iJdGqtWmK1rdJfTZ05bzxjn3HoPi2DpSfVkCdD/AvUAVL+D2AZKl/D7wKqa7AMujj2e0DJQj/bAyVOP9sB0S7AHQ9zAnQ9zAnQrsAjoLs9wE6BdnsQDoe5+oCOj3P1MDXKgnzXsYHBvdPoXFGVOpTi012cUYzWJjaWzFmvit26TtMPDzoTt7yVtU4yhNRz2rtPOyV7O8PttPqIzYIyR0fT9jNG+fag9Rrxzb20v0aa4TqfBe81aHTxae8tyfN63PtHYjnL6Lk9d5JkDLIDIFyUXIFyAyBcgXIDIFyBcgVAMgUAgLkCoC5AZIMkAAAY54lEYEyAYEbAmQI2BMgRsCZAmQJkCZIMWwPmutWOuXd7UuLuyuW84W5DejGPUljPA8DPh1Frza9d3u4c2nrSK1ts6CtSlSeKkZQfZOLj7zmmtq/FDoi1bR4S85rFXfuOjT4QXtO7T12ru9PS4+zj3nzd1sJYb11d6jKOVQh0VPvnLn6l7z0NPXeZl5XGsvZpGLrz/h690n+7l6zrfOI6T8yYEdN+ZP1ATcXZL1AN1d/qAuF2sC8PPYFX2gLjPX7AG6u1eoBur+H1AN3vXtAYa6162AxLt9oBqXavWBMT7vYBMT7PcBGp48n2AaKqljyfYwPHahbfPNrrS0hJQnWlTpttcm3z9RxaisWts+h4dl7rQ3vblG77hY2lHT7KlaW8d2lSjurv733vmddKRSsVjyeBa02tNpcjeKxXIGSYBMC5AuQLkC5KLkC5AJgXIFyBcgVAVMBkCgXIFAAVMC5IGQMSiAQCZANgY5AmQJkCZAmQI2QTIGLYGOQI32Aca+t4X1nVt6y3ozi1x7eoTtt4kPgFzYX3TVJVLOupOTbxSeOZ500vPjs+7pqdLFYrW8eH3ciy1TWNKtvm9tF06e854nb54vva7jOt8lI2iHLqNNo9RftWtG/wD+Tb+dmuR59A/G3wZ99k6OaeE6SeU/+5VtnrEedK0fjTa/Ed/Zj7mwTymfWFW3GqLnaWj+8vxL7RZhPBMfWfw2R28vlzsLd+FSSL7R9mM8Er9UtkdvrleVpsH4Vn8B7R9mE8E/+6fRsW38vraXP0Vv6F9ojoxngs/X+Gxbf0vrabXXhUi/wL7RHRj7myeVvw2Lb6z+tYXK+4x7RVhPBsv1R+Wa280x+Va3K/ki/wAS+0VYzwjP1hsjtxpD507hf7X9S9/Vj7p1H29WxbaaI/rVo+NGRe+qxnhep6R6ti2w0KXO5kvGnP4DvqdWE8M1X0/lnHavQ5f46K8Yy+Be9p1Y+7tV9DZHaXRJctRo+l496L3lOrGdDqY+SWxa9o8uWpW//wBiL269WM6TPHyT6Ni1bS5+TqFs/wDcj8R269WM6fNHyT6M1fWM/Ju7d/7kfiXtR1YziyRzrPpKuvbvlWovwkviN4YzS0eUuDqOoW1la1K9WpDdiuSfFvsXeJtERvLPFhvltFKxzeQ0KdW82kpahVWHG4jN9zysL0I8+b723dXH9VTRaTHo6z/VeY9IneZ/mfB96b+k/E9FwTzVSCMshVTAuSCpgVMC5AyTAuQLkClBMC5AuQLkCgUCgUABUwLkC5AAYAG8AY5AZAjAxbAjYEyBGyDHIEbAxyBi2Bi5FGLkEeM2s2lcY1NOsZ8fJrVYv/ivxZ5es1e++PHP7y9TR6XlkvH7R/u4VtT3bOipOUZbizw7jvwxMY6xPRwZpiclpjqylB9U8m1r2hqdFvqTBtDW7ePXD1oDB2lKXOnB+MUybQy7do5SwenW750KT8aaHZjoyjLkjlafWWD0i0lztaD/AJETsV6M41OePnn1lqnoFhU52dNeCx7jGcVJ8mdddqY5ZJaJbMWD5U3HwkzVbTVnlMt1eKamOdt2ieytt9XPrZqnSX+W/wCG+vGM3zONU2WivJUvRP4mudPqI5TEt1eLzPOZhx57N7v1anvNU01NedW2vE4tyvHo489DUXx3144+BqnLkr8UN8a288pifRqejLzpepMntDL2rJ0hrekJPy2v5TLv5Pa7/TDF6Suqovul7/7L7ZP0wxekPz4+pjv/ALHtnWv5YvR5Prh7S+0Qy9rj6fy1y0iUXxUSxng9rp51n1Zx0Oc+TgiTqIhlGpxz5SxekTo1EnKDfjyNmO/ecnncQ43p9DG81m1p5Ry9fs9Hp9KNtRpKC4KSbfa88xM+L8y1mty6zUzqMs+Mz6R5RH2h9iVTPHtPVfXM1MDNSAyUgiqQGSYVkmQXIFyFVMIuQMkwLkC5yUVMCgVAUC5AoFAAUCgAMAJkCAQCZAxyBGwI2QYtgYtgRsDFsqMHIDFyCvM7Sa87aMrK0lis1ipNfUXYu/3Hl67Wdn/Sxz4+b0tHpO1/qX5PGWdvRr3cfnFWEKUeMt6WHLuRxaWlb3jtztDt1N7Up/RHi9NHcms06u8u7El7D34tWeUvBmJjnCSpvr3PTwMkYOk/Myu55Ax3N3mpR8UBMJ/WT8QG53L0cALudz94F3Uuz1AML+2Bd1f2gJuRfXECOgn1AYO3i+r2AaZ2NKXOEfSjC2OludYZxkvHKZceelUZcoteDNFtHgn5W6NXmj5nHno0OpteKNVuH455TMNtdfk84iXGnpEl5LTNNuHW+W34ba6+vzVcWpaujLEotPqz1nHmxXxTtZ2YctMsb1aZU0a92zZJyjSptstYm07Q15stMOOcl58IcJNzk5y5s9OtYrXaH5vrtVbU5rZbef4jyh2lH/t0abc3nz5vqVvWUqFKWecE/YerWfCH29J3rE/ZyI1DJk2RkBmpAZKQGSkEZJgZZCqmBkmQXIVkmEUDLIFyUEBQLkCgZJgUAgKBcgAMAIwI2BiBGBAMWyCNgYNgYtlGLYRi5YA1uQVhKYHR32z9jd1p1nKtTqTblJwnwb8GcWXQYclptymXXj1uWkRXyh1FxsrDj0V3nunT+DOeeGR8tnRXiNvmq87rGmPR6KuKzUoOahmjnKb5cBThmomZ7Ex4Rv05MrcQwRXe8TEeriRvLii/0V9Wh3OTNETnry3cteJ8MzfPH8xMORDWdSjyr0qv2op/AzjWZq8/7OiuHS5f/TtE/tLkw2jvIfrbSEu+Emviba8Qnzjctw+PKW+G09vL9dbVY+hS+BujXU84aZ0N/KXJp65pdTnV3H/FFxN0avFPm1TpcseTl07qzrfqrmnLwmmbYyUnlMNVsd684lyNzK4Tz4oz58mAoS/hfgBHBrnBoBjPWwJuJd3sAuJdufSBPpL6vsAjcXzigJiHVlAYSpxa8pekDrr+136Emkt6P0lhHPqcXeYphv02Tu8kS6OTWM9p8+96XXXFTpKm6vJR6Gnx9mO1L43j2v7y/s9J8I5/v/x/chHijpl8xPN2dD9Sc9+bX1fQLCtvWNu8/so+49SnjWH2WnnfDWftH9nOhUMm5ujUA2qZRmpgZqQGakBkpBGSYGSYVkmQZJhVyEXIGQFTAuSigVAZIABkgAFAoGvIEyBi2BMgRsDEgjYGDYGLYGLZUYOQGuUgrXKQGqUgNM5kHHqSA6HaKFOppdRVFlb0XHxTyjDJknHSZjz8PVw8Rv2NNZ4yUDgiXykWapU0+oy3ZxMc4Ybso+TJrwZJrWecOnHq9Ri+C8x/MsulqrnLPismucGOfJ34+O66nz7/ALxEp0z+tTg/RgxnTV8pd2P9S54+OlZ9YN+k/KpNeDyYTprRyl24/wBS4J+PHMftMT/hsp1lTf6OvWp+GV7id3mry/u7Kca4fk522/eHLp6pfQ8jUN7um0/ejKM+ennLork0Ob4L1n+dnLp69qUOcKVTwWPczOuvv5ts6Glvh/y5Udp5r9dZvxjL4o3V4hHnX0abaCY5WcintJYT8uFSn4x+DN1dbinnu1TossdHLp6tptXhG6gu6Tx7zbXUYp5WarafLXnVyoTpVONOpCX2WbYtWeUtUxMc4ZNPt9vxKiOPW17PgBrlGPd6GBxLmCUW+OMdhJ5LDyF1W3Ibq5vkeBhx9u32ehxTXRpMEzHxT4R/n+HEgj0X57e02neW+nHhkxmWuXYUF+jNNubCPN7PSp50y2+wkenhnfHD67RTvp6T9nZQmbHU3RkQbozA2RkUbIyAzUgM1IDNMDNMIqYGSYVkmQZZAqYFAyKKgKBUBUBcgXIFyBQNTYEAgEbIMWwMWwI2Bg2UYtgYNhGtsKwbA1SeANMpEGmbCtE2VHU6ta1L21VKm4qSkn9J4TNObHN67Q49dprajF2Kz5vCK/puVSMqM4unOVNpvrXM0Z9LfDaK2ny3fNZdLbFfsTPi5drQd9SdSjFYT3WnPimY1w2tybsPDsuWvapMNz0uv5i++jL2fI2+6dR1j1YPS67/AGf/ACQ7jIe6tT9vVHpVf93/AMkO5yHuvU9I9WP5Kr/u395DucnRPdmq6R6p+Sa/7t+tDucnQ92ar6Y9U/JNx+7frRe7ydE926r6fyx/JNwuVOXs+JjOK884Z00Wtx/BEx+0slp95Hl0n9+kwnS7/K7cebi+P4bT/MxP91+ZXvXT3vGCNc6LpEw7cfFOLV+LHFvSP7HzK4+ta58OBhOiv5OzHxjU/wD1NPP8T/lirKqnwt60e+KTMfZM8cnbTieO/wAeO0fxE/2luh+UKS/R17iKXU8liNTTyl0VvpsnT+Y2bY6rqtF8akZ/bih7Zmp8X5hfZMNuX926O0d5FYq20J+DaNteIz5xDXbQR5TLXX1ipdUnGNu6eeD45b7kMusnJXsUjxlMekjFPeXnwjxdLO2uKtRzlRqLP8L4GzHimlYjZ8hxHLn1eabzSdvLw8myFrVXOnP7rLMT0ebbBm+ifRujSlFcYteKZh2bdGucOX6Z9HJotbjSabRptvEsIrNfCYer0aWdNo9ya9rPS0//AKcPqeHTvpaf983aRkbna3RkBtiyK2xkEbYyA2JlGaYGaYGaYRkmBkmBkmFZEGSAqAyAqKLkCoCgUCgVAXIGoABiBGyDFsDFgYtlGLCMGwMGwrXJga2BqkyDVJgaZhWibKjjz5AfOdXhThql10a+i6sn6W+PtOXLkm995/b0fLau/b1Fp+/9nf7LWyjpdWtJP9JVwsPHBLHxNmGPDd7HDK7Ypt1l3W5T7JfeRueim5Dv9aAm7T7/AFoC9HDv9aAdFDv9gE6KHf7AHRR/vADoY9SAnQLs9gB0F2P1AYu3XmsDF2+er2AYSts80BrdjTl5VOPqNdsOO3OsNlc2SvK0pDT6VOW9GniXaSmDHSd6xst82S8bWlt6Du9qNrUvQcOXtQGE6Cxy9wN3T6jbulivBYceEu9HPnx9qu7y+KaaL4u8jnH9nb7PXtOvQq2yeKlCSbXapcU/ejZgpMYYt13ZcKtvpojpMu9izY9JtiwN0WQbYsK2RYRtiyjNMDNMDNMDNMIzTAyTAqCskRWSYRkBQKiioCoCgZAUABrAgGLIIwMWBi2BiyjFhGDAwYVrYGEgNUgNMiDTPkFaZFRxa0lThKb5RTfqJadomWNrRWs2nyfObnNSpOo/rNtnnxL4ztzP9T2+k0VaaFZwb3ZShvv08TuxxtWH1mjp2cFY+zk9J/qszdKb+X+uAOf+qBN//UAb3+oAcl56foAnB9a9SANLtXqQDdXd90Buru+6BNxd3qAbif8A/AJuLtAbnf7wG5/F7wG6/O9rAbsvO94GElLHle0Dpdan0VjUblxliK722YZJ2rLl1l4pgtM+cbPOafq35L2qhUlL9DKMaVX7L6/Q8M9LRYJyaHbz3mYcXDP6cMT95fTos4Hrt0WBtiBtiyK2phGyJRsQGaAzQGaCMkBmgMkFZIiqgjJAVAZZAqZQAyQFAoADWBGQRgYsCMDB8wIyjBhGLAwkFa2Bg0BrkiDTJAaZBWiSKjrdWm6em12ubju+vgac87Y5cmvvNdNeY6PFTouWeBwRZ8h4w71bSVIQjBWclGMVFJVOSSx2HTGpjbbZ7leMxWIjscvuj2pmudlP/wC3+hn7R9mfvmv0flPzqfXZVf8A7F8C+0fZffFfo/J+da67Kr99fAd/9l98U+ifU/OyP+Tq/ej8C9/HRY4xT6J9T87KfXZ1vXEd/HRfe+P6Z9RbV0Ouzq/8R38dF974/plfzrt+u0reqI7+F974vpk/Ou1/ytX7sfiO/g97Yvpk/Oq0/wAtV+7H4l7+q+9sPSV/Omzf7Ct9xfEd9VfeuHpItqbH9xWX8i+I76p71wdJ/wC/yv50af8Auq33P6jvqr70wfc/OjT/AN3WX8n9S99VfeeD7+i/nPp/m1l/I/iO+qvvPB9/Q/OfTv8AW+4/iO+qvvLB1n0Pzl07zq33GO+qvvHT9Z9F/OXTeqpV+4y97U94afrPo1z2j09rhUqfcY76q+8NP9X4dJd3U9VvYKlGXRReIJ9b7TRkvN57MPL1eotq8lcWPl/3xcXWtDofMqtalBK4hFz345zLC45PU0movimtN/B7WPDWmOKR5PU7Gat+VdApb7zWt/0U+9Y+i/V7jLW4uxk3jlLbSd42elicjJugBtiRWyIRsiBsRRmgM0BmgM0EZIDJBWSIMkFUIyQFAqKMgAFXIDIABrAxID5AYsDFgYsDF8yjFhGLAwYVrYGDAwkBqkiDTNBWia5lRxa9OFSDhOMZRfNNZTJMRMbSlqxaNrRvDoda0yhLSLv5vRhTrKlJwlBYaa48PUZ4MeLva9qsbbue2kwbfBHo+WQ1G6XlXNfuxNnu+xaaJ8aQ0eyYZj4Id9Z6FtDe2lK6o1JdBVjvQlK4SyvA5cleH0mazSPD7L7Di+iG+GzuvN4leRj/ALrfuRomdB5Yvwe78M86Q5MNmdXfl6pjwUma5to/LEe7sH0w5ENmb39pq9f+WCXvZrmdN5YY9ZX3bp/phyIbNyXl6leS/mivwNdowzyxx+f8nu7TfS5MNCpQ51bif2qn9DVOPHPywe7dL9Db+SaPmT9bMe4x9D3bpfo/Mp+SaPmy+8O4p0T3Zpfp/Mp+SqHY/vDuKJ7r0v0/mWP5KodkvvE7ih7r0v0/mT8k0OyXrHcUT3Xpuk+qfkqh/F6x7PQ91abpPqn5KofxetD2eie6tN9/VHpFD+L+/QO4qe6dP9/U/I9v/F7B3FU906f7+p+Rrd+f7CdxXqnunB1n1PyLbfx+z4DuK9T3Rg6z6r+Q7d+f7B3EdT3Th+qXKttOpWjbpwbk/rS6kZ0xxXk6tPo8Wn3mnP7uJrVRW+l3VaeMQpSfHw4G/HG94h1S6j5MHNVb+HHc6Om345f4Ho8Q27FerXTnL6VE8tsbYIg3RQVsigjYkBsSKM0BmgM0BkgjJAZIKyQFRBkgMkBQMlyKAFAoFAoGsDEgjAjAxYViwjFlGLCMWBi0Fa2gMWgNckBrkiDVJAaJxCuPOJUcStBSi0+KfBjfbxHxG+t3a31eg+dOpKPqZ9NFu1WLdXO+lbB3PzrZZUW/pW1WVP0P6S954uur2cu/Vupyd9Gnxl9By49rONkvR/6UfSgG611QXqAYfnJen+gGLS65+8DHdXe/QBNz+F+wCOHHl7QI6fh7QI6a7vUBOjQDcXYA6P8AhAvRdwFVL++AGSpvvAxlKnTX06kI/angsRMjh1tV02iv0l/ax8akfiZxiyTyrKbw8Ptbr9G/UbGyqqpRT3qtRLhJ9SXd1noaPTWrPatHixtZ7PYbR5aboiq1YuNe6aqNPmo4+ivVx9Jz63LF8nZjlHgUjaN3rIRZxs26MSK3RQRsigNiQGaRRkkBmgMkBkgjNAZIKqIMkBQKBkgKijIABUBUBQNbAxIIBiBGgIBi+ZRiwjFgYtBWDQGLQGDQGtoDXKJBpnEK0TgBxK0ODKj5Htja/N9pLhpcKqjUXpXH2o9/RW7eCPt4NF/id18mtzi9v7JvhUpxqxXfF4fsZzcRp/TFmdJe8qRxNpRm/CJ5LYx3H+7n6eAE3H5sV4zAqg3+7XtAOElzkl/KwNNStb0/1l1COPOlFe9mUVtPKBxKus6PR/Wanbp/+aP4GcYMs8qym8OJU2r2fp89QhL7KlL3IzjSZp+U7UOJU240KHkyrVPs0X+ODONDmlO1Di1PlB02P6uyuZ+KjH8TZHD8nnKduHFqfKJH9lpcv56q/BGccOnzsTdxKnyhahJNU7G3h9qcn8DZHDq9ZTtuNPbnW6nkK2h9mln3szjQY457p22h7TbSV/JuZr/x0EvwL7Jgrz29TtSwd3tPcc7i/afY3H3YHZ0ten9zezF6Xr9z+s+dy+3WfxHf6WvKY9DazOOyWq1fKpx4+fPJJ1uCOW/odmzlUthb6XlTow9DZjPEMflWV7Eu/wBF2Ao0rqnXvK3TKDyqSjiLff2+BoycQm1ZrSNlinV9BpUkkefuzb4wIrYohGxRKM0gM0gM0gMkgMkgM0gjJIDJICoKyRBUBkgKBQKgKUUCgVAUDUBGQQDECMKxCIwIUYtBGLQGLCsWgMGgMWgMHEDXKJBplADj1aXBgfNvlCs8XFncpcJRlTfoeV72exwy/harTl8JiXl9F1OtoeqQvqNNVJRjKLhJtKSawd2fDGak0lhW+0u9q/KDqkvItLSH2nKX4nJHDMfWWfeuHPbfXankTtofYoJ+/Jn7Bgjn/c7yWl7RbS1+Eby4Wf3dJL3Idxpa89vU7VmuVXaW58q41GWf45L4DtaSvnB/V0Y/kTW7jy4XEvt1X8Se16avKfwdm0tkNjtTqcZUoLxln8DGeIYY5RJ2LOTT2Hvn5VSlH0MwniVPKsr2J6uVDYSp9e6Xoia54lPlRe7+7k09haC8u4qPwwjXPEcvlEL3cOTDYnT4+V0svGRhOvzz5/g7FXJhslpcP8MpeLbMJ1eefmXsw5MNntPp+TZ0vuo1TmyTztPqu0OTDS7aGN23prwijCbTPOVbo2cFygl6CbDarVeavUBsjbLsA3Rtl2AboWy7AOXSoY6gOXGBBsUAM1EozUQMlEDJIDJIDJIDJIIySAyQGQVSCoKyAoRUBQKUZAAMkAAoGtgRkEfIDECMDEKjCMWURgYsIjQVgwMWBi0Bi0Bg0Bg4kGqUU+YHWarotpqtt0F1SU4J7yz1PtNmPJfHO9J2SYieboFsPpcH/wBvF+PE2Tqs887SnZr0bqeyunUvJtqf3Ua5y3nnafVdociOi2lPyaEV6DHeeqtq0+jHlSj6iDL5tTjygvUBehXYA6JdgDo12AOj7gHRrsAdGuwC9GuwB0XcBkqXcBkqQGSpLsA2RpgbY0wN0KYG6MO4g3RiUZqIFSAywBkkBkkBkgKkEZYAyQFCsiCgUDICgUCoClFAIDICoABrYGLIAGLAgECowMWVEAxYRGgMQrFoDFoDFoDFoDBoDBxA1yjwINcoAa5UwrW6ZUYumBi6YE6MCbgE3AG4A3AL0YDcAu4BVADJQAzUAM1Ag2xgBtjEDYogbEiipAZJAVIDLAGWALgIySAuALgCoiskBQKBUBkAApRUBQAGQFQADWwMWQAMQAGIEYVAiFGIRMARgYtBWLQGLQGLQGDQEaAwcQMHEgwcQMHAKxcAMdwqI4AY7gDcAbgDcAbgDcAyUAKoEVkoAZKAGaiEbIxA2RRRmkBcAZJAZJAVIDLARcAVIDIChVwBSDIKoRQKgKBQKiigAKBQKBQNQEZBAIBAIwIwqYAxYRGiogEYGLQEwFYtAYtAYtAYtARoDBoDFxAjiQY7oGLiBN0CbgU3AJugNwBuBF3AG6BkogVRAzUQMlEoySAzSAywBkkBkkBUgLgIqQGWAKkFUCgUguAq4AoRUBQKBUBkUAAFAoFAqA1ATAEIJgAwIBAIwrEIhRAIBGgjHAEaCscARoDFoCNAY4Am6BjugRxAm6Bi4kE3QG6A3QG6UN0C7oF3SAogZbpRkogVIDLAGWAMsAXAGSQFSCKBUgLgChVQFIKgMgAFAoFAAZFACgUCgUABQNQACEEAjAgACAQCYAxwAZRGgiYAxAmAI0FYtATAGOAJgCYAmAJugTdAboE3QGAG6A3QLgCpAN0C4AywBcAXAGWALgC4AuAigXAFCrgC4AqRBQqpAUIuAKBQAFKKAAoFAoFAAXAGsABAI0QQABiAYECpgCYAmAiFEwBMATARMATAVMARoCYAmAMd0BgCYAboE3QGALgBgBgBgC4AqQFwBcAXAFwBcBFwBQLgCpAVIKAUgqCqEUCgAMgAFAqKKAAAXAFAoACgawAEAAQCEEYACYAmAJgCNAMBUaKiYAmAbJgImAJgCYAYAjQVMATADADdAm6A3QGAG6BcAMAMAXAFwEXADAFwBcAUKuACAuCCoAgKBUgqhFAAZAAKUAKBQABAZAUABQAGGAIAAjAhAaKIQAIBMAQA0BAqYAjQRMAMFEwBMBDAEwBMBTARMAMAMBUwEMAMAMAMAXADAFwBcAMAXABIKuAihRAXBAwBcBVwAwBQKEXAFAAALgClACgAKgKBQAFAAYgQCAAIAAgEIAEwAwBMAQABMBUwEMAQBgCYKJgBgCYCGAJgBgC4AmAGAGAGALgBgBgKuAhgC4CmALgAQXAAKoAChFwAwBQAFAAVIooFQAABQKBQAFAAUDFgQCAQAAAgDAEIIAwBAIAYEAARgMBUwEMFEwQMARooYAYQEwAwAwEMAMBTARcBTADAFwAwQXADAAKuAARQADAFwAAoBAUABQKigBQABAZAAKAAoBAZAf/Z");
        System.out.println("a:"+Arrays.toString(a));
        System.out.println("b:"+Arrays.toString(b));
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 将byte数组换为图片需要使用IO流进行读写操作。可以使用Java的ByteArrayInputStream类将byte数组读入到输入流中,然后使用ImageIO类的read方法读取图像文件,最后使用ImageIO类的write方法将读取到的图像文件写入到输出流中。 示例代码如下: ``` import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; public class ByteArrayToImage { public static void main(String[] args) { byte[] byteArray = {1,2,3,4,5,6,7,8,9}; BufferedImage image = null; try { ByteArrayInputStream bis = new ByteArrayInputStream(byteArray); image = ImageIO.read(bis); ImageIO.write(image, "jpg", new File("output.jpg")); } catch (IOException e) { e.printStackTrace(); } } } ``` 上面的程序将byte数组换成图片文件写入到本地的一个叫做output.jpg的文件中. 其中, byteArray为要换的byte数组,后面的“jpg”是图片格式, "output.jpg" 是输出文件的路径。 ### 回答2: byte数组换成图片,可以通过以下步骤实现: 1. 首先,我们需要创建一个空的BufferedImage对象,用于存储图片的像素数据。 2. 然后,可以使用ImageIO类的read方法,将byte数组换成BufferedImage对象。该方法需要传入一个ByteArrayInputStream对象作为参数,将byte数组包装成输入流。 3. 接下来,我们可以根据BufferedImage对象的getWidth和getHeight方法,获取图片的宽度和高度。 4. 创建一个Graphics对象,通过调用BufferedImage对象的createGraphics方法得到。这个Graphics对象可以用于后续图片的绘制操作。 5. 调用Graphics对象的drawImage方法,将BufferedImage对象绘制到Graphics对象上。 6. 最后,可以通过ImageIO类的write方法,将BufferedImage对象保存为图片文件。该方法需要传入一个File对象和一个格式字符串作为参数。 7. 如果想要以其他格式保存图片,可以在写入之前使用ImageIO类的setUseCache方法设置为false,并传入其他格式的Writer对象。 通过以上步骤,我们就可以将byte数组换成图片并保存到文件中。 ### 回答3: 将byte数组换为图片需要经过以下几个步骤: 1. 首先,需要获取到byte数组作为输入。这个byte数组通常是从文件、数据库或网络中读取出来的图片数据,它是以字节序列的形式保存的。 2. 接下来,我们需要创建一个BufferedImage对象。BufferedImage是Java中处理图片的类,它可以用来生成、修改或合成图片。 3. 然后,我们可以使用ImageIO类的静态方法read来读取byte数组并将其换为BufferedImage对象。这个方法接受一个输入流作为参数,由于我们的输入是一个byte数组,所以我们可以使用ByteArrayInputStream类将byte数组换为输入流。 4. 接下来,我们可以根据BufferedImage对象的宽度和高度创建一个Graphics2D对象,并使用其drawImage方法绘制图片。在这一步中,我们可以设置图像的大小、颜色、透明度等,以便于我们对图片进行进一步的处理。 5. 最后,我们可以使用ImageIO类的静态方法write将BufferedImage对象以指定的格式写入到一个输出流中。这个输出流可以是一个文件输出流,以将图片保存到本地文件中;也可以是一个字节数组输出流,以便于我们将图片数据传输到网络或其他地方。 通过以上步骤,我们可以将byte数组换成图片,并根据需求对图片进行进一步的处理和操作。在实际应用中,我们可以根据具体的需求选择合适的图片格式和处理方法,以达到最佳的效果和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值