From 48657c9150dae85af77a9759e0f25a94da8b502e Mon Sep 17 00:00:00 2001 From: sgoudham Date: Mon, 6 Jul 2020 02:28:01 +0100 Subject: [PATCH] Downloading Pillow Module --- venv/Lib/site-packages/PIL/BdfFontFile.py | 110 + venv/Lib/site-packages/PIL/BlpImagePlugin.py | 420 ++ venv/Lib/site-packages/PIL/BmpImagePlugin.py | 380 ++ .../site-packages/PIL/BufrStubImagePlugin.py | 73 + venv/Lib/site-packages/PIL/ContainerIO.py | 120 + venv/Lib/site-packages/PIL/CurImagePlugin.py | 74 + venv/Lib/site-packages/PIL/DcxImagePlugin.py | 89 + venv/Lib/site-packages/PIL/DdsImagePlugin.py | 178 + venv/Lib/site-packages/PIL/EpsImagePlugin.py | 419 ++ venv/Lib/site-packages/PIL/ExifTags.py | 318 ++ .../site-packages/PIL/FitsStubImagePlugin.py | 76 + venv/Lib/site-packages/PIL/FliImagePlugin.py | 169 + venv/Lib/site-packages/PIL/FontFile.py | 111 + venv/Lib/site-packages/PIL/FpxImagePlugin.py | 242 ++ venv/Lib/site-packages/PIL/FtexImagePlugin.py | 106 + venv/Lib/site-packages/PIL/GbrImagePlugin.py | 100 + venv/Lib/site-packages/PIL/GdImageFile.py | 89 + venv/Lib/site-packages/PIL/GifImagePlugin.py | 885 +++++ .../Lib/site-packages/PIL/GimpGradientFile.py | 140 + venv/Lib/site-packages/PIL/GimpPaletteFile.py | 56 + .../site-packages/PIL/GribStubImagePlugin.py | 74 + .../site-packages/PIL/Hdf5StubImagePlugin.py | 73 + venv/Lib/site-packages/PIL/IcnsImagePlugin.py | 384 ++ venv/Lib/site-packages/PIL/IcoImagePlugin.py | 324 ++ venv/Lib/site-packages/PIL/ImImagePlugin.py | 377 ++ venv/Lib/site-packages/PIL/Image.py | 3462 +++++++++++++++++ venv/Lib/site-packages/PIL/ImageChops.py | 328 ++ venv/Lib/site-packages/PIL/ImageCms.py | 990 +++++ venv/Lib/site-packages/PIL/ImageColor.py | 300 ++ venv/Lib/site-packages/PIL/ImageDraw.py | 566 +++ venv/Lib/site-packages/PIL/ImageDraw2.py | 179 + venv/Lib/site-packages/PIL/ImageEnhance.py | 103 + venv/Lib/site-packages/PIL/ImageFile.py | 693 ++++ venv/Lib/site-packages/PIL/ImageFilter.py | 535 +++ venv/Lib/site-packages/PIL/ImageFont.py | 860 ++++ venv/Lib/site-packages/PIL/ImageGrab.py | 120 + venv/Lib/site-packages/PIL/ImageMath.py | 253 ++ venv/Lib/site-packages/PIL/ImageMode.py | 64 + venv/Lib/site-packages/PIL/ImageMorph.py | 245 ++ venv/Lib/site-packages/PIL/ImageOps.py | 551 +++ venv/Lib/site-packages/PIL/ImagePalette.py | 221 ++ venv/Lib/site-packages/PIL/ImagePath.py | 19 + venv/Lib/site-packages/PIL/ImageQt.py | 195 + venv/Lib/site-packages/PIL/ImageSequence.py | 75 + venv/Lib/site-packages/PIL/ImageShow.py | 238 ++ venv/Lib/site-packages/PIL/ImageStat.py | 147 + venv/Lib/site-packages/PIL/ImageTk.py | 300 ++ venv/Lib/site-packages/PIL/ImageTransform.py | 102 + venv/Lib/site-packages/PIL/ImageWin.py | 230 ++ venv/Lib/site-packages/PIL/ImtImagePlugin.py | 93 + venv/Lib/site-packages/PIL/IptcImagePlugin.py | 226 ++ .../site-packages/PIL/Jpeg2KImagePlugin.py | 314 ++ venv/Lib/site-packages/PIL/JpegImagePlugin.py | 809 ++++ venv/Lib/site-packages/PIL/JpegPresets.py | 248 ++ .../site-packages/PIL/McIdasImagePlugin.py | 75 + venv/Lib/site-packages/PIL/MicImagePlugin.py | 107 + venv/Lib/site-packages/PIL/MpegImagePlugin.py | 83 + venv/Lib/site-packages/PIL/MpoImagePlugin.py | 134 + venv/Lib/site-packages/PIL/MspImagePlugin.py | 193 + venv/Lib/site-packages/PIL/PSDraw.py | 237 ++ venv/Lib/site-packages/PIL/PaletteFile.py | 53 + venv/Lib/site-packages/PIL/PalmImagePlugin.py | 226 ++ venv/Lib/site-packages/PIL/PcdImagePlugin.py | 64 + venv/Lib/site-packages/PIL/PcfFontFile.py | 244 ++ venv/Lib/site-packages/PIL/PcxImagePlugin.py | 206 + venv/Lib/site-packages/PIL/PdfImagePlugin.py | 243 ++ venv/Lib/site-packages/PIL/PdfParser.py | 995 +++++ .../Lib/site-packages/PIL/PixarImagePlugin.py | 70 + venv/Lib/site-packages/PIL/PngImagePlugin.py | 1333 +++++++ venv/Lib/site-packages/PIL/PpmImagePlugin.py | 164 + venv/Lib/site-packages/PIL/PsdImagePlugin.py | 309 ++ venv/Lib/site-packages/PIL/PyAccess.py | 352 ++ venv/Lib/site-packages/PIL/SgiImagePlugin.py | 230 ++ .../site-packages/PIL/SpiderImagePlugin.py | 324 ++ venv/Lib/site-packages/PIL/SunImagePlugin.py | 136 + venv/Lib/site-packages/PIL/TarIO.py | 65 + venv/Lib/site-packages/PIL/TgaImagePlugin.py | 246 ++ venv/Lib/site-packages/PIL/TiffImagePlugin.py | 1891 +++++++++ venv/Lib/site-packages/PIL/TiffTags.py | 498 +++ venv/Lib/site-packages/PIL/WalImageFile.py | 126 + venv/Lib/site-packages/PIL/WebPImagePlugin.py | 351 ++ venv/Lib/site-packages/PIL/WmfImagePlugin.py | 175 + .../site-packages/PIL/XVThumbImagePlugin.py | 78 + venv/Lib/site-packages/PIL/XbmImagePlugin.py | 94 + venv/Lib/site-packages/PIL/XpmImagePlugin.py | 130 + venv/Lib/site-packages/PIL/__init__.py | 139 + venv/Lib/site-packages/PIL/__main__.py | 3 + venv/Lib/site-packages/PIL/_binary.py | 92 + .../PIL/_imaging.cp36-win_amd64.pyd | Bin 0 -> 2516480 bytes .../PIL/_imagingcms.cp36-win_amd64.pyd | Bin 0 -> 244224 bytes .../PIL/_imagingft.cp36-win_amd64.pyd | Bin 0 -> 628736 bytes .../PIL/_imagingmath.cp36-win_amd64.pyd | Bin 0 -> 25600 bytes .../PIL/_imagingmorph.cp36-win_amd64.pyd | Bin 0 -> 13824 bytes .../PIL/_imagingtk.cp36-win_amd64.pyd | Bin 0 -> 15360 bytes venv/Lib/site-packages/PIL/_tkinter_finder.py | 16 + venv/Lib/site-packages/PIL/_util.py | 30 + venv/Lib/site-packages/PIL/_version.py | 2 + .../PIL/_webp.cp36-win_amd64.pyd | Bin 0 -> 527360 bytes venv/Lib/site-packages/PIL/features.py | 309 ++ .../Pillow-7.2.0.dist-info/INSTALLER | 1 + .../Pillow-7.2.0.dist-info/LICENSE | 30 + .../Pillow-7.2.0.dist-info/METADATA | 135 + .../Pillow-7.2.0.dist-info/RECORD | 198 + .../Pillow-7.2.0.dist-info/WHEEL | 5 + .../Pillow-7.2.0.dist-info/top_level.txt | 1 + .../Pillow-7.2.0.dist-info/zip-safe | 1 + 106 files changed, 28247 insertions(+) create mode 100644 venv/Lib/site-packages/PIL/BdfFontFile.py create mode 100644 venv/Lib/site-packages/PIL/BlpImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/BmpImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/BufrStubImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/ContainerIO.py create mode 100644 venv/Lib/site-packages/PIL/CurImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/DcxImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/DdsImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/EpsImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/ExifTags.py create mode 100644 venv/Lib/site-packages/PIL/FitsStubImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/FliImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/FontFile.py create mode 100644 venv/Lib/site-packages/PIL/FpxImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/FtexImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/GbrImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/GdImageFile.py create mode 100644 venv/Lib/site-packages/PIL/GifImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/GimpGradientFile.py create mode 100644 venv/Lib/site-packages/PIL/GimpPaletteFile.py create mode 100644 venv/Lib/site-packages/PIL/GribStubImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/Hdf5StubImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/IcnsImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/IcoImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/ImImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/Image.py create mode 100644 venv/Lib/site-packages/PIL/ImageChops.py create mode 100644 venv/Lib/site-packages/PIL/ImageCms.py create mode 100644 venv/Lib/site-packages/PIL/ImageColor.py create mode 100644 venv/Lib/site-packages/PIL/ImageDraw.py create mode 100644 venv/Lib/site-packages/PIL/ImageDraw2.py create mode 100644 venv/Lib/site-packages/PIL/ImageEnhance.py create mode 100644 venv/Lib/site-packages/PIL/ImageFile.py create mode 100644 venv/Lib/site-packages/PIL/ImageFilter.py create mode 100644 venv/Lib/site-packages/PIL/ImageFont.py create mode 100644 venv/Lib/site-packages/PIL/ImageGrab.py create mode 100644 venv/Lib/site-packages/PIL/ImageMath.py create mode 100644 venv/Lib/site-packages/PIL/ImageMode.py create mode 100644 venv/Lib/site-packages/PIL/ImageMorph.py create mode 100644 venv/Lib/site-packages/PIL/ImageOps.py create mode 100644 venv/Lib/site-packages/PIL/ImagePalette.py create mode 100644 venv/Lib/site-packages/PIL/ImagePath.py create mode 100644 venv/Lib/site-packages/PIL/ImageQt.py create mode 100644 venv/Lib/site-packages/PIL/ImageSequence.py create mode 100644 venv/Lib/site-packages/PIL/ImageShow.py create mode 100644 venv/Lib/site-packages/PIL/ImageStat.py create mode 100644 venv/Lib/site-packages/PIL/ImageTk.py create mode 100644 venv/Lib/site-packages/PIL/ImageTransform.py create mode 100644 venv/Lib/site-packages/PIL/ImageWin.py create mode 100644 venv/Lib/site-packages/PIL/ImtImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/IptcImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/Jpeg2KImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/JpegImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/JpegPresets.py create mode 100644 venv/Lib/site-packages/PIL/McIdasImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/MicImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/MpegImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/MpoImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/MspImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/PSDraw.py create mode 100644 venv/Lib/site-packages/PIL/PaletteFile.py create mode 100644 venv/Lib/site-packages/PIL/PalmImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/PcdImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/PcfFontFile.py create mode 100644 venv/Lib/site-packages/PIL/PcxImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/PdfImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/PdfParser.py create mode 100644 venv/Lib/site-packages/PIL/PixarImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/PngImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/PpmImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/PsdImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/PyAccess.py create mode 100644 venv/Lib/site-packages/PIL/SgiImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/SpiderImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/SunImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/TarIO.py create mode 100644 venv/Lib/site-packages/PIL/TgaImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/TiffImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/TiffTags.py create mode 100644 venv/Lib/site-packages/PIL/WalImageFile.py create mode 100644 venv/Lib/site-packages/PIL/WebPImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/WmfImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/XVThumbImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/XbmImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/XpmImagePlugin.py create mode 100644 venv/Lib/site-packages/PIL/__init__.py create mode 100644 venv/Lib/site-packages/PIL/__main__.py create mode 100644 venv/Lib/site-packages/PIL/_binary.py create mode 100644 venv/Lib/site-packages/PIL/_imaging.cp36-win_amd64.pyd create mode 100644 venv/Lib/site-packages/PIL/_imagingcms.cp36-win_amd64.pyd create mode 100644 venv/Lib/site-packages/PIL/_imagingft.cp36-win_amd64.pyd create mode 100644 venv/Lib/site-packages/PIL/_imagingmath.cp36-win_amd64.pyd create mode 100644 venv/Lib/site-packages/PIL/_imagingmorph.cp36-win_amd64.pyd create mode 100644 venv/Lib/site-packages/PIL/_imagingtk.cp36-win_amd64.pyd create mode 100644 venv/Lib/site-packages/PIL/_tkinter_finder.py create mode 100644 venv/Lib/site-packages/PIL/_util.py create mode 100644 venv/Lib/site-packages/PIL/_version.py create mode 100644 venv/Lib/site-packages/PIL/_webp.cp36-win_amd64.pyd create mode 100644 venv/Lib/site-packages/PIL/features.py create mode 100644 venv/Lib/site-packages/Pillow-7.2.0.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/Pillow-7.2.0.dist-info/LICENSE create mode 100644 venv/Lib/site-packages/Pillow-7.2.0.dist-info/METADATA create mode 100644 venv/Lib/site-packages/Pillow-7.2.0.dist-info/RECORD create mode 100644 venv/Lib/site-packages/Pillow-7.2.0.dist-info/WHEEL create mode 100644 venv/Lib/site-packages/Pillow-7.2.0.dist-info/top_level.txt create mode 100644 venv/Lib/site-packages/Pillow-7.2.0.dist-info/zip-safe diff --git a/venv/Lib/site-packages/PIL/BdfFontFile.py b/venv/Lib/site-packages/PIL/BdfFontFile.py new file mode 100644 index 00000000..102b72e1 --- /dev/null +++ b/venv/Lib/site-packages/PIL/BdfFontFile.py @@ -0,0 +1,110 @@ +# +# The Python Imaging Library +# $Id$ +# +# bitmap distribution font (bdf) file parser +# +# history: +# 1996-05-16 fl created (as bdf2pil) +# 1997-08-25 fl converted to FontFile driver +# 2001-05-25 fl removed bogus __init__ call +# 2002-11-20 fl robustification (from Kevin Cazabon, Dmitry Vasiliev) +# 2003-04-22 fl more robustification (from Graham Dumpleton) +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1997-2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +""" +Parse X Bitmap Distribution Format (BDF) +""" + + +from . import FontFile, Image + +bdf_slant = { + "R": "Roman", + "I": "Italic", + "O": "Oblique", + "RI": "Reverse Italic", + "RO": "Reverse Oblique", + "OT": "Other", +} + +bdf_spacing = {"P": "Proportional", "M": "Monospaced", "C": "Cell"} + + +def bdf_char(f): + # skip to STARTCHAR + while True: + s = f.readline() + if not s: + return None + if s[:9] == b"STARTCHAR": + break + id = s[9:].strip().decode("ascii") + + # load symbol properties + props = {} + while True: + s = f.readline() + if not s or s[:6] == b"BITMAP": + break + i = s.find(b" ") + props[s[:i].decode("ascii")] = s[i + 1 : -1].decode("ascii") + + # load bitmap + bitmap = [] + while True: + s = f.readline() + if not s or s[:7] == b"ENDCHAR": + break + bitmap.append(s[:-1]) + bitmap = b"".join(bitmap) + + [x, y, l, d] = [int(p) for p in props["BBX"].split()] + [dx, dy] = [int(p) for p in props["DWIDTH"].split()] + + bbox = (dx, dy), (l, -d - y, x + l, -d), (0, 0, x, y) + + try: + im = Image.frombytes("1", (x, y), bitmap, "hex", "1") + except ValueError: + # deal with zero-width characters + im = Image.new("1", (x, y)) + + return id, int(props["ENCODING"]), bbox, im + + +class BdfFontFile(FontFile.FontFile): + """Font file plugin for the X11 BDF format.""" + + def __init__(self, fp): + super().__init__() + + s = fp.readline() + if s[:13] != b"STARTFONT 2.1": + raise SyntaxError("not a valid BDF file") + + props = {} + comments = [] + + while True: + s = fp.readline() + if not s or s[:13] == b"ENDPROPERTIES": + break + i = s.find(b" ") + props[s[:i].decode("ascii")] = s[i + 1 : -1].decode("ascii") + if s[:i] in [b"COMMENT", b"COPYRIGHT"]: + if s.find(b"LogicalFontDescription") < 0: + comments.append(s[i + 1 : -1].decode("ascii")) + + while True: + c = bdf_char(fp) + if not c: + break + id, ch, (xy, dst, src), im = c + if 0 <= ch < len(self.glyph): + self.glyph[ch] = xy, dst, src, im diff --git a/venv/Lib/site-packages/PIL/BlpImagePlugin.py b/venv/Lib/site-packages/PIL/BlpImagePlugin.py new file mode 100644 index 00000000..cb8a08e2 --- /dev/null +++ b/venv/Lib/site-packages/PIL/BlpImagePlugin.py @@ -0,0 +1,420 @@ +""" +Blizzard Mipmap Format (.blp) +Jerome Leclanche + +The contents of this file are hereby released in the public domain (CC0) +Full text of the CC0 license: + https://creativecommons.org/publicdomain/zero/1.0/ + +BLP1 files, used mostly in Warcraft III, are not fully supported. +All types of BLP2 files used in World of Warcraft are supported. + +The BLP file structure consists of a header, up to 16 mipmaps of the +texture + +Texture sizes must be powers of two, though the two dimensions do +not have to be equal; 512x256 is valid, but 512x200 is not. +The first mipmap (mipmap #0) is the full size image; each subsequent +mipmap halves both dimensions. The final mipmap should be 1x1. + +BLP files come in many different flavours: +* JPEG-compressed (type == 0) - only supported for BLP1. +* RAW images (type == 1, encoding == 1). Each mipmap is stored as an + array of 8-bit values, one per pixel, left to right, top to bottom. + Each value is an index to the palette. +* DXT-compressed (type == 1, encoding == 2): +- DXT1 compression is used if alpha_encoding == 0. + - An additional alpha bit is used if alpha_depth == 1. + - DXT3 compression is used if alpha_encoding == 1. + - DXT5 compression is used if alpha_encoding == 7. +""" + +import struct +from io import BytesIO + +from . import Image, ImageFile + +BLP_FORMAT_JPEG = 0 + +BLP_ENCODING_UNCOMPRESSED = 1 +BLP_ENCODING_DXT = 2 +BLP_ENCODING_UNCOMPRESSED_RAW_BGRA = 3 + +BLP_ALPHA_ENCODING_DXT1 = 0 +BLP_ALPHA_ENCODING_DXT3 = 1 +BLP_ALPHA_ENCODING_DXT5 = 7 + + +def unpack_565(i): + return (((i >> 11) & 0x1F) << 3, ((i >> 5) & 0x3F) << 2, (i & 0x1F) << 3) + + +def decode_dxt1(data, alpha=False): + """ + input: one "row" of data (i.e. will produce 4*width pixels) + """ + + blocks = len(data) // 8 # number of blocks in row + ret = (bytearray(), bytearray(), bytearray(), bytearray()) + + for block in range(blocks): + # Decode next 8-byte block. + idx = block * 8 + color0, color1, bits = struct.unpack_from("> 2 + + a = 0xFF + if control == 0: + r, g, b = r0, g0, b0 + elif control == 1: + r, g, b = r1, g1, b1 + elif control == 2: + if color0 > color1: + r = (2 * r0 + r1) // 3 + g = (2 * g0 + g1) // 3 + b = (2 * b0 + b1) // 3 + else: + r = (r0 + r1) // 2 + g = (g0 + g1) // 2 + b = (b0 + b1) // 2 + elif control == 3: + if color0 > color1: + r = (2 * r1 + r0) // 3 + g = (2 * g1 + g0) // 3 + b = (2 * b1 + b0) // 3 + else: + r, g, b, a = 0, 0, 0, 0 + + if alpha: + ret[j].extend([r, g, b, a]) + else: + ret[j].extend([r, g, b]) + + return ret + + +def decode_dxt3(data): + """ + input: one "row" of data (i.e. will produce 4*width pixels) + """ + + blocks = len(data) // 16 # number of blocks in row + ret = (bytearray(), bytearray(), bytearray(), bytearray()) + + for block in range(blocks): + idx = block * 16 + block = data[idx : idx + 16] + # Decode next 16-byte block. + bits = struct.unpack_from("<8B", block) + color0, color1 = struct.unpack_from(">= 4 + else: + high = True + a &= 0xF + a *= 17 # We get a value between 0 and 15 + + color_code = (code >> 2 * (4 * j + i)) & 0x03 + + if color_code == 0: + r, g, b = r0, g0, b0 + elif color_code == 1: + r, g, b = r1, g1, b1 + elif color_code == 2: + r = (2 * r0 + r1) // 3 + g = (2 * g0 + g1) // 3 + b = (2 * b0 + b1) // 3 + elif color_code == 3: + r = (2 * r1 + r0) // 3 + g = (2 * g1 + g0) // 3 + b = (2 * b1 + b0) // 3 + + ret[j].extend([r, g, b, a]) + + return ret + + +def decode_dxt5(data): + """ + input: one "row" of data (i.e. will produce 4 * width pixels) + """ + + blocks = len(data) // 16 # number of blocks in row + ret = (bytearray(), bytearray(), bytearray(), bytearray()) + + for block in range(blocks): + idx = block * 16 + block = data[idx : idx + 16] + # Decode next 16-byte block. + a0, a1 = struct.unpack_from("> alphacode_index) & 0x07 + elif alphacode_index == 15: + alphacode = (alphacode2 >> 15) | ((alphacode1 << 1) & 0x06) + else: # alphacode_index >= 18 and alphacode_index <= 45 + alphacode = (alphacode1 >> (alphacode_index - 16)) & 0x07 + + if alphacode == 0: + a = a0 + elif alphacode == 1: + a = a1 + elif a0 > a1: + a = ((8 - alphacode) * a0 + (alphacode - 1) * a1) // 7 + elif alphacode == 6: + a = 0 + elif alphacode == 7: + a = 255 + else: + a = ((6 - alphacode) * a0 + (alphacode - 1) * a1) // 5 + + color_code = (code >> 2 * (4 * j + i)) & 0x03 + + if color_code == 0: + r, g, b = r0, g0, b0 + elif color_code == 1: + r, g, b = r1, g1, b1 + elif color_code == 2: + r = (2 * r0 + r1) // 3 + g = (2 * g0 + g1) // 3 + b = (2 * b0 + b1) // 3 + elif color_code == 3: + r = (2 * r1 + r0) // 3 + g = (2 * g1 + g0) // 3 + b = (2 * b1 + b0) // 3 + + ret[j].extend([r, g, b, a]) + + return ret + + +class BLPFormatError(NotImplementedError): + pass + + +class BlpImageFile(ImageFile.ImageFile): + """ + Blizzard Mipmap Format + """ + + format = "BLP" + format_description = "Blizzard Mipmap Format" + + def _open(self): + self.magic = self.fp.read(4) + self._read_blp_header() + + if self.magic == b"BLP1": + decoder = "BLP1" + self.mode = "RGB" + elif self.magic == b"BLP2": + decoder = "BLP2" + self.mode = "RGBA" if self._blp_alpha_depth else "RGB" + else: + raise BLPFormatError("Bad BLP magic %r" % (self.magic)) + + self.tile = [(decoder, (0, 0) + self.size, 0, (self.mode, 0, 1))] + + def _read_blp_header(self): + (self._blp_compression,) = struct.unpack(" mode, rawmode + 1: ("P", "P;1"), + 4: ("P", "P;4"), + 8: ("P", "P"), + 16: ("RGB", "BGR;15"), + 24: ("RGB", "BGR"), + 32: ("RGB", "BGRX"), +} + + +def _accept(prefix): + return prefix[:2] == b"BM" + + +def _dib_accept(prefix): + return i32(prefix[:4]) in [12, 40, 64, 108, 124] + + +# ============================================================================= +# Image plugin for the Windows BMP format. +# ============================================================================= +class BmpImageFile(ImageFile.ImageFile): + """ Image plugin for the Windows Bitmap format (BMP) """ + + # ------------------------------------------------------------- Description + format_description = "Windows Bitmap" + format = "BMP" + + # -------------------------------------------------- BMP Compression values + COMPRESSIONS = {"RAW": 0, "RLE8": 1, "RLE4": 2, "BITFIELDS": 3, "JPEG": 4, "PNG": 5} + for k, v in COMPRESSIONS.items(): + vars()[k] = v + + def _bitmap(self, header=0, offset=0): + """ Read relevant info about the BMP """ + read, seek = self.fp.read, self.fp.seek + if header: + seek(header) + file_info = {} + # read bmp header size @offset 14 (this is part of the header size) + file_info["header_size"] = i32(read(4)) + file_info["direction"] = -1 + + # -------------------- If requested, read header at a specific position + # read the rest of the bmp header, without its size + header_data = ImageFile._safe_read(self.fp, file_info["header_size"] - 4) + + # -------------------------------------------------- IBM OS/2 Bitmap v1 + # ----- This format has different offsets because of width/height types + if file_info["header_size"] == 12: + file_info["width"] = i16(header_data[0:2]) + file_info["height"] = i16(header_data[2:4]) + file_info["planes"] = i16(header_data[4:6]) + file_info["bits"] = i16(header_data[6:8]) + file_info["compression"] = self.RAW + file_info["palette_padding"] = 3 + + # --------------------------------------------- Windows Bitmap v2 to v5 + # v3, OS/2 v2, v4, v5 + elif file_info["header_size"] in (40, 64, 108, 124): + file_info["y_flip"] = i8(header_data[7]) == 0xFF + file_info["direction"] = 1 if file_info["y_flip"] else -1 + file_info["width"] = i32(header_data[0:4]) + file_info["height"] = ( + i32(header_data[4:8]) + if not file_info["y_flip"] + else 2 ** 32 - i32(header_data[4:8]) + ) + file_info["planes"] = i16(header_data[8:10]) + file_info["bits"] = i16(header_data[10:12]) + file_info["compression"] = i32(header_data[12:16]) + # byte size of pixel data + file_info["data_size"] = i32(header_data[16:20]) + file_info["pixels_per_meter"] = ( + i32(header_data[20:24]), + i32(header_data[24:28]), + ) + file_info["colors"] = i32(header_data[28:32]) + file_info["palette_padding"] = 4 + self.info["dpi"] = tuple( + int(x / 39.3701 + 0.5) for x in file_info["pixels_per_meter"] + ) + if file_info["compression"] == self.BITFIELDS: + if len(header_data) >= 52: + for idx, mask in enumerate( + ["r_mask", "g_mask", "b_mask", "a_mask"] + ): + file_info[mask] = i32(header_data[36 + idx * 4 : 40 + idx * 4]) + else: + # 40 byte headers only have the three components in the + # bitfields masks, ref: + # https://msdn.microsoft.com/en-us/library/windows/desktop/dd183376(v=vs.85).aspx + # See also + # https://github.com/python-pillow/Pillow/issues/1293 + # There is a 4th component in the RGBQuad, in the alpha + # location, but it is listed as a reserved component, + # and it is not generally an alpha channel + file_info["a_mask"] = 0x0 + for mask in ["r_mask", "g_mask", "b_mask"]: + file_info[mask] = i32(read(4)) + file_info["rgb_mask"] = ( + file_info["r_mask"], + file_info["g_mask"], + file_info["b_mask"], + ) + file_info["rgba_mask"] = ( + file_info["r_mask"], + file_info["g_mask"], + file_info["b_mask"], + file_info["a_mask"], + ) + else: + raise OSError("Unsupported BMP header type (%d)" % file_info["header_size"]) + + # ------------------ Special case : header is reported 40, which + # ---------------------- is shorter than real size for bpp >= 16 + self._size = file_info["width"], file_info["height"] + + # ------- If color count was not found in the header, compute from bits + file_info["colors"] = ( + file_info["colors"] + if file_info.get("colors", 0) + else (1 << file_info["bits"]) + ) + + # ------------------------------- Check abnormal values for DOS attacks + if file_info["width"] * file_info["height"] > 2 ** 31: + raise OSError("Unsupported BMP Size: (%dx%d)" % self.size) + + # ---------------------- Check bit depth for unusual unsupported values + self.mode, raw_mode = BIT2MODE.get(file_info["bits"], (None, None)) + if self.mode is None: + raise OSError("Unsupported BMP pixel depth (%d)" % file_info["bits"]) + + # ---------------- Process BMP with Bitfields compression (not palette) + if file_info["compression"] == self.BITFIELDS: + SUPPORTED = { + 32: [ + (0xFF0000, 0xFF00, 0xFF, 0x0), + (0xFF0000, 0xFF00, 0xFF, 0xFF000000), + (0xFF, 0xFF00, 0xFF0000, 0xFF000000), + (0x0, 0x0, 0x0, 0x0), + (0xFF000000, 0xFF0000, 0xFF00, 0x0), + ], + 24: [(0xFF0000, 0xFF00, 0xFF)], + 16: [(0xF800, 0x7E0, 0x1F), (0x7C00, 0x3E0, 0x1F)], + } + MASK_MODES = { + (32, (0xFF0000, 0xFF00, 0xFF, 0x0)): "BGRX", + (32, (0xFF000000, 0xFF0000, 0xFF00, 0x0)): "XBGR", + (32, (0xFF, 0xFF00, 0xFF0000, 0xFF000000)): "RGBA", + (32, (0xFF0000, 0xFF00, 0xFF, 0xFF000000)): "BGRA", + (32, (0x0, 0x0, 0x0, 0x0)): "BGRA", + (24, (0xFF0000, 0xFF00, 0xFF)): "BGR", + (16, (0xF800, 0x7E0, 0x1F)): "BGR;16", + (16, (0x7C00, 0x3E0, 0x1F)): "BGR;15", + } + if file_info["bits"] in SUPPORTED: + if ( + file_info["bits"] == 32 + and file_info["rgba_mask"] in SUPPORTED[file_info["bits"]] + ): + raw_mode = MASK_MODES[(file_info["bits"], file_info["rgba_mask"])] + self.mode = "RGBA" if "A" in raw_mode else self.mode + elif ( + file_info["bits"] in (24, 16) + and file_info["rgb_mask"] in SUPPORTED[file_info["bits"]] + ): + raw_mode = MASK_MODES[(file_info["bits"], file_info["rgb_mask"])] + else: + raise OSError("Unsupported BMP bitfields layout") + else: + raise OSError("Unsupported BMP bitfields layout") + elif file_info["compression"] == self.RAW: + if file_info["bits"] == 32 and header == 22: # 32-bit .cur offset + raw_mode, self.mode = "BGRA", "RGBA" + else: + raise OSError("Unsupported BMP compression (%d)" % file_info["compression"]) + + # --------------- Once the header is processed, process the palette/LUT + if self.mode == "P": # Paletted for 1, 4 and 8 bit images + + # ---------------------------------------------------- 1-bit images + if not (0 < file_info["colors"] <= 65536): + raise OSError("Unsupported BMP Palette size (%d)" % file_info["colors"]) + else: + padding = file_info["palette_padding"] + palette = read(padding * file_info["colors"]) + greyscale = True + indices = ( + (0, 255) + if file_info["colors"] == 2 + else list(range(file_info["colors"])) + ) + + # ----------------- Check if greyscale and ignore palette if so + for ind, val in enumerate(indices): + rgb = palette[ind * padding : ind * padding + 3] + if rgb != o8(val) * 3: + greyscale = False + + # ------- If all colors are grey, white or black, ditch palette + if greyscale: + self.mode = "1" if file_info["colors"] == 2 else "L" + raw_mode = self.mode + else: + self.mode = "P" + self.palette = ImagePalette.raw( + "BGRX" if padding == 4 else "BGR", palette + ) + + # ---------------------------- Finally set the tile data for the plugin + self.info["compression"] = file_info["compression"] + self.tile = [ + ( + "raw", + (0, 0, file_info["width"], file_info["height"]), + offset or self.fp.tell(), + ( + raw_mode, + ((file_info["width"] * file_info["bits"] + 31) >> 3) & (~3), + file_info["direction"], + ), + ) + ] + + def _open(self): + """ Open file, check magic number and read header """ + # read 14 bytes: magic number, filesize, reserved, header final offset + head_data = self.fp.read(14) + # choke if the file does not have the required magic bytes + if not _accept(head_data): + raise SyntaxError("Not a BMP file") + # read the start position of the BMP image data (u32) + offset = i32(head_data[10:14]) + # load bitmap information (offset=raster info) + self._bitmap(offset=offset) + + +# ============================================================================= +# Image plugin for the DIB format (BMP alias) +# ============================================================================= +class DibImageFile(BmpImageFile): + + format = "DIB" + format_description = "Windows Bitmap" + + def _open(self): + self._bitmap() + + +# +# -------------------------------------------------------------------- +# Write BMP file + + +SAVE = { + "1": ("1", 1, 2), + "L": ("L", 8, 256), + "P": ("P", 8, 256), + "RGB": ("BGR", 24, 0), + "RGBA": ("BGRA", 32, 0), +} + + +def _dib_save(im, fp, filename): + _save(im, fp, filename, False) + + +def _save(im, fp, filename, bitmap_header=True): + try: + rawmode, bits, colors = SAVE[im.mode] + except KeyError as e: + raise OSError("cannot write mode %s as BMP" % im.mode) from e + + info = im.encoderinfo + + dpi = info.get("dpi", (96, 96)) + + # 1 meter == 39.3701 inches + ppm = tuple(map(lambda x: int(x * 39.3701 + 0.5), dpi)) + + stride = ((im.size[0] * bits + 7) // 8 + 3) & (~3) + header = 40 # or 64 for OS/2 version 2 + image = stride * im.size[1] + + # bitmap header + if bitmap_header: + offset = 14 + header + colors * 4 + file_size = offset + image + if file_size > 2 ** 32 - 1: + raise ValueError("File size is too large for the BMP format") + fp.write( + b"BM" # file type (magic) + + o32(file_size) # file size + + o32(0) # reserved + + o32(offset) # image data offset + ) + + # bitmap info header + fp.write( + o32(header) # info header size + + o32(im.size[0]) # width + + o32(im.size[1]) # height + + o16(1) # planes + + o16(bits) # depth + + o32(0) # compression (0=uncompressed) + + o32(image) # size of bitmap + + o32(ppm[0]) # resolution + + o32(ppm[1]) # resolution + + o32(colors) # colors used + + o32(colors) # colors important + ) + + fp.write(b"\0" * (header - 40)) # padding (for OS/2 format) + + if im.mode == "1": + for i in (0, 255): + fp.write(o8(i) * 4) + elif im.mode == "L": + for i in range(256): + fp.write(o8(i) * 4) + elif im.mode == "P": + fp.write(im.im.getpalette("RGB", "BGRX")) + + ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, stride, -1))]) + + +# +# -------------------------------------------------------------------- +# Registry + + +Image.register_open(BmpImageFile.format, BmpImageFile, _accept) +Image.register_save(BmpImageFile.format, _save) + +Image.register_extension(BmpImageFile.format, ".bmp") + +Image.register_mime(BmpImageFile.format, "image/bmp") + +Image.register_open(DibImageFile.format, DibImageFile, _dib_accept) +Image.register_save(DibImageFile.format, _dib_save) + +Image.register_extension(DibImageFile.format, ".dib") + +Image.register_mime(DibImageFile.format, "image/bmp") diff --git a/venv/Lib/site-packages/PIL/BufrStubImagePlugin.py b/venv/Lib/site-packages/PIL/BufrStubImagePlugin.py new file mode 100644 index 00000000..48f21e1b --- /dev/null +++ b/venv/Lib/site-packages/PIL/BufrStubImagePlugin.py @@ -0,0 +1,73 @@ +# +# The Python Imaging Library +# $Id$ +# +# BUFR stub adapter +# +# Copyright (c) 1996-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler): + """ + Install application-specific BUFR image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix): + return prefix[:4] == b"BUFR" or prefix[:4] == b"ZCZC" + + +class BufrStubImageFile(ImageFile.StubImageFile): + + format = "BUFR" + format_description = "BUFR" + + def _open(self): + + offset = self.fp.tell() + + if not _accept(self.fp.read(4)): + raise SyntaxError("Not a BUFR file") + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self._size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr("_handler", "save"): + raise OSError("BUFR save handler not installed") + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(BufrStubImageFile.format, BufrStubImageFile, _accept) +Image.register_save(BufrStubImageFile.format, _save) + +Image.register_extension(BufrStubImageFile.format, ".bufr") diff --git a/venv/Lib/site-packages/PIL/ContainerIO.py b/venv/Lib/site-packages/PIL/ContainerIO.py new file mode 100644 index 00000000..45e80b39 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ContainerIO.py @@ -0,0 +1,120 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a class to read from a container file +# +# History: +# 1995-06-18 fl Created +# 1995-09-07 fl Added readline(), readlines() +# +# Copyright (c) 1997-2001 by Secret Labs AB +# Copyright (c) 1995 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + + +import io + + +class ContainerIO: + """ + A file object that provides read access to a part of an existing + file (for example a TAR file). + """ + + def __init__(self, file, offset, length): + """ + Create file object. + + :param file: Existing file. + :param offset: Start of region, in bytes. + :param length: Size of region, in bytes. + """ + self.fh = file + self.pos = 0 + self.offset = offset + self.length = length + self.fh.seek(offset) + + ## + # Always false. + + def isatty(self): + return False + + def seek(self, offset, mode=io.SEEK_SET): + """ + Move file pointer. + + :param offset: Offset in bytes. + :param mode: Starting position. Use 0 for beginning of region, 1 + for current offset, and 2 for end of region. You cannot move + the pointer outside the defined region. + """ + if mode == 1: + self.pos = self.pos + offset + elif mode == 2: + self.pos = self.length + offset + else: + self.pos = offset + # clamp + self.pos = max(0, min(self.pos, self.length)) + self.fh.seek(self.offset + self.pos) + + def tell(self): + """ + Get current file pointer. + + :returns: Offset from start of region, in bytes. + """ + return self.pos + + def read(self, n=0): + """ + Read data. + + :param n: Number of bytes to read. If omitted or zero, + read until end of region. + :returns: An 8-bit string. + """ + if n: + n = min(n, self.length - self.pos) + else: + n = self.length - self.pos + if not n: # EOF + return b"" if "b" in self.fh.mode else "" + self.pos = self.pos + n + return self.fh.read(n) + + def readline(self): + """ + Read a line of text. + + :returns: An 8-bit string. + """ + s = b"" if "b" in self.fh.mode else "" + newline_character = b"\n" if "b" in self.fh.mode else "\n" + while True: + c = self.read(1) + if not c: + break + s = s + c + if c == newline_character: + break + return s + + def readlines(self): + """ + Read multiple lines of text. + + :returns: A list of 8-bit strings. + """ + lines = [] + while True: + s = self.readline() + if not s: + break + lines.append(s) + return lines diff --git a/venv/Lib/site-packages/PIL/CurImagePlugin.py b/venv/Lib/site-packages/PIL/CurImagePlugin.py new file mode 100644 index 00000000..3a1b6d2e --- /dev/null +++ b/venv/Lib/site-packages/PIL/CurImagePlugin.py @@ -0,0 +1,74 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Windows Cursor support for PIL +# +# notes: +# uses BmpImagePlugin.py to read the bitmap data. +# +# history: +# 96-05-27 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# +from . import BmpImagePlugin, Image +from ._binary import i8, i16le as i16, i32le as i32 + +# +# -------------------------------------------------------------------- + + +def _accept(prefix): + return prefix[:4] == b"\0\0\2\0" + + +## +# Image plugin for Windows Cursor files. + + +class CurImageFile(BmpImagePlugin.BmpImageFile): + + format = "CUR" + format_description = "Windows Cursor" + + def _open(self): + + offset = self.fp.tell() + + # check magic + s = self.fp.read(6) + if not _accept(s): + raise SyntaxError("not a CUR file") + + # pick the largest cursor in the file + m = b"" + for i in range(i16(s[4:])): + s = self.fp.read(16) + if not m: + m = s + elif i8(s[0]) > i8(m[0]) and i8(s[1]) > i8(m[1]): + m = s + if not m: + raise TypeError("No cursors were found") + + # load as bitmap + self._bitmap(i32(m[12:]) + offset) + + # patch up the bitmap height + self._size = self.size[0], self.size[1] // 2 + d, e, o, a = self.tile[0] + self.tile[0] = d, (0, 0) + self.size, o, a + + return + + +# +# -------------------------------------------------------------------- + +Image.register_open(CurImageFile.format, CurImageFile, _accept) + +Image.register_extension(CurImageFile.format, ".cur") diff --git a/venv/Lib/site-packages/PIL/DcxImagePlugin.py b/venv/Lib/site-packages/PIL/DcxImagePlugin.py new file mode 100644 index 00000000..de21db8f --- /dev/null +++ b/venv/Lib/site-packages/PIL/DcxImagePlugin.py @@ -0,0 +1,89 @@ +# +# The Python Imaging Library. +# $Id$ +# +# DCX file handling +# +# DCX is a container file format defined by Intel, commonly used +# for fax applications. Each DCX file consists of a directory +# (a list of file offsets) followed by a set of (usually 1-bit) +# PCX files. +# +# History: +# 1995-09-09 fl Created +# 1996-03-20 fl Properly derived from PcxImageFile. +# 1998-07-15 fl Renamed offset attribute to avoid name clash +# 2002-07-30 fl Fixed file handling +# +# Copyright (c) 1997-98 by Secret Labs AB. +# Copyright (c) 1995-96 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +from . import Image +from ._binary import i32le as i32 +from .PcxImagePlugin import PcxImageFile + +MAGIC = 0x3ADE68B1 # QUIZ: what's this value, then? + + +def _accept(prefix): + return len(prefix) >= 4 and i32(prefix) == MAGIC + + +## +# Image plugin for the Intel DCX format. + + +class DcxImageFile(PcxImageFile): + + format = "DCX" + format_description = "Intel DCX" + _close_exclusive_fp_after_loading = False + + def _open(self): + + # Header + s = self.fp.read(4) + if not _accept(s): + raise SyntaxError("not a DCX file") + + # Component directory + self._offset = [] + for i in range(1024): + offset = i32(self.fp.read(4)) + if not offset: + break + self._offset.append(offset) + + self.__fp = self.fp + self.frame = None + self.n_frames = len(self._offset) + self.is_animated = self.n_frames > 1 + self.seek(0) + + def seek(self, frame): + if not self._seek_check(frame): + return + self.frame = frame + self.fp = self.__fp + self.fp.seek(self._offset[frame]) + PcxImageFile._open(self) + + def tell(self): + return self.frame + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +Image.register_open(DcxImageFile.format, DcxImageFile, _accept) + +Image.register_extension(DcxImageFile.format, ".dcx") diff --git a/venv/Lib/site-packages/PIL/DdsImagePlugin.py b/venv/Lib/site-packages/PIL/DdsImagePlugin.py new file mode 100644 index 00000000..9ba6e0ff --- /dev/null +++ b/venv/Lib/site-packages/PIL/DdsImagePlugin.py @@ -0,0 +1,178 @@ +""" +A Pillow loader for .dds files (S3TC-compressed aka DXTC) +Jerome Leclanche + +Documentation: + https://web.archive.org/web/20170802060935/http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_compression_s3tc.txt + +The contents of this file are hereby released in the public domain (CC0) +Full text of the CC0 license: + https://creativecommons.org/publicdomain/zero/1.0/ +""" + +import struct +from io import BytesIO + +from . import Image, ImageFile + +# Magic ("DDS ") +DDS_MAGIC = 0x20534444 + +# DDS flags +DDSD_CAPS = 0x1 +DDSD_HEIGHT = 0x2 +DDSD_WIDTH = 0x4 +DDSD_PITCH = 0x8 +DDSD_PIXELFORMAT = 0x1000 +DDSD_MIPMAPCOUNT = 0x20000 +DDSD_LINEARSIZE = 0x80000 +DDSD_DEPTH = 0x800000 + +# DDS caps +DDSCAPS_COMPLEX = 0x8 +DDSCAPS_TEXTURE = 0x1000 +DDSCAPS_MIPMAP = 0x400000 + +DDSCAPS2_CUBEMAP = 0x200 +DDSCAPS2_CUBEMAP_POSITIVEX = 0x400 +DDSCAPS2_CUBEMAP_NEGATIVEX = 0x800 +DDSCAPS2_CUBEMAP_POSITIVEY = 0x1000 +DDSCAPS2_CUBEMAP_NEGATIVEY = 0x2000 +DDSCAPS2_CUBEMAP_POSITIVEZ = 0x4000 +DDSCAPS2_CUBEMAP_NEGATIVEZ = 0x8000 +DDSCAPS2_VOLUME = 0x200000 + +# Pixel Format +DDPF_ALPHAPIXELS = 0x1 +DDPF_ALPHA = 0x2 +DDPF_FOURCC = 0x4 +DDPF_PALETTEINDEXED8 = 0x20 +DDPF_RGB = 0x40 +DDPF_LUMINANCE = 0x20000 + + +# dds.h + +DDS_FOURCC = DDPF_FOURCC +DDS_RGB = DDPF_RGB +DDS_RGBA = DDPF_RGB | DDPF_ALPHAPIXELS +DDS_LUMINANCE = DDPF_LUMINANCE +DDS_LUMINANCEA = DDPF_LUMINANCE | DDPF_ALPHAPIXELS +DDS_ALPHA = DDPF_ALPHA +DDS_PAL8 = DDPF_PALETTEINDEXED8 + +DDS_HEADER_FLAGS_TEXTURE = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH | DDSD_PIXELFORMAT +DDS_HEADER_FLAGS_MIPMAP = DDSD_MIPMAPCOUNT +DDS_HEADER_FLAGS_VOLUME = DDSD_DEPTH +DDS_HEADER_FLAGS_PITCH = DDSD_PITCH +DDS_HEADER_FLAGS_LINEARSIZE = DDSD_LINEARSIZE + +DDS_HEIGHT = DDSD_HEIGHT +DDS_WIDTH = DDSD_WIDTH + +DDS_SURFACE_FLAGS_TEXTURE = DDSCAPS_TEXTURE +DDS_SURFACE_FLAGS_MIPMAP = DDSCAPS_COMPLEX | DDSCAPS_MIPMAP +DDS_SURFACE_FLAGS_CUBEMAP = DDSCAPS_COMPLEX + +DDS_CUBEMAP_POSITIVEX = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_POSITIVEX +DDS_CUBEMAP_NEGATIVEX = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_NEGATIVEX +DDS_CUBEMAP_POSITIVEY = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_POSITIVEY +DDS_CUBEMAP_NEGATIVEY = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_NEGATIVEY +DDS_CUBEMAP_POSITIVEZ = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_POSITIVEZ +DDS_CUBEMAP_NEGATIVEZ = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_NEGATIVEZ + + +# DXT1 +DXT1_FOURCC = 0x31545844 + +# DXT3 +DXT3_FOURCC = 0x33545844 + +# DXT5 +DXT5_FOURCC = 0x35545844 + + +# dxgiformat.h + +DXGI_FORMAT_BC7_TYPELESS = 97 +DXGI_FORMAT_BC7_UNORM = 98 +DXGI_FORMAT_BC7_UNORM_SRGB = 99 + + +class DdsImageFile(ImageFile.ImageFile): + format = "DDS" + format_description = "DirectDraw Surface" + + def _open(self): + magic, header_size = struct.unpack(" 0: + s = fp.read(min(lengthfile, 100 * 1024)) + if not s: + break + lengthfile -= len(s) + f.write(s) + + # Build Ghostscript command + command = [ + "gs", + "-q", # quiet mode + "-g%dx%d" % size, # set output geometry (pixels) + "-r%fx%f" % res, # set input DPI (dots per inch) + "-dBATCH", # exit after processing + "-dNOPAUSE", # don't pause between pages + "-dSAFER", # safe mode + "-sDEVICE=ppmraw", # ppm driver + "-sOutputFile=%s" % outfile, # output file + # adjust for image origin + "-c", + "%d %d translate" % (-bbox[0], -bbox[1]), + "-f", + infile, # input file + # showpage (see https://bugs.ghostscript.com/show_bug.cgi?id=698272) + "-c", + "showpage", + ] + + if gs_windows_binary is not None: + if not gs_windows_binary: + raise OSError("Unable to locate Ghostscript on paths") + command[0] = gs_windows_binary + + # push data through Ghostscript + try: + startupinfo = None + if sys.platform.startswith("win"): + startupinfo = subprocess.STARTUPINFO() + startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW + subprocess.check_call(command, startupinfo=startupinfo) + out_im = Image.open(outfile) + out_im.load() + finally: + try: + os.unlink(outfile) + if infile_temp: + os.unlink(infile_temp) + except OSError: + pass + + im = out_im.im.copy() + out_im.close() + return im + + +class PSFile: + """ + Wrapper for bytesio object that treats either CR or LF as end of line. + """ + + def __init__(self, fp): + self.fp = fp + self.char = None + + def seek(self, offset, whence=io.SEEK_SET): + self.char = None + self.fp.seek(offset, whence) + + def readline(self): + s = self.char or b"" + self.char = None + + c = self.fp.read(1) + while c not in b"\r\n": + s = s + c + c = self.fp.read(1) + + self.char = self.fp.read(1) + # line endings can be 1 or 2 of \r \n, in either order + if self.char in b"\r\n": + self.char = None + + return s.decode("latin-1") + + +def _accept(prefix): + return prefix[:4] == b"%!PS" or (len(prefix) >= 4 and i32(prefix) == 0xC6D3D0C5) + + +## +# Image plugin for Encapsulated Postscript. This plugin supports only +# a few variants of this format. + + +class EpsImageFile(ImageFile.ImageFile): + """EPS File Parser for the Python Imaging Library""" + + format = "EPS" + format_description = "Encapsulated Postscript" + + mode_map = {1: "L", 2: "LAB", 3: "RGB", 4: "CMYK"} + + def _open(self): + (length, offset) = self._find_offset(self.fp) + + # Rewrap the open file pointer in something that will + # convert line endings and decode to latin-1. + fp = PSFile(self.fp) + + # go to offset - start of "%!PS" + fp.seek(offset) + + box = None + + self.mode = "RGB" + self._size = 1, 1 # FIXME: huh? + + # + # Load EPS header + + s_raw = fp.readline() + s = s_raw.strip("\r\n") + + while s_raw: + if s: + if len(s) > 255: + raise SyntaxError("not an EPS file") + + try: + m = split.match(s) + except re.error as e: + raise SyntaxError("not an EPS file") from e + + if m: + k, v = m.group(1, 2) + self.info[k] = v + if k == "BoundingBox": + try: + # Note: The DSC spec says that BoundingBox + # fields should be integers, but some drivers + # put floating point values there anyway. + box = [int(float(i)) for i in v.split()] + self._size = box[2] - box[0], box[3] - box[1] + self.tile = [ + ("eps", (0, 0) + self.size, offset, (length, box)) + ] + except Exception: + pass + + else: + m = field.match(s) + if m: + k = m.group(1) + + if k == "EndComments": + break + if k[:8] == "PS-Adobe": + self.info[k[:8]] = k[9:] + else: + self.info[k] = "" + elif s[0] == "%": + # handle non-DSC Postscript comments that some + # tools mistakenly put in the Comments section + pass + else: + raise OSError("bad EPS header") + + s_raw = fp.readline() + s = s_raw.strip("\r\n") + + if s and s[:1] != "%": + break + + # + # Scan for an "ImageData" descriptor + + while s[:1] == "%": + + if len(s) > 255: + raise SyntaxError("not an EPS file") + + if s[:11] == "%ImageData:": + # Encoded bitmapped image. + x, y, bi, mo = s[11:].split(None, 7)[:4] + + if int(bi) != 8: + break + try: + self.mode = self.mode_map[int(mo)] + except ValueError: + break + + self._size = int(x), int(y) + return + + s = fp.readline().strip("\r\n") + if not s: + break + + if not box: + raise OSError("cannot determine EPS bounding box") + + def _find_offset(self, fp): + + s = fp.read(160) + + if s[:4] == b"%!PS": + # for HEAD without binary preview + fp.seek(0, io.SEEK_END) + length = fp.tell() + offset = 0 + elif i32(s[0:4]) == 0xC6D3D0C5: + # FIX for: Some EPS file not handled correctly / issue #302 + # EPS can contain binary data + # or start directly with latin coding + # more info see: + # https://web.archive.org/web/20160528181353/http://partners.adobe.com/public/developer/en/ps/5002.EPSF_Spec.pdf + offset = i32(s[4:8]) + length = i32(s[8:12]) + else: + raise SyntaxError("not an EPS file") + + return (length, offset) + + def load(self, scale=1): + # Load EPS via Ghostscript + if not self.tile: + return + self.im = Ghostscript(self.tile, self.size, self.fp, scale) + self.mode = self.im.mode + self._size = self.im.size + self.tile = [] + + def load_seek(self, *args, **kwargs): + # we can't incrementally load, so force ImageFile.parser to + # use our custom load method by defining this method. + pass + + +# +# -------------------------------------------------------------------- + + +def _save(im, fp, filename, eps=1): + """EPS Writer for the Python Imaging Library.""" + + # + # make sure image data is available + im.load() + + # + # determine postscript image mode + if im.mode == "L": + operator = (8, 1, "image") + elif im.mode == "RGB": + operator = (8, 3, "false 3 colorimage") + elif im.mode == "CMYK": + operator = (8, 4, "false 4 colorimage") + else: + raise ValueError("image mode is not supported") + + base_fp = fp + wrapped_fp = False + if fp != sys.stdout: + fp = io.TextIOWrapper(fp, encoding="latin-1") + wrapped_fp = True + + try: + if eps: + # + # write EPS header + fp.write("%!PS-Adobe-3.0 EPSF-3.0\n") + fp.write("%%Creator: PIL 0.1 EpsEncode\n") + # fp.write("%%CreationDate: %s"...) + fp.write("%%%%BoundingBox: 0 0 %d %d\n" % im.size) + fp.write("%%Pages: 1\n") + fp.write("%%EndComments\n") + fp.write("%%Page: 1 1\n") + fp.write("%%ImageData: %d %d " % im.size) + fp.write('%d %d 0 1 1 "%s"\n' % operator) + + # + # image header + fp.write("gsave\n") + fp.write("10 dict begin\n") + fp.write("/buf %d string def\n" % (im.size[0] * operator[1])) + fp.write("%d %d scale\n" % im.size) + fp.write("%d %d 8\n" % im.size) # <= bits + fp.write("[%d 0 0 -%d 0 %d]\n" % (im.size[0], im.size[1], im.size[1])) + fp.write("{ currentfile buf readhexstring pop } bind\n") + fp.write(operator[2] + "\n") + if hasattr(fp, "flush"): + fp.flush() + + ImageFile._save(im, base_fp, [("eps", (0, 0) + im.size, 0, None)]) + + fp.write("\n%%%%EndBinary\n") + fp.write("grestore end\n") + if hasattr(fp, "flush"): + fp.flush() + finally: + if wrapped_fp: + fp.detach() + + +# +# -------------------------------------------------------------------- + + +Image.register_open(EpsImageFile.format, EpsImageFile, _accept) + +Image.register_save(EpsImageFile.format, _save) + +Image.register_extensions(EpsImageFile.format, [".ps", ".eps"]) + +Image.register_mime(EpsImageFile.format, "application/postscript") diff --git a/venv/Lib/site-packages/PIL/ExifTags.py b/venv/Lib/site-packages/PIL/ExifTags.py new file mode 100644 index 00000000..f1c037e5 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ExifTags.py @@ -0,0 +1,318 @@ +# +# The Python Imaging Library. +# $Id$ +# +# EXIF tags +# +# Copyright (c) 2003 by Secret Labs AB +# +# See the README file for information on usage and redistribution. +# + +""" +This module provides constants and clear-text names for various +well-known EXIF tags. +""" + + +TAGS = { + # possibly incomplete + 0x000B: "ProcessingSoftware", + 0x00FE: "NewSubfileType", + 0x00FF: "SubfileType", + 0x0100: "ImageWidth", + 0x0101: "ImageLength", + 0x0102: "BitsPerSample", + 0x0103: "Compression", + 0x0106: "PhotometricInterpretation", + 0x0107: "Thresholding", + 0x0108: "CellWidth", + 0x0109: "CellLength", + 0x010A: "FillOrder", + 0x010D: "DocumentName", + 0x010E: "ImageDescription", + 0x010F: "Make", + 0x0110: "Model", + 0x0111: "StripOffsets", + 0x0112: "Orientation", + 0x0115: "SamplesPerPixel", + 0x0116: "RowsPerStrip", + 0x0117: "StripByteCounts", + 0x0118: "MinSampleValue", + 0x0119: "MaxSampleValue", + 0x011A: "XResolution", + 0x011B: "YResolution", + 0x011C: "PlanarConfiguration", + 0x011D: "PageName", + 0x0120: "FreeOffsets", + 0x0121: "FreeByteCounts", + 0x0122: "GrayResponseUnit", + 0x0123: "GrayResponseCurve", + 0x0124: "T4Options", + 0x0125: "T6Options", + 0x0128: "ResolutionUnit", + 0x0129: "PageNumber", + 0x012D: "TransferFunction", + 0x0131: "Software", + 0x0132: "DateTime", + 0x013B: "Artist", + 0x013C: "HostComputer", + 0x013D: "Predictor", + 0x013E: "WhitePoint", + 0x013F: "PrimaryChromaticities", + 0x0140: "ColorMap", + 0x0141: "HalftoneHints", + 0x0142: "TileWidth", + 0x0143: "TileLength", + 0x0144: "TileOffsets", + 0x0145: "TileByteCounts", + 0x014A: "SubIFDs", + 0x014C: "InkSet", + 0x014D: "InkNames", + 0x014E: "NumberOfInks", + 0x0150: "DotRange", + 0x0151: "TargetPrinter", + 0x0152: "ExtraSamples", + 0x0153: "SampleFormat", + 0x0154: "SMinSampleValue", + 0x0155: "SMaxSampleValue", + 0x0156: "TransferRange", + 0x0157: "ClipPath", + 0x0158: "XClipPathUnits", + 0x0159: "YClipPathUnits", + 0x015A: "Indexed", + 0x015B: "JPEGTables", + 0x015F: "OPIProxy", + 0x0200: "JPEGProc", + 0x0201: "JpegIFOffset", + 0x0202: "JpegIFByteCount", + 0x0203: "JpegRestartInterval", + 0x0205: "JpegLosslessPredictors", + 0x0206: "JpegPointTransforms", + 0x0207: "JpegQTables", + 0x0208: "JpegDCTables", + 0x0209: "JpegACTables", + 0x0211: "YCbCrCoefficients", + 0x0212: "YCbCrSubSampling", + 0x0213: "YCbCrPositioning", + 0x0214: "ReferenceBlackWhite", + 0x02BC: "XMLPacket", + 0x1000: "RelatedImageFileFormat", + 0x1001: "RelatedImageWidth", + 0x1002: "RelatedImageLength", + 0x4746: "Rating", + 0x4749: "RatingPercent", + 0x800D: "ImageID", + 0x828D: "CFARepeatPatternDim", + 0x828E: "CFAPattern", + 0x828F: "BatteryLevel", + 0x8298: "Copyright", + 0x829A: "ExposureTime", + 0x829D: "FNumber", + 0x83BB: "IPTCNAA", + 0x8649: "ImageResources", + 0x8769: "ExifOffset", + 0x8773: "InterColorProfile", + 0x8822: "ExposureProgram", + 0x8824: "SpectralSensitivity", + 0x8825: "GPSInfo", + 0x8827: "ISOSpeedRatings", + 0x8828: "OECF", + 0x8829: "Interlace", + 0x882A: "TimeZoneOffset", + 0x882B: "SelfTimerMode", + 0x9000: "ExifVersion", + 0x9003: "DateTimeOriginal", + 0x9004: "DateTimeDigitized", + 0x9101: "ComponentsConfiguration", + 0x9102: "CompressedBitsPerPixel", + 0x9201: "ShutterSpeedValue", + 0x9202: "ApertureValue", + 0x9203: "BrightnessValue", + 0x9204: "ExposureBiasValue", + 0x9205: "MaxApertureValue", + 0x9206: "SubjectDistance", + 0x9207: "MeteringMode", + 0x9208: "LightSource", + 0x9209: "Flash", + 0x920A: "FocalLength", + 0x920B: "FlashEnergy", + 0x920C: "SpatialFrequencyResponse", + 0x920D: "Noise", + 0x9211: "ImageNumber", + 0x9212: "SecurityClassification", + 0x9213: "ImageHistory", + 0x9214: "SubjectLocation", + 0x9215: "ExposureIndex", + 0x9216: "TIFF/EPStandardID", + 0x927C: "MakerNote", + 0x9286: "UserComment", + 0x9290: "SubsecTime", + 0x9291: "SubsecTimeOriginal", + 0x9292: "SubsecTimeDigitized", + 0x9400: "AmbientTemperature", + 0x9401: "Humidity", + 0x9402: "Pressure", + 0x9403: "WaterDepth", + 0x9404: "Acceleration", + 0x9405: "CameraElevationAngle", + 0x9C9B: "XPTitle", + 0x9C9C: "XPComment", + 0x9C9D: "XPAuthor", + 0x9C9E: "XPKeywords", + 0x9C9F: "XPSubject", + 0xA000: "FlashPixVersion", + 0xA001: "ColorSpace", + 0xA002: "ExifImageWidth", + 0xA003: "ExifImageHeight", + 0xA004: "RelatedSoundFile", + 0xA005: "ExifInteroperabilityOffset", + 0xA20B: "FlashEnergy", + 0xA20C: "SpatialFrequencyResponse", + 0xA20E: "FocalPlaneXResolution", + 0xA20F: "FocalPlaneYResolution", + 0xA210: "FocalPlaneResolutionUnit", + 0xA214: "SubjectLocation", + 0xA215: "ExposureIndex", + 0xA217: "SensingMethod", + 0xA300: "FileSource", + 0xA301: "SceneType", + 0xA302: "CFAPattern", + 0xA401: "CustomRendered", + 0xA402: "ExposureMode", + 0xA403: "WhiteBalance", + 0xA404: "DigitalZoomRatio", + 0xA405: "FocalLengthIn35mmFilm", + 0xA406: "SceneCaptureType", + 0xA407: "GainControl", + 0xA408: "Contrast", + 0xA409: "Saturation", + 0xA40A: "Sharpness", + 0xA40B: "DeviceSettingDescription", + 0xA40C: "SubjectDistanceRange", + 0xA420: "ImageUniqueID", + 0xA430: "CameraOwnerName", + 0xA431: "BodySerialNumber", + 0xA432: "LensSpecification", + 0xA433: "LensMake", + 0xA434: "LensModel", + 0xA435: "LensSerialNumber", + 0xA500: "Gamma", + 0xC4A5: "PrintImageMatching", + 0xC612: "DNGVersion", + 0xC613: "DNGBackwardVersion", + 0xC614: "UniqueCameraModel", + 0xC615: "LocalizedCameraModel", + 0xC616: "CFAPlaneColor", + 0xC617: "CFALayout", + 0xC618: "LinearizationTable", + 0xC619: "BlackLevelRepeatDim", + 0xC61A: "BlackLevel", + 0xC61B: "BlackLevelDeltaH", + 0xC61C: "BlackLevelDeltaV", + 0xC61D: "WhiteLevel", + 0xC61E: "DefaultScale", + 0xC61F: "DefaultCropOrigin", + 0xC620: "DefaultCropSize", + 0xC621: "ColorMatrix1", + 0xC622: "ColorMatrix2", + 0xC623: "CameraCalibration1", + 0xC624: "CameraCalibration2", + 0xC625: "ReductionMatrix1", + 0xC626: "ReductionMatrix2", + 0xC627: "AnalogBalance", + 0xC628: "AsShotNeutral", + 0xC629: "AsShotWhiteXY", + 0xC62A: "BaselineExposure", + 0xC62B: "BaselineNoise", + 0xC62C: "BaselineSharpness", + 0xC62D: "BayerGreenSplit", + 0xC62E: "LinearResponseLimit", + 0xC62F: "CameraSerialNumber", + 0xC630: "LensInfo", + 0xC631: "ChromaBlurRadius", + 0xC632: "AntiAliasStrength", + 0xC633: "ShadowScale", + 0xC634: "DNGPrivateData", + 0xC635: "MakerNoteSafety", + 0xC65A: "CalibrationIlluminant1", + 0xC65B: "CalibrationIlluminant2", + 0xC65C: "BestQualityScale", + 0xC65D: "RawDataUniqueID", + 0xC68B: "OriginalRawFileName", + 0xC68C: "OriginalRawFileData", + 0xC68D: "ActiveArea", + 0xC68E: "MaskedAreas", + 0xC68F: "AsShotICCProfile", + 0xC690: "AsShotPreProfileMatrix", + 0xC691: "CurrentICCProfile", + 0xC692: "CurrentPreProfileMatrix", + 0xC6BF: "ColorimetricReference", + 0xC6F3: "CameraCalibrationSignature", + 0xC6F4: "ProfileCalibrationSignature", + 0xC6F6: "AsShotProfileName", + 0xC6F7: "NoiseReductionApplied", + 0xC6F8: "ProfileName", + 0xC6F9: "ProfileHueSatMapDims", + 0xC6FA: "ProfileHueSatMapData1", + 0xC6FB: "ProfileHueSatMapData2", + 0xC6FC: "ProfileToneCurve", + 0xC6FD: "ProfileEmbedPolicy", + 0xC6FE: "ProfileCopyright", + 0xC714: "ForwardMatrix1", + 0xC715: "ForwardMatrix2", + 0xC716: "PreviewApplicationName", + 0xC717: "PreviewApplicationVersion", + 0xC718: "PreviewSettingsName", + 0xC719: "PreviewSettingsDigest", + 0xC71A: "PreviewColorSpace", + 0xC71B: "PreviewDateTime", + 0xC71C: "RawImageDigest", + 0xC71D: "OriginalRawFileDigest", + 0xC71E: "SubTileBlockSize", + 0xC71F: "RowInterleaveFactor", + 0xC725: "ProfileLookTableDims", + 0xC726: "ProfileLookTableData", + 0xC740: "OpcodeList1", + 0xC741: "OpcodeList2", + 0xC74E: "OpcodeList3", + 0xC761: "NoiseProfile", +} +"""Maps EXIF tags to tag names.""" + + +GPSTAGS = { + 0: "GPSVersionID", + 1: "GPSLatitudeRef", + 2: "GPSLatitude", + 3: "GPSLongitudeRef", + 4: "GPSLongitude", + 5: "GPSAltitudeRef", + 6: "GPSAltitude", + 7: "GPSTimeStamp", + 8: "GPSSatellites", + 9: "GPSStatus", + 10: "GPSMeasureMode", + 11: "GPSDOP", + 12: "GPSSpeedRef", + 13: "GPSSpeed", + 14: "GPSTrackRef", + 15: "GPSTrack", + 16: "GPSImgDirectionRef", + 17: "GPSImgDirection", + 18: "GPSMapDatum", + 19: "GPSDestLatitudeRef", + 20: "GPSDestLatitude", + 21: "GPSDestLongitudeRef", + 22: "GPSDestLongitude", + 23: "GPSDestBearingRef", + 24: "GPSDestBearing", + 25: "GPSDestDistanceRef", + 26: "GPSDestDistance", + 27: "GPSProcessingMethod", + 28: "GPSAreaInformation", + 29: "GPSDateStamp", + 30: "GPSDifferential", + 31: "GPSHPositioningError", +} +"""Maps EXIF GPS tags to tag names.""" diff --git a/venv/Lib/site-packages/PIL/FitsStubImagePlugin.py b/venv/Lib/site-packages/PIL/FitsStubImagePlugin.py new file mode 100644 index 00000000..c2ce8651 --- /dev/null +++ b/venv/Lib/site-packages/PIL/FitsStubImagePlugin.py @@ -0,0 +1,76 @@ +# +# The Python Imaging Library +# $Id$ +# +# FITS stub adapter +# +# Copyright (c) 1998-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler): + """ + Install application-specific FITS image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix): + return prefix[:6] == b"SIMPLE" + + +class FITSStubImageFile(ImageFile.StubImageFile): + + format = "FITS" + format_description = "FITS" + + def _open(self): + + offset = self.fp.tell() + + if not _accept(self.fp.read(6)): + raise SyntaxError("Not a FITS file") + + # FIXME: add more sanity checks here; mandatory header items + # include SIMPLE, BITPIX, NAXIS, etc. + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self._size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr("_handler", "save"): + raise OSError("FITS save handler not installed") + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(FITSStubImageFile.format, FITSStubImageFile, _accept) +Image.register_save(FITSStubImageFile.format, _save) + +Image.register_extensions(FITSStubImageFile.format, [".fit", ".fits"]) diff --git a/venv/Lib/site-packages/PIL/FliImagePlugin.py b/venv/Lib/site-packages/PIL/FliImagePlugin.py new file mode 100644 index 00000000..f09d62ce --- /dev/null +++ b/venv/Lib/site-packages/PIL/FliImagePlugin.py @@ -0,0 +1,169 @@ +# +# The Python Imaging Library. +# $Id$ +# +# FLI/FLC file handling. +# +# History: +# 95-09-01 fl Created +# 97-01-03 fl Fixed parser, setup decoder tile +# 98-07-15 fl Renamed offset attribute to avoid name clash +# +# Copyright (c) Secret Labs AB 1997-98. +# Copyright (c) Fredrik Lundh 1995-97. +# +# See the README file for information on usage and redistribution. +# + + +from . import Image, ImageFile, ImagePalette +from ._binary import i8, i16le as i16, i32le as i32, o8 + +# +# decoder + + +def _accept(prefix): + return len(prefix) >= 6 and i16(prefix[4:6]) in [0xAF11, 0xAF12] + + +## +# Image plugin for the FLI/FLC animation format. Use the seek +# method to load individual frames. + + +class FliImageFile(ImageFile.ImageFile): + + format = "FLI" + format_description = "Autodesk FLI/FLC Animation" + _close_exclusive_fp_after_loading = False + + def _open(self): + + # HEAD + s = self.fp.read(128) + if not ( + _accept(s) + and i16(s[14:16]) in [0, 3] # flags + and s[20:22] == b"\x00\x00" # reserved + ): + raise SyntaxError("not an FLI/FLC file") + + # frames + self.n_frames = i16(s[6:8]) + self.is_animated = self.n_frames > 1 + + # image characteristics + self.mode = "P" + self._size = i16(s[8:10]), i16(s[10:12]) + + # animation speed + duration = i32(s[16:20]) + magic = i16(s[4:6]) + if magic == 0xAF11: + duration = (duration * 1000) // 70 + self.info["duration"] = duration + + # look for palette + palette = [(a, a, a) for a in range(256)] + + s = self.fp.read(16) + + self.__offset = 128 + + if i16(s[4:6]) == 0xF100: + # prefix chunk; ignore it + self.__offset = self.__offset + i32(s) + s = self.fp.read(16) + + if i16(s[4:6]) == 0xF1FA: + # look for palette chunk + s = self.fp.read(6) + if i16(s[4:6]) == 11: + self._palette(palette, 2) + elif i16(s[4:6]) == 4: + self._palette(palette, 0) + + palette = [o8(r) + o8(g) + o8(b) for (r, g, b) in palette] + self.palette = ImagePalette.raw("RGB", b"".join(palette)) + + # set things up to decode first frame + self.__frame = -1 + self.__fp = self.fp + self.__rewind = self.fp.tell() + self.seek(0) + + def _palette(self, palette, shift): + # load palette + + i = 0 + for e in range(i16(self.fp.read(2))): + s = self.fp.read(2) + i = i + i8(s[0]) + n = i8(s[1]) + if n == 0: + n = 256 + s = self.fp.read(n * 3) + for n in range(0, len(s), 3): + r = i8(s[n]) << shift + g = i8(s[n + 1]) << shift + b = i8(s[n + 2]) << shift + palette[i] = (r, g, b) + i += 1 + + def seek(self, frame): + if not self._seek_check(frame): + return + if frame < self.__frame: + self._seek(0) + + for f in range(self.__frame + 1, frame + 1): + self._seek(f) + + def _seek(self, frame): + if frame == 0: + self.__frame = -1 + self.__fp.seek(self.__rewind) + self.__offset = 128 + else: + # ensure that the previous frame was loaded + self.load() + + if frame != self.__frame + 1: + raise ValueError("cannot seek to frame %d" % frame) + self.__frame = frame + + # move to next frame + self.fp = self.__fp + self.fp.seek(self.__offset) + + s = self.fp.read(4) + if not s: + raise EOFError + + framesize = i32(s) + + self.decodermaxblock = framesize + self.tile = [("fli", (0, 0) + self.size, self.__offset, None)] + + self.__offset += framesize + + def tell(self): + return self.__frame + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +# +# registry + +Image.register_open(FliImageFile.format, FliImageFile, _accept) + +Image.register_extensions(FliImageFile.format, [".fli", ".flc"]) diff --git a/venv/Lib/site-packages/PIL/FontFile.py b/venv/Lib/site-packages/PIL/FontFile.py new file mode 100644 index 00000000..3ebd9073 --- /dev/null +++ b/venv/Lib/site-packages/PIL/FontFile.py @@ -0,0 +1,111 @@ +# +# The Python Imaging Library +# $Id$ +# +# base class for raster font file parsers +# +# history: +# 1997-06-05 fl created +# 1997-08-19 fl restrict image width +# +# Copyright (c) 1997-1998 by Secret Labs AB +# Copyright (c) 1997-1998 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + + +import os + +from . import Image, _binary + +WIDTH = 800 + + +def puti16(fp, values): + """Write network order (big-endian) 16-bit sequence""" + for v in values: + if v < 0: + v += 65536 + fp.write(_binary.o16be(v)) + + +class FontFile: + """Base class for raster font file handlers.""" + + bitmap = None + + def __init__(self): + + self.info = {} + self.glyph = [None] * 256 + + def __getitem__(self, ix): + return self.glyph[ix] + + def compile(self): + """Create metrics and bitmap""" + + if self.bitmap: + return + + # create bitmap large enough to hold all data + h = w = maxwidth = 0 + lines = 1 + for glyph in self: + if glyph: + d, dst, src, im = glyph + h = max(h, src[3] - src[1]) + w = w + (src[2] - src[0]) + if w > WIDTH: + lines += 1 + w = src[2] - src[0] + maxwidth = max(maxwidth, w) + + xsize = maxwidth + ysize = lines * h + + if xsize == 0 and ysize == 0: + return "" + + self.ysize = h + + # paste glyphs into bitmap + self.bitmap = Image.new("1", (xsize, ysize)) + self.metrics = [None] * 256 + x = y = 0 + for i in range(256): + glyph = self[i] + if glyph: + d, dst, src, im = glyph + xx = src[2] - src[0] + # yy = src[3] - src[1] + x0, y0 = x, y + x = x + xx + if x > WIDTH: + x, y = 0, y + h + x0, y0 = x, y + x = xx + s = src[0] + x0, src[1] + y0, src[2] + x0, src[3] + y0 + self.bitmap.paste(im.crop(src), s) + self.metrics[i] = d, dst, s + + def save(self, filename): + """Save font""" + + self.compile() + + # font data + self.bitmap.save(os.path.splitext(filename)[0] + ".pbm", "PNG") + + # font metrics + with open(os.path.splitext(filename)[0] + ".pil", "wb") as fp: + fp.write(b"PILfont\n") + fp.write((";;;;;;%d;\n" % self.ysize).encode("ascii")) # HACK!!! + fp.write(b"DATA\n") + for id in range(256): + m = self.metrics[id] + if not m: + puti16(fp, [0] * 10) + else: + puti16(fp, m[0] + m[1] + m[2]) diff --git a/venv/Lib/site-packages/PIL/FpxImagePlugin.py b/venv/Lib/site-packages/PIL/FpxImagePlugin.py new file mode 100644 index 00000000..bbee9e24 --- /dev/null +++ b/venv/Lib/site-packages/PIL/FpxImagePlugin.py @@ -0,0 +1,242 @@ +# +# THIS IS WORK IN PROGRESS +# +# The Python Imaging Library. +# $Id$ +# +# FlashPix support for PIL +# +# History: +# 97-01-25 fl Created (reads uncompressed RGB images only) +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# +import olefile + +from . import Image, ImageFile +from ._binary import i8, i32le as i32 + +# we map from colour field tuples to (mode, rawmode) descriptors +MODES = { + # opacity + (0x00007FFE): ("A", "L"), + # monochrome + (0x00010000,): ("L", "L"), + (0x00018000, 0x00017FFE): ("RGBA", "LA"), + # photo YCC + (0x00020000, 0x00020001, 0x00020002): ("RGB", "YCC;P"), + (0x00028000, 0x00028001, 0x00028002, 0x00027FFE): ("RGBA", "YCCA;P"), + # standard RGB (NIFRGB) + (0x00030000, 0x00030001, 0x00030002): ("RGB", "RGB"), + (0x00038000, 0x00038001, 0x00038002, 0x00037FFE): ("RGBA", "RGBA"), +} + + +# +# -------------------------------------------------------------------- + + +def _accept(prefix): + return prefix[:8] == olefile.MAGIC + + +## +# Image plugin for the FlashPix images. + + +class FpxImageFile(ImageFile.ImageFile): + + format = "FPX" + format_description = "FlashPix" + + def _open(self): + # + # read the OLE directory and see if this is a likely + # to be a FlashPix file + + try: + self.ole = olefile.OleFileIO(self.fp) + except OSError as e: + raise SyntaxError("not an FPX file; invalid OLE file") from e + + if self.ole.root.clsid != "56616700-C154-11CE-8553-00AA00A1F95B": + raise SyntaxError("not an FPX file; bad root CLSID") + + self._open_index(1) + + def _open_index(self, index=1): + # + # get the Image Contents Property Set + + prop = self.ole.getproperties( + ["Data Object Store %06d" % index, "\005Image Contents"] + ) + + # size (highest resolution) + + self._size = prop[0x1000002], prop[0x1000003] + + size = max(self.size) + i = 1 + while size > 64: + size = size / 2 + i += 1 + self.maxid = i - 1 + + # mode. instead of using a single field for this, flashpix + # requires you to specify the mode for each channel in each + # resolution subimage, and leaves it to the decoder to make + # sure that they all match. for now, we'll cheat and assume + # that this is always the case. + + id = self.maxid << 16 + + s = prop[0x2000002 | id] + + colors = [] + bands = i32(s, 4) + if bands > 4: + raise OSError("Invalid number of bands") + for i in range(bands): + # note: for now, we ignore the "uncalibrated" flag + colors.append(i32(s, 8 + i * 4) & 0x7FFFFFFF) + + self.mode, self.rawmode = MODES[tuple(colors)] + + # load JPEG tables, if any + self.jpeg = {} + for i in range(256): + id = 0x3000001 | (i << 16) + if id in prop: + self.jpeg[i] = prop[id] + + self._open_subimage(1, self.maxid) + + def _open_subimage(self, index=1, subimage=0): + # + # setup tile descriptors for a given subimage + + stream = [ + "Data Object Store %06d" % index, + "Resolution %04d" % subimage, + "Subimage 0000 Header", + ] + + fp = self.ole.openstream(stream) + + # skip prefix + fp.read(28) + + # header stream + s = fp.read(36) + + size = i32(s, 4), i32(s, 8) + # tilecount = i32(s, 12) + tilesize = i32(s, 16), i32(s, 20) + # channels = i32(s, 24) + offset = i32(s, 28) + length = i32(s, 32) + + if size != self.size: + raise OSError("subimage mismatch") + + # get tile descriptors + fp.seek(28 + offset) + s = fp.read(i32(s, 12) * length) + + x = y = 0 + xsize, ysize = size + xtile, ytile = tilesize + self.tile = [] + + for i in range(0, len(s), length): + + compression = i32(s, i + 8) + + if compression == 0: + self.tile.append( + ( + "raw", + (x, y, x + xtile, y + ytile), + i32(s, i) + 28, + (self.rawmode), + ) + ) + + elif compression == 1: + + # FIXME: the fill decoder is not implemented + self.tile.append( + ( + "fill", + (x, y, x + xtile, y + ytile), + i32(s, i) + 28, + (self.rawmode, s[12:16]), + ) + ) + + elif compression == 2: + + internal_color_conversion = i8(s[14]) + jpeg_tables = i8(s[15]) + rawmode = self.rawmode + + if internal_color_conversion: + # The image is stored as usual (usually YCbCr). + if rawmode == "RGBA": + # For "RGBA", data is stored as YCbCrA based on + # negative RGB. The following trick works around + # this problem : + jpegmode, rawmode = "YCbCrK", "CMYK" + else: + jpegmode = None # let the decoder decide + + else: + # The image is stored as defined by rawmode + jpegmode = rawmode + + self.tile.append( + ( + "jpeg", + (x, y, x + xtile, y + ytile), + i32(s, i) + 28, + (rawmode, jpegmode), + ) + ) + + # FIXME: jpeg tables are tile dependent; the prefix + # data must be placed in the tile descriptor itself! + + if jpeg_tables: + self.tile_prefix = self.jpeg[jpeg_tables] + + else: + raise OSError("unknown/invalid compression") + + x = x + xtile + if x >= xsize: + x, y = 0, y + ytile + if y >= ysize: + break # isn't really required + + self.stream = stream + self.fp = None + + def load(self): + + if not self.fp: + self.fp = self.ole.openstream(self.stream[:2] + ["Subimage 0000 Data"]) + + return ImageFile.ImageFile.load(self) + + +# +# -------------------------------------------------------------------- + + +Image.register_open(FpxImageFile.format, FpxImageFile, _accept) + +Image.register_extension(FpxImageFile.format, ".fpx") diff --git a/venv/Lib/site-packages/PIL/FtexImagePlugin.py b/venv/Lib/site-packages/PIL/FtexImagePlugin.py new file mode 100644 index 00000000..096ccaca --- /dev/null +++ b/venv/Lib/site-packages/PIL/FtexImagePlugin.py @@ -0,0 +1,106 @@ +""" +A Pillow loader for .ftc and .ftu files (FTEX) +Jerome Leclanche + +The contents of this file are hereby released in the public domain (CC0) +Full text of the CC0 license: + https://creativecommons.org/publicdomain/zero/1.0/ + +Independence War 2: Edge Of Chaos - Texture File Format - 16 October 2001 + +The textures used for 3D objects in Independence War 2: Edge Of Chaos are in a +packed custom format called FTEX. This file format uses file extensions FTC +and FTU. +* FTC files are compressed textures (using standard texture compression). +* FTU files are not compressed. +Texture File Format +The FTC and FTU texture files both use the same format. This +has the following structure: +{header} +{format_directory} +{data} +Where: +{header} = { + u32:magic, + u32:version, + u32:width, + u32:height, + u32:mipmap_count, + u32:format_count +} + +* The "magic" number is "FTEX". +* "width" and "height" are the dimensions of the texture. +* "mipmap_count" is the number of mipmaps in the texture. +* "format_count" is the number of texture formats (different versions of the +same texture) in this file. + +{format_directory} = format_count * { u32:format, u32:where } + +The format value is 0 for DXT1 compressed textures and 1 for 24-bit RGB +uncompressed textures. +The texture data for a format starts at the position "where" in the file. + +Each set of texture data in the file has the following structure: +{data} = format_count * { u32:mipmap_size, mipmap_size * { u8 } } +* "mipmap_size" is the number of bytes in that mip level. For compressed +textures this is the size of the texture data compressed with DXT1. For 24 bit +uncompressed textures, this is 3 * width * height. Following this are the image +bytes for that mipmap level. + +Note: All data is stored in little-Endian (Intel) byte order. +""" + +import struct +from io import BytesIO + +from . import Image, ImageFile + +MAGIC = b"FTEX" +FORMAT_DXT1 = 0 +FORMAT_UNCOMPRESSED = 1 + + +class FtexImageFile(ImageFile.ImageFile): + format = "FTEX" + format_description = "Texture File Format (IW2:EOC)" + + def _open(self): + struct.unpack("= 8 and i32(prefix[:4]) >= 20 and i32(prefix[4:8]) in (1, 2) + + +## +# Image plugin for the GIMP brush format. + + +class GbrImageFile(ImageFile.ImageFile): + + format = "GBR" + format_description = "GIMP brush file" + + def _open(self): + header_size = i32(self.fp.read(4)) + version = i32(self.fp.read(4)) + if header_size < 20: + raise SyntaxError("not a GIMP brush") + if version not in (1, 2): + raise SyntaxError("Unsupported GIMP brush version: %s" % version) + + width = i32(self.fp.read(4)) + height = i32(self.fp.read(4)) + color_depth = i32(self.fp.read(4)) + if width <= 0 or height <= 0: + raise SyntaxError("not a GIMP brush") + if color_depth not in (1, 4): + raise SyntaxError("Unsupported GIMP brush color depth: %s" % color_depth) + + if version == 1: + comment_length = header_size - 20 + else: + comment_length = header_size - 28 + magic_number = self.fp.read(4) + if magic_number != b"GIMP": + raise SyntaxError("not a GIMP brush, bad magic number") + self.info["spacing"] = i32(self.fp.read(4)) + + comment = self.fp.read(comment_length)[:-1] + + if color_depth == 1: + self.mode = "L" + else: + self.mode = "RGBA" + + self._size = width, height + + self.info["comment"] = comment + + # Image might not be small + Image._decompression_bomb_check(self.size) + + # Data is an uncompressed block of w * h * bytes/pixel + self._data_size = width * height * color_depth + + def load(self): + if self.im: + # Already loaded + return + + self.im = Image.core.new(self.mode, self.size) + self.frombytes(self.fp.read(self._data_size)) + + +# +# registry + + +Image.register_open(GbrImageFile.format, GbrImageFile, _accept) +Image.register_extension(GbrImageFile.format, ".gbr") diff --git a/venv/Lib/site-packages/PIL/GdImageFile.py b/venv/Lib/site-packages/PIL/GdImageFile.py new file mode 100644 index 00000000..0c4574f9 --- /dev/null +++ b/venv/Lib/site-packages/PIL/GdImageFile.py @@ -0,0 +1,89 @@ +# +# The Python Imaging Library. +# $Id$ +# +# GD file handling +# +# History: +# 1996-04-12 fl Created +# +# Copyright (c) 1997 by Secret Labs AB. +# Copyright (c) 1996 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + + +""" +.. note:: + This format cannot be automatically recognized, so the + class is not registered for use with :py:func:`PIL.Image.open()`. To open a + gd file, use the :py:func:`PIL.GdImageFile.open()` function instead. + +.. warning:: + THE GD FORMAT IS NOT DESIGNED FOR DATA INTERCHANGE. This + implementation is provided for convenience and demonstrational + purposes only. +""" + + +from . import ImageFile, ImagePalette, UnidentifiedImageError +from ._binary import i8, i16be as i16, i32be as i32 + + +class GdImageFile(ImageFile.ImageFile): + """ + Image plugin for the GD uncompressed format. Note that this format + is not supported by the standard :py:func:`PIL.Image.open()` function. To use + this plugin, you have to import the :py:mod:`PIL.GdImageFile` module and + use the :py:func:`PIL.GdImageFile.open()` function. + """ + + format = "GD" + format_description = "GD uncompressed images" + + def _open(self): + + # Header + s = self.fp.read(1037) + + if not i16(s[:2]) in [65534, 65535]: + raise SyntaxError("Not a valid GD 2.x .gd file") + + self.mode = "L" # FIXME: "P" + self._size = i16(s[2:4]), i16(s[4:6]) + + trueColor = i8(s[6]) + trueColorOffset = 2 if trueColor else 0 + + # transparency index + tindex = i32(s[7 + trueColorOffset : 7 + trueColorOffset + 4]) + if tindex < 256: + self.info["transparency"] = tindex + + self.palette = ImagePalette.raw( + "XBGR", s[7 + trueColorOffset + 4 : 7 + trueColorOffset + 4 + 256 * 4] + ) + + self.tile = [ + ("raw", (0, 0) + self.size, 7 + trueColorOffset + 4 + 256 * 4, ("L", 0, 1)) + ] + + +def open(fp, mode="r"): + """ + Load texture from a GD image file. + + :param filename: GD file name, or an opened file handle. + :param mode: Optional mode. In this version, if the mode argument + is given, it must be "r". + :returns: An image instance. + :raises OSError: If the image could not be read. + """ + if mode != "r": + raise ValueError("bad mode") + + try: + return GdImageFile(fp) + except SyntaxError as e: + raise UnidentifiedImageError("cannot identify this image file") from e diff --git a/venv/Lib/site-packages/PIL/GifImagePlugin.py b/venv/Lib/site-packages/PIL/GifImagePlugin.py new file mode 100644 index 00000000..653051bb --- /dev/null +++ b/venv/Lib/site-packages/PIL/GifImagePlugin.py @@ -0,0 +1,885 @@ +# +# The Python Imaging Library. +# $Id$ +# +# GIF file handling +# +# History: +# 1995-09-01 fl Created +# 1996-12-14 fl Added interlace support +# 1996-12-30 fl Added animation support +# 1997-01-05 fl Added write support, fixed local colour map bug +# 1997-02-23 fl Make sure to load raster data in getdata() +# 1997-07-05 fl Support external decoder (0.4) +# 1998-07-09 fl Handle all modes when saving (0.5) +# 1998-07-15 fl Renamed offset attribute to avoid name clash +# 2001-04-16 fl Added rewind support (seek to frame 0) (0.6) +# 2001-04-17 fl Added palette optimization (0.7) +# 2002-06-06 fl Added transparency support for save (0.8) +# 2004-02-24 fl Disable interlacing for small images +# +# Copyright (c) 1997-2004 by Secret Labs AB +# Copyright (c) 1995-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import itertools +import math +import os +import subprocess + +from . import Image, ImageChops, ImageFile, ImagePalette, ImageSequence +from ._binary import i8, i16le as i16, o8, o16le as o16 + +# -------------------------------------------------------------------- +# Identify/read GIF files + + +def _accept(prefix): + return prefix[:6] in [b"GIF87a", b"GIF89a"] + + +## +# Image plugin for GIF images. This plugin supports both GIF87 and +# GIF89 images. + + +class GifImageFile(ImageFile.ImageFile): + + format = "GIF" + format_description = "Compuserve GIF" + _close_exclusive_fp_after_loading = False + + global_palette = None + + def data(self): + s = self.fp.read(1) + if s and i8(s): + return self.fp.read(i8(s)) + return None + + def _open(self): + + # Screen + s = self.fp.read(13) + if not _accept(s): + raise SyntaxError("not a GIF file") + + self.info["version"] = s[:6] + self._size = i16(s[6:]), i16(s[8:]) + self.tile = [] + flags = i8(s[10]) + bits = (flags & 7) + 1 + + if flags & 128: + # get global palette + self.info["background"] = i8(s[11]) + # check if palette contains colour indices + p = self.fp.read(3 << bits) + for i in range(0, len(p), 3): + if not (i // 3 == i8(p[i]) == i8(p[i + 1]) == i8(p[i + 2])): + p = ImagePalette.raw("RGB", p) + self.global_palette = self.palette = p + break + + self.__fp = self.fp # FIXME: hack + self.__rewind = self.fp.tell() + self._n_frames = None + self._is_animated = None + self._seek(0) # get ready to read first frame + + @property + def n_frames(self): + if self._n_frames is None: + current = self.tell() + try: + while True: + self.seek(self.tell() + 1) + except EOFError: + self._n_frames = self.tell() + 1 + self.seek(current) + return self._n_frames + + @property + def is_animated(self): + if self._is_animated is None: + if self._n_frames is not None: + self._is_animated = self._n_frames != 1 + else: + current = self.tell() + + try: + self.seek(1) + self._is_animated = True + except EOFError: + self._is_animated = False + + self.seek(current) + return self._is_animated + + def seek(self, frame): + if not self._seek_check(frame): + return + if frame < self.__frame: + if frame != 0: + self.im = None + self._seek(0) + + last_frame = self.__frame + for f in range(self.__frame + 1, frame + 1): + try: + self._seek(f) + except EOFError as e: + self.seek(last_frame) + raise EOFError("no more images in GIF file") from e + + def _seek(self, frame): + + if frame == 0: + # rewind + self.__offset = 0 + self.dispose = None + self.dispose_extent = [0, 0, 0, 0] # x0, y0, x1, y1 + self.__frame = -1 + self.__fp.seek(self.__rewind) + self._prev_im = None + self.disposal_method = 0 + else: + # ensure that the previous frame was loaded + if not self.im: + self.load() + + if frame != self.__frame + 1: + raise ValueError("cannot seek to frame %d" % frame) + self.__frame = frame + + self.tile = [] + + self.fp = self.__fp + if self.__offset: + # backup to last frame + self.fp.seek(self.__offset) + while self.data(): + pass + self.__offset = 0 + + if self.dispose: + self.im.paste(self.dispose, self.dispose_extent) + + from copy import copy + + self.palette = copy(self.global_palette) + + info = {} + while True: + + s = self.fp.read(1) + if not s or s == b";": + break + + elif s == b"!": + # + # extensions + # + s = self.fp.read(1) + block = self.data() + if i8(s) == 249: + # + # graphic control extension + # + flags = i8(block[0]) + if flags & 1: + info["transparency"] = i8(block[3]) + info["duration"] = i16(block[1:3]) * 10 + + # disposal method - find the value of bits 4 - 6 + dispose_bits = 0b00011100 & flags + dispose_bits = dispose_bits >> 2 + if dispose_bits: + # only set the dispose if it is not + # unspecified. I'm not sure if this is + # correct, but it seems to prevent the last + # frame from looking odd for some animations + self.disposal_method = dispose_bits + elif i8(s) == 254: + # + # comment extension + # + while block: + if "comment" in info: + info["comment"] += block + else: + info["comment"] = block + block = self.data() + continue + elif i8(s) == 255: + # + # application extension + # + info["extension"] = block, self.fp.tell() + if block[:11] == b"NETSCAPE2.0": + block = self.data() + if len(block) >= 3 and i8(block[0]) == 1: + info["loop"] = i16(block[1:3]) + while self.data(): + pass + + elif s == b",": + # + # local image + # + s = self.fp.read(9) + + # extent + x0, y0 = i16(s[0:]), i16(s[2:]) + x1, y1 = x0 + i16(s[4:]), y0 + i16(s[6:]) + if x1 > self.size[0] or y1 > self.size[1]: + self._size = max(x1, self.size[0]), max(y1, self.size[1]) + self.dispose_extent = x0, y0, x1, y1 + flags = i8(s[8]) + + interlace = (flags & 64) != 0 + + if flags & 128: + bits = (flags & 7) + 1 + self.palette = ImagePalette.raw("RGB", self.fp.read(3 << bits)) + + # image data + bits = i8(self.fp.read(1)) + self.__offset = self.fp.tell() + self.tile = [ + ("gif", (x0, y0, x1, y1), self.__offset, (bits, interlace)) + ] + break + + else: + pass + # raise OSError, "illegal GIF tag `%x`" % i8(s) + + try: + if self.disposal_method < 2: + # do not dispose or none specified + self.dispose = None + elif self.disposal_method == 2: + # replace with background colour + Image._decompression_bomb_check(self.size) + self.dispose = Image.core.fill("P", self.size, self.info["background"]) + else: + # replace with previous contents + if self.im: + self.dispose = self.im.copy() + + # only dispose the extent in this frame + if self.dispose: + self.dispose = self._crop(self.dispose, self.dispose_extent) + except (AttributeError, KeyError): + pass + + if not self.tile: + # self.__fp = None + raise EOFError + + for k in ["transparency", "duration", "comment", "extension", "loop"]: + if k in info: + self.info[k] = info[k] + elif k in self.info: + del self.info[k] + + self.mode = "L" + if self.palette: + self.mode = "P" + + def tell(self): + return self.__frame + + def load_end(self): + ImageFile.ImageFile.load_end(self) + + # if the disposal method is 'do not dispose', transparent + # pixels should show the content of the previous frame + if self._prev_im and self.disposal_method == 1: + # we do this by pasting the updated area onto the previous + # frame which we then use as the current image content + updated = self._crop(self.im, self.dispose_extent) + self._prev_im.paste(updated, self.dispose_extent, updated.convert("RGBA")) + self.im = self._prev_im + self._prev_im = self.im.copy() + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +# -------------------------------------------------------------------- +# Write GIF files + + +RAWMODE = {"1": "L", "L": "L", "P": "P"} + + +def _normalize_mode(im, initial_call=False): + """ + Takes an image (or frame), returns an image in a mode that is appropriate + for saving in a Gif. + + It may return the original image, or it may return an image converted to + palette or 'L' mode. + + UNDONE: What is the point of mucking with the initial call palette, for + an image that shouldn't have a palette, or it would be a mode 'P' and + get returned in the RAWMODE clause. + + :param im: Image object + :param initial_call: Default false, set to true for a single frame. + :returns: Image object + """ + if im.mode in RAWMODE: + im.load() + return im + if Image.getmodebase(im.mode) == "RGB": + if initial_call: + palette_size = 256 + if im.palette: + palette_size = len(im.palette.getdata()[1]) // 3 + return im.convert("P", palette=Image.ADAPTIVE, colors=palette_size) + else: + return im.convert("P") + return im.convert("L") + + +def _normalize_palette(im, palette, info): + """ + Normalizes the palette for image. + - Sets the palette to the incoming palette, if provided. + - Ensures that there's a palette for L mode images + - Optimizes the palette if necessary/desired. + + :param im: Image object + :param palette: bytes object containing the source palette, or .... + :param info: encoderinfo + :returns: Image object + """ + source_palette = None + if palette: + # a bytes palette + if isinstance(palette, (bytes, bytearray, list)): + source_palette = bytearray(palette[:768]) + if isinstance(palette, ImagePalette.ImagePalette): + source_palette = bytearray( + itertools.chain.from_iterable( + zip( + palette.palette[:256], + palette.palette[256:512], + palette.palette[512:768], + ) + ) + ) + + if im.mode == "P": + if not source_palette: + source_palette = im.im.getpalette("RGB")[:768] + else: # L-mode + if not source_palette: + source_palette = bytearray(i // 3 for i in range(768)) + im.palette = ImagePalette.ImagePalette("RGB", palette=source_palette) + + used_palette_colors = _get_optimize(im, info) + if used_palette_colors is not None: + return im.remap_palette(used_palette_colors, source_palette) + + im.palette.palette = source_palette + return im + + +def _write_single_frame(im, fp, palette): + im_out = _normalize_mode(im, True) + for k, v in im_out.info.items(): + im.encoderinfo.setdefault(k, v) + im_out = _normalize_palette(im_out, palette, im.encoderinfo) + + for s in _get_global_header(im_out, im.encoderinfo): + fp.write(s) + + # local image header + flags = 0 + if get_interlace(im): + flags = flags | 64 + _write_local_header(fp, im, (0, 0), flags) + + im_out.encoderconfig = (8, get_interlace(im)) + ImageFile._save(im_out, fp, [("gif", (0, 0) + im.size, 0, RAWMODE[im_out.mode])]) + + fp.write(b"\0") # end of image data + + +def _write_multiple_frames(im, fp, palette): + + duration = im.encoderinfo.get("duration", im.info.get("duration")) + disposal = im.encoderinfo.get("disposal", im.info.get("disposal")) + + im_frames = [] + frame_count = 0 + background_im = None + for imSequence in itertools.chain([im], im.encoderinfo.get("append_images", [])): + for im_frame in ImageSequence.Iterator(imSequence): + # a copy is required here since seek can still mutate the image + im_frame = _normalize_mode(im_frame.copy()) + if frame_count == 0: + for k, v in im_frame.info.items(): + im.encoderinfo.setdefault(k, v) + im_frame = _normalize_palette(im_frame, palette, im.encoderinfo) + + encoderinfo = im.encoderinfo.copy() + if isinstance(duration, (list, tuple)): + encoderinfo["duration"] = duration[frame_count] + if isinstance(disposal, (list, tuple)): + encoderinfo["disposal"] = disposal[frame_count] + frame_count += 1 + + if im_frames: + # delta frame + previous = im_frames[-1] + if encoderinfo.get("disposal") == 2: + if background_im is None: + background = _get_background( + im, + im.encoderinfo.get("background", im.info.get("background")), + ) + background_im = Image.new("P", im_frame.size, background) + background_im.putpalette(im_frames[0]["im"].palette) + base_im = background_im + else: + base_im = previous["im"] + if _get_palette_bytes(im_frame) == _get_palette_bytes(base_im): + delta = ImageChops.subtract_modulo(im_frame, base_im) + else: + delta = ImageChops.subtract_modulo( + im_frame.convert("RGB"), base_im.convert("RGB") + ) + bbox = delta.getbbox() + if not bbox: + # This frame is identical to the previous frame + if duration: + previous["encoderinfo"]["duration"] += encoderinfo["duration"] + continue + else: + bbox = None + im_frames.append({"im": im_frame, "bbox": bbox, "encoderinfo": encoderinfo}) + + if len(im_frames) > 1: + for frame_data in im_frames: + im_frame = frame_data["im"] + if not frame_data["bbox"]: + # global header + for s in _get_global_header(im_frame, frame_data["encoderinfo"]): + fp.write(s) + offset = (0, 0) + else: + # compress difference + frame_data["encoderinfo"]["include_color_table"] = True + + im_frame = im_frame.crop(frame_data["bbox"]) + offset = frame_data["bbox"][:2] + _write_frame_data(fp, im_frame, offset, frame_data["encoderinfo"]) + return True + elif "duration" in im.encoderinfo and isinstance( + im.encoderinfo["duration"], (list, tuple) + ): + # Since multiple frames will not be written, add together the frame durations + im.encoderinfo["duration"] = sum(im.encoderinfo["duration"]) + + +def _save_all(im, fp, filename): + _save(im, fp, filename, save_all=True) + + +def _save(im, fp, filename, save_all=False): + # header + if "palette" in im.encoderinfo or "palette" in im.info: + palette = im.encoderinfo.get("palette", im.info.get("palette")) + else: + palette = None + im.encoderinfo["optimize"] = im.encoderinfo.get("optimize", True) + + if not save_all or not _write_multiple_frames(im, fp, palette): + _write_single_frame(im, fp, palette) + + fp.write(b";") # end of file + + if hasattr(fp, "flush"): + fp.flush() + + +def get_interlace(im): + interlace = im.encoderinfo.get("interlace", 1) + + # workaround for @PIL153 + if min(im.size) < 16: + interlace = 0 + + return interlace + + +def _write_local_header(fp, im, offset, flags): + transparent_color_exists = False + try: + transparency = im.encoderinfo["transparency"] + except KeyError: + pass + else: + transparency = int(transparency) + # optimize the block away if transparent color is not used + transparent_color_exists = True + + used_palette_colors = _get_optimize(im, im.encoderinfo) + if used_palette_colors is not None: + # adjust the transparency index after optimize + try: + transparency = used_palette_colors.index(transparency) + except ValueError: + transparent_color_exists = False + + if "duration" in im.encoderinfo: + duration = int(im.encoderinfo["duration"] / 10) + else: + duration = 0 + + disposal = int(im.encoderinfo.get("disposal", 0)) + + if transparent_color_exists or duration != 0 or disposal: + packed_flag = 1 if transparent_color_exists else 0 + packed_flag |= disposal << 2 + if not transparent_color_exists: + transparency = 0 + + fp.write( + b"!" + + o8(249) # extension intro + + o8(4) # length + + o8(packed_flag) # packed fields + + o16(duration) # duration + + o8(transparency) # transparency index + + o8(0) + ) + + if "comment" in im.encoderinfo and 1 <= len(im.encoderinfo["comment"]): + fp.write(b"!" + o8(254)) # extension intro + comment = im.encoderinfo["comment"] + if isinstance(comment, str): + comment = comment.encode() + for i in range(0, len(comment), 255): + subblock = comment[i : i + 255] + fp.write(o8(len(subblock)) + subblock) + fp.write(o8(0)) + if "loop" in im.encoderinfo: + number_of_loops = im.encoderinfo["loop"] + fp.write( + b"!" + + o8(255) # extension intro + + o8(11) + + b"NETSCAPE2.0" + + o8(3) + + o8(1) + + o16(number_of_loops) # number of loops + + o8(0) + ) + include_color_table = im.encoderinfo.get("include_color_table") + if include_color_table: + palette_bytes = _get_palette_bytes(im) + color_table_size = _get_color_table_size(palette_bytes) + if color_table_size: + flags = flags | 128 # local color table flag + flags = flags | color_table_size + + fp.write( + b"," + + o16(offset[0]) # offset + + o16(offset[1]) + + o16(im.size[0]) # size + + o16(im.size[1]) + + o8(flags) # flags + ) + if include_color_table and color_table_size: + fp.write(_get_header_palette(palette_bytes)) + fp.write(o8(8)) # bits + + +def _save_netpbm(im, fp, filename): + + # Unused by default. + # To use, uncomment the register_save call at the end of the file. + # + # If you need real GIF compression and/or RGB quantization, you + # can use the external NETPBM/PBMPLUS utilities. See comments + # below for information on how to enable this. + tempfile = im._dump() + + try: + with open(filename, "wb") as f: + if im.mode != "RGB": + subprocess.check_call( + ["ppmtogif", tempfile], stdout=f, stderr=subprocess.DEVNULL + ) + else: + # Pipe ppmquant output into ppmtogif + # "ppmquant 256 %s | ppmtogif > %s" % (tempfile, filename) + quant_cmd = ["ppmquant", "256", tempfile] + togif_cmd = ["ppmtogif"] + quant_proc = subprocess.Popen( + quant_cmd, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL + ) + togif_proc = subprocess.Popen( + togif_cmd, + stdin=quant_proc.stdout, + stdout=f, + stderr=subprocess.DEVNULL, + ) + + # Allow ppmquant to receive SIGPIPE if ppmtogif exits + quant_proc.stdout.close() + + retcode = quant_proc.wait() + if retcode: + raise subprocess.CalledProcessError(retcode, quant_cmd) + + retcode = togif_proc.wait() + if retcode: + raise subprocess.CalledProcessError(retcode, togif_cmd) + finally: + try: + os.unlink(tempfile) + except OSError: + pass + + +# Force optimization so that we can test performance against +# cases where it took lots of memory and time previously. +_FORCE_OPTIMIZE = False + + +def _get_optimize(im, info): + """ + Palette optimization is a potentially expensive operation. + + This function determines if the palette should be optimized using + some heuristics, then returns the list of palette entries in use. + + :param im: Image object + :param info: encoderinfo + :returns: list of indexes of palette entries in use, or None + """ + if im.mode in ("P", "L") and info and info.get("optimize", 0): + # Potentially expensive operation. + + # The palette saves 3 bytes per color not used, but palette + # lengths are restricted to 3*(2**N) bytes. Max saving would + # be 768 -> 6 bytes if we went all the way down to 2 colors. + # * If we're over 128 colors, we can't save any space. + # * If there aren't any holes, it's not worth collapsing. + # * If we have a 'large' image, the palette is in the noise. + + # create the new palette if not every color is used + optimise = _FORCE_OPTIMIZE or im.mode == "L" + if optimise or im.width * im.height < 512 * 512: + # check which colors are used + used_palette_colors = [] + for i, count in enumerate(im.histogram()): + if count: + used_palette_colors.append(i) + + if optimise or ( + len(used_palette_colors) <= 128 + and max(used_palette_colors) > len(used_palette_colors) + ): + return used_palette_colors + + +def _get_color_table_size(palette_bytes): + # calculate the palette size for the header + if not palette_bytes: + return 0 + elif len(palette_bytes) < 9: + return 1 + else: + return math.ceil(math.log(len(palette_bytes) // 3, 2)) - 1 + + +def _get_header_palette(palette_bytes): + """ + Returns the palette, null padded to the next power of 2 (*3) bytes + suitable for direct inclusion in the GIF header + + :param palette_bytes: Unpadded palette bytes, in RGBRGB form + :returns: Null padded palette + """ + color_table_size = _get_color_table_size(palette_bytes) + + # add the missing amount of bytes + # the palette has to be 2< 0: + palette_bytes += o8(0) * 3 * actual_target_size_diff + return palette_bytes + + +def _get_palette_bytes(im): + """ + Gets the palette for inclusion in the gif header + + :param im: Image object + :returns: Bytes, len<=768 suitable for inclusion in gif header + """ + return im.palette.palette + + +def _get_background(im, infoBackground): + background = 0 + if infoBackground: + background = infoBackground + if isinstance(background, tuple): + # WebPImagePlugin stores an RGBA value in info["background"] + # So it must be converted to the same format as GifImagePlugin's + # info["background"] - a global color table index + background = im.palette.getcolor(background) + return background + + +def _get_global_header(im, info): + """Return a list of strings representing a GIF header""" + + # Header Block + # http://www.matthewflickinger.com/lab/whatsinagif/bits_and_bytes.asp + + version = b"87a" + for extensionKey in ["transparency", "duration", "loop", "comment"]: + if info and extensionKey in info: + if (extensionKey == "duration" and info[extensionKey] == 0) or ( + extensionKey == "comment" and not (1 <= len(info[extensionKey]) <= 255) + ): + continue + version = b"89a" + break + else: + if im.info.get("version") == b"89a": + version = b"89a" + + background = _get_background(im, info.get("background")) + + palette_bytes = _get_palette_bytes(im) + color_table_size = _get_color_table_size(palette_bytes) + + return [ + b"GIF" # signature + + version # version + + o16(im.size[0]) # canvas width + + o16(im.size[1]), # canvas height + # Logical Screen Descriptor + # size of global color table + global color table flag + o8(color_table_size + 128), # packed fields + # background + reserved/aspect + o8(background) + o8(0), + # Global Color Table + _get_header_palette(palette_bytes), + ] + + +def _write_frame_data(fp, im_frame, offset, params): + try: + im_frame.encoderinfo = params + + # local image header + _write_local_header(fp, im_frame, offset, 0) + + ImageFile._save( + im_frame, fp, [("gif", (0, 0) + im_frame.size, 0, RAWMODE[im_frame.mode])] + ) + + fp.write(b"\0") # end of image data + finally: + del im_frame.encoderinfo + + +# -------------------------------------------------------------------- +# Legacy GIF utilities + + +def getheader(im, palette=None, info=None): + """ + Legacy Method to get Gif data from image. + + Warning:: May modify image data. + + :param im: Image object + :param palette: bytes object containing the source palette, or .... + :param info: encoderinfo + :returns: tuple of(list of header items, optimized palette) + + """ + used_palette_colors = _get_optimize(im, info) + + if info is None: + info = {} + + if "background" not in info and "background" in im.info: + info["background"] = im.info["background"] + + im_mod = _normalize_palette(im, palette, info) + im.palette = im_mod.palette + im.im = im_mod.im + header = _get_global_header(im, info) + + return header, used_palette_colors + + +# To specify duration, add the time in milliseconds to getdata(), +# e.g. getdata(im_frame, duration=1000) +def getdata(im, offset=(0, 0), **params): + """ + Legacy Method + + Return a list of strings representing this image. + The first string is a local image header, the rest contains + encoded image data. + + :param im: Image object + :param offset: Tuple of (x, y) pixels. Defaults to (0,0) + :param \\**params: E.g. duration or other encoder info parameters + :returns: List of Bytes containing gif encoded frame data + + """ + + class Collector: + data = [] + + def write(self, data): + self.data.append(data) + + im.load() # make sure raster data is available + + fp = Collector() + + _write_frame_data(fp, im, offset, params) + + return fp.data + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(GifImageFile.format, GifImageFile, _accept) +Image.register_save(GifImageFile.format, _save) +Image.register_save_all(GifImageFile.format, _save_all) +Image.register_extension(GifImageFile.format, ".gif") +Image.register_mime(GifImageFile.format, "image/gif") + +# +# Uncomment the following line if you wish to use NETPBM/PBMPLUS +# instead of the built-in "uncompressed" GIF encoder + +# Image.register_save(GifImageFile.format, _save_netpbm) diff --git a/venv/Lib/site-packages/PIL/GimpGradientFile.py b/venv/Lib/site-packages/PIL/GimpGradientFile.py new file mode 100644 index 00000000..7ab7f999 --- /dev/null +++ b/venv/Lib/site-packages/PIL/GimpGradientFile.py @@ -0,0 +1,140 @@ +# +# Python Imaging Library +# $Id$ +# +# stuff to read (and render) GIMP gradient files +# +# History: +# 97-08-23 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +""" +Stuff to translate curve segments to palette values (derived from +the corresponding code in GIMP, written by Federico Mena Quintero. +See the GIMP distribution for more information.) +""" + + +from math import log, pi, sin, sqrt + +from ._binary import o8 + +EPSILON = 1e-10 +"""""" # Enable auto-doc for data member + + +def linear(middle, pos): + if pos <= middle: + if middle < EPSILON: + return 0.0 + else: + return 0.5 * pos / middle + else: + pos = pos - middle + middle = 1.0 - middle + if middle < EPSILON: + return 1.0 + else: + return 0.5 + 0.5 * pos / middle + + +def curved(middle, pos): + return pos ** (log(0.5) / log(max(middle, EPSILON))) + + +def sine(middle, pos): + return (sin((-pi / 2.0) + pi * linear(middle, pos)) + 1.0) / 2.0 + + +def sphere_increasing(middle, pos): + return sqrt(1.0 - (linear(middle, pos) - 1.0) ** 2) + + +def sphere_decreasing(middle, pos): + return 1.0 - sqrt(1.0 - linear(middle, pos) ** 2) + + +SEGMENTS = [linear, curved, sine, sphere_increasing, sphere_decreasing] +"""""" # Enable auto-doc for data member + + +class GradientFile: + + gradient = None + + def getpalette(self, entries=256): + + palette = [] + + ix = 0 + x0, x1, xm, rgb0, rgb1, segment = self.gradient[ix] + + for i in range(entries): + + x = i / (entries - 1) + + while x1 < x: + ix += 1 + x0, x1, xm, rgb0, rgb1, segment = self.gradient[ix] + + w = x1 - x0 + + if w < EPSILON: + scale = segment(0.5, 0.5) + else: + scale = segment((xm - x0) / w, (x - x0) / w) + + # expand to RGBA + r = o8(int(255 * ((rgb1[0] - rgb0[0]) * scale + rgb0[0]) + 0.5)) + g = o8(int(255 * ((rgb1[1] - rgb0[1]) * scale + rgb0[1]) + 0.5)) + b = o8(int(255 * ((rgb1[2] - rgb0[2]) * scale + rgb0[2]) + 0.5)) + a = o8(int(255 * ((rgb1[3] - rgb0[3]) * scale + rgb0[3]) + 0.5)) + + # add to palette + palette.append(r + g + b + a) + + return b"".join(palette), "RGBA" + + +class GimpGradientFile(GradientFile): + """File handler for GIMP's gradient format.""" + + def __init__(self, fp): + + if fp.readline()[:13] != b"GIMP Gradient": + raise SyntaxError("not a GIMP gradient file") + + line = fp.readline() + + # GIMP 1.2 gradient files don't contain a name, but GIMP 1.3 files do + if line.startswith(b"Name: "): + line = fp.readline().strip() + + count = int(line) + + gradient = [] + + for i in range(count): + + s = fp.readline().split() + w = [float(x) for x in s[:11]] + + x0, x1 = w[0], w[2] + xm = w[1] + rgb0 = w[3:7] + rgb1 = w[7:11] + + segment = SEGMENTS[int(s[11])] + cspace = int(s[12]) + + if cspace != 0: + raise OSError("cannot handle HSV colour space") + + gradient.append((x0, x1, xm, rgb0, rgb1, segment)) + + self.gradient = gradient diff --git a/venv/Lib/site-packages/PIL/GimpPaletteFile.py b/venv/Lib/site-packages/PIL/GimpPaletteFile.py new file mode 100644 index 00000000..10fd3ad8 --- /dev/null +++ b/venv/Lib/site-packages/PIL/GimpPaletteFile.py @@ -0,0 +1,56 @@ +# +# Python Imaging Library +# $Id$ +# +# stuff to read GIMP palette files +# +# History: +# 1997-08-23 fl Created +# 2004-09-07 fl Support GIMP 2.0 palette files. +# +# Copyright (c) Secret Labs AB 1997-2004. All rights reserved. +# Copyright (c) Fredrik Lundh 1997-2004. +# +# See the README file for information on usage and redistribution. +# + +import re + +from ._binary import o8 + + +class GimpPaletteFile: + """File handler for GIMP's palette format.""" + + rawmode = "RGB" + + def __init__(self, fp): + + self.palette = [o8(i) * 3 for i in range(256)] + + if fp.readline()[:12] != b"GIMP Palette": + raise SyntaxError("not a GIMP palette file") + + for i in range(256): + + s = fp.readline() + if not s: + break + + # skip fields and comment lines + if re.match(br"\w+:|#", s): + continue + if len(s) > 100: + raise SyntaxError("bad palette file") + + v = tuple(map(int, s.split()[:3])) + if len(v) != 3: + raise ValueError("bad palette entry") + + self.palette[i] = o8(v[0]) + o8(v[1]) + o8(v[2]) + + self.palette = b"".join(self.palette) + + def getpalette(self): + + return self.palette, self.rawmode diff --git a/venv/Lib/site-packages/PIL/GribStubImagePlugin.py b/venv/Lib/site-packages/PIL/GribStubImagePlugin.py new file mode 100644 index 00000000..515c272f --- /dev/null +++ b/venv/Lib/site-packages/PIL/GribStubImagePlugin.py @@ -0,0 +1,74 @@ +# +# The Python Imaging Library +# $Id$ +# +# GRIB stub adapter +# +# Copyright (c) 1996-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile +from ._binary import i8 + +_handler = None + + +def register_handler(handler): + """ + Install application-specific GRIB image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix): + return prefix[0:4] == b"GRIB" and i8(prefix[7]) == 1 + + +class GribStubImageFile(ImageFile.StubImageFile): + + format = "GRIB" + format_description = "GRIB" + + def _open(self): + + offset = self.fp.tell() + + if not _accept(self.fp.read(8)): + raise SyntaxError("Not a GRIB file") + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self._size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr("_handler", "save"): + raise OSError("GRIB save handler not installed") + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(GribStubImageFile.format, GribStubImageFile, _accept) +Image.register_save(GribStubImageFile.format, _save) + +Image.register_extension(GribStubImageFile.format, ".grib") diff --git a/venv/Lib/site-packages/PIL/Hdf5StubImagePlugin.py b/venv/Lib/site-packages/PIL/Hdf5StubImagePlugin.py new file mode 100644 index 00000000..362f2d39 --- /dev/null +++ b/venv/Lib/site-packages/PIL/Hdf5StubImagePlugin.py @@ -0,0 +1,73 @@ +# +# The Python Imaging Library +# $Id$ +# +# HDF5 stub adapter +# +# Copyright (c) 2000-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler): + """ + Install application-specific HDF5 image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix): + return prefix[:8] == b"\x89HDF\r\n\x1a\n" + + +class HDF5StubImageFile(ImageFile.StubImageFile): + + format = "HDF5" + format_description = "HDF5" + + def _open(self): + + offset = self.fp.tell() + + if not _accept(self.fp.read(8)): + raise SyntaxError("Not an HDF file") + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self._size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr("_handler", "save"): + raise OSError("HDF5 save handler not installed") + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(HDF5StubImageFile.format, HDF5StubImageFile, _accept) +Image.register_save(HDF5StubImageFile.format, _save) + +Image.register_extensions(HDF5StubImageFile.format, [".h5", ".hdf"]) diff --git a/venv/Lib/site-packages/PIL/IcnsImagePlugin.py b/venv/Lib/site-packages/PIL/IcnsImagePlugin.py new file mode 100644 index 00000000..7023855b --- /dev/null +++ b/venv/Lib/site-packages/PIL/IcnsImagePlugin.py @@ -0,0 +1,384 @@ +# +# The Python Imaging Library. +# $Id$ +# +# macOS icns file decoder, based on icns.py by Bob Ippolito. +# +# history: +# 2004-10-09 fl Turned into a PIL plugin; removed 2.3 dependencies. +# +# Copyright (c) 2004 by Bob Ippolito. +# Copyright (c) 2004 by Secret Labs. +# Copyright (c) 2004 by Fredrik Lundh. +# Copyright (c) 2014 by Alastair Houghton. +# +# See the README file for information on usage and redistribution. +# + +import io +import os +import shutil +import struct +import subprocess +import sys +import tempfile + +from PIL import Image, ImageFile, PngImagePlugin, features +from PIL._binary import i8 + +enable_jpeg2k = features.check_codec("jpg_2000") +if enable_jpeg2k: + from PIL import Jpeg2KImagePlugin + +HEADERSIZE = 8 + + +def nextheader(fobj): + return struct.unpack(">4sI", fobj.read(HEADERSIZE)) + + +def read_32t(fobj, start_length, size): + # The 128x128 icon seems to have an extra header for some reason. + (start, length) = start_length + fobj.seek(start) + sig = fobj.read(4) + if sig != b"\x00\x00\x00\x00": + raise SyntaxError("Unknown signature, expecting 0x00000000") + return read_32(fobj, (start + 4, length - 4), size) + + +def read_32(fobj, start_length, size): + """ + Read a 32bit RGB icon resource. Seems to be either uncompressed or + an RLE packbits-like scheme. + """ + (start, length) = start_length + fobj.seek(start) + pixel_size = (size[0] * size[2], size[1] * size[2]) + sizesq = pixel_size[0] * pixel_size[1] + if length == sizesq * 3: + # uncompressed ("RGBRGBGB") + indata = fobj.read(length) + im = Image.frombuffer("RGB", pixel_size, indata, "raw", "RGB", 0, 1) + else: + # decode image + im = Image.new("RGB", pixel_size, None) + for band_ix in range(3): + data = [] + bytesleft = sizesq + while bytesleft > 0: + byte = fobj.read(1) + if not byte: + break + byte = i8(byte) + if byte & 0x80: + blocksize = byte - 125 + byte = fobj.read(1) + for i in range(blocksize): + data.append(byte) + else: + blocksize = byte + 1 + data.append(fobj.read(blocksize)) + bytesleft -= blocksize + if bytesleft <= 0: + break + if bytesleft != 0: + raise SyntaxError("Error reading channel [%r left]" % bytesleft) + band = Image.frombuffer("L", pixel_size, b"".join(data), "raw", "L", 0, 1) + im.im.putband(band.im, band_ix) + return {"RGB": im} + + +def read_mk(fobj, start_length, size): + # Alpha masks seem to be uncompressed + start = start_length[0] + fobj.seek(start) + pixel_size = (size[0] * size[2], size[1] * size[2]) + sizesq = pixel_size[0] * pixel_size[1] + band = Image.frombuffer("L", pixel_size, fobj.read(sizesq), "raw", "L", 0, 1) + return {"A": band} + + +def read_png_or_jpeg2000(fobj, start_length, size): + (start, length) = start_length + fobj.seek(start) + sig = fobj.read(12) + if sig[:8] == b"\x89PNG\x0d\x0a\x1a\x0a": + fobj.seek(start) + im = PngImagePlugin.PngImageFile(fobj) + return {"RGBA": im} + elif ( + sig[:4] == b"\xff\x4f\xff\x51" + or sig[:4] == b"\x0d\x0a\x87\x0a" + or sig == b"\x00\x00\x00\x0cjP \x0d\x0a\x87\x0a" + ): + if not enable_jpeg2k: + raise ValueError( + "Unsupported icon subimage format (rebuild PIL " + "with JPEG 2000 support to fix this)" + ) + # j2k, jpc or j2c + fobj.seek(start) + jp2kstream = fobj.read(length) + f = io.BytesIO(jp2kstream) + im = Jpeg2KImagePlugin.Jpeg2KImageFile(f) + if im.mode != "RGBA": + im = im.convert("RGBA") + return {"RGBA": im} + else: + raise ValueError("Unsupported icon subimage format") + + +class IcnsFile: + + SIZES = { + (512, 512, 2): [(b"ic10", read_png_or_jpeg2000)], + (512, 512, 1): [(b"ic09", read_png_or_jpeg2000)], + (256, 256, 2): [(b"ic14", read_png_or_jpeg2000)], + (256, 256, 1): [(b"ic08", read_png_or_jpeg2000)], + (128, 128, 2): [(b"ic13", read_png_or_jpeg2000)], + (128, 128, 1): [ + (b"ic07", read_png_or_jpeg2000), + (b"it32", read_32t), + (b"t8mk", read_mk), + ], + (64, 64, 1): [(b"icp6", read_png_or_jpeg2000)], + (32, 32, 2): [(b"ic12", read_png_or_jpeg2000)], + (48, 48, 1): [(b"ih32", read_32), (b"h8mk", read_mk)], + (32, 32, 1): [ + (b"icp5", read_png_or_jpeg2000), + (b"il32", read_32), + (b"l8mk", read_mk), + ], + (16, 16, 2): [(b"ic11", read_png_or_jpeg2000)], + (16, 16, 1): [ + (b"icp4", read_png_or_jpeg2000), + (b"is32", read_32), + (b"s8mk", read_mk), + ], + } + + def __init__(self, fobj): + """ + fobj is a file-like object as an icns resource + """ + # signature : (start, length) + self.dct = dct = {} + self.fobj = fobj + sig, filesize = nextheader(fobj) + if sig != b"icns": + raise SyntaxError("not an icns file") + i = HEADERSIZE + while i < filesize: + sig, blocksize = nextheader(fobj) + if blocksize <= 0: + raise SyntaxError("invalid block header") + i += HEADERSIZE + blocksize -= HEADERSIZE + dct[sig] = (i, blocksize) + fobj.seek(blocksize, io.SEEK_CUR) + i += blocksize + + def itersizes(self): + sizes = [] + for size, fmts in self.SIZES.items(): + for (fmt, reader) in fmts: + if fmt in self.dct: + sizes.append(size) + break + return sizes + + def bestsize(self): + sizes = self.itersizes() + if not sizes: + raise SyntaxError("No 32bit icon resources found") + return max(sizes) + + def dataforsize(self, size): + """ + Get an icon resource as {channel: array}. Note that + the arrays are bottom-up like windows bitmaps and will likely + need to be flipped or transposed in some way. + """ + dct = {} + for code, reader in self.SIZES[size]: + desc = self.dct.get(code) + if desc is not None: + dct.update(reader(self.fobj, desc, size)) + return dct + + def getimage(self, size=None): + if size is None: + size = self.bestsize() + if len(size) == 2: + size = (size[0], size[1], 1) + channels = self.dataforsize(size) + + im = channels.get("RGBA", None) + if im: + return im + + im = channels.get("RGB").copy() + try: + im.putalpha(channels["A"]) + except KeyError: + pass + return im + + +## +# Image plugin for Mac OS icons. + + +class IcnsImageFile(ImageFile.ImageFile): + """ + PIL image support for Mac OS .icns files. + Chooses the best resolution, but will possibly load + a different size image if you mutate the size attribute + before calling 'load'. + + The info dictionary has a key 'sizes' that is a list + of sizes that the icns file has. + """ + + format = "ICNS" + format_description = "Mac OS icns resource" + + def _open(self): + self.icns = IcnsFile(self.fp) + self.mode = "RGBA" + self.info["sizes"] = self.icns.itersizes() + self.best_size = self.icns.bestsize() + self.size = ( + self.best_size[0] * self.best_size[2], + self.best_size[1] * self.best_size[2], + ) + + @property + def size(self): + return self._size + + @size.setter + def size(self, value): + info_size = value + if info_size not in self.info["sizes"] and len(info_size) == 2: + info_size = (info_size[0], info_size[1], 1) + if ( + info_size not in self.info["sizes"] + and len(info_size) == 3 + and info_size[2] == 1 + ): + simple_sizes = [ + (size[0] * size[2], size[1] * size[2]) for size in self.info["sizes"] + ] + if value in simple_sizes: + info_size = self.info["sizes"][simple_sizes.index(value)] + if info_size not in self.info["sizes"]: + raise ValueError("This is not one of the allowed sizes of this image") + self._size = value + + def load(self): + if len(self.size) == 3: + self.best_size = self.size + self.size = ( + self.best_size[0] * self.best_size[2], + self.best_size[1] * self.best_size[2], + ) + + Image.Image.load(self) + if self.im and self.im.size == self.size: + # Already loaded + return + self.load_prepare() + # This is likely NOT the best way to do it, but whatever. + im = self.icns.getimage(self.best_size) + + # If this is a PNG or JPEG 2000, it won't be loaded yet + im.load() + + self.im = im.im + self.mode = im.mode + self.size = im.size + self.load_end() + + +def _save(im, fp, filename): + """ + Saves the image as a series of PNG files, + that are then converted to a .icns file + using the macOS command line utility 'iconutil'. + + macOS only. + """ + if hasattr(fp, "flush"): + fp.flush() + + # create the temporary set of pngs + with tempfile.TemporaryDirectory(".iconset") as iconset: + provided_images = { + im.width: im for im in im.encoderinfo.get("append_images", []) + } + last_w = None + second_path = None + for w in [16, 32, 128, 256, 512]: + prefix = "icon_{}x{}".format(w, w) + + first_path = os.path.join(iconset, prefix + ".png") + if last_w == w: + shutil.copyfile(second_path, first_path) + else: + im_w = provided_images.get(w, im.resize((w, w), Image.LANCZOS)) + im_w.save(first_path) + + second_path = os.path.join(iconset, prefix + "@2x.png") + im_w2 = provided_images.get(w * 2, im.resize((w * 2, w * 2), Image.LANCZOS)) + im_w2.save(second_path) + last_w = w * 2 + + # iconutil -c icns -o {} {} + + fp_only = not filename + if fp_only: + f, filename = tempfile.mkstemp(".icns") + os.close(f) + convert_cmd = ["iconutil", "-c", "icns", "-o", filename, iconset] + convert_proc = subprocess.Popen( + convert_cmd, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL + ) + + convert_proc.stdout.close() + + retcode = convert_proc.wait() + + if retcode: + raise subprocess.CalledProcessError(retcode, convert_cmd) + + if fp_only: + with open(filename, "rb") as f: + fp.write(f.read()) + + +Image.register_open(IcnsImageFile.format, IcnsImageFile, lambda x: x[:4] == b"icns") +Image.register_extension(IcnsImageFile.format, ".icns") + +if sys.platform == "darwin": + Image.register_save(IcnsImageFile.format, _save) + + Image.register_mime(IcnsImageFile.format, "image/icns") + + +if __name__ == "__main__": + + if len(sys.argv) < 2: + print("Syntax: python IcnsImagePlugin.py [file]") + sys.exit() + + with open(sys.argv[1], "rb") as fp: + imf = IcnsImageFile(fp) + for size in imf.info["sizes"]: + imf.size = size + imf.save("out-%s-%s-%s.png" % size) + with Image.open(sys.argv[1]) as im: + im.save("out.png") + if sys.platform == "windows": + os.startfile("out.png") diff --git a/venv/Lib/site-packages/PIL/IcoImagePlugin.py b/venv/Lib/site-packages/PIL/IcoImagePlugin.py new file mode 100644 index 00000000..e4a74321 --- /dev/null +++ b/venv/Lib/site-packages/PIL/IcoImagePlugin.py @@ -0,0 +1,324 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Windows Icon support for PIL +# +# History: +# 96-05-27 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + +# This plugin is a refactored version of Win32IconImagePlugin by Bryan Davis +# . +# https://code.google.com/archive/p/casadebender/wikis/Win32IconImagePlugin.wiki +# +# Icon format references: +# * https://en.wikipedia.org/wiki/ICO_(file_format) +# * https://msdn.microsoft.com/en-us/library/ms997538.aspx + + +import struct +import warnings +from io import BytesIO +from math import ceil, log + +from . import BmpImagePlugin, Image, ImageFile, PngImagePlugin +from ._binary import i8, i16le as i16, i32le as i32 + +# +# -------------------------------------------------------------------- + +_MAGIC = b"\0\0\1\0" + + +def _save(im, fp, filename): + fp.write(_MAGIC) # (2+2) + sizes = im.encoderinfo.get( + "sizes", + [(16, 16), (24, 24), (32, 32), (48, 48), (64, 64), (128, 128), (256, 256)], + ) + width, height = im.size + sizes = filter( + lambda x: False + if (x[0] > width or x[1] > height or x[0] > 256 or x[1] > 256) + else True, + sizes, + ) + sizes = list(sizes) + fp.write(struct.pack("=8bpp) + "reserved": i8(s[3]), + "planes": i16(s[4:]), + "bpp": i16(s[6:]), + "size": i32(s[8:]), + "offset": i32(s[12:]), + } + + # See Wikipedia + for j in ("width", "height"): + if not icon_header[j]: + icon_header[j] = 256 + + # See Wikipedia notes about color depth. + # We need this just to differ images with equal sizes + icon_header["color_depth"] = ( + icon_header["bpp"] + or ( + icon_header["nb_color"] != 0 + and ceil(log(icon_header["nb_color"], 2)) + ) + or 256 + ) + + icon_header["dim"] = (icon_header["width"], icon_header["height"]) + icon_header["square"] = icon_header["width"] * icon_header["height"] + + self.entry.append(icon_header) + + self.entry = sorted(self.entry, key=lambda x: x["color_depth"]) + # ICO images are usually squares + # self.entry = sorted(self.entry, key=lambda x: x['width']) + self.entry = sorted(self.entry, key=lambda x: x["square"]) + self.entry.reverse() + + def sizes(self): + """ + Get a list of all available icon sizes and color depths. + """ + return {(h["width"], h["height"]) for h in self.entry} + + def getentryindex(self, size, bpp=False): + for (i, h) in enumerate(self.entry): + if size == h["dim"] and (bpp is False or bpp == h["color_depth"]): + return i + return 0 + + def getimage(self, size, bpp=False): + """ + Get an image from the icon + """ + return self.frame(self.getentryindex(size, bpp)) + + def frame(self, idx): + """ + Get an image from frame idx + """ + + header = self.entry[idx] + + self.buf.seek(header["offset"]) + data = self.buf.read(8) + self.buf.seek(header["offset"]) + + if data[:8] == PngImagePlugin._MAGIC: + # png frame + im = PngImagePlugin.PngImageFile(self.buf) + else: + # XOR + AND mask bmp frame + im = BmpImagePlugin.DibImageFile(self.buf) + Image._decompression_bomb_check(im.size) + + # change tile dimension to only encompass XOR image + im._size = (im.size[0], int(im.size[1] / 2)) + d, e, o, a = im.tile[0] + im.tile[0] = d, (0, 0) + im.size, o, a + + # figure out where AND mask image starts + mode = a[0] + bpp = 8 + for k, v in BmpImagePlugin.BIT2MODE.items(): + if mode == v[1]: + bpp = k + break + + if 32 == bpp: + # 32-bit color depth icon image allows semitransparent areas + # PIL's DIB format ignores transparency bits, recover them. + # The DIB is packed in BGRX byte order where X is the alpha + # channel. + + # Back up to start of bmp data + self.buf.seek(o) + # extract every 4th byte (eg. 3,7,11,15,...) + alpha_bytes = self.buf.read(im.size[0] * im.size[1] * 4)[3::4] + + # convert to an 8bpp grayscale image + mask = Image.frombuffer( + "L", # 8bpp + im.size, # (w, h) + alpha_bytes, # source chars + "raw", # raw decoder + ("L", 0, -1), # 8bpp inverted, unpadded, reversed + ) + else: + # get AND image from end of bitmap + w = im.size[0] + if (w % 32) > 0: + # bitmap row data is aligned to word boundaries + w += 32 - (im.size[0] % 32) + + # the total mask data is + # padded row size * height / bits per char + + and_mask_offset = o + int(im.size[0] * im.size[1] * (bpp / 8.0)) + total_bytes = int((w * im.size[1]) / 8) + + self.buf.seek(and_mask_offset) + mask_data = self.buf.read(total_bytes) + + # convert raw data to image + mask = Image.frombuffer( + "1", # 1 bpp + im.size, # (w, h) + mask_data, # source chars + "raw", # raw decoder + ("1;I", int(w / 8), -1), # 1bpp inverted, padded, reversed + ) + + # now we have two images, im is XOR image and mask is AND image + + # apply mask image as alpha channel + im = im.convert("RGBA") + im.putalpha(mask) + + return im + + +## +# Image plugin for Windows Icon files. + + +class IcoImageFile(ImageFile.ImageFile): + """ + PIL read-only image support for Microsoft Windows .ico files. + + By default the largest resolution image in the file will be loaded. This + can be changed by altering the 'size' attribute before calling 'load'. + + The info dictionary has a key 'sizes' that is a list of the sizes available + in the icon file. + + Handles classic, XP and Vista icon formats. + + When saving, PNG compression is used. Support for this was only added in + Windows Vista. + + This plugin is a refactored version of Win32IconImagePlugin by Bryan Davis + . + https://code.google.com/archive/p/casadebender/wikis/Win32IconImagePlugin.wiki + """ + + format = "ICO" + format_description = "Windows Icon" + + def _open(self): + self.ico = IcoFile(self.fp) + self.info["sizes"] = self.ico.sizes() + self.size = self.ico.entry[0]["dim"] + self.load() + + @property + def size(self): + return self._size + + @size.setter + def size(self, value): + if value not in self.info["sizes"]: + raise ValueError("This is not one of the allowed sizes of this image") + self._size = value + + def load(self): + if self.im and self.im.size == self.size: + # Already loaded + return + im = self.ico.getimage(self.size) + # if tile is PNG, it won't really be loaded yet + im.load() + self.im = im.im + self.mode = im.mode + if im.size != self.size: + warnings.warn("Image was not the expected size") + + index = self.ico.getentryindex(self.size) + sizes = list(self.info["sizes"]) + sizes[index] = im.size + self.info["sizes"] = set(sizes) + + self.size = im.size + + def load_seek(self): + # Flag the ImageFile.Parser so that it + # just does all the decode at the end. + pass + + +# +# -------------------------------------------------------------------- + + +Image.register_open(IcoImageFile.format, IcoImageFile, _accept) +Image.register_save(IcoImageFile.format, _save) +Image.register_extension(IcoImageFile.format, ".ico") + +Image.register_mime(IcoImageFile.format, "image/x-icon") diff --git a/venv/Lib/site-packages/PIL/ImImagePlugin.py b/venv/Lib/site-packages/PIL/ImImagePlugin.py new file mode 100644 index 00000000..d940899b --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImImagePlugin.py @@ -0,0 +1,377 @@ +# +# The Python Imaging Library. +# $Id$ +# +# IFUNC IM file handling for PIL +# +# history: +# 1995-09-01 fl Created. +# 1997-01-03 fl Save palette images +# 1997-01-08 fl Added sequence support +# 1997-01-23 fl Added P and RGB save support +# 1997-05-31 fl Read floating point images +# 1997-06-22 fl Save floating point images +# 1997-08-27 fl Read and save 1-bit images +# 1998-06-25 fl Added support for RGB+LUT images +# 1998-07-02 fl Added support for YCC images +# 1998-07-15 fl Renamed offset attribute to avoid name clash +# 1998-12-29 fl Added I;16 support +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.7) +# 2003-09-26 fl Added LA/PA support +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2001 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + + +import os +import re + +from . import Image, ImageFile, ImagePalette +from ._binary import i8 + +# -------------------------------------------------------------------- +# Standard tags + +COMMENT = "Comment" +DATE = "Date" +EQUIPMENT = "Digitalization equipment" +FRAMES = "File size (no of images)" +LUT = "Lut" +NAME = "Name" +SCALE = "Scale (x,y)" +SIZE = "Image size (x*y)" +MODE = "Image type" + +TAGS = { + COMMENT: 0, + DATE: 0, + EQUIPMENT: 0, + FRAMES: 0, + LUT: 0, + NAME: 0, + SCALE: 0, + SIZE: 0, + MODE: 0, +} + +OPEN = { + # ifunc93/p3cfunc formats + "0 1 image": ("1", "1"), + "L 1 image": ("1", "1"), + "Greyscale image": ("L", "L"), + "Grayscale image": ("L", "L"), + "RGB image": ("RGB", "RGB;L"), + "RLB image": ("RGB", "RLB"), + "RYB image": ("RGB", "RLB"), + "B1 image": ("1", "1"), + "B2 image": ("P", "P;2"), + "B4 image": ("P", "P;4"), + "X 24 image": ("RGB", "RGB"), + "L 32 S image": ("I", "I;32"), + "L 32 F image": ("F", "F;32"), + # old p3cfunc formats + "RGB3 image": ("RGB", "RGB;T"), + "RYB3 image": ("RGB", "RYB;T"), + # extensions + "LA image": ("LA", "LA;L"), + "PA image": ("LA", "PA;L"), + "RGBA image": ("RGBA", "RGBA;L"), + "RGBX image": ("RGBX", "RGBX;L"), + "CMYK image": ("CMYK", "CMYK;L"), + "YCC image": ("YCbCr", "YCbCr;L"), +} + +# ifunc95 extensions +for i in ["8", "8S", "16", "16S", "32", "32F"]: + OPEN["L %s image" % i] = ("F", "F;%s" % i) + OPEN["L*%s image" % i] = ("F", "F;%s" % i) +for i in ["16", "16L", "16B"]: + OPEN["L %s image" % i] = ("I;%s" % i, "I;%s" % i) + OPEN["L*%s image" % i] = ("I;%s" % i, "I;%s" % i) +for i in ["32S"]: + OPEN["L %s image" % i] = ("I", "I;%s" % i) + OPEN["L*%s image" % i] = ("I", "I;%s" % i) +for i in range(2, 33): + OPEN["L*%s image" % i] = ("F", "F;%s" % i) + + +# -------------------------------------------------------------------- +# Read IM directory + +split = re.compile(br"^([A-Za-z][^:]*):[ \t]*(.*)[ \t]*$") + + +def number(s): + try: + return int(s) + except ValueError: + return float(s) + + +## +# Image plugin for the IFUNC IM file format. + + +class ImImageFile(ImageFile.ImageFile): + + format = "IM" + format_description = "IFUNC Image Memory" + _close_exclusive_fp_after_loading = False + + def _open(self): + + # Quick rejection: if there's not an LF among the first + # 100 bytes, this is (probably) not a text header. + + if b"\n" not in self.fp.read(100): + raise SyntaxError("not an IM file") + self.fp.seek(0) + + n = 0 + + # Default values + self.info[MODE] = "L" + self.info[SIZE] = (512, 512) + self.info[FRAMES] = 1 + + self.rawmode = "L" + + while True: + + s = self.fp.read(1) + + # Some versions of IFUNC uses \n\r instead of \r\n... + if s == b"\r": + continue + + if not s or s == b"\0" or s == b"\x1A": + break + + # FIXME: this may read whole file if not a text file + s = s + self.fp.readline() + + if len(s) > 100: + raise SyntaxError("not an IM file") + + if s[-2:] == b"\r\n": + s = s[:-2] + elif s[-1:] == b"\n": + s = s[:-1] + + try: + m = split.match(s) + except re.error as e: + raise SyntaxError("not an IM file") from e + + if m: + + k, v = m.group(1, 2) + + # Don't know if this is the correct encoding, + # but a decent guess (I guess) + k = k.decode("latin-1", "replace") + v = v.decode("latin-1", "replace") + + # Convert value as appropriate + if k in [FRAMES, SCALE, SIZE]: + v = v.replace("*", ",") + v = tuple(map(number, v.split(","))) + if len(v) == 1: + v = v[0] + elif k == MODE and v in OPEN: + v, self.rawmode = OPEN[v] + + # Add to dictionary. Note that COMMENT tags are + # combined into a list of strings. + if k == COMMENT: + if k in self.info: + self.info[k].append(v) + else: + self.info[k] = [v] + else: + self.info[k] = v + + if k in TAGS: + n += 1 + + else: + + raise SyntaxError( + "Syntax error in IM header: " + s.decode("ascii", "replace") + ) + + if not n: + raise SyntaxError("Not an IM file") + + # Basic attributes + self._size = self.info[SIZE] + self.mode = self.info[MODE] + + # Skip forward to start of image data + while s and s[0:1] != b"\x1A": + s = self.fp.read(1) + if not s: + raise SyntaxError("File truncated") + + if LUT in self.info: + # convert lookup table to palette or lut attribute + palette = self.fp.read(768) + greyscale = 1 # greyscale palette + linear = 1 # linear greyscale palette + for i in range(256): + if palette[i] == palette[i + 256] == palette[i + 512]: + if i8(palette[i]) != i: + linear = 0 + else: + greyscale = 0 + if self.mode in ["L", "LA", "P", "PA"]: + if greyscale: + if not linear: + self.lut = [i8(c) for c in palette[:256]] + else: + if self.mode in ["L", "P"]: + self.mode = self.rawmode = "P" + elif self.mode in ["LA", "PA"]: + self.mode = "PA" + self.rawmode = "PA;L" + self.palette = ImagePalette.raw("RGB;L", palette) + elif self.mode == "RGB": + if not greyscale or not linear: + self.lut = [i8(c) for c in palette] + + self.frame = 0 + + self.__offset = offs = self.fp.tell() + + self.__fp = self.fp # FIXME: hack + + if self.rawmode[:2] == "F;": + + # ifunc95 formats + try: + # use bit decoder (if necessary) + bits = int(self.rawmode[2:]) + if bits not in [8, 16, 32]: + self.tile = [("bit", (0, 0) + self.size, offs, (bits, 8, 3, 0, -1))] + return + except ValueError: + pass + + if self.rawmode in ["RGB;T", "RYB;T"]: + # Old LabEye/3PC files. Would be very surprised if anyone + # ever stumbled upon such a file ;-) + size = self.size[0] * self.size[1] + self.tile = [ + ("raw", (0, 0) + self.size, offs, ("G", 0, -1)), + ("raw", (0, 0) + self.size, offs + size, ("R", 0, -1)), + ("raw", (0, 0) + self.size, offs + 2 * size, ("B", 0, -1)), + ] + else: + # LabEye/IFUNC files + self.tile = [("raw", (0, 0) + self.size, offs, (self.rawmode, 0, -1))] + + @property + def n_frames(self): + return self.info[FRAMES] + + @property + def is_animated(self): + return self.info[FRAMES] > 1 + + def seek(self, frame): + if not self._seek_check(frame): + return + + self.frame = frame + + if self.mode == "1": + bits = 1 + else: + bits = 8 * len(self.mode) + + size = ((self.size[0] * bits + 7) // 8) * self.size[1] + offs = self.__offset + frame * size + + self.fp = self.__fp + + self.tile = [("raw", (0, 0) + self.size, offs, (self.rawmode, 0, -1))] + + def tell(self): + return self.frame + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +# +# -------------------------------------------------------------------- +# Save IM files + + +SAVE = { + # mode: (im type, raw mode) + "1": ("0 1", "1"), + "L": ("Greyscale", "L"), + "LA": ("LA", "LA;L"), + "P": ("Greyscale", "P"), + "PA": ("LA", "PA;L"), + "I": ("L 32S", "I;32S"), + "I;16": ("L 16", "I;16"), + "I;16L": ("L 16L", "I;16L"), + "I;16B": ("L 16B", "I;16B"), + "F": ("L 32F", "F;32F"), + "RGB": ("RGB", "RGB;L"), + "RGBA": ("RGBA", "RGBA;L"), + "RGBX": ("RGBX", "RGBX;L"), + "CMYK": ("CMYK", "CMYK;L"), + "YCbCr": ("YCC", "YCbCr;L"), +} + + +def _save(im, fp, filename): + + try: + image_type, rawmode = SAVE[im.mode] + except KeyError as e: + raise ValueError("Cannot save %s images as IM" % im.mode) from e + + frames = im.encoderinfo.get("frames", 1) + + fp.write(("Image type: %s image\r\n" % image_type).encode("ascii")) + if filename: + # Each line must be 100 characters or less, + # or: SyntaxError("not an IM file") + # 8 characters are used for "Name: " and "\r\n" + # Keep just the filename, ditch the potentially overlong path + name, ext = os.path.splitext(os.path.basename(filename)) + name = "".join([name[: 92 - len(ext)], ext]) + + fp.write(("Name: %s\r\n" % name).encode("ascii")) + fp.write(("Image size (x*y): %d*%d\r\n" % im.size).encode("ascii")) + fp.write(("File size (no of images): %d\r\n" % frames).encode("ascii")) + if im.mode in ["P", "PA"]: + fp.write(b"Lut: 1\r\n") + fp.write(b"\000" * (511 - fp.tell()) + b"\032") + if im.mode in ["P", "PA"]: + fp.write(im.im.getpalette("RGB", "RGB;L")) # 768 bytes + ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, 0, -1))]) + + +# +# -------------------------------------------------------------------- +# Registry + + +Image.register_open(ImImageFile.format, ImImageFile) +Image.register_save(ImImageFile.format, _save) + +Image.register_extension(ImImageFile.format, ".im") diff --git a/venv/Lib/site-packages/PIL/Image.py b/venv/Lib/site-packages/PIL/Image.py new file mode 100644 index 00000000..c1419744 --- /dev/null +++ b/venv/Lib/site-packages/PIL/Image.py @@ -0,0 +1,3462 @@ +# +# The Python Imaging Library. +# $Id$ +# +# the Image class wrapper +# +# partial release history: +# 1995-09-09 fl Created +# 1996-03-11 fl PIL release 0.0 (proof of concept) +# 1996-04-30 fl PIL release 0.1b1 +# 1999-07-28 fl PIL release 1.0 final +# 2000-06-07 fl PIL release 1.1 +# 2000-10-20 fl PIL release 1.1.1 +# 2001-05-07 fl PIL release 1.1.2 +# 2002-03-15 fl PIL release 1.1.3 +# 2003-05-10 fl PIL release 1.1.4 +# 2005-03-28 fl PIL release 1.1.5 +# 2006-12-02 fl PIL release 1.1.6 +# 2009-11-15 fl PIL release 1.1.7 +# +# Copyright (c) 1997-2009 by Secret Labs AB. All rights reserved. +# Copyright (c) 1995-2009 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +import atexit +import builtins +import io +import logging +import math +import numbers +import os +import struct +import sys +import tempfile +import warnings +import xml.etree.ElementTree +from collections.abc import Callable, MutableMapping +from pathlib import Path + +# VERSION was removed in Pillow 6.0.0. +# PILLOW_VERSION is deprecated and will be removed in a future release. +# Use __version__ instead. +from . import ( + ImageMode, + TiffTags, + UnidentifiedImageError, + __version__, + _plugins, + _raise_version_warning, +) +from ._binary import i8, i32le +from ._util import deferred_error, isPath + +if sys.version_info >= (3, 7): + + def __getattr__(name): + if name == "PILLOW_VERSION": + _raise_version_warning() + return __version__ + raise AttributeError("module '{}' has no attribute '{}'".format(__name__, name)) + + +else: + + from . import PILLOW_VERSION + + # Silence warning + assert PILLOW_VERSION + + +logger = logging.getLogger(__name__) + + +class DecompressionBombWarning(RuntimeWarning): + pass + + +class DecompressionBombError(Exception): + pass + + +# Limit to around a quarter gigabyte for a 24 bit (3 bpp) image +MAX_IMAGE_PIXELS = int(1024 * 1024 * 1024 // 4 // 3) + + +try: + # If the _imaging C module is not present, Pillow will not load. + # Note that other modules should not refer to _imaging directly; + # import Image and use the Image.core variable instead. + # Also note that Image.core is not a publicly documented interface, + # and should be considered private and subject to change. + from . import _imaging as core + + if __version__ != getattr(core, "PILLOW_VERSION", None): + raise ImportError( + "The _imaging extension was built for another version of Pillow or PIL:\n" + "Core version: %s\n" + "Pillow version: %s" % (getattr(core, "PILLOW_VERSION", None), __version__) + ) + +except ImportError as v: + core = deferred_error(ImportError("The _imaging C module is not installed.")) + # Explanations for ways that we know we might have an import error + if str(v).startswith("Module use of python"): + # The _imaging C module is present, but not compiled for + # the right version (windows only). Print a warning, if + # possible. + warnings.warn( + "The _imaging extension was built for another version of Python.", + RuntimeWarning, + ) + elif str(v).startswith("The _imaging extension"): + warnings.warn(str(v), RuntimeWarning) + # Fail here anyway. Don't let people run with a mostly broken Pillow. + # see docs/porting.rst + raise + + +# works everywhere, win for pypy, not cpython +USE_CFFI_ACCESS = hasattr(sys, "pypy_version_info") +try: + import cffi +except ImportError: + cffi = None + + +def isImageType(t): + """ + Checks if an object is an image object. + + .. warning:: + + This function is for internal use only. + + :param t: object to check if it's an image + :returns: True if the object is an image + """ + return hasattr(t, "im") + + +# +# Constants + +NONE = 0 + +# transpose +FLIP_LEFT_RIGHT = 0 +FLIP_TOP_BOTTOM = 1 +ROTATE_90 = 2 +ROTATE_180 = 3 +ROTATE_270 = 4 +TRANSPOSE = 5 +TRANSVERSE = 6 + +# transforms (also defined in Imaging.h) +AFFINE = 0 +EXTENT = 1 +PERSPECTIVE = 2 +QUAD = 3 +MESH = 4 + +# resampling filters (also defined in Imaging.h) +NEAREST = NONE = 0 +BOX = 4 +BILINEAR = LINEAR = 2 +HAMMING = 5 +BICUBIC = CUBIC = 3 +LANCZOS = ANTIALIAS = 1 + +_filters_support = {BOX: 0.5, BILINEAR: 1.0, HAMMING: 1.0, BICUBIC: 2.0, LANCZOS: 3.0} + + +# dithers +NEAREST = NONE = 0 +ORDERED = 1 # Not yet implemented +RASTERIZE = 2 # Not yet implemented +FLOYDSTEINBERG = 3 # default + +# palettes/quantizers +WEB = 0 +ADAPTIVE = 1 + +MEDIANCUT = 0 +MAXCOVERAGE = 1 +FASTOCTREE = 2 +LIBIMAGEQUANT = 3 + +# categories +NORMAL = 0 +SEQUENCE = 1 +CONTAINER = 2 + +if hasattr(core, "DEFAULT_STRATEGY"): + DEFAULT_STRATEGY = core.DEFAULT_STRATEGY + FILTERED = core.FILTERED + HUFFMAN_ONLY = core.HUFFMAN_ONLY + RLE = core.RLE + FIXED = core.FIXED + + +# -------------------------------------------------------------------- +# Registries + +ID = [] +OPEN = {} +MIME = {} +SAVE = {} +SAVE_ALL = {} +EXTENSION = {} +DECODERS = {} +ENCODERS = {} + +# -------------------------------------------------------------------- +# Modes supported by this version + +_MODEINFO = { + # NOTE: this table will be removed in future versions. use + # getmode* functions or ImageMode descriptors instead. + # official modes + "1": ("L", "L", ("1",)), + "L": ("L", "L", ("L",)), + "I": ("L", "I", ("I",)), + "F": ("L", "F", ("F",)), + "P": ("P", "L", ("P",)), + "RGB": ("RGB", "L", ("R", "G", "B")), + "RGBX": ("RGB", "L", ("R", "G", "B", "X")), + "RGBA": ("RGB", "L", ("R", "G", "B", "A")), + "CMYK": ("RGB", "L", ("C", "M", "Y", "K")), + "YCbCr": ("RGB", "L", ("Y", "Cb", "Cr")), + "LAB": ("RGB", "L", ("L", "A", "B")), + "HSV": ("RGB", "L", ("H", "S", "V")), + # Experimental modes include I;16, I;16L, I;16B, RGBa, BGR;15, and + # BGR;24. Use these modes only if you know exactly what you're + # doing... +} + +if sys.byteorder == "little": + _ENDIAN = "<" +else: + _ENDIAN = ">" + +_MODE_CONV = { + # official modes + "1": ("|b1", None), # Bits need to be extended to bytes + "L": ("|u1", None), + "LA": ("|u1", 2), + "I": (_ENDIAN + "i4", None), + "F": (_ENDIAN + "f4", None), + "P": ("|u1", None), + "RGB": ("|u1", 3), + "RGBX": ("|u1", 4), + "RGBA": ("|u1", 4), + "CMYK": ("|u1", 4), + "YCbCr": ("|u1", 3), + "LAB": ("|u1", 3), # UNDONE - unsigned |u1i1i1 + "HSV": ("|u1", 3), + # I;16 == I;16L, and I;32 == I;32L + "I;16": ("u2", None), + "I;16L": ("i2", None), + "I;16LS": ("u4", None), + "I;32L": ("i4", None), + "I;32LS": ("= 1: + return + + try: + from . import BmpImagePlugin + + assert BmpImagePlugin + except ImportError: + pass + try: + from . import GifImagePlugin + + assert GifImagePlugin + except ImportError: + pass + try: + from . import JpegImagePlugin + + assert JpegImagePlugin + except ImportError: + pass + try: + from . import PpmImagePlugin + + assert PpmImagePlugin + except ImportError: + pass + try: + from . import PngImagePlugin + + assert PngImagePlugin + except ImportError: + pass + # try: + # import TiffImagePlugin + # assert TiffImagePlugin + # except ImportError: + # pass + + _initialized = 1 + + +def init(): + """ + Explicitly initializes the Python Imaging Library. This function + loads all available file format drivers. + """ + + global _initialized + if _initialized >= 2: + return 0 + + for plugin in _plugins: + try: + logger.debug("Importing %s", plugin) + __import__("PIL.%s" % plugin, globals(), locals(), []) + except ImportError as e: + logger.debug("Image: failed to import %s: %s", plugin, e) + + if OPEN or SAVE: + _initialized = 2 + return 1 + + +# -------------------------------------------------------------------- +# Codec factories (used by tobytes/frombytes and ImageFile.load) + + +def _getdecoder(mode, decoder_name, args, extra=()): + + # tweak arguments + if args is None: + args = () + elif not isinstance(args, tuple): + args = (args,) + + try: + decoder = DECODERS[decoder_name] + except KeyError: + pass + else: + return decoder(mode, *args + extra) + + try: + # get decoder + decoder = getattr(core, decoder_name + "_decoder") + except AttributeError as e: + raise OSError("decoder %s not available" % decoder_name) from e + return decoder(mode, *args + extra) + + +def _getencoder(mode, encoder_name, args, extra=()): + + # tweak arguments + if args is None: + args = () + elif not isinstance(args, tuple): + args = (args,) + + try: + encoder = ENCODERS[encoder_name] + except KeyError: + pass + else: + return encoder(mode, *args + extra) + + try: + # get encoder + encoder = getattr(core, encoder_name + "_encoder") + except AttributeError as e: + raise OSError("encoder %s not available" % encoder_name) from e + return encoder(mode, *args + extra) + + +# -------------------------------------------------------------------- +# Simple expression analyzer + + +def coerce_e(value): + return value if isinstance(value, _E) else _E(value) + + +class _E: + def __init__(self, data): + self.data = data + + def __add__(self, other): + return _E((self.data, "__add__", coerce_e(other).data)) + + def __mul__(self, other): + return _E((self.data, "__mul__", coerce_e(other).data)) + + +def _getscaleoffset(expr): + stub = ["stub"] + data = expr(_E(stub)).data + try: + (a, b, c) = data # simplified syntax + if a is stub and b == "__mul__" and isinstance(c, numbers.Number): + return c, 0.0 + if a is stub and b == "__add__" and isinstance(c, numbers.Number): + return 1.0, c + except TypeError: + pass + try: + ((a, b, c), d, e) = data # full syntax + if ( + a is stub + and b == "__mul__" + and isinstance(c, numbers.Number) + and d == "__add__" + and isinstance(e, numbers.Number) + ): + return c, e + except TypeError: + pass + raise ValueError("illegal expression") + + +# -------------------------------------------------------------------- +# Implementation wrapper + + +class Image: + """ + This class represents an image object. To create + :py:class:`~PIL.Image.Image` objects, use the appropriate factory + functions. There's hardly ever any reason to call the Image constructor + directly. + + * :py:func:`~PIL.Image.open` + * :py:func:`~PIL.Image.new` + * :py:func:`~PIL.Image.frombytes` + """ + + format = None + format_description = None + _close_exclusive_fp_after_loading = True + + def __init__(self): + # FIXME: take "new" parameters / other image? + # FIXME: turn mode and size into delegating properties? + self.im = None + self.mode = "" + self._size = (0, 0) + self.palette = None + self.info = {} + self.category = NORMAL + self.readonly = 0 + self.pyaccess = None + self._exif = None + + @property + def width(self): + return self.size[0] + + @property + def height(self): + return self.size[1] + + @property + def size(self): + return self._size + + def _new(self, im): + new = Image() + new.im = im + new.mode = im.mode + new._size = im.size + if im.mode in ("P", "PA"): + if self.palette: + new.palette = self.palette.copy() + else: + from . import ImagePalette + + new.palette = ImagePalette.ImagePalette() + new.info = self.info.copy() + return new + + # Context manager support + def __enter__(self): + return self + + def __exit__(self, *args): + if hasattr(self, "fp") and getattr(self, "_exclusive_fp", False): + if hasattr(self, "_close__fp"): + self._close__fp() + if self.fp: + self.fp.close() + self.fp = None + + def close(self): + """ + Closes the file pointer, if possible. + + This operation will destroy the image core and release its memory. + The image data will be unusable afterward. + + This function is only required to close images that have not + had their file read and closed by the + :py:meth:`~PIL.Image.Image.load` method. See + :ref:`file-handling` for more information. + """ + try: + if hasattr(self, "_close__fp"): + self._close__fp() + self.fp.close() + self.fp = None + except Exception as msg: + logger.debug("Error closing: %s", msg) + + if getattr(self, "map", None): + self.map = None + + # Instead of simply setting to None, we're setting up a + # deferred error that will better explain that the core image + # object is gone. + self.im = deferred_error(ValueError("Operation on closed image")) + + def _copy(self): + self.load() + self.im = self.im.copy() + self.pyaccess = None + self.readonly = 0 + + def _ensure_mutable(self): + if self.readonly: + self._copy() + else: + self.load() + + def _dump(self, file=None, format=None, **options): + suffix = "" + if format: + suffix = "." + format + + if not file: + f, filename = tempfile.mkstemp(suffix) + os.close(f) + else: + filename = file + if not filename.endswith(suffix): + filename = filename + suffix + + self.load() + + if not format or format == "PPM": + self.im.save_ppm(filename) + else: + self.save(filename, format, **options) + + return filename + + def __eq__(self, other): + return ( + self.__class__ is other.__class__ + and self.mode == other.mode + and self.size == other.size + and self.info == other.info + and self.category == other.category + and self.readonly == other.readonly + and self.getpalette() == other.getpalette() + and self.tobytes() == other.tobytes() + ) + + def __repr__(self): + return "<%s.%s image mode=%s size=%dx%d at 0x%X>" % ( + self.__class__.__module__, + self.__class__.__name__, + self.mode, + self.size[0], + self.size[1], + id(self), + ) + + def _repr_png_(self): + """ iPython display hook support + + :returns: png version of the image as bytes + """ + b = io.BytesIO() + self.save(b, "PNG") + return b.getvalue() + + @property + def __array_interface__(self): + # numpy array interface support + new = {} + shape, typestr = _conv_type_shape(self) + new["shape"] = shape + new["typestr"] = typestr + new["version"] = 3 + if self.mode == "1": + # Binary images need to be extended from bits to bytes + # See: https://github.com/python-pillow/Pillow/issues/350 + new["data"] = self.tobytes("raw", "L") + else: + new["data"] = self.tobytes() + return new + + def __getstate__(self): + return [self.info, self.mode, self.size, self.getpalette(), self.tobytes()] + + def __setstate__(self, state): + Image.__init__(self) + self.tile = [] + info, mode, size, palette, data = state + self.info = info + self.mode = mode + self._size = size + self.im = core.new(mode, size) + if mode in ("L", "LA", "P", "PA") and palette: + self.putpalette(palette) + self.frombytes(data) + + def tobytes(self, encoder_name="raw", *args): + """ + Return image as a bytes object. + + .. warning:: + + This method returns the raw image data from the internal + storage. For compressed image data (e.g. PNG, JPEG) use + :meth:`~.save`, with a BytesIO parameter for in-memory + data. + + :param encoder_name: What encoder to use. The default is to + use the standard "raw" encoder. + :param args: Extra arguments to the encoder. + :rtype: A bytes object. + """ + + # may pass tuple instead of argument list + if len(args) == 1 and isinstance(args[0], tuple): + args = args[0] + + if encoder_name == "raw" and args == (): + args = self.mode + + self.load() + + # unpack data + e = _getencoder(self.mode, encoder_name, args) + e.setimage(self.im) + + bufsize = max(65536, self.size[0] * 4) # see RawEncode.c + + data = [] + while True: + l, s, d = e.encode(bufsize) + data.append(d) + if s: + break + if s < 0: + raise RuntimeError("encoder error %d in tobytes" % s) + + return b"".join(data) + + def tostring(self, *args, **kw): + raise NotImplementedError( + "tostring() has been removed. Please call tobytes() instead." + ) + + def tobitmap(self, name="image"): + """ + Returns the image converted to an X11 bitmap. + + .. note:: This method only works for mode "1" images. + + :param name: The name prefix to use for the bitmap variables. + :returns: A string containing an X11 bitmap. + :raises ValueError: If the mode is not "1" + """ + + self.load() + if self.mode != "1": + raise ValueError("not a bitmap") + data = self.tobytes("xbm") + return b"".join( + [ + ("#define %s_width %d\n" % (name, self.size[0])).encode("ascii"), + ("#define %s_height %d\n" % (name, self.size[1])).encode("ascii"), + ("static char %s_bits[] = {\n" % name).encode("ascii"), + data, + b"};", + ] + ) + + def frombytes(self, data, decoder_name="raw", *args): + """ + Loads this image with pixel data from a bytes object. + + This method is similar to the :py:func:`~PIL.Image.frombytes` function, + but loads data into this image instead of creating a new image object. + """ + + # may pass tuple instead of argument list + if len(args) == 1 and isinstance(args[0], tuple): + args = args[0] + + # default format + if decoder_name == "raw" and args == (): + args = self.mode + + # unpack data + d = _getdecoder(self.mode, decoder_name, args) + d.setimage(self.im) + s = d.decode(data) + + if s[0] >= 0: + raise ValueError("not enough image data") + if s[1] != 0: + raise ValueError("cannot decode image data") + + def fromstring(self, *args, **kw): + raise NotImplementedError( + "fromstring() has been removed. Please call frombytes() instead." + ) + + def load(self): + """ + Allocates storage for the image and loads the pixel data. In + normal cases, you don't need to call this method, since the + Image class automatically loads an opened image when it is + accessed for the first time. + + If the file associated with the image was opened by Pillow, then this + method will close it. The exception to this is if the image has + multiple frames, in which case the file will be left open for seek + operations. See :ref:`file-handling` for more information. + + :returns: An image access object. + :rtype: :ref:`PixelAccess` or :py:class:`PIL.PyAccess` + """ + if self.im and self.palette and self.palette.dirty: + # realize palette + self.im.putpalette(*self.palette.getdata()) + self.palette.dirty = 0 + self.palette.mode = "RGB" + self.palette.rawmode = None + if "transparency" in self.info: + if isinstance(self.info["transparency"], int): + self.im.putpalettealpha(self.info["transparency"], 0) + else: + self.im.putpalettealphas(self.info["transparency"]) + self.palette.mode = "RGBA" + + if self.im: + if cffi and USE_CFFI_ACCESS: + if self.pyaccess: + return self.pyaccess + from . import PyAccess + + self.pyaccess = PyAccess.new(self, self.readonly) + if self.pyaccess: + return self.pyaccess + return self.im.pixel_access(self.readonly) + + def verify(self): + """ + Verifies the contents of a file. For data read from a file, this + method attempts to determine if the file is broken, without + actually decoding the image data. If this method finds any + problems, it raises suitable exceptions. If you need to load + the image after using this method, you must reopen the image + file. + """ + pass + + def convert(self, mode=None, matrix=None, dither=None, palette=WEB, colors=256): + """ + Returns a converted copy of this image. For the "P" mode, this + method translates pixels through the palette. If mode is + omitted, a mode is chosen so that all information in the image + and the palette can be represented without a palette. + + The current version supports all possible conversions between + "L", "RGB" and "CMYK." The **matrix** argument only supports "L" + and "RGB". + + When translating a color image to greyscale (mode "L"), + the library uses the ITU-R 601-2 luma transform:: + + L = R * 299/1000 + G * 587/1000 + B * 114/1000 + + The default method of converting a greyscale ("L") or "RGB" + image into a bilevel (mode "1") image uses Floyd-Steinberg + dither to approximate the original image luminosity levels. If + dither is :data:`NONE`, all values larger than 128 are set to 255 (white), + all other values to 0 (black). To use other thresholds, use the + :py:meth:`~PIL.Image.Image.point` method. + + When converting from "RGBA" to "P" without a **matrix** argument, + this passes the operation to :py:meth:`~PIL.Image.Image.quantize`, + and **dither** and **palette** are ignored. + + :param mode: The requested mode. See: :ref:`concept-modes`. + :param matrix: An optional conversion matrix. If given, this + should be 4- or 12-tuple containing floating point values. + :param dither: Dithering method, used when converting from + mode "RGB" to "P" or from "RGB" or "L" to "1". + Available methods are :data:`NONE` or :data:`FLOYDSTEINBERG` (default). + Note that this is not used when **matrix** is supplied. + :param palette: Palette to use when converting from mode "RGB" + to "P". Available palettes are :data:`WEB` or :data:`ADAPTIVE`. + :param colors: Number of colors to use for the :data:`ADAPTIVE` palette. + Defaults to 256. + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + self.load() + + if not mode and self.mode == "P": + # determine default mode + if self.palette: + mode = self.palette.mode + else: + mode = "RGB" + if not mode or (mode == self.mode and not matrix): + return self.copy() + + has_transparency = self.info.get("transparency") is not None + if matrix: + # matrix conversion + if mode not in ("L", "RGB"): + raise ValueError("illegal conversion") + im = self.im.convert_matrix(mode, matrix) + new = self._new(im) + if has_transparency and self.im.bands == 3: + transparency = new.info["transparency"] + + def convert_transparency(m, v): + v = m[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3] * 0.5 + return max(0, min(255, int(v))) + + if mode == "L": + transparency = convert_transparency(matrix, transparency) + elif len(mode) == 3: + transparency = tuple( + [ + convert_transparency( + matrix[i * 4 : i * 4 + 4], transparency + ) + for i in range(0, len(transparency)) + ] + ) + new.info["transparency"] = transparency + return new + + if mode == "P" and self.mode == "RGBA": + return self.quantize(colors) + + trns = None + delete_trns = False + # transparency handling + if has_transparency: + if self.mode in ("1", "L", "I", "RGB") and mode == "RGBA": + # Use transparent conversion to promote from transparent + # color to an alpha channel. + new_im = self._new( + self.im.convert_transparent(mode, self.info["transparency"]) + ) + del new_im.info["transparency"] + return new_im + elif self.mode in ("L", "RGB", "P") and mode in ("L", "RGB", "P"): + t = self.info["transparency"] + if isinstance(t, bytes): + # Dragons. This can't be represented by a single color + warnings.warn( + "Palette images with Transparency expressed in bytes should be " + "converted to RGBA images" + ) + delete_trns = True + else: + # get the new transparency color. + # use existing conversions + trns_im = Image()._new(core.new(self.mode, (1, 1))) + if self.mode == "P": + trns_im.putpalette(self.palette) + if isinstance(t, tuple): + try: + t = trns_im.palette.getcolor(t) + except Exception as e: + raise ValueError( + "Couldn't allocate a palette color for transparency" + ) from e + trns_im.putpixel((0, 0), t) + + if mode in ("L", "RGB"): + trns_im = trns_im.convert(mode) + else: + # can't just retrieve the palette number, got to do it + # after quantization. + trns_im = trns_im.convert("RGB") + trns = trns_im.getpixel((0, 0)) + + elif self.mode == "P" and mode == "RGBA": + t = self.info["transparency"] + delete_trns = True + + if isinstance(t, bytes): + self.im.putpalettealphas(t) + elif isinstance(t, int): + self.im.putpalettealpha(t, 0) + else: + raise ValueError("Transparency for P mode should be bytes or int") + + if mode == "P" and palette == ADAPTIVE: + im = self.im.quantize(colors) + new = self._new(im) + from . import ImagePalette + + new.palette = ImagePalette.raw("RGB", new.im.getpalette("RGB")) + if delete_trns: + # This could possibly happen if we requantize to fewer colors. + # The transparency would be totally off in that case. + del new.info["transparency"] + if trns is not None: + try: + new.info["transparency"] = new.palette.getcolor(trns) + except Exception: + # if we can't make a transparent color, don't leave the old + # transparency hanging around to mess us up. + del new.info["transparency"] + warnings.warn("Couldn't allocate palette entry for transparency") + return new + + # colorspace conversion + if dither is None: + dither = FLOYDSTEINBERG + + try: + im = self.im.convert(mode, dither) + except ValueError: + try: + # normalize source image and try again + im = self.im.convert(getmodebase(self.mode)) + im = im.convert(mode, dither) + except KeyError as e: + raise ValueError("illegal conversion") from e + + new_im = self._new(im) + if delete_trns: + # crash fail if we leave a bytes transparency in an rgb/l mode. + del new_im.info["transparency"] + if trns is not None: + if new_im.mode == "P": + try: + new_im.info["transparency"] = new_im.palette.getcolor(trns) + except Exception: + del new_im.info["transparency"] + warnings.warn("Couldn't allocate palette entry for transparency") + else: + new_im.info["transparency"] = trns + return new_im + + def quantize(self, colors=256, method=None, kmeans=0, palette=None, dither=1): + """ + Convert the image to 'P' mode with the specified number + of colors. + + :param colors: The desired number of colors, <= 256 + :param method: :data:`MEDIANCUT` (median cut), + :data:`MAXCOVERAGE` (maximum coverage), + :data:`FASTOCTREE` (fast octree), + :data:`LIBIMAGEQUANT` (libimagequant; check support using + :py:func:`PIL.features.check_feature` + with ``feature="libimagequant"``). + :param kmeans: Integer + :param palette: Quantize to the palette of given + :py:class:`PIL.Image.Image`. + :param dither: Dithering method, used when converting from + mode "RGB" to "P" or from "RGB" or "L" to "1". + Available methods are :data:`NONE` or :data:`FLOYDSTEINBERG` (default). + Default: 1 (legacy setting) + :returns: A new image + + """ + + self.load() + + if method is None: + # defaults: + method = 0 + if self.mode == "RGBA": + method = 2 + + if self.mode == "RGBA" and method not in (2, 3): + # Caller specified an invalid mode. + raise ValueError( + "Fast Octree (method == 2) and libimagequant (method == 3) " + "are the only valid methods for quantizing RGBA images" + ) + + if palette: + # use palette from reference image + palette.load() + if palette.mode != "P": + raise ValueError("bad mode for palette image") + if self.mode != "RGB" and self.mode != "L": + raise ValueError( + "only RGB or L mode images can be quantized to a palette" + ) + im = self.im.convert("P", dither, palette.im) + return self._new(im) + + im = self._new(self.im.quantize(colors, method, kmeans)) + + from . import ImagePalette + + mode = im.im.getpalettemode() + im.palette = ImagePalette.ImagePalette(mode, im.im.getpalette(mode, mode)) + + return im + + def copy(self): + """ + Copies this image. Use this method if you wish to paste things + into an image, but still retain the original. + + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + self.load() + return self._new(self.im.copy()) + + __copy__ = copy + + def crop(self, box=None): + """ + Returns a rectangular region from this image. The box is a + 4-tuple defining the left, upper, right, and lower pixel + coordinate. See :ref:`coordinate-system`. + + Note: Prior to Pillow 3.4.0, this was a lazy operation. + + :param box: The crop rectangle, as a (left, upper, right, lower)-tuple. + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if box is None: + return self.copy() + + self.load() + return self._new(self._crop(self.im, box)) + + def _crop(self, im, box): + """ + Returns a rectangular region from the core image object im. + + This is equivalent to calling im.crop((x0, y0, x1, y1)), but + includes additional sanity checks. + + :param im: a core image object + :param box: The crop rectangle, as a (left, upper, right, lower)-tuple. + :returns: A core image object. + """ + + x0, y0, x1, y1 = map(int, map(round, box)) + + absolute_values = (abs(x1 - x0), abs(y1 - y0)) + + _decompression_bomb_check(absolute_values) + + return im.crop((x0, y0, x1, y1)) + + def draft(self, mode, size): + """ + Configures the image file loader so it returns a version of the + image that as closely as possible matches the given mode and + size. For example, you can use this method to convert a color + JPEG to greyscale while loading it. + + If any changes are made, returns a tuple with the chosen ``mode`` and + ``box`` with coordinates of the original image within the altered one. + + Note that this method modifies the :py:class:`~PIL.Image.Image` object + in place. If the image has already been loaded, this method has no + effect. + + Note: This method is not implemented for most images. It is + currently implemented only for JPEG and MPO images. + + :param mode: The requested mode. + :param size: The requested size. + """ + pass + + def _expand(self, xmargin, ymargin=None): + if ymargin is None: + ymargin = xmargin + self.load() + return self._new(self.im.expand(xmargin, ymargin, 0)) + + def filter(self, filter): + """ + Filters this image using the given filter. For a list of + available filters, see the :py:mod:`~PIL.ImageFilter` module. + + :param filter: Filter kernel. + :returns: An :py:class:`~PIL.Image.Image` object. """ + + from . import ImageFilter + + self.load() + + if isinstance(filter, Callable): + filter = filter() + if not hasattr(filter, "filter"): + raise TypeError( + "filter argument should be ImageFilter.Filter instance or class" + ) + + multiband = isinstance(filter, ImageFilter.MultibandFilter) + if self.im.bands == 1 or multiband: + return self._new(filter.filter(self.im)) + + ims = [] + for c in range(self.im.bands): + ims.append(self._new(filter.filter(self.im.getband(c)))) + return merge(self.mode, ims) + + def getbands(self): + """ + Returns a tuple containing the name of each band in this image. + For example, **getbands** on an RGB image returns ("R", "G", "B"). + + :returns: A tuple containing band names. + :rtype: tuple + """ + return ImageMode.getmode(self.mode).bands + + def getbbox(self): + """ + Calculates the bounding box of the non-zero regions in the + image. + + :returns: The bounding box is returned as a 4-tuple defining the + left, upper, right, and lower pixel coordinate. See + :ref:`coordinate-system`. If the image is completely empty, this + method returns None. + + """ + + self.load() + return self.im.getbbox() + + def getcolors(self, maxcolors=256): + """ + Returns a list of colors used in this image. + + :param maxcolors: Maximum number of colors. If this number is + exceeded, this method returns None. The default limit is + 256 colors. + :returns: An unsorted list of (count, pixel) values. + """ + + self.load() + if self.mode in ("1", "L", "P"): + h = self.im.histogram() + out = [] + for i in range(256): + if h[i]: + out.append((h[i], i)) + if len(out) > maxcolors: + return None + return out + return self.im.getcolors(maxcolors) + + def getdata(self, band=None): + """ + Returns the contents of this image as a sequence object + containing pixel values. The sequence object is flattened, so + that values for line one follow directly after the values of + line zero, and so on. + + Note that the sequence object returned by this method is an + internal PIL data type, which only supports certain sequence + operations. To convert it to an ordinary sequence (e.g. for + printing), use **list(im.getdata())**. + + :param band: What band to return. The default is to return + all bands. To return a single band, pass in the index + value (e.g. 0 to get the "R" band from an "RGB" image). + :returns: A sequence-like object. + """ + + self.load() + if band is not None: + return self.im.getband(band) + return self.im # could be abused + + def getextrema(self): + """ + Gets the the minimum and maximum pixel values for each band in + the image. + + :returns: For a single-band image, a 2-tuple containing the + minimum and maximum pixel value. For a multi-band image, + a tuple containing one 2-tuple for each band. + """ + + self.load() + if self.im.bands > 1: + extrema = [] + for i in range(self.im.bands): + extrema.append(self.im.getband(i).getextrema()) + return tuple(extrema) + return self.im.getextrema() + + def getexif(self): + if self._exif is None: + self._exif = Exif() + + exif_info = self.info.get("exif") + if exif_info is None and "Raw profile type exif" in self.info: + exif_info = bytes.fromhex( + "".join(self.info["Raw profile type exif"].split("\n")[3:]) + ) + self._exif.load(exif_info) + + # XMP tags + if 0x0112 not in self._exif: + xmp_tags = self.info.get("XML:com.adobe.xmp") + if xmp_tags: + root = xml.etree.ElementTree.fromstring(xmp_tags) + for elem in root.iter(): + if elem.tag.endswith("}Description"): + orientation = elem.attrib.get( + "{http://ns.adobe.com/tiff/1.0/}Orientation" + ) + if orientation: + self._exif[0x0112] = int(orientation) + break + + return self._exif + + def getim(self): + """ + Returns a capsule that points to the internal image memory. + + :returns: A capsule object. + """ + + self.load() + return self.im.ptr + + def getpalette(self): + """ + Returns the image palette as a list. + + :returns: A list of color values [r, g, b, ...], or None if the + image has no palette. + """ + + self.load() + try: + return list(self.im.getpalette()) + except ValueError: + return None # no palette + + def getpixel(self, xy): + """ + Returns the pixel value at a given position. + + :param xy: The coordinate, given as (x, y). See + :ref:`coordinate-system`. + :returns: The pixel value. If the image is a multi-layer image, + this method returns a tuple. + """ + + self.load() + if self.pyaccess: + return self.pyaccess.getpixel(xy) + return self.im.getpixel(xy) + + def getprojection(self): + """ + Get projection to x and y axes + + :returns: Two sequences, indicating where there are non-zero + pixels along the X-axis and the Y-axis, respectively. + """ + + self.load() + x, y = self.im.getprojection() + return [i8(c) for c in x], [i8(c) for c in y] + + def histogram(self, mask=None, extrema=None): + """ + Returns a histogram for the image. The histogram is returned as + a list of pixel counts, one for each pixel value in the source + image. If the image has more than one band, the histograms for + all bands are concatenated (for example, the histogram for an + "RGB" image contains 768 values). + + A bilevel image (mode "1") is treated as a greyscale ("L") image + by this method. + + If a mask is provided, the method returns a histogram for those + parts of the image where the mask image is non-zero. The mask + image must have the same size as the image, and be either a + bi-level image (mode "1") or a greyscale image ("L"). + + :param mask: An optional mask. + :param extrema: An optional tuple of manually-specified extrema. + :returns: A list containing pixel counts. + """ + self.load() + if mask: + mask.load() + return self.im.histogram((0, 0), mask.im) + if self.mode in ("I", "F"): + if extrema is None: + extrema = self.getextrema() + return self.im.histogram(extrema) + return self.im.histogram() + + def entropy(self, mask=None, extrema=None): + """ + Calculates and returns the entropy for the image. + + A bilevel image (mode "1") is treated as a greyscale ("L") + image by this method. + + If a mask is provided, the method employs the histogram for + those parts of the image where the mask image is non-zero. + The mask image must have the same size as the image, and be + either a bi-level image (mode "1") or a greyscale image ("L"). + + :param mask: An optional mask. + :param extrema: An optional tuple of manually-specified extrema. + :returns: A float value representing the image entropy + """ + self.load() + if mask: + mask.load() + return self.im.entropy((0, 0), mask.im) + if self.mode in ("I", "F"): + if extrema is None: + extrema = self.getextrema() + return self.im.entropy(extrema) + return self.im.entropy() + + def offset(self, xoffset, yoffset=None): + raise NotImplementedError( + "offset() has been removed. Please call ImageChops.offset() instead." + ) + + def paste(self, im, box=None, mask=None): + """ + Pastes another image into this image. The box argument is either + a 2-tuple giving the upper left corner, a 4-tuple defining the + left, upper, right, and lower pixel coordinate, or None (same as + (0, 0)). See :ref:`coordinate-system`. If a 4-tuple is given, the size + of the pasted image must match the size of the region. + + If the modes don't match, the pasted image is converted to the mode of + this image (see the :py:meth:`~PIL.Image.Image.convert` method for + details). + + Instead of an image, the source can be a integer or tuple + containing pixel values. The method then fills the region + with the given color. When creating RGB images, you can + also use color strings as supported by the ImageColor module. + + If a mask is given, this method updates only the regions + indicated by the mask. You can use either "1", "L" or "RGBA" + images (in the latter case, the alpha band is used as mask). + Where the mask is 255, the given image is copied as is. Where + the mask is 0, the current value is preserved. Intermediate + values will mix the two images together, including their alpha + channels if they have them. + + See :py:meth:`~PIL.Image.Image.alpha_composite` if you want to + combine images with respect to their alpha channels. + + :param im: Source image or pixel value (integer or tuple). + :param box: An optional 4-tuple giving the region to paste into. + If a 2-tuple is used instead, it's treated as the upper left + corner. If omitted or None, the source is pasted into the + upper left corner. + + If an image is given as the second argument and there is no + third, the box defaults to (0, 0), and the second argument + is interpreted as a mask image. + :param mask: An optional mask image. + """ + + if isImageType(box) and mask is None: + # abbreviated paste(im, mask) syntax + mask = box + box = None + + if box is None: + box = (0, 0) + + if len(box) == 2: + # upper left corner given; get size from image or mask + if isImageType(im): + size = im.size + elif isImageType(mask): + size = mask.size + else: + # FIXME: use self.size here? + raise ValueError("cannot determine region size; use 4-item box") + box += (box[0] + size[0], box[1] + size[1]) + + if isinstance(im, str): + from . import ImageColor + + im = ImageColor.getcolor(im, self.mode) + + elif isImageType(im): + im.load() + if self.mode != im.mode: + if self.mode != "RGB" or im.mode not in ("RGBA", "RGBa"): + # should use an adapter for this! + im = im.convert(self.mode) + im = im.im + + self._ensure_mutable() + + if mask: + mask.load() + self.im.paste(im, box, mask.im) + else: + self.im.paste(im, box) + + def alpha_composite(self, im, dest=(0, 0), source=(0, 0)): + """ 'In-place' analog of Image.alpha_composite. Composites an image + onto this image. + + :param im: image to composite over this one + :param dest: Optional 2 tuple (left, top) specifying the upper + left corner in this (destination) image. + :param source: Optional 2 (left, top) tuple for the upper left + corner in the overlay source image, or 4 tuple (left, top, right, + bottom) for the bounds of the source rectangle + + Performance Note: Not currently implemented in-place in the core layer. + """ + + if not isinstance(source, (list, tuple)): + raise ValueError("Source must be a tuple") + if not isinstance(dest, (list, tuple)): + raise ValueError("Destination must be a tuple") + if not len(source) in (2, 4): + raise ValueError("Source must be a 2 or 4-tuple") + if not len(dest) == 2: + raise ValueError("Destination must be a 2-tuple") + if min(source) < 0: + raise ValueError("Source must be non-negative") + if min(dest) < 0: + raise ValueError("Destination must be non-negative") + + if len(source) == 2: + source = source + im.size + + # over image, crop if it's not the whole thing. + if source == (0, 0) + im.size: + overlay = im + else: + overlay = im.crop(source) + + # target for the paste + box = dest + (dest[0] + overlay.width, dest[1] + overlay.height) + + # destination image. don't copy if we're using the whole image. + if box == (0, 0) + self.size: + background = self + else: + background = self.crop(box) + + result = alpha_composite(background, overlay) + self.paste(result, box) + + def point(self, lut, mode=None): + """ + Maps this image through a lookup table or function. + + :param lut: A lookup table, containing 256 (or 65536 if + self.mode=="I" and mode == "L") values per band in the + image. A function can be used instead, it should take a + single argument. The function is called once for each + possible pixel value, and the resulting table is applied to + all bands of the image. + :param mode: Output mode (default is same as input). In the + current version, this can only be used if the source image + has mode "L" or "P", and the output has mode "1" or the + source image mode is "I" and the output mode is "L". + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + self.load() + + if isinstance(lut, ImagePointHandler): + return lut.point(self) + + if callable(lut): + # if it isn't a list, it should be a function + if self.mode in ("I", "I;16", "F"): + # check if the function can be used with point_transform + # UNDONE wiredfool -- I think this prevents us from ever doing + # a gamma function point transform on > 8bit images. + scale, offset = _getscaleoffset(lut) + return self._new(self.im.point_transform(scale, offset)) + # for other modes, convert the function to a table + lut = [lut(i) for i in range(256)] * self.im.bands + + if self.mode == "F": + # FIXME: _imaging returns a confusing error message for this case + raise ValueError("point operation not supported for this mode") + + return self._new(self.im.point(lut, mode)) + + def putalpha(self, alpha): + """ + Adds or replaces the alpha layer in this image. If the image + does not have an alpha layer, it's converted to "LA" or "RGBA". + The new layer must be either "L" or "1". + + :param alpha: The new alpha layer. This can either be an "L" or "1" + image having the same size as this image, or an integer or + other color value. + """ + + self._ensure_mutable() + + if self.mode not in ("LA", "PA", "RGBA"): + # attempt to promote self to a matching alpha mode + try: + mode = getmodebase(self.mode) + "A" + try: + self.im.setmode(mode) + except (AttributeError, ValueError) as e: + # do things the hard way + im = self.im.convert(mode) + if im.mode not in ("LA", "PA", "RGBA"): + raise ValueError from e # sanity check + self.im = im + self.pyaccess = None + self.mode = self.im.mode + except (KeyError, ValueError) as e: + raise ValueError("illegal image mode") from e + + if self.mode in ("LA", "PA"): + band = 1 + else: + band = 3 + + if isImageType(alpha): + # alpha layer + if alpha.mode not in ("1", "L"): + raise ValueError("illegal image mode") + alpha.load() + if alpha.mode == "1": + alpha = alpha.convert("L") + else: + # constant alpha + try: + self.im.fillband(band, alpha) + except (AttributeError, ValueError): + # do things the hard way + alpha = new("L", self.size, alpha) + else: + return + + self.im.putband(alpha.im, band) + + def putdata(self, data, scale=1.0, offset=0.0): + """ + Copies pixel data to this image. This method copies data from a + sequence object into the image, starting at the upper left + corner (0, 0), and continuing until either the image or the + sequence ends. The scale and offset values are used to adjust + the sequence values: **pixel = value*scale + offset**. + + :param data: A sequence object. + :param scale: An optional scale value. The default is 1.0. + :param offset: An optional offset value. The default is 0.0. + """ + + self._ensure_mutable() + + self.im.putdata(data, scale, offset) + + def putpalette(self, data, rawmode="RGB"): + """ + Attaches a palette to this image. The image must be a "P", + "PA", "L" or "LA" image, and the palette sequence must contain + 768 integer values, where each group of three values represent + the red, green, and blue values for the corresponding pixel + index. Instead of an integer sequence, you can use an 8-bit + string. + + :param data: A palette sequence (either a list or a string). + :param rawmode: The raw mode of the palette. + """ + from . import ImagePalette + + if self.mode not in ("L", "LA", "P", "PA"): + raise ValueError("illegal image mode") + self.load() + if isinstance(data, ImagePalette.ImagePalette): + palette = ImagePalette.raw(data.rawmode, data.palette) + else: + if not isinstance(data, bytes): + data = bytes(data) + palette = ImagePalette.raw(rawmode, data) + self.mode = "PA" if "A" in self.mode else "P" + self.palette = palette + self.palette.mode = "RGB" + self.load() # install new palette + + def putpixel(self, xy, value): + """ + Modifies the pixel at the given position. The color is given as + a single numerical value for single-band images, and a tuple for + multi-band images. In addition to this, RGB and RGBA tuples are + accepted for P images. + + Note that this method is relatively slow. For more extensive changes, + use :py:meth:`~PIL.Image.Image.paste` or the :py:mod:`~PIL.ImageDraw` + module instead. + + See: + + * :py:meth:`~PIL.Image.Image.paste` + * :py:meth:`~PIL.Image.Image.putdata` + * :py:mod:`~PIL.ImageDraw` + + :param xy: The pixel coordinate, given as (x, y). See + :ref:`coordinate-system`. + :param value: The pixel value. + """ + + if self.readonly: + self._copy() + self.load() + + if self.pyaccess: + return self.pyaccess.putpixel(xy, value) + + if ( + self.mode == "P" + and isinstance(value, (list, tuple)) + and len(value) in [3, 4] + ): + # RGB or RGBA value for a P image + value = self.palette.getcolor(value) + return self.im.putpixel(xy, value) + + def remap_palette(self, dest_map, source_palette=None): + """ + Rewrites the image to reorder the palette. + + :param dest_map: A list of indexes into the original palette. + e.g. [1,0] would swap a two item palette, and list(range(256)) + is the identity transform. + :param source_palette: Bytes or None. + :returns: An :py:class:`~PIL.Image.Image` object. + + """ + from . import ImagePalette + + if self.mode not in ("L", "P"): + raise ValueError("illegal image mode") + + if source_palette is None: + if self.mode == "P": + real_source_palette = self.im.getpalette("RGB")[:768] + else: # L-mode + real_source_palette = bytearray(i // 3 for i in range(768)) + else: + real_source_palette = source_palette + + palette_bytes = b"" + new_positions = [0] * 256 + + # pick only the used colors from the palette + for i, oldPosition in enumerate(dest_map): + palette_bytes += real_source_palette[oldPosition * 3 : oldPosition * 3 + 3] + new_positions[oldPosition] = i + + # replace the palette color id of all pixel with the new id + + # Palette images are [0..255], mapped through a 1 or 3 + # byte/color map. We need to remap the whole image + # from palette 1 to palette 2. New_positions is + # an array of indexes into palette 1. Palette 2 is + # palette 1 with any holes removed. + + # We're going to leverage the convert mechanism to use the + # C code to remap the image from palette 1 to palette 2, + # by forcing the source image into 'L' mode and adding a + # mapping 'L' mode palette, then converting back to 'L' + # sans palette thus converting the image bytes, then + # assigning the optimized RGB palette. + + # perf reference, 9500x4000 gif, w/~135 colors + # 14 sec prepatch, 1 sec postpatch with optimization forced. + + mapping_palette = bytearray(new_positions) + + m_im = self.copy() + m_im.mode = "P" + + m_im.palette = ImagePalette.ImagePalette( + "RGB", palette=mapping_palette * 3, size=768 + ) + # possibly set palette dirty, then + # m_im.putpalette(mapping_palette, 'L') # converts to 'P' + # or just force it. + # UNDONE -- this is part of the general issue with palettes + m_im.im.putpalette(*m_im.palette.getdata()) + + m_im = m_im.convert("L") + + # Internally, we require 768 bytes for a palette. + new_palette_bytes = palette_bytes + (768 - len(palette_bytes)) * b"\x00" + m_im.putpalette(new_palette_bytes) + m_im.palette = ImagePalette.ImagePalette( + "RGB", palette=palette_bytes, size=len(palette_bytes) + ) + + return m_im + + def _get_safe_box(self, size, resample, box): + """Expands the box so it includes adjacent pixels + that may be used by resampling with the given resampling filter. + """ + filter_support = _filters_support[resample] - 0.5 + scale_x = (box[2] - box[0]) / size[0] + scale_y = (box[3] - box[1]) / size[1] + support_x = filter_support * scale_x + support_y = filter_support * scale_y + + return ( + max(0, int(box[0] - support_x)), + max(0, int(box[1] - support_y)), + min(self.size[0], math.ceil(box[2] + support_x)), + min(self.size[1], math.ceil(box[3] + support_y)), + ) + + def resize(self, size, resample=BICUBIC, box=None, reducing_gap=None): + """ + Returns a resized copy of this image. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param resample: An optional resampling filter. This can be + one of :py:data:`PIL.Image.NEAREST`, :py:data:`PIL.Image.BOX`, + :py:data:`PIL.Image.BILINEAR`, :py:data:`PIL.Image.HAMMING`, + :py:data:`PIL.Image.BICUBIC` or :py:data:`PIL.Image.LANCZOS`. + Default filter is :py:data:`PIL.Image.BICUBIC`. + If the image has mode "1" or "P", it is + always set to :py:data:`PIL.Image.NEAREST`. + See: :ref:`concept-filters`. + :param box: An optional 4-tuple of floats providing + the source image region to be scaled. + The values must be within (0, 0, width, height) rectangle. + If omitted or None, the entire source is used. + :param reducing_gap: Apply optimization by resizing the image + in two steps. First, reducing the image by integer times + using :py:meth:`~PIL.Image.Image.reduce`. + Second, resizing using regular resampling. The last step + changes size no less than by ``reducing_gap`` times. + ``reducing_gap`` may be None (no first step is performed) + or should be greater than 1.0. The bigger ``reducing_gap``, + the closer the result to the fair resampling. + The smaller ``reducing_gap``, the faster resizing. + With ``reducing_gap`` greater or equal to 3.0, the result is + indistinguishable from fair resampling in most cases. + The default value is None (no optimization). + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if resample not in (NEAREST, BILINEAR, BICUBIC, LANCZOS, BOX, HAMMING): + message = "Unknown resampling filter ({}).".format(resample) + + filters = [ + "{} ({})".format(filter[1], filter[0]) + for filter in ( + (NEAREST, "Image.NEAREST"), + (LANCZOS, "Image.LANCZOS"), + (BILINEAR, "Image.BILINEAR"), + (BICUBIC, "Image.BICUBIC"), + (BOX, "Image.BOX"), + (HAMMING, "Image.HAMMING"), + ) + ] + raise ValueError( + message + " Use " + ", ".join(filters[:-1]) + " or " + filters[-1] + ) + + if reducing_gap is not None and reducing_gap < 1.0: + raise ValueError("reducing_gap must be 1.0 or greater") + + size = tuple(size) + + if box is None: + box = (0, 0) + self.size + else: + box = tuple(box) + + if self.size == size and box == (0, 0) + self.size: + return self.copy() + + if self.mode in ("1", "P"): + resample = NEAREST + + if self.mode in ["LA", "RGBA"]: + im = self.convert(self.mode[:-1] + "a") + im = im.resize(size, resample, box) + return im.convert(self.mode) + + self.load() + + if reducing_gap is not None and resample != NEAREST: + factor_x = int((box[2] - box[0]) / size[0] / reducing_gap) or 1 + factor_y = int((box[3] - box[1]) / size[1] / reducing_gap) or 1 + if factor_x > 1 or factor_y > 1: + reduce_box = self._get_safe_box(size, resample, box) + factor = (factor_x, factor_y) + if callable(self.reduce): + self = self.reduce(factor, box=reduce_box) + else: + self = Image.reduce(self, factor, box=reduce_box) + box = ( + (box[0] - reduce_box[0]) / factor_x, + (box[1] - reduce_box[1]) / factor_y, + (box[2] - reduce_box[0]) / factor_x, + (box[3] - reduce_box[1]) / factor_y, + ) + + return self._new(self.im.resize(size, resample, box)) + + def reduce(self, factor, box=None): + """ + Returns a copy of the image reduced by `factor` times. + If the size of the image is not dividable by the `factor`, + the resulting size will be rounded up. + + :param factor: A greater than 0 integer or tuple of two integers + for width and height separately. + :param box: An optional 4-tuple of ints providing + the source image region to be reduced. + The values must be within (0, 0, width, height) rectangle. + If omitted or None, the entire source is used. + """ + if not isinstance(factor, (list, tuple)): + factor = (factor, factor) + + if box is None: + box = (0, 0) + self.size + else: + box = tuple(box) + + if factor == (1, 1) and box == (0, 0) + self.size: + return self.copy() + + if self.mode in ["LA", "RGBA"]: + im = self.convert(self.mode[:-1] + "a") + im = im.reduce(factor, box) + return im.convert(self.mode) + + self.load() + + return self._new(self.im.reduce(factor, box)) + + def rotate( + self, + angle, + resample=NEAREST, + expand=0, + center=None, + translate=None, + fillcolor=None, + ): + """ + Returns a rotated copy of this image. This method returns a + copy of this image, rotated the given number of degrees counter + clockwise around its centre. + + :param angle: In degrees counter clockwise. + :param resample: An optional resampling filter. This can be + one of :py:data:`PIL.Image.NEAREST` (use nearest neighbour), + :py:data:`PIL.Image.BILINEAR` (linear interpolation in a 2x2 + environment), or :py:data:`PIL.Image.BICUBIC` + (cubic spline interpolation in a 4x4 environment). + If omitted, or if the image has mode "1" or "P", it is + set to :py:data:`PIL.Image.NEAREST`. See :ref:`concept-filters`. + :param expand: Optional expansion flag. If true, expands the output + image to make it large enough to hold the entire rotated image. + If false or omitted, make the output image the same size as the + input image. Note that the expand flag assumes rotation around + the center and no translation. + :param center: Optional center of rotation (a 2-tuple). Origin is + the upper left corner. Default is the center of the image. + :param translate: An optional post-rotate translation (a 2-tuple). + :param fillcolor: An optional color for area outside the rotated image. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + angle = angle % 360.0 + + # Fast paths regardless of filter, as long as we're not + # translating or changing the center. + if not (center or translate): + if angle == 0: + return self.copy() + if angle == 180: + return self.transpose(ROTATE_180) + if angle == 90 and expand: + return self.transpose(ROTATE_90) + if angle == 270 and expand: + return self.transpose(ROTATE_270) + + # Calculate the affine matrix. Note that this is the reverse + # transformation (from destination image to source) because we + # want to interpolate the (discrete) destination pixel from + # the local area around the (floating) source pixel. + + # The matrix we actually want (note that it operates from the right): + # (1, 0, tx) (1, 0, cx) ( cos a, sin a, 0) (1, 0, -cx) + # (0, 1, ty) * (0, 1, cy) * (-sin a, cos a, 0) * (0, 1, -cy) + # (0, 0, 1) (0, 0, 1) ( 0, 0, 1) (0, 0, 1) + + # The reverse matrix is thus: + # (1, 0, cx) ( cos -a, sin -a, 0) (1, 0, -cx) (1, 0, -tx) + # (0, 1, cy) * (-sin -a, cos -a, 0) * (0, 1, -cy) * (0, 1, -ty) + # (0, 0, 1) ( 0, 0, 1) (0, 0, 1) (0, 0, 1) + + # In any case, the final translation may be updated at the end to + # compensate for the expand flag. + + w, h = self.size + + if translate is None: + post_trans = (0, 0) + else: + post_trans = translate + if center is None: + # FIXME These should be rounded to ints? + rotn_center = (w / 2.0, h / 2.0) + else: + rotn_center = center + + angle = -math.radians(angle) + matrix = [ + round(math.cos(angle), 15), + round(math.sin(angle), 15), + 0.0, + round(-math.sin(angle), 15), + round(math.cos(angle), 15), + 0.0, + ] + + def transform(x, y, matrix): + (a, b, c, d, e, f) = matrix + return a * x + b * y + c, d * x + e * y + f + + matrix[2], matrix[5] = transform( + -rotn_center[0] - post_trans[0], -rotn_center[1] - post_trans[1], matrix + ) + matrix[2] += rotn_center[0] + matrix[5] += rotn_center[1] + + if expand: + # calculate output size + xx = [] + yy = [] + for x, y in ((0, 0), (w, 0), (w, h), (0, h)): + x, y = transform(x, y, matrix) + xx.append(x) + yy.append(y) + nw = math.ceil(max(xx)) - math.floor(min(xx)) + nh = math.ceil(max(yy)) - math.floor(min(yy)) + + # We multiply a translation matrix from the right. Because of its + # special form, this is the same as taking the image of the + # translation vector as new translation vector. + matrix[2], matrix[5] = transform(-(nw - w) / 2.0, -(nh - h) / 2.0, matrix) + w, h = nw, nh + + return self.transform((w, h), AFFINE, matrix, resample, fillcolor=fillcolor) + + def save(self, fp, format=None, **params): + """ + Saves this image under the given filename. If no format is + specified, the format to use is determined from the filename + extension, if possible. + + Keyword options can be used to provide additional instructions + to the writer. If a writer doesn't recognise an option, it is + silently ignored. The available options are described in the + :doc:`image format documentation + <../handbook/image-file-formats>` for each writer. + + You can use a file object instead of a filename. In this case, + you must always specify the format. The file object must + implement the ``seek``, ``tell``, and ``write`` + methods, and be opened in binary mode. + + :param fp: A filename (string), pathlib.Path object or file object. + :param format: Optional format override. If omitted, the + format to use is determined from the filename extension. + If a file object was used instead of a filename, this + parameter should always be used. + :param params: Extra parameters to the image writer. + :returns: None + :exception ValueError: If the output format could not be determined + from the file name. Use the format option to solve this. + :exception OSError: If the file could not be written. The file + may have been created, and may contain partial data. + """ + + filename = "" + open_fp = False + if isPath(fp): + filename = fp + open_fp = True + elif isinstance(fp, Path): + filename = str(fp) + open_fp = True + if not filename and hasattr(fp, "name") and isPath(fp.name): + # only set the name for metadata purposes + filename = fp.name + + # may mutate self! + self._ensure_mutable() + + save_all = params.pop("save_all", False) + self.encoderinfo = params + self.encoderconfig = () + + preinit() + + ext = os.path.splitext(filename)[1].lower() + + if not format: + if ext not in EXTENSION: + init() + try: + format = EXTENSION[ext] + except KeyError as e: + raise ValueError("unknown file extension: {}".format(ext)) from e + + if format.upper() not in SAVE: + init() + if save_all: + save_handler = SAVE_ALL[format.upper()] + else: + save_handler = SAVE[format.upper()] + + if open_fp: + if params.get("append", False): + # Open also for reading ("+"), because TIFF save_all + # writer needs to go back and edit the written data. + fp = builtins.open(filename, "r+b") + else: + fp = builtins.open(filename, "w+b") + + try: + save_handler(self, fp, filename) + finally: + # do what we can to clean up + if open_fp: + fp.close() + + def seek(self, frame): + """ + Seeks to the given frame in this sequence file. If you seek + beyond the end of the sequence, the method raises an + ``EOFError`` exception. When a sequence file is opened, the + library automatically seeks to frame 0. + + See :py:meth:`~PIL.Image.Image.tell`. + + :param frame: Frame number, starting at 0. + :exception EOFError: If the call attempts to seek beyond the end + of the sequence. + """ + + # overridden by file handlers + if frame != 0: + raise EOFError + + def show(self, title=None, command=None): + """ + Displays this image. This method is mainly intended for debugging purposes. + + This method calls :py:func:`PIL.ImageShow.show` internally. You can use + :py:func:`PIL.ImageShow.register` to override its default behaviour. + + The image is first saved to a temporary file. By default, it will be in + PNG format. + + On Unix, the image is then opened using the **display**, **eog** or + **xv** utility, depending on which one can be found. + + On macOS, the image is opened with the native Preview application. + + On Windows, the image is opened with the standard PNG display utility. + + :param title: Optional title to use for the image window, where possible. + """ + + if command is not None: + warnings.warn( + "The command parameter is deprecated and will be removed in a future " + "release. Use a subclass of ImageShow.Viewer instead.", + DeprecationWarning, + ) + + _show(self, title=title, command=command) + + def split(self): + """ + Split this image into individual bands. This method returns a + tuple of individual image bands from an image. For example, + splitting an "RGB" image creates three new images each + containing a copy of one of the original bands (red, green, + blue). + + If you need only one band, :py:meth:`~PIL.Image.Image.getchannel` + method can be more convenient and faster. + + :returns: A tuple containing bands. + """ + + self.load() + if self.im.bands == 1: + ims = [self.copy()] + else: + ims = map(self._new, self.im.split()) + return tuple(ims) + + def getchannel(self, channel): + """ + Returns an image containing a single channel of the source image. + + :param channel: What channel to return. Could be index + (0 for "R" channel of "RGB") or channel name + ("A" for alpha channel of "RGBA"). + :returns: An image in "L" mode. + + .. versionadded:: 4.3.0 + """ + self.load() + + if isinstance(channel, str): + try: + channel = self.getbands().index(channel) + except ValueError as e: + raise ValueError('The image has no channel "{}"'.format(channel)) from e + + return self._new(self.im.getband(channel)) + + def tell(self): + """ + Returns the current frame number. See :py:meth:`~PIL.Image.Image.seek`. + + :returns: Frame number, starting with 0. + """ + return 0 + + def thumbnail(self, size, resample=BICUBIC, reducing_gap=2.0): + """ + Make this image into a thumbnail. This method modifies the + image to contain a thumbnail version of itself, no larger than + the given size. This method calculates an appropriate thumbnail + size to preserve the aspect of the image, calls the + :py:meth:`~PIL.Image.Image.draft` method to configure the file reader + (where applicable), and finally resizes the image. + + Note that this function modifies the :py:class:`~PIL.Image.Image` + object in place. If you need to use the full resolution image as well, + apply this method to a :py:meth:`~PIL.Image.Image.copy` of the original + image. + + :param size: Requested size. + :param resample: Optional resampling filter. This can be one + of :py:data:`PIL.Image.NEAREST`, :py:data:`PIL.Image.BILINEAR`, + :py:data:`PIL.Image.BICUBIC`, or :py:data:`PIL.Image.LANCZOS`. + If omitted, it defaults to :py:data:`PIL.Image.BICUBIC`. + (was :py:data:`PIL.Image.NEAREST` prior to version 2.5.0). + See: :ref:`concept-filters`. + :param reducing_gap: Apply optimization by resizing the image + in two steps. First, reducing the image by integer times + using :py:meth:`~PIL.Image.Image.reduce` or + :py:meth:`~PIL.Image.Image.draft` for JPEG images. + Second, resizing using regular resampling. The last step + changes size no less than by ``reducing_gap`` times. + ``reducing_gap`` may be None (no first step is performed) + or should be greater than 1.0. The bigger ``reducing_gap``, + the closer the result to the fair resampling. + The smaller ``reducing_gap``, the faster resizing. + With ``reducing_gap`` greater or equal to 3.0, the result is + indistinguishable from fair resampling in most cases. + The default value is 2.0 (very close to fair resampling + while still being faster in many cases). + :returns: None + """ + + x, y = map(math.floor, size) + if x >= self.width and y >= self.height: + return + + def round_aspect(number, key): + return max(min(math.floor(number), math.ceil(number), key=key), 1) + + # preserve aspect ratio + aspect = self.width / self.height + if x / y >= aspect: + x = round_aspect(y * aspect, key=lambda n: abs(aspect - n / y)) + else: + y = round_aspect( + x / aspect, key=lambda n: 0 if n == 0 else abs(aspect - x / n) + ) + size = (x, y) + + box = None + if reducing_gap is not None: + res = self.draft(None, (size[0] * reducing_gap, size[1] * reducing_gap)) + if res is not None: + box = res[1] + + if self.size != size: + im = self.resize(size, resample, box=box, reducing_gap=reducing_gap) + + self.im = im.im + self._size = size + self.mode = self.im.mode + + self.readonly = 0 + self.pyaccess = None + + # FIXME: the different transform methods need further explanation + # instead of bloating the method docs, add a separate chapter. + def transform( + self, size, method, data=None, resample=NEAREST, fill=1, fillcolor=None + ): + """ + Transforms this image. This method creates a new image with the + given size, and the same mode as the original, and copies data + to the new image using the given transform. + + :param size: The output size. + :param method: The transformation method. This is one of + :py:data:`PIL.Image.EXTENT` (cut out a rectangular subregion), + :py:data:`PIL.Image.AFFINE` (affine transform), + :py:data:`PIL.Image.PERSPECTIVE` (perspective transform), + :py:data:`PIL.Image.QUAD` (map a quadrilateral to a rectangle), or + :py:data:`PIL.Image.MESH` (map a number of source quadrilaterals + in one operation). + + It may also be an :py:class:`~PIL.Image.ImageTransformHandler` + object:: + + class Example(Image.ImageTransformHandler): + def transform(size, method, data, resample, fill=1): + # Return result + + It may also be an object with a :py:meth:`~method.getdata` method + that returns a tuple supplying new **method** and **data** values:: + + class Example: + def getdata(self): + method = Image.EXTENT + data = (0, 0, 100, 100) + return method, data + :param data: Extra data to the transformation method. + :param resample: Optional resampling filter. It can be one of + :py:data:`PIL.Image.NEAREST` (use nearest neighbour), + :py:data:`PIL.Image.BILINEAR` (linear interpolation in a 2x2 + environment), or :py:data:`PIL.Image.BICUBIC` (cubic spline + interpolation in a 4x4 environment). If omitted, or if the image + has mode "1" or "P", it is set to :py:data:`PIL.Image.NEAREST`. + See: :ref:`concept-filters`. + :param fill: If **method** is an + :py:class:`~PIL.Image.ImageTransformHandler` object, this is one of + the arguments passed to it. Otherwise, it is unused. + :param fillcolor: Optional fill color for the area outside the + transform in the output image. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if self.mode == "LA": + return ( + self.convert("La") + .transform(size, method, data, resample, fill, fillcolor) + .convert("LA") + ) + + if self.mode == "RGBA": + return ( + self.convert("RGBa") + .transform(size, method, data, resample, fill, fillcolor) + .convert("RGBA") + ) + + if isinstance(method, ImageTransformHandler): + return method.transform(size, self, resample=resample, fill=fill) + + if hasattr(method, "getdata"): + # compatibility w. old-style transform objects + method, data = method.getdata() + + if data is None: + raise ValueError("missing method data") + + im = new(self.mode, size, fillcolor) + im.info = self.info.copy() + if method == MESH: + # list of quads + for box, quad in data: + im.__transformer(box, self, QUAD, quad, resample, fillcolor is None) + else: + im.__transformer( + (0, 0) + size, self, method, data, resample, fillcolor is None + ) + + return im + + def __transformer(self, box, image, method, data, resample=NEAREST, fill=1): + w = box[2] - box[0] + h = box[3] - box[1] + + if method == AFFINE: + data = data[0:6] + + elif method == EXTENT: + # convert extent to an affine transform + x0, y0, x1, y1 = data + xs = (x1 - x0) / w + ys = (y1 - y0) / h + method = AFFINE + data = (xs, 0, x0, 0, ys, y0) + + elif method == PERSPECTIVE: + data = data[0:8] + + elif method == QUAD: + # quadrilateral warp. data specifies the four corners + # given as NW, SW, SE, and NE. + nw = data[0:2] + sw = data[2:4] + se = data[4:6] + ne = data[6:8] + x0, y0 = nw + As = 1.0 / w + At = 1.0 / h + data = ( + x0, + (ne[0] - x0) * As, + (sw[0] - x0) * At, + (se[0] - sw[0] - ne[0] + x0) * As * At, + y0, + (ne[1] - y0) * As, + (sw[1] - y0) * At, + (se[1] - sw[1] - ne[1] + y0) * As * At, + ) + + else: + raise ValueError("unknown transformation method") + + if resample not in (NEAREST, BILINEAR, BICUBIC): + if resample in (BOX, HAMMING, LANCZOS): + message = { + BOX: "Image.BOX", + HAMMING: "Image.HAMMING", + LANCZOS: "Image.LANCZOS/Image.ANTIALIAS", + }[resample] + " ({}) cannot be used.".format(resample) + else: + message = "Unknown resampling filter ({}).".format(resample) + + filters = [ + "{} ({})".format(filter[1], filter[0]) + for filter in ( + (NEAREST, "Image.NEAREST"), + (BILINEAR, "Image.BILINEAR"), + (BICUBIC, "Image.BICUBIC"), + ) + ] + raise ValueError( + message + " Use " + ", ".join(filters[:-1]) + " or " + filters[-1] + ) + + image.load() + + self.load() + + if image.mode in ("1", "P"): + resample = NEAREST + + self.im.transform2(box, image.im, method, data, resample, fill) + + def transpose(self, method): + """ + Transpose image (flip or rotate in 90 degree steps) + + :param method: One of :py:data:`PIL.Image.FLIP_LEFT_RIGHT`, + :py:data:`PIL.Image.FLIP_TOP_BOTTOM`, :py:data:`PIL.Image.ROTATE_90`, + :py:data:`PIL.Image.ROTATE_180`, :py:data:`PIL.Image.ROTATE_270`, + :py:data:`PIL.Image.TRANSPOSE` or :py:data:`PIL.Image.TRANSVERSE`. + :returns: Returns a flipped or rotated copy of this image. + """ + + self.load() + return self._new(self.im.transpose(method)) + + def effect_spread(self, distance): + """ + Randomly spread pixels in an image. + + :param distance: Distance to spread pixels. + """ + self.load() + return self._new(self.im.effect_spread(distance)) + + def toqimage(self): + """Returns a QImage copy of this image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + raise ImportError("Qt bindings are not installed") + return ImageQt.toqimage(self) + + def toqpixmap(self): + """Returns a QPixmap copy of this image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + raise ImportError("Qt bindings are not installed") + return ImageQt.toqpixmap(self) + + +# -------------------------------------------------------------------- +# Abstract handlers. + + +class ImagePointHandler: + # used as a mixin by point transforms (for use with im.point) + pass + + +class ImageTransformHandler: + # used as a mixin by geometry transforms (for use with im.transform) + pass + + +# -------------------------------------------------------------------- +# Factories + +# +# Debugging + + +def _wedge(): + """Create greyscale wedge (for debugging only)""" + + return Image()._new(core.wedge("L")) + + +def _check_size(size): + """ + Common check to enforce type and sanity check on size tuples + + :param size: Should be a 2 tuple of (width, height) + :returns: True, or raises a ValueError + """ + + if not isinstance(size, (list, tuple)): + raise ValueError("Size must be a tuple") + if len(size) != 2: + raise ValueError("Size must be a tuple of length 2") + if size[0] < 0 or size[1] < 0: + raise ValueError("Width and height must be >= 0") + + return True + + +def new(mode, size, color=0): + """ + Creates a new image with the given mode and size. + + :param mode: The mode to use for the new image. See: + :ref:`concept-modes`. + :param size: A 2-tuple, containing (width, height) in pixels. + :param color: What color to use for the image. Default is black. + If given, this should be a single integer or floating point value + for single-band modes, and a tuple for multi-band modes (one value + per band). When creating RGB images, you can also use color + strings as supported by the ImageColor module. If the color is + None, the image is not initialised. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + _check_size(size) + + if color is None: + # don't initialize + return Image()._new(core.new(mode, size)) + + if isinstance(color, str): + # css3-style specifier + + from . import ImageColor + + color = ImageColor.getcolor(color, mode) + + im = Image() + if mode == "P" and isinstance(color, (list, tuple)) and len(color) in [3, 4]: + # RGB or RGBA value for a P image + from . import ImagePalette + + im.palette = ImagePalette.ImagePalette() + color = im.palette.getcolor(color) + return im._new(core.fill(mode, size, color)) + + +def frombytes(mode, size, data, decoder_name="raw", *args): + """ + Creates a copy of an image memory from pixel data in a buffer. + + In its simplest form, this function takes three arguments + (mode, size, and unpacked pixel data). + + You can also use any pixel decoder supported by PIL. For more + information on available decoders, see the section + :ref:`Writing Your Own File Decoder `. + + Note that this function decodes pixel data only, not entire images. + If you have an entire image in a string, wrap it in a + :py:class:`~io.BytesIO` object, and use :py:func:`~PIL.Image.open` to load + it. + + :param mode: The image mode. See: :ref:`concept-modes`. + :param size: The image size. + :param data: A byte buffer containing raw data for the given mode. + :param decoder_name: What decoder to use. + :param args: Additional parameters for the given decoder. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + _check_size(size) + + # may pass tuple instead of argument list + if len(args) == 1 and isinstance(args[0], tuple): + args = args[0] + + if decoder_name == "raw" and args == (): + args = mode + + im = new(mode, size) + im.frombytes(data, decoder_name, args) + return im + + +def fromstring(*args, **kw): + raise NotImplementedError( + "fromstring() has been removed. Please call frombytes() instead." + ) + + +def frombuffer(mode, size, data, decoder_name="raw", *args): + """ + Creates an image memory referencing pixel data in a byte buffer. + + This function is similar to :py:func:`~PIL.Image.frombytes`, but uses data + in the byte buffer, where possible. This means that changes to the + original buffer object are reflected in this image). Not all modes can + share memory; supported modes include "L", "RGBX", "RGBA", and "CMYK". + + Note that this function decodes pixel data only, not entire images. + If you have an entire image file in a string, wrap it in a + **BytesIO** object, and use :py:func:`~PIL.Image.open` to load it. + + In the current version, the default parameters used for the "raw" decoder + differs from that used for :py:func:`~PIL.Image.frombytes`. This is a + bug, and will probably be fixed in a future release. The current release + issues a warning if you do this; to disable the warning, you should provide + the full set of parameters. See below for details. + + :param mode: The image mode. See: :ref:`concept-modes`. + :param size: The image size. + :param data: A bytes or other buffer object containing raw + data for the given mode. + :param decoder_name: What decoder to use. + :param args: Additional parameters for the given decoder. For the + default encoder ("raw"), it's recommended that you provide the + full set of parameters:: + + frombuffer(mode, size, data, "raw", mode, 0, 1) + + :returns: An :py:class:`~PIL.Image.Image` object. + + .. versionadded:: 1.1.4 + """ + + _check_size(size) + + # may pass tuple instead of argument list + if len(args) == 1 and isinstance(args[0], tuple): + args = args[0] + + if decoder_name == "raw": + if args == (): + args = mode, 0, 1 + if args[0] in _MAPMODES: + im = new(mode, (1, 1)) + im = im._new(core.map_buffer(data, size, decoder_name, 0, args)) + im.readonly = 1 + return im + + return frombytes(mode, size, data, decoder_name, args) + + +def fromarray(obj, mode=None): + """ + Creates an image memory from an object exporting the array interface + (using the buffer protocol). + + If **obj** is not contiguous, then the tobytes method is called + and :py:func:`~PIL.Image.frombuffer` is used. + + If you have an image in NumPy:: + + from PIL import Image + import numpy as np + im = Image.open('hopper.jpg') + a = np.asarray(im) + + Then this can be used to convert it to a Pillow image:: + + im = Image.fromarray(a) + + :param obj: Object with array interface + :param mode: Mode to use (will be determined from type if None) + See: :ref:`concept-modes`. + :returns: An image object. + + .. versionadded:: 1.1.6 + """ + arr = obj.__array_interface__ + shape = arr["shape"] + ndim = len(shape) + strides = arr.get("strides", None) + if mode is None: + try: + typekey = (1, 1) + shape[2:], arr["typestr"] + except KeyError as e: + raise TypeError("Cannot handle this data type") from e + try: + mode, rawmode = _fromarray_typemap[typekey] + except KeyError as e: + raise TypeError("Cannot handle this data type: %s, %s" % typekey) from e + else: + rawmode = mode + if mode in ["1", "L", "I", "P", "F"]: + ndmax = 2 + elif mode == "RGB": + ndmax = 3 + else: + ndmax = 4 + if ndim > ndmax: + raise ValueError("Too many dimensions: %d > %d." % (ndim, ndmax)) + + size = 1 if ndim == 1 else shape[1], shape[0] + if strides is not None: + if hasattr(obj, "tobytes"): + obj = obj.tobytes() + else: + obj = obj.tostring() + + return frombuffer(mode, size, obj, "raw", rawmode, 0, 1) + + +def fromqimage(im): + """Creates an image instance from a QImage image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + raise ImportError("Qt bindings are not installed") + return ImageQt.fromqimage(im) + + +def fromqpixmap(im): + """Creates an image instance from a QPixmap image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + raise ImportError("Qt bindings are not installed") + return ImageQt.fromqpixmap(im) + + +_fromarray_typemap = { + # (shape, typestr) => mode, rawmode + # first two members of shape are set to one + ((1, 1), "|b1"): ("1", "1;8"), + ((1, 1), "|u1"): ("L", "L"), + ((1, 1), "|i1"): ("I", "I;8"), + ((1, 1), "u2"): ("I", "I;16B"), + ((1, 1), "i2"): ("I", "I;16BS"), + ((1, 1), "u4"): ("I", "I;32B"), + ((1, 1), "i4"): ("I", "I;32BS"), + ((1, 1), "f4"): ("F", "F;32BF"), + ((1, 1), "f8"): ("F", "F;64BF"), + ((1, 1, 2), "|u1"): ("LA", "LA"), + ((1, 1, 3), "|u1"): ("RGB", "RGB"), + ((1, 1, 4), "|u1"): ("RGBA", "RGBA"), +} + +# shortcuts +_fromarray_typemap[((1, 1), _ENDIAN + "i4")] = ("I", "I") +_fromarray_typemap[((1, 1), _ENDIAN + "f4")] = ("F", "F") + + +def _decompression_bomb_check(size): + if MAX_IMAGE_PIXELS is None: + return + + pixels = size[0] * size[1] + + if pixels > 2 * MAX_IMAGE_PIXELS: + raise DecompressionBombError( + "Image size (%d pixels) exceeds limit of %d pixels, " + "could be decompression bomb DOS attack." % (pixels, 2 * MAX_IMAGE_PIXELS) + ) + + if pixels > MAX_IMAGE_PIXELS: + warnings.warn( + "Image size (%d pixels) exceeds limit of %d pixels, " + "could be decompression bomb DOS attack." % (pixels, MAX_IMAGE_PIXELS), + DecompressionBombWarning, + ) + + +def open(fp, mode="r"): + """ + Opens and identifies the given image file. + + This is a lazy operation; this function identifies the file, but + the file remains open and the actual image data is not read from + the file until you try to process the data (or call the + :py:meth:`~PIL.Image.Image.load` method). See + :py:func:`~PIL.Image.new`. See :ref:`file-handling`. + + :param fp: A filename (string), pathlib.Path object or a file object. + The file object must implement :py:meth:`~file.read`, + :py:meth:`~file.seek`, and :py:meth:`~file.tell` methods, + and be opened in binary mode. + :param mode: The mode. If given, this argument must be "r". + :returns: An :py:class:`~PIL.Image.Image` object. + :exception FileNotFoundError: If the file cannot be found. + :exception PIL.UnidentifiedImageError: If the image cannot be opened and + identified. + :exception ValueError: If the ``mode`` is not "r", or if a ``StringIO`` + instance is used for ``fp``. + """ + + if mode != "r": + raise ValueError("bad mode %r" % mode) + elif isinstance(fp, io.StringIO): + raise ValueError( + "StringIO cannot be used to open an image. " + "Binary data must be used instead." + ) + + exclusive_fp = False + filename = "" + if isinstance(fp, Path): + filename = str(fp.resolve()) + elif isPath(fp): + filename = fp + + if filename: + fp = builtins.open(filename, "rb") + exclusive_fp = True + + try: + fp.seek(0) + except (AttributeError, io.UnsupportedOperation): + fp = io.BytesIO(fp.read()) + exclusive_fp = True + + prefix = fp.read(16) + + preinit() + + accept_warnings = [] + + def _open_core(fp, filename, prefix): + for i in ID: + try: + factory, accept = OPEN[i] + result = not accept or accept(prefix) + if type(result) in [str, bytes]: + accept_warnings.append(result) + elif result: + fp.seek(0) + im = factory(fp, filename) + _decompression_bomb_check(im.size) + return im + except (SyntaxError, IndexError, TypeError, struct.error): + # Leave disabled by default, spams the logs with image + # opening failures that are entirely expected. + # logger.debug("", exc_info=True) + continue + except BaseException: + if exclusive_fp: + fp.close() + raise + return None + + im = _open_core(fp, filename, prefix) + + if im is None: + if init(): + im = _open_core(fp, filename, prefix) + + if im: + im._exclusive_fp = exclusive_fp + return im + + if exclusive_fp: + fp.close() + for message in accept_warnings: + warnings.warn(message) + raise UnidentifiedImageError( + "cannot identify image file %r" % (filename if filename else fp) + ) + + +# +# Image processing. + + +def alpha_composite(im1, im2): + """ + Alpha composite im2 over im1. + + :param im1: The first image. Must have mode RGBA. + :param im2: The second image. Must have mode RGBA, and the same size as + the first image. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + im1.load() + im2.load() + return im1._new(core.alpha_composite(im1.im, im2.im)) + + +def blend(im1, im2, alpha): + """ + Creates a new image by interpolating between two input images, using + a constant alpha.:: + + out = image1 * (1.0 - alpha) + image2 * alpha + + :param im1: The first image. + :param im2: The second image. Must have the same mode and size as + the first image. + :param alpha: The interpolation alpha factor. If alpha is 0.0, a + copy of the first image is returned. If alpha is 1.0, a copy of + the second image is returned. There are no restrictions on the + alpha value. If necessary, the result is clipped to fit into + the allowed output range. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + im1.load() + im2.load() + return im1._new(core.blend(im1.im, im2.im, alpha)) + + +def composite(image1, image2, mask): + """ + Create composite image by blending images using a transparency mask. + + :param image1: The first image. + :param image2: The second image. Must have the same mode and + size as the first image. + :param mask: A mask image. This image can have mode + "1", "L", or "RGBA", and must have the same size as the + other two images. + """ + + image = image2.copy() + image.paste(image1, None, mask) + return image + + +def eval(image, *args): + """ + Applies the function (which should take one argument) to each pixel + in the given image. If the image has more than one band, the same + function is applied to each band. Note that the function is + evaluated once for each possible pixel value, so you cannot use + random components or other generators. + + :param image: The input image. + :param function: A function object, taking one integer argument. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + return image.point(args[0]) + + +def merge(mode, bands): + """ + Merge a set of single band images into a new multiband image. + + :param mode: The mode to use for the output image. See: + :ref:`concept-modes`. + :param bands: A sequence containing one single-band image for + each band in the output image. All bands must have the + same size. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if getmodebands(mode) != len(bands) or "*" in mode: + raise ValueError("wrong number of bands") + for band in bands[1:]: + if band.mode != getmodetype(mode): + raise ValueError("mode mismatch") + if band.size != bands[0].size: + raise ValueError("size mismatch") + for band in bands: + band.load() + return bands[0]._new(core.merge(mode, *[b.im for b in bands])) + + +# -------------------------------------------------------------------- +# Plugin registry + + +def register_open(id, factory, accept=None): + """ + Register an image file plugin. This function should not be used + in application code. + + :param id: An image format identifier. + :param factory: An image file factory method. + :param accept: An optional function that can be used to quickly + reject images having another format. + """ + id = id.upper() + ID.append(id) + OPEN[id] = factory, accept + + +def register_mime(id, mimetype): + """ + Registers an image MIME type. This function should not be used + in application code. + + :param id: An image format identifier. + :param mimetype: The image MIME type for this format. + """ + MIME[id.upper()] = mimetype + + +def register_save(id, driver): + """ + Registers an image save function. This function should not be + used in application code. + + :param id: An image format identifier. + :param driver: A function to save images in this format. + """ + SAVE[id.upper()] = driver + + +def register_save_all(id, driver): + """ + Registers an image function to save all the frames + of a multiframe format. This function should not be + used in application code. + + :param id: An image format identifier. + :param driver: A function to save images in this format. + """ + SAVE_ALL[id.upper()] = driver + + +def register_extension(id, extension): + """ + Registers an image extension. This function should not be + used in application code. + + :param id: An image format identifier. + :param extension: An extension used for this format. + """ + EXTENSION[extension.lower()] = id.upper() + + +def register_extensions(id, extensions): + """ + Registers image extensions. This function should not be + used in application code. + + :param id: An image format identifier. + :param extensions: A list of extensions used for this format. + """ + for extension in extensions: + register_extension(id, extension) + + +def registered_extensions(): + """ + Returns a dictionary containing all file extensions belonging + to registered plugins + """ + if not EXTENSION: + init() + return EXTENSION + + +def register_decoder(name, decoder): + """ + Registers an image decoder. This function should not be + used in application code. + + :param name: The name of the decoder + :param decoder: A callable(mode, args) that returns an + ImageFile.PyDecoder object + + .. versionadded:: 4.1.0 + """ + DECODERS[name] = decoder + + +def register_encoder(name, encoder): + """ + Registers an image encoder. This function should not be + used in application code. + + :param name: The name of the encoder + :param encoder: A callable(mode, args) that returns an + ImageFile.PyEncoder object + + .. versionadded:: 4.1.0 + """ + ENCODERS[name] = encoder + + +# -------------------------------------------------------------------- +# Simple display support. + + +def _show(image, **options): + options["_internal_pillow"] = True + _showxv(image, **options) + + +def _showxv(image, title=None, **options): + from . import ImageShow + + if "_internal_pillow" in options: + del options["_internal_pillow"] + else: + warnings.warn( + "_showxv is deprecated and will be removed in a future release. " + "Use Image.show instead.", + DeprecationWarning, + ) + ImageShow.show(image, title, **options) + + +# -------------------------------------------------------------------- +# Effects + + +def effect_mandelbrot(size, extent, quality): + """ + Generate a Mandelbrot set covering the given extent. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param extent: The extent to cover, as a 4-tuple: + (x0, y0, x1, y2). + :param quality: Quality. + """ + return Image()._new(core.effect_mandelbrot(size, extent, quality)) + + +def effect_noise(size, sigma): + """ + Generate Gaussian noise centered around 128. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param sigma: Standard deviation of noise. + """ + return Image()._new(core.effect_noise(size, sigma)) + + +def linear_gradient(mode): + """ + Generate 256x256 linear gradient from black to white, top to bottom. + + :param mode: Input mode. + """ + return Image()._new(core.linear_gradient(mode)) + + +def radial_gradient(mode): + """ + Generate 256x256 radial gradient from black to white, centre to edge. + + :param mode: Input mode. + """ + return Image()._new(core.radial_gradient(mode)) + + +# -------------------------------------------------------------------- +# Resources + + +def _apply_env_variables(env=None): + if env is None: + env = os.environ + + for var_name, setter in [ + ("PILLOW_ALIGNMENT", core.set_alignment), + ("PILLOW_BLOCK_SIZE", core.set_block_size), + ("PILLOW_BLOCKS_MAX", core.set_blocks_max), + ]: + if var_name not in env: + continue + + var = env[var_name].lower() + + units = 1 + for postfix, mul in [("k", 1024), ("m", 1024 * 1024)]: + if var.endswith(postfix): + units = mul + var = var[: -len(postfix)] + + try: + var = int(var) * units + except ValueError: + warnings.warn("{} is not int".format(var_name)) + continue + + try: + setter(var) + except ValueError as e: + warnings.warn("{}: {}".format(var_name, e)) + + +_apply_env_variables() +atexit.register(core.clear_cache) + + +class Exif(MutableMapping): + endian = "<" + + def __init__(self): + self._data = {} + self._ifds = {} + self._info = None + self._loaded_exif = None + + def _fixup(self, value): + try: + if len(value) == 1 and isinstance(value, tuple): + return value[0] + except Exception: + pass + return value + + def _fixup_dict(self, src_dict): + # Helper function for _getexif() + # returns a dict with any single item tuples/lists as individual values + return {k: self._fixup(v) for k, v in src_dict.items()} + + def _get_ifd_dict(self, tag): + try: + # an offset pointer to the location of the nested embedded IFD. + # It should be a long, but may be corrupted. + self.fp.seek(self[tag]) + except (KeyError, TypeError): + pass + else: + from . import TiffImagePlugin + + info = TiffImagePlugin.ImageFileDirectory_v2(self.head) + info.load(self.fp) + return self._fixup_dict(info) + + def load(self, data): + # Extract EXIF information. This is highly experimental, + # and is likely to be replaced with something better in a future + # version. + + # The EXIF record consists of a TIFF file embedded in a JPEG + # application marker (!). + if data == self._loaded_exif: + return + self._loaded_exif = data + self._data.clear() + self._ifds.clear() + self._info = None + if not data: + return + + if data.startswith(b"Exif\x00\x00"): + data = data[6:] + self.fp = io.BytesIO(data) + self.head = self.fp.read(8) + # process dictionary + from . import TiffImagePlugin + + self._info = TiffImagePlugin.ImageFileDirectory_v2(self.head) + self.endian = self._info._endian + self.fp.seek(self._info.next) + self._info.load(self.fp) + + # get EXIF extension + ifd = self._get_ifd_dict(0x8769) + if ifd: + self._data.update(ifd) + self._ifds[0x8769] = ifd + + def tobytes(self, offset=8): + from . import TiffImagePlugin + + if self.endian == "<": + head = b"II\x2A\x00\x08\x00\x00\x00" + else: + head = b"MM\x00\x2A\x00\x00\x00\x08" + ifd = TiffImagePlugin.ImageFileDirectory_v2(ifh=head) + for tag, value in self.items(): + ifd[tag] = value + return b"Exif\x00\x00" + head + ifd.tobytes(offset) + + def get_ifd(self, tag): + if tag not in self._ifds and tag in self: + if tag in [0x8825, 0xA005]: + # gpsinfo, interop + self._ifds[tag] = self._get_ifd_dict(tag) + elif tag == 0x927C: # makernote + from .TiffImagePlugin import ImageFileDirectory_v2 + + if self[0x927C][:8] == b"FUJIFILM": + exif_data = self[0x927C] + ifd_offset = i32le(exif_data[8:12]) + ifd_data = exif_data[ifd_offset:] + + makernote = {} + for i in range(0, struct.unpack(" 4: + (offset,) = struct.unpack("H", ifd_data[:2])[0]): + ifd_tag, typ, count, data = struct.unpack( + ">HHL4s", ifd_data[i * 12 + 2 : (i + 1) * 12 + 2] + ) + if ifd_tag == 0x1101: + # CameraInfo + (offset,) = struct.unpack(">L", data) + self.fp.seek(offset) + + camerainfo = {"ModelID": self.fp.read(4)} + + self.fp.read(4) + # Seconds since 2000 + camerainfo["TimeStamp"] = i32le(self.fp.read(12)) + + self.fp.read(4) + camerainfo["InternalSerialNumber"] = self.fp.read(4) + + self.fp.read(12) + parallax = self.fp.read(4) + handler = ImageFileDirectory_v2._load_dispatch[ + TiffTags.FLOAT + ][1] + camerainfo["Parallax"] = handler( + ImageFileDirectory_v2(), parallax, False + ) + + self.fp.read(4) + camerainfo["Category"] = self.fp.read(2) + + makernote = {0x1101: dict(self._fixup_dict(camerainfo))} + self._ifds[0x927C] = makernote + return self._ifds.get(tag, {}) + + def __str__(self): + if self._info is not None: + # Load all keys into self._data + for tag in self._info.keys(): + self[tag] + + return str(self._data) + + def __len__(self): + keys = set(self._data) + if self._info is not None: + keys.update(self._info) + return len(keys) + + def __getitem__(self, tag): + if self._info is not None and tag not in self._data and tag in self._info: + self._data[tag] = self._fixup(self._info[tag]) + if tag == 0x8825: + self._data[tag] = self.get_ifd(tag) + del self._info[tag] + return self._data[tag] + + def __contains__(self, tag): + return tag in self._data or (self._info is not None and tag in self._info) + + def __setitem__(self, tag, value): + if self._info is not None and tag in self._info: + del self._info[tag] + self._data[tag] = value + + def __delitem__(self, tag): + if self._info is not None and tag in self._info: + del self._info[tag] + del self._data[tag] + + def __iter__(self): + keys = set(self._data) + if self._info is not None: + keys.update(self._info) + return iter(keys) diff --git a/venv/Lib/site-packages/PIL/ImageChops.py b/venv/Lib/site-packages/PIL/ImageChops.py new file mode 100644 index 00000000..c1a2574e --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageChops.py @@ -0,0 +1,328 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard channel operations +# +# History: +# 1996-03-24 fl Created +# 1996-08-13 fl Added logical operations (for "1" images) +# 2000-10-12 fl Added offset method (from Image.py) +# +# Copyright (c) 1997-2000 by Secret Labs AB +# Copyright (c) 1996-2000 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image + + +def constant(image, value): + """Fill a channel with a given grey level. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return Image.new("L", image.size, value) + + +def duplicate(image): + """Copy a channel. Alias for :py:meth:`PIL.Image.Image.copy`. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return image.copy() + + +def invert(image): + """ + Invert an image (channel). + + .. code-block:: python + + out = MAX - image + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image.load() + return image._new(image.im.chop_invert()) + + +def lighter(image1, image2): + """ + Compares the two images, pixel by pixel, and returns a new image containing + the lighter values. + + .. code-block:: python + + out = max(image1, image2) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_lighter(image2.im)) + + +def darker(image1, image2): + """ + Compares the two images, pixel by pixel, and returns a new image containing + the darker values. + + .. code-block:: python + + out = min(image1, image2) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_darker(image2.im)) + + +def difference(image1, image2): + """ + Returns the absolute value of the pixel-by-pixel difference between the two + images. + + .. code-block:: python + + out = abs(image1 - image2) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_difference(image2.im)) + + +def multiply(image1, image2): + """ + Superimposes two images on top of each other. + + If you multiply an image with a solid black image, the result is black. If + you multiply with a solid white image, the image is unaffected. + + .. code-block:: python + + out = image1 * image2 / MAX + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_multiply(image2.im)) + + +def screen(image1, image2): + """ + Superimposes two inverted images on top of each other. + + .. code-block:: python + + out = MAX - ((MAX - image1) * (MAX - image2) / MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_screen(image2.im)) + + +def soft_light(image1, image2): + """ + Superimposes two images on top of each other using the Soft Light algorithm + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_soft_light(image2.im)) + + +def hard_light(image1, image2): + """ + Superimposes two images on top of each other using the Hard Light algorithm + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_hard_light(image2.im)) + + +def overlay(image1, image2): + """ + Superimposes two images on top of each other using the Overlay algorithm + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_overlay(image2.im)) + + +def add(image1, image2, scale=1.0, offset=0): + """ + Adds two images, dividing the result by scale and adding the + offset. If omitted, scale defaults to 1.0, and offset to 0.0. + + .. code-block:: python + + out = ((image1 + image2) / scale + offset) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_add(image2.im, scale, offset)) + + +def subtract(image1, image2, scale=1.0, offset=0): + """ + Subtracts two images, dividing the result by scale and adding the offset. + If omitted, scale defaults to 1.0, and offset to 0.0. + + .. code-block:: python + + out = ((image1 - image2) / scale + offset) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_subtract(image2.im, scale, offset)) + + +def add_modulo(image1, image2): + """Add two images, without clipping the result. + + .. code-block:: python + + out = ((image1 + image2) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_add_modulo(image2.im)) + + +def subtract_modulo(image1, image2): + """Subtract two images, without clipping the result. + + .. code-block:: python + + out = ((image1 - image2) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_subtract_modulo(image2.im)) + + +def logical_and(image1, image2): + """Logical AND between two images. + + Both of the images must have mode "1". If you would like to perform a + logical AND on an image with a mode other than "1", try + :py:meth:`~PIL.ImageChops.multiply` instead, using a black-and-white mask + as the second image. + + .. code-block:: python + + out = ((image1 and image2) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_and(image2.im)) + + +def logical_or(image1, image2): + """Logical OR between two images. + + Both of the images must have mode "1". + + .. code-block:: python + + out = ((image1 or image2) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_or(image2.im)) + + +def logical_xor(image1, image2): + """Logical XOR between two images. + + Both of the images must have mode "1". + + .. code-block:: python + + out = ((bool(image1) != bool(image2)) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_xor(image2.im)) + + +def blend(image1, image2, alpha): + """Blend images using constant transparency weight. Alias for + :py:meth:`PIL.Image.Image.blend`. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return Image.blend(image1, image2, alpha) + + +def composite(image1, image2, mask): + """Create composite using transparency mask. Alias for + :py:meth:`PIL.Image.Image.composite`. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return Image.composite(image1, image2, mask) + + +def offset(image, xoffset, yoffset=None): + """Returns a copy of the image where data has been offset by the given + distances. Data wraps around the edges. If **yoffset** is omitted, it + is assumed to be equal to **xoffset**. + + :param xoffset: The horizontal distance. + :param yoffset: The vertical distance. If omitted, both + distances are set to the same value. + :rtype: :py:class:`~PIL.Image.Image` + """ + + if yoffset is None: + yoffset = xoffset + image.load() + return image._new(image.im.offset(xoffset, yoffset)) diff --git a/venv/Lib/site-packages/PIL/ImageCms.py b/venv/Lib/site-packages/PIL/ImageCms.py new file mode 100644 index 00000000..1c4ce5a0 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageCms.py @@ -0,0 +1,990 @@ +# The Python Imaging Library. +# $Id$ + +# Optional color management support, based on Kevin Cazabon's PyCMS +# library. + +# History: + +# 2009-03-08 fl Added to PIL. + +# Copyright (C) 2002-2003 Kevin Cazabon +# Copyright (c) 2009 by Fredrik Lundh +# Copyright (c) 2013 by Eric Soroos + +# See the README file for information on usage and redistribution. See +# below for the original description. + +import sys + +from PIL import Image + +try: + from PIL import _imagingcms +except ImportError as ex: + # Allow error import for doc purposes, but error out when accessing + # anything in core. + from ._util import deferred_error + + _imagingcms = deferred_error(ex) + +DESCRIPTION = """ +pyCMS + + a Python / PIL interface to the littleCMS ICC Color Management System + Copyright (C) 2002-2003 Kevin Cazabon + kevin@cazabon.com + http://www.cazabon.com + + pyCMS home page: http://www.cazabon.com/pyCMS + littleCMS home page: http://www.littlecms.com + (littleCMS is Copyright (C) 1998-2001 Marti Maria) + + Originally released under LGPL. Graciously donated to PIL in + March 2009, for distribution under the standard PIL license + + The pyCMS.py module provides a "clean" interface between Python/PIL and + pyCMSdll, taking care of some of the more complex handling of the direct + pyCMSdll functions, as well as error-checking and making sure that all + relevant data is kept together. + + While it is possible to call pyCMSdll functions directly, it's not highly + recommended. + + Version History: + + 1.0.0 pil Oct 2013 Port to LCMS 2. + + 0.1.0 pil mod March 10, 2009 + + Renamed display profile to proof profile. The proof + profile is the profile of the device that is being + simulated, not the profile of the device which is + actually used to display/print the final simulation + (that'd be the output profile) - also see LCMSAPI.txt + input colorspace -> using 'renderingIntent' -> proof + colorspace -> using 'proofRenderingIntent' -> output + colorspace + + Added LCMS FLAGS support. + Added FLAGS["SOFTPROOFING"] as default flag for + buildProofTransform (otherwise the proof profile/intent + would be ignored). + + 0.1.0 pil March 2009 - added to PIL, as PIL.ImageCms + + 0.0.2 alpha Jan 6, 2002 + + Added try/except statements around type() checks of + potential CObjects... Python won't let you use type() + on them, and raises a TypeError (stupid, if you ask + me!) + + Added buildProofTransformFromOpenProfiles() function. + Additional fixes in DLL, see DLL code for details. + + 0.0.1 alpha first public release, Dec. 26, 2002 + + Known to-do list with current version (of Python interface, not pyCMSdll): + + none + +""" + +VERSION = "1.0.0 pil" + +# --------------------------------------------------------------------. + +core = _imagingcms + +# +# intent/direction values + +INTENT_PERCEPTUAL = 0 +INTENT_RELATIVE_COLORIMETRIC = 1 +INTENT_SATURATION = 2 +INTENT_ABSOLUTE_COLORIMETRIC = 3 + +DIRECTION_INPUT = 0 +DIRECTION_OUTPUT = 1 +DIRECTION_PROOF = 2 + +# +# flags + +FLAGS = { + "MATRIXINPUT": 1, + "MATRIXOUTPUT": 2, + "MATRIXONLY": (1 | 2), + "NOWHITEONWHITEFIXUP": 4, # Don't hot fix scum dot + # Don't create prelinearization tables on precalculated transforms + # (internal use): + "NOPRELINEARIZATION": 16, + "GUESSDEVICECLASS": 32, # Guess device class (for transform2devicelink) + "NOTCACHE": 64, # Inhibit 1-pixel cache + "NOTPRECALC": 256, + "NULLTRANSFORM": 512, # Don't transform anyway + "HIGHRESPRECALC": 1024, # Use more memory to give better accuracy + "LOWRESPRECALC": 2048, # Use less memory to minimize resources + "WHITEBLACKCOMPENSATION": 8192, + "BLACKPOINTCOMPENSATION": 8192, + "GAMUTCHECK": 4096, # Out of Gamut alarm + "SOFTPROOFING": 16384, # Do softproofing + "PRESERVEBLACK": 32768, # Black preservation + "NODEFAULTRESOURCEDEF": 16777216, # CRD special + "GRIDPOINTS": lambda n: ((n) & 0xFF) << 16, # Gridpoints +} + +_MAX_FLAG = 0 +for flag in FLAGS.values(): + if isinstance(flag, int): + _MAX_FLAG = _MAX_FLAG | flag + + +# --------------------------------------------------------------------. +# Experimental PIL-level API +# --------------------------------------------------------------------. + +## +# Profile. + + +class ImageCmsProfile: + def __init__(self, profile): + """ + :param profile: Either a string representing a filename, + a file like object containing a profile or a + low-level profile object + + """ + + if isinstance(profile, str): + self._set(core.profile_open(profile), profile) + elif hasattr(profile, "read"): + self._set(core.profile_frombytes(profile.read())) + elif isinstance(profile, _imagingcms.CmsProfile): + self._set(profile) + else: + raise TypeError("Invalid type for Profile") + + def _set(self, profile, filename=None): + self.profile = profile + self.filename = filename + if profile: + self.product_name = None # profile.product_name + self.product_info = None # profile.product_info + else: + self.product_name = None + self.product_info = None + + def tobytes(self): + """ + Returns the profile in a format suitable for embedding in + saved images. + + :returns: a bytes object containing the ICC profile. + """ + + return core.profile_tobytes(self.profile) + + +class ImageCmsTransform(Image.ImagePointHandler): + + """ + Transform. This can be used with the procedural API, or with the standard + :py:func:`~PIL.Image.Image.point` method. + + Will return the output profile in the ``output.info['icc_profile']``. + """ + + def __init__( + self, + input, + output, + input_mode, + output_mode, + intent=INTENT_PERCEPTUAL, + proof=None, + proof_intent=INTENT_ABSOLUTE_COLORIMETRIC, + flags=0, + ): + if proof is None: + self.transform = core.buildTransform( + input.profile, output.profile, input_mode, output_mode, intent, flags + ) + else: + self.transform = core.buildProofTransform( + input.profile, + output.profile, + proof.profile, + input_mode, + output_mode, + intent, + proof_intent, + flags, + ) + # Note: inputMode and outputMode are for pyCMS compatibility only + self.input_mode = self.inputMode = input_mode + self.output_mode = self.outputMode = output_mode + + self.output_profile = output + + def point(self, im): + return self.apply(im) + + def apply(self, im, imOut=None): + im.load() + if imOut is None: + imOut = Image.new(self.output_mode, im.size, None) + self.transform.apply(im.im.id, imOut.im.id) + imOut.info["icc_profile"] = self.output_profile.tobytes() + return imOut + + def apply_in_place(self, im): + im.load() + if im.mode != self.output_mode: + raise ValueError("mode mismatch") # wrong output mode + self.transform.apply(im.im.id, im.im.id) + im.info["icc_profile"] = self.output_profile.tobytes() + return im + + +def get_display_profile(handle=None): + """ (experimental) Fetches the profile for the current display device. + :returns: ``None`` if the profile is not known. + """ + + if sys.platform != "win32": + return None + + from PIL import ImageWin + + if isinstance(handle, ImageWin.HDC): + profile = core.get_display_profile_win32(handle, 1) + else: + profile = core.get_display_profile_win32(handle or 0) + if profile is None: + return None + return ImageCmsProfile(profile) + + +# --------------------------------------------------------------------. +# pyCMS compatible layer +# --------------------------------------------------------------------. + + +class PyCMSError(Exception): + + """ (pyCMS) Exception class. + This is used for all errors in the pyCMS API. """ + + pass + + +def profileToProfile( + im, + inputProfile, + outputProfile, + renderingIntent=INTENT_PERCEPTUAL, + outputMode=None, + inPlace=False, + flags=0, +): + """ + (pyCMS) Applies an ICC transformation to a given image, mapping from + ``inputProfile`` to ``outputProfile``. + + If the input or output profiles specified are not valid filenames, a + :exc:`PyCMSError` will be raised. If ``inPlace`` is ``True`` and + ``outputMode != im.mode``, a :exc:`PyCMSError` will be raised. + If an error occurs during application of the profiles, + a :exc:`PyCMSError` will be raised. + If ``outputMode`` is not a mode supported by the ``outputProfile`` (or by pyCMS), + a :exc:`PyCMSError` will be raised. + + This function applies an ICC transformation to im from ``inputProfile``'s + color space to ``outputProfile``'s color space using the specified rendering + intent to decide how to handle out-of-gamut colors. + + ``outputMode`` can be used to specify that a color mode conversion is to + be done using these profiles, but the specified profiles must be able + to handle that mode. I.e., if converting im from RGB to CMYK using + profiles, the input profile must handle RGB data, and the output + profile must handle CMYK data. + + :param im: An open :py:class:`~PIL.Image.Image` object (i.e. Image.new(...) + or Image.open(...), etc.) + :param inputProfile: String, as a valid filename path to the ICC input + profile you wish to use for this image, or a profile object + :param outputProfile: String, as a valid filename path to the ICC output + profile you wish to use for this image, or a profile object + :param renderingIntent: Integer (0-3) specifying the rendering intent you + wish to use for the transform + + ImageCms.INTENT_PERCEPTUAL = 0 (DEFAULT) + ImageCms.INTENT_RELATIVE_COLORIMETRIC = 1 + ImageCms.INTENT_SATURATION = 2 + ImageCms.INTENT_ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param outputMode: A valid PIL mode for the output image (i.e. "RGB", + "CMYK", etc.). Note: if rendering the image "inPlace", outputMode + MUST be the same mode as the input, or omitted completely. If + omitted, the outputMode will be the same as the mode of the input + image (im.mode) + :param inPlace: Boolean. If ``True``, the original image is modified in-place, + and ``None`` is returned. If ``False`` (default), a new + :py:class:`~PIL.Image.Image` object is returned with the transform applied. + :param flags: Integer (0-...) specifying additional flags + :returns: Either None or a new :py:class:`~PIL.Image.Image` object, depending on + the value of ``inPlace`` + :exception PyCMSError: + """ + + if outputMode is None: + outputMode = im.mode + + if not isinstance(renderingIntent, int) or not (0 <= renderingIntent <= 3): + raise PyCMSError("renderingIntent must be an integer between 0 and 3") + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + raise PyCMSError("flags must be an integer between 0 and %s" + _MAX_FLAG) + + try: + if not isinstance(inputProfile, ImageCmsProfile): + inputProfile = ImageCmsProfile(inputProfile) + if not isinstance(outputProfile, ImageCmsProfile): + outputProfile = ImageCmsProfile(outputProfile) + transform = ImageCmsTransform( + inputProfile, + outputProfile, + im.mode, + outputMode, + renderingIntent, + flags=flags, + ) + if inPlace: + transform.apply_in_place(im) + imOut = None + else: + imOut = transform.apply(im) + except (OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + return imOut + + +def getOpenProfile(profileFilename): + """ + (pyCMS) Opens an ICC profile file. + + The PyCMSProfile object can be passed back into pyCMS for use in creating + transforms and such (as in ImageCms.buildTransformFromOpenProfiles()). + + If ``profileFilename`` is not a valid filename for an ICC profile, + a :exc:`PyCMSError` will be raised. + + :param profileFilename: String, as a valid filename path to the ICC profile + you wish to open, or a file-like object. + :returns: A CmsProfile class object. + :exception PyCMSError: + """ + + try: + return ImageCmsProfile(profileFilename) + except (OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def buildTransform( + inputProfile, + outputProfile, + inMode, + outMode, + renderingIntent=INTENT_PERCEPTUAL, + flags=0, +): + """ + (pyCMS) Builds an ICC transform mapping from the ``inputProfile`` to the + ``outputProfile``. Use applyTransform to apply the transform to a given + image. + + If the input or output profiles specified are not valid filenames, a + :exc:`PyCMSError` will be raised. If an error occurs during creation + of the transform, a :exc:`PyCMSError` will be raised. + + If ``inMode`` or ``outMode`` are not a mode supported by the ``outputProfile`` + (or by pyCMS), a :exc:`PyCMSError` will be raised. + + This function builds and returns an ICC transform from the ``inputProfile`` + to the ``outputProfile`` using the ``renderingIntent`` to determine what to do + with out-of-gamut colors. It will ONLY work for converting images that + are in ``inMode`` to images that are in ``outMode`` color format (PIL mode, + i.e. "RGB", "RGBA", "CMYK", etc.). + + Building the transform is a fair part of the overhead in + ImageCms.profileToProfile(), so if you're planning on converting multiple + images using the same input/output settings, this can save you time. + Once you have a transform object, it can be used with + ImageCms.applyProfile() to convert images without the need to re-compute + the lookup table for the transform. + + The reason pyCMS returns a class object rather than a handle directly + to the transform is that it needs to keep track of the PIL input/output + modes that the transform is meant for. These attributes are stored in + the ``inMode`` and ``outMode`` attributes of the object (which can be + manually overridden if you really want to, but I don't know of any + time that would be of use, or would even work). + + :param inputProfile: String, as a valid filename path to the ICC input + profile you wish to use for this transform, or a profile object + :param outputProfile: String, as a valid filename path to the ICC output + profile you wish to use for this transform, or a profile object + :param inMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param outMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param renderingIntent: Integer (0-3) specifying the rendering intent you + wish to use for the transform + + ImageCms.INTENT_PERCEPTUAL = 0 (DEFAULT) + ImageCms.INTENT_RELATIVE_COLORIMETRIC = 1 + ImageCms.INTENT_SATURATION = 2 + ImageCms.INTENT_ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param flags: Integer (0-...) specifying additional flags + :returns: A CmsTransform class object. + :exception PyCMSError: + """ + + if not isinstance(renderingIntent, int) or not (0 <= renderingIntent <= 3): + raise PyCMSError("renderingIntent must be an integer between 0 and 3") + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + raise PyCMSError("flags must be an integer between 0 and %s" + _MAX_FLAG) + + try: + if not isinstance(inputProfile, ImageCmsProfile): + inputProfile = ImageCmsProfile(inputProfile) + if not isinstance(outputProfile, ImageCmsProfile): + outputProfile = ImageCmsProfile(outputProfile) + return ImageCmsTransform( + inputProfile, outputProfile, inMode, outMode, renderingIntent, flags=flags + ) + except (OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def buildProofTransform( + inputProfile, + outputProfile, + proofProfile, + inMode, + outMode, + renderingIntent=INTENT_PERCEPTUAL, + proofRenderingIntent=INTENT_ABSOLUTE_COLORIMETRIC, + flags=FLAGS["SOFTPROOFING"], +): + """ + (pyCMS) Builds an ICC transform mapping from the ``inputProfile`` to the + ``outputProfile``, but tries to simulate the result that would be + obtained on the ``proofProfile`` device. + + If the input, output, or proof profiles specified are not valid + filenames, a :exc:`PyCMSError` will be raised. + + If an error occurs during creation of the transform, + a :exc:`PyCMSError` will be raised. + + If ``inMode`` or ``outMode`` are not a mode supported by the ``outputProfile`` + (or by pyCMS), a :exc:`PyCMSError` will be raised. + + This function builds and returns an ICC transform from the ``inputProfile`` + to the ``outputProfile``, but tries to simulate the result that would be + obtained on the ``proofProfile`` device using ``renderingIntent`` and + ``proofRenderingIntent`` to determine what to do with out-of-gamut + colors. This is known as "soft-proofing". It will ONLY work for + converting images that are in ``inMode`` to images that are in outMode + color format (PIL mode, i.e. "RGB", "RGBA", "CMYK", etc.). + + Usage of the resulting transform object is exactly the same as with + ImageCms.buildTransform(). + + Proof profiling is generally used when using an output device to get a + good idea of what the final printed/displayed image would look like on + the ``proofProfile`` device when it's quicker and easier to use the + output device for judging color. Generally, this means that the + output device is a monitor, or a dye-sub printer (etc.), and the simulated + device is something more expensive, complicated, or time consuming + (making it difficult to make a real print for color judgement purposes). + + Soft-proofing basically functions by adjusting the colors on the + output device to match the colors of the device being simulated. However, + when the simulated device has a much wider gamut than the output + device, you may obtain marginal results. + + :param inputProfile: String, as a valid filename path to the ICC input + profile you wish to use for this transform, or a profile object + :param outputProfile: String, as a valid filename path to the ICC output + (monitor, usually) profile you wish to use for this transform, or a + profile object + :param proofProfile: String, as a valid filename path to the ICC proof + profile you wish to use for this transform, or a profile object + :param inMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param outMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param renderingIntent: Integer (0-3) specifying the rendering intent you + wish to use for the input->proof (simulated) transform + + ImageCms.INTENT_PERCEPTUAL = 0 (DEFAULT) + ImageCms.INTENT_RELATIVE_COLORIMETRIC = 1 + ImageCms.INTENT_SATURATION = 2 + ImageCms.INTENT_ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param proofRenderingIntent: Integer (0-3) specifying the rendering intent + you wish to use for proof->output transform + + ImageCms.INTENT_PERCEPTUAL = 0 (DEFAULT) + ImageCms.INTENT_RELATIVE_COLORIMETRIC = 1 + ImageCms.INTENT_SATURATION = 2 + ImageCms.INTENT_ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param flags: Integer (0-...) specifying additional flags + :returns: A CmsTransform class object. + :exception PyCMSError: + """ + + if not isinstance(renderingIntent, int) or not (0 <= renderingIntent <= 3): + raise PyCMSError("renderingIntent must be an integer between 0 and 3") + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + raise PyCMSError("flags must be an integer between 0 and %s" + _MAX_FLAG) + + try: + if not isinstance(inputProfile, ImageCmsProfile): + inputProfile = ImageCmsProfile(inputProfile) + if not isinstance(outputProfile, ImageCmsProfile): + outputProfile = ImageCmsProfile(outputProfile) + if not isinstance(proofProfile, ImageCmsProfile): + proofProfile = ImageCmsProfile(proofProfile) + return ImageCmsTransform( + inputProfile, + outputProfile, + inMode, + outMode, + renderingIntent, + proofProfile, + proofRenderingIntent, + flags, + ) + except (OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +buildTransformFromOpenProfiles = buildTransform +buildProofTransformFromOpenProfiles = buildProofTransform + + +def applyTransform(im, transform, inPlace=False): + """ + (pyCMS) Applies a transform to a given image. + + If ``im.mode != transform.inMode``, a :exc:`PyCMSError` is raised. + + If ``inPlace`` is ``True`` and ``transform.inMode != transform.outMode``, a + :exc:`PyCMSError` is raised. + + If ``im.mode``, ``transform.inMode`` or ``transform.outMode`` is not + supported by pyCMSdll or the profiles you used for the transform, a + :exc:`PyCMSError` is raised. + + If an error occurs while the transform is being applied, + a :exc:`PyCMSError` is raised. + + This function applies a pre-calculated transform (from + ImageCms.buildTransform() or ImageCms.buildTransformFromOpenProfiles()) + to an image. The transform can be used for multiple images, saving + considerable calculation time if doing the same conversion multiple times. + + If you want to modify im in-place instead of receiving a new image as + the return value, set ``inPlace`` to ``True``. This can only be done if + ``transform.inMode`` and ``transform.outMode`` are the same, because we can't + change the mode in-place (the buffer sizes for some modes are + different). The default behavior is to return a new :py:class:`~PIL.Image.Image` + object of the same dimensions in mode ``transform.outMode``. + + :param im: An :py:class:`~PIL.Image.Image` object, and im.mode must be the same + as the ``inMode`` supported by the transform. + :param transform: A valid CmsTransform class object + :param inPlace: Bool. If ``True``, ``im` is modified in place and ``None`` is + returned, if ``False``, a new :py:class:`~PIL.Image.Image` object with the + transform applied is returned (and ``im`` is not changed). The default is + ``False``. + :returns: Either ``None``, or a new :py:class:`~PIL.Image.Image` object, + depending on the value of ``inPlace``. The profile will be returned in + the image's ``info['icc_profile']``. + :exception PyCMSError: + """ + + try: + if inPlace: + transform.apply_in_place(im) + imOut = None + else: + imOut = transform.apply(im) + except (TypeError, ValueError) as v: + raise PyCMSError(v) from v + + return imOut + + +def createProfile(colorSpace, colorTemp=-1): + """ + (pyCMS) Creates a profile. + + If colorSpace not in ``["LAB", "XYZ", "sRGB"]``, + a :exc:`PyCMSError` is raised. + + If using LAB and ``colorTemp`` is not a positive integer, + a :exc:`PyCMSError` is raised. + + If an error occurs while creating the profile, + a :exc:`PyCMSError` is raised. + + Use this function to create common profiles on-the-fly instead of + having to supply a profile on disk and knowing the path to it. It + returns a normal CmsProfile object that can be passed to + ImageCms.buildTransformFromOpenProfiles() to create a transform to apply + to images. + + :param colorSpace: String, the color space of the profile you wish to + create. + Currently only "LAB", "XYZ", and "sRGB" are supported. + :param colorTemp: Positive integer for the white point for the profile, in + degrees Kelvin (i.e. 5000, 6500, 9600, etc.). The default is for D50 + illuminant if omitted (5000k). colorTemp is ONLY applied to LAB + profiles, and is ignored for XYZ and sRGB. + :returns: A CmsProfile class object + :exception PyCMSError: + """ + + if colorSpace not in ["LAB", "XYZ", "sRGB"]: + raise PyCMSError( + "Color space not supported for on-the-fly profile creation (%s)" + % colorSpace + ) + + if colorSpace == "LAB": + try: + colorTemp = float(colorTemp) + except (TypeError, ValueError) as e: + raise PyCMSError( + 'Color temperature must be numeric, "%s" not valid' % colorTemp + ) from e + + try: + return core.createProfile(colorSpace, colorTemp) + except (TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileName(profile): + """ + + (pyCMS) Gets the internal product name for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, + a :exc:`PyCMSError` is raised If an error occurs while trying + to obtain the name tag, a :exc:`PyCMSError` is raised. + + Use this function to obtain the INTERNAL name of the profile (stored + in an ICC tag in the profile itself), usually the one used when the + profile was originally created. Sometimes this tag also contains + additional information supplied by the creator. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal name of the profile as stored + in an ICC tag. + :exception PyCMSError: + """ + + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + # do it in python, not c. + # // name was "%s - %s" (model, manufacturer) || Description , + # // but if the Model and Manufacturer were the same or the model + # // was long, Just the model, in 1.x + model = profile.profile.model + manufacturer = profile.profile.manufacturer + + if not (model or manufacturer): + return (profile.profile.profile_description or "") + "\n" + if not manufacturer or len(model) > 30: + return model + "\n" + return "{} - {}\n".format(model, manufacturer) + + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileInfo(profile): + """ + (pyCMS) Gets the internal product information for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, + a :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the info tag, + a :exc:`PyCMSError` is raised. + + Use this function to obtain the information stored in the profile's + info tag. This often contains details about the profile, and how it + was created, as supplied by the creator. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + + try: + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + # add an extra newline to preserve pyCMS compatibility + # Python, not C. the white point bits weren't working well, + # so skipping. + # info was description \r\n\r\n copyright \r\n\r\n K007 tag \r\n\r\n whitepoint + description = profile.profile.profile_description + cpright = profile.profile.copyright + arr = [] + for elt in (description, cpright): + if elt: + arr.append(elt) + return "\r\n\r\n".join(arr) + "\r\n\r\n" + + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileCopyright(profile): + """ + (pyCMS) Gets the copyright for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, a + :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the copyright tag, + a :exc:`PyCMSError` is raised. + + Use this function to obtain the information stored in the profile's + copyright tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return (profile.profile.copyright or "") + "\n" + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileManufacturer(profile): + """ + (pyCMS) Gets the manufacturer for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, a + :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the manufacturer tag, a + :exc:`PyCMSError` is raised. + + Use this function to obtain the information stored in the profile's + manufacturer tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return (profile.profile.manufacturer or "") + "\n" + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileModel(profile): + """ + (pyCMS) Gets the model for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, a + :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the model tag, + a :exc:`PyCMSError` is raised. + + Use this function to obtain the information stored in the profile's + model tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return (profile.profile.model or "") + "\n" + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileDescription(profile): + """ + (pyCMS) Gets the description for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, a + :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the description tag, + a :exc:`PyCMSError` is raised. + + Use this function to obtain the information stored in the profile's + description tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in an + ICC tag. + :exception PyCMSError: + """ + + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return (profile.profile.profile_description or "") + "\n" + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getDefaultIntent(profile): + """ + (pyCMS) Gets the default intent name for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, a + :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the default intent, a + :exc:`PyCMSError` is raised. + + Use this function to determine the default (and usually best optimized) + rendering intent for this profile. Most profiles support multiple + rendering intents, but are intended mostly for one type of conversion. + If you wish to use a different intent than returned, use + ImageCms.isIntentSupported() to verify it will work first. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: Integer 0-3 specifying the default rendering intent for this + profile. + + ImageCms.INTENT_PERCEPTUAL = 0 (DEFAULT) + ImageCms.INTENT_RELATIVE_COLORIMETRIC = 1 + ImageCms.INTENT_SATURATION = 2 + ImageCms.INTENT_ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :exception PyCMSError: + """ + + try: + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return profile.profile.rendering_intent + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def isIntentSupported(profile, intent, direction): + """ + (pyCMS) Checks if a given intent is supported. + + Use this function to verify that you can use your desired + ``intent`` with ``profile``, and that ``profile`` can be used for the + input/output/proof profile as you desire. + + Some profiles are created specifically for one "direction", can cannot + be used for others. Some profiles can only be used for certain + rendering intents, so it's best to either verify this before trying + to create a transform with them (using this function), or catch the + potential :exc:`PyCMSError` that will occur if they don't + support the modes you select. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :param intent: Integer (0-3) specifying the rendering intent you wish to + use with this profile + + ImageCms.INTENT_PERCEPTUAL = 0 (DEFAULT) + ImageCms.INTENT_RELATIVE_COLORIMETRIC = 1 + ImageCms.INTENT_SATURATION = 2 + ImageCms.INTENT_ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param direction: Integer specifying if the profile is to be used for + input, output, or proof + + INPUT = 0 (or use ImageCms.DIRECTION_INPUT) + OUTPUT = 1 (or use ImageCms.DIRECTION_OUTPUT) + PROOF = 2 (or use ImageCms.DIRECTION_PROOF) + + :returns: 1 if the intent/direction are supported, -1 if they are not. + :exception PyCMSError: + """ + + try: + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + # FIXME: I get different results for the same data w. different + # compilers. Bug in LittleCMS or in the binding? + if profile.profile.is_intent_supported(intent, direction): + return 1 + else: + return -1 + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def versions(): + """ + (pyCMS) Fetches versions. + """ + + return (VERSION, core.littlecms_version, sys.version.split()[0], Image.__version__) diff --git a/venv/Lib/site-packages/PIL/ImageColor.py b/venv/Lib/site-packages/PIL/ImageColor.py new file mode 100644 index 00000000..9cf7a991 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageColor.py @@ -0,0 +1,300 @@ +# +# The Python Imaging Library +# $Id$ +# +# map CSS3-style colour description strings to RGB +# +# History: +# 2002-10-24 fl Added support for CSS-style color strings +# 2002-12-15 fl Added RGBA support +# 2004-03-27 fl Fixed remaining int() problems for Python 1.5.2 +# 2004-07-19 fl Fixed gray/grey spelling issues +# 2009-03-05 fl Fixed rounding error in grayscale calculation +# +# Copyright (c) 2002-2004 by Secret Labs AB +# Copyright (c) 2002-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import re + +from . import Image + + +def getrgb(color): + """ + Convert a color string to an RGB tuple. If the string cannot be parsed, + this function raises a :py:exc:`ValueError` exception. + + .. versionadded:: 1.1.4 + + :param color: A color string + :return: ``(red, green, blue[, alpha])`` + """ + color = color.lower() + + rgb = colormap.get(color, None) + if rgb: + if isinstance(rgb, tuple): + return rgb + colormap[color] = rgb = getrgb(rgb) + return rgb + + # check for known string formats + if re.match("#[a-f0-9]{3}$", color): + return (int(color[1] * 2, 16), int(color[2] * 2, 16), int(color[3] * 2, 16)) + + if re.match("#[a-f0-9]{4}$", color): + return ( + int(color[1] * 2, 16), + int(color[2] * 2, 16), + int(color[3] * 2, 16), + int(color[4] * 2, 16), + ) + + if re.match("#[a-f0-9]{6}$", color): + return (int(color[1:3], 16), int(color[3:5], 16), int(color[5:7], 16)) + + if re.match("#[a-f0-9]{8}$", color): + return ( + int(color[1:3], 16), + int(color[3:5], 16), + int(color[5:7], 16), + int(color[7:9], 16), + ) + + m = re.match(r"rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$", color) + if m: + return (int(m.group(1)), int(m.group(2)), int(m.group(3))) + + m = re.match(r"rgb\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)$", color) + if m: + return ( + int((int(m.group(1)) * 255) / 100.0 + 0.5), + int((int(m.group(2)) * 255) / 100.0 + 0.5), + int((int(m.group(3)) * 255) / 100.0 + 0.5), + ) + + m = re.match( + r"hsl\(\s*(\d+\.?\d*)\s*,\s*(\d+\.?\d*)%\s*,\s*(\d+\.?\d*)%\s*\)$", color + ) + if m: + from colorsys import hls_to_rgb + + rgb = hls_to_rgb( + float(m.group(1)) / 360.0, + float(m.group(3)) / 100.0, + float(m.group(2)) / 100.0, + ) + return ( + int(rgb[0] * 255 + 0.5), + int(rgb[1] * 255 + 0.5), + int(rgb[2] * 255 + 0.5), + ) + + m = re.match( + r"hs[bv]\(\s*(\d+\.?\d*)\s*,\s*(\d+\.?\d*)%\s*,\s*(\d+\.?\d*)%\s*\)$", color + ) + if m: + from colorsys import hsv_to_rgb + + rgb = hsv_to_rgb( + float(m.group(1)) / 360.0, + float(m.group(2)) / 100.0, + float(m.group(3)) / 100.0, + ) + return ( + int(rgb[0] * 255 + 0.5), + int(rgb[1] * 255 + 0.5), + int(rgb[2] * 255 + 0.5), + ) + + m = re.match(r"rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$", color) + if m: + return (int(m.group(1)), int(m.group(2)), int(m.group(3)), int(m.group(4))) + raise ValueError("unknown color specifier: %r" % color) + + +def getcolor(color, mode): + """ + Same as :py:func:`~PIL.ImageColor.getrgb`, but converts the RGB value to a + greyscale value if the mode is not color or a palette image. If the string + cannot be parsed, this function raises a :py:exc:`ValueError` exception. + + .. versionadded:: 1.1.4 + + :param color: A color string + :return: ``(graylevel [, alpha]) or (red, green, blue[, alpha])`` + """ + # same as getrgb, but converts the result to the given mode + color, alpha = getrgb(color), 255 + if len(color) == 4: + color, alpha = color[0:3], color[3] + + if Image.getmodebase(mode) == "L": + r, g, b = color + # ITU-R Recommendation 601-2 for nonlinear RGB + # scaled to 24 bits to match the convert's implementation. + color = (r * 19595 + g * 38470 + b * 7471 + 0x8000) >> 16 + if mode[-1] == "A": + return (color, alpha) + else: + if mode[-1] == "A": + return color + (alpha,) + return color + + +colormap = { + # X11 colour table from https://drafts.csswg.org/css-color-4/, with + # gray/grey spelling issues fixed. This is a superset of HTML 4.0 + # colour names used in CSS 1. + "aliceblue": "#f0f8ff", + "antiquewhite": "#faebd7", + "aqua": "#00ffff", + "aquamarine": "#7fffd4", + "azure": "#f0ffff", + "beige": "#f5f5dc", + "bisque": "#ffe4c4", + "black": "#000000", + "blanchedalmond": "#ffebcd", + "blue": "#0000ff", + "blueviolet": "#8a2be2", + "brown": "#a52a2a", + "burlywood": "#deb887", + "cadetblue": "#5f9ea0", + "chartreuse": "#7fff00", + "chocolate": "#d2691e", + "coral": "#ff7f50", + "cornflowerblue": "#6495ed", + "cornsilk": "#fff8dc", + "crimson": "#dc143c", + "cyan": "#00ffff", + "darkblue": "#00008b", + "darkcyan": "#008b8b", + "darkgoldenrod": "#b8860b", + "darkgray": "#a9a9a9", + "darkgrey": "#a9a9a9", + "darkgreen": "#006400", + "darkkhaki": "#bdb76b", + "darkmagenta": "#8b008b", + "darkolivegreen": "#556b2f", + "darkorange": "#ff8c00", + "darkorchid": "#9932cc", + "darkred": "#8b0000", + "darksalmon": "#e9967a", + "darkseagreen": "#8fbc8f", + "darkslateblue": "#483d8b", + "darkslategray": "#2f4f4f", + "darkslategrey": "#2f4f4f", + "darkturquoise": "#00ced1", + "darkviolet": "#9400d3", + "deeppink": "#ff1493", + "deepskyblue": "#00bfff", + "dimgray": "#696969", + "dimgrey": "#696969", + "dodgerblue": "#1e90ff", + "firebrick": "#b22222", + "floralwhite": "#fffaf0", + "forestgreen": "#228b22", + "fuchsia": "#ff00ff", + "gainsboro": "#dcdcdc", + "ghostwhite": "#f8f8ff", + "gold": "#ffd700", + "goldenrod": "#daa520", + "gray": "#808080", + "grey": "#808080", + "green": "#008000", + "greenyellow": "#adff2f", + "honeydew": "#f0fff0", + "hotpink": "#ff69b4", + "indianred": "#cd5c5c", + "indigo": "#4b0082", + "ivory": "#fffff0", + "khaki": "#f0e68c", + "lavender": "#e6e6fa", + "lavenderblush": "#fff0f5", + "lawngreen": "#7cfc00", + "lemonchiffon": "#fffacd", + "lightblue": "#add8e6", + "lightcoral": "#f08080", + "lightcyan": "#e0ffff", + "lightgoldenrodyellow": "#fafad2", + "lightgreen": "#90ee90", + "lightgray": "#d3d3d3", + "lightgrey": "#d3d3d3", + "lightpink": "#ffb6c1", + "lightsalmon": "#ffa07a", + "lightseagreen": "#20b2aa", + "lightskyblue": "#87cefa", + "lightslategray": "#778899", + "lightslategrey": "#778899", + "lightsteelblue": "#b0c4de", + "lightyellow": "#ffffe0", + "lime": "#00ff00", + "limegreen": "#32cd32", + "linen": "#faf0e6", + "magenta": "#ff00ff", + "maroon": "#800000", + "mediumaquamarine": "#66cdaa", + "mediumblue": "#0000cd", + "mediumorchid": "#ba55d3", + "mediumpurple": "#9370db", + "mediumseagreen": "#3cb371", + "mediumslateblue": "#7b68ee", + "mediumspringgreen": "#00fa9a", + "mediumturquoise": "#48d1cc", + "mediumvioletred": "#c71585", + "midnightblue": "#191970", + "mintcream": "#f5fffa", + "mistyrose": "#ffe4e1", + "moccasin": "#ffe4b5", + "navajowhite": "#ffdead", + "navy": "#000080", + "oldlace": "#fdf5e6", + "olive": "#808000", + "olivedrab": "#6b8e23", + "orange": "#ffa500", + "orangered": "#ff4500", + "orchid": "#da70d6", + "palegoldenrod": "#eee8aa", + "palegreen": "#98fb98", + "paleturquoise": "#afeeee", + "palevioletred": "#db7093", + "papayawhip": "#ffefd5", + "peachpuff": "#ffdab9", + "peru": "#cd853f", + "pink": "#ffc0cb", + "plum": "#dda0dd", + "powderblue": "#b0e0e6", + "purple": "#800080", + "rebeccapurple": "#663399", + "red": "#ff0000", + "rosybrown": "#bc8f8f", + "royalblue": "#4169e1", + "saddlebrown": "#8b4513", + "salmon": "#fa8072", + "sandybrown": "#f4a460", + "seagreen": "#2e8b57", + "seashell": "#fff5ee", + "sienna": "#a0522d", + "silver": "#c0c0c0", + "skyblue": "#87ceeb", + "slateblue": "#6a5acd", + "slategray": "#708090", + "slategrey": "#708090", + "snow": "#fffafa", + "springgreen": "#00ff7f", + "steelblue": "#4682b4", + "tan": "#d2b48c", + "teal": "#008080", + "thistle": "#d8bfd8", + "tomato": "#ff6347", + "turquoise": "#40e0d0", + "violet": "#ee82ee", + "wheat": "#f5deb3", + "white": "#ffffff", + "whitesmoke": "#f5f5f5", + "yellow": "#ffff00", + "yellowgreen": "#9acd32", +} diff --git a/venv/Lib/site-packages/PIL/ImageDraw.py b/venv/Lib/site-packages/PIL/ImageDraw.py new file mode 100644 index 00000000..cbecf652 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageDraw.py @@ -0,0 +1,566 @@ +# +# The Python Imaging Library +# $Id$ +# +# drawing interface operations +# +# History: +# 1996-04-13 fl Created (experimental) +# 1996-08-07 fl Filled polygons, ellipses. +# 1996-08-13 fl Added text support +# 1998-06-28 fl Handle I and F images +# 1998-12-29 fl Added arc; use arc primitive to draw ellipses +# 1999-01-10 fl Added shape stuff (experimental) +# 1999-02-06 fl Added bitmap support +# 1999-02-11 fl Changed all primitives to take options +# 1999-02-20 fl Fixed backwards compatibility +# 2000-10-12 fl Copy on write, when necessary +# 2001-02-18 fl Use default ink for bitmap/text also in fill mode +# 2002-10-24 fl Added support for CSS-style color strings +# 2002-12-10 fl Added experimental support for RGBA-on-RGB drawing +# 2002-12-11 fl Refactored low-level drawing API (work in progress) +# 2004-08-26 fl Made Draw() a factory function, added getdraw() support +# 2004-09-04 fl Added width support to line primitive +# 2004-09-10 fl Added font mode handling +# 2006-06-19 fl Added font bearing support (getmask2) +# +# Copyright (c) 1997-2006 by Secret Labs AB +# Copyright (c) 1996-2006 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import math +import numbers + +from . import Image, ImageColor + + +""" +A simple 2D drawing interface for PIL images. +

+Application code should use the Draw factory, instead of +directly. +""" + + +class ImageDraw: + def __init__(self, im, mode=None): + """ + Create a drawing instance. + + :param im: The image to draw in. + :param mode: Optional mode to use for color values. For RGB + images, this argument can be RGB or RGBA (to blend the + drawing into the image). For all other modes, this argument + must be the same as the image mode. If omitted, the mode + defaults to the mode of the image. + """ + im.load() + if im.readonly: + im._copy() # make it writeable + blend = 0 + if mode is None: + mode = im.mode + if mode != im.mode: + if mode == "RGBA" and im.mode == "RGB": + blend = 1 + else: + raise ValueError("mode mismatch") + if mode == "P": + self.palette = im.palette + else: + self.palette = None + self.im = im.im + self.draw = Image.core.draw(self.im, blend) + self.mode = mode + if mode in ("I", "F"): + self.ink = self.draw.draw_ink(1) + else: + self.ink = self.draw.draw_ink(-1) + if mode in ("1", "P", "I", "F"): + # FIXME: fix Fill2 to properly support matte for I+F images + self.fontmode = "1" + else: + self.fontmode = "L" # aliasing is okay for other modes + self.fill = 0 + self.font = None + + def getfont(self): + """ + Get the current default font. + + :returns: An image font.""" + if not self.font: + # FIXME: should add a font repository + from . import ImageFont + + self.font = ImageFont.load_default() + return self.font + + def _getink(self, ink, fill=None): + if ink is None and fill is None: + if self.fill: + fill = self.ink + else: + ink = self.ink + else: + if ink is not None: + if isinstance(ink, str): + ink = ImageColor.getcolor(ink, self.mode) + if self.palette and not isinstance(ink, numbers.Number): + ink = self.palette.getcolor(ink) + ink = self.draw.draw_ink(ink) + if fill is not None: + if isinstance(fill, str): + fill = ImageColor.getcolor(fill, self.mode) + if self.palette and not isinstance(fill, numbers.Number): + fill = self.palette.getcolor(fill) + fill = self.draw.draw_ink(fill) + return ink, fill + + def arc(self, xy, start, end, fill=None, width=0): + """Draw an arc.""" + ink, fill = self._getink(fill) + if ink is not None: + self.draw.draw_arc(xy, start, end, ink, width) + + def bitmap(self, xy, bitmap, fill=None): + """Draw a bitmap.""" + bitmap.load() + ink, fill = self._getink(fill) + if ink is None: + ink = fill + if ink is not None: + self.draw.draw_bitmap(xy, bitmap.im, ink) + + def chord(self, xy, start, end, fill=None, outline=None, width=1): + """Draw a chord.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_chord(xy, start, end, fill, 1) + if ink is not None and ink != fill and width != 0: + self.draw.draw_chord(xy, start, end, ink, 0, width) + + def ellipse(self, xy, fill=None, outline=None, width=1): + """Draw an ellipse.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_ellipse(xy, fill, 1) + if ink is not None and ink != fill and width != 0: + self.draw.draw_ellipse(xy, ink, 0, width) + + def line(self, xy, fill=None, width=0, joint=None): + """Draw a line, or a connected sequence of line segments.""" + ink = self._getink(fill)[0] + if ink is not None: + self.draw.draw_lines(xy, ink, width) + if joint == "curve" and width > 4: + if not isinstance(xy[0], (list, tuple)): + xy = [tuple(xy[i : i + 2]) for i in range(0, len(xy), 2)] + for i in range(1, len(xy) - 1): + point = xy[i] + angles = [ + math.degrees(math.atan2(end[0] - start[0], start[1] - end[1])) + % 360 + for start, end in ((xy[i - 1], point), (point, xy[i + 1])) + ] + if angles[0] == angles[1]: + # This is a straight line, so no joint is required + continue + + def coord_at_angle(coord, angle): + x, y = coord + angle -= 90 + distance = width / 2 - 1 + return tuple( + [ + p + (math.floor(p_d) if p_d > 0 else math.ceil(p_d)) + for p, p_d in ( + (x, distance * math.cos(math.radians(angle))), + (y, distance * math.sin(math.radians(angle))), + ) + ] + ) + + flipped = ( + angles[1] > angles[0] and angles[1] - 180 > angles[0] + ) or (angles[1] < angles[0] and angles[1] + 180 > angles[0]) + coords = [ + (point[0] - width / 2 + 1, point[1] - width / 2 + 1), + (point[0] + width / 2 - 1, point[1] + width / 2 - 1), + ] + if flipped: + start, end = (angles[1] + 90, angles[0] + 90) + else: + start, end = (angles[0] - 90, angles[1] - 90) + self.pieslice(coords, start - 90, end - 90, fill) + + if width > 8: + # Cover potential gaps between the line and the joint + if flipped: + gapCoords = [ + coord_at_angle(point, angles[0] + 90), + point, + coord_at_angle(point, angles[1] + 90), + ] + else: + gapCoords = [ + coord_at_angle(point, angles[0] - 90), + point, + coord_at_angle(point, angles[1] - 90), + ] + self.line(gapCoords, fill, width=3) + + def shape(self, shape, fill=None, outline=None): + """(Experimental) Draw a shape.""" + shape.close() + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_outline(shape, fill, 1) + if ink is not None and ink != fill: + self.draw.draw_outline(shape, ink, 0) + + def pieslice(self, xy, start, end, fill=None, outline=None, width=1): + """Draw a pieslice.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_pieslice(xy, start, end, fill, 1) + if ink is not None and ink != fill and width != 0: + self.draw.draw_pieslice(xy, start, end, ink, 0, width) + + def point(self, xy, fill=None): + """Draw one or more individual pixels.""" + ink, fill = self._getink(fill) + if ink is not None: + self.draw.draw_points(xy, ink) + + def polygon(self, xy, fill=None, outline=None): + """Draw a polygon.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_polygon(xy, fill, 1) + if ink is not None and ink != fill: + self.draw.draw_polygon(xy, ink, 0) + + def rectangle(self, xy, fill=None, outline=None, width=1): + """Draw a rectangle.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_rectangle(xy, fill, 1) + if ink is not None and ink != fill and width != 0: + self.draw.draw_rectangle(xy, ink, 0, width) + + def _multiline_check(self, text): + """Draw text.""" + split_character = "\n" if isinstance(text, str) else b"\n" + + return split_character in text + + def _multiline_split(self, text): + split_character = "\n" if isinstance(text, str) else b"\n" + + return text.split(split_character) + + def text( + self, + xy, + text, + fill=None, + font=None, + anchor=None, + spacing=4, + align="left", + direction=None, + features=None, + language=None, + stroke_width=0, + stroke_fill=None, + *args, + **kwargs + ): + if self._multiline_check(text): + return self.multiline_text( + xy, + text, + fill, + font, + anchor, + spacing, + align, + direction, + features, + language, + stroke_width, + stroke_fill, + ) + + if font is None: + font = self.getfont() + + def getink(fill): + ink, fill = self._getink(fill) + if ink is None: + return fill + return ink + + def draw_text(ink, stroke_width=0, stroke_offset=None): + coord = xy + try: + mask, offset = font.getmask2( + text, + self.fontmode, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + *args, + **kwargs, + ) + coord = coord[0] + offset[0], coord[1] + offset[1] + except AttributeError: + try: + mask = font.getmask( + text, + self.fontmode, + direction, + features, + language, + stroke_width, + *args, + **kwargs, + ) + except TypeError: + mask = font.getmask(text) + if stroke_offset: + coord = coord[0] + stroke_offset[0], coord[1] + stroke_offset[1] + self.draw.draw_bitmap(coord, mask, ink) + + ink = getink(fill) + if ink is not None: + stroke_ink = None + if stroke_width: + stroke_ink = getink(stroke_fill) if stroke_fill is not None else ink + + if stroke_ink is not None: + # Draw stroked text + draw_text(stroke_ink, stroke_width) + + # Draw normal text + draw_text(ink, 0, (stroke_width, stroke_width)) + else: + # Only draw normal text + draw_text(ink) + + def multiline_text( + self, + xy, + text, + fill=None, + font=None, + anchor=None, + spacing=4, + align="left", + direction=None, + features=None, + language=None, + stroke_width=0, + stroke_fill=None, + ): + widths = [] + max_width = 0 + lines = self._multiline_split(text) + line_spacing = ( + self.textsize("A", font=font, stroke_width=stroke_width)[1] + spacing + ) + for line in lines: + line_width, line_height = self.textsize( + line, + font, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + ) + widths.append(line_width) + max_width = max(max_width, line_width) + left, top = xy + for idx, line in enumerate(lines): + if align == "left": + pass # left = x + elif align == "center": + left += (max_width - widths[idx]) / 2.0 + elif align == "right": + left += max_width - widths[idx] + else: + raise ValueError('align must be "left", "center" or "right"') + self.text( + (left, top), + line, + fill, + font, + anchor, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + stroke_fill=stroke_fill, + ) + top += line_spacing + left = xy[0] + + def textsize( + self, + text, + font=None, + spacing=4, + direction=None, + features=None, + language=None, + stroke_width=0, + ): + """Get the size of a given string, in pixels.""" + if self._multiline_check(text): + return self.multiline_textsize( + text, font, spacing, direction, features, language, stroke_width + ) + + if font is None: + font = self.getfont() + return font.getsize(text, direction, features, language, stroke_width) + + def multiline_textsize( + self, + text, + font=None, + spacing=4, + direction=None, + features=None, + language=None, + stroke_width=0, + ): + max_width = 0 + lines = self._multiline_split(text) + line_spacing = ( + self.textsize("A", font=font, stroke_width=stroke_width)[1] + spacing + ) + for line in lines: + line_width, line_height = self.textsize( + line, font, spacing, direction, features, language, stroke_width + ) + max_width = max(max_width, line_width) + return max_width, len(lines) * line_spacing - spacing + + +def Draw(im, mode=None): + """ + A simple 2D drawing interface for PIL images. + + :param im: The image to draw in. + :param mode: Optional mode to use for color values. For RGB + images, this argument can be RGB or RGBA (to blend the + drawing into the image). For all other modes, this argument + must be the same as the image mode. If omitted, the mode + defaults to the mode of the image. + """ + try: + return im.getdraw(mode) + except AttributeError: + return ImageDraw(im, mode) + + +# experimental access to the outline API +try: + Outline = Image.core.outline +except AttributeError: + Outline = None + + +def getdraw(im=None, hints=None): + """ + (Experimental) A more advanced 2D drawing interface for PIL images, + based on the WCK interface. + + :param im: The image to draw in. + :param hints: An optional list of hints. + :returns: A (drawing context, drawing resource factory) tuple. + """ + # FIXME: this needs more work! + # FIXME: come up with a better 'hints' scheme. + handler = None + if not hints or "nicest" in hints: + try: + from . import _imagingagg as handler + except ImportError: + pass + if handler is None: + from . import ImageDraw2 as handler + if im: + im = handler.Draw(im) + return im, handler + + +def floodfill(image, xy, value, border=None, thresh=0): + """ + (experimental) Fills a bounded region with a given color. + + :param image: Target image. + :param xy: Seed position (a 2-item coordinate tuple). See + :ref:`coordinate-system`. + :param value: Fill color. + :param border: Optional border value. If given, the region consists of + pixels with a color different from the border color. If not given, + the region consists of pixels having the same color as the seed + pixel. + :param thresh: Optional threshold value which specifies a maximum + tolerable difference of a pixel value from the 'background' in + order for it to be replaced. Useful for filling regions of + non-homogeneous, but similar, colors. + """ + # based on an implementation by Eric S. Raymond + # amended by yo1995 @20180806 + pixel = image.load() + x, y = xy + try: + background = pixel[x, y] + if _color_diff(value, background) <= thresh: + return # seed point already has fill color + pixel[x, y] = value + except (ValueError, IndexError): + return # seed point outside image + edge = {(x, y)} + # use a set to keep record of current and previous edge pixels + # to reduce memory consumption + full_edge = set() + while edge: + new_edge = set() + for (x, y) in edge: # 4 adjacent method + for (s, t) in ((x + 1, y), (x - 1, y), (x, y + 1), (x, y - 1)): + # If already processed, or if a coordinate is negative, skip + if (s, t) in full_edge or s < 0 or t < 0: + continue + try: + p = pixel[s, t] + except (ValueError, IndexError): + pass + else: + full_edge.add((s, t)) + if border is None: + fill = _color_diff(p, background) <= thresh + else: + fill = p != value and p != border + if fill: + pixel[s, t] = value + new_edge.add((s, t)) + full_edge = edge # discard pixels processed + edge = new_edge + + +def _color_diff(color1, color2): + """ + Uses 1-norm distance to calculate difference between two values. + """ + if isinstance(color2, tuple): + return sum([abs(color1[i] - color2[i]) for i in range(0, len(color2))]) + else: + return abs(color1 - color2) diff --git a/venv/Lib/site-packages/PIL/ImageDraw2.py b/venv/Lib/site-packages/PIL/ImageDraw2.py new file mode 100644 index 00000000..1f63110f --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageDraw2.py @@ -0,0 +1,179 @@ +# +# The Python Imaging Library +# $Id$ +# +# WCK-style drawing interface operations +# +# History: +# 2003-12-07 fl created +# 2005-05-15 fl updated; added to PIL as ImageDraw2 +# 2005-05-15 fl added text support +# 2005-05-20 fl added arc/chord/pieslice support +# +# Copyright (c) 2003-2005 by Secret Labs AB +# Copyright (c) 2003-2005 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + + +""" +(Experimental) WCK-style drawing interface operations + +.. seealso:: :py:mod:`PIL.ImageDraw` +""" + + +from . import Image, ImageColor, ImageDraw, ImageFont, ImagePath + + +class Pen: + """Stores an outline color and width.""" + + def __init__(self, color, width=1, opacity=255): + self.color = ImageColor.getrgb(color) + self.width = width + + +class Brush: + """Stores a fill color""" + + def __init__(self, color, opacity=255): + self.color = ImageColor.getrgb(color) + + +class Font: + """Stores a TrueType font and color""" + + def __init__(self, color, file, size=12): + # FIXME: add support for bitmap fonts + self.color = ImageColor.getrgb(color) + self.font = ImageFont.truetype(file, size) + + +class Draw: + """ + (Experimental) WCK-style drawing interface + """ + + def __init__(self, image, size=None, color=None): + if not hasattr(image, "im"): + image = Image.new(image, size, color) + self.draw = ImageDraw.Draw(image) + self.image = image + self.transform = None + + def flush(self): + return self.image + + def render(self, op, xy, pen, brush=None): + # handle color arguments + outline = fill = None + width = 1 + if isinstance(pen, Pen): + outline = pen.color + width = pen.width + elif isinstance(brush, Pen): + outline = brush.color + width = brush.width + if isinstance(brush, Brush): + fill = brush.color + elif isinstance(pen, Brush): + fill = pen.color + # handle transformation + if self.transform: + xy = ImagePath.Path(xy) + xy.transform(self.transform) + # render the item + if op == "line": + self.draw.line(xy, fill=outline, width=width) + else: + getattr(self.draw, op)(xy, fill=fill, outline=outline) + + def settransform(self, offset): + """Sets a transformation offset.""" + (xoffset, yoffset) = offset + self.transform = (1, 0, xoffset, 0, 1, yoffset) + + def arc(self, xy, start, end, *options): + """ + Draws an arc (a portion of a circle outline) between the start and end + angles, inside the given bounding box. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.arc` + """ + self.render("arc", xy, start, end, *options) + + def chord(self, xy, start, end, *options): + """ + Same as :py:meth:`~PIL.ImageDraw2.Draw.arc`, but connects the end points + with a straight line. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.chord` + """ + self.render("chord", xy, start, end, *options) + + def ellipse(self, xy, *options): + """ + Draws an ellipse inside the given bounding box. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.ellipse` + """ + self.render("ellipse", xy, *options) + + def line(self, xy, *options): + """ + Draws a line between the coordinates in the ``xy`` list. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.line` + """ + self.render("line", xy, *options) + + def pieslice(self, xy, start, end, *options): + """ + Same as arc, but also draws straight lines between the end points and the + center of the bounding box. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.pieslice` + """ + self.render("pieslice", xy, start, end, *options) + + def polygon(self, xy, *options): + """ + Draws a polygon. + + The polygon outline consists of straight lines between the given + coordinates, plus a straight line between the last and the first + coordinate. + + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.polygon` + """ + self.render("polygon", xy, *options) + + def rectangle(self, xy, *options): + """ + Draws a rectangle. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.rectangle` + """ + self.render("rectangle", xy, *options) + + def text(self, xy, text, font): + """ + Draws the string at the given position. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.text` + """ + if self.transform: + xy = ImagePath.Path(xy) + xy.transform(self.transform) + self.draw.text(xy, text, font=font.font, fill=font.color) + + def textsize(self, text, font): + """ + Return the size of the given string, in pixels. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.textsize` + """ + return self.draw.textsize(text, font=font.font) diff --git a/venv/Lib/site-packages/PIL/ImageEnhance.py b/venv/Lib/site-packages/PIL/ImageEnhance.py new file mode 100644 index 00000000..3b79d5c4 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageEnhance.py @@ -0,0 +1,103 @@ +# +# The Python Imaging Library. +# $Id$ +# +# image enhancement classes +# +# For a background, see "Image Processing By Interpolation and +# Extrapolation", Paul Haeberli and Douglas Voorhies. Available +# at http://www.graficaobscura.com/interp/index.html +# +# History: +# 1996-03-23 fl Created +# 2009-06-16 fl Fixed mean calculation +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFilter, ImageStat + + +class _Enhance: + def enhance(self, factor): + """ + Returns an enhanced image. + + :param factor: A floating point value controlling the enhancement. + Factor 1.0 always returns a copy of the original image, + lower factors mean less color (brightness, contrast, + etc), and higher values more. There are no restrictions + on this value. + :rtype: :py:class:`~PIL.Image.Image` + """ + return Image.blend(self.degenerate, self.image, factor) + + +class Color(_Enhance): + """Adjust image color balance. + + This class can be used to adjust the colour balance of an image, in + a manner similar to the controls on a colour TV set. An enhancement + factor of 0.0 gives a black and white image. A factor of 1.0 gives + the original image. + """ + + def __init__(self, image): + self.image = image + self.intermediate_mode = "L" + if "A" in image.getbands(): + self.intermediate_mode = "LA" + + self.degenerate = image.convert(self.intermediate_mode).convert(image.mode) + + +class Contrast(_Enhance): + """Adjust image contrast. + + This class can be used to control the contrast of an image, similar + to the contrast control on a TV set. An enhancement factor of 0.0 + gives a solid grey image. A factor of 1.0 gives the original image. + """ + + def __init__(self, image): + self.image = image + mean = int(ImageStat.Stat(image.convert("L")).mean[0] + 0.5) + self.degenerate = Image.new("L", image.size, mean).convert(image.mode) + + if "A" in image.getbands(): + self.degenerate.putalpha(image.getchannel("A")) + + +class Brightness(_Enhance): + """Adjust image brightness. + + This class can be used to control the brightness of an image. An + enhancement factor of 0.0 gives a black image. A factor of 1.0 gives the + original image. + """ + + def __init__(self, image): + self.image = image + self.degenerate = Image.new(image.mode, image.size, 0) + + if "A" in image.getbands(): + self.degenerate.putalpha(image.getchannel("A")) + + +class Sharpness(_Enhance): + """Adjust image sharpness. + + This class can be used to adjust the sharpness of an image. An + enhancement factor of 0.0 gives a blurred image, a factor of 1.0 gives the + original image, and a factor of 2.0 gives a sharpened image. + """ + + def __init__(self, image): + self.image = image + self.degenerate = image.filter(ImageFilter.SMOOTH) + + if "A" in image.getbands(): + self.degenerate.putalpha(image.getchannel("A")) diff --git a/venv/Lib/site-packages/PIL/ImageFile.py b/venv/Lib/site-packages/PIL/ImageFile.py new file mode 100644 index 00000000..fd2e1bbd --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageFile.py @@ -0,0 +1,693 @@ +# +# The Python Imaging Library. +# $Id$ +# +# base class for image file handlers +# +# history: +# 1995-09-09 fl Created +# 1996-03-11 fl Fixed load mechanism. +# 1996-04-15 fl Added pcx/xbm decoders. +# 1996-04-30 fl Added encoders. +# 1996-12-14 fl Added load helpers +# 1997-01-11 fl Use encode_to_file where possible +# 1997-08-27 fl Flush output in _save +# 1998-03-05 fl Use memory mapping for some modes +# 1999-02-04 fl Use memory mapping also for "I;16" and "I;16B" +# 1999-05-31 fl Added image parser +# 2000-10-12 fl Set readonly flag on memory-mapped images +# 2002-03-20 fl Use better messages for common decoder errors +# 2003-04-21 fl Fall back on mmap/map_buffer if map is not available +# 2003-10-30 fl Added StubImageFile class +# 2004-02-25 fl Made incremental parser more robust +# +# Copyright (c) 1997-2004 by Secret Labs AB +# Copyright (c) 1995-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import io +import struct +import sys +import warnings + +from . import Image +from ._util import isPath + +MAXBLOCK = 65536 + +SAFEBLOCK = 1024 * 1024 + +LOAD_TRUNCATED_IMAGES = False + +ERRORS = { + -1: "image buffer overrun error", + -2: "decoding error", + -3: "unknown error", + -8: "bad configuration", + -9: "out of memory error", +} + + +# +# -------------------------------------------------------------------- +# Helpers + + +def raise_oserror(error): + try: + message = Image.core.getcodecstatus(error) + except AttributeError: + message = ERRORS.get(error) + if not message: + message = "decoder error %d" % error + raise OSError(message + " when reading image file") + + +def raise_ioerror(error): + warnings.warn( + "raise_ioerror is deprecated and will be removed in a future release. " + "Use raise_oserror instead.", + DeprecationWarning, + ) + return raise_oserror(error) + + +def _tilesort(t): + # sort on offset + return t[2] + + +# +# -------------------------------------------------------------------- +# ImageFile base class + + +class ImageFile(Image.Image): + """Base class for image file format handlers.""" + + def __init__(self, fp=None, filename=None): + super().__init__() + + self._min_frame = 0 + + self.custom_mimetype = None + + self.tile = None + self.readonly = 1 # until we know better + + self.decoderconfig = () + self.decodermaxblock = MAXBLOCK + + if isPath(fp): + # filename + self.fp = open(fp, "rb") + self.filename = fp + self._exclusive_fp = True + else: + # stream + self.fp = fp + self.filename = filename + # can be overridden + self._exclusive_fp = None + + try: + try: + self._open() + except ( + IndexError, # end of data + TypeError, # end of data (ord) + KeyError, # unsupported mode + EOFError, # got header but not the first frame + struct.error, + ) as v: + raise SyntaxError(v) from v + + if not self.mode or self.size[0] <= 0: + raise SyntaxError("not identified by this driver") + except BaseException: + # close the file only if we have opened it this constructor + if self._exclusive_fp: + self.fp.close() + raise + + def get_format_mimetype(self): + if self.custom_mimetype: + return self.custom_mimetype + if self.format is not None: + return Image.MIME.get(self.format.upper()) + + def verify(self): + """Check file integrity""" + + # raise exception if something's wrong. must be called + # directly after open, and closes file when finished. + if self._exclusive_fp: + self.fp.close() + self.fp = None + + def load(self): + """Load image data based on tile list""" + + if self.tile is None: + raise OSError("cannot load this image") + + pixel = Image.Image.load(self) + if not self.tile: + return pixel + + self.map = None + use_mmap = self.filename and len(self.tile) == 1 + # As of pypy 2.1.0, memory mapping was failing here. + use_mmap = use_mmap and not hasattr(sys, "pypy_version_info") + + readonly = 0 + + # look for read/seek overrides + try: + read = self.load_read + # don't use mmap if there are custom read/seek functions + use_mmap = False + except AttributeError: + read = self.fp.read + + try: + seek = self.load_seek + use_mmap = False + except AttributeError: + seek = self.fp.seek + + if use_mmap: + # try memory mapping + decoder_name, extents, offset, args = self.tile[0] + if ( + decoder_name == "raw" + and len(args) >= 3 + and args[0] == self.mode + and args[0] in Image._MAPMODES + ): + try: + if hasattr(Image.core, "map"): + # use built-in mapper WIN32 only + self.map = Image.core.map(self.filename) + self.map.seek(offset) + self.im = self.map.readimage( + self.mode, self.size, args[1], args[2] + ) + else: + # use mmap, if possible + import mmap + + with open(self.filename, "r") as fp: + self.map = mmap.mmap( + fp.fileno(), 0, access=mmap.ACCESS_READ + ) + self.im = Image.core.map_buffer( + self.map, self.size, decoder_name, offset, args + ) + readonly = 1 + # After trashing self.im, + # we might need to reload the palette data. + if self.palette: + self.palette.dirty = 1 + except (AttributeError, OSError, ImportError): + self.map = None + + self.load_prepare() + err_code = -3 # initialize to unknown error + if not self.map: + # sort tiles in file order + self.tile.sort(key=_tilesort) + + try: + # FIXME: This is a hack to handle TIFF's JpegTables tag. + prefix = self.tile_prefix + except AttributeError: + prefix = b"" + + for decoder_name, extents, offset, args in self.tile: + decoder = Image._getdecoder( + self.mode, decoder_name, args, self.decoderconfig + ) + try: + seek(offset) + decoder.setimage(self.im, extents) + if decoder.pulls_fd: + decoder.setfd(self.fp) + status, err_code = decoder.decode(b"") + else: + b = prefix + while True: + try: + s = read(self.decodermaxblock) + except (IndexError, struct.error) as e: + # truncated png/gif + if LOAD_TRUNCATED_IMAGES: + break + else: + raise OSError("image file is truncated") from e + + if not s: # truncated jpeg + if LOAD_TRUNCATED_IMAGES: + break + else: + raise OSError( + "image file is truncated " + "(%d bytes not processed)" % len(b) + ) + + b = b + s + n, err_code = decoder.decode(b) + if n < 0: + break + b = b[n:] + finally: + # Need to cleanup here to prevent leaks + decoder.cleanup() + + self.tile = [] + self.readonly = readonly + + self.load_end() + + if self._exclusive_fp and self._close_exclusive_fp_after_loading: + self.fp.close() + self.fp = None + + if not self.map and not LOAD_TRUNCATED_IMAGES and err_code < 0: + # still raised if decoder fails to return anything + raise_oserror(err_code) + + return Image.Image.load(self) + + def load_prepare(self): + # create image memory if necessary + if not self.im or self.im.mode != self.mode or self.im.size != self.size: + self.im = Image.core.new(self.mode, self.size) + # create palette (optional) + if self.mode == "P": + Image.Image.load(self) + + def load_end(self): + # may be overridden + pass + + # may be defined for contained formats + # def load_seek(self, pos): + # pass + + # may be defined for blocked formats (e.g. PNG) + # def load_read(self, bytes): + # pass + + def _seek_check(self, frame): + if ( + frame < self._min_frame + # Only check upper limit on frames if additional seek operations + # are not required to do so + or ( + not (hasattr(self, "_n_frames") and self._n_frames is None) + and frame >= self.n_frames + self._min_frame + ) + ): + raise EOFError("attempt to seek outside sequence") + + return self.tell() != frame + + +class StubImageFile(ImageFile): + """ + Base class for stub image loaders. + + A stub loader is an image loader that can identify files of a + certain format, but relies on external code to load the file. + """ + + def _open(self): + raise NotImplementedError("StubImageFile subclass must implement _open") + + def load(self): + loader = self._load() + if loader is None: + raise OSError("cannot find loader for this %s file" % self.format) + image = loader.load(self) + assert image is not None + # become the other object (!) + self.__class__ = image.__class__ + self.__dict__ = image.__dict__ + + def _load(self): + """(Hook) Find actual image loader.""" + raise NotImplementedError("StubImageFile subclass must implement _load") + + +class Parser: + """ + Incremental image parser. This class implements the standard + feed/close consumer interface. + """ + + incremental = None + image = None + data = None + decoder = None + offset = 0 + finished = 0 + + def reset(self): + """ + (Consumer) Reset the parser. Note that you can only call this + method immediately after you've created a parser; parser + instances cannot be reused. + """ + assert self.data is None, "cannot reuse parsers" + + def feed(self, data): + """ + (Consumer) Feed data to the parser. + + :param data: A string buffer. + :exception OSError: If the parser failed to parse the image file. + """ + # collect data + + if self.finished: + return + + if self.data is None: + self.data = data + else: + self.data = self.data + data + + # parse what we have + if self.decoder: + + if self.offset > 0: + # skip header + skip = min(len(self.data), self.offset) + self.data = self.data[skip:] + self.offset = self.offset - skip + if self.offset > 0 or not self.data: + return + + n, e = self.decoder.decode(self.data) + + if n < 0: + # end of stream + self.data = None + self.finished = 1 + if e < 0: + # decoding error + self.image = None + raise_oserror(e) + else: + # end of image + return + self.data = self.data[n:] + + elif self.image: + + # if we end up here with no decoder, this file cannot + # be incrementally parsed. wait until we've gotten all + # available data + pass + + else: + + # attempt to open this file + try: + with io.BytesIO(self.data) as fp: + im = Image.open(fp) + except OSError: + # traceback.print_exc() + pass # not enough data + else: + flag = hasattr(im, "load_seek") or hasattr(im, "load_read") + if flag or len(im.tile) != 1: + # custom load code, or multiple tiles + self.decode = None + else: + # initialize decoder + im.load_prepare() + d, e, o, a = im.tile[0] + im.tile = [] + self.decoder = Image._getdecoder(im.mode, d, a, im.decoderconfig) + self.decoder.setimage(im.im, e) + + # calculate decoder offset + self.offset = o + if self.offset <= len(self.data): + self.data = self.data[self.offset :] + self.offset = 0 + + self.image = im + + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + + def close(self): + """ + (Consumer) Close the stream. + + :returns: An image object. + :exception OSError: If the parser failed to parse the image file either + because it cannot be identified or cannot be + decoded. + """ + # finish decoding + if self.decoder: + # get rid of what's left in the buffers + self.feed(b"") + self.data = self.decoder = None + if not self.finished: + raise OSError("image was incomplete") + if not self.image: + raise OSError("cannot parse this image") + if self.data: + # incremental parsing not possible; reopen the file + # not that we have all data + with io.BytesIO(self.data) as fp: + try: + self.image = Image.open(fp) + finally: + self.image.load() + return self.image + + +# -------------------------------------------------------------------- + + +def _save(im, fp, tile, bufsize=0): + """Helper to save image based on tile list + + :param im: Image object. + :param fp: File object. + :param tile: Tile list. + :param bufsize: Optional buffer size + """ + + im.load() + if not hasattr(im, "encoderconfig"): + im.encoderconfig = () + tile.sort(key=_tilesort) + # FIXME: make MAXBLOCK a configuration parameter + # It would be great if we could have the encoder specify what it needs + # But, it would need at least the image size in most cases. RawEncode is + # a tricky case. + bufsize = max(MAXBLOCK, bufsize, im.size[0] * 4) # see RawEncode.c + if fp == sys.stdout: + fp.flush() + return + try: + fh = fp.fileno() + fp.flush() + except (AttributeError, io.UnsupportedOperation) as e: + # compress to Python file-compatible object + for e, b, o, a in tile: + e = Image._getencoder(im.mode, e, a, im.encoderconfig) + if o > 0: + fp.seek(o) + e.setimage(im.im, b) + if e.pushes_fd: + e.setfd(fp) + l, s = e.encode_to_pyfd() + else: + while True: + l, s, d = e.encode(bufsize) + fp.write(d) + if s: + break + if s < 0: + raise OSError("encoder error %d when writing image file" % s) from e + e.cleanup() + else: + # slight speedup: compress to real file object + for e, b, o, a in tile: + e = Image._getencoder(im.mode, e, a, im.encoderconfig) + if o > 0: + fp.seek(o) + e.setimage(im.im, b) + if e.pushes_fd: + e.setfd(fp) + l, s = e.encode_to_pyfd() + else: + s = e.encode_to_file(fh, bufsize) + if s < 0: + raise OSError("encoder error %d when writing image file" % s) + e.cleanup() + if hasattr(fp, "flush"): + fp.flush() + + +def _safe_read(fp, size): + """ + Reads large blocks in a safe way. Unlike fp.read(n), this function + doesn't trust the user. If the requested size is larger than + SAFEBLOCK, the file is read block by block. + + :param fp: File handle. Must implement a read method. + :param size: Number of bytes to read. + :returns: A string containing up to size bytes of data. + """ + if size <= 0: + return b"" + if size <= SAFEBLOCK: + return fp.read(size) + data = [] + while size > 0: + block = fp.read(min(size, SAFEBLOCK)) + if not block: + break + data.append(block) + size -= len(block) + return b"".join(data) + + +class PyCodecState: + def __init__(self): + self.xsize = 0 + self.ysize = 0 + self.xoff = 0 + self.yoff = 0 + + def extents(self): + return (self.xoff, self.yoff, self.xoff + self.xsize, self.yoff + self.ysize) + + +class PyDecoder: + """ + Python implementation of a format decoder. Override this class and + add the decoding logic in the `decode` method. + + See :ref:`Writing Your Own File Decoder in Python` + """ + + _pulls_fd = False + + def __init__(self, mode, *args): + self.im = None + self.state = PyCodecState() + self.fd = None + self.mode = mode + self.init(args) + + def init(self, args): + """ + Override to perform decoder specific initialization + + :param args: Array of args items from the tile entry + :returns: None + """ + self.args = args + + @property + def pulls_fd(self): + return self._pulls_fd + + def decode(self, buffer): + """ + Override to perform the decoding process. + + :param buffer: A bytes object with the data to be decoded. + :returns: A tuple of (bytes consumed, errcode). + If finished with decoding return <0 for the bytes consumed. + Err codes are from `ERRORS` + """ + raise NotImplementedError() + + def cleanup(self): + """ + Override to perform decoder specific cleanup + + :returns: None + """ + pass + + def setfd(self, fd): + """ + Called from ImageFile to set the python file-like object + + :param fd: A python file-like object + :returns: None + """ + self.fd = fd + + def setimage(self, im, extents=None): + """ + Called from ImageFile to set the core output image for the decoder + + :param im: A core image object + :param extents: a 4 tuple of (x0, y0, x1, y1) defining the rectangle + for this tile + :returns: None + """ + + # following c code + self.im = im + + if extents: + (x0, y0, x1, y1) = extents + else: + (x0, y0, x1, y1) = (0, 0, 0, 0) + + if x0 == 0 and x1 == 0: + self.state.xsize, self.state.ysize = self.im.size + else: + self.state.xoff = x0 + self.state.yoff = y0 + self.state.xsize = x1 - x0 + self.state.ysize = y1 - y0 + + if self.state.xsize <= 0 or self.state.ysize <= 0: + raise ValueError("Size cannot be negative") + + if ( + self.state.xsize + self.state.xoff > self.im.size[0] + or self.state.ysize + self.state.yoff > self.im.size[1] + ): + raise ValueError("Tile cannot extend outside image") + + def set_as_raw(self, data, rawmode=None): + """ + Convenience method to set the internal image from a stream of raw data + + :param data: Bytes to be set + :param rawmode: The rawmode to be used for the decoder. + If not specified, it will default to the mode of the image + :returns: None + """ + + if not rawmode: + rawmode = self.mode + d = Image._getdecoder(self.mode, "raw", (rawmode)) + d.setimage(self.im, self.state.extents()) + s = d.decode(data) + + if s[0] >= 0: + raise ValueError("not enough image data") + if s[1] != 0: + raise ValueError("cannot decode image data") diff --git a/venv/Lib/site-packages/PIL/ImageFilter.py b/venv/Lib/site-packages/PIL/ImageFilter.py new file mode 100644 index 00000000..3e61a6ca --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageFilter.py @@ -0,0 +1,535 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard filters +# +# History: +# 1995-11-27 fl Created +# 2002-06-08 fl Added rank and mode filters +# 2003-09-15 fl Fixed rank calculation in rank filter; added expand call +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2002 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +import functools + +try: + import numpy +except ImportError: # pragma: no cover + numpy = None + + +class Filter: + pass + + +class MultibandFilter(Filter): + pass + + +class BuiltinFilter(MultibandFilter): + def filter(self, image): + if image.mode == "P": + raise ValueError("cannot filter palette images") + return image.filter(*self.filterargs) + + +class Kernel(BuiltinFilter): + """ + Create a convolution kernel. The current version only + supports 3x3 and 5x5 integer and floating point kernels. + + In the current version, kernels can only be applied to + "L" and "RGB" images. + + :param size: Kernel size, given as (width, height). In the current + version, this must be (3,3) or (5,5). + :param kernel: A sequence containing kernel weights. + :param scale: Scale factor. If given, the result for each pixel is + divided by this value. the default is the sum of the + kernel weights. + :param offset: Offset. If given, this value is added to the result, + after it has been divided by the scale factor. + """ + + name = "Kernel" + + def __init__(self, size, kernel, scale=None, offset=0): + if scale is None: + # default scale is sum of kernel + scale = functools.reduce(lambda a, b: a + b, kernel) + if size[0] * size[1] != len(kernel): + raise ValueError("not enough coefficients in kernel") + self.filterargs = size, scale, offset, kernel + + +class RankFilter(Filter): + """ + Create a rank filter. The rank filter sorts all pixels in + a window of the given size, and returns the **rank**'th value. + + :param size: The kernel size, in pixels. + :param rank: What pixel value to pick. Use 0 for a min filter, + ``size * size / 2`` for a median filter, ``size * size - 1`` + for a max filter, etc. + """ + + name = "Rank" + + def __init__(self, size, rank): + self.size = size + self.rank = rank + + def filter(self, image): + if image.mode == "P": + raise ValueError("cannot filter palette images") + image = image.expand(self.size // 2, self.size // 2) + return image.rankfilter(self.size, self.rank) + + +class MedianFilter(RankFilter): + """ + Create a median filter. Picks the median pixel value in a window with the + given size. + + :param size: The kernel size, in pixels. + """ + + name = "Median" + + def __init__(self, size=3): + self.size = size + self.rank = size * size // 2 + + +class MinFilter(RankFilter): + """ + Create a min filter. Picks the lowest pixel value in a window with the + given size. + + :param size: The kernel size, in pixels. + """ + + name = "Min" + + def __init__(self, size=3): + self.size = size + self.rank = 0 + + +class MaxFilter(RankFilter): + """ + Create a max filter. Picks the largest pixel value in a window with the + given size. + + :param size: The kernel size, in pixels. + """ + + name = "Max" + + def __init__(self, size=3): + self.size = size + self.rank = size * size - 1 + + +class ModeFilter(Filter): + """ + Create a mode filter. Picks the most frequent pixel value in a box with the + given size. Pixel values that occur only once or twice are ignored; if no + pixel value occurs more than twice, the original pixel value is preserved. + + :param size: The kernel size, in pixels. + """ + + name = "Mode" + + def __init__(self, size=3): + self.size = size + + def filter(self, image): + return image.modefilter(self.size) + + +class GaussianBlur(MultibandFilter): + """Gaussian blur filter. + + :param radius: Blur radius. + """ + + name = "GaussianBlur" + + def __init__(self, radius=2): + self.radius = radius + + def filter(self, image): + return image.gaussian_blur(self.radius) + + +class BoxBlur(MultibandFilter): + """Blurs the image by setting each pixel to the average value of the pixels + in a square box extending radius pixels in each direction. + Supports float radius of arbitrary size. Uses an optimized implementation + which runs in linear time relative to the size of the image + for any radius value. + + :param radius: Size of the box in one direction. Radius 0 does not blur, + returns an identical image. Radius 1 takes 1 pixel + in each direction, i.e. 9 pixels in total. + """ + + name = "BoxBlur" + + def __init__(self, radius): + self.radius = radius + + def filter(self, image): + return image.box_blur(self.radius) + + +class UnsharpMask(MultibandFilter): + """Unsharp mask filter. + + See Wikipedia's entry on `digital unsharp masking`_ for an explanation of + the parameters. + + :param radius: Blur Radius + :param percent: Unsharp strength, in percent + :param threshold: Threshold controls the minimum brightness change that + will be sharpened + + .. _digital unsharp masking: https://en.wikipedia.org/wiki/Unsharp_masking#Digital_unsharp_masking + + """ # noqa: E501 + + name = "UnsharpMask" + + def __init__(self, radius=2, percent=150, threshold=3): + self.radius = radius + self.percent = percent + self.threshold = threshold + + def filter(self, image): + return image.unsharp_mask(self.radius, self.percent, self.threshold) + + +class BLUR(BuiltinFilter): + name = "Blur" + # fmt: off + filterargs = (5, 5), 16, 0, ( + 1, 1, 1, 1, 1, + 1, 0, 0, 0, 1, + 1, 0, 0, 0, 1, + 1, 0, 0, 0, 1, + 1, 1, 1, 1, 1, + ) + # fmt: on + + +class CONTOUR(BuiltinFilter): + name = "Contour" + # fmt: off + filterargs = (3, 3), 1, 255, ( + -1, -1, -1, + -1, 8, -1, + -1, -1, -1, + ) + # fmt: on + + +class DETAIL(BuiltinFilter): + name = "Detail" + # fmt: off + filterargs = (3, 3), 6, 0, ( + 0, -1, 0, + -1, 10, -1, + 0, -1, 0, + ) + # fmt: on + + +class EDGE_ENHANCE(BuiltinFilter): + name = "Edge-enhance" + # fmt: off + filterargs = (3, 3), 2, 0, ( + -1, -1, -1, + -1, 10, -1, + -1, -1, -1, + ) + # fmt: on + + +class EDGE_ENHANCE_MORE(BuiltinFilter): + name = "Edge-enhance More" + # fmt: off + filterargs = (3, 3), 1, 0, ( + -1, -1, -1, + -1, 9, -1, + -1, -1, -1, + ) + # fmt: on + + +class EMBOSS(BuiltinFilter): + name = "Emboss" + # fmt: off + filterargs = (3, 3), 1, 128, ( + -1, 0, 0, + 0, 1, 0, + 0, 0, 0, + ) + # fmt: on + + +class FIND_EDGES(BuiltinFilter): + name = "Find Edges" + # fmt: off + filterargs = (3, 3), 1, 0, ( + -1, -1, -1, + -1, 8, -1, + -1, -1, -1, + ) + # fmt: on + + +class SHARPEN(BuiltinFilter): + name = "Sharpen" + # fmt: off + filterargs = (3, 3), 16, 0, ( + -2, -2, -2, + -2, 32, -2, + -2, -2, -2, + ) + # fmt: on + + +class SMOOTH(BuiltinFilter): + name = "Smooth" + # fmt: off + filterargs = (3, 3), 13, 0, ( + 1, 1, 1, + 1, 5, 1, + 1, 1, 1, + ) + # fmt: on + + +class SMOOTH_MORE(BuiltinFilter): + name = "Smooth More" + # fmt: off + filterargs = (5, 5), 100, 0, ( + 1, 1, 1, 1, 1, + 1, 5, 5, 5, 1, + 1, 5, 44, 5, 1, + 1, 5, 5, 5, 1, + 1, 1, 1, 1, 1, + ) + # fmt: on + + +class Color3DLUT(MultibandFilter): + """Three-dimensional color lookup table. + + Transforms 3-channel pixels using the values of the channels as coordinates + in the 3D lookup table and interpolating the nearest elements. + + This method allows you to apply almost any color transformation + in constant time by using pre-calculated decimated tables. + + .. versionadded:: 5.2.0 + + :param size: Size of the table. One int or tuple of (int, int, int). + Minimal size in any dimension is 2, maximum is 65. + :param table: Flat lookup table. A list of ``channels * size**3`` + float elements or a list of ``size**3`` channels-sized + tuples with floats. Channels are changed first, + then first dimension, then second, then third. + Value 0.0 corresponds lowest value of output, 1.0 highest. + :param channels: Number of channels in the table. Could be 3 or 4. + Default is 3. + :param target_mode: A mode for the result image. Should have not less + than ``channels`` channels. Default is ``None``, + which means that mode wouldn't be changed. + """ + + name = "Color 3D LUT" + + def __init__(self, size, table, channels=3, target_mode=None, **kwargs): + if channels not in (3, 4): + raise ValueError("Only 3 or 4 output channels are supported") + self.size = size = self._check_size(size) + self.channels = channels + self.mode = target_mode + + # Hidden flag `_copy_table=False` could be used to avoid extra copying + # of the table if the table is specially made for the constructor. + copy_table = kwargs.get("_copy_table", True) + items = size[0] * size[1] * size[2] + wrong_size = False + + if numpy and isinstance(table, numpy.ndarray): + if copy_table: + table = table.copy() + + if table.shape in [ + (items * channels,), + (items, channels), + (size[2], size[1], size[0], channels), + ]: + table = table.reshape(items * channels) + else: + wrong_size = True + + else: + if copy_table: + table = list(table) + + # Convert to a flat list + if table and isinstance(table[0], (list, tuple)): + table, raw_table = [], table + for pixel in raw_table: + if len(pixel) != channels: + raise ValueError( + "The elements of the table should " + "have a length of {}.".format(channels) + ) + table.extend(pixel) + + if wrong_size or len(table) != items * channels: + raise ValueError( + "The table should have either channels * size**3 float items " + "or size**3 items of channels-sized tuples with floats. " + "Table should be: {}x{}x{}x{}. Actual length: {}".format( + channels, size[0], size[1], size[2], len(table) + ) + ) + self.table = table + + @staticmethod + def _check_size(size): + try: + _, _, _ = size + except ValueError as e: + raise ValueError( + "Size should be either an integer or a tuple of three integers." + ) from e + except TypeError: + size = (size, size, size) + size = [int(x) for x in size] + for size1D in size: + if not 2 <= size1D <= 65: + raise ValueError("Size should be in [2, 65] range.") + return size + + @classmethod + def generate(cls, size, callback, channels=3, target_mode=None): + """Generates new LUT using provided callback. + + :param size: Size of the table. Passed to the constructor. + :param callback: Function with three parameters which correspond + three color channels. Will be called ``size**3`` + times with values from 0.0 to 1.0 and should return + a tuple with ``channels`` elements. + :param channels: The number of channels which should return callback. + :param target_mode: Passed to the constructor of the resulting + lookup table. + """ + size1D, size2D, size3D = cls._check_size(size) + if channels not in (3, 4): + raise ValueError("Only 3 or 4 output channels are supported") + + table = [0] * (size1D * size2D * size3D * channels) + idx_out = 0 + for b in range(size3D): + for g in range(size2D): + for r in range(size1D): + table[idx_out : idx_out + channels] = callback( + r / (size1D - 1), g / (size2D - 1), b / (size3D - 1) + ) + idx_out += channels + + return cls( + (size1D, size2D, size3D), + table, + channels=channels, + target_mode=target_mode, + _copy_table=False, + ) + + def transform(self, callback, with_normals=False, channels=None, target_mode=None): + """Transforms the table values using provided callback and returns + a new LUT with altered values. + + :param callback: A function which takes old lookup table values + and returns a new set of values. The number + of arguments which function should take is + ``self.channels`` or ``3 + self.channels`` + if ``with_normals`` flag is set. + Should return a tuple of ``self.channels`` or + ``channels`` elements if it is set. + :param with_normals: If true, ``callback`` will be called with + coordinates in the color cube as the first + three arguments. Otherwise, ``callback`` + will be called only with actual color values. + :param channels: The number of channels in the resulting lookup table. + :param target_mode: Passed to the constructor of the resulting + lookup table. + """ + if channels not in (None, 3, 4): + raise ValueError("Only 3 or 4 output channels are supported") + ch_in = self.channels + ch_out = channels or ch_in + size1D, size2D, size3D = self.size + + table = [0] * (size1D * size2D * size3D * ch_out) + idx_in = 0 + idx_out = 0 + for b in range(size3D): + for g in range(size2D): + for r in range(size1D): + values = self.table[idx_in : idx_in + ch_in] + if with_normals: + values = callback( + r / (size1D - 1), + g / (size2D - 1), + b / (size3D - 1), + *values, + ) + else: + values = callback(*values) + table[idx_out : idx_out + ch_out] = values + idx_in += ch_in + idx_out += ch_out + + return type(self)( + self.size, + table, + channels=ch_out, + target_mode=target_mode or self.mode, + _copy_table=False, + ) + + def __repr__(self): + r = [ + "{} from {}".format(self.__class__.__name__, self.table.__class__.__name__), + "size={:d}x{:d}x{:d}".format(*self.size), + "channels={:d}".format(self.channels), + ] + if self.mode: + r.append("target_mode={}".format(self.mode)) + return "<{}>".format(" ".join(r)) + + def filter(self, image): + from . import Image + + return image.color_lut_3d( + self.mode or image.mode, + Image.LINEAR, + self.channels, + self.size[0], + self.size[1], + self.size[2], + self.table, + ) diff --git a/venv/Lib/site-packages/PIL/ImageFont.py b/venv/Lib/site-packages/PIL/ImageFont.py new file mode 100644 index 00000000..8f792d55 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageFont.py @@ -0,0 +1,860 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PIL raster font management +# +# History: +# 1996-08-07 fl created (experimental) +# 1997-08-25 fl minor adjustments to handle fonts from pilfont 0.3 +# 1999-02-06 fl rewrote most font management stuff in C +# 1999-03-17 fl take pth files into account in load_path (from Richard Jones) +# 2001-02-17 fl added freetype support +# 2001-05-09 fl added TransposedFont wrapper class +# 2002-03-04 fl make sure we have a "L" or "1" font +# 2002-12-04 fl skip non-directory entries in the system path +# 2003-04-29 fl add embedded default font +# 2003-09-27 fl added support for truetype charmap encodings +# +# Todo: +# Adapt to PILFONT2 format (16-bit fonts, compressed, single file) +# +# Copyright (c) 1997-2003 by Secret Labs AB +# Copyright (c) 1996-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import base64 +import os +import sys +from io import BytesIO + +from . import Image +from ._util import isDirectory, isPath + +LAYOUT_BASIC = 0 +LAYOUT_RAQM = 1 + + +class _imagingft_not_installed: + # module placeholder + def __getattr__(self, id): + raise ImportError("The _imagingft C module is not installed") + + +try: + from . import _imagingft as core +except ImportError: + core = _imagingft_not_installed() + + +# FIXME: add support for pilfont2 format (see FontFile.py) + +# -------------------------------------------------------------------- +# Font metrics format: +# "PILfont" LF +# fontdescriptor LF +# (optional) key=value... LF +# "DATA" LF +# binary data: 256*10*2 bytes (dx, dy, dstbox, srcbox) +# +# To place a character, cut out srcbox and paste at dstbox, +# relative to the character position. Then move the character +# position according to dx, dy. +# -------------------------------------------------------------------- + + +class ImageFont: + "PIL font wrapper" + + def _load_pilfont(self, filename): + + with open(filename, "rb") as fp: + image = None + for ext in (".png", ".gif", ".pbm"): + if image: + image.close() + try: + fullname = os.path.splitext(filename)[0] + ext + image = Image.open(fullname) + except Exception: + pass + else: + if image and image.mode in ("1", "L"): + break + else: + if image: + image.close() + raise OSError("cannot find glyph data file") + + self.file = fullname + + self._load_pilfont_data(fp, image) + image.close() + + def _load_pilfont_data(self, file, image): + + # read PILfont header + if file.readline() != b"PILfont\n": + raise SyntaxError("Not a PILfont file") + file.readline().split(b";") + self.info = [] # FIXME: should be a dictionary + while True: + s = file.readline() + if not s or s == b"DATA\n": + break + self.info.append(s) + + # read PILfont metrics + data = file.read(256 * 20) + + # check image + if image.mode not in ("1", "L"): + raise TypeError("invalid font image mode") + + image.load() + + self.font = Image.core.font(image.im, data) + + def getsize(self, text, *args, **kwargs): + """ + Returns width and height (in pixels) of given text. + + :param text: Text to measure. + + :return: (width, height) + """ + return self.font.getsize(text) + + def getmask(self, text, mode="", *args, **kwargs): + """ + Create a bitmap for the text. + + If the font uses antialiasing, the bitmap should have mode ``L`` and use a + maximum value of 255. Otherwise, it should have mode ``1``. + + :param text: Text to render. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + .. versionadded:: 1.1.5 + + :return: An internal PIL storage memory instance as defined by the + :py:mod:`PIL.Image.core` interface module. + """ + return self.font.getmask(text, mode) + + +## +# Wrapper for FreeType fonts. Application code should use the +# truetype factory function to create font objects. + + +class FreeTypeFont: + "FreeType font wrapper (requires _imagingft service)" + + def __init__(self, font=None, size=10, index=0, encoding="", layout_engine=None): + # FIXME: use service provider instead + + self.path = font + self.size = size + self.index = index + self.encoding = encoding + + if layout_engine not in (LAYOUT_BASIC, LAYOUT_RAQM): + layout_engine = LAYOUT_BASIC + if core.HAVE_RAQM: + layout_engine = LAYOUT_RAQM + elif layout_engine == LAYOUT_RAQM and not core.HAVE_RAQM: + layout_engine = LAYOUT_BASIC + + self.layout_engine = layout_engine + + def load_from_bytes(f): + self.font_bytes = f.read() + self.font = core.getfont( + "", size, index, encoding, self.font_bytes, layout_engine + ) + + if isPath(font): + if sys.platform == "win32": + font_bytes_path = font if isinstance(font, bytes) else font.encode() + try: + font_bytes_path.decode("ascii") + except UnicodeDecodeError: + # FreeType cannot load fonts with non-ASCII characters on Windows + # So load it into memory first + with open(font, "rb") as f: + load_from_bytes(f) + return + self.font = core.getfont( + font, size, index, encoding, layout_engine=layout_engine + ) + else: + load_from_bytes(font) + + def _multiline_split(self, text): + split_character = "\n" if isinstance(text, str) else b"\n" + return text.split(split_character) + + def getname(self): + """ + :return: A tuple of the font family (e.g. Helvetica) and the font style + (e.g. Bold) + """ + return self.font.family, self.font.style + + def getmetrics(self): + """ + :return: A tuple of the font ascent (the distance from the baseline to + the highest outline point) and descent (the distance from the + baseline to the lowest outline point, a negative value) + """ + return self.font.ascent, self.font.descent + + def getsize( + self, text, direction=None, features=None, language=None, stroke_width=0 + ): + """ + Returns width and height (in pixels) of given text if rendered in font with + provided direction, features, and language. + + :param text: Text to measure. + + :param direction: Direction of the text. It can be 'rtl' (right to + left), 'ltr' (left to right) or 'ttb' (top to bottom). + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param features: A list of OpenType font features to be used during text + layout. This is usually used to turn on optional + font features that are not enabled by default, + for example 'dlig' or 'ss01', but can be also + used to turn off default font features for + example '-liga' to disable ligatures or '-kern' + to disable kerning. To get all supported + features, see + https://docs.microsoft.com/en-us/typography/opentype/spec/featurelist + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param language: Language of the text. Different languages may use + different glyph shapes or ligatures. This parameter tells + the font which language the text is in, and to apply the + correct substitutions as appropriate, if available. + It should be a `BCP 47 language code + ` + Requires libraqm. + + .. versionadded:: 6.0.0 + + :param stroke_width: The width of the text stroke. + + .. versionadded:: 6.2.0 + + :return: (width, height) + """ + size, offset = self.font.getsize(text, False, direction, features, language) + return ( + size[0] + stroke_width * 2 + offset[0], + size[1] + stroke_width * 2 + offset[1], + ) + + def getsize_multiline( + self, + text, + direction=None, + spacing=4, + features=None, + language=None, + stroke_width=0, + ): + """ + Returns width and height (in pixels) of given text if rendered in font + with provided direction, features, and language, while respecting + newline characters. + + :param text: Text to measure. + + :param direction: Direction of the text. It can be 'rtl' (right to + left), 'ltr' (left to right) or 'ttb' (top to bottom). + Requires libraqm. + + :param spacing: The vertical gap between lines, defaulting to 4 pixels. + + :param features: A list of OpenType font features to be used during text + layout. This is usually used to turn on optional + font features that are not enabled by default, + for example 'dlig' or 'ss01', but can be also + used to turn off default font features for + example '-liga' to disable ligatures or '-kern' + to disable kerning. To get all supported + features, see + https://docs.microsoft.com/en-us/typography/opentype/spec/featurelist + Requires libraqm. + + :param language: Language of the text. Different languages may use + different glyph shapes or ligatures. This parameter tells + the font which language the text is in, and to apply the + correct substitutions as appropriate, if available. + It should be a `BCP 47 language code + ` + Requires libraqm. + + .. versionadded:: 6.0.0 + + :param stroke_width: The width of the text stroke. + + .. versionadded:: 6.2.0 + + :return: (width, height) + """ + max_width = 0 + lines = self._multiline_split(text) + line_spacing = self.getsize("A", stroke_width=stroke_width)[1] + spacing + for line in lines: + line_width, line_height = self.getsize( + line, direction, features, language, stroke_width + ) + max_width = max(max_width, line_width) + + return max_width, len(lines) * line_spacing - spacing + + def getoffset(self, text): + """ + Returns the offset of given text. This is the gap between the + starting coordinate and the first marking. Note that this gap is + included in the result of :py:func:`~PIL.ImageFont.FreeTypeFont.getsize`. + + :param text: Text to measure. + + :return: A tuple of the x and y offset + """ + return self.font.getsize(text)[1] + + def getmask( + self, + text, + mode="", + direction=None, + features=None, + language=None, + stroke_width=0, + ): + """ + Create a bitmap for the text. + + If the font uses antialiasing, the bitmap should have mode ``L`` and use a + maximum value of 255. Otherwise, it should have mode ``1``. + + :param text: Text to render. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + .. versionadded:: 1.1.5 + + :param direction: Direction of the text. It can be 'rtl' (right to + left), 'ltr' (left to right) or 'ttb' (top to bottom). + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param features: A list of OpenType font features to be used during text + layout. This is usually used to turn on optional + font features that are not enabled by default, + for example 'dlig' or 'ss01', but can be also + used to turn off default font features for + example '-liga' to disable ligatures or '-kern' + to disable kerning. To get all supported + features, see + https://docs.microsoft.com/en-us/typography/opentype/spec/featurelist + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param language: Language of the text. Different languages may use + different glyph shapes or ligatures. This parameter tells + the font which language the text is in, and to apply the + correct substitutions as appropriate, if available. + It should be a `BCP 47 language code + ` + Requires libraqm. + + .. versionadded:: 6.0.0 + + :param stroke_width: The width of the text stroke. + + .. versionadded:: 6.2.0 + + :return: An internal PIL storage memory instance as defined by the + :py:mod:`PIL.Image.core` interface module. + """ + return self.getmask2( + text, + mode, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + )[0] + + def getmask2( + self, + text, + mode="", + fill=Image.core.fill, + direction=None, + features=None, + language=None, + stroke_width=0, + *args, + **kwargs + ): + """ + Create a bitmap for the text. + + If the font uses antialiasing, the bitmap should have mode ``L`` and use a + maximum value of 255. Otherwise, it should have mode ``1``. + + :param text: Text to render. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + .. versionadded:: 1.1.5 + + :param direction: Direction of the text. It can be 'rtl' (right to + left), 'ltr' (left to right) or 'ttb' (top to bottom). + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param features: A list of OpenType font features to be used during text + layout. This is usually used to turn on optional + font features that are not enabled by default, + for example 'dlig' or 'ss01', but can be also + used to turn off default font features for + example '-liga' to disable ligatures or '-kern' + to disable kerning. To get all supported + features, see + https://docs.microsoft.com/en-us/typography/opentype/spec/featurelist + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param language: Language of the text. Different languages may use + different glyph shapes or ligatures. This parameter tells + the font which language the text is in, and to apply the + correct substitutions as appropriate, if available. + It should be a `BCP 47 language code + ` + Requires libraqm. + + .. versionadded:: 6.0.0 + + :param stroke_width: The width of the text stroke. + + .. versionadded:: 6.2.0 + + :return: A tuple of an internal PIL storage memory instance as defined by the + :py:mod:`PIL.Image.core` interface module, and the text offset, the + gap between the starting coordinate and the first marking + """ + size, offset = self.font.getsize( + text, mode == "1", direction, features, language + ) + size = size[0] + stroke_width * 2, size[1] + stroke_width * 2 + im = fill("L", size, 0) + self.font.render( + text, im.id, mode == "1", direction, features, language, stroke_width + ) + return im, offset + + def font_variant( + self, font=None, size=None, index=None, encoding=None, layout_engine=None + ): + """ + Create a copy of this FreeTypeFont object, + using any specified arguments to override the settings. + + Parameters are identical to the parameters used to initialize this + object. + + :return: A FreeTypeFont object. + """ + return FreeTypeFont( + font=self.path if font is None else font, + size=self.size if size is None else size, + index=self.index if index is None else index, + encoding=self.encoding if encoding is None else encoding, + layout_engine=layout_engine or self.layout_engine, + ) + + def get_variation_names(self): + """ + :returns: A list of the named styles in a variation font. + :exception OSError: If the font is not a variation font. + """ + try: + names = self.font.getvarnames() + except AttributeError as e: + raise NotImplementedError("FreeType 2.9.1 or greater is required") from e + return [name.replace(b"\x00", b"") for name in names] + + def set_variation_by_name(self, name): + """ + :param name: The name of the style. + :exception OSError: If the font is not a variation font. + """ + names = self.get_variation_names() + if not isinstance(name, bytes): + name = name.encode() + index = names.index(name) + + if index == getattr(self, "_last_variation_index", None): + # When the same name is set twice in a row, + # there is an 'unknown freetype error' + # https://savannah.nongnu.org/bugs/?56186 + return + self._last_variation_index = index + + self.font.setvarname(index) + + def get_variation_axes(self): + """ + :returns: A list of the axes in a variation font. + :exception OSError: If the font is not a variation font. + """ + try: + axes = self.font.getvaraxes() + except AttributeError as e: + raise NotImplementedError("FreeType 2.9.1 or greater is required") from e + for axis in axes: + axis["name"] = axis["name"].replace(b"\x00", b"") + return axes + + def set_variation_by_axes(self, axes): + """ + :param axes: A list of values for each axis. + :exception OSError: If the font is not a variation font. + """ + try: + self.font.setvaraxes(axes) + except AttributeError as e: + raise NotImplementedError("FreeType 2.9.1 or greater is required") from e + + +class TransposedFont: + "Wrapper for writing rotated or mirrored text" + + def __init__(self, font, orientation=None): + """ + Wrapper that creates a transposed font from any existing font + object. + + :param font: A font object. + :param orientation: An optional orientation. If given, this should + be one of Image.FLIP_LEFT_RIGHT, Image.FLIP_TOP_BOTTOM, + Image.ROTATE_90, Image.ROTATE_180, or Image.ROTATE_270. + """ + self.font = font + self.orientation = orientation # any 'transpose' argument, or None + + def getsize(self, text, *args, **kwargs): + w, h = self.font.getsize(text) + if self.orientation in (Image.ROTATE_90, Image.ROTATE_270): + return h, w + return w, h + + def getmask(self, text, mode="", *args, **kwargs): + im = self.font.getmask(text, mode, *args, **kwargs) + if self.orientation is not None: + return im.transpose(self.orientation) + return im + + +def load(filename): + """ + Load a font file. This function loads a font object from the given + bitmap font file, and returns the corresponding font object. + + :param filename: Name of font file. + :return: A font object. + :exception OSError: If the file could not be read. + """ + f = ImageFont() + f._load_pilfont(filename) + return f + + +def truetype(font=None, size=10, index=0, encoding="", layout_engine=None): + """ + Load a TrueType or OpenType font from a file or file-like object, + and create a font object. + This function loads a font object from the given file or file-like + object, and creates a font object for a font of the given size. + + Pillow uses FreeType to open font files. If you are opening many fonts + simultaneously on Windows, be aware that Windows limits the number of files + that can be open in C at once to 512. If you approach that limit, an + ``OSError`` may be thrown, reporting that FreeType "cannot open resource". + + This function requires the _imagingft service. + + :param font: A filename or file-like object containing a TrueType font. + If the file is not found in this filename, the loader may also + search in other directories, such as the :file:`fonts/` + directory on Windows or :file:`/Library/Fonts/`, + :file:`/System/Library/Fonts/` and :file:`~/Library/Fonts/` on + macOS. + + :param size: The requested size, in points. + :param index: Which font face to load (default is first available face). + :param encoding: Which font encoding to use (default is Unicode). Possible + encodings include (see the FreeType documentation for more + information): + + * "unic" (Unicode) + * "symb" (Microsoft Symbol) + * "ADOB" (Adobe Standard) + * "ADBE" (Adobe Expert) + * "ADBC" (Adobe Custom) + * "armn" (Apple Roman) + * "sjis" (Shift JIS) + * "gb " (PRC) + * "big5" + * "wans" (Extended Wansung) + * "joha" (Johab) + * "lat1" (Latin-1) + + This specifies the character set to use. It does not alter the + encoding of any text provided in subsequent operations. + :param layout_engine: Which layout engine to use, if available: + `ImageFont.LAYOUT_BASIC` or `ImageFont.LAYOUT_RAQM`. + + You can check support for Raqm layout using + :py:func:`PIL.features.check_feature` with ``feature="raqm"``. + + .. versionadded:: 4.2.0 + :return: A font object. + :exception OSError: If the file could not be read. + """ + + def freetype(font): + return FreeTypeFont(font, size, index, encoding, layout_engine) + + try: + return freetype(font) + except OSError: + if not isPath(font): + raise + ttf_filename = os.path.basename(font) + + dirs = [] + if sys.platform == "win32": + # check the windows font repository + # NOTE: must use uppercase WINDIR, to work around bugs in + # 1.5.2's os.environ.get() + windir = os.environ.get("WINDIR") + if windir: + dirs.append(os.path.join(windir, "fonts")) + elif sys.platform in ("linux", "linux2"): + lindirs = os.environ.get("XDG_DATA_DIRS", "") + if not lindirs: + # According to the freedesktop spec, XDG_DATA_DIRS should + # default to /usr/share + lindirs = "/usr/share" + dirs += [os.path.join(lindir, "fonts") for lindir in lindirs.split(":")] + elif sys.platform == "darwin": + dirs += [ + "/Library/Fonts", + "/System/Library/Fonts", + os.path.expanduser("~/Library/Fonts"), + ] + + ext = os.path.splitext(ttf_filename)[1] + first_font_with_a_different_extension = None + for directory in dirs: + for walkroot, walkdir, walkfilenames in os.walk(directory): + for walkfilename in walkfilenames: + if ext and walkfilename == ttf_filename: + return freetype(os.path.join(walkroot, walkfilename)) + elif not ext and os.path.splitext(walkfilename)[0] == ttf_filename: + fontpath = os.path.join(walkroot, walkfilename) + if os.path.splitext(fontpath)[1] == ".ttf": + return freetype(fontpath) + if not ext and first_font_with_a_different_extension is None: + first_font_with_a_different_extension = fontpath + if first_font_with_a_different_extension: + return freetype(first_font_with_a_different_extension) + raise + + +def load_path(filename): + """ + Load font file. Same as :py:func:`~PIL.ImageFont.load`, but searches for a + bitmap font along the Python path. + + :param filename: Name of font file. + :return: A font object. + :exception OSError: If the file could not be read. + """ + for directory in sys.path: + if isDirectory(directory): + if not isinstance(filename, str): + filename = filename.decode("utf-8") + try: + return load(os.path.join(directory, filename)) + except OSError: + pass + raise OSError("cannot find font file") + + +def load_default(): + """Load a "better than nothing" default font. + + .. versionadded:: 1.1.4 + + :return: A font object. + """ + f = ImageFont() + f._load_pilfont_data( + # courB08 + BytesIO( + base64.b64decode( + b""" +UElMZm9udAo7Ozs7OzsxMDsKREFUQQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAA//8AAQAAAAAAAAABAAEA +BgAAAAH/+gADAAAAAQAAAAMABgAGAAAAAf/6AAT//QADAAAABgADAAYAAAAA//kABQABAAYAAAAL +AAgABgAAAAD/+AAFAAEACwAAABAACQAGAAAAAP/5AAUAAAAQAAAAFQAHAAYAAP////oABQAAABUA +AAAbAAYABgAAAAH/+QAE//wAGwAAAB4AAwAGAAAAAf/5AAQAAQAeAAAAIQAIAAYAAAAB//kABAAB +ACEAAAAkAAgABgAAAAD/+QAE//0AJAAAACgABAAGAAAAAP/6AAX//wAoAAAALQAFAAYAAAAB//8A +BAACAC0AAAAwAAMABgAAAAD//AAF//0AMAAAADUAAQAGAAAAAf//AAMAAAA1AAAANwABAAYAAAAB +//kABQABADcAAAA7AAgABgAAAAD/+QAFAAAAOwAAAEAABwAGAAAAAP/5AAYAAABAAAAARgAHAAYA +AAAA//kABQAAAEYAAABLAAcABgAAAAD/+QAFAAAASwAAAFAABwAGAAAAAP/5AAYAAABQAAAAVgAH +AAYAAAAA//kABQAAAFYAAABbAAcABgAAAAD/+QAFAAAAWwAAAGAABwAGAAAAAP/5AAUAAABgAAAA +ZQAHAAYAAAAA//kABQAAAGUAAABqAAcABgAAAAD/+QAFAAAAagAAAG8ABwAGAAAAAf/8AAMAAABv +AAAAcQAEAAYAAAAA//wAAwACAHEAAAB0AAYABgAAAAD/+gAE//8AdAAAAHgABQAGAAAAAP/7AAT/ +/gB4AAAAfAADAAYAAAAB//oABf//AHwAAACAAAUABgAAAAD/+gAFAAAAgAAAAIUABgAGAAAAAP/5 +AAYAAQCFAAAAiwAIAAYAAP////oABgAAAIsAAACSAAYABgAA////+gAFAAAAkgAAAJgABgAGAAAA +AP/6AAUAAACYAAAAnQAGAAYAAP////oABQAAAJ0AAACjAAYABgAA////+gAFAAAAowAAAKkABgAG +AAD////6AAUAAACpAAAArwAGAAYAAAAA//oABQAAAK8AAAC0AAYABgAA////+gAGAAAAtAAAALsA +BgAGAAAAAP/6AAQAAAC7AAAAvwAGAAYAAP////oABQAAAL8AAADFAAYABgAA////+gAGAAAAxQAA +AMwABgAGAAD////6AAUAAADMAAAA0gAGAAYAAP////oABQAAANIAAADYAAYABgAA////+gAGAAAA +2AAAAN8ABgAGAAAAAP/6AAUAAADfAAAA5AAGAAYAAP////oABQAAAOQAAADqAAYABgAAAAD/+gAF +AAEA6gAAAO8ABwAGAAD////6AAYAAADvAAAA9gAGAAYAAAAA//oABQAAAPYAAAD7AAYABgAA//// ++gAFAAAA+wAAAQEABgAGAAD////6AAYAAAEBAAABCAAGAAYAAP////oABgAAAQgAAAEPAAYABgAA +////+gAGAAABDwAAARYABgAGAAAAAP/6AAYAAAEWAAABHAAGAAYAAP////oABgAAARwAAAEjAAYA +BgAAAAD/+gAFAAABIwAAASgABgAGAAAAAf/5AAQAAQEoAAABKwAIAAYAAAAA//kABAABASsAAAEv +AAgABgAAAAH/+QAEAAEBLwAAATIACAAGAAAAAP/5AAX//AEyAAABNwADAAYAAAAAAAEABgACATcA +AAE9AAEABgAAAAH/+QAE//wBPQAAAUAAAwAGAAAAAP/7AAYAAAFAAAABRgAFAAYAAP////kABQAA +AUYAAAFMAAcABgAAAAD/+wAFAAABTAAAAVEABQAGAAAAAP/5AAYAAAFRAAABVwAHAAYAAAAA//sA +BQAAAVcAAAFcAAUABgAAAAD/+QAFAAABXAAAAWEABwAGAAAAAP/7AAYAAgFhAAABZwAHAAYAAP// +//kABQAAAWcAAAFtAAcABgAAAAD/+QAGAAABbQAAAXMABwAGAAAAAP/5AAQAAgFzAAABdwAJAAYA +AP////kABgAAAXcAAAF+AAcABgAAAAD/+QAGAAABfgAAAYQABwAGAAD////7AAUAAAGEAAABigAF +AAYAAP////sABQAAAYoAAAGQAAUABgAAAAD/+wAFAAABkAAAAZUABQAGAAD////7AAUAAgGVAAAB +mwAHAAYAAAAA//sABgACAZsAAAGhAAcABgAAAAD/+wAGAAABoQAAAacABQAGAAAAAP/7AAYAAAGn +AAABrQAFAAYAAAAA//kABgAAAa0AAAGzAAcABgAA////+wAGAAABswAAAboABQAGAAD////7AAUA +AAG6AAABwAAFAAYAAP////sABgAAAcAAAAHHAAUABgAAAAD/+wAGAAABxwAAAc0ABQAGAAD////7 +AAYAAgHNAAAB1AAHAAYAAAAA//sABQAAAdQAAAHZAAUABgAAAAH/+QAFAAEB2QAAAd0ACAAGAAAA +Av/6AAMAAQHdAAAB3gAHAAYAAAAA//kABAABAd4AAAHiAAgABgAAAAD/+wAF//0B4gAAAecAAgAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAB +//sAAwACAecAAAHpAAcABgAAAAD/+QAFAAEB6QAAAe4ACAAGAAAAAP/5AAYAAAHuAAAB9AAHAAYA +AAAA//oABf//AfQAAAH5AAUABgAAAAD/+QAGAAAB+QAAAf8ABwAGAAAAAv/5AAMAAgH/AAACAAAJ +AAYAAAAA//kABQABAgAAAAIFAAgABgAAAAH/+gAE//sCBQAAAggAAQAGAAAAAP/5AAYAAAIIAAAC +DgAHAAYAAAAB//kABf/+Ag4AAAISAAUABgAA////+wAGAAACEgAAAhkABQAGAAAAAP/7AAX//gIZ +AAACHgADAAYAAAAA//wABf/9Ah4AAAIjAAEABgAAAAD/+QAHAAACIwAAAioABwAGAAAAAP/6AAT/ ++wIqAAACLgABAAYAAAAA//kABP/8Ai4AAAIyAAMABgAAAAD/+gAFAAACMgAAAjcABgAGAAAAAf/5 +AAT//QI3AAACOgAEAAYAAAAB//kABP/9AjoAAAI9AAQABgAAAAL/+QAE//sCPQAAAj8AAgAGAAD/ +///7AAYAAgI/AAACRgAHAAYAAAAA//kABgABAkYAAAJMAAgABgAAAAH//AAD//0CTAAAAk4AAQAG +AAAAAf//AAQAAgJOAAACUQADAAYAAAAB//kABP/9AlEAAAJUAAQABgAAAAH/+QAF//4CVAAAAlgA +BQAGAAD////7AAYAAAJYAAACXwAFAAYAAP////kABgAAAl8AAAJmAAcABgAA////+QAGAAACZgAA +Am0ABwAGAAD////5AAYAAAJtAAACdAAHAAYAAAAA//sABQACAnQAAAJ5AAcABgAA////9wAGAAAC +eQAAAoAACQAGAAD////3AAYAAAKAAAAChwAJAAYAAP////cABgAAAocAAAKOAAkABgAA////9wAG +AAACjgAAApUACQAGAAD////4AAYAAAKVAAACnAAIAAYAAP////cABgAAApwAAAKjAAkABgAA//// ++gAGAAACowAAAqoABgAGAAAAAP/6AAUAAgKqAAACrwAIAAYAAP////cABQAAAq8AAAK1AAkABgAA +////9wAFAAACtQAAArsACQAGAAD////3AAUAAAK7AAACwQAJAAYAAP////gABQAAAsEAAALHAAgA +BgAAAAD/9wAEAAACxwAAAssACQAGAAAAAP/3AAQAAALLAAACzwAJAAYAAAAA//cABAAAAs8AAALT +AAkABgAAAAD/+AAEAAAC0wAAAtcACAAGAAD////6AAUAAALXAAAC3QAGAAYAAP////cABgAAAt0A +AALkAAkABgAAAAD/9wAFAAAC5AAAAukACQAGAAAAAP/3AAUAAALpAAAC7gAJAAYAAAAA//cABQAA +Au4AAALzAAkABgAAAAD/9wAFAAAC8wAAAvgACQAGAAAAAP/4AAUAAAL4AAAC/QAIAAYAAAAA//oA +Bf//Av0AAAMCAAUABgAA////+gAGAAADAgAAAwkABgAGAAD////3AAYAAAMJAAADEAAJAAYAAP// +//cABgAAAxAAAAMXAAkABgAA////9wAGAAADFwAAAx4ACQAGAAD////4AAYAAAAAAAoABwASAAYA +AP////cABgAAAAcACgAOABMABgAA////+gAFAAAADgAKABQAEAAGAAD////6AAYAAAAUAAoAGwAQ +AAYAAAAA//gABgAAABsACgAhABIABgAAAAD/+AAGAAAAIQAKACcAEgAGAAAAAP/4AAYAAAAnAAoA +LQASAAYAAAAA//gABgAAAC0ACgAzABIABgAAAAD/+QAGAAAAMwAKADkAEQAGAAAAAP/3AAYAAAA5 +AAoAPwATAAYAAP////sABQAAAD8ACgBFAA8ABgAAAAD/+wAFAAIARQAKAEoAEQAGAAAAAP/4AAUA +AABKAAoATwASAAYAAAAA//gABQAAAE8ACgBUABIABgAAAAD/+AAFAAAAVAAKAFkAEgAGAAAAAP/5 +AAUAAABZAAoAXgARAAYAAAAA//gABgAAAF4ACgBkABIABgAAAAD/+AAGAAAAZAAKAGoAEgAGAAAA +AP/4AAYAAABqAAoAcAASAAYAAAAA//kABgAAAHAACgB2ABEABgAAAAD/+AAFAAAAdgAKAHsAEgAG +AAD////4AAYAAAB7AAoAggASAAYAAAAA//gABQAAAIIACgCHABIABgAAAAD/+AAFAAAAhwAKAIwA +EgAGAAAAAP/4AAUAAACMAAoAkQASAAYAAAAA//gABQAAAJEACgCWABIABgAAAAD/+QAFAAAAlgAK +AJsAEQAGAAAAAP/6AAX//wCbAAoAoAAPAAYAAAAA//oABQABAKAACgClABEABgAA////+AAGAAAA +pQAKAKwAEgAGAAD////4AAYAAACsAAoAswASAAYAAP////gABgAAALMACgC6ABIABgAA////+QAG +AAAAugAKAMEAEQAGAAD////4AAYAAgDBAAoAyAAUAAYAAP////kABQACAMgACgDOABMABgAA//// ++QAGAAIAzgAKANUAEw== +""" + ) + ), + Image.open( + BytesIO( + base64.b64decode( + b""" +iVBORw0KGgoAAAANSUhEUgAAAx4AAAAUAQAAAAArMtZoAAAEwElEQVR4nABlAJr/AHVE4czCI/4u +Mc4b7vuds/xzjz5/3/7u/n9vMe7vnfH/9++vPn/xyf5zhxzjt8GHw8+2d83u8x27199/nxuQ6Od9 +M43/5z2I+9n9ZtmDBwMQECDRQw/eQIQohJXxpBCNVE6QCCAAAAD//wBlAJr/AgALyj1t/wINwq0g +LeNZUworuN1cjTPIzrTX6ofHWeo3v336qPzfEwRmBnHTtf95/fglZK5N0PDgfRTslpGBvz7LFc4F +IUXBWQGjQ5MGCx34EDFPwXiY4YbYxavpnhHFrk14CDAAAAD//wBlAJr/AgKqRooH2gAgPeggvUAA +Bu2WfgPoAwzRAABAAAAAAACQgLz/3Uv4Gv+gX7BJgDeeGP6AAAD1NMDzKHD7ANWr3loYbxsAD791 +NAADfcoIDyP44K/jv4Y63/Z+t98Ovt+ub4T48LAAAAD//wBlAJr/AuplMlADJAAAAGuAphWpqhMx +in0A/fRvAYBABPgBwBUgABBQ/sYAyv9g0bCHgOLoGAAAAAAAREAAwI7nr0ArYpow7aX8//9LaP/9 +SjdavWA8ePHeBIKB//81/83ndznOaXx379wAAAD//wBlAJr/AqDxW+D3AABAAbUh/QMnbQag/gAY +AYDAAACgtgD/gOqAAAB5IA/8AAAk+n9w0AAA8AAAmFRJuPo27ciC0cD5oeW4E7KA/wD3ECMAn2tt +y8PgwH8AfAxFzC0JzeAMtratAsC/ffwAAAD//wBlAJr/BGKAyCAA4AAAAvgeYTAwHd1kmQF5chkG +ABoMIHcL5xVpTfQbUqzlAAAErwAQBgAAEOClA5D9il08AEh/tUzdCBsXkbgACED+woQg8Si9VeqY +lODCn7lmF6NhnAEYgAAA/NMIAAAAAAD//2JgjLZgVGBg5Pv/Tvpc8hwGBjYGJADjHDrAwPzAjv/H +/Wf3PzCwtzcwHmBgYGcwbZz8wHaCAQMDOwMDQ8MCBgYOC3W7mp+f0w+wHOYxO3OG+e376hsMZjk3 +AAAAAP//YmCMY2A4wMAIN5e5gQETPD6AZisDAwMDgzSDAAPjByiHcQMDAwMDg1nOze1lByRu5/47 +c4859311AYNZzg0AAAAA//9iYGDBYihOIIMuwIjGL39/fwffA8b//xv/P2BPtzzHwCBjUQAAAAD/ +/yLFBrIBAAAA//9i1HhcwdhizX7u8NZNzyLbvT97bfrMf/QHI8evOwcSqGUJAAAA//9iYBB81iSw +pEE170Qrg5MIYydHqwdDQRMrAwcVrQAAAAD//2J4x7j9AAMDn8Q/BgYLBoaiAwwMjPdvMDBYM1Tv +oJodAAAAAP//Yqo/83+dxePWlxl3npsel9lvLfPcqlE9725C+acfVLMEAAAA//9i+s9gwCoaaGMR +evta/58PTEWzr21hufPjA8N+qlnBwAAAAAD//2JiWLci5v1+HmFXDqcnULE/MxgYGBj+f6CaJQAA +AAD//2Ji2FrkY3iYpYC5qDeGgeEMAwPDvwQBBoYvcTwOVLMEAAAA//9isDBgkP///0EOg9z35v// +Gc/eeW7BwPj5+QGZhANUswMAAAD//2JgqGBgYGBgqEMXlvhMPUsAAAAA//8iYDd1AAAAAP//AwDR +w7IkEbzhVQAAAABJRU5ErkJggg== +""" + ) + ) + ), + ) + return f diff --git a/venv/Lib/site-packages/PIL/ImageGrab.py b/venv/Lib/site-packages/PIL/ImageGrab.py new file mode 100644 index 00000000..3fa338b0 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageGrab.py @@ -0,0 +1,120 @@ +# +# The Python Imaging Library +# $Id$ +# +# screen grabber +# +# History: +# 2001-04-26 fl created +# 2001-09-17 fl use builtin driver, if present +# 2002-11-19 fl added grabclipboard support +# +# Copyright (c) 2001-2002 by Secret Labs AB +# Copyright (c) 2001-2002 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import sys + +from . import Image + +if sys.platform == "darwin": + import os + import tempfile + import subprocess + + +def grab(bbox=None, include_layered_windows=False, all_screens=False, xdisplay=None): + if xdisplay is None: + if sys.platform == "darwin": + fh, filepath = tempfile.mkstemp(".png") + os.close(fh) + subprocess.call(["screencapture", "-x", filepath]) + im = Image.open(filepath) + im.load() + os.unlink(filepath) + if bbox: + im_cropped = im.crop(bbox) + im.close() + return im_cropped + return im + elif sys.platform == "win32": + offset, size, data = Image.core.grabscreen_win32( + include_layered_windows, all_screens + ) + im = Image.frombytes( + "RGB", + size, + data, + # RGB, 32-bit line padding, origin lower left corner + "raw", + "BGR", + (size[0] * 3 + 3) & -4, + -1, + ) + if bbox: + x0, y0 = offset + left, top, right, bottom = bbox + im = im.crop((left - x0, top - y0, right - x0, bottom - y0)) + return im + # use xdisplay=None for default display on non-win32/macOS systems + if not Image.core.HAVE_XCB: + raise OSError("Pillow was built without XCB support") + size, data = Image.core.grabscreen_x11(xdisplay) + im = Image.frombytes("RGB", size, data, "raw", "BGRX", size[0] * 4, 1) + if bbox: + im = im.crop(bbox) + return im + + +def grabclipboard(): + if sys.platform == "darwin": + fh, filepath = tempfile.mkstemp(".jpg") + os.close(fh) + commands = [ + 'set theFile to (open for access POSIX file "' + + filepath + + '" with write permission)', + "try", + " write (the clipboard as JPEG picture) to theFile", + "end try", + "close access theFile", + ] + script = ["osascript"] + for command in commands: + script += ["-e", command] + subprocess.call(script) + + im = None + if os.stat(filepath).st_size != 0: + im = Image.open(filepath) + im.load() + os.unlink(filepath) + return im + elif sys.platform == "win32": + fmt, data = Image.core.grabclipboard_win32() + if fmt == "file": # CF_HDROP + import struct + + o = struct.unpack_from("I", data)[0] + if data[16] != 0: + files = data[o:].decode("utf-16le").split("\0") + else: + files = data[o:].decode("mbcs").split("\0") + return files[: files.index("")] + if isinstance(data, bytes): + import io + + data = io.BytesIO(data) + if fmt == "png": + from . import PngImagePlugin + + return PngImagePlugin.PngImageFile(data) + elif fmt == "DIB": + from . import BmpImagePlugin + + return BmpImagePlugin.DibImageFile(data) + return None + else: + raise NotImplementedError("ImageGrab.grabclipboard() is macOS and Windows only") diff --git a/venv/Lib/site-packages/PIL/ImageMath.py b/venv/Lib/site-packages/PIL/ImageMath.py new file mode 100644 index 00000000..9a2d0b78 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageMath.py @@ -0,0 +1,253 @@ +# +# The Python Imaging Library +# $Id$ +# +# a simple math add-on for the Python Imaging Library +# +# History: +# 1999-02-15 fl Original PIL Plus release +# 2005-05-05 fl Simplified and cleaned up for PIL 1.1.6 +# 2005-09-12 fl Fixed int() and float() for Python 2.4.1 +# +# Copyright (c) 1999-2005 by Secret Labs AB +# Copyright (c) 2005 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import builtins + +from . import Image, _imagingmath + +VERBOSE = 0 + + +def _isconstant(v): + return isinstance(v, (int, float)) + + +class _Operand: + """Wraps an image operand, providing standard operators""" + + def __init__(self, im): + self.im = im + + def __fixup(self, im1): + # convert image to suitable mode + if isinstance(im1, _Operand): + # argument was an image. + if im1.im.mode in ("1", "L"): + return im1.im.convert("I") + elif im1.im.mode in ("I", "F"): + return im1.im + else: + raise ValueError("unsupported mode: %s" % im1.im.mode) + else: + # argument was a constant + if _isconstant(im1) and self.im.mode in ("1", "L", "I"): + return Image.new("I", self.im.size, im1) + else: + return Image.new("F", self.im.size, im1) + + def apply(self, op, im1, im2=None, mode=None): + im1 = self.__fixup(im1) + if im2 is None: + # unary operation + out = Image.new(mode or im1.mode, im1.size, None) + im1.load() + try: + op = getattr(_imagingmath, op + "_" + im1.mode) + except AttributeError as e: + raise TypeError("bad operand type for '%s'" % op) from e + _imagingmath.unop(op, out.im.id, im1.im.id) + else: + # binary operation + im2 = self.__fixup(im2) + if im1.mode != im2.mode: + # convert both arguments to floating point + if im1.mode != "F": + im1 = im1.convert("F") + if im2.mode != "F": + im2 = im2.convert("F") + if im1.mode != im2.mode: + raise ValueError("mode mismatch") + if im1.size != im2.size: + # crop both arguments to a common size + size = (min(im1.size[0], im2.size[0]), min(im1.size[1], im2.size[1])) + if im1.size != size: + im1 = im1.crop((0, 0) + size) + if im2.size != size: + im2 = im2.crop((0, 0) + size) + out = Image.new(mode or im1.mode, size, None) + else: + out = Image.new(mode or im1.mode, im1.size, None) + im1.load() + im2.load() + try: + op = getattr(_imagingmath, op + "_" + im1.mode) + except AttributeError as e: + raise TypeError("bad operand type for '%s'" % op) from e + _imagingmath.binop(op, out.im.id, im1.im.id, im2.im.id) + return _Operand(out) + + # unary operators + def __bool__(self): + # an image is "true" if it contains at least one non-zero pixel + return self.im.getbbox() is not None + + def __abs__(self): + return self.apply("abs", self) + + def __pos__(self): + return self + + def __neg__(self): + return self.apply("neg", self) + + # binary operators + def __add__(self, other): + return self.apply("add", self, other) + + def __radd__(self, other): + return self.apply("add", other, self) + + def __sub__(self, other): + return self.apply("sub", self, other) + + def __rsub__(self, other): + return self.apply("sub", other, self) + + def __mul__(self, other): + return self.apply("mul", self, other) + + def __rmul__(self, other): + return self.apply("mul", other, self) + + def __truediv__(self, other): + return self.apply("div", self, other) + + def __rtruediv__(self, other): + return self.apply("div", other, self) + + def __mod__(self, other): + return self.apply("mod", self, other) + + def __rmod__(self, other): + return self.apply("mod", other, self) + + def __pow__(self, other): + return self.apply("pow", self, other) + + def __rpow__(self, other): + return self.apply("pow", other, self) + + # bitwise + def __invert__(self): + return self.apply("invert", self) + + def __and__(self, other): + return self.apply("and", self, other) + + def __rand__(self, other): + return self.apply("and", other, self) + + def __or__(self, other): + return self.apply("or", self, other) + + def __ror__(self, other): + return self.apply("or", other, self) + + def __xor__(self, other): + return self.apply("xor", self, other) + + def __rxor__(self, other): + return self.apply("xor", other, self) + + def __lshift__(self, other): + return self.apply("lshift", self, other) + + def __rshift__(self, other): + return self.apply("rshift", self, other) + + # logical + def __eq__(self, other): + return self.apply("eq", self, other) + + def __ne__(self, other): + return self.apply("ne", self, other) + + def __lt__(self, other): + return self.apply("lt", self, other) + + def __le__(self, other): + return self.apply("le", self, other) + + def __gt__(self, other): + return self.apply("gt", self, other) + + def __ge__(self, other): + return self.apply("ge", self, other) + + +# conversions +def imagemath_int(self): + return _Operand(self.im.convert("I")) + + +def imagemath_float(self): + return _Operand(self.im.convert("F")) + + +# logical +def imagemath_equal(self, other): + return self.apply("eq", self, other, mode="I") + + +def imagemath_notequal(self, other): + return self.apply("ne", self, other, mode="I") + + +def imagemath_min(self, other): + return self.apply("min", self, other) + + +def imagemath_max(self, other): + return self.apply("max", self, other) + + +def imagemath_convert(self, mode): + return _Operand(self.im.convert(mode)) + + +ops = {} +for k, v in list(globals().items()): + if k[:10] == "imagemath_": + ops[k[10:]] = v + + +def eval(expression, _dict={}, **kw): + """ + Evaluates an image expression. + + :param expression: A string containing a Python-style expression. + :param options: Values to add to the evaluation context. You + can either use a dictionary, or one or more keyword + arguments. + :return: The evaluated expression. This is usually an image object, but can + also be an integer, a floating point value, or a pixel tuple, + depending on the expression. + """ + + # build execution namespace + args = ops.copy() + args.update(_dict) + args.update(kw) + for k, v in list(args.items()): + if hasattr(v, "im"): + args[k] = _Operand(v) + + out = builtins.eval(expression, args) + try: + return out.im + except AttributeError: + return out diff --git a/venv/Lib/site-packages/PIL/ImageMode.py b/venv/Lib/site-packages/PIL/ImageMode.py new file mode 100644 index 00000000..98828832 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageMode.py @@ -0,0 +1,64 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard mode descriptors +# +# History: +# 2006-03-20 fl Added +# +# Copyright (c) 2006 by Secret Labs AB. +# Copyright (c) 2006 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +# mode descriptor cache +_modes = None + + +class ModeDescriptor: + """Wrapper for mode strings.""" + + def __init__(self, mode, bands, basemode, basetype): + self.mode = mode + self.bands = bands + self.basemode = basemode + self.basetype = basetype + + def __str__(self): + return self.mode + + +def getmode(mode): + """Gets a mode descriptor for the given mode.""" + global _modes + if not _modes: + # initialize mode cache + + from . import Image + + modes = {} + # core modes + for m, (basemode, basetype, bands) in Image._MODEINFO.items(): + modes[m] = ModeDescriptor(m, bands, basemode, basetype) + # extra experimental modes + modes["RGBa"] = ModeDescriptor("RGBa", ("R", "G", "B", "a"), "RGB", "L") + modes["LA"] = ModeDescriptor("LA", ("L", "A"), "L", "L") + modes["La"] = ModeDescriptor("La", ("L", "a"), "L", "L") + modes["PA"] = ModeDescriptor("PA", ("P", "A"), "RGB", "L") + # mapping modes + for i16mode in ( + "I;16", + "I;16S", + "I;16L", + "I;16LS", + "I;16B", + "I;16BS", + "I;16N", + "I;16NS", + ): + modes[i16mode] = ModeDescriptor(i16mode, ("I",), "L", "L") + # set global mode cache atomically + _modes = modes + return _modes[mode] diff --git a/venv/Lib/site-packages/PIL/ImageMorph.py b/venv/Lib/site-packages/PIL/ImageMorph.py new file mode 100644 index 00000000..d1ec09ea --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageMorph.py @@ -0,0 +1,245 @@ +# A binary morphology add-on for the Python Imaging Library +# +# History: +# 2014-06-04 Initial version. +# +# Copyright (c) 2014 Dov Grobgeld + +import re + +from . import Image, _imagingmorph + +LUT_SIZE = 1 << 9 + +# fmt: off +ROTATION_MATRIX = [ + 6, 3, 0, + 7, 4, 1, + 8, 5, 2, +] +MIRROR_MATRIX = [ + 2, 1, 0, + 5, 4, 3, + 8, 7, 6, +] +# fmt: on + + +class LutBuilder: + """A class for building a MorphLut from a descriptive language + + The input patterns is a list of a strings sequences like these:: + + 4:(... + .1. + 111)->1 + + (whitespaces including linebreaks are ignored). The option 4 + describes a series of symmetry operations (in this case a + 4-rotation), the pattern is described by: + + - . or X - Ignore + - 1 - Pixel is on + - 0 - Pixel is off + + The result of the operation is described after "->" string. + + The default is to return the current pixel value, which is + returned if no other match is found. + + Operations: + + - 4 - 4 way rotation + - N - Negate + - 1 - Dummy op for no other operation (an op must always be given) + - M - Mirroring + + Example:: + + lb = LutBuilder(patterns = ["4:(... .1. 111)->1"]) + lut = lb.build_lut() + + """ + + def __init__(self, patterns=None, op_name=None): + if patterns is not None: + self.patterns = patterns + else: + self.patterns = [] + self.lut = None + if op_name is not None: + known_patterns = { + "corner": ["1:(... ... ...)->0", "4:(00. 01. ...)->1"], + "dilation4": ["4:(... .0. .1.)->1"], + "dilation8": ["4:(... .0. .1.)->1", "4:(... .0. ..1)->1"], + "erosion4": ["4:(... .1. .0.)->0"], + "erosion8": ["4:(... .1. .0.)->0", "4:(... .1. ..0)->0"], + "edge": [ + "1:(... ... ...)->0", + "4:(.0. .1. ...)->1", + "4:(01. .1. ...)->1", + ], + } + if op_name not in known_patterns: + raise Exception("Unknown pattern " + op_name + "!") + + self.patterns = known_patterns[op_name] + + def add_patterns(self, patterns): + self.patterns += patterns + + def build_default_lut(self): + symbols = [0, 1] + m = 1 << 4 # pos of current pixel + self.lut = bytearray(symbols[(i & m) > 0] for i in range(LUT_SIZE)) + + def get_lut(self): + return self.lut + + def _string_permute(self, pattern, permutation): + """string_permute takes a pattern and a permutation and returns the + string permuted according to the permutation list. + """ + assert len(permutation) == 9 + return "".join(pattern[p] for p in permutation) + + def _pattern_permute(self, basic_pattern, options, basic_result): + """pattern_permute takes a basic pattern and its result and clones + the pattern according to the modifications described in the $options + parameter. It returns a list of all cloned patterns.""" + patterns = [(basic_pattern, basic_result)] + + # rotations + if "4" in options: + res = patterns[-1][1] + for i in range(4): + patterns.append( + (self._string_permute(patterns[-1][0], ROTATION_MATRIX), res) + ) + # mirror + if "M" in options: + n = len(patterns) + for pattern, res in patterns[0:n]: + patterns.append((self._string_permute(pattern, MIRROR_MATRIX), res)) + + # negate + if "N" in options: + n = len(patterns) + for pattern, res in patterns[0:n]: + # Swap 0 and 1 + pattern = pattern.replace("0", "Z").replace("1", "0").replace("Z", "1") + res = 1 - int(res) + patterns.append((pattern, res)) + + return patterns + + def build_lut(self): + """Compile all patterns into a morphology lut. + + TBD :Build based on (file) morphlut:modify_lut + """ + self.build_default_lut() + patterns = [] + + # Parse and create symmetries of the patterns strings + for p in self.patterns: + m = re.search(r"(\w*):?\s*\((.+?)\)\s*->\s*(\d)", p.replace("\n", "")) + if not m: + raise Exception('Syntax error in pattern "' + p + '"') + options = m.group(1) + pattern = m.group(2) + result = int(m.group(3)) + + # Get rid of spaces + pattern = pattern.replace(" ", "").replace("\n", "") + + patterns += self._pattern_permute(pattern, options, result) + + # compile the patterns into regular expressions for speed + for i, pattern in enumerate(patterns): + p = pattern[0].replace(".", "X").replace("X", "[01]") + p = re.compile(p) + patterns[i] = (p, pattern[1]) + + # Step through table and find patterns that match. + # Note that all the patterns are searched. The last one + # caught overrides + for i in range(LUT_SIZE): + # Build the bit pattern + bitpattern = bin(i)[2:] + bitpattern = ("0" * (9 - len(bitpattern)) + bitpattern)[::-1] + + for p, r in patterns: + if p.match(bitpattern): + self.lut[i] = [0, 1][r] + + return self.lut + + +class MorphOp: + """A class for binary morphological operators""" + + def __init__(self, lut=None, op_name=None, patterns=None): + """Create a binary morphological operator""" + self.lut = lut + if op_name is not None: + self.lut = LutBuilder(op_name=op_name).build_lut() + elif patterns is not None: + self.lut = LutBuilder(patterns=patterns).build_lut() + + def apply(self, image): + """Run a single morphological operation on an image + + Returns a tuple of the number of changed pixels and the + morphed image""" + if self.lut is None: + raise Exception("No operator loaded") + + if image.mode != "L": + raise Exception("Image must be binary, meaning it must use mode L") + outimage = Image.new(image.mode, image.size, None) + count = _imagingmorph.apply(bytes(self.lut), image.im.id, outimage.im.id) + return count, outimage + + def match(self, image): + """Get a list of coordinates matching the morphological operation on + an image. + + Returns a list of tuples of (x,y) coordinates + of all matching pixels. See :ref:`coordinate-system`.""" + if self.lut is None: + raise Exception("No operator loaded") + + if image.mode != "L": + raise Exception("Image must be binary, meaning it must use mode L") + return _imagingmorph.match(bytes(self.lut), image.im.id) + + def get_on_pixels(self, image): + """Get a list of all turned on pixels in a binary image + + Returns a list of tuples of (x,y) coordinates + of all matching pixels. See :ref:`coordinate-system`.""" + + if image.mode != "L": + raise Exception("Image must be binary, meaning it must use mode L") + return _imagingmorph.get_on_pixels(image.im.id) + + def load_lut(self, filename): + """Load an operator from an mrl file""" + with open(filename, "rb") as f: + self.lut = bytearray(f.read()) + + if len(self.lut) != LUT_SIZE: + self.lut = None + raise Exception("Wrong size operator file!") + + def save_lut(self, filename): + """Save an operator to an mrl file""" + if self.lut is None: + raise Exception("No operator loaded") + with open(filename, "wb") as f: + f.write(self.lut) + + def set_lut(self, lut): + """Set the lut from an external source""" + self.lut = lut diff --git a/venv/Lib/site-packages/PIL/ImageOps.py b/venv/Lib/site-packages/PIL/ImageOps.py new file mode 100644 index 00000000..e4e0840b --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageOps.py @@ -0,0 +1,551 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard image operations +# +# History: +# 2001-10-20 fl Created +# 2001-10-23 fl Added autocontrast operator +# 2001-12-18 fl Added Kevin's fit operator +# 2004-03-14 fl Fixed potential division by zero in equalize +# 2005-05-05 fl Fixed equalize for low number of values +# +# Copyright (c) 2001-2004 by Secret Labs AB +# Copyright (c) 2001-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import functools +import operator + +from . import Image + +# +# helpers + + +def _border(border): + if isinstance(border, tuple): + if len(border) == 2: + left, top = right, bottom = border + elif len(border) == 4: + left, top, right, bottom = border + else: + left = top = right = bottom = border + return left, top, right, bottom + + +def _color(color, mode): + if isinstance(color, str): + from . import ImageColor + + color = ImageColor.getcolor(color, mode) + return color + + +def _lut(image, lut): + if image.mode == "P": + # FIXME: apply to lookup table, not image data + raise NotImplementedError("mode P support coming soon") + elif image.mode in ("L", "RGB"): + if image.mode == "RGB" and len(lut) == 256: + lut = lut + lut + lut + return image.point(lut) + else: + raise OSError("not supported for this image mode") + + +# +# actions + + +def autocontrast(image, cutoff=0, ignore=None): + """ + Maximize (normalize) image contrast. This function calculates a + histogram of the input image, removes **cutoff** percent of the + lightest and darkest pixels from the histogram, and remaps the image + so that the darkest pixel becomes black (0), and the lightest + becomes white (255). + + :param image: The image to process. + :param cutoff: How many percent to cut off from the histogram. + :param ignore: The background pixel value (use None for no background). + :return: An image. + """ + histogram = image.histogram() + lut = [] + for layer in range(0, len(histogram), 256): + h = histogram[layer : layer + 256] + if ignore is not None: + # get rid of outliers + try: + h[ignore] = 0 + except TypeError: + # assume sequence + for ix in ignore: + h[ix] = 0 + if cutoff: + # cut off pixels from both ends of the histogram + # get number of pixels + n = 0 + for ix in range(256): + n = n + h[ix] + # remove cutoff% pixels from the low end + cut = n * cutoff // 100 + for lo in range(256): + if cut > h[lo]: + cut = cut - h[lo] + h[lo] = 0 + else: + h[lo] -= cut + cut = 0 + if cut <= 0: + break + # remove cutoff% samples from the hi end + cut = n * cutoff // 100 + for hi in range(255, -1, -1): + if cut > h[hi]: + cut = cut - h[hi] + h[hi] = 0 + else: + h[hi] -= cut + cut = 0 + if cut <= 0: + break + # find lowest/highest samples after preprocessing + for lo in range(256): + if h[lo]: + break + for hi in range(255, -1, -1): + if h[hi]: + break + if hi <= lo: + # don't bother + lut.extend(list(range(256))) + else: + scale = 255.0 / (hi - lo) + offset = -lo * scale + for ix in range(256): + ix = int(ix * scale + offset) + if ix < 0: + ix = 0 + elif ix > 255: + ix = 255 + lut.append(ix) + return _lut(image, lut) + + +def colorize(image, black, white, mid=None, blackpoint=0, whitepoint=255, midpoint=127): + """ + Colorize grayscale image. + This function calculates a color wedge which maps all black pixels in + the source image to the first color and all white pixels to the + second color. If **mid** is specified, it uses three-color mapping. + The **black** and **white** arguments should be RGB tuples or color names; + optionally you can use three-color mapping by also specifying **mid**. + Mapping positions for any of the colors can be specified + (e.g. **blackpoint**), where these parameters are the integer + value corresponding to where the corresponding color should be mapped. + These parameters must have logical order, such that + **blackpoint** <= **midpoint** <= **whitepoint** (if **mid** is specified). + + :param image: The image to colorize. + :param black: The color to use for black input pixels. + :param white: The color to use for white input pixels. + :param mid: The color to use for midtone input pixels. + :param blackpoint: an int value [0, 255] for the black mapping. + :param whitepoint: an int value [0, 255] for the white mapping. + :param midpoint: an int value [0, 255] for the midtone mapping. + :return: An image. + """ + + # Initial asserts + assert image.mode == "L" + if mid is None: + assert 0 <= blackpoint <= whitepoint <= 255 + else: + assert 0 <= blackpoint <= midpoint <= whitepoint <= 255 + + # Define colors from arguments + black = _color(black, "RGB") + white = _color(white, "RGB") + if mid is not None: + mid = _color(mid, "RGB") + + # Empty lists for the mapping + red = [] + green = [] + blue = [] + + # Create the low-end values + for i in range(0, blackpoint): + red.append(black[0]) + green.append(black[1]) + blue.append(black[2]) + + # Create the mapping (2-color) + if mid is None: + + range_map = range(0, whitepoint - blackpoint) + + for i in range_map: + red.append(black[0] + i * (white[0] - black[0]) // len(range_map)) + green.append(black[1] + i * (white[1] - black[1]) // len(range_map)) + blue.append(black[2] + i * (white[2] - black[2]) // len(range_map)) + + # Create the mapping (3-color) + else: + + range_map1 = range(0, midpoint - blackpoint) + range_map2 = range(0, whitepoint - midpoint) + + for i in range_map1: + red.append(black[0] + i * (mid[0] - black[0]) // len(range_map1)) + green.append(black[1] + i * (mid[1] - black[1]) // len(range_map1)) + blue.append(black[2] + i * (mid[2] - black[2]) // len(range_map1)) + for i in range_map2: + red.append(mid[0] + i * (white[0] - mid[0]) // len(range_map2)) + green.append(mid[1] + i * (white[1] - mid[1]) // len(range_map2)) + blue.append(mid[2] + i * (white[2] - mid[2]) // len(range_map2)) + + # Create the high-end values + for i in range(0, 256 - whitepoint): + red.append(white[0]) + green.append(white[1]) + blue.append(white[2]) + + # Return converted image + image = image.convert("RGB") + return _lut(image, red + green + blue) + + +def pad(image, size, method=Image.BICUBIC, color=None, centering=(0.5, 0.5)): + """ + Returns a sized and padded version of the image, expanded to fill the + requested aspect ratio and size. + + :param image: The image to size and crop. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: What resampling method to use. Default is + :py:attr:`PIL.Image.BICUBIC`. See :ref:`concept-filters`. + :param color: The background color of the padded image. + :param centering: Control the position of the original image within the + padded version. + + (0.5, 0.5) will keep the image centered + (0, 0) will keep the image aligned to the top left + (1, 1) will keep the image aligned to the bottom + right + :return: An image. + """ + + im_ratio = image.width / image.height + dest_ratio = size[0] / size[1] + + if im_ratio == dest_ratio: + out = image.resize(size, resample=method) + else: + out = Image.new(image.mode, size, color) + if im_ratio > dest_ratio: + new_height = int(image.height / image.width * size[0]) + if new_height != size[1]: + image = image.resize((size[0], new_height), resample=method) + + y = int((size[1] - new_height) * max(0, min(centering[1], 1))) + out.paste(image, (0, y)) + else: + new_width = int(image.width / image.height * size[1]) + if new_width != size[0]: + image = image.resize((new_width, size[1]), resample=method) + + x = int((size[0] - new_width) * max(0, min(centering[0], 1))) + out.paste(image, (x, 0)) + return out + + +def crop(image, border=0): + """ + Remove border from image. The same amount of pixels are removed + from all four sides. This function works on all image modes. + + .. seealso:: :py:meth:`~PIL.Image.Image.crop` + + :param image: The image to crop. + :param border: The number of pixels to remove. + :return: An image. + """ + left, top, right, bottom = _border(border) + return image.crop((left, top, image.size[0] - right, image.size[1] - bottom)) + + +def scale(image, factor, resample=Image.BICUBIC): + """ + Returns a rescaled image by a specific factor given in parameter. + A factor greater than 1 expands the image, between 0 and 1 contracts the + image. + + :param image: The image to rescale. + :param factor: The expansion factor, as a float. + :param resample: What resampling method to use. Default is + :py:attr:`PIL.Image.BICUBIC`. See :ref:`concept-filters`. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + if factor == 1: + return image.copy() + elif factor <= 0: + raise ValueError("the factor must be greater than 0") + else: + size = (round(factor * image.width), round(factor * image.height)) + return image.resize(size, resample) + + +def deform(image, deformer, resample=Image.BILINEAR): + """ + Deform the image. + + :param image: The image to deform. + :param deformer: A deformer object. Any object that implements a + **getmesh** method can be used. + :param resample: An optional resampling filter. Same values possible as + in the PIL.Image.transform function. + :return: An image. + """ + return image.transform(image.size, Image.MESH, deformer.getmesh(image), resample) + + +def equalize(image, mask=None): + """ + Equalize the image histogram. This function applies a non-linear + mapping to the input image, in order to create a uniform + distribution of grayscale values in the output image. + + :param image: The image to equalize. + :param mask: An optional mask. If given, only the pixels selected by + the mask are included in the analysis. + :return: An image. + """ + if image.mode == "P": + image = image.convert("RGB") + h = image.histogram(mask) + lut = [] + for b in range(0, len(h), 256): + histo = [_f for _f in h[b : b + 256] if _f] + if len(histo) <= 1: + lut.extend(list(range(256))) + else: + step = (functools.reduce(operator.add, histo) - histo[-1]) // 255 + if not step: + lut.extend(list(range(256))) + else: + n = step // 2 + for i in range(256): + lut.append(n // step) + n = n + h[i + b] + return _lut(image, lut) + + +def expand(image, border=0, fill=0): + """ + Add border to the image + + :param image: The image to expand. + :param border: Border width, in pixels. + :param fill: Pixel fill value (a color value). Default is 0 (black). + :return: An image. + """ + left, top, right, bottom = _border(border) + width = left + image.size[0] + right + height = top + image.size[1] + bottom + out = Image.new(image.mode, (width, height), _color(fill, image.mode)) + out.paste(image, (left, top)) + return out + + +def fit(image, size, method=Image.BICUBIC, bleed=0.0, centering=(0.5, 0.5)): + """ + Returns a sized and cropped version of the image, cropped to the + requested aspect ratio and size. + + This function was contributed by Kevin Cazabon. + + :param image: The image to size and crop. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: What resampling method to use. Default is + :py:attr:`PIL.Image.BICUBIC`. See :ref:`concept-filters`. + :param bleed: Remove a border around the outside of the image from all + four edges. The value is a decimal percentage (use 0.01 for + one percent). The default value is 0 (no border). + Cannot be greater than or equal to 0.5. + :param centering: Control the cropping position. Use (0.5, 0.5) for + center cropping (e.g. if cropping the width, take 50% off + of the left side, and therefore 50% off the right side). + (0.0, 0.0) will crop from the top left corner (i.e. if + cropping the width, take all of the crop off of the right + side, and if cropping the height, take all of it off the + bottom). (1.0, 0.0) will crop from the bottom left + corner, etc. (i.e. if cropping the width, take all of the + crop off the left side, and if cropping the height take + none from the top, and therefore all off the bottom). + :return: An image. + """ + + # by Kevin Cazabon, Feb 17/2000 + # kevin@cazabon.com + # http://www.cazabon.com + + # ensure centering is mutable + centering = list(centering) + + if not 0.0 <= centering[0] <= 1.0: + centering[0] = 0.5 + if not 0.0 <= centering[1] <= 1.0: + centering[1] = 0.5 + + if not 0.0 <= bleed < 0.5: + bleed = 0.0 + + # calculate the area to use for resizing and cropping, subtracting + # the 'bleed' around the edges + + # number of pixels to trim off on Top and Bottom, Left and Right + bleed_pixels = (bleed * image.size[0], bleed * image.size[1]) + + live_size = ( + image.size[0] - bleed_pixels[0] * 2, + image.size[1] - bleed_pixels[1] * 2, + ) + + # calculate the aspect ratio of the live_size + live_size_ratio = live_size[0] / live_size[1] + + # calculate the aspect ratio of the output image + output_ratio = size[0] / size[1] + + # figure out if the sides or top/bottom will be cropped off + if live_size_ratio == output_ratio: + # live_size is already the needed ratio + crop_width = live_size[0] + crop_height = live_size[1] + elif live_size_ratio >= output_ratio: + # live_size is wider than what's needed, crop the sides + crop_width = output_ratio * live_size[1] + crop_height = live_size[1] + else: + # live_size is taller than what's needed, crop the top and bottom + crop_width = live_size[0] + crop_height = live_size[0] / output_ratio + + # make the crop + crop_left = bleed_pixels[0] + (live_size[0] - crop_width) * centering[0] + crop_top = bleed_pixels[1] + (live_size[1] - crop_height) * centering[1] + + crop = (crop_left, crop_top, crop_left + crop_width, crop_top + crop_height) + + # resize the image and return it + return image.resize(size, method, box=crop) + + +def flip(image): + """ + Flip the image vertically (top to bottom). + + :param image: The image to flip. + :return: An image. + """ + return image.transpose(Image.FLIP_TOP_BOTTOM) + + +def grayscale(image): + """ + Convert the image to grayscale. + + :param image: The image to convert. + :return: An image. + """ + return image.convert("L") + + +def invert(image): + """ + Invert (negate) the image. + + :param image: The image to invert. + :return: An image. + """ + lut = [] + for i in range(256): + lut.append(255 - i) + return _lut(image, lut) + + +def mirror(image): + """ + Flip image horizontally (left to right). + + :param image: The image to mirror. + :return: An image. + """ + return image.transpose(Image.FLIP_LEFT_RIGHT) + + +def posterize(image, bits): + """ + Reduce the number of bits for each color channel. + + :param image: The image to posterize. + :param bits: The number of bits to keep for each channel (1-8). + :return: An image. + """ + lut = [] + mask = ~(2 ** (8 - bits) - 1) + for i in range(256): + lut.append(i & mask) + return _lut(image, lut) + + +def solarize(image, threshold=128): + """ + Invert all pixel values above a threshold. + + :param image: The image to solarize. + :param threshold: All pixels above this greyscale level are inverted. + :return: An image. + """ + lut = [] + for i in range(256): + if i < threshold: + lut.append(i) + else: + lut.append(255 - i) + return _lut(image, lut) + + +def exif_transpose(image): + """ + If an image has an EXIF Orientation tag, return a new image that is + transposed accordingly. Otherwise, return a copy of the image. + + :param image: The image to transpose. + :return: An image. + """ + exif = image.getexif() + orientation = exif.get(0x0112) + method = { + 2: Image.FLIP_LEFT_RIGHT, + 3: Image.ROTATE_180, + 4: Image.FLIP_TOP_BOTTOM, + 5: Image.TRANSPOSE, + 6: Image.ROTATE_270, + 7: Image.TRANSVERSE, + 8: Image.ROTATE_90, + }.get(orientation) + if method is not None: + transposed_image = image.transpose(method) + del exif[0x0112] + transposed_image.info["exif"] = exif.tobytes() + return transposed_image + return image.copy() diff --git a/venv/Lib/site-packages/PIL/ImagePalette.py b/venv/Lib/site-packages/PIL/ImagePalette.py new file mode 100644 index 00000000..5dba6176 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImagePalette.py @@ -0,0 +1,221 @@ +# +# The Python Imaging Library. +# $Id$ +# +# image palette object +# +# History: +# 1996-03-11 fl Rewritten. +# 1997-01-03 fl Up and running. +# 1997-08-23 fl Added load hack +# 2001-04-16 fl Fixed randint shadow bug in random() +# +# Copyright (c) 1997-2001 by Secret Labs AB +# Copyright (c) 1996-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import array + +from . import GimpGradientFile, GimpPaletteFile, ImageColor, PaletteFile + + +class ImagePalette: + """ + Color palette for palette mapped images + + :param mode: The mode to use for the Palette. See: + :ref:`concept-modes`. Defaults to "RGB" + :param palette: An optional palette. If given, it must be a bytearray, + an array or a list of ints between 0-255 and of length ``size`` + times the number of colors in ``mode``. The list must be aligned + by channel (All R values must be contiguous in the list before G + and B values.) Defaults to 0 through 255 per channel. + :param size: An optional palette size. If given, it cannot be equal to + or greater than 256. Defaults to 0. + """ + + def __init__(self, mode="RGB", palette=None, size=0): + self.mode = mode + self.rawmode = None # if set, palette contains raw data + self.palette = palette or bytearray(range(256)) * len(self.mode) + self.colors = {} + self.dirty = None + if (size == 0 and len(self.mode) * 256 != len(self.palette)) or ( + size != 0 and size != len(self.palette) + ): + raise ValueError("wrong palette size") + + def copy(self): + new = ImagePalette() + + new.mode = self.mode + new.rawmode = self.rawmode + if self.palette is not None: + new.palette = self.palette[:] + new.colors = self.colors.copy() + new.dirty = self.dirty + + return new + + def getdata(self): + """ + Get palette contents in format suitable for the low-level + ``im.putpalette`` primitive. + + .. warning:: This method is experimental. + """ + if self.rawmode: + return self.rawmode, self.palette + return self.mode + ";L", self.tobytes() + + def tobytes(self): + """Convert palette to bytes. + + .. warning:: This method is experimental. + """ + if self.rawmode: + raise ValueError("palette contains raw palette data") + if isinstance(self.palette, bytes): + return self.palette + arr = array.array("B", self.palette) + if hasattr(arr, "tobytes"): + return arr.tobytes() + return arr.tostring() + + # Declare tostring as an alias for tobytes + tostring = tobytes + + def getcolor(self, color): + """Given an rgb tuple, allocate palette entry. + + .. warning:: This method is experimental. + """ + if self.rawmode: + raise ValueError("palette contains raw palette data") + if isinstance(color, tuple): + try: + return self.colors[color] + except KeyError as e: + # allocate new color slot + if isinstance(self.palette, bytes): + self.palette = bytearray(self.palette) + index = len(self.colors) + if index >= 256: + raise ValueError("cannot allocate more than 256 colors") from e + self.colors[color] = index + self.palette[index] = color[0] + self.palette[index + 256] = color[1] + self.palette[index + 512] = color[2] + self.dirty = 1 + return index + else: + raise ValueError("unknown color specifier: %r" % color) + + def save(self, fp): + """Save palette to text file. + + .. warning:: This method is experimental. + """ + if self.rawmode: + raise ValueError("palette contains raw palette data") + if isinstance(fp, str): + fp = open(fp, "w") + fp.write("# Palette\n") + fp.write("# Mode: %s\n" % self.mode) + for i in range(256): + fp.write("%d" % i) + for j in range(i * len(self.mode), (i + 1) * len(self.mode)): + try: + fp.write(" %d" % self.palette[j]) + except IndexError: + fp.write(" 0") + fp.write("\n") + fp.close() + + +# -------------------------------------------------------------------- +# Internal + + +def raw(rawmode, data): + palette = ImagePalette() + palette.rawmode = rawmode + palette.palette = data + palette.dirty = 1 + return palette + + +# -------------------------------------------------------------------- +# Factories + + +def make_linear_lut(black, white): + lut = [] + if black == 0: + for i in range(256): + lut.append(white * i // 255) + else: + raise NotImplementedError # FIXME + return lut + + +def make_gamma_lut(exp): + lut = [] + for i in range(256): + lut.append(int(((i / 255.0) ** exp) * 255.0 + 0.5)) + return lut + + +def negative(mode="RGB"): + palette = list(range(256)) + palette.reverse() + return ImagePalette(mode, palette * len(mode)) + + +def random(mode="RGB"): + from random import randint + + palette = [] + for i in range(256 * len(mode)): + palette.append(randint(0, 255)) + return ImagePalette(mode, palette) + + +def sepia(white="#fff0c0"): + r, g, b = ImageColor.getrgb(white) + r = make_linear_lut(0, r) + g = make_linear_lut(0, g) + b = make_linear_lut(0, b) + return ImagePalette("RGB", r + g + b) + + +def wedge(mode="RGB"): + return ImagePalette(mode, list(range(256)) * len(mode)) + + +def load(filename): + + # FIXME: supports GIMP gradients only + + with open(filename, "rb") as fp: + + for paletteHandler in [ + GimpPaletteFile.GimpPaletteFile, + GimpGradientFile.GimpGradientFile, + PaletteFile.PaletteFile, + ]: + try: + fp.seek(0) + lut = paletteHandler(fp).getpalette() + if lut: + break + except (SyntaxError, ValueError): + # import traceback + # traceback.print_exc() + pass + else: + raise OSError("cannot load palette") + + return lut # data, rawmode diff --git a/venv/Lib/site-packages/PIL/ImagePath.py b/venv/Lib/site-packages/PIL/ImagePath.py new file mode 100644 index 00000000..3d3538c9 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImagePath.py @@ -0,0 +1,19 @@ +# +# The Python Imaging Library +# $Id$ +# +# path interface +# +# History: +# 1996-11-04 fl Created +# 2002-04-14 fl Added documentation stub class +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + +from . import Image + +Path = Image.core.path diff --git a/venv/Lib/site-packages/PIL/ImageQt.py b/venv/Lib/site-packages/PIL/ImageQt.py new file mode 100644 index 00000000..a15f4ab5 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageQt.py @@ -0,0 +1,195 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a simple Qt image interface. +# +# history: +# 2006-06-03 fl: created +# 2006-06-04 fl: inherit from QImage instead of wrapping it +# 2006-06-05 fl: removed toimage helper; move string support to ImageQt +# 2013-11-13 fl: add support for Qt5 (aurelien.ballier@cyclonit.com) +# +# Copyright (c) 2006 by Secret Labs AB +# Copyright (c) 2006 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import sys +from io import BytesIO + +from . import Image +from ._util import isPath + +qt_versions = [["5", "PyQt5"], ["side2", "PySide2"]] + +# If a version has already been imported, attempt it first +qt_versions.sort(key=lambda qt_version: qt_version[1] in sys.modules, reverse=True) +for qt_version, qt_module in qt_versions: + try: + if qt_module == "PyQt5": + from PyQt5.QtGui import QImage, qRgba, QPixmap + from PyQt5.QtCore import QBuffer, QIODevice + elif qt_module == "PySide2": + from PySide2.QtGui import QImage, qRgba, QPixmap + from PySide2.QtCore import QBuffer, QIODevice + except (ImportError, RuntimeError): + continue + qt_is_installed = True + break +else: + qt_is_installed = False + qt_version = None + + +def rgb(r, g, b, a=255): + """(Internal) Turns an RGB color into a Qt compatible color integer.""" + # use qRgb to pack the colors, and then turn the resulting long + # into a negative integer with the same bitpattern. + return qRgba(r, g, b, a) & 0xFFFFFFFF + + +def fromqimage(im): + """ + :param im: A PIL Image object, or a file name + (given either as Python string or a PyQt string object) + """ + buffer = QBuffer() + buffer.open(QIODevice.ReadWrite) + # preserve alpha channel with png + # otherwise ppm is more friendly with Image.open + if im.hasAlphaChannel(): + im.save(buffer, "png") + else: + im.save(buffer, "ppm") + + b = BytesIO() + b.write(buffer.data()) + buffer.close() + b.seek(0) + + return Image.open(b) + + +def fromqpixmap(im): + return fromqimage(im) + # buffer = QBuffer() + # buffer.open(QIODevice.ReadWrite) + # # im.save(buffer) + # # What if png doesn't support some image features like animation? + # im.save(buffer, 'ppm') + # bytes_io = BytesIO() + # bytes_io.write(buffer.data()) + # buffer.close() + # bytes_io.seek(0) + # return Image.open(bytes_io) + + +def align8to32(bytes, width, mode): + """ + converts each scanline of data from 8 bit to 32 bit aligned + """ + + bits_per_pixel = {"1": 1, "L": 8, "P": 8}[mode] + + # calculate bytes per line and the extra padding if needed + bits_per_line = bits_per_pixel * width + full_bytes_per_line, remaining_bits_per_line = divmod(bits_per_line, 8) + bytes_per_line = full_bytes_per_line + (1 if remaining_bits_per_line else 0) + + extra_padding = -bytes_per_line % 4 + + # already 32 bit aligned by luck + if not extra_padding: + return bytes + + new_data = [] + for i in range(len(bytes) // bytes_per_line): + new_data.append( + bytes[i * bytes_per_line : (i + 1) * bytes_per_line] + + b"\x00" * extra_padding + ) + + return b"".join(new_data) + + +def _toqclass_helper(im): + data = None + colortable = None + + # handle filename, if given instead of image name + if hasattr(im, "toUtf8"): + # FIXME - is this really the best way to do this? + im = str(im.toUtf8(), "utf-8") + if isPath(im): + im = Image.open(im) + + if im.mode == "1": + format = QImage.Format_Mono + elif im.mode == "L": + format = QImage.Format_Indexed8 + colortable = [] + for i in range(256): + colortable.append(rgb(i, i, i)) + elif im.mode == "P": + format = QImage.Format_Indexed8 + colortable = [] + palette = im.getpalette() + for i in range(0, len(palette), 3): + colortable.append(rgb(*palette[i : i + 3])) + elif im.mode == "RGB": + data = im.tobytes("raw", "BGRX") + format = QImage.Format_RGB32 + elif im.mode == "RGBA": + data = im.tobytes("raw", "BGRA") + format = QImage.Format_ARGB32 + else: + raise ValueError("unsupported image mode %r" % im.mode) + + __data = data or align8to32(im.tobytes(), im.size[0], im.mode) + return {"data": __data, "im": im, "format": format, "colortable": colortable} + + +if qt_is_installed: + + class ImageQt(QImage): + def __init__(self, im): + """ + An PIL image wrapper for Qt. This is a subclass of PyQt's QImage + class. + + :param im: A PIL Image object, or a file name (given either as + Python string or a PyQt string object). + """ + im_data = _toqclass_helper(im) + # must keep a reference, or Qt will crash! + # All QImage constructors that take data operate on an existing + # buffer, so this buffer has to hang on for the life of the image. + # Fixes https://github.com/python-pillow/Pillow/issues/1370 + self.__data = im_data["data"] + super().__init__( + self.__data, + im_data["im"].size[0], + im_data["im"].size[1], + im_data["format"], + ) + if im_data["colortable"]: + self.setColorTable(im_data["colortable"]) + + +def toqimage(im): + return ImageQt(im) + + +def toqpixmap(im): + # # This doesn't work. For now using a dumb approach. + # im_data = _toqclass_helper(im) + # result = QPixmap(im_data['im'].size[0], im_data['im'].size[1]) + # result.loadFromData(im_data['data']) + # Fix some strange bug that causes + if im.mode == "RGB": + im = im.convert("RGBA") + + qimage = toqimage(im) + return QPixmap.fromImage(qimage) diff --git a/venv/Lib/site-packages/PIL/ImageSequence.py b/venv/Lib/site-packages/PIL/ImageSequence.py new file mode 100644 index 00000000..9df910a4 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageSequence.py @@ -0,0 +1,75 @@ +# +# The Python Imaging Library. +# $Id$ +# +# sequence support classes +# +# history: +# 1997-02-20 fl Created +# +# Copyright (c) 1997 by Secret Labs AB. +# Copyright (c) 1997 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +## + + +class Iterator: + """ + This class implements an iterator object that can be used to loop + over an image sequence. + + You can use the ``[]`` operator to access elements by index. This operator + will raise an :py:exc:`IndexError` if you try to access a nonexistent + frame. + + :param im: An image object. + """ + + def __init__(self, im): + if not hasattr(im, "seek"): + raise AttributeError("im must have seek method") + self.im = im + self.position = getattr(self.im, "_min_frame", 0) + + def __getitem__(self, ix): + try: + self.im.seek(ix) + return self.im + except EOFError as e: + raise IndexError from e # end of sequence + + def __iter__(self): + return self + + def __next__(self): + try: + self.im.seek(self.position) + self.position += 1 + return self.im + except EOFError as e: + raise StopIteration from e + + +def all_frames(im, func=None): + """ + Applies a given function to all frames in an image or a list of images. + The frames are returned as a list of separate images. + + :param im: An image, or a list of images. + :param func: The function to apply to all of the image frames. + :returns: A list of images. + """ + if not isinstance(im, list): + im = [im] + + ims = [] + for imSequence in im: + current = imSequence.tell() + + ims += [im_frame.copy() for im_frame in Iterator(imSequence)] + + imSequence.seek(current) + return [func(im) for im in ims] if func else ims diff --git a/venv/Lib/site-packages/PIL/ImageShow.py b/venv/Lib/site-packages/PIL/ImageShow.py new file mode 100644 index 00000000..3ffb4d63 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageShow.py @@ -0,0 +1,238 @@ +# +# The Python Imaging Library. +# $Id$ +# +# im.show() drivers +# +# History: +# 2008-04-06 fl Created +# +# Copyright (c) Secret Labs AB 2008. +# +# See the README file for information on usage and redistribution. +# +import os +import shutil +import subprocess +import sys +import tempfile +from shlex import quote + +from PIL import Image + +_viewers = [] + + +def register(viewer, order=1): + """ + The :py:func:`register` function is used to register additional viewers. + + :param viewer: The viewer to be registered. + :param order: + Zero or a negative integer to prepend this viewer to the list, + a positive integer to append it. + """ + try: + if issubclass(viewer, Viewer): + viewer = viewer() + except TypeError: + pass # raised if viewer wasn't a class + if order > 0: + _viewers.append(viewer) + else: + _viewers.insert(0, viewer) + + +def show(image, title=None, **options): + r""" + Display a given image. + + :param image: An image object. + :param title: Optional title. Not all viewers can display the title. + :param \**options: Additional viewer options. + :returns: ``True`` if a suitable viewer was found, ``False`` otherwise. + """ + for viewer in _viewers: + if viewer.show(image, title=title, **options): + return 1 + return 0 + + +class Viewer: + """Base class for viewers.""" + + # main api + + def show(self, image, **options): + """ + The main function for displaying an image. + Converts the given image to the target format and displays it. + """ + + # save temporary image to disk + if not ( + image.mode in ("1", "RGBA") + or (self.format == "PNG" and image.mode in ("I;16", "LA")) + ): + base = Image.getmodebase(image.mode) + if image.mode != base: + image = image.convert(base) + + return self.show_image(image, **options) + + # hook methods + + format = None + """The format to convert the image into.""" + options = {} + """Additional options used to convert the image.""" + + def get_format(self, image): + """Return format name, or ``None`` to save as PGM/PPM.""" + return self.format + + def get_command(self, file, **options): + """ + Returns the command used to display the file. + Not implemented in the base class. + """ + raise NotImplementedError + + def save_image(self, image): + """Save to temporary file and return filename.""" + return image._dump(format=self.get_format(image), **self.options) + + def show_image(self, image, **options): + """Display the given image.""" + return self.show_file(self.save_image(image), **options) + + def show_file(self, file, **options): + """Display the given file.""" + os.system(self.get_command(file, **options)) + return 1 + + +# -------------------------------------------------------------------- + + +class WindowsViewer(Viewer): + """The default viewer on Windows is the default system application for PNG files.""" + + format = "PNG" + options = {"compress_level": 1} + + def get_command(self, file, **options): + return ( + 'start "Pillow" /WAIT "%s" ' + "&& ping -n 2 127.0.0.1 >NUL " + '&& del /f "%s"' % (file, file) + ) + + +if sys.platform == "win32": + register(WindowsViewer) + + +class MacViewer(Viewer): + """The default viewer on MacOS using ``Preview.app``.""" + + format = "PNG" + options = {"compress_level": 1} + + def get_command(self, file, **options): + # on darwin open returns immediately resulting in the temp + # file removal while app is opening + command = "open -a Preview.app" + command = "({} {}; sleep 20; rm -f {})&".format( + command, quote(file), quote(file) + ) + return command + + def show_file(self, file, **options): + """Display given file""" + fd, path = tempfile.mkstemp() + with os.fdopen(fd, "w") as f: + f.write(file) + with open(path, "r") as f: + subprocess.Popen( + ["im=$(cat); open -a Preview.app $im; sleep 20; rm -f $im"], + shell=True, + stdin=f, + ) + os.remove(path) + return 1 + + +if sys.platform == "darwin": + register(MacViewer) + + +class UnixViewer(Viewer): + format = "PNG" + options = {"compress_level": 1} + + def get_command(self, file, **options): + command = self.get_command_ex(file, **options)[0] + return "({} {}; rm -f {})&".format(command, quote(file), quote(file)) + + def show_file(self, file, **options): + """Display given file""" + fd, path = tempfile.mkstemp() + with os.fdopen(fd, "w") as f: + f.write(file) + with open(path, "r") as f: + command = self.get_command_ex(file, **options)[0] + subprocess.Popen( + ["im=$(cat);" + command + " $im; rm -f $im"], shell=True, stdin=f + ) + os.remove(path) + return 1 + + +class DisplayViewer(UnixViewer): + """The ImageMagick ``display`` command.""" + + def get_command_ex(self, file, **options): + command = executable = "display" + return command, executable + + +class EogViewer(UnixViewer): + """The GNOME Image Viewer ``eog`` command.""" + + def get_command_ex(self, file, **options): + command = executable = "eog" + return command, executable + + +class XVViewer(UnixViewer): + """ + The X Viewer ``xv`` command. + This viewer supports the ``title`` parameter. + """ + + def get_command_ex(self, file, title=None, **options): + # note: xv is pretty outdated. most modern systems have + # imagemagick's display command instead. + command = executable = "xv" + if title: + command += " -name %s" % quote(title) + return command, executable + + +if sys.platform not in ("win32", "darwin"): # unixoids + if shutil.which("display"): + register(DisplayViewer) + if shutil.which("eog"): + register(EogViewer) + if shutil.which("xv"): + register(XVViewer) + +if __name__ == "__main__": + + if len(sys.argv) < 2: + print("Syntax: python ImageShow.py imagefile [title]") + sys.exit() + + with Image.open(sys.argv[1]) as im: + print(show(im, *sys.argv[2:])) diff --git a/venv/Lib/site-packages/PIL/ImageStat.py b/venv/Lib/site-packages/PIL/ImageStat.py new file mode 100644 index 00000000..50bafc97 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageStat.py @@ -0,0 +1,147 @@ +# +# The Python Imaging Library. +# $Id$ +# +# global image statistics +# +# History: +# 1996-04-05 fl Created +# 1997-05-21 fl Added mask; added rms, var, stddev attributes +# 1997-08-05 fl Added median +# 1998-07-05 hk Fixed integer overflow error +# +# Notes: +# This class shows how to implement delayed evaluation of attributes. +# To get a certain value, simply access the corresponding attribute. +# The __getattr__ dispatcher takes care of the rest. +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996-97. +# +# See the README file for information on usage and redistribution. +# + +import functools +import math +import operator + + +class Stat: + def __init__(self, image_or_list, mask=None): + try: + if mask: + self.h = image_or_list.histogram(mask) + else: + self.h = image_or_list.histogram() + except AttributeError: + self.h = image_or_list # assume it to be a histogram list + if not isinstance(self.h, list): + raise TypeError("first argument must be image or list") + self.bands = list(range(len(self.h) // 256)) + + def __getattr__(self, id): + """Calculate missing attribute""" + if id[:4] == "_get": + raise AttributeError(id) + # calculate missing attribute + v = getattr(self, "_get" + id)() + setattr(self, id, v) + return v + + def _getextrema(self): + """Get min/max values for each band in the image""" + + def minmax(histogram): + n = 255 + x = 0 + for i in range(256): + if histogram[i]: + n = min(n, i) + x = max(x, i) + return n, x # returns (255, 0) if there's no data in the histogram + + v = [] + for i in range(0, len(self.h), 256): + v.append(minmax(self.h[i:])) + return v + + def _getcount(self): + """Get total number of pixels in each layer""" + + v = [] + for i in range(0, len(self.h), 256): + v.append(functools.reduce(operator.add, self.h[i : i + 256])) + return v + + def _getsum(self): + """Get sum of all pixels in each layer""" + + v = [] + for i in range(0, len(self.h), 256): + layerSum = 0.0 + for j in range(256): + layerSum += j * self.h[i + j] + v.append(layerSum) + return v + + def _getsum2(self): + """Get squared sum of all pixels in each layer""" + + v = [] + for i in range(0, len(self.h), 256): + sum2 = 0.0 + for j in range(256): + sum2 += (j ** 2) * float(self.h[i + j]) + v.append(sum2) + return v + + def _getmean(self): + """Get average pixel level for each layer""" + + v = [] + for i in self.bands: + v.append(self.sum[i] / self.count[i]) + return v + + def _getmedian(self): + """Get median pixel level for each layer""" + + v = [] + for i in self.bands: + s = 0 + half = self.count[i] // 2 + b = i * 256 + for j in range(256): + s = s + self.h[b + j] + if s > half: + break + v.append(j) + return v + + def _getrms(self): + """Get RMS for each layer""" + + v = [] + for i in self.bands: + v.append(math.sqrt(self.sum2[i] / self.count[i])) + return v + + def _getvar(self): + """Get variance for each layer""" + + v = [] + for i in self.bands: + n = self.count[i] + v.append((self.sum2[i] - (self.sum[i] ** 2.0) / n) / n) + return v + + def _getstddev(self): + """Get standard deviation for each layer""" + + v = [] + for i in self.bands: + v.append(math.sqrt(self.var[i])) + return v + + +Global = Stat # compatibility diff --git a/venv/Lib/site-packages/PIL/ImageTk.py b/venv/Lib/site-packages/PIL/ImageTk.py new file mode 100644 index 00000000..ee707cff --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageTk.py @@ -0,0 +1,300 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a Tk display interface +# +# History: +# 96-04-08 fl Created +# 96-09-06 fl Added getimage method +# 96-11-01 fl Rewritten, removed image attribute and crop method +# 97-05-09 fl Use PyImagingPaste method instead of image type +# 97-05-12 fl Minor tweaks to match the IFUNC95 interface +# 97-05-17 fl Support the "pilbitmap" booster patch +# 97-06-05 fl Added file= and data= argument to image constructors +# 98-03-09 fl Added width and height methods to Image classes +# 98-07-02 fl Use default mode for "P" images without palette attribute +# 98-07-02 fl Explicitly destroy Tkinter image objects +# 99-07-24 fl Support multiple Tk interpreters (from Greg Couch) +# 99-07-26 fl Automatically hook into Tkinter (if possible) +# 99-08-15 fl Hook uses _imagingtk instead of _imaging +# +# Copyright (c) 1997-1999 by Secret Labs AB +# Copyright (c) 1996-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import tkinter +from io import BytesIO + +from . import Image + +# -------------------------------------------------------------------- +# Check for Tkinter interface hooks + +_pilbitmap_ok = None + + +def _pilbitmap_check(): + global _pilbitmap_ok + if _pilbitmap_ok is None: + try: + im = Image.new("1", (1, 1)) + tkinter.BitmapImage(data="PIL:%d" % im.im.id) + _pilbitmap_ok = 1 + except tkinter.TclError: + _pilbitmap_ok = 0 + return _pilbitmap_ok + + +def _get_image_from_kw(kw): + source = None + if "file" in kw: + source = kw.pop("file") + elif "data" in kw: + source = BytesIO(kw.pop("data")) + if source: + return Image.open(source) + + +# -------------------------------------------------------------------- +# PhotoImage + + +class PhotoImage: + """ + A Tkinter-compatible photo image. This can be used + everywhere Tkinter expects an image object. If the image is an RGBA + image, pixels having alpha 0 are treated as transparent. + + The constructor takes either a PIL image, or a mode and a size. + Alternatively, you can use the **file** or **data** options to initialize + the photo image object. + + :param image: Either a PIL image, or a mode string. If a mode string is + used, a size must also be given. + :param size: If the first argument is a mode string, this defines the size + of the image. + :keyword file: A filename to load the image from (using + ``Image.open(file)``). + :keyword data: An 8-bit string containing image data (as loaded from an + image file). + """ + + def __init__(self, image=None, size=None, **kw): + + # Tk compatibility: file or data + if image is None: + image = _get_image_from_kw(kw) + + if hasattr(image, "mode") and hasattr(image, "size"): + # got an image instead of a mode + mode = image.mode + if mode == "P": + # palette mapped data + image.load() + try: + mode = image.palette.mode + except AttributeError: + mode = "RGB" # default + size = image.size + kw["width"], kw["height"] = size + else: + mode = image + image = None + + if mode not in ["1", "L", "RGB", "RGBA"]: + mode = Image.getmodebase(mode) + + self.__mode = mode + self.__size = size + self.__photo = tkinter.PhotoImage(**kw) + self.tk = self.__photo.tk + if image: + self.paste(image) + + def __del__(self): + name = self.__photo.name + self.__photo.name = None + try: + self.__photo.tk.call("image", "delete", name) + except Exception: + pass # ignore internal errors + + def __str__(self): + """ + Get the Tkinter photo image identifier. This method is automatically + called by Tkinter whenever a PhotoImage object is passed to a Tkinter + method. + + :return: A Tkinter photo image identifier (a string). + """ + return str(self.__photo) + + def width(self): + """ + Get the width of the image. + + :return: The width, in pixels. + """ + return self.__size[0] + + def height(self): + """ + Get the height of the image. + + :return: The height, in pixels. + """ + return self.__size[1] + + def paste(self, im, box=None): + """ + Paste a PIL image into the photo image. Note that this can + be very slow if the photo image is displayed. + + :param im: A PIL image. The size must match the target region. If the + mode does not match, the image is converted to the mode of + the bitmap image. + :param box: A 4-tuple defining the left, upper, right, and lower pixel + coordinate. See :ref:`coordinate-system`. If None is given + instead of a tuple, all of the image is assumed. + """ + + # convert to blittable + im.load() + image = im.im + if image.isblock() and im.mode == self.__mode: + block = image + else: + block = image.new_block(self.__mode, im.size) + image.convert2(block, image) # convert directly between buffers + + tk = self.__photo.tk + + try: + tk.call("PyImagingPhoto", self.__photo, block.id) + except tkinter.TclError: + # activate Tkinter hook + try: + from . import _imagingtk + + try: + if hasattr(tk, "interp"): + # Required for PyPy, which always has CFFI installed + from cffi import FFI + + ffi = FFI() + + # PyPy is using an FFI CDATA element + # (Pdb) self.tk.interp + # + _imagingtk.tkinit(int(ffi.cast("uintptr_t", tk.interp)), 1) + else: + _imagingtk.tkinit(tk.interpaddr(), 1) + except AttributeError: + _imagingtk.tkinit(id(tk), 0) + tk.call("PyImagingPhoto", self.__photo, block.id) + except (ImportError, AttributeError, tkinter.TclError): + raise # configuration problem; cannot attach to Tkinter + + +# -------------------------------------------------------------------- +# BitmapImage + + +class BitmapImage: + """ + A Tkinter-compatible bitmap image. This can be used everywhere Tkinter + expects an image object. + + The given image must have mode "1". Pixels having value 0 are treated as + transparent. Options, if any, are passed on to Tkinter. The most commonly + used option is **foreground**, which is used to specify the color for the + non-transparent parts. See the Tkinter documentation for information on + how to specify colours. + + :param image: A PIL image. + """ + + def __init__(self, image=None, **kw): + + # Tk compatibility: file or data + if image is None: + image = _get_image_from_kw(kw) + + self.__mode = image.mode + self.__size = image.size + + if _pilbitmap_check(): + # fast way (requires the pilbitmap booster patch) + image.load() + kw["data"] = "PIL:%d" % image.im.id + self.__im = image # must keep a reference + else: + # slow but safe way + kw["data"] = image.tobitmap() + self.__photo = tkinter.BitmapImage(**kw) + + def __del__(self): + name = self.__photo.name + self.__photo.name = None + try: + self.__photo.tk.call("image", "delete", name) + except Exception: + pass # ignore internal errors + + def width(self): + """ + Get the width of the image. + + :return: The width, in pixels. + """ + return self.__size[0] + + def height(self): + """ + Get the height of the image. + + :return: The height, in pixels. + """ + return self.__size[1] + + def __str__(self): + """ + Get the Tkinter bitmap image identifier. This method is automatically + called by Tkinter whenever a BitmapImage object is passed to a Tkinter + method. + + :return: A Tkinter bitmap image identifier (a string). + """ + return str(self.__photo) + + +def getimage(photo): + """Copies the contents of a PhotoImage to a PIL image memory.""" + im = Image.new("RGBA", (photo.width(), photo.height())) + block = im.im + + photo.tk.call("PyImagingPhotoGet", photo, block.id) + + return im + + +def _show(image, title): + """Helper for the Image.show method.""" + + class UI(tkinter.Label): + def __init__(self, master, im): + if im.mode == "1": + self.image = BitmapImage(im, foreground="white", master=master) + else: + self.image = PhotoImage(im, master=master) + super().__init__(master, image=self.image, bg="black", bd=0) + + if not tkinter._default_root: + raise OSError("tkinter not initialized") + top = tkinter.Toplevel() + if title: + top.title(title) + UI(top, image).pack() diff --git a/venv/Lib/site-packages/PIL/ImageTransform.py b/venv/Lib/site-packages/PIL/ImageTransform.py new file mode 100644 index 00000000..77791ab7 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageTransform.py @@ -0,0 +1,102 @@ +# +# The Python Imaging Library. +# $Id$ +# +# transform wrappers +# +# History: +# 2002-04-08 fl Created +# +# Copyright (c) 2002 by Secret Labs AB +# Copyright (c) 2002 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image + + +class Transform(Image.ImageTransformHandler): + def __init__(self, data): + self.data = data + + def getdata(self): + return self.method, self.data + + def transform(self, size, image, **options): + # can be overridden + method, data = self.getdata() + return image.transform(size, method, data, **options) + + +class AffineTransform(Transform): + """ + Define an affine image transform. + + This function takes a 6-tuple (a, b, c, d, e, f) which contain the first + two rows from an affine transform matrix. For each pixel (x, y) in the + output image, the new value is taken from a position (a x + b y + c, + d x + e y + f) in the input image, rounded to nearest pixel. + + This function can be used to scale, translate, rotate, and shear the + original image. + + See :py:meth:`~PIL.Image.Image.transform` + + :param matrix: A 6-tuple (a, b, c, d, e, f) containing the first two rows + from an affine transform matrix. + """ + + method = Image.AFFINE + + +class ExtentTransform(Transform): + """ + Define a transform to extract a subregion from an image. + + Maps a rectangle (defined by two corners) from the image to a rectangle of + the given size. The resulting image will contain data sampled from between + the corners, such that (x0, y0) in the input image will end up at (0,0) in + the output image, and (x1, y1) at size. + + This method can be used to crop, stretch, shrink, or mirror an arbitrary + rectangle in the current image. It is slightly slower than crop, but about + as fast as a corresponding resize operation. + + See :py:meth:`~PIL.Image.Image.transform` + + :param bbox: A 4-tuple (x0, y0, x1, y1) which specifies two points in the + input image's coordinate system. See :ref:`coordinate-system`. + """ + + method = Image.EXTENT + + +class QuadTransform(Transform): + """ + Define a quad image transform. + + Maps a quadrilateral (a region defined by four corners) from the image to a + rectangle of the given size. + + See :py:meth:`~PIL.Image.Image.transform` + + :param xy: An 8-tuple (x0, y0, x1, y1, x2, y2, x3, y3) which contain the + upper left, lower left, lower right, and upper right corner of the + source quadrilateral. + """ + + method = Image.QUAD + + +class MeshTransform(Transform): + """ + Define a mesh image transform. A mesh transform consists of one or more + individual quad transforms. + + See :py:meth:`~PIL.Image.Image.transform` + + :param data: A list of (bbox, quad) tuples. + """ + + method = Image.MESH diff --git a/venv/Lib/site-packages/PIL/ImageWin.py b/venv/Lib/site-packages/PIL/ImageWin.py new file mode 100644 index 00000000..afba61c3 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImageWin.py @@ -0,0 +1,230 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a Windows DIB display interface +# +# History: +# 1996-05-20 fl Created +# 1996-09-20 fl Fixed subregion exposure +# 1997-09-21 fl Added draw primitive (for tzPrint) +# 2003-05-21 fl Added experimental Window/ImageWindow classes +# 2003-09-05 fl Added fromstring/tostring methods +# +# Copyright (c) Secret Labs AB 1997-2003. +# Copyright (c) Fredrik Lundh 1996-2003. +# +# See the README file for information on usage and redistribution. +# + +from . import Image + + +class HDC: + """ + Wraps an HDC integer. The resulting object can be passed to the + :py:meth:`~PIL.ImageWin.Dib.draw` and :py:meth:`~PIL.ImageWin.Dib.expose` + methods. + """ + + def __init__(self, dc): + self.dc = dc + + def __int__(self): + return self.dc + + +class HWND: + """ + Wraps an HWND integer. The resulting object can be passed to the + :py:meth:`~PIL.ImageWin.Dib.draw` and :py:meth:`~PIL.ImageWin.Dib.expose` + methods, instead of a DC. + """ + + def __init__(self, wnd): + self.wnd = wnd + + def __int__(self): + return self.wnd + + +class Dib: + """ + A Windows bitmap with the given mode and size. The mode can be one of "1", + "L", "P", or "RGB". + + If the display requires a palette, this constructor creates a suitable + palette and associates it with the image. For an "L" image, 128 greylevels + are allocated. For an "RGB" image, a 6x6x6 colour cube is used, together + with 20 greylevels. + + To make sure that palettes work properly under Windows, you must call the + **palette** method upon certain events from Windows. + + :param image: Either a PIL image, or a mode string. If a mode string is + used, a size must also be given. The mode can be one of "1", + "L", "P", or "RGB". + :param size: If the first argument is a mode string, this + defines the size of the image. + """ + + def __init__(self, image, size=None): + if hasattr(image, "mode") and hasattr(image, "size"): + mode = image.mode + size = image.size + else: + mode = image + image = None + if mode not in ["1", "L", "P", "RGB"]: + mode = Image.getmodebase(mode) + self.image = Image.core.display(mode, size) + self.mode = mode + self.size = size + if image: + self.paste(image) + + def expose(self, handle): + """ + Copy the bitmap contents to a device context. + + :param handle: Device context (HDC), cast to a Python integer, or an + HDC or HWND instance. In PythonWin, you can use the + :py:meth:`CDC.GetHandleAttrib` to get a suitable handle. + """ + if isinstance(handle, HWND): + dc = self.image.getdc(handle) + try: + result = self.image.expose(dc) + finally: + self.image.releasedc(handle, dc) + else: + result = self.image.expose(handle) + return result + + def draw(self, handle, dst, src=None): + """ + Same as expose, but allows you to specify where to draw the image, and + what part of it to draw. + + The destination and source areas are given as 4-tuple rectangles. If + the source is omitted, the entire image is copied. If the source and + the destination have different sizes, the image is resized as + necessary. + """ + if not src: + src = (0, 0) + self.size + if isinstance(handle, HWND): + dc = self.image.getdc(handle) + try: + result = self.image.draw(dc, dst, src) + finally: + self.image.releasedc(handle, dc) + else: + result = self.image.draw(handle, dst, src) + return result + + def query_palette(self, handle): + """ + Installs the palette associated with the image in the given device + context. + + This method should be called upon **QUERYNEWPALETTE** and + **PALETTECHANGED** events from Windows. If this method returns a + non-zero value, one or more display palette entries were changed, and + the image should be redrawn. + + :param handle: Device context (HDC), cast to a Python integer, or an + HDC or HWND instance. + :return: A true value if one or more entries were changed (this + indicates that the image should be redrawn). + """ + if isinstance(handle, HWND): + handle = self.image.getdc(handle) + try: + result = self.image.query_palette(handle) + finally: + self.image.releasedc(handle, handle) + else: + result = self.image.query_palette(handle) + return result + + def paste(self, im, box=None): + """ + Paste a PIL image into the bitmap image. + + :param im: A PIL image. The size must match the target region. + If the mode does not match, the image is converted to the + mode of the bitmap image. + :param box: A 4-tuple defining the left, upper, right, and + lower pixel coordinate. See :ref:`coordinate-system`. If + None is given instead of a tuple, all of the image is + assumed. + """ + im.load() + if self.mode != im.mode: + im = im.convert(self.mode) + if box: + self.image.paste(im.im, box) + else: + self.image.paste(im.im) + + def frombytes(self, buffer): + """ + Load display memory contents from byte data. + + :param buffer: A buffer containing display data (usually + data returned from :py:func:`~PIL.ImageWin.Dib.tobytes`) + """ + return self.image.frombytes(buffer) + + def tobytes(self): + """ + Copy display memory contents to bytes object. + + :return: A bytes object containing display data. + """ + return self.image.tobytes() + + +class Window: + """Create a Window with the given title size.""" + + def __init__(self, title="PIL", width=None, height=None): + self.hwnd = Image.core.createwindow( + title, self.__dispatcher, width or 0, height or 0 + ) + + def __dispatcher(self, action, *args): + return getattr(self, "ui_handle_" + action)(*args) + + def ui_handle_clear(self, dc, x0, y0, x1, y1): + pass + + def ui_handle_damage(self, x0, y0, x1, y1): + pass + + def ui_handle_destroy(self): + pass + + def ui_handle_repair(self, dc, x0, y0, x1, y1): + pass + + def ui_handle_resize(self, width, height): + pass + + def mainloop(self): + Image.core.eventloop() + + +class ImageWindow(Window): + """Create an image window which displays the given image.""" + + def __init__(self, image, title="PIL"): + if not isinstance(image, Dib): + image = Dib(image) + self.image = image + width, height = image.size + super().__init__(title, width=width, height=height) + + def ui_handle_repair(self, dc, x0, y0, x1, y1): + self.image.draw(dc, (x0, y0, x1, y1)) diff --git a/venv/Lib/site-packages/PIL/ImtImagePlugin.py b/venv/Lib/site-packages/PIL/ImtImagePlugin.py new file mode 100644 index 00000000..21ffd747 --- /dev/null +++ b/venv/Lib/site-packages/PIL/ImtImagePlugin.py @@ -0,0 +1,93 @@ +# +# The Python Imaging Library. +# $Id$ +# +# IM Tools support for PIL +# +# history: +# 1996-05-27 fl Created (read 8-bit images only) +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.2) +# +# Copyright (c) Secret Labs AB 1997-2001. +# Copyright (c) Fredrik Lundh 1996-2001. +# +# See the README file for information on usage and redistribution. +# + + +import re + +from . import Image, ImageFile + +# +# -------------------------------------------------------------------- + +field = re.compile(br"([a-z]*) ([^ \r\n]*)") + + +## +# Image plugin for IM Tools images. + + +class ImtImageFile(ImageFile.ImageFile): + + format = "IMT" + format_description = "IM Tools" + + def _open(self): + + # Quick rejection: if there's not a LF among the first + # 100 bytes, this is (probably) not a text header. + + if b"\n" not in self.fp.read(100): + raise SyntaxError("not an IM file") + self.fp.seek(0) + + xsize = ysize = 0 + + while True: + + s = self.fp.read(1) + if not s: + break + + if s == b"\x0C": + + # image data begins + self.tile = [ + ("raw", (0, 0) + self.size, self.fp.tell(), (self.mode, 0, 1)) + ] + + break + + else: + + # read key/value pair + # FIXME: dangerous, may read whole file + s = s + self.fp.readline() + if len(s) == 1 or len(s) > 100: + break + if s[0] == ord(b"*"): + continue # comment + + m = field.match(s) + if not m: + break + k, v = m.group(1, 2) + if k == "width": + xsize = int(v) + self._size = xsize, ysize + elif k == "height": + ysize = int(v) + self._size = xsize, ysize + elif k == "pixel" and v == "n8": + self.mode = "L" + + +# +# -------------------------------------------------------------------- + +Image.register_open(ImtImageFile.format, ImtImageFile) + +# +# no extension registered (".im" is simply too common) diff --git a/venv/Lib/site-packages/PIL/IptcImagePlugin.py b/venv/Lib/site-packages/PIL/IptcImagePlugin.py new file mode 100644 index 00000000..75e7b5a2 --- /dev/null +++ b/venv/Lib/site-packages/PIL/IptcImagePlugin.py @@ -0,0 +1,226 @@ +# +# The Python Imaging Library. +# $Id$ +# +# IPTC/NAA file handling +# +# history: +# 1995-10-01 fl Created +# 1998-03-09 fl Cleaned up and added to PIL +# 2002-06-18 fl Added getiptcinfo helper +# +# Copyright (c) Secret Labs AB 1997-2002. +# Copyright (c) Fredrik Lundh 1995. +# +# See the README file for information on usage and redistribution. +# +import os +import tempfile + +from . import Image, ImageFile +from ._binary import i8, i16be as i16, i32be as i32, o8 + +COMPRESSION = {1: "raw", 5: "jpeg"} + +PAD = o8(0) * 4 + + +# +# Helpers + + +def i(c): + return i32((PAD + c)[-4:]) + + +def dump(c): + for i in c: + print("%02x" % i8(i), end=" ") + print() + + +## +# Image plugin for IPTC/NAA datastreams. To read IPTC/NAA fields +# from TIFF and JPEG files, use the getiptcinfo function. + + +class IptcImageFile(ImageFile.ImageFile): + + format = "IPTC" + format_description = "IPTC/NAA" + + def getint(self, key): + return i(self.info[key]) + + def field(self): + # + # get a IPTC field header + s = self.fp.read(5) + if not len(s): + return None, 0 + + tag = i8(s[1]), i8(s[2]) + + # syntax + if i8(s[0]) != 0x1C or tag[0] < 1 or tag[0] > 9: + raise SyntaxError("invalid IPTC/NAA file") + + # field size + size = i8(s[3]) + if size > 132: + raise OSError("illegal field length in IPTC/NAA file") + elif size == 128: + size = 0 + elif size > 128: + size = i(self.fp.read(size - 128)) + else: + size = i16(s[3:]) + + return tag, size + + def _open(self): + + # load descriptive fields + while True: + offset = self.fp.tell() + tag, size = self.field() + if not tag or tag == (8, 10): + break + if size: + tagdata = self.fp.read(size) + else: + tagdata = None + if tag in self.info: + if isinstance(self.info[tag], list): + self.info[tag].append(tagdata) + else: + self.info[tag] = [self.info[tag], tagdata] + else: + self.info[tag] = tagdata + + # mode + layers = i8(self.info[(3, 60)][0]) + component = i8(self.info[(3, 60)][1]) + if (3, 65) in self.info: + id = i8(self.info[(3, 65)][0]) - 1 + else: + id = 0 + if layers == 1 and not component: + self.mode = "L" + elif layers == 3 and component: + self.mode = "RGB"[id] + elif layers == 4 and component: + self.mode = "CMYK"[id] + + # size + self._size = self.getint((3, 20)), self.getint((3, 30)) + + # compression + try: + compression = COMPRESSION[self.getint((3, 120))] + except KeyError as e: + raise OSError("Unknown IPTC image compression") from e + + # tile + if tag == (8, 10): + self.tile = [ + ("iptc", (compression, offset), (0, 0, self.size[0], self.size[1])) + ] + + def load(self): + + if len(self.tile) != 1 or self.tile[0][0] != "iptc": + return ImageFile.ImageFile.load(self) + + type, tile, box = self.tile[0] + + encoding, offset = tile + + self.fp.seek(offset) + + # Copy image data to temporary file + o_fd, outfile = tempfile.mkstemp(text=False) + o = os.fdopen(o_fd) + if encoding == "raw": + # To simplify access to the extracted file, + # prepend a PPM header + o.write("P5\n%d %d\n255\n" % self.size) + while True: + type, size = self.field() + if type != (8, 10): + break + while size > 0: + s = self.fp.read(min(size, 8192)) + if not s: + break + o.write(s) + size -= len(s) + o.close() + + try: + with Image.open(outfile) as _im: + _im.load() + self.im = _im.im + finally: + try: + os.unlink(outfile) + except OSError: + pass + + +Image.register_open(IptcImageFile.format, IptcImageFile) + +Image.register_extension(IptcImageFile.format, ".iim") + + +def getiptcinfo(im): + """ + Get IPTC information from TIFF, JPEG, or IPTC file. + + :param im: An image containing IPTC data. + :returns: A dictionary containing IPTC information, or None if + no IPTC information block was found. + """ + from . import TiffImagePlugin, JpegImagePlugin + import io + + data = None + + if isinstance(im, IptcImageFile): + # return info dictionary right away + return im.info + + elif isinstance(im, JpegImagePlugin.JpegImageFile): + # extract the IPTC/NAA resource + photoshop = im.info.get("photoshop") + if photoshop: + data = photoshop.get(0x0404) + + elif isinstance(im, TiffImagePlugin.TiffImageFile): + # get raw data from the IPTC/NAA tag (PhotoShop tags the data + # as 4-byte integers, so we cannot use the get method...) + try: + data = im.tag.tagdata[TiffImagePlugin.IPTC_NAA_CHUNK] + except (AttributeError, KeyError): + pass + + if data is None: + return None # no properties + + # create an IptcImagePlugin object without initializing it + class FakeImage: + pass + + im = FakeImage() + im.__class__ = IptcImageFile + + # parse the IPTC information chunk + im.info = {} + im.fp = io.BytesIO(data) + + try: + im._open() + except (IndexError, KeyError): + pass # expected failure + + return im.info diff --git a/venv/Lib/site-packages/PIL/Jpeg2KImagePlugin.py b/venv/Lib/site-packages/PIL/Jpeg2KImagePlugin.py new file mode 100644 index 00000000..0b0d433d --- /dev/null +++ b/venv/Lib/site-packages/PIL/Jpeg2KImagePlugin.py @@ -0,0 +1,314 @@ +# +# The Python Imaging Library +# $Id$ +# +# JPEG2000 file handling +# +# History: +# 2014-03-12 ajh Created +# +# Copyright (c) 2014 Coriolis Systems Limited +# Copyright (c) 2014 Alastair Houghton +# +# See the README file for information on usage and redistribution. +# +import io +import os +import struct + +from . import Image, ImageFile + + +def _parse_codestream(fp): + """Parse the JPEG 2000 codestream to extract the size and component + count from the SIZ marker segment, returning a PIL (size, mode) tuple.""" + + hdr = fp.read(2) + lsiz = struct.unpack(">H", hdr)[0] + siz = hdr + fp.read(lsiz - 2) + lsiz, rsiz, xsiz, ysiz, xosiz, yosiz, _, _, _, _, csiz = struct.unpack_from( + ">HHIIIIIIIIH", siz + ) + ssiz = [None] * csiz + xrsiz = [None] * csiz + yrsiz = [None] * csiz + for i in range(csiz): + ssiz[i], xrsiz[i], yrsiz[i] = struct.unpack_from(">BBB", siz, 36 + 3 * i) + + size = (xsiz - xosiz, ysiz - yosiz) + if csiz == 1: + if (yrsiz[0] & 0x7F) > 8: + mode = "I;16" + else: + mode = "L" + elif csiz == 2: + mode = "LA" + elif csiz == 3: + mode = "RGB" + elif csiz == 4: + mode = "RGBA" + else: + mode = None + + return (size, mode) + + +def _parse_jp2_header(fp): + """Parse the JP2 header box to extract size, component count and + color space information, returning a (size, mode, mimetype) tuple.""" + + # Find the JP2 header box + header = None + mimetype = None + while True: + lbox, tbox = struct.unpack(">I4s", fp.read(8)) + if lbox == 1: + lbox = struct.unpack(">Q", fp.read(8))[0] + hlen = 16 + else: + hlen = 8 + + if lbox < hlen: + raise SyntaxError("Invalid JP2 header length") + + if tbox == b"jp2h": + header = fp.read(lbox - hlen) + break + elif tbox == b"ftyp": + if fp.read(4) == b"jpx ": + mimetype = "image/jpx" + fp.seek(lbox - hlen - 4, os.SEEK_CUR) + else: + fp.seek(lbox - hlen, os.SEEK_CUR) + + if header is None: + raise SyntaxError("could not find JP2 header") + + size = None + mode = None + bpc = None + nc = None + + hio = io.BytesIO(header) + while True: + lbox, tbox = struct.unpack(">I4s", hio.read(8)) + if lbox == 1: + lbox = struct.unpack(">Q", hio.read(8))[0] + hlen = 16 + else: + hlen = 8 + + content = hio.read(lbox - hlen) + + if tbox == b"ihdr": + height, width, nc, bpc, c, unkc, ipr = struct.unpack(">IIHBBBB", content) + size = (width, height) + if unkc: + if nc == 1 and (bpc & 0x7F) > 8: + mode = "I;16" + elif nc == 1: + mode = "L" + elif nc == 2: + mode = "LA" + elif nc == 3: + mode = "RGB" + elif nc == 4: + mode = "RGBA" + break + elif tbox == b"colr": + meth, prec, approx = struct.unpack_from(">BBB", content) + if meth == 1: + cs = struct.unpack_from(">I", content, 3)[0] + if cs == 16: # sRGB + if nc == 1 and (bpc & 0x7F) > 8: + mode = "I;16" + elif nc == 1: + mode = "L" + elif nc == 3: + mode = "RGB" + elif nc == 4: + mode = "RGBA" + break + elif cs == 17: # grayscale + if nc == 1 and (bpc & 0x7F) > 8: + mode = "I;16" + elif nc == 1: + mode = "L" + elif nc == 2: + mode = "LA" + break + elif cs == 18: # sYCC + if nc == 3: + mode = "RGB" + elif nc == 4: + mode = "RGBA" + break + + if size is None or mode is None: + raise SyntaxError("Malformed jp2 header") + + return (size, mode, mimetype) + + +## +# Image plugin for JPEG2000 images. + + +class Jpeg2KImageFile(ImageFile.ImageFile): + format = "JPEG2000" + format_description = "JPEG 2000 (ISO 15444)" + + def _open(self): + sig = self.fp.read(4) + if sig == b"\xff\x4f\xff\x51": + self.codec = "j2k" + self._size, self.mode = _parse_codestream(self.fp) + else: + sig = sig + self.fp.read(8) + + if sig == b"\x00\x00\x00\x0cjP \x0d\x0a\x87\x0a": + self.codec = "jp2" + header = _parse_jp2_header(self.fp) + self._size, self.mode, self.custom_mimetype = header + else: + raise SyntaxError("not a JPEG 2000 file") + + if self.size is None or self.mode is None: + raise SyntaxError("unable to determine size/mode") + + self._reduce = 0 + self.layers = 0 + + fd = -1 + length = -1 + + try: + fd = self.fp.fileno() + length = os.fstat(fd).st_size + except Exception: + fd = -1 + try: + pos = self.fp.tell() + self.fp.seek(0, io.SEEK_END) + length = self.fp.tell() + self.fp.seek(pos) + except Exception: + length = -1 + + self.tile = [ + ( + "jpeg2k", + (0, 0) + self.size, + 0, + (self.codec, self._reduce, self.layers, fd, length), + ) + ] + + @property + def reduce(self): + # https://github.com/python-pillow/Pillow/issues/4343 found that the + # new Image 'reduce' method was shadowed by this plugin's 'reduce' + # property. This attempts to allow for both scenarios + return self._reduce or super().reduce + + @reduce.setter + def reduce(self, value): + self._reduce = value + + def load(self): + if self.tile and self._reduce: + power = 1 << self._reduce + adjust = power >> 1 + self._size = ( + int((self.size[0] + adjust) / power), + int((self.size[1] + adjust) / power), + ) + + # Update the reduce and layers settings + t = self.tile[0] + t3 = (t[3][0], self._reduce, self.layers, t[3][3], t[3][4]) + self.tile = [(t[0], (0, 0) + self.size, t[2], t3)] + + return ImageFile.ImageFile.load(self) + + +def _accept(prefix): + return ( + prefix[:4] == b"\xff\x4f\xff\x51" + or prefix[:12] == b"\x00\x00\x00\x0cjP \x0d\x0a\x87\x0a" + ) + + +# ------------------------------------------------------------ +# Save support + + +def _save(im, fp, filename): + if filename.endswith(".j2k"): + kind = "j2k" + else: + kind = "jp2" + + # Get the keyword arguments + info = im.encoderinfo + + offset = info.get("offset", None) + tile_offset = info.get("tile_offset", None) + tile_size = info.get("tile_size", None) + quality_mode = info.get("quality_mode", "rates") + quality_layers = info.get("quality_layers", None) + if quality_layers is not None and not ( + isinstance(quality_layers, (list, tuple)) + and all( + [ + isinstance(quality_layer, (int, float)) + for quality_layer in quality_layers + ] + ) + ): + raise ValueError("quality_layers must be a sequence of numbers") + + num_resolutions = info.get("num_resolutions", 0) + cblk_size = info.get("codeblock_size", None) + precinct_size = info.get("precinct_size", None) + irreversible = info.get("irreversible", False) + progression = info.get("progression", "LRCP") + cinema_mode = info.get("cinema_mode", "no") + fd = -1 + + if hasattr(fp, "fileno"): + try: + fd = fp.fileno() + except Exception: + fd = -1 + + im.encoderconfig = ( + offset, + tile_offset, + tile_size, + quality_mode, + quality_layers, + num_resolutions, + cblk_size, + precinct_size, + irreversible, + progression, + cinema_mode, + fd, + ) + + ImageFile._save(im, fp, [("jpeg2k", (0, 0) + im.size, 0, kind)]) + + +# ------------------------------------------------------------ +# Registry stuff + + +Image.register_open(Jpeg2KImageFile.format, Jpeg2KImageFile, _accept) +Image.register_save(Jpeg2KImageFile.format, _save) + +Image.register_extensions( + Jpeg2KImageFile.format, [".jp2", ".j2k", ".jpc", ".jpf", ".jpx", ".j2c"] +) + +Image.register_mime(Jpeg2KImageFile.format, "image/jp2") diff --git a/venv/Lib/site-packages/PIL/JpegImagePlugin.py b/venv/Lib/site-packages/PIL/JpegImagePlugin.py new file mode 100644 index 00000000..b4795c30 --- /dev/null +++ b/venv/Lib/site-packages/PIL/JpegImagePlugin.py @@ -0,0 +1,809 @@ +# +# The Python Imaging Library. +# $Id$ +# +# JPEG (JFIF) file handling +# +# See "Digital Compression and Coding of Continuous-Tone Still Images, +# Part 1, Requirements and Guidelines" (CCITT T.81 / ISO 10918-1) +# +# History: +# 1995-09-09 fl Created +# 1995-09-13 fl Added full parser +# 1996-03-25 fl Added hack to use the IJG command line utilities +# 1996-05-05 fl Workaround Photoshop 2.5 CMYK polarity bug +# 1996-05-28 fl Added draft support, JFIF version (0.1) +# 1996-12-30 fl Added encoder options, added progression property (0.2) +# 1997-08-27 fl Save mode 1 images as BW (0.3) +# 1998-07-12 fl Added YCbCr to draft and save methods (0.4) +# 1998-10-19 fl Don't hang on files using 16-bit DQT's (0.4.1) +# 2001-04-16 fl Extract DPI settings from JFIF files (0.4.2) +# 2002-07-01 fl Skip pad bytes before markers; identify Exif files (0.4.3) +# 2003-04-25 fl Added experimental EXIF decoder (0.5) +# 2003-06-06 fl Added experimental EXIF GPSinfo decoder +# 2003-09-13 fl Extract COM markers +# 2009-09-06 fl Added icc_profile support (from Florian Hoech) +# 2009-03-06 fl Changed CMYK handling; always use Adobe polarity (0.6) +# 2009-03-08 fl Added subsampling support (from Justin Huff). +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-1996 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +import array +import io +import os +import struct +import subprocess +import tempfile +import warnings + +from . import Image, ImageFile, TiffImagePlugin +from ._binary import i8, i16be as i16, i32be as i32, o8 +from .JpegPresets import presets + +# +# Parser + + +def Skip(self, marker): + n = i16(self.fp.read(2)) - 2 + ImageFile._safe_read(self.fp, n) + + +def APP(self, marker): + # + # Application marker. Store these in the APP dictionary. + # Also look for well-known application markers. + + n = i16(self.fp.read(2)) - 2 + s = ImageFile._safe_read(self.fp, n) + + app = "APP%d" % (marker & 15) + + self.app[app] = s # compatibility + self.applist.append((app, s)) + + if marker == 0xFFE0 and s[:4] == b"JFIF": + # extract JFIF information + self.info["jfif"] = version = i16(s, 5) # version + self.info["jfif_version"] = divmod(version, 256) + # extract JFIF properties + try: + jfif_unit = i8(s[7]) + jfif_density = i16(s, 8), i16(s, 10) + except Exception: + pass + else: + if jfif_unit == 1: + self.info["dpi"] = jfif_density + self.info["jfif_unit"] = jfif_unit + self.info["jfif_density"] = jfif_density + elif marker == 0xFFE1 and s[:5] == b"Exif\0": + if "exif" not in self.info: + # extract EXIF information (incomplete) + self.info["exif"] = s # FIXME: value will change + elif marker == 0xFFE2 and s[:5] == b"FPXR\0": + # extract FlashPix information (incomplete) + self.info["flashpix"] = s # FIXME: value will change + elif marker == 0xFFE2 and s[:12] == b"ICC_PROFILE\0": + # Since an ICC profile can be larger than the maximum size of + # a JPEG marker (64K), we need provisions to split it into + # multiple markers. The format defined by the ICC specifies + # one or more APP2 markers containing the following data: + # Identifying string ASCII "ICC_PROFILE\0" (12 bytes) + # Marker sequence number 1, 2, etc (1 byte) + # Number of markers Total of APP2's used (1 byte) + # Profile data (remainder of APP2 data) + # Decoders should use the marker sequence numbers to + # reassemble the profile, rather than assuming that the APP2 + # markers appear in the correct sequence. + self.icclist.append(s) + elif marker == 0xFFED and s[:14] == b"Photoshop 3.0\x00": + # parse the image resource block + offset = 14 + photoshop = self.info.setdefault("photoshop", {}) + while s[offset : offset + 4] == b"8BIM": + try: + offset += 4 + # resource code + code = i16(s, offset) + offset += 2 + # resource name (usually empty) + name_len = i8(s[offset]) + # name = s[offset+1:offset+1+name_len] + offset += 1 + name_len + offset += offset & 1 # align + # resource data block + size = i32(s, offset) + offset += 4 + data = s[offset : offset + size] + if code == 0x03ED: # ResolutionInfo + data = { + "XResolution": i32(data[:4]) / 65536, + "DisplayedUnitsX": i16(data[4:8]), + "YResolution": i32(data[8:12]) / 65536, + "DisplayedUnitsY": i16(data[12:]), + } + photoshop[code] = data + offset += size + offset += offset & 1 # align + except struct.error: + break # insufficient data + + elif marker == 0xFFEE and s[:5] == b"Adobe": + self.info["adobe"] = i16(s, 5) + # extract Adobe custom properties + try: + adobe_transform = i8(s[1]) + except Exception: + pass + else: + self.info["adobe_transform"] = adobe_transform + elif marker == 0xFFE2 and s[:4] == b"MPF\0": + # extract MPO information + self.info["mp"] = s[4:] + # offset is current location minus buffer size + # plus constant header size + self.info["mpoffset"] = self.fp.tell() - n + 4 + + # If DPI isn't in JPEG header, fetch from EXIF + if "dpi" not in self.info and "exif" in self.info: + try: + exif = self.getexif() + resolution_unit = exif[0x0128] + x_resolution = exif[0x011A] + try: + dpi = float(x_resolution[0]) / x_resolution[1] + except TypeError: + dpi = x_resolution + if resolution_unit == 3: # cm + # 1 dpcm = 2.54 dpi + dpi *= 2.54 + self.info["dpi"] = int(dpi + 0.5), int(dpi + 0.5) + except (KeyError, SyntaxError, ValueError, ZeroDivisionError): + # SyntaxError for invalid/unreadable EXIF + # KeyError for dpi not included + # ZeroDivisionError for invalid dpi rational value + # ValueError for x_resolution[0] being an invalid float + self.info["dpi"] = 72, 72 + + +def COM(self, marker): + # + # Comment marker. Store these in the APP dictionary. + n = i16(self.fp.read(2)) - 2 + s = ImageFile._safe_read(self.fp, n) + + self.info["comment"] = s + self.app["COM"] = s # compatibility + self.applist.append(("COM", s)) + + +def SOF(self, marker): + # + # Start of frame marker. Defines the size and mode of the + # image. JPEG is colour blind, so we use some simple + # heuristics to map the number of layers to an appropriate + # mode. Note that this could be made a bit brighter, by + # looking for JFIF and Adobe APP markers. + + n = i16(self.fp.read(2)) - 2 + s = ImageFile._safe_read(self.fp, n) + self._size = i16(s[3:]), i16(s[1:]) + + self.bits = i8(s[0]) + if self.bits != 8: + raise SyntaxError("cannot handle %d-bit layers" % self.bits) + + self.layers = i8(s[5]) + if self.layers == 1: + self.mode = "L" + elif self.layers == 3: + self.mode = "RGB" + elif self.layers == 4: + self.mode = "CMYK" + else: + raise SyntaxError("cannot handle %d-layer images" % self.layers) + + if marker in [0xFFC2, 0xFFC6, 0xFFCA, 0xFFCE]: + self.info["progressive"] = self.info["progression"] = 1 + + if self.icclist: + # fixup icc profile + self.icclist.sort() # sort by sequence number + if i8(self.icclist[0][13]) == len(self.icclist): + profile = [] + for p in self.icclist: + profile.append(p[14:]) + icc_profile = b"".join(profile) + else: + icc_profile = None # wrong number of fragments + self.info["icc_profile"] = icc_profile + self.icclist = [] + + for i in range(6, len(s), 3): + t = s[i : i + 3] + # 4-tuples: id, vsamp, hsamp, qtable + self.layer.append((t[0], i8(t[1]) // 16, i8(t[1]) & 15, i8(t[2]))) + + +def DQT(self, marker): + # + # Define quantization table. Support baseline 8-bit tables + # only. Note that there might be more than one table in + # each marker. + + # FIXME: The quantization tables can be used to estimate the + # compression quality. + + n = i16(self.fp.read(2)) - 2 + s = ImageFile._safe_read(self.fp, n) + while len(s): + if len(s) < 65: + raise SyntaxError("bad quantization table marker") + v = i8(s[0]) + if v // 16 == 0: + self.quantization[v & 15] = array.array("B", s[1:65]) + s = s[65:] + else: + return # FIXME: add code to read 16-bit tables! + # raise SyntaxError, "bad quantization table element size" + + +# +# JPEG marker table + +MARKER = { + 0xFFC0: ("SOF0", "Baseline DCT", SOF), + 0xFFC1: ("SOF1", "Extended Sequential DCT", SOF), + 0xFFC2: ("SOF2", "Progressive DCT", SOF), + 0xFFC3: ("SOF3", "Spatial lossless", SOF), + 0xFFC4: ("DHT", "Define Huffman table", Skip), + 0xFFC5: ("SOF5", "Differential sequential DCT", SOF), + 0xFFC6: ("SOF6", "Differential progressive DCT", SOF), + 0xFFC7: ("SOF7", "Differential spatial", SOF), + 0xFFC8: ("JPG", "Extension", None), + 0xFFC9: ("SOF9", "Extended sequential DCT (AC)", SOF), + 0xFFCA: ("SOF10", "Progressive DCT (AC)", SOF), + 0xFFCB: ("SOF11", "Spatial lossless DCT (AC)", SOF), + 0xFFCC: ("DAC", "Define arithmetic coding conditioning", Skip), + 0xFFCD: ("SOF13", "Differential sequential DCT (AC)", SOF), + 0xFFCE: ("SOF14", "Differential progressive DCT (AC)", SOF), + 0xFFCF: ("SOF15", "Differential spatial (AC)", SOF), + 0xFFD0: ("RST0", "Restart 0", None), + 0xFFD1: ("RST1", "Restart 1", None), + 0xFFD2: ("RST2", "Restart 2", None), + 0xFFD3: ("RST3", "Restart 3", None), + 0xFFD4: ("RST4", "Restart 4", None), + 0xFFD5: ("RST5", "Restart 5", None), + 0xFFD6: ("RST6", "Restart 6", None), + 0xFFD7: ("RST7", "Restart 7", None), + 0xFFD8: ("SOI", "Start of image", None), + 0xFFD9: ("EOI", "End of image", None), + 0xFFDA: ("SOS", "Start of scan", Skip), + 0xFFDB: ("DQT", "Define quantization table", DQT), + 0xFFDC: ("DNL", "Define number of lines", Skip), + 0xFFDD: ("DRI", "Define restart interval", Skip), + 0xFFDE: ("DHP", "Define hierarchical progression", SOF), + 0xFFDF: ("EXP", "Expand reference component", Skip), + 0xFFE0: ("APP0", "Application segment 0", APP), + 0xFFE1: ("APP1", "Application segment 1", APP), + 0xFFE2: ("APP2", "Application segment 2", APP), + 0xFFE3: ("APP3", "Application segment 3", APP), + 0xFFE4: ("APP4", "Application segment 4", APP), + 0xFFE5: ("APP5", "Application segment 5", APP), + 0xFFE6: ("APP6", "Application segment 6", APP), + 0xFFE7: ("APP7", "Application segment 7", APP), + 0xFFE8: ("APP8", "Application segment 8", APP), + 0xFFE9: ("APP9", "Application segment 9", APP), + 0xFFEA: ("APP10", "Application segment 10", APP), + 0xFFEB: ("APP11", "Application segment 11", APP), + 0xFFEC: ("APP12", "Application segment 12", APP), + 0xFFED: ("APP13", "Application segment 13", APP), + 0xFFEE: ("APP14", "Application segment 14", APP), + 0xFFEF: ("APP15", "Application segment 15", APP), + 0xFFF0: ("JPG0", "Extension 0", None), + 0xFFF1: ("JPG1", "Extension 1", None), + 0xFFF2: ("JPG2", "Extension 2", None), + 0xFFF3: ("JPG3", "Extension 3", None), + 0xFFF4: ("JPG4", "Extension 4", None), + 0xFFF5: ("JPG5", "Extension 5", None), + 0xFFF6: ("JPG6", "Extension 6", None), + 0xFFF7: ("JPG7", "Extension 7", None), + 0xFFF8: ("JPG8", "Extension 8", None), + 0xFFF9: ("JPG9", "Extension 9", None), + 0xFFFA: ("JPG10", "Extension 10", None), + 0xFFFB: ("JPG11", "Extension 11", None), + 0xFFFC: ("JPG12", "Extension 12", None), + 0xFFFD: ("JPG13", "Extension 13", None), + 0xFFFE: ("COM", "Comment", COM), +} + + +def _accept(prefix): + # Magic number was taken from https://en.wikipedia.org/wiki/JPEG + return prefix[0:3] == b"\xFF\xD8\xFF" + + +## +# Image plugin for JPEG and JFIF images. + + +class JpegImageFile(ImageFile.ImageFile): + + format = "JPEG" + format_description = "JPEG (ISO 10918)" + + def _open(self): + + s = self.fp.read(3) + + if not _accept(s): + raise SyntaxError("not a JPEG file") + s = b"\xFF" + + # Create attributes + self.bits = self.layers = 0 + + # JPEG specifics (internal) + self.layer = [] + self.huffman_dc = {} + self.huffman_ac = {} + self.quantization = {} + self.app = {} # compatibility + self.applist = [] + self.icclist = [] + + while True: + + i = i8(s) + if i == 0xFF: + s = s + self.fp.read(1) + i = i16(s) + else: + # Skip non-0xFF junk + s = self.fp.read(1) + continue + + if i in MARKER: + name, description, handler = MARKER[i] + if handler is not None: + handler(self, i) + if i == 0xFFDA: # start of scan + rawmode = self.mode + if self.mode == "CMYK": + rawmode = "CMYK;I" # assume adobe conventions + self.tile = [("jpeg", (0, 0) + self.size, 0, (rawmode, ""))] + # self.__offset = self.fp.tell() + break + s = self.fp.read(1) + elif i == 0 or i == 0xFFFF: + # padded marker or junk; move on + s = b"\xff" + elif i == 0xFF00: # Skip extraneous data (escaped 0xFF) + s = self.fp.read(1) + else: + raise SyntaxError("no marker found") + + def load_read(self, read_bytes): + """ + internal: read more image data + For premature EOF and LOAD_TRUNCATED_IMAGES adds EOI marker + so libjpeg can finish decoding + """ + s = self.fp.read(read_bytes) + + if not s and ImageFile.LOAD_TRUNCATED_IMAGES: + # Premature EOF. + # Pretend file is finished adding EOI marker + return b"\xFF\xD9" + + return s + + def draft(self, mode, size): + + if len(self.tile) != 1: + return + + # Protect from second call + if self.decoderconfig: + return + + d, e, o, a = self.tile[0] + scale = 1 + original_size = self.size + + if a[0] == "RGB" and mode in ["L", "YCbCr"]: + self.mode = mode + a = mode, "" + + if size: + scale = min(self.size[0] // size[0], self.size[1] // size[1]) + for s in [8, 4, 2, 1]: + if scale >= s: + break + e = ( + e[0], + e[1], + (e[2] - e[0] + s - 1) // s + e[0], + (e[3] - e[1] + s - 1) // s + e[1], + ) + self._size = ((self.size[0] + s - 1) // s, (self.size[1] + s - 1) // s) + scale = s + + self.tile = [(d, e, o, a)] + self.decoderconfig = (scale, 0) + + box = (0, 0, original_size[0] / scale, original_size[1] / scale) + return (self.mode, box) + + def load_djpeg(self): + + # ALTERNATIVE: handle JPEGs via the IJG command line utilities + + f, path = tempfile.mkstemp() + os.close(f) + if os.path.exists(self.filename): + subprocess.check_call(["djpeg", "-outfile", path, self.filename]) + else: + raise ValueError("Invalid Filename") + + try: + with Image.open(path) as _im: + _im.load() + self.im = _im.im + finally: + try: + os.unlink(path) + except OSError: + pass + + self.mode = self.im.mode + self._size = self.im.size + + self.tile = [] + + def _getexif(self): + return _getexif(self) + + def _getmp(self): + return _getmp(self) + + +def _fixup_dict(src_dict): + # Helper function for _getexif() + # returns a dict with any single item tuples/lists as individual values + exif = Image.Exif() + return exif._fixup_dict(src_dict) + + +def _getexif(self): + if "exif" not in self.info: + return None + return dict(self.getexif()) + + +def _getmp(self): + # Extract MP information. This method was inspired by the "highly + # experimental" _getexif version that's been in use for years now, + # itself based on the ImageFileDirectory class in the TIFF plug-in. + + # The MP record essentially consists of a TIFF file embedded in a JPEG + # application marker. + try: + data = self.info["mp"] + except KeyError: + return None + file_contents = io.BytesIO(data) + head = file_contents.read(8) + endianness = ">" if head[:4] == b"\x4d\x4d\x00\x2a" else "<" + # process dictionary + try: + info = TiffImagePlugin.ImageFileDirectory_v2(head) + file_contents.seek(info.next) + info.load(file_contents) + mp = dict(info) + except Exception as e: + raise SyntaxError("malformed MP Index (unreadable directory)") from e + # it's an error not to have a number of images + try: + quant = mp[0xB001] + except KeyError as e: + raise SyntaxError("malformed MP Index (no number of images)") from e + # get MP entries + mpentries = [] + try: + rawmpentries = mp[0xB002] + for entrynum in range(0, quant): + unpackedentry = struct.unpack_from( + "{}LLLHH".format(endianness), rawmpentries, entrynum * 16 + ) + labels = ("Attribute", "Size", "DataOffset", "EntryNo1", "EntryNo2") + mpentry = dict(zip(labels, unpackedentry)) + mpentryattr = { + "DependentParentImageFlag": bool(mpentry["Attribute"] & (1 << 31)), + "DependentChildImageFlag": bool(mpentry["Attribute"] & (1 << 30)), + "RepresentativeImageFlag": bool(mpentry["Attribute"] & (1 << 29)), + "Reserved": (mpentry["Attribute"] & (3 << 27)) >> 27, + "ImageDataFormat": (mpentry["Attribute"] & (7 << 24)) >> 24, + "MPType": mpentry["Attribute"] & 0x00FFFFFF, + } + if mpentryattr["ImageDataFormat"] == 0: + mpentryattr["ImageDataFormat"] = "JPEG" + else: + raise SyntaxError("unsupported picture format in MPO") + mptypemap = { + 0x000000: "Undefined", + 0x010001: "Large Thumbnail (VGA Equivalent)", + 0x010002: "Large Thumbnail (Full HD Equivalent)", + 0x020001: "Multi-Frame Image (Panorama)", + 0x020002: "Multi-Frame Image: (Disparity)", + 0x020003: "Multi-Frame Image: (Multi-Angle)", + 0x030000: "Baseline MP Primary Image", + } + mpentryattr["MPType"] = mptypemap.get(mpentryattr["MPType"], "Unknown") + mpentry["Attribute"] = mpentryattr + mpentries.append(mpentry) + mp[0xB002] = mpentries + except KeyError as e: + raise SyntaxError("malformed MP Index (bad MP Entry)") from e + # Next we should try and parse the individual image unique ID list; + # we don't because I've never seen this actually used in a real MPO + # file and so can't test it. + return mp + + +# -------------------------------------------------------------------- +# stuff to save JPEG files + +RAWMODE = { + "1": "L", + "L": "L", + "RGB": "RGB", + "RGBX": "RGB", + "CMYK": "CMYK;I", # assume adobe conventions + "YCbCr": "YCbCr", +} + +# fmt: off +zigzag_index = ( + 0, 1, 5, 6, 14, 15, 27, 28, + 2, 4, 7, 13, 16, 26, 29, 42, + 3, 8, 12, 17, 25, 30, 41, 43, + 9, 11, 18, 24, 31, 40, 44, 53, + 10, 19, 23, 32, 39, 45, 52, 54, + 20, 22, 33, 38, 46, 51, 55, 60, + 21, 34, 37, 47, 50, 56, 59, 61, + 35, 36, 48, 49, 57, 58, 62, 63, +) + +samplings = { + (1, 1, 1, 1, 1, 1): 0, + (2, 1, 1, 1, 1, 1): 1, + (2, 2, 1, 1, 1, 1): 2, +} +# fmt: on + + +def convert_dict_qtables(qtables): + qtables = [qtables[key] for key in range(len(qtables)) if key in qtables] + for idx, table in enumerate(qtables): + qtables[idx] = [table[i] for i in zigzag_index] + return qtables + + +def get_sampling(im): + # There's no subsampling when images have only 1 layer + # (grayscale images) or when they are CMYK (4 layers), + # so set subsampling to the default value. + # + # NOTE: currently Pillow can't encode JPEG to YCCK format. + # If YCCK support is added in the future, subsampling code will have + # to be updated (here and in JpegEncode.c) to deal with 4 layers. + if not hasattr(im, "layers") or im.layers in (1, 4): + return -1 + sampling = im.layer[0][1:3] + im.layer[1][1:3] + im.layer[2][1:3] + return samplings.get(sampling, -1) + + +def _save(im, fp, filename): + + try: + rawmode = RAWMODE[im.mode] + except KeyError as e: + raise OSError("cannot write mode %s as JPEG" % im.mode) from e + + info = im.encoderinfo + + dpi = [round(x) for x in info.get("dpi", (0, 0))] + + quality = info.get("quality", -1) + subsampling = info.get("subsampling", -1) + qtables = info.get("qtables") + + if quality == "keep": + quality = -1 + subsampling = "keep" + qtables = "keep" + elif quality in presets: + preset = presets[quality] + quality = -1 + subsampling = preset.get("subsampling", -1) + qtables = preset.get("quantization") + elif not isinstance(quality, int): + raise ValueError("Invalid quality setting") + else: + if subsampling in presets: + subsampling = presets[subsampling].get("subsampling", -1) + if isinstance(qtables, str) and qtables in presets: + qtables = presets[qtables].get("quantization") + + if subsampling == "4:4:4": + subsampling = 0 + elif subsampling == "4:2:2": + subsampling = 1 + elif subsampling == "4:2:0": + subsampling = 2 + elif subsampling == "4:1:1": + # For compatibility. Before Pillow 4.3, 4:1:1 actually meant 4:2:0. + # Set 4:2:0 if someone is still using that value. + subsampling = 2 + elif subsampling == "keep": + if im.format != "JPEG": + raise ValueError("Cannot use 'keep' when original image is not a JPEG") + subsampling = get_sampling(im) + + def validate_qtables(qtables): + if qtables is None: + return qtables + if isinstance(qtables, str): + try: + lines = [ + int(num) + for line in qtables.splitlines() + for num in line.split("#", 1)[0].split() + ] + except ValueError as e: + raise ValueError("Invalid quantization table") from e + else: + qtables = [lines[s : s + 64] for s in range(0, len(lines), 64)] + if isinstance(qtables, (tuple, list, dict)): + if isinstance(qtables, dict): + qtables = convert_dict_qtables(qtables) + elif isinstance(qtables, tuple): + qtables = list(qtables) + if not (0 < len(qtables) < 5): + raise ValueError("None or too many quantization tables") + for idx, table in enumerate(qtables): + try: + if len(table) != 64: + raise TypeError + table = array.array("B", table) + except TypeError as e: + raise ValueError("Invalid quantization table") from e + else: + qtables[idx] = list(table) + return qtables + + if qtables == "keep": + if im.format != "JPEG": + raise ValueError("Cannot use 'keep' when original image is not a JPEG") + qtables = getattr(im, "quantization", None) + qtables = validate_qtables(qtables) + + extra = b"" + + icc_profile = info.get("icc_profile") + if icc_profile: + ICC_OVERHEAD_LEN = 14 + MAX_BYTES_IN_MARKER = 65533 + MAX_DATA_BYTES_IN_MARKER = MAX_BYTES_IN_MARKER - ICC_OVERHEAD_LEN + markers = [] + while icc_profile: + markers.append(icc_profile[:MAX_DATA_BYTES_IN_MARKER]) + icc_profile = icc_profile[MAX_DATA_BYTES_IN_MARKER:] + i = 1 + for marker in markers: + size = struct.pack(">H", 2 + ICC_OVERHEAD_LEN + len(marker)) + extra += ( + b"\xFF\xE2" + + size + + b"ICC_PROFILE\0" + + o8(i) + + o8(len(markers)) + + marker + ) + i += 1 + + # "progressive" is the official name, but older documentation + # says "progression" + # FIXME: issue a warning if the wrong form is used (post-1.1.7) + progressive = info.get("progressive", False) or info.get("progression", False) + + optimize = info.get("optimize", False) + + exif = info.get("exif", b"") + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + + # get keyword arguments + im.encoderconfig = ( + quality, + progressive, + info.get("smooth", 0), + optimize, + info.get("streamtype", 0), + dpi[0], + dpi[1], + subsampling, + qtables, + extra, + exif, + ) + + # if we optimize, libjpeg needs a buffer big enough to hold the whole image + # in a shot. Guessing on the size, at im.size bytes. (raw pixel size is + # channels*size, this is a value that's been used in a django patch. + # https://github.com/matthewwithanm/django-imagekit/issues/50 + bufsize = 0 + if optimize or progressive: + # CMYK can be bigger + if im.mode == "CMYK": + bufsize = 4 * im.size[0] * im.size[1] + # keep sets quality to -1, but the actual value may be high. + elif quality >= 95 or quality == -1: + bufsize = 2 * im.size[0] * im.size[1] + else: + bufsize = im.size[0] * im.size[1] + + # The EXIF info needs to be written as one block, + APP1, + one spare byte. + # Ensure that our buffer is big enough. Same with the icc_profile block. + bufsize = max(ImageFile.MAXBLOCK, bufsize, len(exif) + 5, len(extra) + 1) + + ImageFile._save(im, fp, [("jpeg", (0, 0) + im.size, 0, rawmode)], bufsize) + + +def _save_cjpeg(im, fp, filename): + # ALTERNATIVE: handle JPEGs via the IJG command line utilities. + tempfile = im._dump() + subprocess.check_call(["cjpeg", "-outfile", filename, tempfile]) + try: + os.unlink(tempfile) + except OSError: + pass + + +## +# Factory for making JPEG and MPO instances +def jpeg_factory(fp=None, filename=None): + im = JpegImageFile(fp, filename) + try: + mpheader = im._getmp() + if mpheader[45057] > 1: + # It's actually an MPO + from .MpoImagePlugin import MpoImageFile + + # Don't reload everything, just convert it. + im = MpoImageFile.adopt(im, mpheader) + except (TypeError, IndexError): + # It is really a JPEG + pass + except SyntaxError: + warnings.warn( + "Image appears to be a malformed MPO file, it will be " + "interpreted as a base JPEG file" + ) + return im + + +# --------------------------------------------------------------------- +# Registry stuff + +Image.register_open(JpegImageFile.format, jpeg_factory, _accept) +Image.register_save(JpegImageFile.format, _save) + +Image.register_extensions(JpegImageFile.format, [".jfif", ".jpe", ".jpg", ".jpeg"]) + +Image.register_mime(JpegImageFile.format, "image/jpeg") diff --git a/venv/Lib/site-packages/PIL/JpegPresets.py b/venv/Lib/site-packages/PIL/JpegPresets.py new file mode 100644 index 00000000..09691d79 --- /dev/null +++ b/venv/Lib/site-packages/PIL/JpegPresets.py @@ -0,0 +1,248 @@ +""" +JPEG quality settings equivalent to the Photoshop settings. +Can be used when saving JPEG files. + +The following presets are available by default: +``web_low``, ``web_medium``, ``web_high``, ``web_very_high``, ``web_maximum``, +``low``, ``medium``, ``high``, ``maximum``. +More presets can be added to the :py:data:`presets` dict if needed. + +To apply the preset, specify:: + + quality="preset_name" + +To apply only the quantization table:: + + qtables="preset_name" + +To apply only the subsampling setting:: + + subsampling="preset_name" + +Example:: + + im.save("image_name.jpg", quality="web_high") + +Subsampling +----------- + +Subsampling is the practice of encoding images by implementing less resolution +for chroma information than for luma information. +(ref.: https://en.wikipedia.org/wiki/Chroma_subsampling) + +Possible subsampling values are 0, 1 and 2 that correspond to 4:4:4, 4:2:2 and +4:2:0. + +You can get the subsampling of a JPEG with the +`JpegImagePlugin.get_sampling(im)` function. + +In JPEG compressed data a JPEG marker is used instead of an EXIF tag. +(ref.: https://www.exiv2.org/tags.html) + + +Quantization tables +------------------- + +They are values use by the DCT (Discrete cosine transform) to remove +*unnecessary* information from the image (the lossy part of the compression). +(ref.: https://en.wikipedia.org/wiki/Quantization_matrix#Quantization_matrices, +https://en.wikipedia.org/wiki/JPEG#Quantization) + +You can get the quantization tables of a JPEG with:: + + im.quantization + +This will return a dict with a number of arrays. You can pass this dict +directly as the qtables argument when saving a JPEG. + +The tables format between im.quantization and quantization in presets differ in +3 ways: + +1. The base container of the preset is a list with sublists instead of dict. + dict[0] -> list[0], dict[1] -> list[1], ... +2. Each table in a preset is a list instead of an array. +3. The zigzag order is remove in the preset (needed by libjpeg >= 6a). + +You can convert the dict format to the preset format with the +`JpegImagePlugin.convert_dict_qtables(dict_qtables)` function. + +Libjpeg ref.: +https://web.archive.org/web/20120328125543/http://www.jpegcameras.com/libjpeg/libjpeg-3.html + +""" + +# fmt: off +presets = { + 'web_low': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [20, 16, 25, 39, 50, 46, 62, 68, + 16, 18, 23, 38, 38, 53, 65, 68, + 25, 23, 31, 38, 53, 65, 68, 68, + 39, 38, 38, 53, 65, 68, 68, 68, + 50, 38, 53, 65, 68, 68, 68, 68, + 46, 53, 65, 68, 68, 68, 68, 68, + 62, 65, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68], + [21, 25, 32, 38, 54, 68, 68, 68, + 25, 28, 24, 38, 54, 68, 68, 68, + 32, 24, 32, 43, 66, 68, 68, 68, + 38, 38, 43, 53, 68, 68, 68, 68, + 54, 54, 66, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68] + ]}, + 'web_medium': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [16, 11, 11, 16, 23, 27, 31, 30, + 11, 12, 12, 15, 20, 23, 23, 30, + 11, 12, 13, 16, 23, 26, 35, 47, + 16, 15, 16, 23, 26, 37, 47, 64, + 23, 20, 23, 26, 39, 51, 64, 64, + 27, 23, 26, 37, 51, 64, 64, 64, + 31, 23, 35, 47, 64, 64, 64, 64, + 30, 30, 47, 64, 64, 64, 64, 64], + [17, 15, 17, 21, 20, 26, 38, 48, + 15, 19, 18, 17, 20, 26, 35, 43, + 17, 18, 20, 22, 26, 30, 46, 53, + 21, 17, 22, 28, 30, 39, 53, 64, + 20, 20, 26, 30, 39, 48, 64, 64, + 26, 26, 30, 39, 48, 63, 64, 64, + 38, 35, 46, 53, 64, 64, 64, 64, + 48, 43, 53, 64, 64, 64, 64, 64] + ]}, + 'web_high': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [6, 4, 4, 6, 9, 11, 12, 16, + 4, 5, 5, 6, 8, 10, 12, 12, + 4, 5, 5, 6, 10, 12, 14, 19, + 6, 6, 6, 11, 12, 15, 19, 28, + 9, 8, 10, 12, 16, 20, 27, 31, + 11, 10, 12, 15, 20, 27, 31, 31, + 12, 12, 14, 19, 27, 31, 31, 31, + 16, 12, 19, 28, 31, 31, 31, 31], + [7, 7, 13, 24, 26, 31, 31, 31, + 7, 12, 16, 21, 31, 31, 31, 31, + 13, 16, 17, 31, 31, 31, 31, 31, + 24, 21, 31, 31, 31, 31, 31, 31, + 26, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31] + ]}, + 'web_very_high': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 4, 5, 7, 9, + 2, 2, 2, 4, 5, 7, 9, 12, + 3, 3, 4, 5, 8, 10, 12, 12, + 4, 4, 5, 7, 10, 12, 12, 12, + 5, 5, 7, 9, 12, 12, 12, 12, + 6, 6, 9, 12, 12, 12, 12, 12], + [3, 3, 5, 9, 13, 15, 15, 15, + 3, 4, 6, 11, 14, 12, 12, 12, + 5, 6, 9, 14, 12, 12, 12, 12, + 9, 11, 14, 12, 12, 12, 12, 12, + 13, 14, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'web_maximum': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 2, 2, + 1, 1, 1, 1, 1, 2, 2, 3, + 1, 1, 1, 1, 2, 2, 3, 3, + 1, 1, 1, 2, 2, 3, 3, 3, + 1, 1, 2, 2, 3, 3, 3, 3], + [1, 1, 1, 2, 2, 3, 3, 3, + 1, 1, 1, 2, 3, 3, 3, 3, + 1, 1, 1, 3, 3, 3, 3, 3, + 2, 2, 3, 3, 3, 3, 3, 3, + 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3] + ]}, + 'low': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [18, 14, 14, 21, 30, 35, 34, 17, + 14, 16, 16, 19, 26, 23, 12, 12, + 14, 16, 17, 21, 23, 12, 12, 12, + 21, 19, 21, 23, 12, 12, 12, 12, + 30, 26, 23, 12, 12, 12, 12, 12, + 35, 23, 12, 12, 12, 12, 12, 12, + 34, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12], + [20, 19, 22, 27, 20, 20, 17, 17, + 19, 25, 23, 14, 14, 12, 12, 12, + 22, 23, 14, 14, 12, 12, 12, 12, + 27, 14, 14, 12, 12, 12, 12, 12, + 20, 14, 12, 12, 12, 12, 12, 12, + 20, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'medium': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [12, 8, 8, 12, 17, 21, 24, 17, + 8, 9, 9, 11, 15, 19, 12, 12, + 8, 9, 10, 12, 19, 12, 12, 12, + 12, 11, 12, 21, 12, 12, 12, 12, + 17, 15, 19, 12, 12, 12, 12, 12, + 21, 19, 12, 12, 12, 12, 12, 12, + 24, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12], + [13, 11, 13, 16, 20, 20, 17, 17, + 11, 14, 14, 14, 14, 12, 12, 12, + 13, 14, 14, 14, 12, 12, 12, 12, + 16, 14, 14, 12, 12, 12, 12, 12, + 20, 14, 12, 12, 12, 12, 12, 12, + 20, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'high': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [6, 4, 4, 6, 9, 11, 12, 16, + 4, 5, 5, 6, 8, 10, 12, 12, + 4, 5, 5, 6, 10, 12, 12, 12, + 6, 6, 6, 11, 12, 12, 12, 12, + 9, 8, 10, 12, 12, 12, 12, 12, + 11, 10, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 16, 12, 12, 12, 12, 12, 12, 12], + [7, 7, 13, 24, 20, 20, 17, 17, + 7, 12, 16, 14, 14, 12, 12, 12, + 13, 16, 14, 14, 12, 12, 12, 12, + 24, 14, 14, 12, 12, 12, 12, 12, + 20, 14, 12, 12, 12, 12, 12, 12, + 20, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'maximum': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 4, 5, 7, 9, + 2, 2, 2, 4, 5, 7, 9, 12, + 3, 3, 4, 5, 8, 10, 12, 12, + 4, 4, 5, 7, 10, 12, 12, 12, + 5, 5, 7, 9, 12, 12, 12, 12, + 6, 6, 9, 12, 12, 12, 12, 12], + [3, 3, 5, 9, 13, 15, 15, 15, + 3, 4, 6, 10, 14, 12, 12, 12, + 5, 6, 9, 14, 12, 12, 12, 12, + 9, 10, 14, 12, 12, 12, 12, 12, + 13, 14, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12] + ]}, +} +# fmt: on diff --git a/venv/Lib/site-packages/PIL/McIdasImagePlugin.py b/venv/Lib/site-packages/PIL/McIdasImagePlugin.py new file mode 100644 index 00000000..cd047fe9 --- /dev/null +++ b/venv/Lib/site-packages/PIL/McIdasImagePlugin.py @@ -0,0 +1,75 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Basic McIdas support for PIL +# +# History: +# 1997-05-05 fl Created (8-bit images only) +# 2009-03-08 fl Added 16/32-bit support. +# +# Thanks to Richard Jones and Craig Swank for specs and samples. +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +import struct + +from . import Image, ImageFile + + +def _accept(s): + return s[:8] == b"\x00\x00\x00\x00\x00\x00\x00\x04" + + +## +# Image plugin for McIdas area images. + + +class McIdasImageFile(ImageFile.ImageFile): + + format = "MCIDAS" + format_description = "McIdas area file" + + def _open(self): + + # parse area file directory + s = self.fp.read(256) + if not _accept(s) or len(s) != 256: + raise SyntaxError("not an McIdas area file") + + self.area_descriptor_raw = s + self.area_descriptor = w = [0] + list(struct.unpack("!64i", s)) + + # get mode + if w[11] == 1: + mode = rawmode = "L" + elif w[11] == 2: + # FIXME: add memory map support + mode = "I" + rawmode = "I;16B" + elif w[11] == 4: + # FIXME: add memory map support + mode = "I" + rawmode = "I;32B" + else: + raise SyntaxError("unsupported McIdas format") + + self.mode = mode + self._size = w[10], w[9] + + offset = w[34] + w[15] + stride = w[15] + w[10] * w[11] * w[14] + + self.tile = [("raw", (0, 0) + self.size, offset, (rawmode, stride, 1))] + + +# -------------------------------------------------------------------- +# registry + +Image.register_open(McIdasImageFile.format, McIdasImageFile, _accept) + +# no default extension diff --git a/venv/Lib/site-packages/PIL/MicImagePlugin.py b/venv/Lib/site-packages/PIL/MicImagePlugin.py new file mode 100644 index 00000000..2aed2603 --- /dev/null +++ b/venv/Lib/site-packages/PIL/MicImagePlugin.py @@ -0,0 +1,107 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Microsoft Image Composer support for PIL +# +# Notes: +# uses TiffImagePlugin.py to read the actual image streams +# +# History: +# 97-01-20 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + + +import olefile + +from . import Image, TiffImagePlugin + +# +# -------------------------------------------------------------------- + + +def _accept(prefix): + return prefix[:8] == olefile.MAGIC + + +## +# Image plugin for Microsoft's Image Composer file format. + + +class MicImageFile(TiffImagePlugin.TiffImageFile): + + format = "MIC" + format_description = "Microsoft Image Composer" + _close_exclusive_fp_after_loading = False + + def _open(self): + + # read the OLE directory and see if this is a likely + # to be a Microsoft Image Composer file + + try: + self.ole = olefile.OleFileIO(self.fp) + except OSError as e: + raise SyntaxError("not an MIC file; invalid OLE file") from e + + # find ACI subfiles with Image members (maybe not the + # best way to identify MIC files, but what the... ;-) + + self.images = [] + for path in self.ole.listdir(): + if path[1:] and path[0][-4:] == ".ACI" and path[1] == "Image": + self.images.append(path) + + # if we didn't find any images, this is probably not + # an MIC file. + if not self.images: + raise SyntaxError("not an MIC file; no image entries") + + self.__fp = self.fp + self.frame = None + self._n_frames = len(self.images) + self.is_animated = self._n_frames > 1 + + if len(self.images) > 1: + self.category = Image.CONTAINER + + self.seek(0) + + def seek(self, frame): + if not self._seek_check(frame): + return + try: + filename = self.images[frame] + except IndexError as e: + raise EOFError("no such frame") from e + + self.fp = self.ole.openstream(filename) + + TiffImagePlugin.TiffImageFile._open(self) + + self.frame = frame + + def tell(self): + return self.frame + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +# +# -------------------------------------------------------------------- + +Image.register_open(MicImageFile.format, MicImageFile, _accept) + +Image.register_extension(MicImageFile.format, ".mic") diff --git a/venv/Lib/site-packages/PIL/MpegImagePlugin.py b/venv/Lib/site-packages/PIL/MpegImagePlugin.py new file mode 100644 index 00000000..a358dfdc --- /dev/null +++ b/venv/Lib/site-packages/PIL/MpegImagePlugin.py @@ -0,0 +1,83 @@ +# +# The Python Imaging Library. +# $Id$ +# +# MPEG file handling +# +# History: +# 95-09-09 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1995. +# +# See the README file for information on usage and redistribution. +# + + +from . import Image, ImageFile +from ._binary import i8 + +# +# Bitstream parser + + +class BitStream: + def __init__(self, fp): + self.fp = fp + self.bits = 0 + self.bitbuffer = 0 + + def next(self): + return i8(self.fp.read(1)) + + def peek(self, bits): + while self.bits < bits: + c = self.next() + if c < 0: + self.bits = 0 + continue + self.bitbuffer = (self.bitbuffer << 8) + c + self.bits += 8 + return self.bitbuffer >> (self.bits - bits) & (1 << bits) - 1 + + def skip(self, bits): + while self.bits < bits: + self.bitbuffer = (self.bitbuffer << 8) + i8(self.fp.read(1)) + self.bits += 8 + self.bits = self.bits - bits + + def read(self, bits): + v = self.peek(bits) + self.bits = self.bits - bits + return v + + +## +# Image plugin for MPEG streams. This plugin can identify a stream, +# but it cannot read it. + + +class MpegImageFile(ImageFile.ImageFile): + + format = "MPEG" + format_description = "MPEG" + + def _open(self): + + s = BitStream(self.fp) + + if s.read(32) != 0x1B3: + raise SyntaxError("not an MPEG file") + + self.mode = "RGB" + self._size = s.read(12), s.read(12) + + +# -------------------------------------------------------------------- +# Registry stuff + +Image.register_open(MpegImageFile.format, MpegImageFile) + +Image.register_extensions(MpegImageFile.format, [".mpg", ".mpeg"]) + +Image.register_mime(MpegImageFile.format, "video/mpeg") diff --git a/venv/Lib/site-packages/PIL/MpoImagePlugin.py b/venv/Lib/site-packages/PIL/MpoImagePlugin.py new file mode 100644 index 00000000..575cc9c8 --- /dev/null +++ b/venv/Lib/site-packages/PIL/MpoImagePlugin.py @@ -0,0 +1,134 @@ +# +# The Python Imaging Library. +# $Id$ +# +# MPO file handling +# +# See "Multi-Picture Format" (CIPA DC-007-Translation 2009, Standard of the +# Camera & Imaging Products Association) +# +# The multi-picture object combines multiple JPEG images (with a modified EXIF +# data format) into a single file. While it can theoretically be used much like +# a GIF animation, it is commonly used to represent 3D photographs and is (as +# of this writing) the most commonly used format by 3D cameras. +# +# History: +# 2014-03-13 Feneric Created +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile, JpegImagePlugin +from ._binary import i16be as i16 + + +def _accept(prefix): + return JpegImagePlugin._accept(prefix) + + +def _save(im, fp, filename): + # Note that we can only save the current frame at present + return JpegImagePlugin._save(im, fp, filename) + + +## +# Image plugin for MPO images. + + +class MpoImageFile(JpegImagePlugin.JpegImageFile): + + format = "MPO" + format_description = "MPO (CIPA DC-007)" + _close_exclusive_fp_after_loading = False + + def _open(self): + self.fp.seek(0) # prep the fp in order to pass the JPEG test + JpegImagePlugin.JpegImageFile._open(self) + self._after_jpeg_open() + + def _after_jpeg_open(self, mpheader=None): + self.mpinfo = mpheader if mpheader is not None else self._getmp() + self.n_frames = self.mpinfo[0xB001] + self.__mpoffsets = [ + mpent["DataOffset"] + self.info["mpoffset"] for mpent in self.mpinfo[0xB002] + ] + self.__mpoffsets[0] = 0 + # Note that the following assertion will only be invalid if something + # gets broken within JpegImagePlugin. + assert self.n_frames == len(self.__mpoffsets) + del self.info["mpoffset"] # no longer needed + self.is_animated = self.n_frames > 1 + self.__fp = self.fp # FIXME: hack + self.__fp.seek(self.__mpoffsets[0]) # get ready to read first frame + self.__frame = 0 + self.offset = 0 + # for now we can only handle reading and individual frame extraction + self.readonly = 1 + + def load_seek(self, pos): + self.__fp.seek(pos) + + def seek(self, frame): + if not self._seek_check(frame): + return + self.fp = self.__fp + self.offset = self.__mpoffsets[frame] + + self.fp.seek(self.offset + 2) # skip SOI marker + segment = self.fp.read(2) + if not segment: + raise ValueError("No data found for frame") + if i16(segment) == 0xFFE1: # APP1 + n = i16(self.fp.read(2)) - 2 + self.info["exif"] = ImageFile._safe_read(self.fp, n) + + exif = self.getexif() + if 40962 in exif and 40963 in exif: + self._size = (exif[40962], exif[40963]) + elif "exif" in self.info: + del self.info["exif"] + + self.tile = [("jpeg", (0, 0) + self.size, self.offset, (self.mode, ""))] + self.__frame = frame + + def tell(self): + return self.__frame + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + @staticmethod + def adopt(jpeg_instance, mpheader=None): + """ + Transform the instance of JpegImageFile into + an instance of MpoImageFile. + After the call, the JpegImageFile is extended + to be an MpoImageFile. + + This is essentially useful when opening a JPEG + file that reveals itself as an MPO, to avoid + double call to _open. + """ + jpeg_instance.__class__ = MpoImageFile + jpeg_instance._after_jpeg_open(mpheader) + return jpeg_instance + + +# --------------------------------------------------------------------- +# Registry stuff + +# Note that since MPO shares a factory with JPEG, we do not need to do a +# separate registration for it here. +# Image.register_open(MpoImageFile.format, +# JpegImagePlugin.jpeg_factory, _accept) +Image.register_save(MpoImageFile.format, _save) + +Image.register_extension(MpoImageFile.format, ".mpo") + +Image.register_mime(MpoImageFile.format, "image/mpo") diff --git a/venv/Lib/site-packages/PIL/MspImagePlugin.py b/venv/Lib/site-packages/PIL/MspImagePlugin.py new file mode 100644 index 00000000..ca957218 --- /dev/null +++ b/venv/Lib/site-packages/PIL/MspImagePlugin.py @@ -0,0 +1,193 @@ +# +# The Python Imaging Library. +# +# MSP file handling +# +# This is the format used by the Paint program in Windows 1 and 2. +# +# History: +# 95-09-05 fl Created +# 97-01-03 fl Read/write MSP images +# 17-02-21 es Fixed RLE interpretation +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1995-97. +# Copyright (c) Eric Soroos 2017. +# +# See the README file for information on usage and redistribution. +# +# More info on this format: https://archive.org/details/gg243631 +# Page 313: +# Figure 205. Windows Paint Version 1: "DanM" Format +# Figure 206. Windows Paint Version 2: "LinS" Format. Used in Windows V2.03 +# +# See also: http://www.fileformat.info/format/mspaint/egff.htm + +import io +import struct + +from . import Image, ImageFile +from ._binary import i8, i16le as i16, o16le as o16 + +# +# read MSP files + + +def _accept(prefix): + return prefix[:4] in [b"DanM", b"LinS"] + + +## +# Image plugin for Windows MSP images. This plugin supports both +# uncompressed (Windows 1.0). + + +class MspImageFile(ImageFile.ImageFile): + + format = "MSP" + format_description = "Windows Paint" + + def _open(self): + + # Header + s = self.fp.read(32) + if not _accept(s): + raise SyntaxError("not an MSP file") + + # Header checksum + checksum = 0 + for i in range(0, 32, 2): + checksum = checksum ^ i16(s[i : i + 2]) + if checksum != 0: + raise SyntaxError("bad MSP checksum") + + self.mode = "1" + self._size = i16(s[4:]), i16(s[6:]) + + if s[:4] == b"DanM": + self.tile = [("raw", (0, 0) + self.size, 32, ("1", 0, 1))] + else: + self.tile = [("MSP", (0, 0) + self.size, 32, None)] + + +class MspDecoder(ImageFile.PyDecoder): + # The algo for the MSP decoder is from + # http://www.fileformat.info/format/mspaint/egff.htm + # cc-by-attribution -- That page references is taken from the + # Encyclopedia of Graphics File Formats and is licensed by + # O'Reilly under the Creative Common/Attribution license + # + # For RLE encoded files, the 32byte header is followed by a scan + # line map, encoded as one 16bit word of encoded byte length per + # line. + # + # NOTE: the encoded length of the line can be 0. This was not + # handled in the previous version of this encoder, and there's no + # mention of how to handle it in the documentation. From the few + # examples I've seen, I've assumed that it is a fill of the + # background color, in this case, white. + # + # + # Pseudocode of the decoder: + # Read a BYTE value as the RunType + # If the RunType value is zero + # Read next byte as the RunCount + # Read the next byte as the RunValue + # Write the RunValue byte RunCount times + # If the RunType value is non-zero + # Use this value as the RunCount + # Read and write the next RunCount bytes literally + # + # e.g.: + # 0x00 03 ff 05 00 01 02 03 04 + # would yield the bytes: + # 0xff ff ff 00 01 02 03 04 + # + # which are then interpreted as a bit packed mode '1' image + + _pulls_fd = True + + def decode(self, buffer): + + img = io.BytesIO() + blank_line = bytearray((0xFF,) * ((self.state.xsize + 7) // 8)) + try: + self.fd.seek(32) + rowmap = struct.unpack_from( + "<%dH" % (self.state.ysize), self.fd.read(self.state.ysize * 2) + ) + except struct.error as e: + raise OSError("Truncated MSP file in row map") from e + + for x, rowlen in enumerate(rowmap): + try: + if rowlen == 0: + img.write(blank_line) + continue + row = self.fd.read(rowlen) + if len(row) != rowlen: + raise OSError( + "Truncated MSP file, expected %d bytes on row %s", (rowlen, x) + ) + idx = 0 + while idx < rowlen: + runtype = i8(row[idx]) + idx += 1 + if runtype == 0: + (runcount, runval) = struct.unpack_from("Bc", row, idx) + img.write(runval * runcount) + idx += 2 + else: + runcount = runtype + img.write(row[idx : idx + runcount]) + idx += runcount + + except struct.error as e: + raise OSError("Corrupted MSP file in row %d" % x) from e + + self.set_as_raw(img.getvalue(), ("1", 0, 1)) + + return 0, 0 + + +Image.register_decoder("MSP", MspDecoder) + + +# +# write MSP files (uncompressed only) + + +def _save(im, fp, filename): + + if im.mode != "1": + raise OSError("cannot write mode %s as MSP" % im.mode) + + # create MSP header + header = [0] * 16 + + header[0], header[1] = i16(b"Da"), i16(b"nM") # version 1 + header[2], header[3] = im.size + header[4], header[5] = 1, 1 + header[6], header[7] = 1, 1 + header[8], header[9] = im.size + + checksum = 0 + for h in header: + checksum = checksum ^ h + header[12] = checksum # FIXME: is this the right field? + + # header + for h in header: + fp.write(o16(h)) + + # image body + ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 32, ("1", 0, 1))]) + + +# +# registry + +Image.register_open(MspImageFile.format, MspImageFile, _accept) +Image.register_save(MspImageFile.format, _save) + +Image.register_extension(MspImageFile.format, ".msp") diff --git a/venv/Lib/site-packages/PIL/PSDraw.py b/venv/Lib/site-packages/PIL/PSDraw.py new file mode 100644 index 00000000..762d31e8 --- /dev/null +++ b/venv/Lib/site-packages/PIL/PSDraw.py @@ -0,0 +1,237 @@ +# +# The Python Imaging Library +# $Id$ +# +# simple postscript graphics interface +# +# History: +# 1996-04-20 fl Created +# 1999-01-10 fl Added gsave/grestore to image method +# 2005-05-04 fl Fixed floating point issue in image (from Eric Etheridge) +# +# Copyright (c) 1997-2005 by Secret Labs AB. All rights reserved. +# Copyright (c) 1996 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +import sys + +from . import EpsImagePlugin + +## +# Simple Postscript graphics interface. + + +class PSDraw: + """ + Sets up printing to the given file. If **fp** is omitted, + :py:attr:`sys.stdout` is assumed. + """ + + def __init__(self, fp=None): + if not fp: + fp = sys.stdout + self.fp = fp + + def _fp_write(self, to_write): + if self.fp == sys.stdout: + self.fp.write(to_write) + else: + self.fp.write(bytes(to_write, "UTF-8")) + + def begin_document(self, id=None): + """Set up printing of a document. (Write Postscript DSC header.)""" + # FIXME: incomplete + self._fp_write( + "%!PS-Adobe-3.0\n" + "save\n" + "/showpage { } def\n" + "%%EndComments\n" + "%%BeginDocument\n" + ) + # self._fp_write(ERROR_PS) # debugging! + self._fp_write(EDROFF_PS) + self._fp_write(VDI_PS) + self._fp_write("%%EndProlog\n") + self.isofont = {} + + def end_document(self): + """Ends printing. (Write Postscript DSC footer.)""" + self._fp_write("%%EndDocument\nrestore showpage\n%%End\n") + if hasattr(self.fp, "flush"): + self.fp.flush() + + def setfont(self, font, size): + """ + Selects which font to use. + + :param font: A Postscript font name + :param size: Size in points. + """ + if font not in self.isofont: + # reencode font + self._fp_write("/PSDraw-{} ISOLatin1Encoding /{} E\n".format(font, font)) + self.isofont[font] = 1 + # rough + self._fp_write("/F0 %d /PSDraw-%s F\n" % (size, font)) + + def line(self, xy0, xy1): + """ + Draws a line between the two points. Coordinates are given in + Postscript point coordinates (72 points per inch, (0, 0) is the lower + left corner of the page). + """ + xy = xy0 + xy1 + self._fp_write("%d %d %d %d Vl\n" % xy) + + def rectangle(self, box): + """ + Draws a rectangle. + + :param box: A 4-tuple of integers whose order and function is currently + undocumented. + + Hint: the tuple is passed into this format string: + + .. code-block:: python + + %d %d M %d %d 0 Vr\n + """ + self._fp_write("%d %d M %d %d 0 Vr\n" % box) + + def text(self, xy, text): + """ + Draws text at the given position. You must use + :py:meth:`~PIL.PSDraw.PSDraw.setfont` before calling this method. + """ + text = "\\(".join(text.split("(")) + text = "\\)".join(text.split(")")) + xy = xy + (text,) + self._fp_write("%d %d M (%s) S\n" % xy) + + def image(self, box, im, dpi=None): + """Draw a PIL image, centered in the given box.""" + # default resolution depends on mode + if not dpi: + if im.mode == "1": + dpi = 200 # fax + else: + dpi = 100 # greyscale + # image size (on paper) + x = im.size[0] * 72 / dpi + y = im.size[1] * 72 / dpi + # max allowed size + xmax = float(box[2] - box[0]) + ymax = float(box[3] - box[1]) + if x > xmax: + y = y * xmax / x + x = xmax + if y > ymax: + x = x * ymax / y + y = ymax + dx = (xmax - x) / 2 + box[0] + dy = (ymax - y) / 2 + box[1] + self._fp_write("gsave\n{:f} {:f} translate\n".format(dx, dy)) + if (x, y) != im.size: + # EpsImagePlugin._save prints the image at (0,0,xsize,ysize) + sx = x / im.size[0] + sy = y / im.size[1] + self._fp_write("{:f} {:f} scale\n".format(sx, sy)) + EpsImagePlugin._save(im, self.fp, None, 0) + self._fp_write("\ngrestore\n") + + +# -------------------------------------------------------------------- +# Postscript driver + +# +# EDROFF.PS -- Postscript driver for Edroff 2 +# +# History: +# 94-01-25 fl: created (edroff 2.04) +# +# Copyright (c) Fredrik Lundh 1994. +# + + +EDROFF_PS = """\ +/S { show } bind def +/P { moveto show } bind def +/M { moveto } bind def +/X { 0 rmoveto } bind def +/Y { 0 exch rmoveto } bind def +/E { findfont + dup maxlength dict begin + { + 1 index /FID ne { def } { pop pop } ifelse + } forall + /Encoding exch def + dup /FontName exch def + currentdict end definefont pop +} bind def +/F { findfont exch scalefont dup setfont + [ exch /setfont cvx ] cvx bind def +} bind def +""" + +# +# VDI.PS -- Postscript driver for VDI meta commands +# +# History: +# 94-01-25 fl: created (edroff 2.04) +# +# Copyright (c) Fredrik Lundh 1994. +# + +VDI_PS = """\ +/Vm { moveto } bind def +/Va { newpath arcn stroke } bind def +/Vl { moveto lineto stroke } bind def +/Vc { newpath 0 360 arc closepath } bind def +/Vr { exch dup 0 rlineto + exch dup neg 0 exch rlineto + exch neg 0 rlineto + 0 exch rlineto + 100 div setgray fill 0 setgray } bind def +/Tm matrix def +/Ve { Tm currentmatrix pop + translate scale newpath 0 0 .5 0 360 arc closepath + Tm setmatrix +} bind def +/Vf { currentgray exch setgray fill setgray } bind def +""" + +# +# ERROR.PS -- Error handler +# +# History: +# 89-11-21 fl: created (pslist 1.10) +# + +ERROR_PS = """\ +/landscape false def +/errorBUF 200 string def +/errorNL { currentpoint 10 sub exch pop 72 exch moveto } def +errordict begin /handleerror { + initmatrix /Courier findfont 10 scalefont setfont + newpath 72 720 moveto $error begin /newerror false def + (PostScript Error) show errorNL errorNL + (Error: ) show + /errorname load errorBUF cvs show errorNL errorNL + (Command: ) show + /command load dup type /stringtype ne { errorBUF cvs } if show + errorNL errorNL + (VMstatus: ) show + vmstatus errorBUF cvs show ( bytes available, ) show + errorBUF cvs show ( bytes used at level ) show + errorBUF cvs show errorNL errorNL + (Operand stargck: ) show errorNL /ostargck load { + dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL + } forall errorNL + (Execution stargck: ) show errorNL /estargck load { + dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL + } forall + end showpage +} def end +""" diff --git a/venv/Lib/site-packages/PIL/PaletteFile.py b/venv/Lib/site-packages/PIL/PaletteFile.py new file mode 100644 index 00000000..6ccaa1f5 --- /dev/null +++ b/venv/Lib/site-packages/PIL/PaletteFile.py @@ -0,0 +1,53 @@ +# +# Python Imaging Library +# $Id$ +# +# stuff to read simple, teragon-style palette files +# +# History: +# 97-08-23 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +from ._binary import o8 + + +class PaletteFile: + """File handler for Teragon-style palette files.""" + + rawmode = "RGB" + + def __init__(self, fp): + + self.palette = [(i, i, i) for i in range(256)] + + while True: + + s = fp.readline() + + if not s: + break + if s[0:1] == b"#": + continue + if len(s) > 100: + raise SyntaxError("bad palette file") + + v = [int(x) for x in s.split()] + try: + [i, r, g, b] = v + except ValueError: + [i, r] = v + g = b = r + + if 0 <= i <= 255: + self.palette[i] = o8(r) + o8(g) + o8(b) + + self.palette = b"".join(self.palette) + + def getpalette(self): + + return self.palette, self.rawmode diff --git a/venv/Lib/site-packages/PIL/PalmImagePlugin.py b/venv/Lib/site-packages/PIL/PalmImagePlugin.py new file mode 100644 index 00000000..9fc55d79 --- /dev/null +++ b/venv/Lib/site-packages/PIL/PalmImagePlugin.py @@ -0,0 +1,226 @@ +# +# The Python Imaging Library. +# $Id$ +# + +## +# Image plugin for Palm pixmap images (output only). +## + +from . import Image, ImageFile +from ._binary import o8, o16be as o16b + +# fmt: off +_Palm8BitColormapValues = ( + (255, 255, 255), (255, 204, 255), (255, 153, 255), (255, 102, 255), + (255, 51, 255), (255, 0, 255), (255, 255, 204), (255, 204, 204), + (255, 153, 204), (255, 102, 204), (255, 51, 204), (255, 0, 204), + (255, 255, 153), (255, 204, 153), (255, 153, 153), (255, 102, 153), + (255, 51, 153), (255, 0, 153), (204, 255, 255), (204, 204, 255), + (204, 153, 255), (204, 102, 255), (204, 51, 255), (204, 0, 255), + (204, 255, 204), (204, 204, 204), (204, 153, 204), (204, 102, 204), + (204, 51, 204), (204, 0, 204), (204, 255, 153), (204, 204, 153), + (204, 153, 153), (204, 102, 153), (204, 51, 153), (204, 0, 153), + (153, 255, 255), (153, 204, 255), (153, 153, 255), (153, 102, 255), + (153, 51, 255), (153, 0, 255), (153, 255, 204), (153, 204, 204), + (153, 153, 204), (153, 102, 204), (153, 51, 204), (153, 0, 204), + (153, 255, 153), (153, 204, 153), (153, 153, 153), (153, 102, 153), + (153, 51, 153), (153, 0, 153), (102, 255, 255), (102, 204, 255), + (102, 153, 255), (102, 102, 255), (102, 51, 255), (102, 0, 255), + (102, 255, 204), (102, 204, 204), (102, 153, 204), (102, 102, 204), + (102, 51, 204), (102, 0, 204), (102, 255, 153), (102, 204, 153), + (102, 153, 153), (102, 102, 153), (102, 51, 153), (102, 0, 153), + (51, 255, 255), (51, 204, 255), (51, 153, 255), (51, 102, 255), + (51, 51, 255), (51, 0, 255), (51, 255, 204), (51, 204, 204), + (51, 153, 204), (51, 102, 204), (51, 51, 204), (51, 0, 204), + (51, 255, 153), (51, 204, 153), (51, 153, 153), (51, 102, 153), + (51, 51, 153), (51, 0, 153), (0, 255, 255), (0, 204, 255), + (0, 153, 255), (0, 102, 255), (0, 51, 255), (0, 0, 255), + (0, 255, 204), (0, 204, 204), (0, 153, 204), (0, 102, 204), + (0, 51, 204), (0, 0, 204), (0, 255, 153), (0, 204, 153), + (0, 153, 153), (0, 102, 153), (0, 51, 153), (0, 0, 153), + (255, 255, 102), (255, 204, 102), (255, 153, 102), (255, 102, 102), + (255, 51, 102), (255, 0, 102), (255, 255, 51), (255, 204, 51), + (255, 153, 51), (255, 102, 51), (255, 51, 51), (255, 0, 51), + (255, 255, 0), (255, 204, 0), (255, 153, 0), (255, 102, 0), + (255, 51, 0), (255, 0, 0), (204, 255, 102), (204, 204, 102), + (204, 153, 102), (204, 102, 102), (204, 51, 102), (204, 0, 102), + (204, 255, 51), (204, 204, 51), (204, 153, 51), (204, 102, 51), + (204, 51, 51), (204, 0, 51), (204, 255, 0), (204, 204, 0), + (204, 153, 0), (204, 102, 0), (204, 51, 0), (204, 0, 0), + (153, 255, 102), (153, 204, 102), (153, 153, 102), (153, 102, 102), + (153, 51, 102), (153, 0, 102), (153, 255, 51), (153, 204, 51), + (153, 153, 51), (153, 102, 51), (153, 51, 51), (153, 0, 51), + (153, 255, 0), (153, 204, 0), (153, 153, 0), (153, 102, 0), + (153, 51, 0), (153, 0, 0), (102, 255, 102), (102, 204, 102), + (102, 153, 102), (102, 102, 102), (102, 51, 102), (102, 0, 102), + (102, 255, 51), (102, 204, 51), (102, 153, 51), (102, 102, 51), + (102, 51, 51), (102, 0, 51), (102, 255, 0), (102, 204, 0), + (102, 153, 0), (102, 102, 0), (102, 51, 0), (102, 0, 0), + (51, 255, 102), (51, 204, 102), (51, 153, 102), (51, 102, 102), + (51, 51, 102), (51, 0, 102), (51, 255, 51), (51, 204, 51), + (51, 153, 51), (51, 102, 51), (51, 51, 51), (51, 0, 51), + (51, 255, 0), (51, 204, 0), (51, 153, 0), (51, 102, 0), + (51, 51, 0), (51, 0, 0), (0, 255, 102), (0, 204, 102), + (0, 153, 102), (0, 102, 102), (0, 51, 102), (0, 0, 102), + (0, 255, 51), (0, 204, 51), (0, 153, 51), (0, 102, 51), + (0, 51, 51), (0, 0, 51), (0, 255, 0), (0, 204, 0), + (0, 153, 0), (0, 102, 0), (0, 51, 0), (17, 17, 17), + (34, 34, 34), (68, 68, 68), (85, 85, 85), (119, 119, 119), + (136, 136, 136), (170, 170, 170), (187, 187, 187), (221, 221, 221), + (238, 238, 238), (192, 192, 192), (128, 0, 0), (128, 0, 128), + (0, 128, 0), (0, 128, 128), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0)) +# fmt: on + + +# so build a prototype image to be used for palette resampling +def build_prototype_image(): + image = Image.new("L", (1, len(_Palm8BitColormapValues))) + image.putdata(list(range(len(_Palm8BitColormapValues)))) + palettedata = () + for colormapValue in _Palm8BitColormapValues: + palettedata += colormapValue + palettedata += (0, 0, 0) * (256 - len(_Palm8BitColormapValues)) + image.putpalette(palettedata) + return image + + +Palm8BitColormapImage = build_prototype_image() + +# OK, we now have in Palm8BitColormapImage, +# a "P"-mode image with the right palette +# +# -------------------------------------------------------------------- + +_FLAGS = {"custom-colormap": 0x4000, "is-compressed": 0x8000, "has-transparent": 0x2000} + +_COMPRESSION_TYPES = {"none": 0xFF, "rle": 0x01, "scanline": 0x00} + + +# +# -------------------------------------------------------------------- + +## +# (Internal) Image save plugin for the Palm format. + + +def _save(im, fp, filename): + + if im.mode == "P": + + # we assume this is a color Palm image with the standard colormap, + # unless the "info" dict has a "custom-colormap" field + + rawmode = "P" + bpp = 8 + version = 1 + + elif im.mode == "L": + if im.encoderinfo.get("bpp") in (1, 2, 4): + # this is 8-bit grayscale, so we shift it to get the high-order bits, + # and invert it because + # Palm does greyscale from white (0) to black (1) + bpp = im.encoderinfo["bpp"] + im = im.point( + lambda x, shift=8 - bpp, maxval=(1 << bpp) - 1: maxval - (x >> shift) + ) + elif im.info.get("bpp") in (1, 2, 4): + # here we assume that even though the inherent mode is 8-bit grayscale, + # only the lower bpp bits are significant. + # We invert them to match the Palm. + bpp = im.info["bpp"] + im = im.point(lambda x, maxval=(1 << bpp) - 1: maxval - (x & maxval)) + else: + raise OSError("cannot write mode %s as Palm" % im.mode) + + # we ignore the palette here + im.mode = "P" + rawmode = "P;" + str(bpp) + version = 1 + + elif im.mode == "1": + + # monochrome -- write it inverted, as is the Palm standard + rawmode = "1;I" + bpp = 1 + version = 0 + + else: + + raise OSError("cannot write mode %s as Palm" % im.mode) + + # + # make sure image data is available + im.load() + + # write header + + cols = im.size[0] + rows = im.size[1] + + rowbytes = int((cols + (16 // bpp - 1)) / (16 // bpp)) * 2 + transparent_index = 0 + compression_type = _COMPRESSION_TYPES["none"] + + flags = 0 + if im.mode == "P" and "custom-colormap" in im.info: + flags = flags & _FLAGS["custom-colormap"] + colormapsize = 4 * 256 + 2 + colormapmode = im.palette.mode + colormap = im.getdata().getpalette() + else: + colormapsize = 0 + + if "offset" in im.info: + offset = (rowbytes * rows + 16 + 3 + colormapsize) // 4 + else: + offset = 0 + + fp.write(o16b(cols) + o16b(rows) + o16b(rowbytes) + o16b(flags)) + fp.write(o8(bpp)) + fp.write(o8(version)) + fp.write(o16b(offset)) + fp.write(o8(transparent_index)) + fp.write(o8(compression_type)) + fp.write(o16b(0)) # reserved by Palm + + # now write colormap if necessary + + if colormapsize > 0: + fp.write(o16b(256)) + for i in range(256): + fp.write(o8(i)) + if colormapmode == "RGB": + fp.write( + o8(colormap[3 * i]) + + o8(colormap[3 * i + 1]) + + o8(colormap[3 * i + 2]) + ) + elif colormapmode == "RGBA": + fp.write( + o8(colormap[4 * i]) + + o8(colormap[4 * i + 1]) + + o8(colormap[4 * i + 2]) + ) + + # now convert data to raw form + ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, rowbytes, 1))]) + + if hasattr(fp, "flush"): + fp.flush() + + +# +# -------------------------------------------------------------------- + +Image.register_save("Palm", _save) + +Image.register_extension("Palm", ".palm") + +Image.register_mime("Palm", "image/palm") diff --git a/venv/Lib/site-packages/PIL/PcdImagePlugin.py b/venv/Lib/site-packages/PIL/PcdImagePlugin.py new file mode 100644 index 00000000..625f5564 --- /dev/null +++ b/venv/Lib/site-packages/PIL/PcdImagePlugin.py @@ -0,0 +1,64 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PCD file handling +# +# History: +# 96-05-10 fl Created +# 96-05-27 fl Added draft mode (128x192, 256x384) +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + + +from . import Image, ImageFile +from ._binary import i8 + +## +# Image plugin for PhotoCD images. This plugin only reads the 768x512 +# image from the file; higher resolutions are encoded in a proprietary +# encoding. + + +class PcdImageFile(ImageFile.ImageFile): + + format = "PCD" + format_description = "Kodak PhotoCD" + + def _open(self): + + # rough + self.fp.seek(2048) + s = self.fp.read(2048) + + if s[:4] != b"PCD_": + raise SyntaxError("not a PCD file") + + orientation = i8(s[1538]) & 3 + self.tile_post_rotate = None + if orientation == 1: + self.tile_post_rotate = 90 + elif orientation == 3: + self.tile_post_rotate = -90 + + self.mode = "RGB" + self._size = 768, 512 # FIXME: not correct for rotated images! + self.tile = [("pcd", (0, 0) + self.size, 96 * 2048, None)] + + def load_end(self): + if self.tile_post_rotate: + # Handle rotated PCDs + self.im = self.im.rotate(self.tile_post_rotate) + self._size = self.im.size + + +# +# registry + +Image.register_open(PcdImageFile.format, PcdImageFile) + +Image.register_extension(PcdImageFile.format, ".pcd") diff --git a/venv/Lib/site-packages/PIL/PcfFontFile.py b/venv/Lib/site-packages/PIL/PcfFontFile.py new file mode 100644 index 00000000..f8836ad8 --- /dev/null +++ b/venv/Lib/site-packages/PIL/PcfFontFile.py @@ -0,0 +1,244 @@ +# +# THIS IS WORK IN PROGRESS +# +# The Python Imaging Library +# $Id$ +# +# portable compiled font file parser +# +# history: +# 1997-08-19 fl created +# 2003-09-13 fl fixed loading of unicode fonts +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1997-2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +import io + +from . import FontFile, Image +from ._binary import i8, i16be as b16, i16le as l16, i32be as b32, i32le as l32 + +# -------------------------------------------------------------------- +# declarations + +PCF_MAGIC = 0x70636601 # "\x01fcp" + +PCF_PROPERTIES = 1 << 0 +PCF_ACCELERATORS = 1 << 1 +PCF_METRICS = 1 << 2 +PCF_BITMAPS = 1 << 3 +PCF_INK_METRICS = 1 << 4 +PCF_BDF_ENCODINGS = 1 << 5 +PCF_SWIDTHS = 1 << 6 +PCF_GLYPH_NAMES = 1 << 7 +PCF_BDF_ACCELERATORS = 1 << 8 + +BYTES_PER_ROW = [ + lambda bits: ((bits + 7) >> 3), + lambda bits: ((bits + 15) >> 3) & ~1, + lambda bits: ((bits + 31) >> 3) & ~3, + lambda bits: ((bits + 63) >> 3) & ~7, +] + + +def sz(s, o): + return s[o : s.index(b"\0", o)] + + +class PcfFontFile(FontFile.FontFile): + """Font file plugin for the X11 PCF format.""" + + name = "name" + + def __init__(self, fp, charset_encoding="iso8859-1"): + + self.charset_encoding = charset_encoding + + magic = l32(fp.read(4)) + if magic != PCF_MAGIC: + raise SyntaxError("not a PCF file") + + super().__init__() + + count = l32(fp.read(4)) + self.toc = {} + for i in range(count): + type = l32(fp.read(4)) + self.toc[type] = l32(fp.read(4)), l32(fp.read(4)), l32(fp.read(4)) + + self.fp = fp + + self.info = self._load_properties() + + metrics = self._load_metrics() + bitmaps = self._load_bitmaps(metrics) + encoding = self._load_encoding() + + # + # create glyph structure + + for ch in range(256): + ix = encoding[ch] + if ix is not None: + x, y, l, r, w, a, d, f = metrics[ix] + glyph = (w, 0), (l, d - y, x + l, d), (0, 0, x, y), bitmaps[ix] + self.glyph[ch] = glyph + + def _getformat(self, tag): + + format, size, offset = self.toc[tag] + + fp = self.fp + fp.seek(offset) + + format = l32(fp.read(4)) + + if format & 4: + i16, i32 = b16, b32 + else: + i16, i32 = l16, l32 + + return fp, format, i16, i32 + + def _load_properties(self): + + # + # font properties + + properties = {} + + fp, format, i16, i32 = self._getformat(PCF_PROPERTIES) + + nprops = i32(fp.read(4)) + + # read property description + p = [] + for i in range(nprops): + p.append((i32(fp.read(4)), i8(fp.read(1)), i32(fp.read(4)))) + if nprops & 3: + fp.seek(4 - (nprops & 3), io.SEEK_CUR) # pad + + data = fp.read(i32(fp.read(4))) + + for k, s, v in p: + k = sz(data, k) + if s: + v = sz(data, v) + properties[k] = v + + return properties + + def _load_metrics(self): + + # + # font metrics + + metrics = [] + + fp, format, i16, i32 = self._getformat(PCF_METRICS) + + append = metrics.append + + if (format & 0xFF00) == 0x100: + + # "compressed" metrics + for i in range(i16(fp.read(2))): + left = i8(fp.read(1)) - 128 + right = i8(fp.read(1)) - 128 + width = i8(fp.read(1)) - 128 + ascent = i8(fp.read(1)) - 128 + descent = i8(fp.read(1)) - 128 + xsize = right - left + ysize = ascent + descent + append((xsize, ysize, left, right, width, ascent, descent, 0)) + + else: + + # "jumbo" metrics + for i in range(i32(fp.read(4))): + left = i16(fp.read(2)) + right = i16(fp.read(2)) + width = i16(fp.read(2)) + ascent = i16(fp.read(2)) + descent = i16(fp.read(2)) + attributes = i16(fp.read(2)) + xsize = right - left + ysize = ascent + descent + append((xsize, ysize, left, right, width, ascent, descent, attributes)) + + return metrics + + def _load_bitmaps(self, metrics): + + # + # bitmap data + + bitmaps = [] + + fp, format, i16, i32 = self._getformat(PCF_BITMAPS) + + nbitmaps = i32(fp.read(4)) + + if nbitmaps != len(metrics): + raise OSError("Wrong number of bitmaps") + + offsets = [] + for i in range(nbitmaps): + offsets.append(i32(fp.read(4))) + + bitmapSizes = [] + for i in range(4): + bitmapSizes.append(i32(fp.read(4))) + + # byteorder = format & 4 # non-zero => MSB + bitorder = format & 8 # non-zero => MSB + padindex = format & 3 + + bitmapsize = bitmapSizes[padindex] + offsets.append(bitmapsize) + + data = fp.read(bitmapsize) + + pad = BYTES_PER_ROW[padindex] + mode = "1;R" + if bitorder: + mode = "1" + + for i in range(nbitmaps): + x, y, l, r, w, a, d, f = metrics[i] + b, e = offsets[i], offsets[i + 1] + bitmaps.append(Image.frombytes("1", (x, y), data[b:e], "raw", mode, pad(x))) + + return bitmaps + + def _load_encoding(self): + + # map character code to bitmap index + encoding = [None] * 256 + + fp, format, i16, i32 = self._getformat(PCF_BDF_ENCODINGS) + + firstCol, lastCol = i16(fp.read(2)), i16(fp.read(2)) + firstRow, lastRow = i16(fp.read(2)), i16(fp.read(2)) + + i16(fp.read(2)) # default + + nencoding = (lastCol - firstCol + 1) * (lastRow - firstRow + 1) + + encodingOffsets = [i16(fp.read(2)) for _ in range(nencoding)] + + for i in range(firstCol, len(encoding)): + try: + encodingOffset = encodingOffsets[ + ord(bytearray([i]).decode(self.charset_encoding)) + ] + if encodingOffset != 0xFFFF: + encoding[i] = encodingOffset + except UnicodeDecodeError: + # character is not supported in selected encoding + pass + + return encoding diff --git a/venv/Lib/site-packages/PIL/PcxImagePlugin.py b/venv/Lib/site-packages/PIL/PcxImagePlugin.py new file mode 100644 index 00000000..f7ae3bf7 --- /dev/null +++ b/venv/Lib/site-packages/PIL/PcxImagePlugin.py @@ -0,0 +1,206 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PCX file handling +# +# This format was originally used by ZSoft's popular PaintBrush +# program for the IBM PC. It is also supported by many MS-DOS and +# Windows applications, including the Windows PaintBrush program in +# Windows 3. +# +# history: +# 1995-09-01 fl Created +# 1996-05-20 fl Fixed RGB support +# 1997-01-03 fl Fixed 2-bit and 4-bit support +# 1999-02-03 fl Fixed 8-bit support (broken in 1.0b1) +# 1999-02-07 fl Added write support +# 2002-06-09 fl Made 2-bit and 4-bit support a bit more robust +# 2002-07-30 fl Seek from to current position, not beginning of file +# 2003-06-03 fl Extract DPI settings (info["dpi"]) +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +import io +import logging + +from . import Image, ImageFile, ImagePalette +from ._binary import i8, i16le as i16, o8, o16le as o16 + +logger = logging.getLogger(__name__) + + +def _accept(prefix): + return i8(prefix[0]) == 10 and i8(prefix[1]) in [0, 2, 3, 5] + + +## +# Image plugin for Paintbrush images. + + +class PcxImageFile(ImageFile.ImageFile): + + format = "PCX" + format_description = "Paintbrush" + + def _open(self): + + # header + s = self.fp.read(128) + if not _accept(s): + raise SyntaxError("not a PCX file") + + # image + bbox = i16(s, 4), i16(s, 6), i16(s, 8) + 1, i16(s, 10) + 1 + if bbox[2] <= bbox[0] or bbox[3] <= bbox[1]: + raise SyntaxError("bad PCX image size") + logger.debug("BBox: %s %s %s %s", *bbox) + + # format + version = i8(s[1]) + bits = i8(s[3]) + planes = i8(s[65]) + stride = i16(s, 66) + logger.debug( + "PCX version %s, bits %s, planes %s, stride %s", + version, + bits, + planes, + stride, + ) + + self.info["dpi"] = i16(s, 12), i16(s, 14) + + if bits == 1 and planes == 1: + mode = rawmode = "1" + + elif bits == 1 and planes in (2, 4): + mode = "P" + rawmode = "P;%dL" % planes + self.palette = ImagePalette.raw("RGB", s[16:64]) + + elif version == 5 and bits == 8 and planes == 1: + mode = rawmode = "L" + # FIXME: hey, this doesn't work with the incremental loader !!! + self.fp.seek(-769, io.SEEK_END) + s = self.fp.read(769) + if len(s) == 769 and i8(s[0]) == 12: + # check if the palette is linear greyscale + for i in range(256): + if s[i * 3 + 1 : i * 3 + 4] != o8(i) * 3: + mode = rawmode = "P" + break + if mode == "P": + self.palette = ImagePalette.raw("RGB", s[1:]) + self.fp.seek(128) + + elif version == 5 and bits == 8 and planes == 3: + mode = "RGB" + rawmode = "RGB;L" + + else: + raise OSError("unknown PCX mode") + + self.mode = mode + self._size = bbox[2] - bbox[0], bbox[3] - bbox[1] + + bbox = (0, 0) + self.size + logger.debug("size: %sx%s", *self.size) + + self.tile = [("pcx", bbox, self.fp.tell(), (rawmode, planes * stride))] + + +# -------------------------------------------------------------------- +# save PCX files + + +SAVE = { + # mode: (version, bits, planes, raw mode) + "1": (2, 1, 1, "1"), + "L": (5, 8, 1, "L"), + "P": (5, 8, 1, "P"), + "RGB": (5, 8, 3, "RGB;L"), +} + + +def _save(im, fp, filename): + + try: + version, bits, planes, rawmode = SAVE[im.mode] + except KeyError as e: + raise ValueError("Cannot save %s images as PCX" % im.mode) from e + + # bytes per plane + stride = (im.size[0] * bits + 7) // 8 + # stride should be even + stride += stride % 2 + # Stride needs to be kept in sync with the PcxEncode.c version. + # Ideally it should be passed in in the state, but the bytes value + # gets overwritten. + + logger.debug( + "PcxImagePlugin._save: xwidth: %d, bits: %d, stride: %d", + im.size[0], + bits, + stride, + ) + + # under windows, we could determine the current screen size with + # "Image.core.display_mode()[1]", but I think that's overkill... + + screen = im.size + + dpi = 100, 100 + + # PCX header + fp.write( + o8(10) + + o8(version) + + o8(1) + + o8(bits) + + o16(0) + + o16(0) + + o16(im.size[0] - 1) + + o16(im.size[1] - 1) + + o16(dpi[0]) + + o16(dpi[1]) + + b"\0" * 24 + + b"\xFF" * 24 + + b"\0" + + o8(planes) + + o16(stride) + + o16(1) + + o16(screen[0]) + + o16(screen[1]) + + b"\0" * 54 + ) + + assert fp.tell() == 128 + + ImageFile._save(im, fp, [("pcx", (0, 0) + im.size, 0, (rawmode, bits * planes))]) + + if im.mode == "P": + # colour palette + fp.write(o8(12)) + fp.write(im.im.getpalette("RGB", "RGB")) # 768 bytes + elif im.mode == "L": + # greyscale palette + fp.write(o8(12)) + for i in range(256): + fp.write(o8(i) * 3) + + +# -------------------------------------------------------------------- +# registry + + +Image.register_open(PcxImageFile.format, PcxImageFile, _accept) +Image.register_save(PcxImageFile.format, _save) + +Image.register_extension(PcxImageFile.format, ".pcx") + +Image.register_mime(PcxImageFile.format, "image/x-pcx") diff --git a/venv/Lib/site-packages/PIL/PdfImagePlugin.py b/venv/Lib/site-packages/PIL/PdfImagePlugin.py new file mode 100644 index 00000000..47500baf --- /dev/null +++ b/venv/Lib/site-packages/PIL/PdfImagePlugin.py @@ -0,0 +1,243 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PDF (Acrobat) file handling +# +# History: +# 1996-07-16 fl Created +# 1997-01-18 fl Fixed header +# 2004-02-21 fl Fixes for 1/L/CMYK images, etc. +# 2004-02-24 fl Fixes for 1 and P images. +# +# Copyright (c) 1997-2004 by Secret Labs AB. All rights reserved. +# Copyright (c) 1996-1997 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +## +# Image plugin for PDF images (output only). +## + +import io +import os +import time + +from . import Image, ImageFile, ImageSequence, PdfParser, __version__ + +# +# -------------------------------------------------------------------- + +# object ids: +# 1. catalogue +# 2. pages +# 3. image +# 4. page +# 5. page contents + + +def _save_all(im, fp, filename): + _save(im, fp, filename, save_all=True) + + +## +# (Internal) Image save plugin for the PDF format. + + +def _save(im, fp, filename, save_all=False): + is_appending = im.encoderinfo.get("append", False) + if is_appending: + existing_pdf = PdfParser.PdfParser(f=fp, filename=filename, mode="r+b") + else: + existing_pdf = PdfParser.PdfParser(f=fp, filename=filename, mode="w+b") + + resolution = im.encoderinfo.get("resolution", 72.0) + + info = { + "title": None + if is_appending + else os.path.splitext(os.path.basename(filename))[0], + "author": None, + "subject": None, + "keywords": None, + "creator": None, + "producer": None, + "creationDate": None if is_appending else time.gmtime(), + "modDate": None if is_appending else time.gmtime(), + } + for k, default in info.items(): + v = im.encoderinfo.get(k) if k in im.encoderinfo else default + if v: + existing_pdf.info[k[0].upper() + k[1:]] = v + + # + # make sure image data is available + im.load() + + existing_pdf.start_writing() + existing_pdf.write_header() + existing_pdf.write_comment("created by Pillow {} PDF driver".format(__version__)) + + # + # pages + ims = [im] + if save_all: + append_images = im.encoderinfo.get("append_images", []) + for append_im in append_images: + append_im.encoderinfo = im.encoderinfo.copy() + ims.append(append_im) + numberOfPages = 0 + image_refs = [] + page_refs = [] + contents_refs = [] + for im in ims: + im_numberOfPages = 1 + if save_all: + try: + im_numberOfPages = im.n_frames + except AttributeError: + # Image format does not have n_frames. + # It is a single frame image + pass + numberOfPages += im_numberOfPages + for i in range(im_numberOfPages): + image_refs.append(existing_pdf.next_object_id(0)) + page_refs.append(existing_pdf.next_object_id(0)) + contents_refs.append(existing_pdf.next_object_id(0)) + existing_pdf.pages.append(page_refs[-1]) + + # + # catalog and list of pages + existing_pdf.write_catalog() + + pageNumber = 0 + for imSequence in ims: + im_pages = ImageSequence.Iterator(imSequence) if save_all else [imSequence] + for im in im_pages: + # FIXME: Should replace ASCIIHexDecode with RunLengthDecode + # (packbits) or LZWDecode (tiff/lzw compression). Note that + # PDF 1.2 also supports Flatedecode (zip compression). + + bits = 8 + params = None + + if im.mode == "1": + filter = "ASCIIHexDecode" + colorspace = PdfParser.PdfName("DeviceGray") + procset = "ImageB" # grayscale + bits = 1 + elif im.mode == "L": + filter = "DCTDecode" + # params = "<< /Predictor 15 /Columns %d >>" % (width-2) + colorspace = PdfParser.PdfName("DeviceGray") + procset = "ImageB" # grayscale + elif im.mode == "P": + filter = "ASCIIHexDecode" + palette = im.im.getpalette("RGB") + colorspace = [ + PdfParser.PdfName("Indexed"), + PdfParser.PdfName("DeviceRGB"), + 255, + PdfParser.PdfBinary(palette), + ] + procset = "ImageI" # indexed color + elif im.mode == "RGB": + filter = "DCTDecode" + colorspace = PdfParser.PdfName("DeviceRGB") + procset = "ImageC" # color images + elif im.mode == "CMYK": + filter = "DCTDecode" + colorspace = PdfParser.PdfName("DeviceCMYK") + procset = "ImageC" # color images + else: + raise ValueError("cannot save mode %s" % im.mode) + + # + # image + + op = io.BytesIO() + + if filter == "ASCIIHexDecode": + if bits == 1: + # FIXME: the hex encoder doesn't support packed 1-bit + # images; do things the hard way... + data = im.tobytes("raw", "1") + im = Image.new("L", im.size) + im.putdata(data) + ImageFile._save(im, op, [("hex", (0, 0) + im.size, 0, im.mode)]) + elif filter == "DCTDecode": + Image.SAVE["JPEG"](im, op, filename) + elif filter == "FlateDecode": + ImageFile._save(im, op, [("zip", (0, 0) + im.size, 0, im.mode)]) + elif filter == "RunLengthDecode": + ImageFile._save(im, op, [("packbits", (0, 0) + im.size, 0, im.mode)]) + else: + raise ValueError("unsupported PDF filter (%s)" % filter) + + # + # Get image characteristics + + width, height = im.size + + existing_pdf.write_obj( + image_refs[pageNumber], + stream=op.getvalue(), + Type=PdfParser.PdfName("XObject"), + Subtype=PdfParser.PdfName("Image"), + Width=width, # * 72.0 / resolution, + Height=height, # * 72.0 / resolution, + Filter=PdfParser.PdfName(filter), + BitsPerComponent=bits, + DecodeParams=params, + ColorSpace=colorspace, + ) + + # + # page + + existing_pdf.write_page( + page_refs[pageNumber], + Resources=PdfParser.PdfDict( + ProcSet=[PdfParser.PdfName("PDF"), PdfParser.PdfName(procset)], + XObject=PdfParser.PdfDict(image=image_refs[pageNumber]), + ), + MediaBox=[ + 0, + 0, + int(width * 72.0 / resolution), + int(height * 72.0 / resolution), + ], + Contents=contents_refs[pageNumber], + ) + + # + # page contents + + page_contents = b"q %d 0 0 %d 0 0 cm /image Do Q\n" % ( + int(width * 72.0 / resolution), + int(height * 72.0 / resolution), + ) + + existing_pdf.write_obj(contents_refs[pageNumber], stream=page_contents) + + pageNumber += 1 + + # + # trailer + existing_pdf.write_xref_and_trailer() + if hasattr(fp, "flush"): + fp.flush() + existing_pdf.close() + + +# +# -------------------------------------------------------------------- + + +Image.register_save("PDF", _save) +Image.register_save_all("PDF", _save_all) + +Image.register_extension("PDF", ".pdf") + +Image.register_mime("PDF", "application/pdf") diff --git a/venv/Lib/site-packages/PIL/PdfParser.py b/venv/Lib/site-packages/PIL/PdfParser.py new file mode 100644 index 00000000..3c343c5e --- /dev/null +++ b/venv/Lib/site-packages/PIL/PdfParser.py @@ -0,0 +1,995 @@ +import calendar +import codecs +import collections +import mmap +import os +import re +import time +import zlib + + +# see 7.9.2.2 Text String Type on page 86 and D.3 PDFDocEncoding Character Set +# on page 656 +def encode_text(s): + return codecs.BOM_UTF16_BE + s.encode("utf_16_be") + + +PDFDocEncoding = { + 0x16: "\u0017", + 0x18: "\u02D8", + 0x19: "\u02C7", + 0x1A: "\u02C6", + 0x1B: "\u02D9", + 0x1C: "\u02DD", + 0x1D: "\u02DB", + 0x1E: "\u02DA", + 0x1F: "\u02DC", + 0x80: "\u2022", + 0x81: "\u2020", + 0x82: "\u2021", + 0x83: "\u2026", + 0x84: "\u2014", + 0x85: "\u2013", + 0x86: "\u0192", + 0x87: "\u2044", + 0x88: "\u2039", + 0x89: "\u203A", + 0x8A: "\u2212", + 0x8B: "\u2030", + 0x8C: "\u201E", + 0x8D: "\u201C", + 0x8E: "\u201D", + 0x8F: "\u2018", + 0x90: "\u2019", + 0x91: "\u201A", + 0x92: "\u2122", + 0x93: "\uFB01", + 0x94: "\uFB02", + 0x95: "\u0141", + 0x96: "\u0152", + 0x97: "\u0160", + 0x98: "\u0178", + 0x99: "\u017D", + 0x9A: "\u0131", + 0x9B: "\u0142", + 0x9C: "\u0153", + 0x9D: "\u0161", + 0x9E: "\u017E", + 0xA0: "\u20AC", +} + + +def decode_text(b): + if b[: len(codecs.BOM_UTF16_BE)] == codecs.BOM_UTF16_BE: + return b[len(codecs.BOM_UTF16_BE) :].decode("utf_16_be") + else: + return "".join(PDFDocEncoding.get(byte, chr(byte)) for byte in b) + + +class PdfFormatError(RuntimeError): + """An error that probably indicates a syntactic or semantic error in the + PDF file structure""" + + pass + + +def check_format_condition(condition, error_message): + if not condition: + raise PdfFormatError(error_message) + + +class IndirectReference( + collections.namedtuple("IndirectReferenceTuple", ["object_id", "generation"]) +): + def __str__(self): + return "%s %s R" % self + + def __bytes__(self): + return self.__str__().encode("us-ascii") + + def __eq__(self, other): + return ( + other.__class__ is self.__class__ + and other.object_id == self.object_id + and other.generation == self.generation + ) + + def __ne__(self, other): + return not (self == other) + + def __hash__(self): + return hash((self.object_id, self.generation)) + + +class IndirectObjectDef(IndirectReference): + def __str__(self): + return "%s %s obj" % self + + +class XrefTable: + def __init__(self): + self.existing_entries = {} # object ID => (offset, generation) + self.new_entries = {} # object ID => (offset, generation) + self.deleted_entries = {0: 65536} # object ID => generation + self.reading_finished = False + + def __setitem__(self, key, value): + if self.reading_finished: + self.new_entries[key] = value + else: + self.existing_entries[key] = value + if key in self.deleted_entries: + del self.deleted_entries[key] + + def __getitem__(self, key): + try: + return self.new_entries[key] + except KeyError: + return self.existing_entries[key] + + def __delitem__(self, key): + if key in self.new_entries: + generation = self.new_entries[key][1] + 1 + del self.new_entries[key] + self.deleted_entries[key] = generation + elif key in self.existing_entries: + generation = self.existing_entries[key][1] + 1 + self.deleted_entries[key] = generation + elif key in self.deleted_entries: + generation = self.deleted_entries[key] + else: + raise IndexError( + "object ID " + str(key) + " cannot be deleted because it doesn't exist" + ) + + def __contains__(self, key): + return key in self.existing_entries or key in self.new_entries + + def __len__(self): + return len( + set(self.existing_entries.keys()) + | set(self.new_entries.keys()) + | set(self.deleted_entries.keys()) + ) + + def keys(self): + return ( + set(self.existing_entries.keys()) - set(self.deleted_entries.keys()) + ) | set(self.new_entries.keys()) + + def write(self, f): + keys = sorted(set(self.new_entries.keys()) | set(self.deleted_entries.keys())) + deleted_keys = sorted(set(self.deleted_entries.keys())) + startxref = f.tell() + f.write(b"xref\n") + while keys: + # find a contiguous sequence of object IDs + prev = None + for index, key in enumerate(keys): + if prev is None or prev + 1 == key: + prev = key + else: + contiguous_keys = keys[:index] + keys = keys[index:] + break + else: + contiguous_keys = keys + keys = None + f.write(b"%d %d\n" % (contiguous_keys[0], len(contiguous_keys))) + for object_id in contiguous_keys: + if object_id in self.new_entries: + f.write(b"%010d %05d n \n" % self.new_entries[object_id]) + else: + this_deleted_object_id = deleted_keys.pop(0) + check_format_condition( + object_id == this_deleted_object_id, + "expected the next deleted object ID to be %s, instead found %s" + % (object_id, this_deleted_object_id), + ) + try: + next_in_linked_list = deleted_keys[0] + except IndexError: + next_in_linked_list = 0 + f.write( + b"%010d %05d f \n" + % (next_in_linked_list, self.deleted_entries[object_id]) + ) + return startxref + + +class PdfName: + def __init__(self, name): + if isinstance(name, PdfName): + self.name = name.name + elif isinstance(name, bytes): + self.name = name + else: + self.name = name.encode("us-ascii") + + def name_as_str(self): + return self.name.decode("us-ascii") + + def __eq__(self, other): + return ( + isinstance(other, PdfName) and other.name == self.name + ) or other == self.name + + def __hash__(self): + return hash(self.name) + + def __repr__(self): + return "PdfName(%s)" % repr(self.name) + + @classmethod + def from_pdf_stream(cls, data): + return cls(PdfParser.interpret_name(data)) + + allowed_chars = set(range(33, 127)) - {ord(c) for c in "#%/()<>[]{}"} + + def __bytes__(self): + result = bytearray(b"/") + for b in self.name: + if b in self.allowed_chars: + result.append(b) + else: + result.extend(b"#%02X" % b) + return bytes(result) + + +class PdfArray(list): + def __bytes__(self): + return b"[ " + b" ".join(pdf_repr(x) for x in self) + b" ]" + + +class PdfDict(collections.UserDict): + def __setattr__(self, key, value): + if key == "data": + collections.UserDict.__setattr__(self, key, value) + else: + self[key.encode("us-ascii")] = value + + def __getattr__(self, key): + try: + value = self[key.encode("us-ascii")] + except KeyError as e: + raise AttributeError(key) from e + if isinstance(value, bytes): + value = decode_text(value) + if key.endswith("Date"): + if value.startswith("D:"): + value = value[2:] + + relationship = "Z" + if len(value) > 17: + relationship = value[14] + offset = int(value[15:17]) * 60 + if len(value) > 20: + offset += int(value[18:20]) + + format = "%Y%m%d%H%M%S"[: len(value) - 2] + value = time.strptime(value[: len(format) + 2], format) + if relationship in ["+", "-"]: + offset *= 60 + if relationship == "+": + offset *= -1 + value = time.gmtime(calendar.timegm(value) + offset) + return value + + def __bytes__(self): + out = bytearray(b"<<") + for key, value in self.items(): + if value is None: + continue + value = pdf_repr(value) + out.extend(b"\n") + out.extend(bytes(PdfName(key))) + out.extend(b" ") + out.extend(value) + out.extend(b"\n>>") + return bytes(out) + + +class PdfBinary: + def __init__(self, data): + self.data = data + + def __bytes__(self): + return b"<%s>" % b"".join(b"%02X" % b for b in self.data) + + +class PdfStream: + def __init__(self, dictionary, buf): + self.dictionary = dictionary + self.buf = buf + + def decode(self): + try: + filter = self.dictionary.Filter + except AttributeError: + return self.buf + if filter == b"FlateDecode": + try: + expected_length = self.dictionary.DL + except AttributeError: + expected_length = self.dictionary.Length + return zlib.decompress(self.buf, bufsize=int(expected_length)) + else: + raise NotImplementedError( + "stream filter %s unknown/unsupported" % repr(self.dictionary.Filter) + ) + + +def pdf_repr(x): + if x is True: + return b"true" + elif x is False: + return b"false" + elif x is None: + return b"null" + elif isinstance(x, (PdfName, PdfDict, PdfArray, PdfBinary)): + return bytes(x) + elif isinstance(x, int): + return str(x).encode("us-ascii") + elif isinstance(x, time.struct_time): + return b"(D:" + time.strftime("%Y%m%d%H%M%SZ", x).encode("us-ascii") + b")" + elif isinstance(x, dict): + return bytes(PdfDict(x)) + elif isinstance(x, list): + return bytes(PdfArray(x)) + elif isinstance(x, str): + return pdf_repr(encode_text(x)) + elif isinstance(x, bytes): + # XXX escape more chars? handle binary garbage + x = x.replace(b"\\", b"\\\\") + x = x.replace(b"(", b"\\(") + x = x.replace(b")", b"\\)") + return b"(" + x + b")" + else: + return bytes(x) + + +class PdfParser: + """Based on + https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/PDF32000_2008.pdf + Supports PDF up to 1.4 + """ + + def __init__(self, filename=None, f=None, buf=None, start_offset=0, mode="rb"): + if buf and f: + raise RuntimeError("specify buf or f or filename, but not both buf and f") + self.filename = filename + self.buf = buf + self.f = f + self.start_offset = start_offset + self.should_close_buf = False + self.should_close_file = False + if filename is not None and f is None: + self.f = f = open(filename, mode) + self.should_close_file = True + if f is not None: + self.buf = buf = self.get_buf_from_file(f) + self.should_close_buf = True + if not filename and hasattr(f, "name"): + self.filename = f.name + self.cached_objects = {} + if buf: + self.read_pdf_info() + else: + self.file_size_total = self.file_size_this = 0 + self.root = PdfDict() + self.root_ref = None + self.info = PdfDict() + self.info_ref = None + self.page_tree_root = {} + self.pages = [] + self.orig_pages = [] + self.pages_ref = None + self.last_xref_section_offset = None + self.trailer_dict = {} + self.xref_table = XrefTable() + self.xref_table.reading_finished = True + if f: + self.seek_end() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + self.close() + return False # do not suppress exceptions + + def start_writing(self): + self.close_buf() + self.seek_end() + + def close_buf(self): + try: + self.buf.close() + except AttributeError: + pass + self.buf = None + + def close(self): + if self.should_close_buf: + self.close_buf() + if self.f is not None and self.should_close_file: + self.f.close() + self.f = None + + def seek_end(self): + self.f.seek(0, os.SEEK_END) + + def write_header(self): + self.f.write(b"%PDF-1.4\n") + + def write_comment(self, s): + self.f.write(("% {}\n".format(s)).encode("utf-8")) + + def write_catalog(self): + self.del_root() + self.root_ref = self.next_object_id(self.f.tell()) + self.pages_ref = self.next_object_id(0) + self.rewrite_pages() + self.write_obj(self.root_ref, Type=PdfName(b"Catalog"), Pages=self.pages_ref) + self.write_obj( + self.pages_ref, + Type=PdfName(b"Pages"), + Count=len(self.pages), + Kids=self.pages, + ) + return self.root_ref + + def rewrite_pages(self): + pages_tree_nodes_to_delete = [] + for i, page_ref in enumerate(self.orig_pages): + page_info = self.cached_objects[page_ref] + del self.xref_table[page_ref.object_id] + pages_tree_nodes_to_delete.append(page_info[PdfName(b"Parent")]) + if page_ref not in self.pages: + # the page has been deleted + continue + # make dict keys into strings for passing to write_page + stringified_page_info = {} + for key, value in page_info.items(): + # key should be a PdfName + stringified_page_info[key.name_as_str()] = value + stringified_page_info["Parent"] = self.pages_ref + new_page_ref = self.write_page(None, **stringified_page_info) + for j, cur_page_ref in enumerate(self.pages): + if cur_page_ref == page_ref: + # replace the page reference with the new one + self.pages[j] = new_page_ref + # delete redundant Pages tree nodes from xref table + for pages_tree_node_ref in pages_tree_nodes_to_delete: + while pages_tree_node_ref: + pages_tree_node = self.cached_objects[pages_tree_node_ref] + if pages_tree_node_ref.object_id in self.xref_table: + del self.xref_table[pages_tree_node_ref.object_id] + pages_tree_node_ref = pages_tree_node.get(b"Parent", None) + self.orig_pages = [] + + def write_xref_and_trailer(self, new_root_ref=None): + if new_root_ref: + self.del_root() + self.root_ref = new_root_ref + if self.info: + self.info_ref = self.write_obj(None, self.info) + start_xref = self.xref_table.write(self.f) + num_entries = len(self.xref_table) + trailer_dict = {b"Root": self.root_ref, b"Size": num_entries} + if self.last_xref_section_offset is not None: + trailer_dict[b"Prev"] = self.last_xref_section_offset + if self.info: + trailer_dict[b"Info"] = self.info_ref + self.last_xref_section_offset = start_xref + self.f.write( + b"trailer\n" + + bytes(PdfDict(trailer_dict)) + + b"\nstartxref\n%d\n%%%%EOF" % start_xref + ) + + def write_page(self, ref, *objs, **dict_obj): + if isinstance(ref, int): + ref = self.pages[ref] + if "Type" not in dict_obj: + dict_obj["Type"] = PdfName(b"Page") + if "Parent" not in dict_obj: + dict_obj["Parent"] = self.pages_ref + return self.write_obj(ref, *objs, **dict_obj) + + def write_obj(self, ref, *objs, **dict_obj): + f = self.f + if ref is None: + ref = self.next_object_id(f.tell()) + else: + self.xref_table[ref.object_id] = (f.tell(), ref.generation) + f.write(bytes(IndirectObjectDef(*ref))) + stream = dict_obj.pop("stream", None) + if stream is not None: + dict_obj["Length"] = len(stream) + if dict_obj: + f.write(pdf_repr(dict_obj)) + for obj in objs: + f.write(pdf_repr(obj)) + if stream is not None: + f.write(b"stream\n") + f.write(stream) + f.write(b"\nendstream\n") + f.write(b"endobj\n") + return ref + + def del_root(self): + if self.root_ref is None: + return + del self.xref_table[self.root_ref.object_id] + del self.xref_table[self.root[b"Pages"].object_id] + + @staticmethod + def get_buf_from_file(f): + if hasattr(f, "getbuffer"): + return f.getbuffer() + elif hasattr(f, "getvalue"): + return f.getvalue() + else: + try: + return mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) + except ValueError: # cannot mmap an empty file + return b"" + + def read_pdf_info(self): + self.file_size_total = len(self.buf) + self.file_size_this = self.file_size_total - self.start_offset + self.read_trailer() + self.root_ref = self.trailer_dict[b"Root"] + self.info_ref = self.trailer_dict.get(b"Info", None) + self.root = PdfDict(self.read_indirect(self.root_ref)) + if self.info_ref is None: + self.info = PdfDict() + else: + self.info = PdfDict(self.read_indirect(self.info_ref)) + check_format_condition(b"Type" in self.root, "/Type missing in Root") + check_format_condition( + self.root[b"Type"] == b"Catalog", "/Type in Root is not /Catalog" + ) + check_format_condition(b"Pages" in self.root, "/Pages missing in Root") + check_format_condition( + isinstance(self.root[b"Pages"], IndirectReference), + "/Pages in Root is not an indirect reference", + ) + self.pages_ref = self.root[b"Pages"] + self.page_tree_root = self.read_indirect(self.pages_ref) + self.pages = self.linearize_page_tree(self.page_tree_root) + # save the original list of page references + # in case the user modifies, adds or deletes some pages + # and we need to rewrite the pages and their list + self.orig_pages = self.pages[:] + + def next_object_id(self, offset=None): + try: + # TODO: support reuse of deleted objects + reference = IndirectReference(max(self.xref_table.keys()) + 1, 0) + except ValueError: + reference = IndirectReference(1, 0) + if offset is not None: + self.xref_table[reference.object_id] = (offset, 0) + return reference + + delimiter = br"[][()<>{}/%]" + delimiter_or_ws = br"[][()<>{}/%\000\011\012\014\015\040]" + whitespace = br"[\000\011\012\014\015\040]" + whitespace_or_hex = br"[\000\011\012\014\015\0400-9a-fA-F]" + whitespace_optional = whitespace + b"*" + whitespace_mandatory = whitespace + b"+" + newline_only = br"[\r\n]+" + newline = whitespace_optional + newline_only + whitespace_optional + re_trailer_end = re.compile( + whitespace_mandatory + + br"trailer" + + whitespace_optional + + br"\<\<(.*\>\>)" + + newline + + br"startxref" + + newline + + br"([0-9]+)" + + newline + + br"%%EOF" + + whitespace_optional + + br"$", + re.DOTALL, + ) + re_trailer_prev = re.compile( + whitespace_optional + + br"trailer" + + whitespace_optional + + br"\<\<(.*?\>\>)" + + newline + + br"startxref" + + newline + + br"([0-9]+)" + + newline + + br"%%EOF" + + whitespace_optional, + re.DOTALL, + ) + + def read_trailer(self): + search_start_offset = len(self.buf) - 16384 + if search_start_offset < self.start_offset: + search_start_offset = self.start_offset + m = self.re_trailer_end.search(self.buf, search_start_offset) + check_format_condition(m, "trailer end not found") + # make sure we found the LAST trailer + last_match = m + while m: + last_match = m + m = self.re_trailer_end.search(self.buf, m.start() + 16) + if not m: + m = last_match + trailer_data = m.group(1) + self.last_xref_section_offset = int(m.group(2)) + self.trailer_dict = self.interpret_trailer(trailer_data) + self.xref_table = XrefTable() + self.read_xref_table(xref_section_offset=self.last_xref_section_offset) + if b"Prev" in self.trailer_dict: + self.read_prev_trailer(self.trailer_dict[b"Prev"]) + + def read_prev_trailer(self, xref_section_offset): + trailer_offset = self.read_xref_table(xref_section_offset=xref_section_offset) + m = self.re_trailer_prev.search( + self.buf[trailer_offset : trailer_offset + 16384] + ) + check_format_condition(m, "previous trailer not found") + trailer_data = m.group(1) + check_format_condition( + int(m.group(2)) == xref_section_offset, + "xref section offset in previous trailer doesn't match what was expected", + ) + trailer_dict = self.interpret_trailer(trailer_data) + if b"Prev" in trailer_dict: + self.read_prev_trailer(trailer_dict[b"Prev"]) + + re_whitespace_optional = re.compile(whitespace_optional) + re_name = re.compile( + whitespace_optional + + br"/([!-$&'*-.0-;=?-Z\\^-z|~]+)(?=" + + delimiter_or_ws + + br")" + ) + re_dict_start = re.compile(whitespace_optional + br"\<\<") + re_dict_end = re.compile(whitespace_optional + br"\>\>" + whitespace_optional) + + @classmethod + def interpret_trailer(cls, trailer_data): + trailer = {} + offset = 0 + while True: + m = cls.re_name.match(trailer_data, offset) + if not m: + m = cls.re_dict_end.match(trailer_data, offset) + check_format_condition( + m and m.end() == len(trailer_data), + "name not found in trailer, remaining data: " + + repr(trailer_data[offset:]), + ) + break + key = cls.interpret_name(m.group(1)) + value, offset = cls.get_value(trailer_data, m.end()) + trailer[key] = value + check_format_condition( + b"Size" in trailer and isinstance(trailer[b"Size"], int), + "/Size not in trailer or not an integer", + ) + check_format_condition( + b"Root" in trailer and isinstance(trailer[b"Root"], IndirectReference), + "/Root not in trailer or not an indirect reference", + ) + return trailer + + re_hashes_in_name = re.compile(br"([^#]*)(#([0-9a-fA-F]{2}))?") + + @classmethod + def interpret_name(cls, raw, as_text=False): + name = b"" + for m in cls.re_hashes_in_name.finditer(raw): + if m.group(3): + name += m.group(1) + bytearray.fromhex(m.group(3).decode("us-ascii")) + else: + name += m.group(1) + if as_text: + return name.decode("utf-8") + else: + return bytes(name) + + re_null = re.compile(whitespace_optional + br"null(?=" + delimiter_or_ws + br")") + re_true = re.compile(whitespace_optional + br"true(?=" + delimiter_or_ws + br")") + re_false = re.compile(whitespace_optional + br"false(?=" + delimiter_or_ws + br")") + re_int = re.compile( + whitespace_optional + br"([-+]?[0-9]+)(?=" + delimiter_or_ws + br")" + ) + re_real = re.compile( + whitespace_optional + + br"([-+]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+))(?=" + + delimiter_or_ws + + br")" + ) + re_array_start = re.compile(whitespace_optional + br"\[") + re_array_end = re.compile(whitespace_optional + br"]") + re_string_hex = re.compile( + whitespace_optional + br"\<(" + whitespace_or_hex + br"*)\>" + ) + re_string_lit = re.compile(whitespace_optional + br"\(") + re_indirect_reference = re.compile( + whitespace_optional + + br"([-+]?[0-9]+)" + + whitespace_mandatory + + br"([-+]?[0-9]+)" + + whitespace_mandatory + + br"R(?=" + + delimiter_or_ws + + br")" + ) + re_indirect_def_start = re.compile( + whitespace_optional + + br"([-+]?[0-9]+)" + + whitespace_mandatory + + br"([-+]?[0-9]+)" + + whitespace_mandatory + + br"obj(?=" + + delimiter_or_ws + + br")" + ) + re_indirect_def_end = re.compile( + whitespace_optional + br"endobj(?=" + delimiter_or_ws + br")" + ) + re_comment = re.compile( + br"(" + whitespace_optional + br"%[^\r\n]*" + newline + br")*" + ) + re_stream_start = re.compile(whitespace_optional + br"stream\r?\n") + re_stream_end = re.compile( + whitespace_optional + br"endstream(?=" + delimiter_or_ws + br")" + ) + + @classmethod + def get_value(cls, data, offset, expect_indirect=None, max_nesting=-1): + if max_nesting == 0: + return None, None + m = cls.re_comment.match(data, offset) + if m: + offset = m.end() + m = cls.re_indirect_def_start.match(data, offset) + if m: + check_format_condition( + int(m.group(1)) > 0, + "indirect object definition: object ID must be greater than 0", + ) + check_format_condition( + int(m.group(2)) >= 0, + "indirect object definition: generation must be non-negative", + ) + check_format_condition( + expect_indirect is None + or expect_indirect + == IndirectReference(int(m.group(1)), int(m.group(2))), + "indirect object definition different than expected", + ) + object, offset = cls.get_value(data, m.end(), max_nesting=max_nesting - 1) + if offset is None: + return object, None + m = cls.re_indirect_def_end.match(data, offset) + check_format_condition(m, "indirect object definition end not found") + return object, m.end() + check_format_condition( + not expect_indirect, "indirect object definition not found" + ) + m = cls.re_indirect_reference.match(data, offset) + if m: + check_format_condition( + int(m.group(1)) > 0, + "indirect object reference: object ID must be greater than 0", + ) + check_format_condition( + int(m.group(2)) >= 0, + "indirect object reference: generation must be non-negative", + ) + return IndirectReference(int(m.group(1)), int(m.group(2))), m.end() + m = cls.re_dict_start.match(data, offset) + if m: + offset = m.end() + result = {} + m = cls.re_dict_end.match(data, offset) + while not m: + key, offset = cls.get_value(data, offset, max_nesting=max_nesting - 1) + if offset is None: + return result, None + value, offset = cls.get_value(data, offset, max_nesting=max_nesting - 1) + result[key] = value + if offset is None: + return result, None + m = cls.re_dict_end.match(data, offset) + offset = m.end() + m = cls.re_stream_start.match(data, offset) + if m: + try: + stream_len = int(result[b"Length"]) + except (TypeError, KeyError, ValueError) as e: + raise PdfFormatError( + "bad or missing Length in stream dict (%r)" + % result.get(b"Length", None) + ) from e + stream_data = data[m.end() : m.end() + stream_len] + m = cls.re_stream_end.match(data, m.end() + stream_len) + check_format_condition(m, "stream end not found") + offset = m.end() + result = PdfStream(PdfDict(result), stream_data) + else: + result = PdfDict(result) + return result, offset + m = cls.re_array_start.match(data, offset) + if m: + offset = m.end() + result = [] + m = cls.re_array_end.match(data, offset) + while not m: + value, offset = cls.get_value(data, offset, max_nesting=max_nesting - 1) + result.append(value) + if offset is None: + return result, None + m = cls.re_array_end.match(data, offset) + return result, m.end() + m = cls.re_null.match(data, offset) + if m: + return None, m.end() + m = cls.re_true.match(data, offset) + if m: + return True, m.end() + m = cls.re_false.match(data, offset) + if m: + return False, m.end() + m = cls.re_name.match(data, offset) + if m: + return PdfName(cls.interpret_name(m.group(1))), m.end() + m = cls.re_int.match(data, offset) + if m: + return int(m.group(1)), m.end() + m = cls.re_real.match(data, offset) + if m: + # XXX Decimal instead of float??? + return float(m.group(1)), m.end() + m = cls.re_string_hex.match(data, offset) + if m: + # filter out whitespace + hex_string = bytearray( + [b for b in m.group(1) if b in b"0123456789abcdefABCDEF"] + ) + if len(hex_string) % 2 == 1: + # append a 0 if the length is not even - yes, at the end + hex_string.append(ord(b"0")) + return bytearray.fromhex(hex_string.decode("us-ascii")), m.end() + m = cls.re_string_lit.match(data, offset) + if m: + return cls.get_literal_string(data, m.end()) + # return None, offset # fallback (only for debugging) + raise PdfFormatError("unrecognized object: " + repr(data[offset : offset + 32])) + + re_lit_str_token = re.compile( + br"(\\[nrtbf()\\])|(\\[0-9]{1,3})|(\\(\r\n|\r|\n))|(\r\n|\r|\n)|(\()|(\))" + ) + escaped_chars = { + b"n": b"\n", + b"r": b"\r", + b"t": b"\t", + b"b": b"\b", + b"f": b"\f", + b"(": b"(", + b")": b")", + b"\\": b"\\", + ord(b"n"): b"\n", + ord(b"r"): b"\r", + ord(b"t"): b"\t", + ord(b"b"): b"\b", + ord(b"f"): b"\f", + ord(b"("): b"(", + ord(b")"): b")", + ord(b"\\"): b"\\", + } + + @classmethod + def get_literal_string(cls, data, offset): + nesting_depth = 0 + result = bytearray() + for m in cls.re_lit_str_token.finditer(data, offset): + result.extend(data[offset : m.start()]) + if m.group(1): + result.extend(cls.escaped_chars[m.group(1)[1]]) + elif m.group(2): + result.append(int(m.group(2)[1:], 8)) + elif m.group(3): + pass + elif m.group(5): + result.extend(b"\n") + elif m.group(6): + result.extend(b"(") + nesting_depth += 1 + elif m.group(7): + if nesting_depth == 0: + return bytes(result), m.end() + result.extend(b")") + nesting_depth -= 1 + offset = m.end() + raise PdfFormatError("unfinished literal string") + + re_xref_section_start = re.compile(whitespace_optional + br"xref" + newline) + re_xref_subsection_start = re.compile( + whitespace_optional + + br"([0-9]+)" + + whitespace_mandatory + + br"([0-9]+)" + + whitespace_optional + + newline_only + ) + re_xref_entry = re.compile(br"([0-9]{10}) ([0-9]{5}) ([fn])( \r| \n|\r\n)") + + def read_xref_table(self, xref_section_offset): + subsection_found = False + m = self.re_xref_section_start.match( + self.buf, xref_section_offset + self.start_offset + ) + check_format_condition(m, "xref section start not found") + offset = m.end() + while True: + m = self.re_xref_subsection_start.match(self.buf, offset) + if not m: + check_format_condition( + subsection_found, "xref subsection start not found" + ) + break + subsection_found = True + offset = m.end() + first_object = int(m.group(1)) + num_objects = int(m.group(2)) + for i in range(first_object, first_object + num_objects): + m = self.re_xref_entry.match(self.buf, offset) + check_format_condition(m, "xref entry not found") + offset = m.end() + is_free = m.group(3) == b"f" + generation = int(m.group(2)) + if not is_free: + new_entry = (int(m.group(1)), generation) + check_format_condition( + i not in self.xref_table or self.xref_table[i] == new_entry, + "xref entry duplicated (and not identical)", + ) + self.xref_table[i] = new_entry + return offset + + def read_indirect(self, ref, max_nesting=-1): + offset, generation = self.xref_table[ref[0]] + check_format_condition( + generation == ref[1], + "expected to find generation %s for object ID %s in xref table, " + "instead found generation %s at offset %s" + % (ref[1], ref[0], generation, offset), + ) + value = self.get_value( + self.buf, + offset + self.start_offset, + expect_indirect=IndirectReference(*ref), + max_nesting=max_nesting, + )[0] + self.cached_objects[ref] = value + return value + + def linearize_page_tree(self, node=None): + if node is None: + node = self.page_tree_root + check_format_condition( + node[b"Type"] == b"Pages", "/Type of page tree node is not /Pages" + ) + pages = [] + for kid in node[b"Kids"]: + kid_object = self.read_indirect(kid) + if kid_object[b"Type"] == b"Page": + pages.append(kid) + else: + pages.extend(self.linearize_page_tree(node=kid_object)) + return pages diff --git a/venv/Lib/site-packages/PIL/PixarImagePlugin.py b/venv/Lib/site-packages/PIL/PixarImagePlugin.py new file mode 100644 index 00000000..91f0314b --- /dev/null +++ b/venv/Lib/site-packages/PIL/PixarImagePlugin.py @@ -0,0 +1,70 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PIXAR raster support for PIL +# +# history: +# 97-01-29 fl Created +# +# notes: +# This is incomplete; it is based on a few samples created with +# Photoshop 2.5 and 3.0, and a summary description provided by +# Greg Coats . Hopefully, "L" and +# "RGBA" support will be added in future versions. +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile +from ._binary import i16le as i16 + +# +# helpers + + +def _accept(prefix): + return prefix[:4] == b"\200\350\000\000" + + +## +# Image plugin for PIXAR raster images. + + +class PixarImageFile(ImageFile.ImageFile): + + format = "PIXAR" + format_description = "PIXAR raster image" + + def _open(self): + + # assuming a 4-byte magic label + s = self.fp.read(4) + if not _accept(s): + raise SyntaxError("not a PIXAR file") + + # read rest of header + s = s + self.fp.read(508) + + self._size = i16(s[418:420]), i16(s[416:418]) + + # get channel/depth descriptions + mode = i16(s[424:426]), i16(s[426:428]) + + if mode == (14, 2): + self.mode = "RGB" + # FIXME: to be continued... + + # create tile descriptor (assuming "dumped") + self.tile = [("raw", (0, 0) + self.size, 1024, (self.mode, 0, 1))] + + +# +# -------------------------------------------------------------------- + +Image.register_open(PixarImageFile.format, PixarImageFile, _accept) + +Image.register_extension(PixarImageFile.format, ".pxr") diff --git a/venv/Lib/site-packages/PIL/PngImagePlugin.py b/venv/Lib/site-packages/PIL/PngImagePlugin.py new file mode 100644 index 00000000..e027953d --- /dev/null +++ b/venv/Lib/site-packages/PIL/PngImagePlugin.py @@ -0,0 +1,1333 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PNG support code +# +# See "PNG (Portable Network Graphics) Specification, version 1.0; +# W3C Recommendation", 1996-10-01, Thomas Boutell (ed.). +# +# history: +# 1996-05-06 fl Created (couldn't resist it) +# 1996-12-14 fl Upgraded, added read and verify support (0.2) +# 1996-12-15 fl Separate PNG stream parser +# 1996-12-29 fl Added write support, added getchunks +# 1996-12-30 fl Eliminated circular references in decoder (0.3) +# 1998-07-12 fl Read/write 16-bit images as mode I (0.4) +# 2001-02-08 fl Added transparency support (from Zircon) (0.5) +# 2001-04-16 fl Don't close data source in "open" method (0.6) +# 2004-02-24 fl Don't even pretend to support interlaced files (0.7) +# 2004-08-31 fl Do basic sanity check on chunk identifiers (0.8) +# 2004-09-20 fl Added PngInfo chunk container +# 2004-12-18 fl Added DPI read support (based on code by Niki Spahiev) +# 2008-08-13 fl Added tRNS support for RGB images +# 2009-03-06 fl Support for preserving ICC profiles (by Florian Hoech) +# 2009-03-08 fl Added zTXT support (from Lowell Alleman) +# 2009-03-29 fl Read interlaced PNG files (from Conrado Porto Lopes Gouvua) +# +# Copyright (c) 1997-2009 by Secret Labs AB +# Copyright (c) 1996 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import itertools +import logging +import re +import struct +import warnings +import zlib + +from . import Image, ImageChops, ImageFile, ImagePalette, ImageSequence +from ._binary import i8, i16be as i16, i32be as i32, o8, o16be as o16, o32be as o32 + +logger = logging.getLogger(__name__) + +is_cid = re.compile(br"\w\w\w\w").match + + +_MAGIC = b"\211PNG\r\n\032\n" + + +_MODES = { + # supported bits/color combinations, and corresponding modes/rawmodes + # Greyscale + (1, 0): ("1", "1"), + (2, 0): ("L", "L;2"), + (4, 0): ("L", "L;4"), + (8, 0): ("L", "L"), + (16, 0): ("I", "I;16B"), + # Truecolour + (8, 2): ("RGB", "RGB"), + (16, 2): ("RGB", "RGB;16B"), + # Indexed-colour + (1, 3): ("P", "P;1"), + (2, 3): ("P", "P;2"), + (4, 3): ("P", "P;4"), + (8, 3): ("P", "P"), + # Greyscale with alpha + (8, 4): ("LA", "LA"), + (16, 4): ("RGBA", "LA;16B"), # LA;16B->LA not yet available + # Truecolour with alpha + (8, 6): ("RGBA", "RGBA"), + (16, 6): ("RGBA", "RGBA;16B"), +} + + +_simple_palette = re.compile(b"^\xff*\x00\xff*$") + +# Maximum decompressed size for a iTXt or zTXt chunk. +# Eliminates decompression bombs where compressed chunks can expand 1000x +MAX_TEXT_CHUNK = ImageFile.SAFEBLOCK +# Set the maximum total text chunk size. +MAX_TEXT_MEMORY = 64 * MAX_TEXT_CHUNK + + +# APNG frame disposal modes +APNG_DISPOSE_OP_NONE = 0 +APNG_DISPOSE_OP_BACKGROUND = 1 +APNG_DISPOSE_OP_PREVIOUS = 2 + +# APNG frame blend modes +APNG_BLEND_OP_SOURCE = 0 +APNG_BLEND_OP_OVER = 1 + + +def _safe_zlib_decompress(s): + dobj = zlib.decompressobj() + plaintext = dobj.decompress(s, MAX_TEXT_CHUNK) + if dobj.unconsumed_tail: + raise ValueError("Decompressed Data Too Large") + return plaintext + + +def _crc32(data, seed=0): + return zlib.crc32(data, seed) & 0xFFFFFFFF + + +# -------------------------------------------------------------------- +# Support classes. Suitable for PNG and related formats like MNG etc. + + +class ChunkStream: + def __init__(self, fp): + + self.fp = fp + self.queue = [] + + def read(self): + """Fetch a new chunk. Returns header information.""" + cid = None + + if self.queue: + cid, pos, length = self.queue.pop() + self.fp.seek(pos) + else: + s = self.fp.read(8) + cid = s[4:] + pos = self.fp.tell() + length = i32(s) + + if not is_cid(cid): + if not ImageFile.LOAD_TRUNCATED_IMAGES: + raise SyntaxError("broken PNG file (chunk %s)" % repr(cid)) + + return cid, pos, length + + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + + def close(self): + self.queue = self.crc = self.fp = None + + def push(self, cid, pos, length): + + self.queue.append((cid, pos, length)) + + def call(self, cid, pos, length): + """Call the appropriate chunk handler""" + + logger.debug("STREAM %r %s %s", cid, pos, length) + return getattr(self, "chunk_" + cid.decode("ascii"))(pos, length) + + def crc(self, cid, data): + """Read and verify checksum""" + + # Skip CRC checks for ancillary chunks if allowed to load truncated + # images + # 5th byte of first char is 1 [specs, section 5.4] + if ImageFile.LOAD_TRUNCATED_IMAGES and (i8(cid[0]) >> 5 & 1): + self.crc_skip(cid, data) + return + + try: + crc1 = _crc32(data, _crc32(cid)) + crc2 = i32(self.fp.read(4)) + if crc1 != crc2: + raise SyntaxError("broken PNG file (bad header checksum in %r)" % cid) + except struct.error as e: + raise SyntaxError( + "broken PNG file (incomplete checksum in %r)" % cid + ) from e + + def crc_skip(self, cid, data): + """Read checksum. Used if the C module is not present""" + + self.fp.read(4) + + def verify(self, endchunk=b"IEND"): + + # Simple approach; just calculate checksum for all remaining + # blocks. Must be called directly after open. + + cids = [] + + while True: + try: + cid, pos, length = self.read() + except struct.error as e: + raise OSError("truncated PNG file") from e + + if cid == endchunk: + break + self.crc(cid, ImageFile._safe_read(self.fp, length)) + cids.append(cid) + + return cids + + +class iTXt(str): + """ + Subclass of string to allow iTXt chunks to look like strings while + keeping their extra information + + """ + + @staticmethod + def __new__(cls, text, lang=None, tkey=None): + """ + :param cls: the class to use when creating the instance + :param text: value for this key + :param lang: language code + :param tkey: UTF-8 version of the key name + """ + + self = str.__new__(cls, text) + self.lang = lang + self.tkey = tkey + return self + + +class PngInfo: + """ + PNG chunk container (for use with save(pnginfo=)) + + """ + + def __init__(self): + self.chunks = [] + + def add(self, cid, data): + """Appends an arbitrary chunk. Use with caution. + + :param cid: a byte string, 4 bytes long. + :param data: a byte string of the encoded data + + """ + + self.chunks.append((cid, data)) + + def add_itxt(self, key, value, lang="", tkey="", zip=False): + """Appends an iTXt chunk. + + :param key: latin-1 encodable text key name + :param value: value for this key + :param lang: language code + :param tkey: UTF-8 version of the key name + :param zip: compression flag + + """ + + if not isinstance(key, bytes): + key = key.encode("latin-1", "strict") + if not isinstance(value, bytes): + value = value.encode("utf-8", "strict") + if not isinstance(lang, bytes): + lang = lang.encode("utf-8", "strict") + if not isinstance(tkey, bytes): + tkey = tkey.encode("utf-8", "strict") + + if zip: + self.add( + b"iTXt", + key + b"\0\x01\0" + lang + b"\0" + tkey + b"\0" + zlib.compress(value), + ) + else: + self.add(b"iTXt", key + b"\0\0\0" + lang + b"\0" + tkey + b"\0" + value) + + def add_text(self, key, value, zip=False): + """Appends a text chunk. + + :param key: latin-1 encodable text key name + :param value: value for this key, text or an + :py:class:`PIL.PngImagePlugin.iTXt` instance + :param zip: compression flag + + """ + if isinstance(value, iTXt): + return self.add_itxt(key, value, value.lang, value.tkey, zip=zip) + + # The tEXt chunk stores latin-1 text + if not isinstance(value, bytes): + try: + value = value.encode("latin-1", "strict") + except UnicodeError: + return self.add_itxt(key, value, zip=zip) + + if not isinstance(key, bytes): + key = key.encode("latin-1", "strict") + + if zip: + self.add(b"zTXt", key + b"\0\0" + zlib.compress(value)) + else: + self.add(b"tEXt", key + b"\0" + value) + + +# -------------------------------------------------------------------- +# PNG image stream (IHDR/IEND) + + +class PngStream(ChunkStream): + def __init__(self, fp): + super().__init__(fp) + + # local copies of Image attributes + self.im_info = {} + self.im_text = {} + self.im_size = (0, 0) + self.im_mode = None + self.im_tile = None + self.im_palette = None + self.im_custom_mimetype = None + self.im_n_frames = None + self._seq_num = None + self.rewind_state = None + + self.text_memory = 0 + + def check_text_memory(self, chunklen): + self.text_memory += chunklen + if self.text_memory > MAX_TEXT_MEMORY: + raise ValueError( + "Too much memory used in text chunks: %s>MAX_TEXT_MEMORY" + % self.text_memory + ) + + def save_rewind(self): + self.rewind_state = { + "info": self.im_info.copy(), + "tile": self.im_tile, + "seq_num": self._seq_num, + } + + def rewind(self): + self.im_info = self.rewind_state["info"] + self.im_tile = self.rewind_state["tile"] + self._seq_num = self.rewind_state["seq_num"] + + def chunk_iCCP(self, pos, length): + + # ICC profile + s = ImageFile._safe_read(self.fp, length) + # according to PNG spec, the iCCP chunk contains: + # Profile name 1-79 bytes (character string) + # Null separator 1 byte (null character) + # Compression method 1 byte (0) + # Compressed profile n bytes (zlib with deflate compression) + i = s.find(b"\0") + logger.debug("iCCP profile name %r", s[:i]) + logger.debug("Compression method %s", i8(s[i])) + comp_method = i8(s[i]) + if comp_method != 0: + raise SyntaxError( + "Unknown compression method %s in iCCP chunk" % comp_method + ) + try: + icc_profile = _safe_zlib_decompress(s[i + 2 :]) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + icc_profile = None + else: + raise + except zlib.error: + icc_profile = None # FIXME + self.im_info["icc_profile"] = icc_profile + return s + + def chunk_IHDR(self, pos, length): + + # image header + s = ImageFile._safe_read(self.fp, length) + self.im_size = i32(s), i32(s[4:]) + try: + self.im_mode, self.im_rawmode = _MODES[(i8(s[8]), i8(s[9]))] + except Exception: + pass + if i8(s[12]): + self.im_info["interlace"] = 1 + if i8(s[11]): + raise SyntaxError("unknown filter category") + return s + + def chunk_IDAT(self, pos, length): + + # image data + if "bbox" in self.im_info: + tile = [("zip", self.im_info["bbox"], pos, self.im_rawmode)] + else: + if self.im_n_frames is not None: + self.im_info["default_image"] = True + tile = [("zip", (0, 0) + self.im_size, pos, self.im_rawmode)] + self.im_tile = tile + self.im_idat = length + raise EOFError + + def chunk_IEND(self, pos, length): + + # end of PNG image + raise EOFError + + def chunk_PLTE(self, pos, length): + + # palette + s = ImageFile._safe_read(self.fp, length) + if self.im_mode == "P": + self.im_palette = "RGB", s + return s + + def chunk_tRNS(self, pos, length): + + # transparency + s = ImageFile._safe_read(self.fp, length) + if self.im_mode == "P": + if _simple_palette.match(s): + # tRNS contains only one full-transparent entry, + # other entries are full opaque + i = s.find(b"\0") + if i >= 0: + self.im_info["transparency"] = i + else: + # otherwise, we have a byte string with one alpha value + # for each palette entry + self.im_info["transparency"] = s + elif self.im_mode in ("1", "L", "I"): + self.im_info["transparency"] = i16(s) + elif self.im_mode == "RGB": + self.im_info["transparency"] = i16(s), i16(s[2:]), i16(s[4:]) + return s + + def chunk_gAMA(self, pos, length): + # gamma setting + s = ImageFile._safe_read(self.fp, length) + self.im_info["gamma"] = i32(s) / 100000.0 + return s + + def chunk_cHRM(self, pos, length): + # chromaticity, 8 unsigned ints, actual value is scaled by 100,000 + # WP x,y, Red x,y, Green x,y Blue x,y + + s = ImageFile._safe_read(self.fp, length) + raw_vals = struct.unpack(">%dI" % (len(s) // 4), s) + self.im_info["chromaticity"] = tuple(elt / 100000.0 for elt in raw_vals) + return s + + def chunk_sRGB(self, pos, length): + # srgb rendering intent, 1 byte + # 0 perceptual + # 1 relative colorimetric + # 2 saturation + # 3 absolute colorimetric + + s = ImageFile._safe_read(self.fp, length) + self.im_info["srgb"] = i8(s) + return s + + def chunk_pHYs(self, pos, length): + + # pixels per unit + s = ImageFile._safe_read(self.fp, length) + px, py = i32(s), i32(s[4:]) + unit = i8(s[8]) + if unit == 1: # meter + dpi = int(px * 0.0254 + 0.5), int(py * 0.0254 + 0.5) + self.im_info["dpi"] = dpi + elif unit == 0: + self.im_info["aspect"] = px, py + return s + + def chunk_tEXt(self, pos, length): + + # text + s = ImageFile._safe_read(self.fp, length) + try: + k, v = s.split(b"\0", 1) + except ValueError: + # fallback for broken tEXt tags + k = s + v = b"" + if k: + k = k.decode("latin-1", "strict") + v = v.decode("latin-1", "replace") + + self.im_info[k] = self.im_text[k] = v + self.check_text_memory(len(v)) + + return s + + def chunk_zTXt(self, pos, length): + + # compressed text + s = ImageFile._safe_read(self.fp, length) + try: + k, v = s.split(b"\0", 1) + except ValueError: + k = s + v = b"" + if v: + comp_method = i8(v[0]) + else: + comp_method = 0 + if comp_method != 0: + raise SyntaxError( + "Unknown compression method %s in zTXt chunk" % comp_method + ) + try: + v = _safe_zlib_decompress(v[1:]) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + v = b"" + else: + raise + except zlib.error: + v = b"" + + if k: + k = k.decode("latin-1", "strict") + v = v.decode("latin-1", "replace") + + self.im_info[k] = self.im_text[k] = v + self.check_text_memory(len(v)) + + return s + + def chunk_iTXt(self, pos, length): + + # international text + r = s = ImageFile._safe_read(self.fp, length) + try: + k, r = r.split(b"\0", 1) + except ValueError: + return s + if len(r) < 2: + return s + cf, cm, r = i8(r[0]), i8(r[1]), r[2:] + try: + lang, tk, v = r.split(b"\0", 2) + except ValueError: + return s + if cf != 0: + if cm == 0: + try: + v = _safe_zlib_decompress(v) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + else: + raise + except zlib.error: + return s + else: + return s + try: + k = k.decode("latin-1", "strict") + lang = lang.decode("utf-8", "strict") + tk = tk.decode("utf-8", "strict") + v = v.decode("utf-8", "strict") + except UnicodeError: + return s + + self.im_info[k] = self.im_text[k] = iTXt(v, lang, tk) + self.check_text_memory(len(v)) + + return s + + def chunk_eXIf(self, pos, length): + s = ImageFile._safe_read(self.fp, length) + self.im_info["exif"] = b"Exif\x00\x00" + s + return s + + # APNG chunks + def chunk_acTL(self, pos, length): + s = ImageFile._safe_read(self.fp, length) + if self.im_n_frames is not None: + self.im_n_frames = None + warnings.warn("Invalid APNG, will use default PNG image if possible") + return s + n_frames = i32(s) + if n_frames == 0 or n_frames > 0x80000000: + warnings.warn("Invalid APNG, will use default PNG image if possible") + return s + self.im_n_frames = n_frames + self.im_info["loop"] = i32(s[4:]) + self.im_custom_mimetype = "image/apng" + return s + + def chunk_fcTL(self, pos, length): + s = ImageFile._safe_read(self.fp, length) + seq = i32(s) + if (self._seq_num is None and seq != 0) or ( + self._seq_num is not None and self._seq_num != seq - 1 + ): + raise SyntaxError("APNG contains frame sequence errors") + self._seq_num = seq + width, height = i32(s[4:]), i32(s[8:]) + px, py = i32(s[12:]), i32(s[16:]) + im_w, im_h = self.im_size + if px + width > im_w or py + height > im_h: + raise SyntaxError("APNG contains invalid frames") + self.im_info["bbox"] = (px, py, px + width, py + height) + delay_num, delay_den = i16(s[20:]), i16(s[22:]) + if delay_den == 0: + delay_den = 100 + self.im_info["duration"] = float(delay_num) / float(delay_den) * 1000 + self.im_info["disposal"] = i8(s[24]) + self.im_info["blend"] = i8(s[25]) + return s + + def chunk_fdAT(self, pos, length): + s = ImageFile._safe_read(self.fp, 4) + seq = i32(s) + if self._seq_num != seq - 1: + raise SyntaxError("APNG contains frame sequence errors") + self._seq_num = seq + return self.chunk_IDAT(pos + 4, length - 4) + + +# -------------------------------------------------------------------- +# PNG reader + + +def _accept(prefix): + return prefix[:8] == _MAGIC + + +## +# Image plugin for PNG images. + + +class PngImageFile(ImageFile.ImageFile): + + format = "PNG" + format_description = "Portable network graphics" + + def _open(self): + + if not _accept(self.fp.read(8)): + raise SyntaxError("not a PNG file") + self.__fp = self.fp + self.__frame = 0 + + # + # Parse headers up to the first IDAT or fDAT chunk + + self.png = PngStream(self.fp) + + while True: + + # + # get next chunk + + cid, pos, length = self.png.read() + + try: + s = self.png.call(cid, pos, length) + except EOFError: + break + except AttributeError: + logger.debug("%r %s %s (unknown)", cid, pos, length) + s = ImageFile._safe_read(self.fp, length) + + self.png.crc(cid, s) + + # + # Copy relevant attributes from the PngStream. An alternative + # would be to let the PngStream class modify these attributes + # directly, but that introduces circular references which are + # difficult to break if things go wrong in the decoder... + # (believe me, I've tried ;-) + + self.mode = self.png.im_mode + self._size = self.png.im_size + self.info = self.png.im_info + self._text = None + self.tile = self.png.im_tile + self.custom_mimetype = self.png.im_custom_mimetype + self.n_frames = self.png.im_n_frames or 1 + self.default_image = self.info.get("default_image", False) + + if self.png.im_palette: + rawmode, data = self.png.im_palette + self.palette = ImagePalette.raw(rawmode, data) + + if cid == b"fdAT": + self.__prepare_idat = length - 4 + else: + self.__prepare_idat = length # used by load_prepare() + + if self.png.im_n_frames is not None: + self._close_exclusive_fp_after_loading = False + self.png.save_rewind() + self.__rewind_idat = self.__prepare_idat + self.__rewind = self.__fp.tell() + if self.default_image: + # IDAT chunk contains default image and not first animation frame + self.n_frames += 1 + self._seek(0) + self.is_animated = self.n_frames > 1 + + @property + def text(self): + # experimental + if self._text is None: + # iTxt, tEXt and zTXt chunks may appear at the end of the file + # So load the file to ensure that they are read + if self.is_animated: + frame = self.__frame + # for APNG, seek to the final frame before loading + self.seek(self.n_frames - 1) + self.load() + if self.is_animated: + self.seek(frame) + return self._text + + def verify(self): + """Verify PNG file""" + + if self.fp is None: + raise RuntimeError("verify must be called directly after open") + + # back up to beginning of IDAT block + self.fp.seek(self.tile[0][2] - 8) + + self.png.verify() + self.png.close() + + if self._exclusive_fp: + self.fp.close() + self.fp = None + + def seek(self, frame): + if not self._seek_check(frame): + return + if frame < self.__frame: + self._seek(0, True) + + last_frame = self.__frame + for f in range(self.__frame + 1, frame + 1): + try: + self._seek(f) + except EOFError as e: + self.seek(last_frame) + raise EOFError("no more images in APNG file") from e + + def _seek(self, frame, rewind=False): + if frame == 0: + if rewind: + self.__fp.seek(self.__rewind) + self.png.rewind() + self.__prepare_idat = self.__rewind_idat + self.im = None + if self.pyaccess: + self.pyaccess = None + self.info = self.png.im_info + self.tile = self.png.im_tile + self.fp = self.__fp + self._prev_im = None + self.dispose = None + self.default_image = self.info.get("default_image", False) + self.dispose_op = self.info.get("disposal") + self.blend_op = self.info.get("blend") + self.dispose_extent = self.info.get("bbox") + self.__frame = 0 + return + else: + if frame != self.__frame + 1: + raise ValueError("cannot seek to frame %d" % frame) + + # ensure previous frame was loaded + self.load() + + self.fp = self.__fp + + # advance to the next frame + if self.__prepare_idat: + ImageFile._safe_read(self.fp, self.__prepare_idat) + self.__prepare_idat = 0 + frame_start = False + while True: + self.fp.read(4) # CRC + + try: + cid, pos, length = self.png.read() + except (struct.error, SyntaxError): + break + + if cid == b"IEND": + raise EOFError("No more images in APNG file") + if cid == b"fcTL": + if frame_start: + # there must be at least one fdAT chunk between fcTL chunks + raise SyntaxError("APNG missing frame data") + frame_start = True + + try: + self.png.call(cid, pos, length) + except UnicodeDecodeError: + break + except EOFError: + if cid == b"fdAT": + length -= 4 + if frame_start: + self.__prepare_idat = length + break + ImageFile._safe_read(self.fp, length) + except AttributeError: + logger.debug("%r %s %s (unknown)", cid, pos, length) + ImageFile._safe_read(self.fp, length) + + self.__frame = frame + self.tile = self.png.im_tile + self.dispose_op = self.info.get("disposal") + self.blend_op = self.info.get("blend") + self.dispose_extent = self.info.get("bbox") + + if not self.tile: + raise EOFError + + def tell(self): + return self.__frame + + def load_prepare(self): + """internal: prepare to read PNG file""" + + if self.info.get("interlace"): + self.decoderconfig = self.decoderconfig + (1,) + + self.__idat = self.__prepare_idat # used by load_read() + ImageFile.ImageFile.load_prepare(self) + + def load_read(self, read_bytes): + """internal: read more image data""" + + while self.__idat == 0: + # end of chunk, skip forward to next one + + self.fp.read(4) # CRC + + cid, pos, length = self.png.read() + + if cid not in [b"IDAT", b"DDAT", b"fdAT"]: + self.png.push(cid, pos, length) + return b"" + + if cid == b"fdAT": + try: + self.png.call(cid, pos, length) + except EOFError: + pass + self.__idat = length - 4 # sequence_num has already been read + else: + self.__idat = length # empty chunks are allowed + + # read more data from this chunk + if read_bytes <= 0: + read_bytes = self.__idat + else: + read_bytes = min(read_bytes, self.__idat) + + self.__idat = self.__idat - read_bytes + + return self.fp.read(read_bytes) + + def load_end(self): + """internal: finished reading image data""" + while True: + self.fp.read(4) # CRC + + try: + cid, pos, length = self.png.read() + except (struct.error, SyntaxError): + break + + if cid == b"IEND": + break + elif cid == b"fcTL" and self.is_animated: + # start of the next frame, stop reading + self.__prepare_idat = 0 + self.png.push(cid, pos, length) + break + + try: + self.png.call(cid, pos, length) + except UnicodeDecodeError: + break + except EOFError: + if cid == b"fdAT": + length -= 4 + ImageFile._safe_read(self.fp, length) + except AttributeError: + logger.debug("%r %s %s (unknown)", cid, pos, length) + ImageFile._safe_read(self.fp, length) + self._text = self.png.im_text + if not self.is_animated: + self.png.close() + self.png = None + else: + # setup frame disposal (actual disposal done when needed in _seek()) + if self._prev_im is None and self.dispose_op == APNG_DISPOSE_OP_PREVIOUS: + self.dispose_op = APNG_DISPOSE_OP_BACKGROUND + + if self.dispose_op == APNG_DISPOSE_OP_PREVIOUS: + dispose = self._prev_im.copy() + dispose = self._crop(dispose, self.dispose_extent) + elif self.dispose_op == APNG_DISPOSE_OP_BACKGROUND: + dispose = Image.core.fill(self.im.mode, self.size) + dispose = self._crop(dispose, self.dispose_extent) + else: + dispose = None + + if self._prev_im and self.blend_op == APNG_BLEND_OP_OVER: + updated = self._crop(self.im, self.dispose_extent) + self._prev_im.paste( + updated, self.dispose_extent, updated.convert("RGBA") + ) + self.im = self._prev_im + if self.pyaccess: + self.pyaccess = None + self._prev_im = self.im.copy() + + if dispose: + self._prev_im.paste(dispose, self.dispose_extent) + + def _getexif(self): + if "exif" not in self.info: + self.load() + if "exif" not in self.info and "Raw profile type exif" not in self.info: + return None + return dict(self.getexif()) + + def getexif(self): + if "exif" not in self.info: + self.load() + + return super().getexif() + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +# -------------------------------------------------------------------- +# PNG writer + +_OUTMODES = { + # supported PIL modes, and corresponding rawmodes/bits/color combinations + "1": ("1", b"\x01\x00"), + "L;1": ("L;1", b"\x01\x00"), + "L;2": ("L;2", b"\x02\x00"), + "L;4": ("L;4", b"\x04\x00"), + "L": ("L", b"\x08\x00"), + "LA": ("LA", b"\x08\x04"), + "I": ("I;16B", b"\x10\x00"), + "I;16": ("I;16B", b"\x10\x00"), + "P;1": ("P;1", b"\x01\x03"), + "P;2": ("P;2", b"\x02\x03"), + "P;4": ("P;4", b"\x04\x03"), + "P": ("P", b"\x08\x03"), + "RGB": ("RGB", b"\x08\x02"), + "RGBA": ("RGBA", b"\x08\x06"), +} + + +def putchunk(fp, cid, *data): + """Write a PNG chunk (including CRC field)""" + + data = b"".join(data) + + fp.write(o32(len(data)) + cid) + fp.write(data) + crc = _crc32(data, _crc32(cid)) + fp.write(o32(crc)) + + +class _idat: + # wrap output from the encoder in IDAT chunks + + def __init__(self, fp, chunk): + self.fp = fp + self.chunk = chunk + + def write(self, data): + self.chunk(self.fp, b"IDAT", data) + + +class _fdat: + # wrap encoder output in fdAT chunks + + def __init__(self, fp, chunk, seq_num): + self.fp = fp + self.chunk = chunk + self.seq_num = seq_num + + def write(self, data): + self.chunk(self.fp, b"fdAT", o32(self.seq_num), data) + self.seq_num += 1 + + +def _write_multiple_frames(im, fp, chunk, rawmode): + default_image = im.encoderinfo.get("default_image", im.info.get("default_image")) + duration = im.encoderinfo.get("duration", im.info.get("duration", 0)) + loop = im.encoderinfo.get("loop", im.info.get("loop", 0)) + disposal = im.encoderinfo.get("disposal", im.info.get("disposal")) + blend = im.encoderinfo.get("blend", im.info.get("blend")) + + if default_image: + chain = itertools.chain(im.encoderinfo.get("append_images", [])) + else: + chain = itertools.chain([im], im.encoderinfo.get("append_images", [])) + + im_frames = [] + frame_count = 0 + for im_seq in chain: + for im_frame in ImageSequence.Iterator(im_seq): + im_frame = im_frame.copy() + if im_frame.mode != im.mode: + if im.mode == "P": + im_frame = im_frame.convert(im.mode, palette=im.palette) + else: + im_frame = im_frame.convert(im.mode) + encoderinfo = im.encoderinfo.copy() + if isinstance(duration, (list, tuple)): + encoderinfo["duration"] = duration[frame_count] + if isinstance(disposal, (list, tuple)): + encoderinfo["disposal"] = disposal[frame_count] + if isinstance(blend, (list, tuple)): + encoderinfo["blend"] = blend[frame_count] + frame_count += 1 + + if im_frames: + previous = im_frames[-1] + prev_disposal = previous["encoderinfo"].get("disposal") + prev_blend = previous["encoderinfo"].get("blend") + if prev_disposal == APNG_DISPOSE_OP_PREVIOUS and len(im_frames) < 2: + prev_disposal = APNG_DISPOSE_OP_BACKGROUND + + if prev_disposal == APNG_DISPOSE_OP_BACKGROUND: + base_im = previous["im"] + dispose = Image.core.fill("RGBA", im.size, (0, 0, 0, 0)) + bbox = previous["bbox"] + if bbox: + dispose = dispose.crop(bbox) + else: + bbox = (0, 0) + im.size + base_im.paste(dispose, bbox) + elif prev_disposal == APNG_DISPOSE_OP_PREVIOUS: + base_im = im_frames[-2]["im"] + else: + base_im = previous["im"] + delta = ImageChops.subtract_modulo( + im_frame.convert("RGB"), base_im.convert("RGB") + ) + bbox = delta.getbbox() + if ( + not bbox + and prev_disposal == encoderinfo.get("disposal") + and prev_blend == encoderinfo.get("blend") + ): + duration = encoderinfo.get("duration", 0) + if duration: + if "duration" in previous["encoderinfo"]: + previous["encoderinfo"]["duration"] += duration + else: + previous["encoderinfo"]["duration"] = duration + continue + else: + bbox = None + im_frames.append({"im": im_frame, "bbox": bbox, "encoderinfo": encoderinfo}) + + # animation control + chunk( + fp, b"acTL", o32(len(im_frames)), o32(loop), # 0: num_frames # 4: num_plays + ) + + # default image IDAT (if it exists) + if default_image: + ImageFile._save(im, _idat(fp, chunk), [("zip", (0, 0) + im.size, 0, rawmode)]) + + seq_num = 0 + for frame, frame_data in enumerate(im_frames): + im_frame = frame_data["im"] + if not frame_data["bbox"]: + bbox = (0, 0) + im_frame.size + else: + bbox = frame_data["bbox"] + im_frame = im_frame.crop(bbox) + size = im_frame.size + duration = int(round(frame_data["encoderinfo"].get("duration", 0))) + disposal = frame_data["encoderinfo"].get("disposal", APNG_DISPOSE_OP_NONE) + blend = frame_data["encoderinfo"].get("blend", APNG_BLEND_OP_SOURCE) + # frame control + chunk( + fp, + b"fcTL", + o32(seq_num), # sequence_number + o32(size[0]), # width + o32(size[1]), # height + o32(bbox[0]), # x_offset + o32(bbox[1]), # y_offset + o16(duration), # delay_numerator + o16(1000), # delay_denominator + o8(disposal), # dispose_op + o8(blend), # blend_op + ) + seq_num += 1 + # frame data + if frame == 0 and not default_image: + # first frame must be in IDAT chunks for backwards compatibility + ImageFile._save( + im_frame, + _idat(fp, chunk), + [("zip", (0, 0) + im_frame.size, 0, rawmode)], + ) + else: + fdat_chunks = _fdat(fp, chunk, seq_num) + ImageFile._save( + im_frame, fdat_chunks, [("zip", (0, 0) + im_frame.size, 0, rawmode)], + ) + seq_num = fdat_chunks.seq_num + + +def _save_all(im, fp, filename): + _save(im, fp, filename, save_all=True) + + +def _save(im, fp, filename, chunk=putchunk, save_all=False): + # save an image to disk (called by the save method) + + mode = im.mode + + if mode == "P": + + # + # attempt to minimize storage requirements for palette images + if "bits" in im.encoderinfo: + # number of bits specified by user + colors = 1 << im.encoderinfo["bits"] + else: + # check palette contents + if im.palette: + colors = max(min(len(im.palette.getdata()[1]) // 3, 256), 2) + else: + colors = 256 + + if colors <= 2: + bits = 1 + elif colors <= 4: + bits = 2 + elif colors <= 16: + bits = 4 + else: + bits = 8 + if bits != 8: + mode = "%s;%d" % (mode, bits) + + # encoder options + im.encoderconfig = ( + im.encoderinfo.get("optimize", False), + im.encoderinfo.get("compress_level", -1), + im.encoderinfo.get("compress_type", -1), + im.encoderinfo.get("dictionary", b""), + ) + + # get the corresponding PNG mode + try: + rawmode, mode = _OUTMODES[mode] + except KeyError as e: + raise OSError("cannot write mode %s as PNG" % mode) from e + + # + # write minimal PNG file + + fp.write(_MAGIC) + + chunk( + fp, + b"IHDR", + o32(im.size[0]), # 0: size + o32(im.size[1]), + mode, # 8: depth/type + b"\0", # 10: compression + b"\0", # 11: filter category + b"\0", # 12: interlace flag + ) + + chunks = [b"cHRM", b"gAMA", b"sBIT", b"sRGB", b"tIME"] + + icc = im.encoderinfo.get("icc_profile", im.info.get("icc_profile")) + if icc: + # ICC profile + # according to PNG spec, the iCCP chunk contains: + # Profile name 1-79 bytes (character string) + # Null separator 1 byte (null character) + # Compression method 1 byte (0) + # Compressed profile n bytes (zlib with deflate compression) + name = b"ICC Profile" + data = name + b"\0\0" + zlib.compress(icc) + chunk(fp, b"iCCP", data) + + # You must either have sRGB or iCCP. + # Disallow sRGB chunks when an iCCP-chunk has been emitted. + chunks.remove(b"sRGB") + + info = im.encoderinfo.get("pnginfo") + if info: + chunks_multiple_allowed = [b"sPLT", b"iTXt", b"tEXt", b"zTXt"] + for cid, data in info.chunks: + if cid in chunks: + chunks.remove(cid) + chunk(fp, cid, data) + elif cid in chunks_multiple_allowed: + chunk(fp, cid, data) + + if im.mode == "P": + palette_byte_number = (2 ** bits) * 3 + palette_bytes = im.im.getpalette("RGB")[:palette_byte_number] + while len(palette_bytes) < palette_byte_number: + palette_bytes += b"\0" + chunk(fp, b"PLTE", palette_bytes) + + transparency = im.encoderinfo.get("transparency", im.info.get("transparency", None)) + + if transparency or transparency == 0: + if im.mode == "P": + # limit to actual palette size + alpha_bytes = 2 ** bits + if isinstance(transparency, bytes): + chunk(fp, b"tRNS", transparency[:alpha_bytes]) + else: + transparency = max(0, min(255, transparency)) + alpha = b"\xFF" * transparency + b"\0" + chunk(fp, b"tRNS", alpha[:alpha_bytes]) + elif im.mode in ("1", "L", "I"): + transparency = max(0, min(65535, transparency)) + chunk(fp, b"tRNS", o16(transparency)) + elif im.mode == "RGB": + red, green, blue = transparency + chunk(fp, b"tRNS", o16(red) + o16(green) + o16(blue)) + else: + if "transparency" in im.encoderinfo: + # don't bother with transparency if it's an RGBA + # and it's in the info dict. It's probably just stale. + raise OSError("cannot use transparency for this mode") + else: + if im.mode == "P" and im.im.getpalettemode() == "RGBA": + alpha = im.im.getpalette("RGBA", "A") + alpha_bytes = 2 ** bits + chunk(fp, b"tRNS", alpha[:alpha_bytes]) + + dpi = im.encoderinfo.get("dpi") + if dpi: + chunk( + fp, + b"pHYs", + o32(int(dpi[0] / 0.0254 + 0.5)), + o32(int(dpi[1] / 0.0254 + 0.5)), + b"\x01", + ) + + if info: + chunks = [b"bKGD", b"hIST"] + for cid, data in info.chunks: + if cid in chunks: + chunks.remove(cid) + chunk(fp, cid, data) + + exif = im.encoderinfo.get("exif", im.info.get("exif")) + if exif: + if isinstance(exif, Image.Exif): + exif = exif.tobytes(8) + if exif.startswith(b"Exif\x00\x00"): + exif = exif[6:] + chunk(fp, b"eXIf", exif) + + if save_all: + _write_multiple_frames(im, fp, chunk, rawmode) + else: + ImageFile._save(im, _idat(fp, chunk), [("zip", (0, 0) + im.size, 0, rawmode)]) + + chunk(fp, b"IEND", b"") + + if hasattr(fp, "flush"): + fp.flush() + + +# -------------------------------------------------------------------- +# PNG chunk converter + + +def getchunks(im, **params): + """Return a list of PNG chunks representing this image.""" + + class collector: + data = [] + + def write(self, data): + pass + + def append(self, chunk): + self.data.append(chunk) + + def append(fp, cid, *data): + data = b"".join(data) + crc = o32(_crc32(data, _crc32(cid))) + fp.append((cid, data, crc)) + + fp = collector() + + try: + im.encoderinfo = params + _save(im, fp, None, append) + finally: + del im.encoderinfo + + return fp.data + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(PngImageFile.format, PngImageFile, _accept) +Image.register_save(PngImageFile.format, _save) +Image.register_save_all(PngImageFile.format, _save_all) + +Image.register_extensions(PngImageFile.format, [".png", ".apng"]) + +Image.register_mime(PngImageFile.format, "image/png") diff --git a/venv/Lib/site-packages/PIL/PpmImagePlugin.py b/venv/Lib/site-packages/PIL/PpmImagePlugin.py new file mode 100644 index 00000000..35a77baf --- /dev/null +++ b/venv/Lib/site-packages/PIL/PpmImagePlugin.py @@ -0,0 +1,164 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PPM support for PIL +# +# History: +# 96-03-24 fl Created +# 98-03-06 fl Write RGBA images (as RGB, that is) +# +# Copyright (c) Secret Labs AB 1997-98. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + + +from . import Image, ImageFile + +# +# -------------------------------------------------------------------- + +b_whitespace = b"\x20\x09\x0a\x0b\x0c\x0d" + +MODES = { + # standard + b"P4": "1", + b"P5": "L", + b"P6": "RGB", + # extensions + b"P0CMYK": "CMYK", + # PIL extensions (for test purposes only) + b"PyP": "P", + b"PyRGBA": "RGBA", + b"PyCMYK": "CMYK", +} + + +def _accept(prefix): + return prefix[0:1] == b"P" and prefix[1] in b"0456y" + + +## +# Image plugin for PBM, PGM, and PPM images. + + +class PpmImageFile(ImageFile.ImageFile): + + format = "PPM" + format_description = "Pbmplus image" + + def _token(self, s=b""): + while True: # read until next whitespace + c = self.fp.read(1) + if not c or c in b_whitespace: + break + if c > b"\x79": + raise ValueError("Expected ASCII value, found binary") + s = s + c + if len(s) > 9: + raise ValueError("Expected int, got > 9 digits") + return s + + def _open(self): + + # check magic + s = self.fp.read(1) + if s != b"P": + raise SyntaxError("not a PPM file") + magic_number = self._token(s) + mode = MODES[magic_number] + + self.custom_mimetype = { + b"P4": "image/x-portable-bitmap", + b"P5": "image/x-portable-graymap", + b"P6": "image/x-portable-pixmap", + }.get(magic_number) + + if mode == "1": + self.mode = "1" + rawmode = "1;I" + else: + self.mode = rawmode = mode + + for ix in range(3): + while True: + while True: + s = self.fp.read(1) + if s not in b_whitespace: + break + if s == b"": + raise ValueError("File does not extend beyond magic number") + if s != b"#": + break + s = self.fp.readline() + s = int(self._token(s)) + if ix == 0: + xsize = s + elif ix == 1: + ysize = s + if mode == "1": + break + elif ix == 2: + # maxgrey + if s > 255: + if not mode == "L": + raise ValueError("Too many colors for band: %s" % s) + if s < 2 ** 16: + self.mode = "I" + rawmode = "I;16B" + else: + self.mode = "I" + rawmode = "I;32B" + + self._size = xsize, ysize + self.tile = [("raw", (0, 0, xsize, ysize), self.fp.tell(), (rawmode, 0, 1))] + + +# +# -------------------------------------------------------------------- + + +def _save(im, fp, filename): + if im.mode == "1": + rawmode, head = "1;I", b"P4" + elif im.mode == "L": + rawmode, head = "L", b"P5" + elif im.mode == "I": + if im.getextrema()[1] < 2 ** 16: + rawmode, head = "I;16B", b"P5" + else: + rawmode, head = "I;32B", b"P5" + elif im.mode == "RGB": + rawmode, head = "RGB", b"P6" + elif im.mode == "RGBA": + rawmode, head = "RGB", b"P6" + else: + raise OSError("cannot write mode %s as PPM" % im.mode) + fp.write(head + ("\n%d %d\n" % im.size).encode("ascii")) + if head == b"P6": + fp.write(b"255\n") + if head == b"P5": + if rawmode == "L": + fp.write(b"255\n") + elif rawmode == "I;16B": + fp.write(b"65535\n") + elif rawmode == "I;32B": + fp.write(b"2147483648\n") + ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, 0, 1))]) + + # ALTERNATIVE: save via builtin debug function + # im._dump(filename) + + +# +# -------------------------------------------------------------------- + + +Image.register_open(PpmImageFile.format, PpmImageFile, _accept) +Image.register_save(PpmImageFile.format, _save) + +Image.register_extensions(PpmImageFile.format, [".pbm", ".pgm", ".ppm", ".pnm"]) + +Image.register_mime(PpmImageFile.format, "image/x-portable-anymap") diff --git a/venv/Lib/site-packages/PIL/PsdImagePlugin.py b/venv/Lib/site-packages/PIL/PsdImagePlugin.py new file mode 100644 index 00000000..f019bb64 --- /dev/null +++ b/venv/Lib/site-packages/PIL/PsdImagePlugin.py @@ -0,0 +1,309 @@ +# +# The Python Imaging Library +# $Id$ +# +# Adobe PSD 2.5/3.0 file handling +# +# History: +# 1995-09-01 fl Created +# 1997-01-03 fl Read most PSD images +# 1997-01-18 fl Fixed P and CMYK support +# 2001-10-21 fl Added seek/tell support (for layers) +# +# Copyright (c) 1997-2001 by Secret Labs AB. +# Copyright (c) 1995-2001 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import io + +from . import Image, ImageFile, ImagePalette +from ._binary import i8, i16be as i16, i32be as i32 + +MODES = { + # (photoshop mode, bits) -> (pil mode, required channels) + (0, 1): ("1", 1), + (0, 8): ("L", 1), + (1, 8): ("L", 1), + (2, 8): ("P", 1), + (3, 8): ("RGB", 3), + (4, 8): ("CMYK", 4), + (7, 8): ("L", 1), # FIXME: multilayer + (8, 8): ("L", 1), # duotone + (9, 8): ("LAB", 3), +} + + +# --------------------------------------------------------------------. +# read PSD images + + +def _accept(prefix): + return prefix[:4] == b"8BPS" + + +## +# Image plugin for Photoshop images. + + +class PsdImageFile(ImageFile.ImageFile): + + format = "PSD" + format_description = "Adobe Photoshop" + _close_exclusive_fp_after_loading = False + + def _open(self): + + read = self.fp.read + + # + # header + + s = read(26) + if not _accept(s) or i16(s[4:]) != 1: + raise SyntaxError("not a PSD file") + + psd_bits = i16(s[22:]) + psd_channels = i16(s[12:]) + psd_mode = i16(s[24:]) + + mode, channels = MODES[(psd_mode, psd_bits)] + + if channels > psd_channels: + raise OSError("not enough channels") + + self.mode = mode + self._size = i32(s[18:]), i32(s[14:]) + + # + # color mode data + + size = i32(read(4)) + if size: + data = read(size) + if mode == "P" and size == 768: + self.palette = ImagePalette.raw("RGB;L", data) + + # + # image resources + + self.resources = [] + + size = i32(read(4)) + if size: + # load resources + end = self.fp.tell() + size + while self.fp.tell() < end: + read(4) # signature + id = i16(read(2)) + name = read(i8(read(1))) + if not (len(name) & 1): + read(1) # padding + data = read(i32(read(4))) + if len(data) & 1: + read(1) # padding + self.resources.append((id, name, data)) + if id == 1039: # ICC profile + self.info["icc_profile"] = data + + # + # layer and mask information + + self.layers = [] + + size = i32(read(4)) + if size: + end = self.fp.tell() + size + size = i32(read(4)) + if size: + self.layers = _layerinfo(self.fp) + self.fp.seek(end) + self.n_frames = len(self.layers) + self.is_animated = self.n_frames > 1 + + # + # image descriptor + + self.tile = _maketile(self.fp, mode, (0, 0) + self.size, channels) + + # keep the file open + self.__fp = self.fp + self.frame = 1 + self._min_frame = 1 + + def seek(self, layer): + if not self._seek_check(layer): + return + + # seek to given layer (1..max) + try: + name, mode, bbox, tile = self.layers[layer - 1] + self.mode = mode + self.tile = tile + self.frame = layer + self.fp = self.__fp + return name, bbox + except IndexError as e: + raise EOFError("no such layer") from e + + def tell(self): + # return layer number (0=image, 1..max=layers) + return self.frame + + def load_prepare(self): + # create image memory if necessary + if not self.im or self.im.mode != self.mode or self.im.size != self.size: + self.im = Image.core.fill(self.mode, self.size, 0) + # create palette (optional) + if self.mode == "P": + Image.Image.load(self) + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +def _layerinfo(file): + # read layerinfo block + layers = [] + read = file.read + for i in range(abs(i16(read(2)))): + + # bounding box + y0 = i32(read(4)) + x0 = i32(read(4)) + y1 = i32(read(4)) + x1 = i32(read(4)) + + # image info + info = [] + mode = [] + types = list(range(i16(read(2)))) + if len(types) > 4: + continue + + for i in types: + type = i16(read(2)) + + if type == 65535: + m = "A" + else: + m = "RGBA"[type] + + mode.append(m) + size = i32(read(4)) + info.append((m, size)) + + # figure out the image mode + mode.sort() + if mode == ["R"]: + mode = "L" + elif mode == ["B", "G", "R"]: + mode = "RGB" + elif mode == ["A", "B", "G", "R"]: + mode = "RGBA" + else: + mode = None # unknown + + # skip over blend flags and extra information + read(12) # filler + name = "" + size = i32(read(4)) # length of the extra data field + combined = 0 + if size: + data_end = file.tell() + size + + length = i32(read(4)) + if length: + file.seek(length - 16, io.SEEK_CUR) + combined += length + 4 + + length = i32(read(4)) + if length: + file.seek(length, io.SEEK_CUR) + combined += length + 4 + + length = i8(read(1)) + if length: + # Don't know the proper encoding, + # Latin-1 should be a good guess + name = read(length).decode("latin-1", "replace") + combined += length + 1 + + file.seek(data_end) + layers.append((name, mode, (x0, y0, x1, y1))) + + # get tiles + i = 0 + for name, mode, bbox in layers: + tile = [] + for m in mode: + t = _maketile(file, m, bbox, 1) + if t: + tile.extend(t) + layers[i] = name, mode, bbox, tile + i += 1 + + return layers + + +def _maketile(file, mode, bbox, channels): + + tile = None + read = file.read + + compression = i16(read(2)) + + xsize = bbox[2] - bbox[0] + ysize = bbox[3] - bbox[1] + + offset = file.tell() + + if compression == 0: + # + # raw compression + tile = [] + for channel in range(channels): + layer = mode[channel] + if mode == "CMYK": + layer += ";I" + tile.append(("raw", bbox, offset, layer)) + offset = offset + xsize * ysize + + elif compression == 1: + # + # packbits compression + i = 0 + tile = [] + bytecount = read(channels * ysize * 2) + offset = file.tell() + for channel in range(channels): + layer = mode[channel] + if mode == "CMYK": + layer += ";I" + tile.append(("packbits", bbox, offset, layer)) + for y in range(ysize): + offset = offset + i16(bytecount[i : i + 2]) + i += 2 + + file.seek(offset) + + if offset & 1: + read(1) # padding + + return tile + + +# -------------------------------------------------------------------- +# registry + + +Image.register_open(PsdImageFile.format, PsdImageFile, _accept) + +Image.register_extension(PsdImageFile.format, ".psd") diff --git a/venv/Lib/site-packages/PIL/PyAccess.py b/venv/Lib/site-packages/PIL/PyAccess.py new file mode 100644 index 00000000..494f5f9f --- /dev/null +++ b/venv/Lib/site-packages/PIL/PyAccess.py @@ -0,0 +1,352 @@ +# +# The Python Imaging Library +# Pillow fork +# +# Python implementation of the PixelAccess Object +# +# Copyright (c) 1997-2009 by Secret Labs AB. All rights reserved. +# Copyright (c) 1995-2009 by Fredrik Lundh. +# Copyright (c) 2013 Eric Soroos +# +# See the README file for information on usage and redistribution +# + +# Notes: +# +# * Implements the pixel access object following Access. +# * Does not implement the line functions, as they don't appear to be used +# * Taking only the tuple form, which is used from python. +# * Fill.c uses the integer form, but it's still going to use the old +# Access.c implementation. +# + +import logging +import sys + +try: + from cffi import FFI + + defs = """ + struct Pixel_RGBA { + unsigned char r,g,b,a; + }; + struct Pixel_I16 { + unsigned char l,r; + }; + """ + ffi = FFI() + ffi.cdef(defs) +except ImportError as ex: + # Allow error import for doc purposes, but error out when accessing + # anything in core. + from ._util import deferred_error + + FFI = ffi = deferred_error(ex) + +logger = logging.getLogger(__name__) + + +class PyAccess: + def __init__(self, img, readonly=False): + vals = dict(img.im.unsafe_ptrs) + self.readonly = readonly + self.image8 = ffi.cast("unsigned char **", vals["image8"]) + self.image32 = ffi.cast("int **", vals["image32"]) + self.image = ffi.cast("unsigned char **", vals["image"]) + self.xsize, self.ysize = img.im.size + + # Keep pointer to im object to prevent dereferencing. + self._im = img.im + if self._im.mode == "P": + self._palette = img.palette + + # Debugging is polluting test traces, only useful here + # when hacking on PyAccess + # logger.debug("%s", vals) + self._post_init() + + def _post_init(self): + pass + + def __setitem__(self, xy, color): + """ + Modifies the pixel at x,y. The color is given as a single + numerical value for single band images, and a tuple for + multi-band images + + :param xy: The pixel coordinate, given as (x, y). See + :ref:`coordinate-system`. + :param color: The pixel value. + """ + if self.readonly: + raise ValueError("Attempt to putpixel a read only image") + (x, y) = xy + if x < 0: + x = self.xsize + x + if y < 0: + y = self.ysize + y + (x, y) = self.check_xy((x, y)) + + if ( + self._im.mode == "P" + and isinstance(color, (list, tuple)) + and len(color) in [3, 4] + ): + # RGB or RGBA value for a P image + color = self._palette.getcolor(color) + + return self.set_pixel(x, y, color) + + def __getitem__(self, xy): + """ + Returns the pixel at x,y. The pixel is returned as a single + value for single band images or a tuple for multiple band + images + + :param xy: The pixel coordinate, given as (x, y). See + :ref:`coordinate-system`. + :returns: a pixel value for single band images, a tuple of + pixel values for multiband images. + """ + (x, y) = xy + if x < 0: + x = self.xsize + x + if y < 0: + y = self.ysize + y + (x, y) = self.check_xy((x, y)) + return self.get_pixel(x, y) + + putpixel = __setitem__ + getpixel = __getitem__ + + def check_xy(self, xy): + (x, y) = xy + if not (0 <= x < self.xsize and 0 <= y < self.ysize): + raise ValueError("pixel location out of range") + return xy + + +class _PyAccess32_2(PyAccess): + """ PA, LA, stored in first and last bytes of a 32 bit word """ + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("struct Pixel_RGBA **", self.image32) + + def get_pixel(self, x, y): + pixel = self.pixels[y][x] + return (pixel.r, pixel.a) + + def set_pixel(self, x, y, color): + pixel = self.pixels[y][x] + # tuple + pixel.r = min(color[0], 255) + pixel.a = min(color[1], 255) + + +class _PyAccess32_3(PyAccess): + """ RGB and friends, stored in the first three bytes of a 32 bit word """ + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("struct Pixel_RGBA **", self.image32) + + def get_pixel(self, x, y): + pixel = self.pixels[y][x] + return (pixel.r, pixel.g, pixel.b) + + def set_pixel(self, x, y, color): + pixel = self.pixels[y][x] + # tuple + pixel.r = min(color[0], 255) + pixel.g = min(color[1], 255) + pixel.b = min(color[2], 255) + pixel.a = 255 + + +class _PyAccess32_4(PyAccess): + """ RGBA etc, all 4 bytes of a 32 bit word """ + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("struct Pixel_RGBA **", self.image32) + + def get_pixel(self, x, y): + pixel = self.pixels[y][x] + return (pixel.r, pixel.g, pixel.b, pixel.a) + + def set_pixel(self, x, y, color): + pixel = self.pixels[y][x] + # tuple + pixel.r = min(color[0], 255) + pixel.g = min(color[1], 255) + pixel.b = min(color[2], 255) + pixel.a = min(color[3], 255) + + +class _PyAccess8(PyAccess): + """ 1, L, P, 8 bit images stored as uint8 """ + + def _post_init(self, *args, **kwargs): + self.pixels = self.image8 + + def get_pixel(self, x, y): + return self.pixels[y][x] + + def set_pixel(self, x, y, color): + try: + # integer + self.pixels[y][x] = min(color, 255) + except TypeError: + # tuple + self.pixels[y][x] = min(color[0], 255) + + +class _PyAccessI16_N(PyAccess): + """ I;16 access, native bitendian without conversion """ + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("unsigned short **", self.image) + + def get_pixel(self, x, y): + return self.pixels[y][x] + + def set_pixel(self, x, y, color): + try: + # integer + self.pixels[y][x] = min(color, 65535) + except TypeError: + # tuple + self.pixels[y][x] = min(color[0], 65535) + + +class _PyAccessI16_L(PyAccess): + """ I;16L access, with conversion """ + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("struct Pixel_I16 **", self.image) + + def get_pixel(self, x, y): + pixel = self.pixels[y][x] + return pixel.l + pixel.r * 256 + + def set_pixel(self, x, y, color): + pixel = self.pixels[y][x] + try: + color = min(color, 65535) + except TypeError: + color = min(color[0], 65535) + + pixel.l = color & 0xFF # noqa: E741 + pixel.r = color >> 8 + + +class _PyAccessI16_B(PyAccess): + """ I;16B access, with conversion """ + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("struct Pixel_I16 **", self.image) + + def get_pixel(self, x, y): + pixel = self.pixels[y][x] + return pixel.l * 256 + pixel.r + + def set_pixel(self, x, y, color): + pixel = self.pixels[y][x] + try: + color = min(color, 65535) + except Exception: + color = min(color[0], 65535) + + pixel.l = color >> 8 # noqa: E741 + pixel.r = color & 0xFF + + +class _PyAccessI32_N(PyAccess): + """ Signed Int32 access, native endian """ + + def _post_init(self, *args, **kwargs): + self.pixels = self.image32 + + def get_pixel(self, x, y): + return self.pixels[y][x] + + def set_pixel(self, x, y, color): + self.pixels[y][x] = color + + +class _PyAccessI32_Swap(PyAccess): + """ I;32L/B access, with byteswapping conversion """ + + def _post_init(self, *args, **kwargs): + self.pixels = self.image32 + + def reverse(self, i): + orig = ffi.new("int *", i) + chars = ffi.cast("unsigned char *", orig) + chars[0], chars[1], chars[2], chars[3] = chars[3], chars[2], chars[1], chars[0] + return ffi.cast("int *", chars)[0] + + def get_pixel(self, x, y): + return self.reverse(self.pixels[y][x]) + + def set_pixel(self, x, y, color): + self.pixels[y][x] = self.reverse(color) + + +class _PyAccessF(PyAccess): + """ 32 bit float access """ + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("float **", self.image32) + + def get_pixel(self, x, y): + return self.pixels[y][x] + + def set_pixel(self, x, y, color): + try: + # not a tuple + self.pixels[y][x] = color + except TypeError: + # tuple + self.pixels[y][x] = color[0] + + +mode_map = { + "1": _PyAccess8, + "L": _PyAccess8, + "P": _PyAccess8, + "LA": _PyAccess32_2, + "La": _PyAccess32_2, + "PA": _PyAccess32_2, + "RGB": _PyAccess32_3, + "LAB": _PyAccess32_3, + "HSV": _PyAccess32_3, + "YCbCr": _PyAccess32_3, + "RGBA": _PyAccess32_4, + "RGBa": _PyAccess32_4, + "RGBX": _PyAccess32_4, + "CMYK": _PyAccess32_4, + "F": _PyAccessF, + "I": _PyAccessI32_N, +} + +if sys.byteorder == "little": + mode_map["I;16"] = _PyAccessI16_N + mode_map["I;16L"] = _PyAccessI16_N + mode_map["I;16B"] = _PyAccessI16_B + + mode_map["I;32L"] = _PyAccessI32_N + mode_map["I;32B"] = _PyAccessI32_Swap +else: + mode_map["I;16"] = _PyAccessI16_L + mode_map["I;16L"] = _PyAccessI16_L + mode_map["I;16B"] = _PyAccessI16_N + + mode_map["I;32L"] = _PyAccessI32_Swap + mode_map["I;32B"] = _PyAccessI32_N + + +def new(img, readonly=False): + access_type = mode_map.get(img.mode, None) + if not access_type: + logger.debug("PyAccess Not Implemented: %s", img.mode) + return None + return access_type(img, readonly) diff --git a/venv/Lib/site-packages/PIL/SgiImagePlugin.py b/venv/Lib/site-packages/PIL/SgiImagePlugin.py new file mode 100644 index 00000000..ec9855e7 --- /dev/null +++ b/venv/Lib/site-packages/PIL/SgiImagePlugin.py @@ -0,0 +1,230 @@ +# +# The Python Imaging Library. +# $Id$ +# +# SGI image file handling +# +# See "The SGI Image File Format (Draft version 0.97)", Paul Haeberli. +# +# +# +# History: +# 2017-22-07 mb Add RLE decompression +# 2016-16-10 mb Add save method without compression +# 1995-09-10 fl Created +# +# Copyright (c) 2016 by Mickael Bonfill. +# Copyright (c) 2008 by Karsten Hiddemann. +# Copyright (c) 1997 by Secret Labs AB. +# Copyright (c) 1995 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + + +import os +import struct + +from . import Image, ImageFile +from ._binary import i8, i16be as i16, o8 + + +def _accept(prefix): + return len(prefix) >= 2 and i16(prefix) == 474 + + +MODES = { + (1, 1, 1): "L", + (1, 2, 1): "L", + (2, 1, 1): "L;16B", + (2, 2, 1): "L;16B", + (1, 3, 3): "RGB", + (2, 3, 3): "RGB;16B", + (1, 3, 4): "RGBA", + (2, 3, 4): "RGBA;16B", +} + + +## +# Image plugin for SGI images. +class SgiImageFile(ImageFile.ImageFile): + + format = "SGI" + format_description = "SGI Image File Format" + + def _open(self): + + # HEAD + headlen = 512 + s = self.fp.read(headlen) + + if not _accept(s): + raise ValueError("Not an SGI image file") + + # compression : verbatim or RLE + compression = i8(s[2]) + + # bpc : 1 or 2 bytes (8bits or 16bits) + bpc = i8(s[3]) + + # dimension : 1, 2 or 3 (depending on xsize, ysize and zsize) + dimension = i16(s[4:]) + + # xsize : width + xsize = i16(s[6:]) + + # ysize : height + ysize = i16(s[8:]) + + # zsize : channels count + zsize = i16(s[10:]) + + # layout + layout = bpc, dimension, zsize + + # determine mode from bits/zsize + rawmode = "" + try: + rawmode = MODES[layout] + except KeyError: + pass + + if rawmode == "": + raise ValueError("Unsupported SGI image mode") + + self._size = xsize, ysize + self.mode = rawmode.split(";")[0] + if self.mode == "RGB": + self.custom_mimetype = "image/rgb" + + # orientation -1 : scanlines begins at the bottom-left corner + orientation = -1 + + # decoder info + if compression == 0: + pagesize = xsize * ysize * bpc + if bpc == 2: + self.tile = [ + ("SGI16", (0, 0) + self.size, headlen, (self.mode, 0, orientation)) + ] + else: + self.tile = [] + offset = headlen + for layer in self.mode: + self.tile.append( + ("raw", (0, 0) + self.size, offset, (layer, 0, orientation)) + ) + offset += pagesize + elif compression == 1: + self.tile = [ + ("sgi_rle", (0, 0) + self.size, headlen, (rawmode, orientation, bpc)) + ] + + +def _save(im, fp, filename): + if im.mode != "RGB" and im.mode != "RGBA" and im.mode != "L": + raise ValueError("Unsupported SGI image mode") + + # Get the keyword arguments + info = im.encoderinfo + + # Byte-per-pixel precision, 1 = 8bits per pixel + bpc = info.get("bpc", 1) + + if bpc not in (1, 2): + raise ValueError("Unsupported number of bytes per pixel") + + # Flip the image, since the origin of SGI file is the bottom-left corner + orientation = -1 + # Define the file as SGI File Format + magicNumber = 474 + # Run-Length Encoding Compression - Unsupported at this time + rle = 0 + + # Number of dimensions (x,y,z) + dim = 3 + # X Dimension = width / Y Dimension = height + x, y = im.size + if im.mode == "L" and y == 1: + dim = 1 + elif im.mode == "L": + dim = 2 + # Z Dimension: Number of channels + z = len(im.mode) + + if dim == 1 or dim == 2: + z = 1 + + # assert we've got the right number of bands. + if len(im.getbands()) != z: + raise ValueError( + "incorrect number of bands in SGI write: {} vs {}".format( + z, len(im.getbands()) + ) + ) + + # Minimum Byte value + pinmin = 0 + # Maximum Byte value (255 = 8bits per pixel) + pinmax = 255 + # Image name (79 characters max, truncated below in write) + imgName = os.path.splitext(os.path.basename(filename))[0] + imgName = imgName.encode("ascii", "ignore") + # Standard representation of pixel in the file + colormap = 0 + fp.write(struct.pack(">h", magicNumber)) + fp.write(o8(rle)) + fp.write(o8(bpc)) + fp.write(struct.pack(">H", dim)) + fp.write(struct.pack(">H", x)) + fp.write(struct.pack(">H", y)) + fp.write(struct.pack(">H", z)) + fp.write(struct.pack(">l", pinmin)) + fp.write(struct.pack(">l", pinmax)) + fp.write(struct.pack("4s", b"")) # dummy + fp.write(struct.pack("79s", imgName)) # truncates to 79 chars + fp.write(struct.pack("s", b"")) # force null byte after imgname + fp.write(struct.pack(">l", colormap)) + fp.write(struct.pack("404s", b"")) # dummy + + rawmode = "L" + if bpc == 2: + rawmode = "L;16B" + + for channel in im.split(): + fp.write(channel.tobytes("raw", rawmode, 0, orientation)) + + fp.close() + + +class SGI16Decoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer): + rawmode, stride, orientation = self.args + pagesize = self.state.xsize * self.state.ysize + zsize = len(self.mode) + self.fd.seek(512) + + for band in range(zsize): + channel = Image.new("L", (self.state.xsize, self.state.ysize)) + channel.frombytes( + self.fd.read(2 * pagesize), "raw", "L;16B", stride, orientation + ) + self.im.putband(channel.im, band) + + return -1, 0 + + +# +# registry + + +Image.register_decoder("SGI16", SGI16Decoder) +Image.register_open(SgiImageFile.format, SgiImageFile, _accept) +Image.register_save(SgiImageFile.format, _save) +Image.register_mime(SgiImageFile.format, "image/sgi") + +Image.register_extensions(SgiImageFile.format, [".bw", ".rgb", ".rgba", ".sgi"]) + +# End of file diff --git a/venv/Lib/site-packages/PIL/SpiderImagePlugin.py b/venv/Lib/site-packages/PIL/SpiderImagePlugin.py new file mode 100644 index 00000000..56aac298 --- /dev/null +++ b/venv/Lib/site-packages/PIL/SpiderImagePlugin.py @@ -0,0 +1,324 @@ +# +# The Python Imaging Library. +# +# SPIDER image file handling +# +# History: +# 2004-08-02 Created BB +# 2006-03-02 added save method +# 2006-03-13 added support for stack images +# +# Copyright (c) 2004 by Health Research Inc. (HRI) RENSSELAER, NY 12144. +# Copyright (c) 2004 by William Baxter. +# Copyright (c) 2004 by Secret Labs AB. +# Copyright (c) 2004 by Fredrik Lundh. +# + +## +# Image plugin for the Spider image format. This format is is used +# by the SPIDER software, in processing image data from electron +# microscopy and tomography. +## + +# +# SpiderImagePlugin.py +# +# The Spider image format is used by SPIDER software, in processing +# image data from electron microscopy and tomography. +# +# Spider home page: +# https://spider.wadsworth.org/spider_doc/spider/docs/spider.html +# +# Details about the Spider image format: +# https://spider.wadsworth.org/spider_doc/spider/docs/image_doc.html +# +import os +import struct +import sys + +from PIL import Image, ImageFile + + +def isInt(f): + try: + i = int(f) + if f - i == 0: + return 1 + else: + return 0 + except (ValueError, OverflowError): + return 0 + + +iforms = [1, 3, -11, -12, -21, -22] + + +# There is no magic number to identify Spider files, so just check a +# series of header locations to see if they have reasonable values. +# Returns no. of bytes in the header, if it is a valid Spider header, +# otherwise returns 0 + + +def isSpiderHeader(t): + h = (99,) + t # add 1 value so can use spider header index start=1 + # header values 1,2,5,12,13,22,23 should be integers + for i in [1, 2, 5, 12, 13, 22, 23]: + if not isInt(h[i]): + return 0 + # check iform + iform = int(h[5]) + if iform not in iforms: + return 0 + # check other header values + labrec = int(h[13]) # no. records in file header + labbyt = int(h[22]) # total no. of bytes in header + lenbyt = int(h[23]) # record length in bytes + if labbyt != (labrec * lenbyt): + return 0 + # looks like a valid header + return labbyt + + +def isSpiderImage(filename): + with open(filename, "rb") as fp: + f = fp.read(92) # read 23 * 4 bytes + t = struct.unpack(">23f", f) # try big-endian first + hdrlen = isSpiderHeader(t) + if hdrlen == 0: + t = struct.unpack("<23f", f) # little-endian + hdrlen = isSpiderHeader(t) + return hdrlen + + +class SpiderImageFile(ImageFile.ImageFile): + + format = "SPIDER" + format_description = "Spider 2D image" + _close_exclusive_fp_after_loading = False + + def _open(self): + # check header + n = 27 * 4 # read 27 float values + f = self.fp.read(n) + + try: + self.bigendian = 1 + t = struct.unpack(">27f", f) # try big-endian first + hdrlen = isSpiderHeader(t) + if hdrlen == 0: + self.bigendian = 0 + t = struct.unpack("<27f", f) # little-endian + hdrlen = isSpiderHeader(t) + if hdrlen == 0: + raise SyntaxError("not a valid Spider file") + except struct.error as e: + raise SyntaxError("not a valid Spider file") from e + + h = (99,) + t # add 1 value : spider header index starts at 1 + iform = int(h[5]) + if iform != 1: + raise SyntaxError("not a Spider 2D image") + + self._size = int(h[12]), int(h[2]) # size in pixels (width, height) + self.istack = int(h[24]) + self.imgnumber = int(h[27]) + + if self.istack == 0 and self.imgnumber == 0: + # stk=0, img=0: a regular 2D image + offset = hdrlen + self._nimages = 1 + elif self.istack > 0 and self.imgnumber == 0: + # stk>0, img=0: Opening the stack for the first time + self.imgbytes = int(h[12]) * int(h[2]) * 4 + self.hdrlen = hdrlen + self._nimages = int(h[26]) + # Point to the first image in the stack + offset = hdrlen * 2 + self.imgnumber = 1 + elif self.istack == 0 and self.imgnumber > 0: + # stk=0, img>0: an image within the stack + offset = hdrlen + self.stkoffset + self.istack = 2 # So Image knows it's still a stack + else: + raise SyntaxError("inconsistent stack header values") + + if self.bigendian: + self.rawmode = "F;32BF" + else: + self.rawmode = "F;32F" + self.mode = "F" + + self.tile = [("raw", (0, 0) + self.size, offset, (self.rawmode, 0, 1))] + self.__fp = self.fp # FIXME: hack + + @property + def n_frames(self): + return self._nimages + + @property + def is_animated(self): + return self._nimages > 1 + + # 1st image index is zero (although SPIDER imgnumber starts at 1) + def tell(self): + if self.imgnumber < 1: + return 0 + else: + return self.imgnumber - 1 + + def seek(self, frame): + if self.istack == 0: + raise EOFError("attempt to seek in a non-stack file") + if not self._seek_check(frame): + return + self.stkoffset = self.hdrlen + frame * (self.hdrlen + self.imgbytes) + self.fp = self.__fp + self.fp.seek(self.stkoffset) + self._open() + + # returns a byte image after rescaling to 0..255 + def convert2byte(self, depth=255): + (minimum, maximum) = self.getextrema() + m = 1 + if maximum != minimum: + m = depth / (maximum - minimum) + b = -m * minimum + return self.point(lambda i, m=m, b=b: i * m + b).convert("L") + + # returns a ImageTk.PhotoImage object, after rescaling to 0..255 + def tkPhotoImage(self): + from PIL import ImageTk + + return ImageTk.PhotoImage(self.convert2byte(), palette=256) + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +# -------------------------------------------------------------------- +# Image series + +# given a list of filenames, return a list of images +def loadImageSeries(filelist=None): + """create a list of :py:class:`~PIL.Image.Image` objects for use in a montage""" + if filelist is None or len(filelist) < 1: + return + + imglist = [] + for img in filelist: + if not os.path.exists(img): + print("unable to find %s" % img) + continue + try: + with Image.open(img) as im: + im = im.convert2byte() + except Exception: + if not isSpiderImage(img): + print(img + " is not a Spider image file") + continue + im.info["filename"] = img + imglist.append(im) + return imglist + + +# -------------------------------------------------------------------- +# For saving images in Spider format + + +def makeSpiderHeader(im): + nsam, nrow = im.size + lenbyt = nsam * 4 # There are labrec records in the header + labrec = int(1024 / lenbyt) + if 1024 % lenbyt != 0: + labrec += 1 + labbyt = labrec * lenbyt + hdr = [] + nvalues = int(labbyt / 4) + for i in range(nvalues): + hdr.append(0.0) + + if len(hdr) < 23: + return [] + + # NB these are Fortran indices + hdr[1] = 1.0 # nslice (=1 for an image) + hdr[2] = float(nrow) # number of rows per slice + hdr[5] = 1.0 # iform for 2D image + hdr[12] = float(nsam) # number of pixels per line + hdr[13] = float(labrec) # number of records in file header + hdr[22] = float(labbyt) # total number of bytes in header + hdr[23] = float(lenbyt) # record length in bytes + + # adjust for Fortran indexing + hdr = hdr[1:] + hdr.append(0.0) + # pack binary data into a string + hdrstr = [] + for v in hdr: + hdrstr.append(struct.pack("f", v)) + return hdrstr + + +def _save(im, fp, filename): + if im.mode[0] != "F": + im = im.convert("F") + + hdr = makeSpiderHeader(im) + if len(hdr) < 256: + raise OSError("Error creating Spider header") + + # write the SPIDER header + fp.writelines(hdr) + + rawmode = "F;32NF" # 32-bit native floating point + ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, 0, 1))]) + + +def _save_spider(im, fp, filename): + # get the filename extension and register it with Image + ext = os.path.splitext(filename)[1] + Image.register_extension(SpiderImageFile.format, ext) + _save(im, fp, filename) + + +# -------------------------------------------------------------------- + + +Image.register_open(SpiderImageFile.format, SpiderImageFile) +Image.register_save(SpiderImageFile.format, _save_spider) + +if __name__ == "__main__": + + if len(sys.argv) < 2: + print("Syntax: python SpiderImagePlugin.py [infile] [outfile]") + sys.exit() + + filename = sys.argv[1] + if not isSpiderImage(filename): + print("input image must be in Spider format") + sys.exit() + + with Image.open(filename) as im: + print("image: " + str(im)) + print("format: " + str(im.format)) + print("size: " + str(im.size)) + print("mode: " + str(im.mode)) + print("max, min: ", end=" ") + print(im.getextrema()) + + if len(sys.argv) > 2: + outfile = sys.argv[2] + + # perform some image operation + im = im.transpose(Image.FLIP_LEFT_RIGHT) + print( + "saving a flipped version of %s as %s " + % (os.path.basename(filename), outfile) + ) + im.save(outfile, SpiderImageFile.format) diff --git a/venv/Lib/site-packages/PIL/SunImagePlugin.py b/venv/Lib/site-packages/PIL/SunImagePlugin.py new file mode 100644 index 00000000..d9988429 --- /dev/null +++ b/venv/Lib/site-packages/PIL/SunImagePlugin.py @@ -0,0 +1,136 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Sun image file handling +# +# History: +# 1995-09-10 fl Created +# 1996-05-28 fl Fixed 32-bit alignment +# 1998-12-29 fl Import ImagePalette module +# 2001-12-18 fl Fixed palette loading (from Jean-Claude Rimbault) +# +# Copyright (c) 1997-2001 by Secret Labs AB +# Copyright (c) 1995-1996 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + + +from . import Image, ImageFile, ImagePalette +from ._binary import i32be as i32 + + +def _accept(prefix): + return len(prefix) >= 4 and i32(prefix) == 0x59A66A95 + + +## +# Image plugin for Sun raster files. + + +class SunImageFile(ImageFile.ImageFile): + + format = "SUN" + format_description = "Sun Raster File" + + def _open(self): + + # The Sun Raster file header is 32 bytes in length + # and has the following format: + + # typedef struct _SunRaster + # { + # DWORD MagicNumber; /* Magic (identification) number */ + # DWORD Width; /* Width of image in pixels */ + # DWORD Height; /* Height of image in pixels */ + # DWORD Depth; /* Number of bits per pixel */ + # DWORD Length; /* Size of image data in bytes */ + # DWORD Type; /* Type of raster file */ + # DWORD ColorMapType; /* Type of color map */ + # DWORD ColorMapLength; /* Size of the color map in bytes */ + # } SUNRASTER; + + # HEAD + s = self.fp.read(32) + if not _accept(s): + raise SyntaxError("not an SUN raster file") + + offset = 32 + + self._size = i32(s[4:8]), i32(s[8:12]) + + depth = i32(s[12:16]) + # data_length = i32(s[16:20]) # unreliable, ignore. + file_type = i32(s[20:24]) + palette_type = i32(s[24:28]) # 0: None, 1: RGB, 2: Raw/arbitrary + palette_length = i32(s[28:32]) + + if depth == 1: + self.mode, rawmode = "1", "1;I" + elif depth == 4: + self.mode, rawmode = "L", "L;4" + elif depth == 8: + self.mode = rawmode = "L" + elif depth == 24: + if file_type == 3: + self.mode, rawmode = "RGB", "RGB" + else: + self.mode, rawmode = "RGB", "BGR" + elif depth == 32: + if file_type == 3: + self.mode, rawmode = "RGB", "RGBX" + else: + self.mode, rawmode = "RGB", "BGRX" + else: + raise SyntaxError("Unsupported Mode/Bit Depth") + + if palette_length: + if palette_length > 1024: + raise SyntaxError("Unsupported Color Palette Length") + + if palette_type != 1: + raise SyntaxError("Unsupported Palette Type") + + offset = offset + palette_length + self.palette = ImagePalette.raw("RGB;L", self.fp.read(palette_length)) + if self.mode == "L": + self.mode = "P" + rawmode = rawmode.replace("L", "P") + + # 16 bit boundaries on stride + stride = ((self.size[0] * depth + 15) // 16) * 2 + + # file type: Type is the version (or flavor) of the bitmap + # file. The following values are typically found in the Type + # field: + # 0000h Old + # 0001h Standard + # 0002h Byte-encoded + # 0003h RGB format + # 0004h TIFF format + # 0005h IFF format + # FFFFh Experimental + + # Old and standard are the same, except for the length tag. + # byte-encoded is run-length-encoded + # RGB looks similar to standard, but RGB byte order + # TIFF and IFF mean that they were converted from T/IFF + # Experimental means that it's something else. + # (https://www.fileformat.info/format/sunraster/egff.htm) + + if file_type in (0, 1, 3, 4, 5): + self.tile = [("raw", (0, 0) + self.size, offset, (rawmode, stride))] + elif file_type == 2: + self.tile = [("sun_rle", (0, 0) + self.size, offset, rawmode)] + else: + raise SyntaxError("Unsupported Sun Raster file type") + + +# +# registry + + +Image.register_open(SunImageFile.format, SunImageFile, _accept) + +Image.register_extension(SunImageFile.format, ".ras") diff --git a/venv/Lib/site-packages/PIL/TarIO.py b/venv/Lib/site-packages/PIL/TarIO.py new file mode 100644 index 00000000..d108362f --- /dev/null +++ b/venv/Lib/site-packages/PIL/TarIO.py @@ -0,0 +1,65 @@ +# +# The Python Imaging Library. +# $Id$ +# +# read files from within a tar file +# +# History: +# 95-06-18 fl Created +# 96-05-28 fl Open files in binary mode +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1995-96. +# +# See the README file for information on usage and redistribution. +# + +import io + +from . import ContainerIO + + +class TarIO(ContainerIO.ContainerIO): + """A file object that provides read access to a given member of a TAR file.""" + + def __init__(self, tarfile, file): + """ + Create file object. + + :param tarfile: Name of TAR file. + :param file: Name of member file. + """ + self.fh = open(tarfile, "rb") + + while True: + + s = self.fh.read(512) + if len(s) != 512: + raise OSError("unexpected end of tar file") + + name = s[:100].decode("utf-8") + i = name.find("\0") + if i == 0: + raise OSError("cannot find subfile") + if i > 0: + name = name[:i] + + size = int(s[124:135], 8) + + if file == name: + break + + self.fh.seek((size + 511) & (~511), io.SEEK_CUR) + + # Open region + super().__init__(self.fh, self.fh.tell(), size) + + # Context manager support + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + + def close(self): + self.fh.close() diff --git a/venv/Lib/site-packages/PIL/TgaImagePlugin.py b/venv/Lib/site-packages/PIL/TgaImagePlugin.py new file mode 100644 index 00000000..566f0ac1 --- /dev/null +++ b/venv/Lib/site-packages/PIL/TgaImagePlugin.py @@ -0,0 +1,246 @@ +# +# The Python Imaging Library. +# $Id$ +# +# TGA file handling +# +# History: +# 95-09-01 fl created (reads 24-bit files only) +# 97-01-04 fl support more TGA versions, including compressed images +# 98-07-04 fl fixed orientation and alpha layer bugs +# 98-09-11 fl fixed orientation for runlength decoder +# +# Copyright (c) Secret Labs AB 1997-98. +# Copyright (c) Fredrik Lundh 1995-97. +# +# See the README file for information on usage and redistribution. +# + + +import warnings + +from . import Image, ImageFile, ImagePalette +from ._binary import i8, i16le as i16, o8, o16le as o16 + +# +# -------------------------------------------------------------------- +# Read RGA file + + +MODES = { + # map imagetype/depth to rawmode + (1, 8): "P", + (3, 1): "1", + (3, 8): "L", + (3, 16): "LA", + (2, 16): "BGR;5", + (2, 24): "BGR", + (2, 32): "BGRA", +} + + +## +# Image plugin for Targa files. + + +class TgaImageFile(ImageFile.ImageFile): + + format = "TGA" + format_description = "Targa" + + def _open(self): + + # process header + s = self.fp.read(18) + + id_len = i8(s[0]) + + colormaptype = i8(s[1]) + imagetype = i8(s[2]) + + depth = i8(s[16]) + + flags = i8(s[17]) + + self._size = i16(s[12:]), i16(s[14:]) + + # validate header fields + if ( + colormaptype not in (0, 1) + or self.size[0] <= 0 + or self.size[1] <= 0 + or depth not in (1, 8, 16, 24, 32) + ): + raise SyntaxError("not a TGA file") + + # image mode + if imagetype in (3, 11): + self.mode = "L" + if depth == 1: + self.mode = "1" # ??? + elif depth == 16: + self.mode = "LA" + elif imagetype in (1, 9): + self.mode = "P" + elif imagetype in (2, 10): + self.mode = "RGB" + if depth == 32: + self.mode = "RGBA" + else: + raise SyntaxError("unknown TGA mode") + + # orientation + orientation = flags & 0x30 + if orientation == 0x20: + orientation = 1 + elif not orientation: + orientation = -1 + else: + raise SyntaxError("unknown TGA orientation") + + self.info["orientation"] = orientation + + if imagetype & 8: + self.info["compression"] = "tga_rle" + + if id_len: + self.info["id_section"] = self.fp.read(id_len) + + if colormaptype: + # read palette + start, size, mapdepth = i16(s[3:]), i16(s[5:]), i16(s[7:]) + if mapdepth == 16: + self.palette = ImagePalette.raw( + "BGR;16", b"\0" * 2 * start + self.fp.read(2 * size) + ) + elif mapdepth == 24: + self.palette = ImagePalette.raw( + "BGR", b"\0" * 3 * start + self.fp.read(3 * size) + ) + elif mapdepth == 32: + self.palette = ImagePalette.raw( + "BGRA", b"\0" * 4 * start + self.fp.read(4 * size) + ) + + # setup tile descriptor + try: + rawmode = MODES[(imagetype & 7, depth)] + if imagetype & 8: + # compressed + self.tile = [ + ( + "tga_rle", + (0, 0) + self.size, + self.fp.tell(), + (rawmode, orientation, depth), + ) + ] + else: + self.tile = [ + ( + "raw", + (0, 0) + self.size, + self.fp.tell(), + (rawmode, 0, orientation), + ) + ] + except KeyError: + pass # cannot decode + + +# +# -------------------------------------------------------------------- +# Write TGA file + + +SAVE = { + "1": ("1", 1, 0, 3), + "L": ("L", 8, 0, 3), + "LA": ("LA", 16, 0, 3), + "P": ("P", 8, 1, 1), + "RGB": ("BGR", 24, 0, 2), + "RGBA": ("BGRA", 32, 0, 2), +} + + +def _save(im, fp, filename): + + try: + rawmode, bits, colormaptype, imagetype = SAVE[im.mode] + except KeyError as e: + raise OSError("cannot write mode %s as TGA" % im.mode) from e + + if "rle" in im.encoderinfo: + rle = im.encoderinfo["rle"] + else: + compression = im.encoderinfo.get("compression", im.info.get("compression")) + rle = compression == "tga_rle" + if rle: + imagetype += 8 + + id_section = im.encoderinfo.get("id_section", im.info.get("id_section", "")) + id_len = len(id_section) + if id_len > 255: + id_len = 255 + id_section = id_section[:255] + warnings.warn("id_section has been trimmed to 255 characters") + + if colormaptype: + colormapfirst, colormaplength, colormapentry = 0, 256, 24 + else: + colormapfirst, colormaplength, colormapentry = 0, 0, 0 + + if im.mode in ("LA", "RGBA"): + flags = 8 + else: + flags = 0 + + orientation = im.encoderinfo.get("orientation", im.info.get("orientation", -1)) + if orientation > 0: + flags = flags | 0x20 + + fp.write( + o8(id_len) + + o8(colormaptype) + + o8(imagetype) + + o16(colormapfirst) + + o16(colormaplength) + + o8(colormapentry) + + o16(0) + + o16(0) + + o16(im.size[0]) + + o16(im.size[1]) + + o8(bits) + + o8(flags) + ) + + if id_section: + fp.write(id_section) + + if colormaptype: + fp.write(im.im.getpalette("RGB", "BGR")) + + if rle: + ImageFile._save( + im, fp, [("tga_rle", (0, 0) + im.size, 0, (rawmode, orientation))] + ) + else: + ImageFile._save( + im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, 0, orientation))] + ) + + # write targa version 2 footer + fp.write(b"\000" * 8 + b"TRUEVISION-XFILE." + b"\000") + + +# +# -------------------------------------------------------------------- +# Registry + + +Image.register_open(TgaImageFile.format, TgaImageFile) +Image.register_save(TgaImageFile.format, _save) + +Image.register_extensions(TgaImageFile.format, [".tga", ".icb", ".vda", ".vst"]) + +Image.register_mime(TgaImageFile.format, "image/x-tga") diff --git a/venv/Lib/site-packages/PIL/TiffImagePlugin.py b/venv/Lib/site-packages/PIL/TiffImagePlugin.py new file mode 100644 index 00000000..73e9a276 --- /dev/null +++ b/venv/Lib/site-packages/PIL/TiffImagePlugin.py @@ -0,0 +1,1891 @@ +# +# The Python Imaging Library. +# $Id$ +# +# TIFF file handling +# +# TIFF is a flexible, if somewhat aged, image file format originally +# defined by Aldus. Although TIFF supports a wide variety of pixel +# layouts and compression methods, the name doesn't really stand for +# "thousands of incompatible file formats," it just feels that way. +# +# To read TIFF data from a stream, the stream must be seekable. For +# progressive decoding, make sure to use TIFF files where the tag +# directory is placed first in the file. +# +# History: +# 1995-09-01 fl Created +# 1996-05-04 fl Handle JPEGTABLES tag +# 1996-05-18 fl Fixed COLORMAP support +# 1997-01-05 fl Fixed PREDICTOR support +# 1997-08-27 fl Added support for rational tags (from Perry Stoll) +# 1998-01-10 fl Fixed seek/tell (from Jan Blom) +# 1998-07-15 fl Use private names for internal variables +# 1999-06-13 fl Rewritten for PIL 1.0 (1.0) +# 2000-10-11 fl Additional fixes for Python 2.0 (1.1) +# 2001-04-17 fl Fixed rewind support (seek to frame 0) (1.2) +# 2001-05-12 fl Added write support for more tags (from Greg Couch) (1.3) +# 2001-12-18 fl Added workaround for broken Matrox library +# 2002-01-18 fl Don't mess up if photometric tag is missing (D. Alan Stewart) +# 2003-05-19 fl Check FILLORDER tag +# 2003-09-26 fl Added RGBa support +# 2004-02-24 fl Added DPI support; fixed rational write support +# 2005-02-07 fl Added workaround for broken Corel Draw 10 files +# 2006-01-09 fl Added support for float/double tags (from Russell Nelson) +# +# Copyright (c) 1997-2006 by Secret Labs AB. All rights reserved. +# Copyright (c) 1995-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +import io +import itertools +import logging +import os +import struct +import warnings +from collections.abc import MutableMapping +from fractions import Fraction +from numbers import Number, Rational + +from . import Image, ImageFile, ImagePalette, TiffTags +from ._binary import i8, o8 +from .TiffTags import TYPES + +logger = logging.getLogger(__name__) + +# Set these to true to force use of libtiff for reading or writing. +READ_LIBTIFF = False +WRITE_LIBTIFF = False +IFD_LEGACY_API = True + +II = b"II" # little-endian (Intel style) +MM = b"MM" # big-endian (Motorola style) + +# +# -------------------------------------------------------------------- +# Read TIFF files + +# a few tag names, just to make the code below a bit more readable +IMAGEWIDTH = 256 +IMAGELENGTH = 257 +BITSPERSAMPLE = 258 +COMPRESSION = 259 +PHOTOMETRIC_INTERPRETATION = 262 +FILLORDER = 266 +IMAGEDESCRIPTION = 270 +STRIPOFFSETS = 273 +SAMPLESPERPIXEL = 277 +ROWSPERSTRIP = 278 +STRIPBYTECOUNTS = 279 +X_RESOLUTION = 282 +Y_RESOLUTION = 283 +PLANAR_CONFIGURATION = 284 +RESOLUTION_UNIT = 296 +TRANSFERFUNCTION = 301 +SOFTWARE = 305 +DATE_TIME = 306 +ARTIST = 315 +PREDICTOR = 317 +COLORMAP = 320 +TILEOFFSETS = 324 +EXTRASAMPLES = 338 +SAMPLEFORMAT = 339 +JPEGTABLES = 347 +REFERENCEBLACKWHITE = 532 +COPYRIGHT = 33432 +IPTC_NAA_CHUNK = 33723 # newsphoto properties +PHOTOSHOP_CHUNK = 34377 # photoshop properties +ICCPROFILE = 34675 +EXIFIFD = 34665 +XMP = 700 +JPEGQUALITY = 65537 # pseudo-tag by libtiff + +# https://github.com/imagej/ImageJA/blob/master/src/main/java/ij/io/TiffDecoder.java +IMAGEJ_META_DATA_BYTE_COUNTS = 50838 +IMAGEJ_META_DATA = 50839 + +COMPRESSION_INFO = { + # Compression => pil compression name + 1: "raw", + 2: "tiff_ccitt", + 3: "group3", + 4: "group4", + 5: "tiff_lzw", + 6: "tiff_jpeg", # obsolete + 7: "jpeg", + 8: "tiff_adobe_deflate", + 32771: "tiff_raw_16", # 16-bit padding + 32773: "packbits", + 32809: "tiff_thunderscan", + 32946: "tiff_deflate", + 34676: "tiff_sgilog", + 34677: "tiff_sgilog24", + 34925: "lzma", + 50000: "zstd", + 50001: "webp", +} + +COMPRESSION_INFO_REV = {v: k for k, v in COMPRESSION_INFO.items()} + +OPEN_INFO = { + # (ByteOrder, PhotoInterpretation, SampleFormat, FillOrder, BitsPerSample, + # ExtraSamples) => mode, rawmode + (II, 0, (1,), 1, (1,), ()): ("1", "1;I"), + (MM, 0, (1,), 1, (1,), ()): ("1", "1;I"), + (II, 0, (1,), 2, (1,), ()): ("1", "1;IR"), + (MM, 0, (1,), 2, (1,), ()): ("1", "1;IR"), + (II, 1, (1,), 1, (1,), ()): ("1", "1"), + (MM, 1, (1,), 1, (1,), ()): ("1", "1"), + (II, 1, (1,), 2, (1,), ()): ("1", "1;R"), + (MM, 1, (1,), 2, (1,), ()): ("1", "1;R"), + (II, 0, (1,), 1, (2,), ()): ("L", "L;2I"), + (MM, 0, (1,), 1, (2,), ()): ("L", "L;2I"), + (II, 0, (1,), 2, (2,), ()): ("L", "L;2IR"), + (MM, 0, (1,), 2, (2,), ()): ("L", "L;2IR"), + (II, 1, (1,), 1, (2,), ()): ("L", "L;2"), + (MM, 1, (1,), 1, (2,), ()): ("L", "L;2"), + (II, 1, (1,), 2, (2,), ()): ("L", "L;2R"), + (MM, 1, (1,), 2, (2,), ()): ("L", "L;2R"), + (II, 0, (1,), 1, (4,), ()): ("L", "L;4I"), + (MM, 0, (1,), 1, (4,), ()): ("L", "L;4I"), + (II, 0, (1,), 2, (4,), ()): ("L", "L;4IR"), + (MM, 0, (1,), 2, (4,), ()): ("L", "L;4IR"), + (II, 1, (1,), 1, (4,), ()): ("L", "L;4"), + (MM, 1, (1,), 1, (4,), ()): ("L", "L;4"), + (II, 1, (1,), 2, (4,), ()): ("L", "L;4R"), + (MM, 1, (1,), 2, (4,), ()): ("L", "L;4R"), + (II, 0, (1,), 1, (8,), ()): ("L", "L;I"), + (MM, 0, (1,), 1, (8,), ()): ("L", "L;I"), + (II, 0, (1,), 2, (8,), ()): ("L", "L;IR"), + (MM, 0, (1,), 2, (8,), ()): ("L", "L;IR"), + (II, 1, (1,), 1, (8,), ()): ("L", "L"), + (MM, 1, (1,), 1, (8,), ()): ("L", "L"), + (II, 1, (1,), 2, (8,), ()): ("L", "L;R"), + (MM, 1, (1,), 2, (8,), ()): ("L", "L;R"), + (II, 1, (1,), 1, (12,), ()): ("I;16", "I;12"), + (II, 1, (1,), 1, (16,), ()): ("I;16", "I;16"), + (MM, 1, (1,), 1, (16,), ()): ("I;16B", "I;16B"), + (II, 1, (2,), 1, (16,), ()): ("I", "I;16S"), + (MM, 1, (2,), 1, (16,), ()): ("I", "I;16BS"), + (II, 0, (3,), 1, (32,), ()): ("F", "F;32F"), + (MM, 0, (3,), 1, (32,), ()): ("F", "F;32BF"), + (II, 1, (1,), 1, (32,), ()): ("I", "I;32N"), + (II, 1, (2,), 1, (32,), ()): ("I", "I;32S"), + (MM, 1, (2,), 1, (32,), ()): ("I", "I;32BS"), + (II, 1, (3,), 1, (32,), ()): ("F", "F;32F"), + (MM, 1, (3,), 1, (32,), ()): ("F", "F;32BF"), + (II, 1, (1,), 1, (8, 8), (2,)): ("LA", "LA"), + (MM, 1, (1,), 1, (8, 8), (2,)): ("LA", "LA"), + (II, 2, (1,), 1, (8, 8, 8), ()): ("RGB", "RGB"), + (MM, 2, (1,), 1, (8, 8, 8), ()): ("RGB", "RGB"), + (II, 2, (1,), 2, (8, 8, 8), ()): ("RGB", "RGB;R"), + (MM, 2, (1,), 2, (8, 8, 8), ()): ("RGB", "RGB;R"), + (II, 2, (1,), 1, (8, 8, 8, 8), ()): ("RGBA", "RGBA"), # missing ExtraSamples + (MM, 2, (1,), 1, (8, 8, 8, 8), ()): ("RGBA", "RGBA"), # missing ExtraSamples + (II, 2, (1,), 1, (8, 8, 8, 8), (0,)): ("RGBX", "RGBX"), + (MM, 2, (1,), 1, (8, 8, 8, 8), (0,)): ("RGBX", "RGBX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8), (0, 0)): ("RGBX", "RGBXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8), (0, 0)): ("RGBX", "RGBXX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0, 0)): ("RGBX", "RGBXXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0, 0)): ("RGBX", "RGBXXX"), + (II, 2, (1,), 1, (8, 8, 8, 8), (1,)): ("RGBA", "RGBa"), + (MM, 2, (1,), 1, (8, 8, 8, 8), (1,)): ("RGBA", "RGBa"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8), (1, 0)): ("RGBA", "RGBaX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8), (1, 0)): ("RGBA", "RGBaX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (1, 0, 0)): ("RGBA", "RGBaXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (1, 0, 0)): ("RGBA", "RGBaXX"), + (II, 2, (1,), 1, (8, 8, 8, 8), (2,)): ("RGBA", "RGBA"), + (MM, 2, (1,), 1, (8, 8, 8, 8), (2,)): ("RGBA", "RGBA"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8), (2, 0)): ("RGBA", "RGBAX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8), (2, 0)): ("RGBA", "RGBAX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (2, 0, 0)): ("RGBA", "RGBAXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (2, 0, 0)): ("RGBA", "RGBAXX"), + (II, 2, (1,), 1, (8, 8, 8, 8), (999,)): ("RGBA", "RGBA"), # Corel Draw 10 + (MM, 2, (1,), 1, (8, 8, 8, 8), (999,)): ("RGBA", "RGBA"), # Corel Draw 10 + (II, 2, (1,), 1, (16, 16, 16), ()): ("RGB", "RGB;16L"), + (MM, 2, (1,), 1, (16, 16, 16), ()): ("RGB", "RGB;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), ()): ("RGBA", "RGBA;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), ()): ("RGBA", "RGBA;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), (0,)): ("RGBX", "RGBX;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), (0,)): ("RGBX", "RGBX;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), (1,)): ("RGBA", "RGBa;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), (1,)): ("RGBA", "RGBa;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), (2,)): ("RGBA", "RGBA;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), (2,)): ("RGBA", "RGBA;16B"), + (II, 3, (1,), 1, (1,), ()): ("P", "P;1"), + (MM, 3, (1,), 1, (1,), ()): ("P", "P;1"), + (II, 3, (1,), 2, (1,), ()): ("P", "P;1R"), + (MM, 3, (1,), 2, (1,), ()): ("P", "P;1R"), + (II, 3, (1,), 1, (2,), ()): ("P", "P;2"), + (MM, 3, (1,), 1, (2,), ()): ("P", "P;2"), + (II, 3, (1,), 2, (2,), ()): ("P", "P;2R"), + (MM, 3, (1,), 2, (2,), ()): ("P", "P;2R"), + (II, 3, (1,), 1, (4,), ()): ("P", "P;4"), + (MM, 3, (1,), 1, (4,), ()): ("P", "P;4"), + (II, 3, (1,), 2, (4,), ()): ("P", "P;4R"), + (MM, 3, (1,), 2, (4,), ()): ("P", "P;4R"), + (II, 3, (1,), 1, (8,), ()): ("P", "P"), + (MM, 3, (1,), 1, (8,), ()): ("P", "P"), + (II, 3, (1,), 1, (8, 8), (2,)): ("PA", "PA"), + (MM, 3, (1,), 1, (8, 8), (2,)): ("PA", "PA"), + (II, 3, (1,), 2, (8,), ()): ("P", "P;R"), + (MM, 3, (1,), 2, (8,), ()): ("P", "P;R"), + (II, 5, (1,), 1, (8, 8, 8, 8), ()): ("CMYK", "CMYK"), + (MM, 5, (1,), 1, (8, 8, 8, 8), ()): ("CMYK", "CMYK"), + (II, 5, (1,), 1, (8, 8, 8, 8, 8), (0,)): ("CMYK", "CMYKX"), + (MM, 5, (1,), 1, (8, 8, 8, 8, 8), (0,)): ("CMYK", "CMYKX"), + (II, 5, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0)): ("CMYK", "CMYKXX"), + (MM, 5, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0)): ("CMYK", "CMYKXX"), + (II, 5, (1,), 1, (16, 16, 16, 16), ()): ("CMYK", "CMYK;16L"), + # JPEG compressed images handled by LibTiff and auto-converted to RGBX + # Minimal Baseline TIFF requires YCbCr images to have 3 SamplesPerPixel + (II, 6, (1,), 1, (8, 8, 8), ()): ("RGB", "RGBX"), + (MM, 6, (1,), 1, (8, 8, 8), ()): ("RGB", "RGBX"), + (II, 8, (1,), 1, (8, 8, 8), ()): ("LAB", "LAB"), + (MM, 8, (1,), 1, (8, 8, 8), ()): ("LAB", "LAB"), +} + +PREFIXES = [ + b"MM\x00\x2A", # Valid TIFF header with big-endian byte order + b"II\x2A\x00", # Valid TIFF header with little-endian byte order + b"MM\x2A\x00", # Invalid TIFF header, assume big-endian + b"II\x00\x2A", # Invalid TIFF header, assume little-endian +] + + +def _accept(prefix): + return prefix[:4] in PREFIXES + + +def _limit_rational(val, max_val): + inv = abs(val) > 1 + n_d = IFDRational(1 / val if inv else val).limit_rational(max_val) + return n_d[::-1] if inv else n_d + + +def _limit_signed_rational(val, max_val, min_val): + frac = Fraction(val) + n_d = frac.numerator, frac.denominator + + if min(n_d) < min_val: + n_d = _limit_rational(val, abs(min_val)) + + if max(n_d) > max_val: + val = Fraction(*n_d) + n_d = _limit_rational(val, max_val) + + return n_d + + +## +# Wrapper for TIFF IFDs. + +_load_dispatch = {} +_write_dispatch = {} + + +class IFDRational(Rational): + """ Implements a rational class where 0/0 is a legal value to match + the in the wild use of exif rationals. + + e.g., DigitalZoomRatio - 0.00/0.00 indicates that no digital zoom was used + """ + + """ If the denominator is 0, store this as a float('nan'), otherwise store + as a fractions.Fraction(). Delegate as appropriate + + """ + + __slots__ = ("_numerator", "_denominator", "_val") + + def __init__(self, value, denominator=1): + """ + :param value: either an integer numerator, a + float/rational/other number, or an IFDRational + :param denominator: Optional integer denominator + """ + if isinstance(value, IFDRational): + self._numerator = value.numerator + self._denominator = value.denominator + self._val = value._val + return + + if isinstance(value, Fraction): + self._numerator = value.numerator + self._denominator = value.denominator + else: + self._numerator = value + self._denominator = denominator + + if denominator == 0: + self._val = float("nan") + elif denominator == 1: + self._val = Fraction(value) + else: + self._val = Fraction(value, denominator) + + @property + def numerator(a): + return a._numerator + + @property + def denominator(a): + return a._denominator + + def limit_rational(self, max_denominator): + """ + + :param max_denominator: Integer, the maximum denominator value + :returns: Tuple of (numerator, denominator) + """ + + if self.denominator == 0: + return (self.numerator, self.denominator) + + f = self._val.limit_denominator(max_denominator) + return (f.numerator, f.denominator) + + def __repr__(self): + return str(float(self._val)) + + def __hash__(self): + return self._val.__hash__() + + def __eq__(self, other): + return self._val == other + + def _delegate(op): + def delegate(self, *args): + return getattr(self._val, op)(*args) + + return delegate + + """ a = ['add','radd', 'sub', 'rsub', 'mul', 'rmul', + 'truediv', 'rtruediv', 'floordiv', 'rfloordiv', + 'mod','rmod', 'pow','rpow', 'pos', 'neg', + 'abs', 'trunc', 'lt', 'gt', 'le', 'ge', 'bool', + 'ceil', 'floor', 'round'] + print("\n".join("__%s__ = _delegate('__%s__')" % (s,s) for s in a)) + """ + + __add__ = _delegate("__add__") + __radd__ = _delegate("__radd__") + __sub__ = _delegate("__sub__") + __rsub__ = _delegate("__rsub__") + __mul__ = _delegate("__mul__") + __rmul__ = _delegate("__rmul__") + __truediv__ = _delegate("__truediv__") + __rtruediv__ = _delegate("__rtruediv__") + __floordiv__ = _delegate("__floordiv__") + __rfloordiv__ = _delegate("__rfloordiv__") + __mod__ = _delegate("__mod__") + __rmod__ = _delegate("__rmod__") + __pow__ = _delegate("__pow__") + __rpow__ = _delegate("__rpow__") + __pos__ = _delegate("__pos__") + __neg__ = _delegate("__neg__") + __abs__ = _delegate("__abs__") + __trunc__ = _delegate("__trunc__") + __lt__ = _delegate("__lt__") + __gt__ = _delegate("__gt__") + __le__ = _delegate("__le__") + __ge__ = _delegate("__ge__") + __bool__ = _delegate("__bool__") + __ceil__ = _delegate("__ceil__") + __floor__ = _delegate("__floor__") + __round__ = _delegate("__round__") + + +class ImageFileDirectory_v2(MutableMapping): + """This class represents a TIFF tag directory. To speed things up, we + don't decode tags unless they're asked for. + + Exposes a dictionary interface of the tags in the directory:: + + ifd = ImageFileDirectory_v2() + ifd[key] = 'Some Data' + ifd.tagtype[key] = TiffTags.ASCII + print(ifd[key]) + 'Some Data' + + Individual values are returned as the strings or numbers, sequences are + returned as tuples of the values. + + The tiff metadata type of each item is stored in a dictionary of + tag types in + `~PIL.TiffImagePlugin.ImageFileDirectory_v2.tagtype`. The types + are read from a tiff file, guessed from the type added, or added + manually. + + Data Structures: + + * self.tagtype = {} + + * Key: numerical tiff tag number + * Value: integer corresponding to the data type from + ~PIL.TiffTags.TYPES` + + .. versionadded:: 3.0.0 + """ + + """ + Documentation: + + 'internal' data structures: + * self._tags_v2 = {} Key: numerical tiff tag number + Value: decoded data, as tuple for multiple values + * self._tagdata = {} Key: numerical tiff tag number + Value: undecoded byte string from file + * self._tags_v1 = {} Key: numerical tiff tag number + Value: decoded data in the v1 format + + Tags will be found in the private attributes self._tagdata, and in + self._tags_v2 once decoded. + + Self.legacy_api is a value for internal use, and shouldn't be + changed from outside code. In cooperation with the + ImageFileDirectory_v1 class, if legacy_api is true, then decoded + tags will be populated into both _tags_v1 and _tags_v2. _Tags_v2 + will be used if this IFD is used in the TIFF save routine. Tags + should be read from tags_v1 if legacy_api == true. + + """ + + def __init__(self, ifh=b"II\052\0\0\0\0\0", prefix=None): + """Initialize an ImageFileDirectory. + + To construct an ImageFileDirectory from a real file, pass the 8-byte + magic header to the constructor. To only set the endianness, pass it + as the 'prefix' keyword argument. + + :param ifh: One of the accepted magic headers (cf. PREFIXES); also sets + endianness. + :param prefix: Override the endianness of the file. + """ + if ifh[:4] not in PREFIXES: + raise SyntaxError("not a TIFF file (header %r not valid)" % ifh) + self._prefix = prefix if prefix is not None else ifh[:2] + if self._prefix == MM: + self._endian = ">" + elif self._prefix == II: + self._endian = "<" + else: + raise SyntaxError("not a TIFF IFD") + self.reset() + (self.next,) = self._unpack("L", ifh[4:]) + self._legacy_api = False + + prefix = property(lambda self: self._prefix) + offset = property(lambda self: self._offset) + legacy_api = property(lambda self: self._legacy_api) + + @legacy_api.setter + def legacy_api(self, value): + raise Exception("Not allowing setting of legacy api") + + def reset(self): + self._tags_v1 = {} # will remain empty if legacy_api is false + self._tags_v2 = {} # main tag storage + self._tagdata = {} + self.tagtype = {} # added 2008-06-05 by Florian Hoech + self._next = None + self._offset = None + + def __str__(self): + return str(dict(self)) + + def named(self): + """ + :returns: dict of name|key: value + + Returns the complete tag dictionary, with named tags where possible. + """ + return {TiffTags.lookup(code).name: value for code, value in self.items()} + + def __len__(self): + return len(set(self._tagdata) | set(self._tags_v2)) + + def __getitem__(self, tag): + if tag not in self._tags_v2: # unpack on the fly + data = self._tagdata[tag] + typ = self.tagtype[tag] + size, handler = self._load_dispatch[typ] + self[tag] = handler(self, data, self.legacy_api) # check type + val = self._tags_v2[tag] + if self.legacy_api and not isinstance(val, (tuple, bytes)): + val = (val,) + return val + + def __contains__(self, tag): + return tag in self._tags_v2 or tag in self._tagdata + + def __setitem__(self, tag, value): + self._setitem(tag, value, self.legacy_api) + + def _setitem(self, tag, value, legacy_api): + basetypes = (Number, bytes, str) + + info = TiffTags.lookup(tag) + values = [value] if isinstance(value, basetypes) else value + + if tag not in self.tagtype: + if info.type: + self.tagtype[tag] = info.type + else: + self.tagtype[tag] = TiffTags.UNDEFINED + if all(isinstance(v, IFDRational) for v in values): + self.tagtype[tag] = ( + TiffTags.RATIONAL + if all(v >= 0 for v in values) + else TiffTags.SIGNED_RATIONAL + ) + elif all(isinstance(v, int) for v in values): + if all(0 <= v < 2 ** 16 for v in values): + self.tagtype[tag] = TiffTags.SHORT + elif all(-(2 ** 15) < v < 2 ** 15 for v in values): + self.tagtype[tag] = TiffTags.SIGNED_SHORT + else: + self.tagtype[tag] = ( + TiffTags.LONG + if all(v >= 0 for v in values) + else TiffTags.SIGNED_LONG + ) + elif all(isinstance(v, float) for v in values): + self.tagtype[tag] = TiffTags.DOUBLE + elif all(isinstance(v, str) for v in values): + self.tagtype[tag] = TiffTags.ASCII + elif all(isinstance(v, bytes) for v in values): + self.tagtype[tag] = TiffTags.BYTE + + if self.tagtype[tag] == TiffTags.UNDEFINED: + values = [ + value.encode("ascii", "replace") if isinstance(value, str) else value + ] + elif self.tagtype[tag] == TiffTags.RATIONAL: + values = [float(v) if isinstance(v, int) else v for v in values] + + values = tuple(info.cvt_enum(value) for value in values) + + dest = self._tags_v1 if legacy_api else self._tags_v2 + + # Three branches: + # Spec'd length == 1, Actual length 1, store as element + # Spec'd length == 1, Actual > 1, Warn and truncate. Formerly barfed. + # No Spec, Actual length 1, Formerly (<4.2) returned a 1 element tuple. + # Don't mess with the legacy api, since it's frozen. + if ( + (info.length == 1) + or self.tagtype[tag] == TiffTags.BYTE + or (info.length is None and len(values) == 1 and not legacy_api) + ): + # Don't mess with the legacy api, since it's frozen. + if legacy_api and self.tagtype[tag] in [ + TiffTags.RATIONAL, + TiffTags.SIGNED_RATIONAL, + ]: # rationals + values = (values,) + try: + (dest[tag],) = values + except ValueError: + # We've got a builtin tag with 1 expected entry + warnings.warn( + "Metadata Warning, tag %s had too many entries: %s, expected 1" + % (tag, len(values)) + ) + dest[tag] = values[0] + + else: + # Spec'd length > 1 or undefined + # Unspec'd, and length > 1 + dest[tag] = values + + def __delitem__(self, tag): + self._tags_v2.pop(tag, None) + self._tags_v1.pop(tag, None) + self._tagdata.pop(tag, None) + + def __iter__(self): + return iter(set(self._tagdata) | set(self._tags_v2)) + + def _unpack(self, fmt, data): + return struct.unpack(self._endian + fmt, data) + + def _pack(self, fmt, *values): + return struct.pack(self._endian + fmt, *values) + + def _register_loader(idx, size): + def decorator(func): + from .TiffTags import TYPES + + if func.__name__.startswith("load_"): + TYPES[idx] = func.__name__[5:].replace("_", " ") + _load_dispatch[idx] = size, func # noqa: F821 + return func + + return decorator + + def _register_writer(idx): + def decorator(func): + _write_dispatch[idx] = func # noqa: F821 + return func + + return decorator + + def _register_basic(idx_fmt_name): + from .TiffTags import TYPES + + idx, fmt, name = idx_fmt_name + TYPES[idx] = name + size = struct.calcsize("=" + fmt) + _load_dispatch[idx] = ( # noqa: F821 + size, + lambda self, data, legacy_api=True: ( + self._unpack("{}{}".format(len(data) // size, fmt), data) + ), + ) + _write_dispatch[idx] = lambda self, *values: ( # noqa: F821 + b"".join(self._pack(fmt, value) for value in values) + ) + + list( + map( + _register_basic, + [ + (TiffTags.SHORT, "H", "short"), + (TiffTags.LONG, "L", "long"), + (TiffTags.SIGNED_BYTE, "b", "signed byte"), + (TiffTags.SIGNED_SHORT, "h", "signed short"), + (TiffTags.SIGNED_LONG, "l", "signed long"), + (TiffTags.FLOAT, "f", "float"), + (TiffTags.DOUBLE, "d", "double"), + ], + ) + ) + + @_register_loader(1, 1) # Basic type, except for the legacy API. + def load_byte(self, data, legacy_api=True): + return data + + @_register_writer(1) # Basic type, except for the legacy API. + def write_byte(self, data): + return data + + @_register_loader(2, 1) + def load_string(self, data, legacy_api=True): + if data.endswith(b"\0"): + data = data[:-1] + return data.decode("latin-1", "replace") + + @_register_writer(2) + def write_string(self, value): + # remerge of https://github.com/python-pillow/Pillow/pull/1416 + return b"" + value.encode("ascii", "replace") + b"\0" + + @_register_loader(5, 8) + def load_rational(self, data, legacy_api=True): + vals = self._unpack("{}L".format(len(data) // 4), data) + + def combine(a, b): + return (a, b) if legacy_api else IFDRational(a, b) + + return tuple(combine(num, denom) for num, denom in zip(vals[::2], vals[1::2])) + + @_register_writer(5) + def write_rational(self, *values): + return b"".join( + self._pack("2L", *_limit_rational(frac, 2 ** 32 - 1)) for frac in values + ) + + @_register_loader(7, 1) + def load_undefined(self, data, legacy_api=True): + return data + + @_register_writer(7) + def write_undefined(self, value): + return value + + @_register_loader(10, 8) + def load_signed_rational(self, data, legacy_api=True): + vals = self._unpack("{}l".format(len(data) // 4), data) + + def combine(a, b): + return (a, b) if legacy_api else IFDRational(a, b) + + return tuple(combine(num, denom) for num, denom in zip(vals[::2], vals[1::2])) + + @_register_writer(10) + def write_signed_rational(self, *values): + return b"".join( + self._pack("2l", *_limit_signed_rational(frac, 2 ** 31 - 1, -(2 ** 31))) + for frac in values + ) + + def _ensure_read(self, fp, size): + ret = fp.read(size) + if len(ret) != size: + raise OSError( + "Corrupt EXIF data. " + + "Expecting to read %d bytes but only got %d. " % (size, len(ret)) + ) + return ret + + def load(self, fp): + + self.reset() + self._offset = fp.tell() + + try: + for i in range(self._unpack("H", self._ensure_read(fp, 2))[0]): + tag, typ, count, data = self._unpack("HHL4s", self._ensure_read(fp, 12)) + + tagname = TiffTags.lookup(tag).name + typname = TYPES.get(typ, "unknown") + msg = "tag: %s (%d) - type: %s (%d)" % (tagname, tag, typname, typ) + + try: + unit_size, handler = self._load_dispatch[typ] + except KeyError: + logger.debug(msg + " - unsupported type {}".format(typ)) + continue # ignore unsupported type + size = count * unit_size + if size > 4: + here = fp.tell() + (offset,) = self._unpack("L", data) + msg += " Tag Location: {} - Data Location: {}".format(here, offset) + fp.seek(offset) + data = ImageFile._safe_read(fp, size) + fp.seek(here) + else: + data = data[:size] + + if len(data) != size: + warnings.warn( + "Possibly corrupt EXIF data. " + "Expecting to read %d bytes but only got %d." + " Skipping tag %s" % (size, len(data), tag) + ) + logger.debug(msg) + continue + + if not data: + logger.debug(msg) + continue + + self._tagdata[tag] = data + self.tagtype[tag] = typ + + msg += " - value: " + ( + "" % size if size > 32 else str(data) + ) + logger.debug(msg) + + (self.next,) = self._unpack("L", self._ensure_read(fp, 4)) + except OSError as msg: + warnings.warn(str(msg)) + return + + def tobytes(self, offset=0): + # FIXME What about tagdata? + result = self._pack("H", len(self._tags_v2)) + + entries = [] + offset = offset + len(result) + len(self._tags_v2) * 12 + 4 + stripoffsets = None + + # pass 1: convert tags to binary format + # always write tags in ascending order + for tag, value in sorted(self._tags_v2.items()): + if tag == STRIPOFFSETS: + stripoffsets = len(entries) + typ = self.tagtype.get(tag) + logger.debug("Tag {}, Type: {}, Value: {}".format(tag, typ, value)) + values = value if isinstance(value, tuple) else (value,) + data = self._write_dispatch[typ](self, *values) + + tagname = TiffTags.lookup(tag).name + typname = TYPES.get(typ, "unknown") + msg = "save: %s (%d) - type: %s (%d)" % (tagname, tag, typname, typ) + msg += " - value: " + ( + "" % len(data) if len(data) >= 16 else str(values) + ) + logger.debug(msg) + + # count is sum of lengths for string and arbitrary data + if typ in [TiffTags.BYTE, TiffTags.ASCII, TiffTags.UNDEFINED]: + count = len(data) + else: + count = len(values) + # figure out if data fits into the entry + if len(data) <= 4: + entries.append((tag, typ, count, data.ljust(4, b"\0"), b"")) + else: + entries.append((tag, typ, count, self._pack("L", offset), data)) + offset += (len(data) + 1) // 2 * 2 # pad to word + + # update strip offset data to point beyond auxiliary data + if stripoffsets is not None: + tag, typ, count, value, data = entries[stripoffsets] + if data: + raise NotImplementedError("multistrip support not yet implemented") + value = self._pack("L", self._unpack("L", value)[0] + offset) + entries[stripoffsets] = tag, typ, count, value, data + + # pass 2: write entries to file + for tag, typ, count, value, data in entries: + logger.debug( + "{} {} {} {} {}".format(tag, typ, count, repr(value), repr(data)) + ) + result += self._pack("HHL4s", tag, typ, count, value) + + # -- overwrite here for multi-page -- + result += b"\0\0\0\0" # end of entries + + # pass 3: write auxiliary data to file + for tag, typ, count, value, data in entries: + result += data + if len(data) & 1: + result += b"\0" + + return result + + def save(self, fp): + + if fp.tell() == 0: # skip TIFF header on subsequent pages + # tiff header -- PIL always starts the first IFD at offset 8 + fp.write(self._prefix + self._pack("HL", 42, 8)) + + offset = fp.tell() + result = self.tobytes(offset) + fp.write(result) + return offset + len(result) + + +ImageFileDirectory_v2._load_dispatch = _load_dispatch +ImageFileDirectory_v2._write_dispatch = _write_dispatch +for idx, name in TYPES.items(): + name = name.replace(" ", "_") + setattr(ImageFileDirectory_v2, "load_" + name, _load_dispatch[idx][1]) + setattr(ImageFileDirectory_v2, "write_" + name, _write_dispatch[idx]) +del _load_dispatch, _write_dispatch, idx, name + + +# Legacy ImageFileDirectory support. +class ImageFileDirectory_v1(ImageFileDirectory_v2): + """This class represents the **legacy** interface to a TIFF tag directory. + + Exposes a dictionary interface of the tags in the directory:: + + ifd = ImageFileDirectory_v1() + ifd[key] = 'Some Data' + ifd.tagtype[key] = TiffTags.ASCII + print(ifd[key]) + ('Some Data',) + + Also contains a dictionary of tag types as read from the tiff image file, + `~PIL.TiffImagePlugin.ImageFileDirectory_v1.tagtype`. + + Values are returned as a tuple. + + .. deprecated:: 3.0.0 + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._legacy_api = True + + tags = property(lambda self: self._tags_v1) + tagdata = property(lambda self: self._tagdata) + + @classmethod + def from_v2(cls, original): + """ Returns an + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1` + instance with the same data as is contained in the original + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2` + instance. + + :returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1` + + """ + + ifd = cls(prefix=original.prefix) + ifd._tagdata = original._tagdata + ifd.tagtype = original.tagtype + ifd.next = original.next # an indicator for multipage tiffs + return ifd + + def to_v2(self): + """ Returns an + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2` + instance with the same data as is contained in the original + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1` + instance. + + :returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2` + + """ + + ifd = ImageFileDirectory_v2(prefix=self.prefix) + ifd._tagdata = dict(self._tagdata) + ifd.tagtype = dict(self.tagtype) + ifd._tags_v2 = dict(self._tags_v2) + return ifd + + def __contains__(self, tag): + return tag in self._tags_v1 or tag in self._tagdata + + def __len__(self): + return len(set(self._tagdata) | set(self._tags_v1)) + + def __iter__(self): + return iter(set(self._tagdata) | set(self._tags_v1)) + + def __setitem__(self, tag, value): + for legacy_api in (False, True): + self._setitem(tag, value, legacy_api) + + def __getitem__(self, tag): + if tag not in self._tags_v1: # unpack on the fly + data = self._tagdata[tag] + typ = self.tagtype[tag] + size, handler = self._load_dispatch[typ] + for legacy in (False, True): + self._setitem(tag, handler(self, data, legacy), legacy) + val = self._tags_v1[tag] + if not isinstance(val, (tuple, bytes)): + val = (val,) + return val + + +# undone -- switch this pointer when IFD_LEGACY_API == False +ImageFileDirectory = ImageFileDirectory_v1 + + +## +# Image plugin for TIFF files. + + +class TiffImageFile(ImageFile.ImageFile): + + format = "TIFF" + format_description = "Adobe TIFF" + _close_exclusive_fp_after_loading = False + + def _open(self): + """Open the first image in a TIFF file""" + + # Header + ifh = self.fp.read(8) + + # image file directory (tag dictionary) + self.tag_v2 = ImageFileDirectory_v2(ifh) + + # legacy tag/ifd entries will be filled in later + self.tag = self.ifd = None + + # setup frame pointers + self.__first = self.__next = self.tag_v2.next + self.__frame = -1 + self.__fp = self.fp + self._frame_pos = [] + self._n_frames = None + + logger.debug("*** TiffImageFile._open ***") + logger.debug("- __first: {}".format(self.__first)) + logger.debug("- ifh: {}".format(ifh)) + + # and load the first frame + self._seek(0) + + @property + def n_frames(self): + if self._n_frames is None: + current = self.tell() + self._seek(len(self._frame_pos)) + while self._n_frames is None: + self._seek(self.tell() + 1) + self.seek(current) + return self._n_frames + + def seek(self, frame): + """Select a given frame as current image""" + if not self._seek_check(frame): + return + self._seek(frame) + # Create a new core image object on second and + # subsequent frames in the image. Image may be + # different size/mode. + Image._decompression_bomb_check(self.size) + self.im = Image.core.new(self.mode, self.size) + + def _seek(self, frame): + self.fp = self.__fp + while len(self._frame_pos) <= frame: + if not self.__next: + raise EOFError("no more images in TIFF file") + logger.debug( + "Seeking to frame %s, on frame %s, __next %s, location: %s" + % (frame, self.__frame, self.__next, self.fp.tell()) + ) + # reset buffered io handle in case fp + # was passed to libtiff, invalidating the buffer + self.fp.tell() + self.fp.seek(self.__next) + self._frame_pos.append(self.__next) + logger.debug("Loading tags, location: %s" % self.fp.tell()) + self.tag_v2.load(self.fp) + self.__next = self.tag_v2.next + if self.__next == 0: + self._n_frames = frame + 1 + if len(self._frame_pos) == 1: + self.is_animated = self.__next != 0 + self.__frame += 1 + self.fp.seek(self._frame_pos[frame]) + self.tag_v2.load(self.fp) + # fill the legacy tag/ifd entries + self.tag = self.ifd = ImageFileDirectory_v1.from_v2(self.tag_v2) + self.__frame = frame + self._setup() + + def tell(self): + """Return the current frame number""" + return self.__frame + + def load(self): + if self.tile and self.use_load_libtiff: + return self._load_libtiff() + return super().load() + + def load_end(self): + if self._tile_orientation: + method = { + 2: Image.FLIP_LEFT_RIGHT, + 3: Image.ROTATE_180, + 4: Image.FLIP_TOP_BOTTOM, + 5: Image.TRANSPOSE, + 6: Image.ROTATE_270, + 7: Image.TRANSVERSE, + 8: Image.ROTATE_90, + }.get(self._tile_orientation) + if method is not None: + self.im = self.im.transpose(method) + self._size = self.im.size + + # allow closing if we're on the first frame, there's no next + # This is the ImageFile.load path only, libtiff specific below. + if not self.is_animated: + self._close_exclusive_fp_after_loading = True + + def _load_libtiff(self): + """ Overload method triggered when we detect a compressed tiff + Calls out to libtiff """ + + Image.Image.load(self) + + self.load_prepare() + + if not len(self.tile) == 1: + raise OSError("Not exactly one tile") + + # (self._compression, (extents tuple), + # 0, (rawmode, self._compression, fp)) + extents = self.tile[0][1] + args = list(self.tile[0][3]) + + # To be nice on memory footprint, if there's a + # file descriptor, use that instead of reading + # into a string in python. + # libtiff closes the file descriptor, so pass in a dup. + try: + fp = hasattr(self.fp, "fileno") and os.dup(self.fp.fileno()) + # flush the file descriptor, prevents error on pypy 2.4+ + # should also eliminate the need for fp.tell + # in _seek + if hasattr(self.fp, "flush"): + self.fp.flush() + except OSError: + # io.BytesIO have a fileno, but returns an OSError if + # it doesn't use a file descriptor. + fp = False + + if fp: + args[2] = fp + + decoder = Image._getdecoder( + self.mode, "libtiff", tuple(args), self.decoderconfig + ) + try: + decoder.setimage(self.im, extents) + except ValueError as e: + raise OSError("Couldn't set the image") from e + + close_self_fp = self._exclusive_fp and not self.is_animated + if hasattr(self.fp, "getvalue"): + # We've got a stringio like thing passed in. Yay for all in memory. + # The decoder needs the entire file in one shot, so there's not + # a lot we can do here other than give it the entire file. + # unless we could do something like get the address of the + # underlying string for stringio. + # + # Rearranging for supporting byteio items, since they have a fileno + # that returns an OSError if there's no underlying fp. Easier to + # deal with here by reordering. + logger.debug("have getvalue. just sending in a string from getvalue") + n, err = decoder.decode(self.fp.getvalue()) + elif fp: + # we've got a actual file on disk, pass in the fp. + logger.debug("have fileno, calling fileno version of the decoder.") + if not close_self_fp: + self.fp.seek(0) + # 4 bytes, otherwise the trace might error out + n, err = decoder.decode(b"fpfp") + else: + # we have something else. + logger.debug("don't have fileno or getvalue. just reading") + self.fp.seek(0) + # UNDONE -- so much for that buffer size thing. + n, err = decoder.decode(self.fp.read()) + + self.tile = [] + self.readonly = 0 + + self.load_end() + + # libtiff closed the fp in a, we need to close self.fp, if possible + if close_self_fp: + self.fp.close() + self.fp = None # might be shared + + if err < 0: + raise OSError(err) + + return Image.Image.load(self) + + def _setup(self): + """Setup this image object based on current tags""" + + if 0xBC01 in self.tag_v2: + raise OSError("Windows Media Photo files not yet supported") + + # extract relevant tags + self._compression = COMPRESSION_INFO[self.tag_v2.get(COMPRESSION, 1)] + self._planar_configuration = self.tag_v2.get(PLANAR_CONFIGURATION, 1) + + # photometric is a required tag, but not everyone is reading + # the specification + photo = self.tag_v2.get(PHOTOMETRIC_INTERPRETATION, 0) + + # old style jpeg compression images most certainly are YCbCr + if self._compression == "tiff_jpeg": + photo = 6 + + fillorder = self.tag_v2.get(FILLORDER, 1) + + logger.debug("*** Summary ***") + logger.debug("- compression: {}".format(self._compression)) + logger.debug("- photometric_interpretation: {}".format(photo)) + logger.debug("- planar_configuration: {}".format(self._planar_configuration)) + logger.debug("- fill_order: {}".format(fillorder)) + logger.debug("- YCbCr subsampling: {}".format(self.tag.get(530))) + + # size + xsize = int(self.tag_v2.get(IMAGEWIDTH)) + ysize = int(self.tag_v2.get(IMAGELENGTH)) + self._size = xsize, ysize + + logger.debug("- size: {}".format(self.size)) + + sampleFormat = self.tag_v2.get(SAMPLEFORMAT, (1,)) + if len(sampleFormat) > 1 and max(sampleFormat) == min(sampleFormat) == 1: + # SAMPLEFORMAT is properly per band, so an RGB image will + # be (1,1,1). But, we don't support per band pixel types, + # and anything more than one band is a uint8. So, just + # take the first element. Revisit this if adding support + # for more exotic images. + sampleFormat = (1,) + + bps_tuple = self.tag_v2.get(BITSPERSAMPLE, (1,)) + extra_tuple = self.tag_v2.get(EXTRASAMPLES, ()) + if photo in (2, 6, 8): # RGB, YCbCr, LAB + bps_count = 3 + elif photo == 5: # CMYK + bps_count = 4 + else: + bps_count = 1 + bps_count += len(extra_tuple) + # Some files have only one value in bps_tuple, + # while should have more. Fix it + if bps_count > len(bps_tuple) and len(bps_tuple) == 1: + bps_tuple = bps_tuple * bps_count + + # mode: check photometric interpretation and bits per pixel + key = ( + self.tag_v2.prefix, + photo, + sampleFormat, + fillorder, + bps_tuple, + extra_tuple, + ) + logger.debug("format key: {}".format(key)) + try: + self.mode, rawmode = OPEN_INFO[key] + except KeyError as e: + logger.debug("- unsupported format") + raise SyntaxError("unknown pixel mode") from e + + logger.debug("- raw mode: {}".format(rawmode)) + logger.debug("- pil mode: {}".format(self.mode)) + + self.info["compression"] = self._compression + + xres = self.tag_v2.get(X_RESOLUTION, 1) + yres = self.tag_v2.get(Y_RESOLUTION, 1) + + if xres and yres: + resunit = self.tag_v2.get(RESOLUTION_UNIT) + if resunit == 2: # dots per inch + self.info["dpi"] = int(xres + 0.5), int(yres + 0.5) + elif resunit == 3: # dots per centimeter. convert to dpi + self.info["dpi"] = int(xres * 2.54 + 0.5), int(yres * 2.54 + 0.5) + elif resunit is None: # used to default to 1, but now 2) + self.info["dpi"] = int(xres + 0.5), int(yres + 0.5) + # For backward compatibility, + # we also preserve the old behavior + self.info["resolution"] = xres, yres + else: # No absolute unit of measurement + self.info["resolution"] = xres, yres + + # build tile descriptors + x = y = layer = 0 + self.tile = [] + self.use_load_libtiff = READ_LIBTIFF or self._compression != "raw" + if self.use_load_libtiff: + # Decoder expects entire file as one tile. + # There's a buffer size limit in load (64k) + # so large g4 images will fail if we use that + # function. + # + # Setup the one tile for the whole image, then + # use the _load_libtiff function. + + # libtiff handles the fillmode for us, so 1;IR should + # actually be 1;I. Including the R double reverses the + # bits, so stripes of the image are reversed. See + # https://github.com/python-pillow/Pillow/issues/279 + if fillorder == 2: + # Replace fillorder with fillorder=1 + key = key[:3] + (1,) + key[4:] + logger.debug("format key: {}".format(key)) + # this should always work, since all the + # fillorder==2 modes have a corresponding + # fillorder=1 mode + self.mode, rawmode = OPEN_INFO[key] + # libtiff always returns the bytes in native order. + # we're expecting image byte order. So, if the rawmode + # contains I;16, we need to convert from native to image + # byte order. + if rawmode == "I;16": + rawmode = "I;16N" + if ";16B" in rawmode: + rawmode = rawmode.replace(";16B", ";16N") + if ";16L" in rawmode: + rawmode = rawmode.replace(";16L", ";16N") + + # Offset in the tile tuple is 0, we go from 0,0 to + # w,h, and we only do this once -- eds + a = (rawmode, self._compression, False, self.tag_v2.offset) + self.tile.append(("libtiff", (0, 0, xsize, ysize), 0, a)) + + elif STRIPOFFSETS in self.tag_v2 or TILEOFFSETS in self.tag_v2: + # striped image + if STRIPOFFSETS in self.tag_v2: + offsets = self.tag_v2[STRIPOFFSETS] + h = self.tag_v2.get(ROWSPERSTRIP, ysize) + w = self.size[0] + else: + # tiled image + offsets = self.tag_v2[TILEOFFSETS] + w = self.tag_v2.get(322) + h = self.tag_v2.get(323) + + for offset in offsets: + if x + w > xsize: + stride = w * sum(bps_tuple) / 8 # bytes per line + else: + stride = 0 + + tile_rawmode = rawmode + if self._planar_configuration == 2: + # each band on it's own layer + tile_rawmode = rawmode[layer] + # adjust stride width accordingly + stride /= bps_count + + a = (tile_rawmode, int(stride), 1) + self.tile.append( + ( + self._compression, + (x, y, min(x + w, xsize), min(y + h, ysize)), + offset, + a, + ) + ) + x = x + w + if x >= self.size[0]: + x, y = 0, y + h + if y >= self.size[1]: + x = y = 0 + layer += 1 + else: + logger.debug("- unsupported data organization") + raise SyntaxError("unknown data organization") + + # Fix up info. + if ICCPROFILE in self.tag_v2: + self.info["icc_profile"] = self.tag_v2[ICCPROFILE] + + # fixup palette descriptor + + if self.mode in ["P", "PA"]: + palette = [o8(b // 256) for b in self.tag_v2[COLORMAP]] + self.palette = ImagePalette.raw("RGB;L", b"".join(palette)) + + self._tile_orientation = self.tag_v2.get(0x0112) + + def _close__fp(self): + try: + if self.__fp != self.fp: + self.__fp.close() + except AttributeError: + pass + finally: + self.__fp = None + + +# +# -------------------------------------------------------------------- +# Write TIFF files + +# little endian is default except for image modes with +# explicit big endian byte-order + +SAVE_INFO = { + # mode => rawmode, byteorder, photometrics, + # sampleformat, bitspersample, extra + "1": ("1", II, 1, 1, (1,), None), + "L": ("L", II, 1, 1, (8,), None), + "LA": ("LA", II, 1, 1, (8, 8), 2), + "P": ("P", II, 3, 1, (8,), None), + "PA": ("PA", II, 3, 1, (8, 8), 2), + "I": ("I;32S", II, 1, 2, (32,), None), + "I;16": ("I;16", II, 1, 1, (16,), None), + "I;16S": ("I;16S", II, 1, 2, (16,), None), + "F": ("F;32F", II, 1, 3, (32,), None), + "RGB": ("RGB", II, 2, 1, (8, 8, 8), None), + "RGBX": ("RGBX", II, 2, 1, (8, 8, 8, 8), 0), + "RGBA": ("RGBA", II, 2, 1, (8, 8, 8, 8), 2), + "CMYK": ("CMYK", II, 5, 1, (8, 8, 8, 8), None), + "YCbCr": ("YCbCr", II, 6, 1, (8, 8, 8), None), + "LAB": ("LAB", II, 8, 1, (8, 8, 8), None), + "I;32BS": ("I;32BS", MM, 1, 2, (32,), None), + "I;16B": ("I;16B", MM, 1, 1, (16,), None), + "I;16BS": ("I;16BS", MM, 1, 2, (16,), None), + "F;32BF": ("F;32BF", MM, 1, 3, (32,), None), +} + + +def _save(im, fp, filename): + + try: + rawmode, prefix, photo, format, bits, extra = SAVE_INFO[im.mode] + except KeyError as e: + raise OSError("cannot write mode %s as TIFF" % im.mode) from e + + ifd = ImageFileDirectory_v2(prefix=prefix) + + compression = im.encoderinfo.get("compression", im.info.get("compression")) + if compression is None: + compression = "raw" + elif compression == "tiff_jpeg": + # OJPEG is obsolete, so use new-style JPEG compression instead + compression = "jpeg" + + libtiff = WRITE_LIBTIFF or compression != "raw" + + # required for color libtiff images + ifd[PLANAR_CONFIGURATION] = getattr(im, "_planar_configuration", 1) + + ifd[IMAGEWIDTH] = im.size[0] + ifd[IMAGELENGTH] = im.size[1] + + # write any arbitrary tags passed in as an ImageFileDirectory + info = im.encoderinfo.get("tiffinfo", {}) + logger.debug("Tiffinfo Keys: %s" % list(info)) + if isinstance(info, ImageFileDirectory_v1): + info = info.to_v2() + for key in info: + ifd[key] = info.get(key) + try: + ifd.tagtype[key] = info.tagtype[key] + except Exception: + pass # might not be an IFD. Might not have populated type + + # additions written by Greg Couch, gregc@cgl.ucsf.edu + # inspired by image-sig posting from Kevin Cazabon, kcazabon@home.com + if hasattr(im, "tag_v2"): + # preserve tags from original TIFF image file + for key in ( + RESOLUTION_UNIT, + X_RESOLUTION, + Y_RESOLUTION, + IPTC_NAA_CHUNK, + PHOTOSHOP_CHUNK, + XMP, + ): + if key in im.tag_v2: + ifd[key] = im.tag_v2[key] + ifd.tagtype[key] = im.tag_v2.tagtype[key] + + # preserve ICC profile (should also work when saving other formats + # which support profiles as TIFF) -- 2008-06-06 Florian Hoech + if "icc_profile" in im.info: + ifd[ICCPROFILE] = im.info["icc_profile"] + + for key, name in [ + (IMAGEDESCRIPTION, "description"), + (X_RESOLUTION, "resolution"), + (Y_RESOLUTION, "resolution"), + (X_RESOLUTION, "x_resolution"), + (Y_RESOLUTION, "y_resolution"), + (RESOLUTION_UNIT, "resolution_unit"), + (SOFTWARE, "software"), + (DATE_TIME, "date_time"), + (ARTIST, "artist"), + (COPYRIGHT, "copyright"), + ]: + if name in im.encoderinfo: + ifd[key] = im.encoderinfo[name] + + dpi = im.encoderinfo.get("dpi") + if dpi: + ifd[RESOLUTION_UNIT] = 2 + ifd[X_RESOLUTION] = int(dpi[0] + 0.5) + ifd[Y_RESOLUTION] = int(dpi[1] + 0.5) + + if bits != (1,): + ifd[BITSPERSAMPLE] = bits + if len(bits) != 1: + ifd[SAMPLESPERPIXEL] = len(bits) + if extra is not None: + ifd[EXTRASAMPLES] = extra + if format != 1: + ifd[SAMPLEFORMAT] = format + + ifd[PHOTOMETRIC_INTERPRETATION] = photo + + if im.mode in ["P", "PA"]: + lut = im.im.getpalette("RGB", "RGB;L") + ifd[COLORMAP] = tuple(i8(v) * 256 for v in lut) + # data orientation + stride = len(bits) * ((im.size[0] * bits[0] + 7) // 8) + ifd[ROWSPERSTRIP] = im.size[1] + strip_byte_counts = stride * im.size[1] + if strip_byte_counts >= 2 ** 16: + ifd.tagtype[STRIPBYTECOUNTS] = TiffTags.LONG + ifd[STRIPBYTECOUNTS] = strip_byte_counts + ifd[STRIPOFFSETS] = 0 # this is adjusted by IFD writer + # no compression by default: + ifd[COMPRESSION] = COMPRESSION_INFO_REV.get(compression, 1) + + if libtiff: + if "quality" in im.encoderinfo: + quality = im.encoderinfo["quality"] + if not isinstance(quality, int) or quality < 0 or quality > 100: + raise ValueError("Invalid quality setting") + if compression != "jpeg": + raise ValueError( + "quality setting only supported for 'jpeg' compression" + ) + ifd[JPEGQUALITY] = quality + + logger.debug("Saving using libtiff encoder") + logger.debug("Items: %s" % sorted(ifd.items())) + _fp = 0 + if hasattr(fp, "fileno"): + try: + fp.seek(0) + _fp = os.dup(fp.fileno()) + except io.UnsupportedOperation: + pass + + # optional types for non core tags + types = {} + # SAMPLEFORMAT is determined by the image format and should not be copied + # from legacy_ifd. + # STRIPOFFSETS and STRIPBYTECOUNTS are added by the library + # based on the data in the strip. + # The other tags expect arrays with a certain length (fixed or depending on + # BITSPERSAMPLE, etc), passing arrays with a different length will result in + # segfaults. Block these tags until we add extra validation. + blocklist = [ + REFERENCEBLACKWHITE, + SAMPLEFORMAT, + STRIPBYTECOUNTS, + STRIPOFFSETS, + TRANSFERFUNCTION, + ] + + atts = {} + # bits per sample is a single short in the tiff directory, not a list. + atts[BITSPERSAMPLE] = bits[0] + # Merge the ones that we have with (optional) more bits from + # the original file, e.g x,y resolution so that we can + # save(load('')) == original file. + legacy_ifd = {} + if hasattr(im, "tag"): + legacy_ifd = im.tag.to_v2() + for tag, value in itertools.chain( + ifd.items(), getattr(im, "tag_v2", {}).items(), legacy_ifd.items() + ): + # Libtiff can only process certain core items without adding + # them to the custom dictionary. + # Custom items are supported for int, float, unicode, string and byte + # values. Other types and tuples require a tagtype. + if tag not in TiffTags.LIBTIFF_CORE: + if not Image.core.libtiff_support_custom_tags: + continue + + if tag in ifd.tagtype: + types[tag] = ifd.tagtype[tag] + elif not (isinstance(value, (int, float, str, bytes))): + continue + else: + type = TiffTags.lookup(tag).type + if type: + types[tag] = type + if tag not in atts and tag not in blocklist: + if isinstance(value, str): + atts[tag] = value.encode("ascii", "replace") + b"\0" + elif isinstance(value, IFDRational): + atts[tag] = float(value) + else: + atts[tag] = value + + logger.debug("Converted items: %s" % sorted(atts.items())) + + # libtiff always expects the bytes in native order. + # we're storing image byte order. So, if the rawmode + # contains I;16, we need to convert from native to image + # byte order. + if im.mode in ("I;16B", "I;16"): + rawmode = "I;16N" + + # Pass tags as sorted list so that the tags are set in a fixed order. + # This is required by libtiff for some tags. For example, the JPEGQUALITY + # pseudo tag requires that the COMPRESS tag was already set. + tags = list(atts.items()) + tags.sort() + a = (rawmode, compression, _fp, filename, tags, types) + e = Image._getencoder(im.mode, "libtiff", a, im.encoderconfig) + e.setimage(im.im, (0, 0) + im.size) + while True: + # undone, change to self.decodermaxblock: + l, s, d = e.encode(16 * 1024) + if not _fp: + fp.write(d) + if s: + break + if s < 0: + raise OSError("encoder error %d when writing image file" % s) + + else: + offset = ifd.save(fp) + + ImageFile._save( + im, fp, [("raw", (0, 0) + im.size, offset, (rawmode, stride, 1))] + ) + + # -- helper for multi-page save -- + if "_debug_multipage" in im.encoderinfo: + # just to access o32 and o16 (using correct byte order) + im._debug_multipage = ifd + + +class AppendingTiffWriter: + fieldSizes = [ + 0, # None + 1, # byte + 1, # ascii + 2, # short + 4, # long + 8, # rational + 1, # sbyte + 1, # undefined + 2, # sshort + 4, # slong + 8, # srational + 4, # float + 8, # double + ] + + # StripOffsets = 273 + # FreeOffsets = 288 + # TileOffsets = 324 + # JPEGQTables = 519 + # JPEGDCTables = 520 + # JPEGACTables = 521 + Tags = {273, 288, 324, 519, 520, 521} + + def __init__(self, fn, new=False): + if hasattr(fn, "read"): + self.f = fn + self.close_fp = False + else: + self.name = fn + self.close_fp = True + try: + self.f = open(fn, "w+b" if new else "r+b") + except OSError: + self.f = open(fn, "w+b") + self.beginning = self.f.tell() + self.setup() + + def setup(self): + # Reset everything. + self.f.seek(self.beginning, os.SEEK_SET) + + self.whereToWriteNewIFDOffset = None + self.offsetOfNewPage = 0 + + self.IIMM = IIMM = self.f.read(4) + if not IIMM: + # empty file - first page + self.isFirst = True + return + + self.isFirst = False + if IIMM == b"II\x2a\x00": + self.setEndian("<") + elif IIMM == b"MM\x00\x2a": + self.setEndian(">") + else: + raise RuntimeError("Invalid TIFF file header") + + self.skipIFDs() + self.goToEnd() + + def finalize(self): + if self.isFirst: + return + + # fix offsets + self.f.seek(self.offsetOfNewPage) + + IIMM = self.f.read(4) + if not IIMM: + # raise RuntimeError("nothing written into new page") + # Make it easy to finish a frame without committing to a new one. + return + + if IIMM != self.IIMM: + raise RuntimeError("IIMM of new page doesn't match IIMM of first page") + + IFDoffset = self.readLong() + IFDoffset += self.offsetOfNewPage + self.f.seek(self.whereToWriteNewIFDOffset) + self.writeLong(IFDoffset) + self.f.seek(IFDoffset) + self.fixIFD() + + def newFrame(self): + # Call this to finish a frame. + self.finalize() + self.setup() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + if self.close_fp: + self.close() + return False + + def tell(self): + return self.f.tell() - self.offsetOfNewPage + + def seek(self, offset, whence=io.SEEK_SET): + if whence == os.SEEK_SET: + offset += self.offsetOfNewPage + + self.f.seek(offset, whence) + return self.tell() + + def goToEnd(self): + self.f.seek(0, os.SEEK_END) + pos = self.f.tell() + + # pad to 16 byte boundary + padBytes = 16 - pos % 16 + if 0 < padBytes < 16: + self.f.write(bytes(padBytes)) + self.offsetOfNewPage = self.f.tell() + + def setEndian(self, endian): + self.endian = endian + self.longFmt = self.endian + "L" + self.shortFmt = self.endian + "H" + self.tagFormat = self.endian + "HHL" + + def skipIFDs(self): + while True: + IFDoffset = self.readLong() + if IFDoffset == 0: + self.whereToWriteNewIFDOffset = self.f.tell() - 4 + break + + self.f.seek(IFDoffset) + numTags = self.readShort() + self.f.seek(numTags * 12, os.SEEK_CUR) + + def write(self, data): + return self.f.write(data) + + def readShort(self): + (value,) = struct.unpack(self.shortFmt, self.f.read(2)) + return value + + def readLong(self): + (value,) = struct.unpack(self.longFmt, self.f.read(4)) + return value + + def rewriteLastShortToLong(self, value): + self.f.seek(-2, os.SEEK_CUR) + bytesWritten = self.f.write(struct.pack(self.longFmt, value)) + if bytesWritten is not None and bytesWritten != 4: + raise RuntimeError("wrote only %u bytes but wanted 4" % bytesWritten) + + def rewriteLastShort(self, value): + self.f.seek(-2, os.SEEK_CUR) + bytesWritten = self.f.write(struct.pack(self.shortFmt, value)) + if bytesWritten is not None and bytesWritten != 2: + raise RuntimeError("wrote only %u bytes but wanted 2" % bytesWritten) + + def rewriteLastLong(self, value): + self.f.seek(-4, os.SEEK_CUR) + bytesWritten = self.f.write(struct.pack(self.longFmt, value)) + if bytesWritten is not None and bytesWritten != 4: + raise RuntimeError("wrote only %u bytes but wanted 4" % bytesWritten) + + def writeShort(self, value): + bytesWritten = self.f.write(struct.pack(self.shortFmt, value)) + if bytesWritten is not None and bytesWritten != 2: + raise RuntimeError("wrote only %u bytes but wanted 2" % bytesWritten) + + def writeLong(self, value): + bytesWritten = self.f.write(struct.pack(self.longFmt, value)) + if bytesWritten is not None and bytesWritten != 4: + raise RuntimeError("wrote only %u bytes but wanted 4" % bytesWritten) + + def close(self): + self.finalize() + self.f.close() + + def fixIFD(self): + numTags = self.readShort() + + for i in range(numTags): + tag, fieldType, count = struct.unpack(self.tagFormat, self.f.read(8)) + + fieldSize = self.fieldSizes[fieldType] + totalSize = fieldSize * count + isLocal = totalSize <= 4 + if not isLocal: + offset = self.readLong() + offset += self.offsetOfNewPage + self.rewriteLastLong(offset) + + if tag in self.Tags: + curPos = self.f.tell() + + if isLocal: + self.fixOffsets( + count, isShort=(fieldSize == 2), isLong=(fieldSize == 4) + ) + self.f.seek(curPos + 4) + else: + self.f.seek(offset) + self.fixOffsets( + count, isShort=(fieldSize == 2), isLong=(fieldSize == 4) + ) + self.f.seek(curPos) + + offset = curPos = None + + elif isLocal: + # skip the locally stored value that is not an offset + self.f.seek(4, os.SEEK_CUR) + + def fixOffsets(self, count, isShort=False, isLong=False): + if not isShort and not isLong: + raise RuntimeError("offset is neither short nor long") + + for i in range(count): + offset = self.readShort() if isShort else self.readLong() + offset += self.offsetOfNewPage + if isShort and offset >= 65536: + # offset is now too large - we must convert shorts to longs + if count != 1: + raise RuntimeError("not implemented") # XXX TODO + + # simple case - the offset is just one and therefore it is + # local (not referenced with another offset) + self.rewriteLastShortToLong(offset) + self.f.seek(-10, os.SEEK_CUR) + self.writeShort(TiffTags.LONG) # rewrite the type to LONG + self.f.seek(8, os.SEEK_CUR) + elif isShort: + self.rewriteLastShort(offset) + else: + self.rewriteLastLong(offset) + + +def _save_all(im, fp, filename): + encoderinfo = im.encoderinfo.copy() + encoderconfig = im.encoderconfig + append_images = list(encoderinfo.get("append_images", [])) + if not hasattr(im, "n_frames") and not append_images: + return _save(im, fp, filename) + + cur_idx = im.tell() + try: + with AppendingTiffWriter(fp) as tf: + for ims in [im] + append_images: + ims.encoderinfo = encoderinfo + ims.encoderconfig = encoderconfig + if not hasattr(ims, "n_frames"): + nfr = 1 + else: + nfr = ims.n_frames + + for idx in range(nfr): + ims.seek(idx) + ims.load() + _save(ims, tf, filename) + tf.newFrame() + finally: + im.seek(cur_idx) + + +# +# -------------------------------------------------------------------- +# Register + +Image.register_open(TiffImageFile.format, TiffImageFile, _accept) +Image.register_save(TiffImageFile.format, _save) +Image.register_save_all(TiffImageFile.format, _save_all) + +Image.register_extensions(TiffImageFile.format, [".tif", ".tiff"]) + +Image.register_mime(TiffImageFile.format, "image/tiff") diff --git a/venv/Lib/site-packages/PIL/TiffTags.py b/venv/Lib/site-packages/PIL/TiffTags.py new file mode 100644 index 00000000..e1c1b701 --- /dev/null +++ b/venv/Lib/site-packages/PIL/TiffTags.py @@ -0,0 +1,498 @@ +# +# The Python Imaging Library. +# $Id$ +# +# TIFF tags +# +# This module provides clear-text names for various well-known +# TIFF tags. the TIFF codec works just fine without it. +# +# Copyright (c) Secret Labs AB 1999. +# +# See the README file for information on usage and redistribution. +# + +## +# This module provides constants and clear-text names for various +# well-known TIFF tags. +## + +from collections import namedtuple + + +class TagInfo(namedtuple("_TagInfo", "value name type length enum")): + __slots__ = [] + + def __new__(cls, value=None, name="unknown", type=None, length=None, enum=None): + return super().__new__(cls, value, name, type, length, enum or {}) + + def cvt_enum(self, value): + # Using get will call hash(value), which can be expensive + # for some types (e.g. Fraction). Since self.enum is rarely + # used, it's usually better to test it first. + return self.enum.get(value, value) if self.enum else value + + +def lookup(tag): + """ + :param tag: Integer tag number + :returns: Taginfo namedtuple, From the TAGS_V2 info if possible, + otherwise just populating the value and name from TAGS. + If the tag is not recognized, "unknown" is returned for the name + + """ + + return TAGS_V2.get(tag, TagInfo(tag, TAGS.get(tag, "unknown"))) + + +## +# Map tag numbers to tag info. +# +# id: (Name, Type, Length, enum_values) +# +# The length here differs from the length in the tiff spec. For +# numbers, the tiff spec is for the number of fields returned. We +# agree here. For string-like types, the tiff spec uses the length of +# field in bytes. In Pillow, we are using the number of expected +# fields, in general 1 for string-like types. + + +BYTE = 1 +ASCII = 2 +SHORT = 3 +LONG = 4 +RATIONAL = 5 +SIGNED_BYTE = 6 +UNDEFINED = 7 +SIGNED_SHORT = 8 +SIGNED_LONG = 9 +SIGNED_RATIONAL = 10 +FLOAT = 11 +DOUBLE = 12 + +TAGS_V2 = { + 254: ("NewSubfileType", LONG, 1), + 255: ("SubfileType", SHORT, 1), + 256: ("ImageWidth", LONG, 1), + 257: ("ImageLength", LONG, 1), + 258: ("BitsPerSample", SHORT, 0), + 259: ( + "Compression", + SHORT, + 1, + { + "Uncompressed": 1, + "CCITT 1d": 2, + "Group 3 Fax": 3, + "Group 4 Fax": 4, + "LZW": 5, + "JPEG": 6, + "PackBits": 32773, + }, + ), + 262: ( + "PhotometricInterpretation", + SHORT, + 1, + { + "WhiteIsZero": 0, + "BlackIsZero": 1, + "RGB": 2, + "RGB Palette": 3, + "Transparency Mask": 4, + "CMYK": 5, + "YCbCr": 6, + "CieLAB": 8, + "CFA": 32803, # TIFF/EP, Adobe DNG + "LinearRaw": 32892, # Adobe DNG + }, + ), + 263: ("Threshholding", SHORT, 1), + 264: ("CellWidth", SHORT, 1), + 265: ("CellLength", SHORT, 1), + 266: ("FillOrder", SHORT, 1), + 269: ("DocumentName", ASCII, 1), + 270: ("ImageDescription", ASCII, 1), + 271: ("Make", ASCII, 1), + 272: ("Model", ASCII, 1), + 273: ("StripOffsets", LONG, 0), + 274: ("Orientation", SHORT, 1), + 277: ("SamplesPerPixel", SHORT, 1), + 278: ("RowsPerStrip", LONG, 1), + 279: ("StripByteCounts", LONG, 0), + 280: ("MinSampleValue", SHORT, 0), + 281: ("MaxSampleValue", SHORT, 0), + 282: ("XResolution", RATIONAL, 1), + 283: ("YResolution", RATIONAL, 1), + 284: ("PlanarConfiguration", SHORT, 1, {"Contiguous": 1, "Separate": 2}), + 285: ("PageName", ASCII, 1), + 286: ("XPosition", RATIONAL, 1), + 287: ("YPosition", RATIONAL, 1), + 288: ("FreeOffsets", LONG, 1), + 289: ("FreeByteCounts", LONG, 1), + 290: ("GrayResponseUnit", SHORT, 1), + 291: ("GrayResponseCurve", SHORT, 0), + 292: ("T4Options", LONG, 1), + 293: ("T6Options", LONG, 1), + 296: ("ResolutionUnit", SHORT, 1, {"none": 1, "inch": 2, "cm": 3}), + 297: ("PageNumber", SHORT, 2), + 301: ("TransferFunction", SHORT, 0), + 305: ("Software", ASCII, 1), + 306: ("DateTime", ASCII, 1), + 315: ("Artist", ASCII, 1), + 316: ("HostComputer", ASCII, 1), + 317: ("Predictor", SHORT, 1, {"none": 1, "Horizontal Differencing": 2}), + 318: ("WhitePoint", RATIONAL, 2), + 319: ("PrimaryChromaticities", RATIONAL, 6), + 320: ("ColorMap", SHORT, 0), + 321: ("HalftoneHints", SHORT, 2), + 322: ("TileWidth", LONG, 1), + 323: ("TileLength", LONG, 1), + 324: ("TileOffsets", LONG, 0), + 325: ("TileByteCounts", LONG, 0), + 332: ("InkSet", SHORT, 1), + 333: ("InkNames", ASCII, 1), + 334: ("NumberOfInks", SHORT, 1), + 336: ("DotRange", SHORT, 0), + 337: ("TargetPrinter", ASCII, 1), + 338: ("ExtraSamples", SHORT, 0), + 339: ("SampleFormat", SHORT, 0), + 340: ("SMinSampleValue", DOUBLE, 0), + 341: ("SMaxSampleValue", DOUBLE, 0), + 342: ("TransferRange", SHORT, 6), + 347: ("JPEGTables", UNDEFINED, 1), + # obsolete JPEG tags + 512: ("JPEGProc", SHORT, 1), + 513: ("JPEGInterchangeFormat", LONG, 1), + 514: ("JPEGInterchangeFormatLength", LONG, 1), + 515: ("JPEGRestartInterval", SHORT, 1), + 517: ("JPEGLosslessPredictors", SHORT, 0), + 518: ("JPEGPointTransforms", SHORT, 0), + 519: ("JPEGQTables", LONG, 0), + 520: ("JPEGDCTables", LONG, 0), + 521: ("JPEGACTables", LONG, 0), + 529: ("YCbCrCoefficients", RATIONAL, 3), + 530: ("YCbCrSubSampling", SHORT, 2), + 531: ("YCbCrPositioning", SHORT, 1), + 532: ("ReferenceBlackWhite", RATIONAL, 6), + 700: ("XMP", BYTE, 0), + 33432: ("Copyright", ASCII, 1), + 33723: ("IptcNaaInfo", UNDEFINED, 0), + 34377: ("PhotoshopInfo", BYTE, 0), + # FIXME add more tags here + 34665: ("ExifIFD", LONG, 1), + 34675: ("ICCProfile", UNDEFINED, 1), + 34853: ("GPSInfoIFD", LONG, 1), + # MPInfo + 45056: ("MPFVersion", UNDEFINED, 1), + 45057: ("NumberOfImages", LONG, 1), + 45058: ("MPEntry", UNDEFINED, 1), + 45059: ("ImageUIDList", UNDEFINED, 0), # UNDONE, check + 45060: ("TotalFrames", LONG, 1), + 45313: ("MPIndividualNum", LONG, 1), + 45569: ("PanOrientation", LONG, 1), + 45570: ("PanOverlap_H", RATIONAL, 1), + 45571: ("PanOverlap_V", RATIONAL, 1), + 45572: ("BaseViewpointNum", LONG, 1), + 45573: ("ConvergenceAngle", SIGNED_RATIONAL, 1), + 45574: ("BaselineLength", RATIONAL, 1), + 45575: ("VerticalDivergence", SIGNED_RATIONAL, 1), + 45576: ("AxisDistance_X", SIGNED_RATIONAL, 1), + 45577: ("AxisDistance_Y", SIGNED_RATIONAL, 1), + 45578: ("AxisDistance_Z", SIGNED_RATIONAL, 1), + 45579: ("YawAngle", SIGNED_RATIONAL, 1), + 45580: ("PitchAngle", SIGNED_RATIONAL, 1), + 45581: ("RollAngle", SIGNED_RATIONAL, 1), + 50741: ("MakerNoteSafety", SHORT, 1, {"Unsafe": 0, "Safe": 1}), + 50780: ("BestQualityScale", RATIONAL, 1), + 50838: ("ImageJMetaDataByteCounts", LONG, 0), # Can be more than one + 50839: ("ImageJMetaData", UNDEFINED, 1), # see Issue #2006 +} + +# Legacy Tags structure +# these tags aren't included above, but were in the previous versions +TAGS = { + 347: "JPEGTables", + 700: "XMP", + # Additional Exif Info + 32932: "Wang Annotation", + 33434: "ExposureTime", + 33437: "FNumber", + 33445: "MD FileTag", + 33446: "MD ScalePixel", + 33447: "MD ColorTable", + 33448: "MD LabName", + 33449: "MD SampleInfo", + 33450: "MD PrepDate", + 33451: "MD PrepTime", + 33452: "MD FileUnits", + 33550: "ModelPixelScaleTag", + 33723: "IptcNaaInfo", + 33918: "INGR Packet Data Tag", + 33919: "INGR Flag Registers", + 33920: "IrasB Transformation Matrix", + 33922: "ModelTiepointTag", + 34264: "ModelTransformationTag", + 34377: "PhotoshopInfo", + 34735: "GeoKeyDirectoryTag", + 34736: "GeoDoubleParamsTag", + 34737: "GeoAsciiParamsTag", + 34850: "ExposureProgram", + 34852: "SpectralSensitivity", + 34855: "ISOSpeedRatings", + 34856: "OECF", + 34864: "SensitivityType", + 34865: "StandardOutputSensitivity", + 34866: "RecommendedExposureIndex", + 34867: "ISOSpeed", + 34868: "ISOSpeedLatitudeyyy", + 34869: "ISOSpeedLatitudezzz", + 34908: "HylaFAX FaxRecvParams", + 34909: "HylaFAX FaxSubAddress", + 34910: "HylaFAX FaxRecvTime", + 36864: "ExifVersion", + 36867: "DateTimeOriginal", + 36868: "DateTImeDigitized", + 37121: "ComponentsConfiguration", + 37122: "CompressedBitsPerPixel", + 37724: "ImageSourceData", + 37377: "ShutterSpeedValue", + 37378: "ApertureValue", + 37379: "BrightnessValue", + 37380: "ExposureBiasValue", + 37381: "MaxApertureValue", + 37382: "SubjectDistance", + 37383: "MeteringMode", + 37384: "LightSource", + 37385: "Flash", + 37386: "FocalLength", + 37396: "SubjectArea", + 37500: "MakerNote", + 37510: "UserComment", + 37520: "SubSec", + 37521: "SubSecTimeOriginal", + 37522: "SubsecTimeDigitized", + 40960: "FlashPixVersion", + 40961: "ColorSpace", + 40962: "PixelXDimension", + 40963: "PixelYDimension", + 40964: "RelatedSoundFile", + 40965: "InteroperabilityIFD", + 41483: "FlashEnergy", + 41484: "SpatialFrequencyResponse", + 41486: "FocalPlaneXResolution", + 41487: "FocalPlaneYResolution", + 41488: "FocalPlaneResolutionUnit", + 41492: "SubjectLocation", + 41493: "ExposureIndex", + 41495: "SensingMethod", + 41728: "FileSource", + 41729: "SceneType", + 41730: "CFAPattern", + 41985: "CustomRendered", + 41986: "ExposureMode", + 41987: "WhiteBalance", + 41988: "DigitalZoomRatio", + 41989: "FocalLengthIn35mmFilm", + 41990: "SceneCaptureType", + 41991: "GainControl", + 41992: "Contrast", + 41993: "Saturation", + 41994: "Sharpness", + 41995: "DeviceSettingDescription", + 41996: "SubjectDistanceRange", + 42016: "ImageUniqueID", + 42032: "CameraOwnerName", + 42033: "BodySerialNumber", + 42034: "LensSpecification", + 42035: "LensMake", + 42036: "LensModel", + 42037: "LensSerialNumber", + 42112: "GDAL_METADATA", + 42113: "GDAL_NODATA", + 42240: "Gamma", + 50215: "Oce Scanjob Description", + 50216: "Oce Application Selector", + 50217: "Oce Identification Number", + 50218: "Oce ImageLogic Characteristics", + # Adobe DNG + 50706: "DNGVersion", + 50707: "DNGBackwardVersion", + 50708: "UniqueCameraModel", + 50709: "LocalizedCameraModel", + 50710: "CFAPlaneColor", + 50711: "CFALayout", + 50712: "LinearizationTable", + 50713: "BlackLevelRepeatDim", + 50714: "BlackLevel", + 50715: "BlackLevelDeltaH", + 50716: "BlackLevelDeltaV", + 50717: "WhiteLevel", + 50718: "DefaultScale", + 50719: "DefaultCropOrigin", + 50720: "DefaultCropSize", + 50721: "ColorMatrix1", + 50722: "ColorMatrix2", + 50723: "CameraCalibration1", + 50724: "CameraCalibration2", + 50725: "ReductionMatrix1", + 50726: "ReductionMatrix2", + 50727: "AnalogBalance", + 50728: "AsShotNeutral", + 50729: "AsShotWhiteXY", + 50730: "BaselineExposure", + 50731: "BaselineNoise", + 50732: "BaselineSharpness", + 50733: "BayerGreenSplit", + 50734: "LinearResponseLimit", + 50735: "CameraSerialNumber", + 50736: "LensInfo", + 50737: "ChromaBlurRadius", + 50738: "AntiAliasStrength", + 50740: "DNGPrivateData", + 50778: "CalibrationIlluminant1", + 50779: "CalibrationIlluminant2", + 50784: "Alias Layer Metadata", +} + + +def _populate(): + for k, v in TAGS_V2.items(): + # Populate legacy structure. + TAGS[k] = v[0] + if len(v) == 4: + for sk, sv in v[3].items(): + TAGS[(k, sv)] = sk + + TAGS_V2[k] = TagInfo(k, *v) + + +_populate() +## +# Map type numbers to type names -- defined in ImageFileDirectory. + +TYPES = {} + +# was: +# TYPES = { +# 1: "byte", +# 2: "ascii", +# 3: "short", +# 4: "long", +# 5: "rational", +# 6: "signed byte", +# 7: "undefined", +# 8: "signed short", +# 9: "signed long", +# 10: "signed rational", +# 11: "float", +# 12: "double", +# } + +# +# These tags are handled by default in libtiff, without +# adding to the custom dictionary. From tif_dir.c, searching for +# case TIFFTAG in the _TIFFVSetField function: +# Line: item. +# 148: case TIFFTAG_SUBFILETYPE: +# 151: case TIFFTAG_IMAGEWIDTH: +# 154: case TIFFTAG_IMAGELENGTH: +# 157: case TIFFTAG_BITSPERSAMPLE: +# 181: case TIFFTAG_COMPRESSION: +# 202: case TIFFTAG_PHOTOMETRIC: +# 205: case TIFFTAG_THRESHHOLDING: +# 208: case TIFFTAG_FILLORDER: +# 214: case TIFFTAG_ORIENTATION: +# 221: case TIFFTAG_SAMPLESPERPIXEL: +# 228: case TIFFTAG_ROWSPERSTRIP: +# 238: case TIFFTAG_MINSAMPLEVALUE: +# 241: case TIFFTAG_MAXSAMPLEVALUE: +# 244: case TIFFTAG_SMINSAMPLEVALUE: +# 247: case TIFFTAG_SMAXSAMPLEVALUE: +# 250: case TIFFTAG_XRESOLUTION: +# 256: case TIFFTAG_YRESOLUTION: +# 262: case TIFFTAG_PLANARCONFIG: +# 268: case TIFFTAG_XPOSITION: +# 271: case TIFFTAG_YPOSITION: +# 274: case TIFFTAG_RESOLUTIONUNIT: +# 280: case TIFFTAG_PAGENUMBER: +# 284: case TIFFTAG_HALFTONEHINTS: +# 288: case TIFFTAG_COLORMAP: +# 294: case TIFFTAG_EXTRASAMPLES: +# 298: case TIFFTAG_MATTEING: +# 305: case TIFFTAG_TILEWIDTH: +# 316: case TIFFTAG_TILELENGTH: +# 327: case TIFFTAG_TILEDEPTH: +# 333: case TIFFTAG_DATATYPE: +# 344: case TIFFTAG_SAMPLEFORMAT: +# 361: case TIFFTAG_IMAGEDEPTH: +# 364: case TIFFTAG_SUBIFD: +# 376: case TIFFTAG_YCBCRPOSITIONING: +# 379: case TIFFTAG_YCBCRSUBSAMPLING: +# 383: case TIFFTAG_TRANSFERFUNCTION: +# 389: case TIFFTAG_REFERENCEBLACKWHITE: +# 393: case TIFFTAG_INKNAMES: + +# Following pseudo-tags are also handled by default in libtiff: +# TIFFTAG_JPEGQUALITY 65537 + +# some of these are not in our TAGS_V2 dict and were included from tiff.h + +# This list also exists in encode.c +LIBTIFF_CORE = { + 255, + 256, + 257, + 258, + 259, + 262, + 263, + 266, + 274, + 277, + 278, + 280, + 281, + 340, + 341, + 282, + 283, + 284, + 286, + 287, + 296, + 297, + 321, + 320, + 338, + 32995, + 322, + 323, + 32998, + 32996, + 339, + 32997, + 330, + 531, + 530, + 301, + 532, + 333, + # as above + 269, # this has been in our tests forever, and works + 65537, +} + +LIBTIFF_CORE.remove(301) # Array of short, crashes +LIBTIFF_CORE.remove(532) # Array of long, crashes + +LIBTIFF_CORE.remove(255) # We don't have support for subfiletypes +LIBTIFF_CORE.remove(322) # We don't have support for writing tiled images with libtiff +LIBTIFF_CORE.remove(323) # Tiled images +LIBTIFF_CORE.remove(333) # Ink Names either + +# Note to advanced users: There may be combinations of these +# parameters and values that when added properly, will work and +# produce valid tiff images that may work in your application. +# It is safe to add and remove tags from this set from Pillow's point +# of view so long as you test against libtiff. diff --git a/venv/Lib/site-packages/PIL/WalImageFile.py b/venv/Lib/site-packages/PIL/WalImageFile.py new file mode 100644 index 00000000..b578d698 --- /dev/null +++ b/venv/Lib/site-packages/PIL/WalImageFile.py @@ -0,0 +1,126 @@ +# +# The Python Imaging Library. +# $Id$ +# +# WAL file handling +# +# History: +# 2003-04-23 fl created +# +# Copyright (c) 2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +""" +This reader is based on the specification available from: +https://www.flipcode.com/archives/Quake_2_BSP_File_Format.shtml +and has been tested with a few sample files found using google. + +.. note:: + This format cannot be automatically recognized, so the reader + is not registered for use with :py:func:`PIL.Image.open()`. + To open a WAL file, use the :py:func:`PIL.WalImageFile.open()` function instead. +""" + +import builtins + +from . import Image +from ._binary import i32le as i32 + + +def open(filename): + """ + Load texture from a Quake2 WAL texture file. + + By default, a Quake2 standard palette is attached to the texture. + To override the palette, use the :py:func:`PIL.Image.Image.putpalette()` method. + + :param filename: WAL file name, or an opened file handle. + :returns: An image instance. + """ + # FIXME: modify to return a WalImageFile instance instead of + # plain Image object ? + + def imopen(fp): + # read header fields + header = fp.read(32 + 24 + 32 + 12) + size = i32(header, 32), i32(header, 36) + offset = i32(header, 40) + + # load pixel data + fp.seek(offset) + + Image._decompression_bomb_check(size) + im = Image.frombytes("P", size, fp.read(size[0] * size[1])) + im.putpalette(quake2palette) + + im.format = "WAL" + im.format_description = "Quake2 Texture" + + # strings are null-terminated + im.info["name"] = header[:32].split(b"\0", 1)[0] + next_name = header[56 : 56 + 32].split(b"\0", 1)[0] + if next_name: + im.info["next_name"] = next_name + + return im + + if hasattr(filename, "read"): + return imopen(filename) + else: + with builtins.open(filename, "rb") as fp: + return imopen(fp) + + +quake2palette = ( + # default palette taken from piffo 0.93 by Hans Häggström + b"\x01\x01\x01\x0b\x0b\x0b\x12\x12\x12\x17\x17\x17\x1b\x1b\x1b\x1e" + b"\x1e\x1e\x22\x22\x22\x26\x26\x26\x29\x29\x29\x2c\x2c\x2c\x2f\x2f" + b"\x2f\x32\x32\x32\x35\x35\x35\x37\x37\x37\x3a\x3a\x3a\x3c\x3c\x3c" + b"\x24\x1e\x13\x22\x1c\x12\x20\x1b\x12\x1f\x1a\x10\x1d\x19\x10\x1b" + b"\x17\x0f\x1a\x16\x0f\x18\x14\x0d\x17\x13\x0d\x16\x12\x0d\x14\x10" + b"\x0b\x13\x0f\x0b\x10\x0d\x0a\x0f\x0b\x0a\x0d\x0b\x07\x0b\x0a\x07" + b"\x23\x23\x26\x22\x22\x25\x22\x20\x23\x21\x1f\x22\x20\x1e\x20\x1f" + b"\x1d\x1e\x1d\x1b\x1c\x1b\x1a\x1a\x1a\x19\x19\x18\x17\x17\x17\x16" + b"\x16\x14\x14\x14\x13\x13\x13\x10\x10\x10\x0f\x0f\x0f\x0d\x0d\x0d" + b"\x2d\x28\x20\x29\x24\x1c\x27\x22\x1a\x25\x1f\x17\x38\x2e\x1e\x31" + b"\x29\x1a\x2c\x25\x17\x26\x20\x14\x3c\x30\x14\x37\x2c\x13\x33\x28" + b"\x12\x2d\x24\x10\x28\x1f\x0f\x22\x1a\x0b\x1b\x14\x0a\x13\x0f\x07" + b"\x31\x1a\x16\x30\x17\x13\x2e\x16\x10\x2c\x14\x0d\x2a\x12\x0b\x27" + b"\x0f\x0a\x25\x0f\x07\x21\x0d\x01\x1e\x0b\x01\x1c\x0b\x01\x1a\x0b" + b"\x01\x18\x0a\x01\x16\x0a\x01\x13\x0a\x01\x10\x07\x01\x0d\x07\x01" + b"\x29\x23\x1e\x27\x21\x1c\x26\x20\x1b\x25\x1f\x1a\x23\x1d\x19\x21" + b"\x1c\x18\x20\x1b\x17\x1e\x19\x16\x1c\x18\x14\x1b\x17\x13\x19\x14" + b"\x10\x17\x13\x0f\x14\x10\x0d\x12\x0f\x0b\x0f\x0b\x0a\x0b\x0a\x07" + b"\x26\x1a\x0f\x23\x19\x0f\x20\x17\x0f\x1c\x16\x0f\x19\x13\x0d\x14" + b"\x10\x0b\x10\x0d\x0a\x0b\x0a\x07\x33\x22\x1f\x35\x29\x26\x37\x2f" + b"\x2d\x39\x35\x34\x37\x39\x3a\x33\x37\x39\x30\x34\x36\x2b\x31\x34" + b"\x27\x2e\x31\x22\x2b\x2f\x1d\x28\x2c\x17\x25\x2a\x0f\x20\x26\x0d" + b"\x1e\x25\x0b\x1c\x22\x0a\x1b\x20\x07\x19\x1e\x07\x17\x1b\x07\x14" + b"\x18\x01\x12\x16\x01\x0f\x12\x01\x0b\x0d\x01\x07\x0a\x01\x01\x01" + b"\x2c\x21\x21\x2a\x1f\x1f\x29\x1d\x1d\x27\x1c\x1c\x26\x1a\x1a\x24" + b"\x18\x18\x22\x17\x17\x21\x16\x16\x1e\x13\x13\x1b\x12\x12\x18\x10" + b"\x10\x16\x0d\x0d\x12\x0b\x0b\x0d\x0a\x0a\x0a\x07\x07\x01\x01\x01" + b"\x2e\x30\x29\x2d\x2e\x27\x2b\x2c\x26\x2a\x2a\x24\x28\x29\x23\x27" + b"\x27\x21\x26\x26\x1f\x24\x24\x1d\x22\x22\x1c\x1f\x1f\x1a\x1c\x1c" + b"\x18\x19\x19\x16\x17\x17\x13\x13\x13\x10\x0f\x0f\x0d\x0b\x0b\x0a" + b"\x30\x1e\x1b\x2d\x1c\x19\x2c\x1a\x17\x2a\x19\x14\x28\x17\x13\x26" + b"\x16\x10\x24\x13\x0f\x21\x12\x0d\x1f\x10\x0b\x1c\x0f\x0a\x19\x0d" + b"\x0a\x16\x0b\x07\x12\x0a\x07\x0f\x07\x01\x0a\x01\x01\x01\x01\x01" + b"\x28\x29\x38\x26\x27\x36\x25\x26\x34\x24\x24\x31\x22\x22\x2f\x20" + b"\x21\x2d\x1e\x1f\x2a\x1d\x1d\x27\x1b\x1b\x25\x19\x19\x21\x17\x17" + b"\x1e\x14\x14\x1b\x13\x12\x17\x10\x0f\x13\x0d\x0b\x0f\x0a\x07\x07" + b"\x2f\x32\x29\x2d\x30\x26\x2b\x2e\x24\x29\x2c\x21\x27\x2a\x1e\x25" + b"\x28\x1c\x23\x26\x1a\x21\x25\x18\x1e\x22\x14\x1b\x1f\x10\x19\x1c" + b"\x0d\x17\x1a\x0a\x13\x17\x07\x10\x13\x01\x0d\x0f\x01\x0a\x0b\x01" + b"\x01\x3f\x01\x13\x3c\x0b\x1b\x39\x10\x20\x35\x14\x23\x31\x17\x23" + b"\x2d\x18\x23\x29\x18\x3f\x3f\x3f\x3f\x3f\x39\x3f\x3f\x31\x3f\x3f" + b"\x2a\x3f\x3f\x20\x3f\x3f\x14\x3f\x3c\x12\x3f\x39\x0f\x3f\x35\x0b" + b"\x3f\x32\x07\x3f\x2d\x01\x3d\x2a\x01\x3b\x26\x01\x39\x21\x01\x37" + b"\x1d\x01\x34\x1a\x01\x32\x16\x01\x2f\x12\x01\x2d\x0f\x01\x2a\x0b" + b"\x01\x27\x07\x01\x23\x01\x01\x1d\x01\x01\x17\x01\x01\x10\x01\x01" + b"\x3d\x01\x01\x19\x19\x3f\x3f\x01\x01\x01\x01\x3f\x16\x16\x13\x10" + b"\x10\x0f\x0d\x0d\x0b\x3c\x2e\x2a\x36\x27\x20\x30\x21\x18\x29\x1b" + b"\x10\x3c\x39\x37\x37\x32\x2f\x31\x2c\x28\x2b\x26\x21\x30\x22\x20" +) diff --git a/venv/Lib/site-packages/PIL/WebPImagePlugin.py b/venv/Lib/site-packages/PIL/WebPImagePlugin.py new file mode 100644 index 00000000..2e9746fa --- /dev/null +++ b/venv/Lib/site-packages/PIL/WebPImagePlugin.py @@ -0,0 +1,351 @@ +from io import BytesIO + +from . import Image, ImageFile + +try: + from . import _webp + + SUPPORTED = True +except ImportError: + SUPPORTED = False + + +_VALID_WEBP_MODES = {"RGBX": True, "RGBA": True, "RGB": True} + +_VALID_WEBP_LEGACY_MODES = {"RGB": True, "RGBA": True} + +_VP8_MODES_BY_IDENTIFIER = { + b"VP8 ": "RGB", + b"VP8X": "RGBA", + b"VP8L": "RGBA", # lossless +} + + +def _accept(prefix): + is_riff_file_format = prefix[:4] == b"RIFF" + is_webp_file = prefix[8:12] == b"WEBP" + is_valid_vp8_mode = prefix[12:16] in _VP8_MODES_BY_IDENTIFIER + + if is_riff_file_format and is_webp_file and is_valid_vp8_mode: + if not SUPPORTED: + return ( + "image file could not be identified because WEBP support not installed" + ) + return True + + +class WebPImageFile(ImageFile.ImageFile): + + format = "WEBP" + format_description = "WebP image" + __loaded = 0 + __logical_frame = 0 + + def _open(self): + if not _webp.HAVE_WEBPANIM: + # Legacy mode + data, width, height, self.mode, icc_profile, exif = _webp.WebPDecode( + self.fp.read() + ) + if icc_profile: + self.info["icc_profile"] = icc_profile + if exif: + self.info["exif"] = exif + self._size = width, height + self.fp = BytesIO(data) + self.tile = [("raw", (0, 0) + self.size, 0, self.mode)] + self.n_frames = 1 + self.is_animated = False + return + + # Use the newer AnimDecoder API to parse the (possibly) animated file, + # and access muxed chunks like ICC/EXIF/XMP. + self._decoder = _webp.WebPAnimDecoder(self.fp.read()) + + # Get info from decoder + width, height, loop_count, bgcolor, frame_count, mode = self._decoder.get_info() + self._size = width, height + self.info["loop"] = loop_count + bg_a, bg_r, bg_g, bg_b = ( + (bgcolor >> 24) & 0xFF, + (bgcolor >> 16) & 0xFF, + (bgcolor >> 8) & 0xFF, + bgcolor & 0xFF, + ) + self.info["background"] = (bg_r, bg_g, bg_b, bg_a) + self.n_frames = frame_count + self.is_animated = self.n_frames > 1 + self.mode = "RGB" if mode == "RGBX" else mode + self.rawmode = mode + self.tile = [] + + # Attempt to read ICC / EXIF / XMP chunks from file + icc_profile = self._decoder.get_chunk("ICCP") + exif = self._decoder.get_chunk("EXIF") + xmp = self._decoder.get_chunk("XMP ") + if icc_profile: + self.info["icc_profile"] = icc_profile + if exif: + self.info["exif"] = exif + if xmp: + self.info["xmp"] = xmp + + # Initialize seek state + self._reset(reset=False) + + def _getexif(self): + if "exif" not in self.info: + return None + return dict(self.getexif()) + + def seek(self, frame): + if not self._seek_check(frame): + return + + # Set logical frame to requested position + self.__logical_frame = frame + + def _reset(self, reset=True): + if reset: + self._decoder.reset() + self.__physical_frame = 0 + self.__loaded = -1 + self.__timestamp = 0 + + def _get_next(self): + # Get next frame + ret = self._decoder.get_next() + self.__physical_frame += 1 + + # Check if an error occurred + if ret is None: + self._reset() # Reset just to be safe + self.seek(0) + raise EOFError("failed to decode next frame in WebP file") + + # Compute duration + data, timestamp = ret + duration = timestamp - self.__timestamp + self.__timestamp = timestamp + + # libwebp gives frame end, adjust to start of frame + timestamp -= duration + return data, timestamp, duration + + def _seek(self, frame): + if self.__physical_frame == frame: + return # Nothing to do + if frame < self.__physical_frame: + self._reset() # Rewind to beginning + while self.__physical_frame < frame: + self._get_next() # Advance to the requested frame + + def load(self): + if _webp.HAVE_WEBPANIM: + if self.__loaded != self.__logical_frame: + self._seek(self.__logical_frame) + + # We need to load the image data for this frame + data, timestamp, duration = self._get_next() + self.info["timestamp"] = timestamp + self.info["duration"] = duration + self.__loaded = self.__logical_frame + + # Set tile + if self.fp and self._exclusive_fp: + self.fp.close() + self.fp = BytesIO(data) + self.tile = [("raw", (0, 0) + self.size, 0, self.rawmode)] + + return super().load() + + def tell(self): + if not _webp.HAVE_WEBPANIM: + return super().tell() + + return self.__logical_frame + + +def _save_all(im, fp, filename): + encoderinfo = im.encoderinfo.copy() + append_images = list(encoderinfo.get("append_images", [])) + + # If total frame count is 1, then save using the legacy API, which + # will preserve non-alpha modes + total = 0 + for ims in [im] + append_images: + total += getattr(ims, "n_frames", 1) + if total == 1: + _save(im, fp, filename) + return + + background = (0, 0, 0, 0) + if "background" in encoderinfo: + background = encoderinfo["background"] + elif "background" in im.info: + background = im.info["background"] + if isinstance(background, int): + # GifImagePlugin stores a global color table index in + # info["background"]. So it must be converted to an RGBA value + palette = im.getpalette() + if palette: + r, g, b = palette[background * 3 : (background + 1) * 3] + background = (r, g, b, 0) + + duration = im.encoderinfo.get("duration", 0) + loop = im.encoderinfo.get("loop", 0) + minimize_size = im.encoderinfo.get("minimize_size", False) + kmin = im.encoderinfo.get("kmin", None) + kmax = im.encoderinfo.get("kmax", None) + allow_mixed = im.encoderinfo.get("allow_mixed", False) + verbose = False + lossless = im.encoderinfo.get("lossless", False) + quality = im.encoderinfo.get("quality", 80) + method = im.encoderinfo.get("method", 0) + icc_profile = im.encoderinfo.get("icc_profile", "") + exif = im.encoderinfo.get("exif", "") + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + xmp = im.encoderinfo.get("xmp", "") + if allow_mixed: + lossless = False + + # Sensible keyframe defaults are from gif2webp.c script + if kmin is None: + kmin = 9 if lossless else 3 + if kmax is None: + kmax = 17 if lossless else 5 + + # Validate background color + if ( + not isinstance(background, (list, tuple)) + or len(background) != 4 + or not all(v >= 0 and v < 256 for v in background) + ): + raise OSError( + "Background color is not an RGBA tuple clamped to (0-255): %s" + % str(background) + ) + + # Convert to packed uint + bg_r, bg_g, bg_b, bg_a = background + background = (bg_a << 24) | (bg_r << 16) | (bg_g << 8) | (bg_b << 0) + + # Setup the WebP animation encoder + enc = _webp.WebPAnimEncoder( + im.size[0], + im.size[1], + background, + loop, + minimize_size, + kmin, + kmax, + allow_mixed, + verbose, + ) + + # Add each frame + frame_idx = 0 + timestamp = 0 + cur_idx = im.tell() + try: + for ims in [im] + append_images: + # Get # of frames in this image + nfr = getattr(ims, "n_frames", 1) + + for idx in range(nfr): + ims.seek(idx) + ims.load() + + # Make sure image mode is supported + frame = ims + rawmode = ims.mode + if ims.mode not in _VALID_WEBP_MODES: + alpha = ( + "A" in ims.mode + or "a" in ims.mode + or (ims.mode == "P" and "A" in ims.im.getpalettemode()) + ) + rawmode = "RGBA" if alpha else "RGB" + frame = ims.convert(rawmode) + + if rawmode == "RGB": + # For faster conversion, use RGBX + rawmode = "RGBX" + + # Append the frame to the animation encoder + enc.add( + frame.tobytes("raw", rawmode), + timestamp, + frame.size[0], + frame.size[1], + rawmode, + lossless, + quality, + method, + ) + + # Update timestamp and frame index + if isinstance(duration, (list, tuple)): + timestamp += duration[frame_idx] + else: + timestamp += duration + frame_idx += 1 + + finally: + im.seek(cur_idx) + + # Force encoder to flush frames + enc.add(None, timestamp, 0, 0, "", lossless, quality, 0) + + # Get the final output from the encoder + data = enc.assemble(icc_profile, exif, xmp) + if data is None: + raise OSError("cannot write file as WebP (encoder returned None)") + + fp.write(data) + + +def _save(im, fp, filename): + lossless = im.encoderinfo.get("lossless", False) + quality = im.encoderinfo.get("quality", 80) + icc_profile = im.encoderinfo.get("icc_profile", "") + exif = im.encoderinfo.get("exif", "") + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + xmp = im.encoderinfo.get("xmp", "") + method = im.encoderinfo.get("method", 0) + + if im.mode not in _VALID_WEBP_LEGACY_MODES: + alpha = ( + "A" in im.mode + or "a" in im.mode + or (im.mode == "P" and "A" in im.im.getpalettemode()) + ) + im = im.convert("RGBA" if alpha else "RGB") + + data = _webp.WebPEncode( + im.tobytes(), + im.size[0], + im.size[1], + lossless, + float(quality), + im.mode, + icc_profile, + method, + exif, + xmp, + ) + if data is None: + raise OSError("cannot write file as WebP (encoder returned None)") + + fp.write(data) + + +Image.register_open(WebPImageFile.format, WebPImageFile, _accept) +if SUPPORTED: + Image.register_save(WebPImageFile.format, _save) + if _webp.HAVE_WEBPANIM: + Image.register_save_all(WebPImageFile.format, _save_all) + Image.register_extension(WebPImageFile.format, ".webp") + Image.register_mime(WebPImageFile.format, "image/webp") diff --git a/venv/Lib/site-packages/PIL/WmfImagePlugin.py b/venv/Lib/site-packages/PIL/WmfImagePlugin.py new file mode 100644 index 00000000..024222c9 --- /dev/null +++ b/venv/Lib/site-packages/PIL/WmfImagePlugin.py @@ -0,0 +1,175 @@ +# +# The Python Imaging Library +# $Id$ +# +# WMF stub codec +# +# history: +# 1996-12-14 fl Created +# 2004-02-22 fl Turned into a stub driver +# 2004-02-23 fl Added EMF support +# +# Copyright (c) Secret Labs AB 1997-2004. All rights reserved. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# +# WMF/EMF reference documentation: +# https://winprotocoldoc.blob.core.windows.net/productionwindowsarchives/MS-WMF/[MS-WMF].pdf +# http://wvware.sourceforge.net/caolan/index.html +# http://wvware.sourceforge.net/caolan/ora-wmf.html + +from . import Image, ImageFile +from ._binary import i16le as word, i32le as dword, si16le as short, si32le as _long + +_handler = None + + +def register_handler(handler): + """ + Install application-specific WMF image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +if hasattr(Image.core, "drawwmf"): + # install default handler (windows only) + + class WmfHandler: + def open(self, im): + im.mode = "RGB" + self.bbox = im.info["wmf_bbox"] + + def load(self, im): + im.fp.seek(0) # rewind + return Image.frombytes( + "RGB", + im.size, + Image.core.drawwmf(im.fp.read(), im.size, self.bbox), + "raw", + "BGR", + (im.size[0] * 3 + 3) & -4, + -1, + ) + + register_handler(WmfHandler()) + +# +# -------------------------------------------------------------------- +# Read WMF file + + +def _accept(prefix): + return ( + prefix[:6] == b"\xd7\xcd\xc6\x9a\x00\x00" or prefix[:4] == b"\x01\x00\x00\x00" + ) + + +## +# Image plugin for Windows metafiles. + + +class WmfStubImageFile(ImageFile.StubImageFile): + + format = "WMF" + format_description = "Windows Metafile" + + def _open(self): + self._inch = None + + # check placable header + s = self.fp.read(80) + + if s[:6] == b"\xd7\xcd\xc6\x9a\x00\x00": + + # placeable windows metafile + + # get units per inch + self._inch = word(s, 14) + + # get bounding box + x0 = short(s, 6) + y0 = short(s, 8) + x1 = short(s, 10) + y1 = short(s, 12) + + # normalize size to 72 dots per inch + self.info["dpi"] = 72 + size = ( + (x1 - x0) * self.info["dpi"] // self._inch, + (y1 - y0) * self.info["dpi"] // self._inch, + ) + + self.info["wmf_bbox"] = x0, y0, x1, y1 + + # sanity check (standard metafile header) + if s[22:26] != b"\x01\x00\t\x00": + raise SyntaxError("Unsupported WMF file format") + + elif dword(s) == 1 and s[40:44] == b" EMF": + # enhanced metafile + + # get bounding box + x0 = _long(s, 8) + y0 = _long(s, 12) + x1 = _long(s, 16) + y1 = _long(s, 20) + + # get frame (in 0.01 millimeter units) + frame = _long(s, 24), _long(s, 28), _long(s, 32), _long(s, 36) + + size = x1 - x0, y1 - y0 + + # calculate dots per inch from bbox and frame + xdpi = int(2540.0 * (x1 - y0) / (frame[2] - frame[0]) + 0.5) + ydpi = int(2540.0 * (y1 - y0) / (frame[3] - frame[1]) + 0.5) + + self.info["wmf_bbox"] = x0, y0, x1, y1 + + if xdpi == ydpi: + self.info["dpi"] = xdpi + else: + self.info["dpi"] = xdpi, ydpi + + else: + raise SyntaxError("Unsupported file format") + + self.mode = "RGB" + self._size = size + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + def load(self, dpi=None): + if dpi is not None and self._inch is not None: + self.info["dpi"] = int(dpi + 0.5) + x0, y0, x1, y1 = self.info["wmf_bbox"] + self._size = ( + (x1 - x0) * self.info["dpi"] // self._inch, + (y1 - y0) * self.info["dpi"] // self._inch, + ) + super().load() + + +def _save(im, fp, filename): + if _handler is None or not hasattr(_handler, "save"): + raise OSError("WMF save handler not installed") + _handler.save(im, fp, filename) + + +# +# -------------------------------------------------------------------- +# Registry stuff + + +Image.register_open(WmfStubImageFile.format, WmfStubImageFile, _accept) +Image.register_save(WmfStubImageFile.format, _save) + +Image.register_extensions(WmfStubImageFile.format, [".wmf", ".emf"]) diff --git a/venv/Lib/site-packages/PIL/XVThumbImagePlugin.py b/venv/Lib/site-packages/PIL/XVThumbImagePlugin.py new file mode 100644 index 00000000..c0d8db09 --- /dev/null +++ b/venv/Lib/site-packages/PIL/XVThumbImagePlugin.py @@ -0,0 +1,78 @@ +# +# The Python Imaging Library. +# $Id$ +# +# XV Thumbnail file handler by Charles E. "Gene" Cash +# (gcash@magicnet.net) +# +# see xvcolor.c and xvbrowse.c in the sources to John Bradley's XV, +# available from ftp://ftp.cis.upenn.edu/pub/xv/ +# +# history: +# 98-08-15 cec created (b/w only) +# 98-12-09 cec added color palette +# 98-12-28 fl added to PIL (with only a few very minor modifications) +# +# To do: +# FIXME: make save work (this requires quantization support) +# + +from . import Image, ImageFile, ImagePalette +from ._binary import i8, o8 + +_MAGIC = b"P7 332" + +# standard color palette for thumbnails (RGB332) +PALETTE = b"" +for r in range(8): + for g in range(8): + for b in range(4): + PALETTE = PALETTE + ( + o8((r * 255) // 7) + o8((g * 255) // 7) + o8((b * 255) // 3) + ) + + +def _accept(prefix): + return prefix[:6] == _MAGIC + + +## +# Image plugin for XV thumbnail images. + + +class XVThumbImageFile(ImageFile.ImageFile): + + format = "XVThumb" + format_description = "XV thumbnail image" + + def _open(self): + + # check magic + if not _accept(self.fp.read(6)): + raise SyntaxError("not an XV thumbnail file") + + # Skip to beginning of next line + self.fp.readline() + + # skip info comments + while True: + s = self.fp.readline() + if not s: + raise SyntaxError("Unexpected EOF reading XV thumbnail file") + if i8(s[0]) != 35: # ie. when not a comment: '#' + break + + # parse header line (already read) + s = s.strip().split() + + self.mode = "P" + self._size = int(s[0]), int(s[1]) + + self.palette = ImagePalette.raw("RGB", PALETTE) + + self.tile = [("raw", (0, 0) + self.size, self.fp.tell(), (self.mode, 0, 1))] + + +# -------------------------------------------------------------------- + +Image.register_open(XVThumbImageFile.format, XVThumbImageFile, _accept) diff --git a/venv/Lib/site-packages/PIL/XbmImagePlugin.py b/venv/Lib/site-packages/PIL/XbmImagePlugin.py new file mode 100644 index 00000000..ead9722c --- /dev/null +++ b/venv/Lib/site-packages/PIL/XbmImagePlugin.py @@ -0,0 +1,94 @@ +# +# The Python Imaging Library. +# $Id$ +# +# XBM File handling +# +# History: +# 1995-09-08 fl Created +# 1996-11-01 fl Added save support +# 1997-07-07 fl Made header parser more tolerant +# 1997-07-22 fl Fixed yet another parser bug +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.4) +# 2001-05-13 fl Added hotspot handling (based on code from Bernhard Herzog) +# 2004-02-24 fl Allow some whitespace before first #define +# +# Copyright (c) 1997-2004 by Secret Labs AB +# Copyright (c) 1996-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import re + +from . import Image, ImageFile + +# XBM header +xbm_head = re.compile( + br"\s*#define[ \t]+.*_width[ \t]+(?P[0-9]+)[\r\n]+" + b"#define[ \t]+.*_height[ \t]+(?P[0-9]+)[\r\n]+" + b"(?P" + b"#define[ \t]+[^_]*_x_hot[ \t]+(?P[0-9]+)[\r\n]+" + b"#define[ \t]+[^_]*_y_hot[ \t]+(?P[0-9]+)[\r\n]+" + b")?" + b"[\\000-\\377]*_bits\\[\\]" +) + + +def _accept(prefix): + return prefix.lstrip()[:7] == b"#define" + + +## +# Image plugin for X11 bitmaps. + + +class XbmImageFile(ImageFile.ImageFile): + + format = "XBM" + format_description = "X11 Bitmap" + + def _open(self): + + m = xbm_head.match(self.fp.read(512)) + + if m: + + xsize = int(m.group("width")) + ysize = int(m.group("height")) + + if m.group("hotspot"): + self.info["hotspot"] = (int(m.group("xhot")), int(m.group("yhot"))) + + self.mode = "1" + self._size = xsize, ysize + + self.tile = [("xbm", (0, 0) + self.size, m.end(), None)] + + +def _save(im, fp, filename): + + if im.mode != "1": + raise OSError("cannot write mode %s as XBM" % im.mode) + + fp.write(("#define im_width %d\n" % im.size[0]).encode("ascii")) + fp.write(("#define im_height %d\n" % im.size[1]).encode("ascii")) + + hotspot = im.encoderinfo.get("hotspot") + if hotspot: + fp.write(("#define im_x_hot %d\n" % hotspot[0]).encode("ascii")) + fp.write(("#define im_y_hot %d\n" % hotspot[1]).encode("ascii")) + + fp.write(b"static char im_bits[] = {\n") + + ImageFile._save(im, fp, [("xbm", (0, 0) + im.size, 0, None)]) + + fp.write(b"};\n") + + +Image.register_open(XbmImageFile.format, XbmImageFile, _accept) +Image.register_save(XbmImageFile.format, _save) + +Image.register_extension(XbmImageFile.format, ".xbm") + +Image.register_mime(XbmImageFile.format, "image/xbm") diff --git a/venv/Lib/site-packages/PIL/XpmImagePlugin.py b/venv/Lib/site-packages/PIL/XpmImagePlugin.py new file mode 100644 index 00000000..d8bd00a1 --- /dev/null +++ b/venv/Lib/site-packages/PIL/XpmImagePlugin.py @@ -0,0 +1,130 @@ +# +# The Python Imaging Library. +# $Id$ +# +# XPM File handling +# +# History: +# 1996-12-29 fl Created +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.7) +# +# Copyright (c) Secret Labs AB 1997-2001. +# Copyright (c) Fredrik Lundh 1996-2001. +# +# See the README file for information on usage and redistribution. +# + + +import re + +from . import Image, ImageFile, ImagePalette +from ._binary import i8, o8 + +# XPM header +xpm_head = re.compile(b'"([0-9]*) ([0-9]*) ([0-9]*) ([0-9]*)') + + +def _accept(prefix): + return prefix[:9] == b"/* XPM */" + + +## +# Image plugin for X11 pixel maps. + + +class XpmImageFile(ImageFile.ImageFile): + + format = "XPM" + format_description = "X11 Pixel Map" + + def _open(self): + + if not _accept(self.fp.read(9)): + raise SyntaxError("not an XPM file") + + # skip forward to next string + while True: + s = self.fp.readline() + if not s: + raise SyntaxError("broken XPM file") + m = xpm_head.match(s) + if m: + break + + self._size = int(m.group(1)), int(m.group(2)) + + pal = int(m.group(3)) + bpp = int(m.group(4)) + + if pal > 256 or bpp != 1: + raise ValueError("cannot read this XPM file") + + # + # load palette description + + palette = [b"\0\0\0"] * 256 + + for i in range(pal): + + s = self.fp.readline() + if s[-2:] == b"\r\n": + s = s[:-2] + elif s[-1:] in b"\r\n": + s = s[:-1] + + c = i8(s[1]) + s = s[2:-2].split() + + for i in range(0, len(s), 2): + + if s[i] == b"c": + + # process colour key + rgb = s[i + 1] + if rgb == b"None": + self.info["transparency"] = c + elif rgb[0:1] == b"#": + # FIXME: handle colour names (see ImagePalette.py) + rgb = int(rgb[1:], 16) + palette[c] = ( + o8((rgb >> 16) & 255) + o8((rgb >> 8) & 255) + o8(rgb & 255) + ) + else: + # unknown colour + raise ValueError("cannot read this XPM file") + break + + else: + + # missing colour key + raise ValueError("cannot read this XPM file") + + self.mode = "P" + self.palette = ImagePalette.raw("RGB", b"".join(palette)) + + self.tile = [("raw", (0, 0) + self.size, self.fp.tell(), ("P", 0, 1))] + + def load_read(self, bytes): + + # + # load all image data in one chunk + + xsize, ysize = self.size + + s = [None] * ysize + + for i in range(ysize): + s[i] = self.fp.readline()[1 : xsize + 1].ljust(xsize) + + return b"".join(s) + + +# +# Registry + + +Image.register_open(XpmImageFile.format, XpmImageFile, _accept) + +Image.register_extension(XpmImageFile.format, ".xpm") + +Image.register_mime(XpmImageFile.format, "image/xpm") diff --git a/venv/Lib/site-packages/PIL/__init__.py b/venv/Lib/site-packages/PIL/__init__.py new file mode 100644 index 00000000..d225ed13 --- /dev/null +++ b/venv/Lib/site-packages/PIL/__init__.py @@ -0,0 +1,139 @@ +"""Pillow (Fork of the Python Imaging Library) + +Pillow is the friendly PIL fork by Alex Clark and Contributors. + https://github.com/python-pillow/Pillow/ + +Pillow is forked from PIL 1.1.7. + +PIL is the Python Imaging Library by Fredrik Lundh and Contributors. +Copyright (c) 1999 by Secret Labs AB. + +Use PIL.__version__ for this Pillow version. + +;-) +""" + +import sys +import warnings + +from . import _version + +# VERSION was removed in Pillow 6.0.0. +__version__ = _version.__version__ + + +# PILLOW_VERSION is deprecated and will be removed in a future release. +# Use __version__ instead. +def _raise_version_warning(): + warnings.warn( + "PILLOW_VERSION is deprecated and will be removed in a future release. " + "Use __version__ instead.", + DeprecationWarning, + stacklevel=3, + ) + + +if sys.version_info >= (3, 7): + + def __getattr__(name): + if name == "PILLOW_VERSION": + _raise_version_warning() + return __version__ + raise AttributeError("module '{}' has no attribute '{}'".format(__name__, name)) + + +else: + + class _Deprecated_Version(str): + def __str__(self): + _raise_version_warning() + return super().__str__() + + def __getitem__(self, key): + _raise_version_warning() + return super().__getitem__(key) + + def __eq__(self, other): + _raise_version_warning() + return super().__eq__(other) + + def __ne__(self, other): + _raise_version_warning() + return super().__ne__(other) + + def __gt__(self, other): + _raise_version_warning() + return super().__gt__(other) + + def __lt__(self, other): + _raise_version_warning() + return super().__lt__(other) + + def __ge__(self, other): + _raise_version_warning() + return super().__gt__(other) + + def __le__(self, other): + _raise_version_warning() + return super().__lt__(other) + + PILLOW_VERSION = _Deprecated_Version(__version__) + +del _version + + +_plugins = [ + "BlpImagePlugin", + "BmpImagePlugin", + "BufrStubImagePlugin", + "CurImagePlugin", + "DcxImagePlugin", + "DdsImagePlugin", + "EpsImagePlugin", + "FitsStubImagePlugin", + "FliImagePlugin", + "FpxImagePlugin", + "FtexImagePlugin", + "GbrImagePlugin", + "GifImagePlugin", + "GribStubImagePlugin", + "Hdf5StubImagePlugin", + "IcnsImagePlugin", + "IcoImagePlugin", + "ImImagePlugin", + "ImtImagePlugin", + "IptcImagePlugin", + "JpegImagePlugin", + "Jpeg2KImagePlugin", + "McIdasImagePlugin", + "MicImagePlugin", + "MpegImagePlugin", + "MpoImagePlugin", + "MspImagePlugin", + "PalmImagePlugin", + "PcdImagePlugin", + "PcxImagePlugin", + "PdfImagePlugin", + "PixarImagePlugin", + "PngImagePlugin", + "PpmImagePlugin", + "PsdImagePlugin", + "SgiImagePlugin", + "SpiderImagePlugin", + "SunImagePlugin", + "TgaImagePlugin", + "TiffImagePlugin", + "WebPImagePlugin", + "WmfImagePlugin", + "XbmImagePlugin", + "XpmImagePlugin", + "XVThumbImagePlugin", +] + + +class UnidentifiedImageError(OSError): + """ + Raised in :py:meth:`PIL.Image.open` if an image cannot be opened and identified. + """ + + pass diff --git a/venv/Lib/site-packages/PIL/__main__.py b/venv/Lib/site-packages/PIL/__main__.py new file mode 100644 index 00000000..a05323f9 --- /dev/null +++ b/venv/Lib/site-packages/PIL/__main__.py @@ -0,0 +1,3 @@ +from .features import pilinfo + +pilinfo() diff --git a/venv/Lib/site-packages/PIL/_binary.py b/venv/Lib/site-packages/PIL/_binary.py new file mode 100644 index 00000000..5564f450 --- /dev/null +++ b/venv/Lib/site-packages/PIL/_binary.py @@ -0,0 +1,92 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Binary input/output support routines. +# +# Copyright (c) 1997-2003 by Secret Labs AB +# Copyright (c) 1995-2003 by Fredrik Lundh +# Copyright (c) 2012 by Brian Crowell +# +# See the README file for information on usage and redistribution. +# + + +"""Binary input/output support routines.""" + + +from struct import pack, unpack_from + + +def i8(c): + return c if c.__class__ is int else c[0] + + +def o8(i): + return bytes((i & 255,)) + + +# Input, le = little endian, be = big endian +def i16le(c, o=0): + """ + Converts a 2-bytes (16 bits) string to an unsigned integer. + + :param c: string containing bytes to convert + :param o: offset of bytes to convert in string + """ + return unpack_from("H", c, o)[0] + + +def i32be(c, o=0): + return unpack_from(">I", c, o)[0] + + +# Output, le = little endian, be = big endian +def o16le(i): + return pack("H", i) + + +def o32be(i): + return pack(">I", i) diff --git a/venv/Lib/site-packages/PIL/_imaging.cp36-win_amd64.pyd b/venv/Lib/site-packages/PIL/_imaging.cp36-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..5fb4763edcd117f6a7a1ec6bc1dde160e7588c90 GIT binary patch literal 2516480 zcmeEv3wTu3wSN)_1SOo*62+G2s52VWp{PXB5}OD~2LwdqE#M>wBqT5-B-&bFuo180 zT)f`CZvWO=ZofWm?X9)F)l#iCfgIl99Ug{Acmxtd41xnBa!&rg-`Z!A2?WRkDq80I zX0Nj!XFt~7>#-ka?U9pT4(k#Y7STL)<$(MpiF79JMX>&AC_h5e;R$xX|{ zN0i(&HY0PsZCgGh9D1$#-NP!s|AybT{AX3~!*5&uUsXrN|BI@30ppjus|jt(e=hzpnbR{^hcjC| zIwdUZ$>*cO9{#jpS}^Wt*v+=9BYK5}MSVRi?D?xDc*6w17Ja1iX_46y6$kih0j-gk|@W66p&I+k9(S-dDrI z7FXRI)>nnJ>Mle4k3wT?Uk~dO6&ld;xqse_@8lt9dN;J0Rc6~cXhMFrurPQ3+$YoW z(on4hJ;K6}XV@aZo`500Bn+?qDp^=qF(Q^>H2f6s#o(w=iIJ|b|2&mY+K9G>-Hx{2 z3>fl5x}^TIW@bJ)-@@K9;25|M8vz*dOG3IQ#tcm!n~bV4{7oy}sI$}c&z+w;9Z3Yo zz_sKzy0vsOvOP#hoD=t9y#dFZmF^*gUY5VdCb;fubQNrh!oRB!zxGR4!Kv;GT+6$o z!mhj4!tdMV`kf8FynB`d`&Qt|B0NUr*s)%v**gR94TR3^*iK4D~c)PkQym$7R zsm(uyryBi4QIrHn9oH81l;9`?7o8}I$GH0@LYrEy?Cyhsd-Zt!x{N9oEgjD%y|>>s6pEL znOf#?JlEroJOk0wlH$Su6UHl;I9EZ(Oo85!g?Kw3CDyIQ{{(U7I3UoQ zQo$yu zcWYB^BXd-C>yQa+y9R$?Ja-E-liFf%C@f<4a22cuT#5e*{7J&APd7G_ zDJ&U?he^|(cziO_fx)fDek5DRGV`bRzp0qR+X^ObRM4?XVB7f9JCe4;{OOyj$b@?obUv)0V~D`E z@u&MF?ZxI#e|kWX|L+t`EK<<XI|m;|<6f7*i7=g^}|E z4a!j_M1}_%N!kZ^rdj||<%Sr|pdf}u;fAcsFd>p^;ol5D-pN2d9tcx6-pzpGoO(o9eH>`I~x#f38h2llja?&EKG}&##Bi4c?MLUIjj;qGkRD ztz6CDz>YF7C-H#QspwsJiA+q*-&VmBoWE^HZk)4m{#J!&&gH-rJ(!!x{EfPEo9Az@ z-K`kLPZUgiLqW%H1h$Q5y&`El%(K3(icI*bg3db>blf7aZ9MBbNqez*)_>lmSb|T% z#Q#>%`TqoZ;{GJCGd$}Fl|x5)*3ki~f>jDehglUoC4NtAjLQCE&ENhc*TNcc=esD4xo_Q8Z9`q2i^^eKzeq$>T0oF+8}&Zs8+2>iqiohJi&l4lE^ zLH)uRFu_g(^U36zQK)_d2IB@>;nI)?iv#YD@l5>)>oXp57QB;zd_2&L+;}$wjET!G z?jk&cK}r79kG6n6wNpR3yT9T!w=0*c9hpVC$9$_3lxn0k%G>D7wC!o zmB5RpAEl`5{&n=DOEy0n*nai74p@t->+?ZxIlzm6B=IDW2R;#&$j{~*v4 zrwi;1|Cz6H=qUf`sw(6-eVbG?y0`K>dkXZ#+Ew-!OV`n*nD**AU*P%KWyya&Iv@X; zOa8MFJc0ZNg2F@o0KJ8qW-a&+_)!{oOeXXs;Xlx0M8_eI!QN5^c$4rS%(8_4P&XoP zBLBgx%7Yyb;XmYW%pYq>ivMttsO|jcZinJOw=07 z?*gI!2)uaukIL=~rT-8C&F#I;i=M1Pq!0A zNq@7UHhFOfS;G+g=h|v|H9g{CR1%!c#RtX>Dhw+=FlW#fxcP%h_?-F?^7S0m4HjI2 zH6`81(DhQB3D8U2pXj9-)rj7uqATZ@F?to!nNfPByIe2H2q3ybMVHUt!|0WICDxSm za`z#48A>Yqq#By(EzE6GAP{es666rj12`X`m*9K=@^OA3@0#^`xp_#}O#`q}*Rjd1m*aeZu4kP_s->znL{-`f zxTvB?O{$LR9rVLcM!7SV>4u3MOyq#G0;&Q=Rq+ zb|e3NdL_;ZFqUYH{-NY-ex{e2s4CFOMhF_E6?&F|R6h?>oq0$vNjru-_9JW~{zr(u zPi|0ktR_U~-elGBdR52RM+r;J{6f~T0#C@n+)oTzbu7vHR5x&3Krg8|3MAd9*Vb*7 z3fHD>6NJ>_xInPNk^7|>bDdN;V6FkI;>d_mXb)tSD2xYcHX$<}7qHp06p%`mx6j6PH=X` zu~r=H)ayM}P{2}a!=cf2eF?gpobKfD1t?9T%Q2G}rOe%mpbGqrCM~Y!t4)u1m`R0h zksB%2KsOvz91eXh_26Cbmr%>A6MrN9P~F^++ZlWCT&kD4>ntT~4Ri#ML1qcUk3*h+ zV5u}H)eXs?LEWKV54bn#dWNZ&*44sKB~HitrFhsDXOkse6+2O+5SBq10|9bp^UT9@niZfDq9vQ>-w3BfCJtXgEMTC_>6 zTPW{dGPd@9tU}D&gh15CgsAEvLa?Gf_@T5znw`?~z6|2m?{-`QURFO$<>LH&-rjG2V!cg5)OdIVbxjrv^^LrZPa z?~Z^s4yu4YH!ii1`dl@++$Qmheh1d&t^gx~p6A&Dooth(-yPA*)3AJ$$>qCH{SLg$ z4c!i_bkr_O-5-m7$K^4@LngKl?{C3#IpV63?`}L}$;*ueEAT?*PyH@{ozYI|cZYj& zqz4lA5`tQ@+Y{-$(0^1jc& z%huza{led5=8F7FGinuolSR4?^0(W%aL5M|ZX^WRP9Owld4#Zy{B63t+nH(Ue@CcV z{69hvEVqc=7-G@)oVNWFF`$*W82(>3M6tT_LB(B(z zz^OQXO?d%35}`ID0?}g{`{DprAYr&bp3n<5=n#m!+ls$kVDn)#o*(8nnxRG(0+GE{ zYDZ6%Tb%Nn_)fvZ*HNvTQV6wz5J=c+N_`yb1bSkXza1yIusH;S1VIA@G)(Z6X&ELs zV8}^>CbI-INAP!qwf_^mkoD&);~OSZc<|h&hR)}1C#B{1&ONQh_iTY@kMA*7{BVI6 z8s7s|YR8=_w>af*&-gy}nHt|83G~D&|Ce=q_dhTHjyaou|BHRc-g2z2s#jz6eSv3> z)!$h0uL-=+SbagIb}Ux8#VLP##%ijS!-Fb^Smkg3SWQwNNRt=m1$psxc)+Qz7QFaq zn|bjUhX00c^1&>_zruIUEywh+6KYI_MapeI)O+doz>U;f+a@fos6h4J~N`;M~Z`25W$YJ9#X@a*yV zycNGl;DyF#hDz;ltK8z0zdhsgRx5`aR1UGqe`S0IEm%U}cV>Kk0lu?qIX=79sqtxk zOnCPAJS5?PgbxK?Xnd|wsU3wXw>af*&-i@a%3+bpAy)Y>v+>#deZq{wcCU~9@VxV@ z{4?fPS3bhJBp+dgd}PJ*Nk{t1D*ye2+>?;AAi>X{0+Baa@z+ay^Jh*T?qJ|coX{_k z0+C;3Dy+_5t#XUIMW9)PZ+H%$<9j37v$ehx!fwNs8kNIZLM%-0BW%yYbjwe8`038% z;3V$Ptt_bdIf-lc2Rki4-wCzYIm8wb{;SZ(ob$?$N6wZXS3crs^G6&lhyCq`IIIE* zHxsrp?60!oBP9Mp!~S%o8up(OVn?*6yw#pz|BjWzpH&XA>j>LD>_d-;Q8GLllnlFC zkqm!oyJQGi-@Cl|f9U$&l|%fkAL4IG2sa(zKm-3LY=scQt@!%=jK2^e9A_%>e@PAg zFS)jd5dLK4@H>@5Y!P9*38Co-_!mn*>NNikSs%P|$h+ks@0P><_6iOw@PEQqhW%Am ze1ybbXxN|LtA_ojgyjG7R(pp1J5~;VRyoA3BW(AuzuftMr^k25`puO?zAX>=wjAHX z%Q=1m2@esrGQMxO;%}Dt3ytr-Oa->yTjdsar@;1%?+^B<9JUf-+WQgVmGOP1{(h;( z_m|+1XUp+D`vZ=jKteiUE8}~(75|XLUub*}W-5&DfhxDS5dzyYz8iL{9F7rUd|$;J zF30iRsq<08)%^&2hx+!p{P(&1PvCy33AkTs;Kq>qrRswBOZ7$S(G$izW?e8Pw@dlI zg_UUD4RqB^E&m|?w3EA?b}CPHM<}dcmf@BGxmlnL$JE4nrGc|*2JFxoI7w%~<{WMC z()O-__YK}z0NcB~$G|AWA9gP*9e>}&74J&tUlfddRl(>V2{f#D!-~&27><%E;TVy> zR4Jlg5tviKn0<_aeLDkoHk%;q;IS^=85MBmum(uM`=Qccy)zS5Is>t(l1IStpun`f z2uCXdas5@e^Hzaotco`s_liGve+;hrIS9v$v#S)&zAEMbV=Ccf0RvgUKt0N;N4}o^ z3Y&t-CIlM5rU85Evw)Xbz>9&m47@c9*ALBtEm4DYH(2*sz~n4o(oHL(`;-Mg!740| zrXiP1oGhHbHv-NcI3Cy;r6qM~5iG3F-_5`fW6JYRjY7bNnOZum1g4|+X2as?Jd=T_ zPC85xrUMbPVL~|@nP#b#k?akJ$6k#={s7ho9hs2cJqG*Sy{Fe*#C_ zydE1i`?29)9iu(>6ZzzQ6^m6Id?@|yS1F=D5ZF2TeO~eiI2H+Prr)_L+&NRA8LQ$=$5Y}DrQau2 z3g;9RbA^7d&~K;cw@$4Ow^9BUA@%1Ye+O?-^gB?&$i50j_ZDb4RJ`F-@uBp4vq};D zHG!R@-&LDgi-6;Ofz9;$h6;E7MxYt1;!Vff;t!?YU#S$%S5?d{+I`iNaQdr zeM8Ffwk3W?AaaDbj6pP?W}oiqZ)Xf``2Wc#%}I zJe>eTRh3Xm#)dEPz>zm#~Y6?^+44%Cdl_Dk26seGw5RjoFl{y4O zDnuj&==p@?LnyPYLh@ftKJF<|^tD~V$iFKX{TG3TL&Y0T6(34pD^!Z;cLa8hzGg}u z0mn3f&Ga=&g*#IPnz1V0bc`2&D18l8DV&2<%q6EU_kPe5zLcSbeEC`imaWq&px++F zuoV4v7gbs6x76gRu~WY-XCRDY2QO2bcbckf73dAtuG29qnGLO4>9@EJMD$xs4Q9i9 ze>O4~{dS!YWeffGHjtv|w~r|O_BPO#$j3+8rQfR8EOOijQVi8^Z$mis+XEzQpC8u?j{GRxo;? zK*OQp4X26^rLTunis%Ofc8Pk)7M57?p!6%j8*ZbV~6-d>8n_!aQk-n|w@F`~cG1@(P!?AsFIfaGX_dY{`F!ZBQ|FH!Y}fupOso4BFqd)%{#WS+Z20T> zxa}clGY!d|?5-PSmC9_eQC6f(FO?fR^-^Q6ZWt%^fYGSe8vFH1*i9}mR^fc{CcV7U zvA7UBMWvO_?+_Z5k)sI%mC-K3a>KDq;tl6d#SdCS5tT3qYD7LSDUIkwga&8{W$uFs zQj}4OGJ?=RSpk$~cxM#CnNy+HW**XO({|{!f!LcR*MQ?|gq4|fFr&OzuMEUpML+Ck zL=e`Ru@6W(({Z=>K|{EK;9!hiX~x+krRnTLSebi(HxE?C=(Snf^~$Vry|#XbURl2v z80)W>=O5I|u}7hoHzCR>M%`e)bXK7rn6(!8!CMC2nzdE0oP~=T4Ai;QK%L8H9n?!_ z!GyDWg_!uGnHhclt_ax7!YS=E+Be-30i&p85opFvX+}9L2hxI|f&B>GNQY^f*)TPj zj)U5mtLY`_$Mo9SuqU04i#xJU>y_Cj^wR9DwBohO##=@94uD;+)Q|20x!GiA;zrq- z(2c|B>BCRh;CPaFNr|^R{_vY#4;D~XyFnN>?YTGAA`0em>Y9b>mCZX7Nx9cGy@ofE zuw%%biKLo7QrI<&Bmp9vI}^5=FroQt^aizKp)ONFj5Vjz>zns1V7EKCXQ9_O?^!Sy z7Q8#WXK~!xv*^%K@{skJFCG0B{+*Ok>0C|-`hA%Y^!oxK=(j@R4d*WLhtlsVNohpC zPuM~FO_y8)j>&`}^gEn>(C`LBDGVLBBSMH=KP4%R}k68$$v{v?*_PO#c2- zN(ne#Aq=747wHH6exDHZ`;MeD9e);oDE%&zl&15igqNOvOY%{@W-8oJWz2@)O@~CE{jpw~eu8#|iy>A=rk2CaPu+eOpA98kAH!aS2-nz9 z;W{A+KChcrH=89a0!^>i?Rs|gVv(_OhLh8SS z)PD)7|4KacU-5_1-}90Z`Y&Mz<>$?kEA(H&5c<1{e(Jx3)PE%%^k4CZ(w|LILjNVa z^z>Km#&u(EUChYpRC&uYk3!3>!2NYlhD$^BUxPQJ;D!_f`xVf8VS08pOl+sG4%L5Q zZ#x~+knB^U{|1!)dniQzUDt~Kds|TdeMITMw}FmC|9zxg`mcJ;qD<~wgzCRs5Ve6? zxpNV!|H|^Ix@@6|j=uuR3@)I;q&XK*<;)I9lfkm5!C=yA1)@4~X6Lfde=kS*S@>c524e+jAoN<8#m@rTmyDoF|bm#~BMn=ZLR|0N8e-{JIA|0SgUE9s#Bia(To z-I5aeFX5%9-=O?dbi4|(vqntPmuGGkGA_lPilu3oxX#u=v$c?)8^ zshdT9*0&-*n}{=1el}5P`{ic~D&Od51pP%3g8tkRZ#XB4Ka~DbC8ZJlAYljTZ~q@yO2F{}VF>-L zqaXCQf)MoAAn8oUG4Y4eUxlPJox2GCdGuG}{uCyKH^aoRA+odt*Ldq;V#f&A(w@Yf$|on*1%0k-4FU(n7Y0d`n!+oLN++FlHfd|^w;|!ArWYL z5omfJX^;M@UbUno4H9s>qgj9D#s*6BaJ!?K{_dl8eIgujE%n!?Z4g+;x3)nb6VJB| za)tgbuzp+kI!8L>A0g!*A>|(-<)6eu{)s=7{#Hp!$Unjk(qFpd3i(GELVv^Qr~D(N z{F8K$f8r0NKewcW{3HBl(%(_g-*(Vny_gIy$;6GsLVpKZ(4T=dTO<8okp8Bot{3`S z0s5PoT5}Hidju45_}fXO#Af*D6zftCns`{9j}q`a69B|`upUvr$1k1+w9pS zPZ;6<&YZ8zvXAiXaxE!b)c5oV--*$Wy8I8i z!gs#-?Z)G;Pg2L-8`pTNCJpsfEGg7p`aRx#CoC)+8+CJWKrtT&9OpH{ld~fVZ;$Xb zK00B%%YU!S|1GX?&)2Z!)NQ6#xAt!_c(JC3@_I&LZ;NLjJ=lvb!(Lg=R%~0AVRH<3 zTwwnayJiMXN(R3V$=S@WHnzZ-g|m@dF=v0R!b&{3Axilj&R69Bc-j+_T9~`c#jVb` z*7%9!X~|QQr)cqm?XH627%hIFz^N;Plkrxd%+EWF-+RJ4hF^4o_RL?^%2Sj2Y+|vt)#-|{4WeVBXGzWXe5aHA4RN#-(G=g=0rz2P|CDySQ$*)U- z-@TOK?5XoNAp$r|x(SpEsUq*W@g&3^!+ zv`;=(r##(oQ_U!wT&P;(?A? zxS`xwf#pivreLgA8-gGdZc}12aaK|B0VAw%7nmc-giIJ8Bq3*eS(zKj_F>>@ef~2qwj5=&TiIcH|0lWOHX~1>ZrRNr(1r z>dTLY{y$}**54s8pHCI8!QCGpKn5PlKqk;2HM%`P3Zwoz7fq99aY|gU< zf5?vc4G;?R%iz?257mHC@w-9E(X$UnG1kn~GRW{g!ZXB8Miriq;~B^7Gmg&GN~7oh zH;Bu|pJeepA6X%b#HRQLKUQ;)K`bl!De8|%kPbHsouM8%!^~g z(S6}Bj_m@_#p=w-Kx-HLDc-N800IQs-8fN}!Ba1gH~jJ;1E)JZ_*l>l#AKiwN+Uo0 zg+l)kf&5Zp{$6yifqo;N4fGkY>%{=@&c*-`R6dP|vQ7A-%e^BpioD}Cw-`OQV)U#< zR`u3MDI3l=Ch+}{sFru!(P}ToA}TWkVV+@h#=~iQy$4(M9w_jv>JGP|l-UE|@cgOw zX*@|~<~N{5!8)MO2k@WF(s2aO14LoP7tU!`yAFS#Xnr|7^GyWTKs<9adC+nmXrEut zv>(8cH}@c24UthZt^#Guz*A}Bk6#n?#w`_SME_br=g$?4T%us?LIsgCKZ(uRg0tc| zrEo;RqpY0G4B1NOC`b1(j&Af(4d|+=Z#?&*Dzn%cUUGqhy6OP_XKW2rJRa$tzl*JD zU~6#Tux159H{y?;R;`h9`FyiXTC*8x_%*9{DxOLcR{vZLmVXE|qIW77xkjxei zEP8F?uRb7&x;8&-aHIP(Kmy+G`19;nl`ZcML~)dRK0rLw#0*fW8lO)LkOWturEFzV z&D)`d{0S z4T&Bfa7NpEskX07lJ@_isr^=$E&zuQnuY39AwqR_s8H37y29e*yYki+7xkOJTPrTQYks{} zJR|`(y@tqJ?!Y$5Tm26rVlk2`Djw>wtwmV#}t-(R8nh$YKYmbI|yehEJUB$)g4M;pL_26B&1FQ;*07to4Rf@2Y zskl$9GUKQ|!(CW>ATjkrge9h)xJwU|Mt}DeEKih|I&uhWjo5yKrH1n+!b&6Ve!>zX z;Vu=w1#w4|PJ}zca3;*aP1we#)T1J(cOwLn7f&amP|a<6Y0bybeR(R2Uzb>&^$pF_?^Ek>7jWIQwp z?bRVd``rr*?c(Ib&~egB#z`+VPF%l};c+g3j$zORe@;KHEiPJ^Q2|HwH8=g)*TqHo z8C7spZ@nLkv zBc~43{uC#5tbK}A`}O~&YQK{3?Ai}cV)fl{WIyI;$tEr~{-#gg_m@(=kkTYS5uI9{~Zuj`U!i+cQhrXQHMlnkhBiW8+oz zQqxskxW_Gz+mUXnwzZe8*WmKh8q9eTQ;*=SaoQ2}Ru{ZgCP_CU=}4=6%TOkck{aHr z%k+}cgj?Az46z%m_Khb*yG9Y}Mxw-{y;eLY&^WEi_DPd;!<0d(=j^mvj6=XtXnTO| z!+F~p+~1z{8w1T`ybD~ky#4%R%a zS-xCQl!S=ar<=rUo~JeaK~?@b(hwIR>TyYJy}OWSRPlc#riRC)yIIpw1Ca(I)lnX< zr&cB9HER%mX_BCv&UjxrXKT;qoor&8+t)GuK?L9}XEd@48u@TcQ){aSDPD4RgTWZR z4}-bLAttNkZP6dvfrAkF5i-Bqd|}lA_)wGZ`yd{0v)>t(1!PVR<39er>s|id>o7l` z1Rd!f{4o`&gTj~(r7-6>v_^g*lz}hqXg!A0lMKwO-9=EKF)1-HRWYEz8!Hj_G5%2P z4NTW*zelDgm|h#0%h7&MWkT2wskT=-PW?b&VugZ{y963mykW)X9KvKCn<{ua@sLUp z`Jup^!;GN;9|KywE6vypl_JrtV#KP?VZ>ws16i1g)?=1ik9=V~=*@^4 z%p*K0tjV~eaAu%lo(I)(IhLp}8$F4(?8F1Lb!z0C1R0nn(FReIeIKmA8u(_p$-WQz zgm#lI7wbNwf+h)og|=Duc?~oLb{S)?(Uz1!&roC1+DPqP!`-C z{{8g(qGm&~&PJGvRCE59KdWDn(+Lin+pHam6Hd?4`OD>_UsOD+_{%N@6AKlLTrSW^Q1OOC#fS2jRVqc~ z`vNsf8;Wv|L=M|5{#8um`zoe$ z^e=gU{so56zY0$rE)evuV8Ud9E$CmxBqpht%ZdK61=C6ETxZdLJFIiHo&GPDm9Bp! z`VTo@v#cHaqxZCRe-wM(_u&5k&*bZs`DHw3)Sa8)Cve2Y2y5J>m$>)oB^jUK%cmk; z?N7TW6Ch7$)onqP)91pypz+K*!+_%g~^sh3nHOnHhY6)GKL3H8dvI|=cvnVk@a zo)$>F;m8v|XkHmA!5M~hNohn*Ce)$x+#9(y{cGsHih#dl6>ppKQVq8HGLnkr#G_6fm#FneYMjLlP zE7cAt&Q7ebRr4&VwF7#&S`#B%Ip-mU(CyK7o!_|3_bH$XQ$p~U4TRt? z#f0E5eRCOaIC>M7gz}dNhTzOpgS^=>{_>iX5=i(7VF-VDUh)hiE+Pbfd0Wz%32%rW zx`ZC&FRw~UGx0}+wO9BHz8$;5U)0h0FWdTM2l-1)TlYsViT?8H9MC2B%Z~`bU$P0o zU!EicfBCz_8;-w-Ka{`xQc@a`uMl=ne|b=H4J6!47{Xs}l{^E9HxPoqjF)s~!YJ{F z@|VGq(o7skcscNwpcR>mX@%|apmNeND{Rk)XeytDYAUa*ZPCtHW5dy=7=Bq$2#XdM zw#L?Wy~8@*bSd?ZMdl4~I0TEY`btVO zu{Yu6z#l#*D{(F6H%*49&SxdA?em)!cBn23YjJJoGna7xZe|GPH(!%CJ2t<0UrGriyiFLwUw%VB)=yp| z1b^8f>CA+U;t$n7{w^ua#J><;4*Vske_Tu}b}jUeCg#y*D|T(uKU#2+He0h(`p4AN zgDv%sb6B%$J72h>e+0ij`F#1qX*cMK>mP(%{~+Z02O-x#(io5R55gAwA%Y=X|ByF3 z#vfjjQn3C(7{VW(mprllLCEzFNr&|h@rUwg?9;Sa?zt$(?zG@uL5k6?-jU!3Bj(R_R; zio2FZ_;$cF(Fot+zhPlBOpFhWk2e>ZP&j^=)T8zs-z7IUT8PYexI?_igFZeu_ zpG~^)xuhE=pbUJB$If&0fb1LZ^qH`Ed9n#bxO&!wIAx%B}_3+oj zUk|_W{l${K@#4!0{$QDcukb>mnc6{M;vfwi9UOyV4^Bq02fq*djEs6QM!_H06ntfX zzzY@G8sd_gzHo2E&SfurCec~^p}U9q?;hrVM!LD%Oqce+&0V{P5A)~7Ado%XQw8>v zKpO(%+5IZ8w*(GA;2;hM71+0Xc=7&)0}AP^rL&bzncV87F7&c2<5j0&P{bndSbGw|6uVpPbDnE}v}JrCBafY#d$J{SPo8A%SzvdgR&m92O6csMgSsp< z3KpYFVfw=GFO!Ek#t#eSVTSRu3VB#~unXc3K8)JVIrtbVJLBNvZoGQ1fL+cgKl_@o zKTMK`83%vn=EMGlJy2wR4-`442a250Lz*AK_71nv9g{?N@&%gS#{CzeZ;Q5PYSSB= z>ANc$au$8h)J}nlPi+DP7vhgE(bG2L6Ky=F?FNKDcYhx^6@9eFw`z|gJofvt2_t+cQtX40OTbPc9M*^y+R{*q%zb!7{t)O^74$riX9h z5DGKe4DTt#qhv`7+W~T;FVgc{_-vfho&%=N8f61NbC@^s^}wb;{W|<%q|1N}IfHqR zLyn#~$kEGEyeX_7hEO)X{GWrgWWU+CEqD&z5sQI!cy9y#D8C-%)>k1MwhU;VObq#< zUG>05J%*wO?J^)t>QR@RWgAAa4Y+BXH;$(vFWxrJTOOHDATjJQ^`*|K zF#;WyKT`S4M7PA72@?h89=;mG_z)b^k*Z=MA5<|18B+l#3%JdyK*2O^;GMzJrlP%` zk!&w;;UP|r;}4vQ@wG!%y^!34HW3ej#22jkELJeV@<%GacOi20&R~wf9&Ny;p(kZ* zu&05wK;ld*hiMANTK;I|H<^RU988Q66MYH&R8pFbY=Nq+Y?c{2S;a(;Q8D}3)_rU% z@R|iPiyrhFMQ0lNCv!cXVIP4O9|Mjsc_R>g>QTY3)AGkDzlpX>*>hN%sjQ9TV@YX7 z9}<`=cx73pbGwR(+n{19S&IX#1x7(u4NA-}gd=twFb?EKPmU{$MY%d&#^7cIh?Tk& zVvr?zRv;eZD-(G4AWa&^T_!|1u_|=Iwqe|)!)C>7SfTK+t{%QAcKf_3%o6QL4uLp9A_}J+d)Y=P+;555@_{bUnuc@}P|l9K3=v6+SOZ@#dox;*uBH z&*At7ZDk|xIe3TTh=%(N(6xc`>rrk!Xh3Xwkmd~hNjFqaF!pJr(7{~68x zFr3Q-<{SpOLgNnm9;3#=Sx-wQ*Fxv7bD8K1Qlq}8I z1cABKqH_1cF{5u$F$rH+G5Z)p)hY|9&O(=Y(`|5sk8yYkBND^YL=gryO^JxXV|1(3 z3-8dJ3DFX8jI-)9(yE{3Pf&jE4CLq)BCNn081QN6tV|$>1V`o=aNJ|%aEF4CmfxxT zCUY>EgSi5Kbgk)lR8pGJ!vw0fvRP*2eJaNJ4HZ+two;dr!HTZ)rq6@(Pz=gOhk7u4 z(>9?#b$ABhc+h!)=#`@s(Y&i*oaIkceiK-bT9Cb%3t6w|B1vgF|0Xb3Fw9cTxZkRn z#9yeG0|?BeMweYnQWJ*ufin|8*xu44l2&xEB1_* z(p@X=Ryo#LhKrTz4`3k>2C$4{dZ506xz*yXRvb($t^b&t*GH*r_K18F&BvMnEXn7b zfU&A^sR5))L;jht{~L(@(@0L{1J2(O2F&Q2m>iS)>j?wkdE9xtS`TEE;=t&qw3)XN z$2oCfObIWJ2{`|g@8Phf50I_f6Ap9w>v63`8FT+3V{yH!U*%q+SDGKPly@cEjQc+c zXDPS|fTfhtrr9Q(CrzuzO;h{0UEyIGT=_AJP&W;|+&l!B__TzZ4vEM4&Z~Jv?A5xS zwSgDD9RPmwabX7VyW7GqF5t+-y{o`)WfOi6w~pU~#4j!afK9&(;deBvLHuG}#?EIW z=TIwn9yS6|z*jOMFtA(vrgMwZ-xSS=JhA3qz<{g@7Tz6p?4>kbgl8-VA7#Pc1D z1&(f!+{_Ze5lWda;ie-?!dVJ%#8Tvf1K_z5c&^OcO+0sJ8uV4;!+^vy`wDpehJ>4O zw-Ex*8v9BEp4W4f?Z&OOb5g5;?S-kIVr0)rJ$(~Ky!UH#gao`o0^Vno;(jKrwK`1~ z`Z~-0OGPW^r!SWN2o4FuNMJ+l)*s1RMZSvmBj%JSJ0Y7ouRk{BEp~xZSien>haJ!# z>%n5{p=%isaERFH`73EKqjW zLw68+{?q|b=QJ?wOzIlYC(=-@Ocd>zL;Oh91owg;h>POfmD3@> zX0r@1|8(@xY?R^2XC8bL_8H+U#1oZ(bO>5W3wEDQ0fe52<#_sdJ>$;Za8=2FVicICK7m5yIXcxCi&1saIw>J}AADtFRwB8YW?BFBLj zY?QJ&Efcof(X32N2V^fLa69>ftl4St4<%{w!`)i^n9*ANGa>_?er?pl4k+=bgKhajL z$K!E4?$qM%B}EizQ$Dt;)$buUikPSMdu9O2u(_UH zv6#ywumr#4S2%lzIs6$o{z0KEI=oUL;GCF#aj{CajNr1vcV$ZJ_*S*<_j;k!`kYw* zjl6DQ-AB))=wAv*_&q_}u>N|5l=99p0lyMkrw)KK3S?cA3T9I?Y91Ugu<3>BkBi`!6y}2k(FQoLCJ-(oQ&ptM zEWf1L80V7Vsb zjky_rusJ0`C?M5ZyA2P-Md{7>&xWt`A^2#^M%S+ z0pRkdz`p$9p+4ZK?jUkPKj(6PA#)A>$B_+@fyM@+vmO%UB@`&=wEVHkZ=y;js*wf+ z1|q*9X}Dl!qRI^riJs`6sjwq>Mx$iW22~g264@x&giOpm_*FQE;g~3yLm;=3AqU`O z9l)Q>#9TWK=*k4TxF9FW1W-I3g8Z~&x|B0-`~4X28%Dv|^Fx;(H(ER$HB(z;N7JyM z;PPYr)&F!KczQCVZ@1R%-G|It&pkgqgPtE#1dXaGLLR_D8UyECH1<>@+IJEugxH{H zu@lmuv;`dZB`YHPmcZQ2NW^O}a<}pUSR^;#og;zBXq7THR-lQY%=HD&y(pIq0z*0X zMDT6eTg}}Ehhu~tEL4XMZ`gxBMuI2SOk%<5$MK9#$p(eYAypp3i-)4|fI()W_j32a zlY2P&d_ycayt3A!_t4Zpbed!yNX!&yvOy;_l!Wf%Fls>a)5!-CUXTR2hkE196X;+3 zPbU;ep#CB1r*8}ocC8QFgT9{K&VBH@RsH7INn-r#Le}|1S+us~2cR3&_DnXNgsw;( z4QG^_PxIgarPI-B{uiwwubzze`lCy3w^VyBd8XB3B!l$k8OU{BU>uy1*WuIxSM!P) zwufQc8Fmn1UM^62WeI$01)gRct$qR95y%-*K;#BRLFsTCeB+bgOmo9K22Z6_S%vGN z&t;VrgG?qV?Qz1m>CsUYltmvr6X3Y&pvyD`?na;%k=L87MypsDG2D$T`{hw@WNH7-smsfJR>oT%{|7~iszs-tvp zTwy97Aq;H`#HKzdIEj2vL8s+URDLC$I2)mA?m?}Z)_}p%NX~&+yOl#<1>-EgL-|e4 zkWA)aq7Nt=yxieX>%nX>2s{n!SLSBx;77_p?9oJ3t11PfEq{XY6X%p9Cg&uk%;jVr zCiVP->Ictzsvo4~Obbj%zo8w{cX9tKc}qAjj`b?`2OLUD6D`e^^?TW?r~`R!M%`vC zhBNhLIKVBjAxs@SrU5u^fXwqmk5{>Z!iBZVx;$6k$@)#SRqYo@t_P4S1xElFfY8XK ztOKh^1KY_YCb(efkzVH{T8u7xt=4(pvPRiL)W|!MHA4G{I};p^jIjYZHee)s5{m~D zmz1+2eOVdVficl46Y^8FoVztyyYT18S*pga#~Qn8Pii4CfEG|73426eHn1e*;fbB5 zN6d+U}WwwukKGp^mZx!O@DAkjqM1v_2cSo`V*WKV+kxb5KuD$}%|P-b5a< z3nn(Lkw$jxC_9iQ8>4LwDcoX4=Mx2?+6HwP${yKaLA~W#AmkND`11pb552BnwB?Ug zeku>Ln}>Q(W8s}*L1iHKU>Bkij;J1xCk@~w((j<|24Kr893OCrHA3FA_|RJ+d6SQF3j^<_n7Oa>vLkBX|Y!L95a*0?CJE;{+o(5V^q0Gf%--%b%e9Cb2`T z2tN~^(_GIW&-t~*bJ%jGMem!yNCVo@!1_nKByS1FD9o+A2F^h^o}gT+s*9k^6Mg zLjE#19RD6!-yzPLc+AhO)?k!z_fHgH$Pa2S4Xl~-8C5Pu9XWFDA(pbADE+Ob!A}$+{si z01B4l8yv;tNEk!2fo<+B%3eS6nRjv&oFY2g>C}u;%3I7#ZO7mUI6bMC+n|>ZfQOp; zj=l`RrKi-?cMN1mSBAtRWDq>P8FJ@^b@!(AExF${>8$&i5HQ7#6C@YX1C#wjVv?^O zV$+uJUapzRa+@4np3V7g&5!}bML9JOV{;16qvhEx&-3(8a97GF)7SDJR0Z$l>vt3v zJz9FZz6I;N`j)gxeM@F7HhczE!o&wuKR6r4!P)*goIQ=z)pELLk>?id19-Af<|5C0 zl(xw8J(M%G6gy<&Feff98d=Kift1qb9Wvb4)U-pElKP?SDSU*>olsJ6)^pMX>C2)fHmf$HcbJDsEWd9vARgJ*8p0o?;g33meMyh1epgG;j&&!qii! zf7(f;ZRGaK3TBPXkar~OeB4-tEs`y=MN%7Z6f?Fm;QTuwx1mbSI$9>#pu*!A&#jvi z;oQb*M5WCWI?QP3@0qLgw@lp8Vn!A+Ew*Ns6QW|+_2T}QkyWI>*RVr>s{vL-%-B~X zM>FmRgg8NKZIIPwmFa&lKh=MY?U@oYA&;@xqRA$NaRTgqaUZNCYm@$m2Bd0`RHLj^ zsb{9z$<40{*-)&`UZ#uT$O0dy~Tj?|R$|hxPS`D!DiQ1&hM*JMaXCr>j z-ej$hoDCyfhS5e?Xu%3VZdmO@N6x^dL);>g?ktz?#D-JCTf3K3{ik zLwBxh>dx}ky7TxwL{K2H29W!K=+1I2ME!f*Ki;18W^KFi0(Wd>`tAr=+5^D(Vf?@ zJFl_26RA{p{=!Q2UuUM0?%Z`&cb?A05XLF;rtUl}d!n^zFk>U#i9JztXJu1&B7S<2 zUORn*Zk&#Ml%)htM-Kx;=iI*$Lwn)<#p14$kisxral2*|oDb+6p<|B10Yxm-4Dv+Z^T}YsU%7JUiK>FvY&z7={CsdG>gO2{XM@!f<{v&raqk>~!!snCDrS zo*_V3WN}ifyNm7FKR9E(q~+wg07DyMqa%~+hw)xF%@dUjGEAnX)+DLACl2?jtlBV}u0TrYG4(6(hXyWtaL^rP(+B%GcTwQ- z@C>H~tW`aPKR2P|LK_HGIol;Vow})U8f0JT7>LBu$$0Y29Sw);zNNGAR5~0_a&`rx zzaG=WdK4wwk5B=5bV}_Uau17wm-~*~JIeVK0hNxgNoC~Z7^HQjQ~4_+ZI)DNV-=-p_goH%03F$a*7fzUpfuiU*uEkRa2srtei6dcYxx$`Jj zoU-xI{j};2bg?4Vlf=gpctIO>{QqWgeOFi8dy)4w>0P zt4YV)X*SYRA4`Y+Gn;xCw3BSiHRkNYGc=oQpllAcP0{GMvaB{?nOlpw57J}#+ zc}4@>h*+pcY0@!h3GXPfHgSLU4H*kmkkEA5q}_~!0VG<3KNT&i%xdFX#v;{dQNS^F zctDY3r|AR}P^h+u*|}7|czWCbl4J~2#@;E#ao8EiwbG&dl?ekSyfSjIstz#9&VKyS(~^N?<%wOU+e3S6=G%MLVBmQr0iPy9@ERVpxQ6emi!d_5~txu z#lRVFgEMUaoS8{*=8lH*lpD^Xd031DUTZ)bHNbNX@L2;q)}WW0HBu%A|0Lhct%$+# zWu9z~U!%ou*5Y?*s|v%kRcps-tG2$bttxBO`gK>QuOG4T^tIM+LK6PiFnt2MnorED z-V0ro`Qbl`)f&$laV3)3r$Gxw5pecNIXoquwiW*}1np<|0fghwcbPg|oup0r!D2L2 zoAgQ{0k)artF!OQm_u(}i!ImUvGE;0N1CMd!$vp|z+LikZDNBq@rYn$5BI-&eTa5G`4jo|VK`AJM$drwpGVre400vSG7*~z1#g9bm ztgge+gBsbk-Xq5xj%e|*Ur||N87g->viv}L7RL#|5z9cqDoZe4l_j_@>DUwdQ9t3M zD0Dgm%4y8z$xA8!(jbxKTsL^Ktoea2&ij~LaIfNmyamBh2)n2m_Y-{(B0R5e7wgjs ze5HW12_w;a=h$Tl*)0oly=K@t{|m$FKjz&XosuVyAK{-jAbG+F|91xA^OF(2T_gPu z#iaO$_ema;to>uKeQ3Wr-)BCv$h`5cll@MHA0M$aZd-icuwmNUgTI;L@B4nT_V!;M z48!(GazXt7?cd+Qa7iwxjvC=xG1Rx#we6!9@R>$o_~M4f{O+qTfbo18NBcfW4qrQL zTgAv8yWR);4fEA+JJh)GrsH3Vw$-b)4ePP%uCkdaT=s>tmd;i>Wmrxr9%_%^s!Z_+ z`v8Gs?Y9b?VviR%)E*PA;*$i9wGR|H#r`#cL+!Q*6@RzDvG#`qPO(Enko>RdqT=lW z$J$2=oMP`KaHzd&R~3J)z_E6>z$x~=0*BhWMXLBHfn)7s1WvKvE^w$FpSnr?uM#-c zK2+co`yhcs?KgK<@qGl2wcjgniaoXa%%R$hLON^dY^6h-7=?7!(%DLfVZa?6h5>hQ z%8(dgaQH65;DDcbQx?PF+N#*2>X>*41E_;8NCdD1>s`XJkW zr@%b>Qvw&*za#KTd%E;Nw*3ZydG-u}3+&Gbe9}Ho`XJlhUtpenvcLuQY=KYObEOZm z?Slp8*+&RmV4o)NN&A!12if-F0`u$-3S3~HEAUDCcC*cS+V((aNz z$hOZEm}j3NaDg346Z-5)`vcM!+4ekvdG^`eXKKZtNyiieVKYkT?4Yw3FF-4YQ%&a> zozLLZF|3YZbquTf42kRbF1{9p!*}_;sQP3?c7UmIb2ES)lN9V2S9 znZvf#xU|1M=vo>#^p?J1F0$ic1*c=Qf8Q+}_>0erhc+|gs$p1Iu8u<&fDzjkEciSn z2>Pt+u<+AE{C$5rM0@++ZxhicLIaFd`^U7!E?@mSlpU^Z`(2IeTsLiNV!Ok()Ibr4 zs2;#6%hH9W>;9A4b7kx<|BdMD-+o!7=uqFjrZy)}9_fQV;TztED$f(i(~?`cCH6dP zWg!|-tNPE3qZitAXsO|V?s()mS({ra;%}(0BE?r(P;oT5pt5^WRafn~>(P1Ya7JBO zvj6I2|6?{JFYY=#jG*Tj^wz^&5o%YV!diQd2}fuYLgQ7aFw~x7A`sdWp?9iKVWU0A zbU|ngLIm$1r^GKdfM75<4n z^(c*2kKL0CjEDtpU_g3-=r1t3EO-O~(gDPLfzfrrg9s4Z6X^v;~MBAIy%_N(!J=_m}=g{ zhA6BP)DreE~8Y6W?c4E0nNDN_$lrhg3I12pc$8aRDgxc3sn*1 zSWwu#pyE_fRhNRQsJuSS)1Q|?uijp4M`L0B@nO$?yqK-Q79dBmM@F(|JW17q6=1kC zljvgk7w%JTx>&@4WG3)x3;rzrnVE4!JSxy-Fd=Q zv@gb0wBP0`IyAu5V~wlFF;|bxu9KUG`KYYm$ilgKT?j)9X&WCeB7bw;)tGWuVai=> zrp4%BGz1GWIi=d!94|OHF)Y4x94|-&7#~``jz1UdsFXoDlm6W7DylI76 z|Ddz_Kc@P<%ZXohqy=ZP)3{KUBm5MjKg!~%b*_^;Ew(z$=OypI%vkGCAE($I{=SxBhDVSa)b4A`LO3Z!Z+03XM_)?Y#tjw0jlHxm%qWaG|%pK`FB^X!;B;4p0zGt zp4~RWzuM*B=JH21#{OUV^;pO%#y8rJH)V!A&z0W?R(|zW&mg}M{`Jf+-c_)^(X|@u zB^YC2Bm65}{+-C&Rj@X^G4>%8u%u9Pt!z<>%QwXy#X4e(W%oUe{$Ya(s>8MC?gk|l zR7d1_3hKl2dboVw8(i%~P|~1xGXU~1u_(yI!*hjs4-AgTyT#@2Qn0RZby9pD%7sUJ z+s|m9>rNMH=I_!tI%@Th!I6kuJtT=nTB`TT^I$#)gErt91<*#0w&Ypmk>-6Ngi>&#U%U?j-J45|pewW+-av|PHE;tpQ|E+@hi2TTchAw#yyzU!4Q07!a zeMxuvTQF zz(otp_#OS$>LEiVz&B*{>LD&Z&h&k6qVIcCX09IM4i8Uy;d|+;hdjxwRt?DrUp*u{ z3~5}xcd0oeeO-MQQ}kjd%Ip5M$K7Hwu}r z?~OGI$mWCZja|xjN`VRm6b9a?Qobm`#~VkLkG8as%RGRp)422p#Z(=9h%hzko~_Bt zUqG_esdg#Fzp*hU80PY?arvI_BP}8_{n_?GE*!f^0!7%KsE$TMHY7bpTJR^^K@O3F zKw1T-uG0SPITpM$`WtVVjjo^ifAnnL!{K4BE?XM+W26m|{5V`({vkL5ho_j;L+oq$ zN>i-Mx4=H2F~)z2!|*FeR8;`0^#0XIxK0uxnzeX*<#M!&i~x@zuhZ{pw7L9OuTGAS zl{dcXf7tFDt_bX_jn~{$s9w@;4BITjX^-~1E!lh@w;(G{%bL6X%wYQUOL6kqss)PhI@khL=z1`qc zqiQ$$@u}-uWIMtio(xW6<-5M>&)9SGZ!Y*KJa1q@LwNqcq~{v*n$ehmx&S4t!uqPe zelsj=If_L{6OpTN(ClxLFH=bB+4er;IZ&Vdu6-lkOZFdi`9DH0=ABum9?61ewAC*? z`OP8U$;BWgyGF_A&qY>6Mn_=;p*T=PwxWn>7=RC>EDp^jYxA!4C1Zp?9D_mOOYVu6 z(HSww_T9x8vDzQsT>$XSlOZFePjeFs;)O^`@mAyLKIqn{@OL?`DE^rJ8RZ6rsmMQR zZ;-X2y(QA#Q!f9pi`CvB2T<)jcT+K1Y-q=br9F#B*=KsffJ$r5Dkv?Tu@GhcVfhzrK+@`B=iOJ!}3qNK5{LSEYIDeFeYb0|~7fLp3asqWS_Py^q-e(+# z?me~WKOjQ#y4K}?mfWN<#`k*;3^bkLXb(dv+6HhS4oVu75u-i#BSdL8E`}S{G^*#1 z(QX{dH!x(|(1p@Xei?*N#wgRs#;n{{=S?M@{9mwmi3{;qm9#>nPD|zkvq^)pCcPP+ zr2SZbR_8GFWkHOf))X=_$dibasbE$$hb^Q8`S0~hwtn}9f_J4&dEE-Wx1h^{E{%`H zG|FL9#hdPbY{3H19r{~Ig9;TKiro#C`~njKav_M&tg7n!!ovPWsnQsG>$dA#^alE) z;K)R9t`YvNBd5FKQ}d4)edvzHu$tn&(LN zzpxC?L%+Fp0bk(w@M8I~=#C=SPhI}rE08F^R|*tBD-)MLMtl1zmw&}`Yx81UOOwJE z*E{k?Xm3Y7w>JN1vOmc+%)c(h?-~Hj`Tw)`KJZah*S`2nW)jqwix8=UuzT1DdXzk^XC}#MR z2_S+{tCZ^%z5baPQM46;f0*}OYoD1+0x0yo-|xQP?{m?~*=L{qckQ*;UVE*z*Vgf> z;Tgm;h^HUV@pzWw>BqAa&v79ErcEpHr4Ia+RMlH&Zi)Nn$JU08PSm)AB69cxXM2VuC z$O$Sq>&J)Ab)=sC3)&}E$Q%{Vrd;%aQjxL-jBLeTb5)$1;WTSYGZoutVDp2~ z5-+oYRn|C6^-q8d;9W;54-%1%Upq-@pHG1YoD-FHV$|ag?yEx=R+|3+vgXDls zaCEiS;jdHOKunpYteudrb+rB+!UzuOXr)~@LIoYI^&Gm%qblnX%9=gO+UlWmTzlr2 zKb*}UW(-5jaD3dZta*_?JUj;<)OepWis@l*As#^2!0=P~h~q5;?I)-f=F;u`1a=^l zL~2FEaIA8O;Y4b=vd*9yO?4bXRE4Sf@s*lqs^c*yP%xIhTN#M7IYGNd4681TV)b@$ ziTFB;+c6b0F58HyBL=phy3lxkq_TGE2xU#T@v8un(E`HWDCvZ^GwB{!Cq!_4i(f$omIJmLl@L!I579mLYyB$2&Q@lflAFF0m+N ztW4x*;AR9k7-X~qInl*2pj@Hy;Qv4=@oQD3{c#FB;GC_rKg6ND`<3=~4!OP^TZ+!! z9a{uE@&Lmo6%d*YRTHm!G*`EpIEWFNFidlG5_)4hc-wGYjDnHKqHus3=G%Z z$jN=x({Oqbev( z1S^=1j$N;(yL96NYy`sCo=}G9ZFUmk?1FlFx3cyMBvM<`X*49}Y5n{aJfr7_1&qaM zg9efgx;#WPn?UY{m<=!=$L>rue^-R%68r=6aApNI?w$x%Abntaa+VD0kMCxdQuuW7 z{Zdd0U9_M(S5SApn!bg)GlH_uWEk9e2YPb_C86HbqBl!mVzy09yaO=o9U>ErHOo4So z1=3#X@Iz;TTR~0|J#u$Yv-t5A{?+97VCC)+R{kp$AGz?`-=+MTOqM&d(sksh@ z(T-8 zQ~@9`BBly<qyKZl&A|0-OKGgnZ3rNv{SaJW@EvIp@L0Aeh@ZpaKwhA$*E7qqCm4CEDG!qi=7CphZf8_z0uFQIK^gUZ>&>Bi4+gBqUM1>S|?_?nUeq%BY|Z@11xr$NL_<2l0Lo z@3nY8jQ2X-NX79EjsLsO*poJD0CgVR{hC{gv4_nw7K=+|I23jvVp}e%)S7KzRpG)M80}hk@{xa(0kjp02b?%v9E1 ziQ!AU1-grw>dTCFOd;Y=#Cl*JjJk0s&y^zjTgUVD-jW6sKxEv9@@m@;DJyB4Flc(c z-j6$|k*6zQpov4qTZ)=E z8^ns%_q<_RTmK0HhFYWZIl#bb=v1_nJ!}t!v10*T`f0++Fcrg1i%A_VCcZ&9g5~7j zB~}tY0Q`o$h4$ONQ}H>YnQc+pq%@4V8$wEuQQ}(|DF^U3Gj0AxSvv%avTGX>8GY`P zwipaRKVO7~a^VBZ<#A<3%Z-*#$fl92i3?}(h&Y3IPM1KG2+5$F2qE3?W)U)&F5Rle zX0Xa5`6aLeEd3&(4YN$ly$#x4_0Lyb7x^<(dzr}IB|1u)H?u2 zFY@44t zAi+ticyvY{?zIvEOlK5wroRuTiLmK|#CIf#m*(3p&jUMzt*5fQ*@ zRV<@4KyC@$3I42y}S;w7X` z*ZQ7-3_^C1h-n;k5u#!!05M&_beQPreIJ0H8e4Tq4GCk3ev&kaSaEDQApQZHQ_=C? zE(I*Lj^&pTNZYr^z>e*ftU1Ufwk=SyG1g25>jN$e%lg&CZztZy=N{%_WpbtM*Jz2I zl##bfb78F*m}c3aG}}>@xx5&48%xJIVk)%&LVsCg^!5S8VQ*trkK+>ilR#nww4aP! z&k$$zI4HCR6mXvX6}50abl&cqa#bgDjf47#69R;JSnj)Y(PJzvKcP)AE^;nah(z3` za@{z@x(d75H}xlRR+smZOgN`gEx4+)XD{PCI?HwQ@}dhx zPwz6T{m3DfGd>#c%k2h`PE>>aDi_sYqQ;48uu6ax?a(mW=kPGlE>9QBNo5yrI@dug zb^(&$JJbaj%7V0)MrA=E!C}D=W2xVwz&27L$uS$;MoDL zI0FcDT{VaB2;`($mz!oJfhS?SuE4-hH79yhb4uah3|YkNhc1%Bsp2jbsy@O71t3+S zHv>%ZCjxZmg)p8fb&LD|oJx_#tdJ=Yl2Ty$Y~x049P$ zyhZbs)|ZUF+4&s7kW|$BF**%gkCR8wkfT@3qi64oR19`M$#ZB+aN5o4Eh>>1e?%+-iP;ZHHD#_5*ARMz#r+;)xkz3T0O$r@>5Fj6wS1Xy%pO-?VT-`*=^O0 zW9}ti(*jq-Froa8Xjyu*o=#x@0I+w}sewJsuV#DernU+Q2^!>PT?flmC#jNIE|QpP z#yg5RvB+!z85^#d_ly;I0X>>njHv@aBQpT}U0Do33!b*cuUi`lXv+CPhhBLNEk-tQ zPpHmF!f@t2XY3VX)f#jIwR^BWGvp!x9JWwa>>%+ppoSr`2R=Hs511S#1oVYjwjk| zP+}$|Hc;kffs&bja2beyVQZo@&8jAB`*bUm4x82B$s$Jk(m;9z-%hbs0)L?=#{eGL2t2fqmq)w;Cy;2)90;e{sI53C0lh%bqnV?0E9~Y?<9o>T*2mZpn8EU}8DEW5 zb_XNo!-SBU`7kNc@Sw$Pj%L;tq2-AEuAASW70{=53tfU9o{O!=eM| z)y!2mdHzBNP|nI+qMUP9wWd4qaY+FQUL3vCtmSn0$LK3qSY?Hr#=(O8J%|tVMaNm8 zyqwpI0rs5NgcUlT^ZNUZ=!K&Y+j^4K}RWQ(9L%V1~s(e~$L z(1)~+eqpcOa9X^GT?RvR>OG7Nzl?r})-&r{Gk$bDU6JPfLghvpn3&JTU{Hpjzo|G@ zkaG244D(aXpgv^vB^Z~j3F+%TM_ZKT1vK*>Q`WW(`R)Bqhgh+!0T12vLi%+Sks8uR zxs-MSj5ISqOS3A3P(>#zU{hB@V~4_DHMtQzbUX^*e(&skLw&;8djNkx;r8_YQ4-nf zQCJTt6{v=B)I9L?J5%qzi_iuNt$rV&H59r8`;OjUSP#;XIK1oid+h$Dr|&86UD4m! zbZu!58PuT$rhCBfJGqA8!XUt4P$)mInszIh9;1#Q5kg-t^CH{ClV`&+%9#HMQE}w@ z$x(((+uL~O#S(%EyKa0&IWxE%TBU6Z5r9pW!Q6`EQs%5$cc0Tyf?p87oAJ93ziRv< z_|3*I55Ecw$r${a5PloK2k~2h-!Jg{3w{po|EK>sop~;|3;*(mxC-z9;P{_s=&<31 zBfQ>`gZ>TdtdhH)7))$|So>q6Qs$>LL@`gsEW*YXQ9H(Zkf>=TV@3?Czw2qL6oWP! zk1SFR7r`;Pc$4Jx)U;mciENXxQsDhhbs>lt33W`m6Xe%a$AGOKusl3(bDx+m<_~FY zF@H!)i}^!BsySF#u&(HGU9t7WQl0~QArk8N2JV&TW5-gaw;zE@fTSr(+X`-XnJ(t@ zzPKFwV%E9Hjq&@r+rhgiE7Fl_ho_3sd7QS!yc4^F%TeU+jr&epG^k!M?RkHO#YiUs z%tRKzgxZg^K*v-K&HkTgMMh*_e4Eutn2T8|jM#-fths^|%eKE3`U;Lr(1S)eLB4q3&BPrs~LM3W&Qc>y*Darb{UDQ zj`k!z$rqawsq5aW$NA#OfeANhwwg_PB!8yT^!aiiyUF2GcVlQ z7e}ehAfNa$aB1m^(3>D<6&W5tWZ7dQfUTzmrlqxLDa_yT!>M3I0$3DLe5f z<}5tzPrnPqk#!ja9lIw4B#KNrs<_k>fh4<7!(X`z03r85H}xoYFy4uew^D*Q33|C* z$@ue`pxN<91Z7GeK2GM8r3l$6$7X_N$2bJfbXdTMpQ=w(K{Dw1e}7mAXmRQ+!!}Nx zm5qo~XC->%be8!V?sw0(8CLd8A7;PMD8sII&Z_hRr{i4U%wqd@eaz_?jkwJFmpwB? zk?B#E3K4r({|QYql21tE+o7;0>|c(&=Hj{mc;hhA`O5OiKvUQxUEhI8yW;7R#WZPm z5HCk_Ql|g%S;$laJtXT2nJ)+!Q9hmo4pQ@C5D_?>mwm%f3sGtc);m+0qf!rEEdb~JAaYWu^qoGe~~+%zi=|^ z#^MGCNtLTu976scz&MaNq^g01t;wpH9y9?QMABTWQQdj&eS2$T-`Db zSAXHCk}RO z7YQq~^+GOKq$q|qVSrvyZq07PR& zI%4G)b)AdzK@iuUH7t3qL*2xT)N_)N%H;=D;W-_K>Q7*z{uFFGLJZZ*2t%e_)d)U{ z87gPkNaWRkef&Me20PZr0p2fP+A9|~$%cDm!<*3TJJ9TiHR2YuS>ogWM*Et$eP$6% zDUxVjqWLK_4|29yQtJlnh?dmm@OmV{K7rqB->YuG@Hy7c#vkY(cW8m`7DW@?YFWb7 zDfaXPu(5@MjjNWtzrN!u4#(r_(PN0c7_qtIn~_J*u=1j{XjT+_ac0#Tcxq!k%}*ok ziVdw?To?0-!@XZI((aZ5Yur-TkzPEW<#pKDNT&`QQBUPlPk4JpRoAV2ANkKi{8zXrtDQGCSI?@h+z z2tjg*RWja&2YpD!X|F~_MNBr=)=W0S#)Bl5uxU@me~Exh`&&D0YS%|-r-=r+Wh;V3 zXrinrh%HeNTccnpetx@M5i=OX4{Zz1$~Gy8A!1omR)SM;04Ev6PK?6Ra?{_QZaG`G zYTXgBdzCp%w{CK$6Jb)Bex#c-i_Dp001v_$h~P_luSDvyoc$N*0LX}rEGH%o>~4Nd z>_mpEvhrBD2jKKJ13d`nR0;CE%=s=`H88yds)T?&NCVQB4@ysMvjLV2jv)}{bOp7% zC}D5~!(cSQpuhhq>Ob0uOvLVt83=)ld^x9mCrgYvUge&EvFR)VeNG17lK?xMPGt5& zZW>VJmYkIpBoB-)@_`J07#+6$6_jD=zTRQ$S0l8c6MuATOu252|0a&C zf(8wHj?C9z08vV9g5~-am=+^;7RSDf*bC+N)UWYDx28eVfV3k%Lt1=%m9nhjFXTv` zzU)PMd~tEM0qE899V8ss-U0IQzu~;2A7gjY^N#f4u;V^o zYR0+LMRu)-^NvtZPHDumREo*X`xr@3j6Wm%V}z z(}sy9+!7WUGp}p|+J5x>1_Uf8Dx+`V^MdMsr(7gA<6$9cG8x1|P2wC`VVBi1SCSUaQVnoU3+ z97&T}-keiuD6s7(W2TRAp2fjm-@6Jxb@BB#3EjlZjOp&x{$17-Iv09)|>>lISCb>BHD?tf)rnZk!MM!c&aPXobrflX(!YKTENCGp2z=1;xE%fW&m zFbi#9#?I78jfRdji#!;a&pZq;&-dln7f>BIuz521TmL~#I+Qt#u_QHtCGvzLCsbPy z=4vxo>aFPX^8s^{aawt_)9Ae0tioBZ?7l8LV`x0UerL{WqET~B@31BfS)gj%|Mp=` z*vXLakfuy_s>PdNSuuor>Jb}jQB&d_*D23#(nQh;1L%YtW|F(2vlr(#sez|=eiPOX zIsDz-D&(RkKfKvLE?I&x55@r}JFH66o@T-r!DC=%&Zd58cdN$HfvaE{XT#CWKp)O= z1~EO*$DK+wnuZBQNDnbIo#+fY?UVzSr0jgl&_k+!Kh5;ZS;(5M)#Hny-z&yJ#%?M* zX*8l#`p3As1@TOGF+KW~zrY&ISIjc0%^r;$X>V7YCO&1OvtGI1A4D{LkK>v7enNXj zr)z7Wa)X&8VJKIp16n3dxDT$Ike2b)))H)xOWywY(hD3>?|P5|z=&)lc~0A!2tJ!h zpxPr2(_!cD;jpvPPD@sNX{n=Q#s$%D*=mjWBGB|UK2nz<#n*9>SOWx%H?s16E?yo! zt>lxZEwkha)Du%t9nr62pF0N+^0;@Tz7W% z0v>`7ghPP+2GIx8lO1`PXb`>4(MPu~8V8LUO5eY9XzQYK3b(-0g0?i5aT5?4D^tK^ z$k<4G4G;Cjg%n;+0i`3wW z|6%mhY=^YU`TmyMvH2?$)t`}6#I?n);dGQUVEOYPaBGOhLs8 zg`>z+Cs}6-DnBsa-~21sMO?mtm_%-fD&B`x28nEw2JJqW4>7z5F&|>IA)Abg+aYS8 zvhts)0Y%7XFes~)DZ*2WHVk@Qvw`ElxAmG(5pO5EY(%Nr{EQnUz@%#aVTv%ANXd%Fk1kCxwu6;$2XiT*NftEgOzg_943B zh-pxJ&8Mi&N(q^j&rvbNb<DjH_?X$B)`*eR=ddRvR5+pRQ^_sH8l3h$rkY`Y z2*(=WZ~`4y#~l3-e|_k(xhSY;FRJE^I&vO8j2K1RgV%@}_U(9Vnga^Hsp$ z3cc8vYFaX4-eWzkM&9tbJEx+t(EmyHyl7pn>Jwz%&dVw7~qL=3kMW zqF+q*L9qTz$tnOMuxtMJRQx$FB;CH)(3RstM|H(6`ri8isz7XN<#Rf1Z!LQfBDgPhGuaol2(=%EfT`clw;*AP8 zBiR#9yiu?|wf*k{;iDg^;zOKa4$;Q(mG;i1Uh=gBTBT!dz!5-tbl~5``w`Klia#om zUOJYPIOsChJciGyjiAF72XxWbek58wXO(yXiOP0@0#1P0c%nvGlO#(W%2AM-N^|Wc z9H2UEJ<#r+r_>%M!ggDSQUt z1H>gTrUF&~1JqN2i4H+Cn2fF)D)t(0cQWSa^)Kj0Ka@Cw!;vG=KSCKAZgDoS=2cC6 z9ueDs5t@mzEshj}|zlDid}CgEVmr86(P?u9TNl zUE*arG<-lZ8)2{GI1HLWM~ECxlC4exRg zA1pW-0)b9T1i}e^_HkyTn2kZ?a)R+|vd})O3ya-2z5N+@1(JQ7gZWa~=v9n=K^YNh z4-VgT#(Kfj{PphR=^9uX!UfPH-A`y=b@W1D@)R^gRl=L%kl5xxdn9x!l7jttO?(32W7 z1SbvZdR<|hw6bc8k8Eb#eFM0=8MuqB6Hjy3i?lh=Vau#v+URAasGRV$xe}X+d&`;k z!K^P0cE1Sg8$Mvj&N2v|(9IJMFM(-W@Ds0vT^VQ!QpEmF7yl5ahC;&n^;MdG@g>ob z#3^YVi!UKj>$IRQZZ9Pp^#4H04y25j&t@`w?F-W*A*I*F^v@e3;wT#RIfT`FqgVIq z-*hnveY_2GIDw7ZwYqCRyAj2C&Z~wv^h^JNNC0^i#VOrCP7>2UuA5>ue_Y3hzT|l? z6n9OozT;Ho{nLr%Nq7UEcfrdD5eNJuu;iGo(x&v7ZhqgBs)uyt>D6cr&Jls>-<`S; z5t!Xs{6zisUo(_ED*hT4KZ{etfU47_Jwl}NqF4}|zOtsOP_Iux>dc|X zB4ire1#jkhU>i+l`$(o-Zg6;W>@X^a4rl7Fk247Vdz8;GK>2s{mmfZ{{KQ)YaL+aPr;0&zjSD*$;8`&tBc?FvYZF-f8 zz2T!o@pRBQMf*4h42=YUZ^O`_VlPgmc`X%J9UM+~>Vd9>`R3%JUhELobn$dHtBR1K z5bp^>*MCAi!H&6?Xt=OJyhL9p_Ej95&`sQ8u$&Ivv^$-C{8h`^VSr9FR zK8C8FbL#3#PEkEvEES}DCvCzcM&~bR!U`LSh)817QTs*g(8Hb zhh>l>M+Z^MT1;TKL}YleGxcu(5Kf1qQkKud)e*=tB4(Nm03ftb{gfZFwvw*k zCBU+kj8vvx3YDoOh$IIhLY^b}>8C%~q-XTaIr3c``2QQ)JN9pCZyfza$Edv=WVzMp zw>Qf#sC)q#qz9P9A*%3J;D{tSJs#%S5g5L zwmtkQ*RzXGlHd3Muz268m~A&av47<_S)M?mg!{mX}cm z^ZGUYr2fGB{dW(;DJ4>(z&vSZ*y!%}-z}YYr_Xw^6$Ia~J%dYmQ+(04(VE9edL0Ev z)!Kjnl;`Ox81d%_lc;{_R}(A4?>&S=Sj^5^PluGuS`Q9QLj-)Uqh}$sAQIhe`B=Yy zQWp9W)(5{xS-UeuVnhh^e0WqG5}#Mj^|vgbUio4BRwzUq@y0RFl1ZABuxoHgD8Bz0 zsL_iW?b|jJ8GJnC>Qs;R!E@wAA>ou721s7E4E$E$+K!T%yCH8J16NgMxENK`1s408 zA0zSuUVzmN)B>DENS5&Swx53|Ilm$s0nGr({8QbqT41d~j5 zZIJUfKd0AE4ibgKABc=W-*L!cVWs{U;Oe~{*3xYcHv9snjIPb;gUKq=K{$FZ5N$s= zNG$JJh{3w+=!K`(X4+r%4q=(@Z!R&#pLp*fj*AZ zKNJB}lgIIkSrtuLcuyKMy3`aj$`19sihf$|p@BUMugzq3ZBN~qlijtQ3W#J2AZ}h3 zK%t(WZ~3iXgxh~?fs5F(waIMNS*NN4JM*&=9% zE{mX053y91+Z+s$I67ZBxEP8o$reP6qAZ9)Jvc7`hzz$OGF(FB$S8)0e50Ezvk>Ck^Ng3+mSN+SeaeEQTDH9vy-Ak_Jl&c_svZxfjyjSVL1v= zQir_^1%=}%?`w#VP@pwl=A}^YRhXlR*WIa2NYIZ2Zp!nUY#s#cJQRXbpNaim6Hel% z`CBf+j&8GSp?A+=EQv_389hl~C{*S?n6R(eae?i7RL>Eueq6XrVnnznM zaCo<2`eAzvn%L5qvM?h%CPsC$1>2=fakN8OTlH;_$RR=h;+Zi|=C%Yn%qZ{`vA5

@L^tz8u9(;+4T8MOtS3fWzRPC6oc1T(apYx3lt#7cVpdW>b+6ov6ir zhmu?`&KTX?%H>bXsWLh-(f`K?-~RaD#S!lh^CB9C+~j_R-#++pfq%d5O*6M+_; zt@6TMb`l2Ys4zXT(PrbbhQ)Hfkg-RxQ6s+8>xfgMfN2(7 z5F>79M0VrID_`Afyx~&m@(QH%W%6c5V7#bqgbBOq6+8S>kq@waG?7lYrZ&Rt+&^t5 zof2Vu@Yh}tQ~ZQhlw@;yv$Ga`ro9pvMOgFme&2?#no-Bcv1nnBFK^DEm0h-nLOkqe!9(LB0PHXP;(@V{Uxer=!Py~5H?gmo*r!^zJ9~#B zndk8Uu-V1lIXN^QhiM0Q)omOM;aZ{TNyZE~xR`p94l9jK-LkP5bZumq3V z?}Lloj2E|ZU2LG0m{0(^*9kbJbgV{Ps;vEqKZP1$zTy7}&&nrxO048_k?4H`^vf`m zY1G6!1N#H9)gebn%!tA;D&pE34(y$OA;uVE8+JnU1qUCWC~G^hupeBFj(hzhGBatU4mVKO zo4CVFsNiH?E=j>@)K$z9bd+yY!Lk%@y4MlAhOCNhb30ng(@>&g0vXJf;5;PNM|!Y) z;+w+cPq1sE*U?)L5l>Q*_(opTa(L3IrRVYJv#|&KCA*Vh_Hh=o`Jl{f8zxRpJ<95aV9o(~9c1#;ai;k9Wbu#o7th&y>v4X;Zeo~JT2}tIUD+1&hC~9;_(XI=w)PF& z(n6p?a14Z22Ur1iw%W1c3Yq|LVSfcpfL=%Y>&3gfj`pl4MAG9+N208k*C< zbG|ka7$aT5@f25K#bk3};UvZ_b2$p)BI4iF=|KNl(MnUMhP+7M4odguusPSOi(e5g zht2t*cprw%#fK}~*CTiH16WSX`3HgPM0Y9|`CD$SG3TZt;!usb_?1Z6yAkWzP9&VO zN)<}PswoD36_${Os6JU^6+(gIidgP$2#6=7rThzJxfXInlT=3IuTH- z4zyp9VARDA32^3vRH9Iu%m=AZ8Utv+L!wg`FOsf4TE0&Dh;!KHNI>Vkz=PEw^<5O0-r0U&DToQ{cusY+ zh%o{l$uzOq#TZWQ)2vApp}BB>I7ez_SYrE~_(a6!ioHFfvyJBVaw{VuT#B4v$vmu& z0@tB+IKpZ00{3{FvGdgQjqsV2bFd(Lt_*i;mFgl7Zb|ht7On3hH8h?((>I+megA$; z%J-jsAK)b+$mfs>JWb*q7Sl$cfKBE zf%d{XQ@3VAQxOtXbp&r5T8NG|`tkwyXnq&y*YGY!UN1CSd0n{TB{K}|rDBhp$+qXNJ14e`!#YnQ->~-M223_c`HA5SbzD7hT|YN$ZTQn_{fP{782OJEDc~ zAR8_88GYX7H-u3~6Arg)#L*3?~?*L8EZ_R%}$|Q>00W4Fzjb z)TOz7&JdJY^j3_wa5R+bxdc@RGWoL~+ECWcjO2T9HrL6e)rw!c9(BpX(SW zPm$ZzKB|~-6VtJY%u;F@Jn1ZWz648cOnUzG(_7=004xr%J8=v&IIjavpigf?a8;*2 zfnW*Y(?zcivqo{88MF*MBDi+f7jYd`9+m!Ez^z|F0=;xKyA`MNuA#rX#j zI)kpno5z0 zac+79d^%jIU-To$ON^~E;R!ue^>CJE!`@s+ zl>@hywsw9Ty^5?YQ~X&zucoyBids(Ff~ScAVlyaAKemKQT?~;BCXrQxZSE2AC+Gk* z@q%XE;#StGU|zy*SXLwW8E${V<8$2ngvW8$o-p0gabSYw&LjA!t^~WB%Y!caD=K5z z8KRihPovp}>B|W9nc*e7Tp74uki+VRx!P$DDFzfKaNd@!;ripYja9m(Dy!cnG|{dY zbw&kt>4BroTZs_}cD2)Rfv`Xv2)2sWzhanxOOp(?O+}qOjbtuokGDL=<787(SYuQi z30o80_RfNYe!%m7d$KuNWe}Qxphv0xh{8wgXP^E21W&zeN9<+QzcP-@O8dWNsT7o~ zge_oGAQZtR2xmY#x*P{iKYja=^#-bbu8Qgp^^uKO9thSMqSEP8D`0L=S^EO$Nic8M znUDnQx>sQffcsGX^kBySi(X%V3-!iMgmv>c!Y#2Y(epQvT6hOP8GMJseon5Cwk0r} z1cn3Y=H)b9Ffte;wQCuToD;@Zyg>jasdr{9_-uaWAQBKib2*lSr)kZig?trR7NN}m zL6>9F$?G4uNW(fTlYZhErVpQC`ZF#64Db_PlgRbanao)98o93hn{r9-OQ%h4lywh} z=X!RgK7jcmUgZTQJ5vYAnlS_aGw3gmZ-4qTV#0FyakbQD#2sCZbT|$9NP}d=Yfs5o zpBcTD8w{d^Sq9MFzx3-T_owc`!U~6Bz+i~tpyx_;!}(9^;^}l(ACCGiuBAW=R%sh| zFJp9f!N!q3@J^bb2*oAX%F`YeF>N}{nOUeyOatS#Gj$_^c0p*&X%~d8dPBvL%K5XD zmH)ymqo!c%b_NAdj;S8vhv<6DGh*wcn(MUdl4ptoXzYqX~zr+=UghY_2d!q}y);gm)x>Dxi1TBV%W!_MLGqLA|7Y@Bz?)eK{lQkQx81Y!kze zBhfctoiL@B5NpJ3JZK)s?m9UHt9@%k4C@dd3V?o1#=^9FgyQB{AA*0Sev!qcHR5p@ zEXN^UB(?3WSlEz}Z`k_N#~rk~y+UckvD5@uk0+}*OZ+)L{)>|_FzJ04Qos0fK@<>OzzWDFF_*be?;J954pE-ba=B1gHOd>%aG6%XDRU) zZ}l0#gXld@IJ2t~wY87D`Y*5z0m$5k4FUM-_tXpsg{>Lbl4P2iAy7U4aws!!a`;#t zX5Xq7-@s#lc0=w+s1qHQvOY+sdzMn^V0?q{c(j40ZOdHRvX>Kq!>NKNCDmy|Ds0Lm z>A(f3v2!xiW2Csb2%hO^;4cT&%McMn7sG`D_J}GSyp=~zpOoauno*~=S&nA4~HkYUmvlZ^sD_=ZJeW9*@^*t;O+%w#S1OmuI zrqgnw-r4gz45U3!IpZ~0ewm%(cfm^~j)+wA?byD=#(RN9>Ml} zc&wr4@(Nrwz_PkSP)bnDzk-LfX#rkgxl{tTb-ib0=YHzVeR$7LeU6((jE!Ct>0CM@ zzLA`ZI^b|9YsfTWM5g45Pi4uUl0qiel!;~%>Yx!NdEUU`guHr(p1%0%Y3JHPYFat; zdVMBb31Mz0!h!7z+~KmsmWs|TVbQtec{~S{APs>k&@6;dJlzjP)(%pzt!C~53wvCh z5%DV@w`IR3{xOc8;9^xs$zjwpDr|-t=*(CBWXxxGH(ncc@f(7qR=F5zvUVyTvmH9w zZG}V%W)jCy7ZOKBs91$a%dM;lK`$`b^Y~F#xk+V9eV?-Cs8x7%q#hcHopxPNY1crM zj$0(5jVS61i%>(@oIV7;>2VIFa5LT;!)9a%owWBiuOUL=iGN;XBk>w#sGD z`a^BYUJ|K#;BU(o1avTj8iUQ`pt;Xz?jiAz0P82F=yFa9Jrp5S8;O3o>#!Yz88rtp7eE~%rD?hsXh?dSgw_Ib>(abs@Y(~&*u+BOg+2a|5qrerG{_Z)VCfPO z|0svPmBthzmGa7aFs!_PBO~FYEmxY`rAlJ!(`Ds z&I?n8kLHUds&>>4rFZ3L0`8a_lwe=W75>SGeqe{#e*5+LGZP!u6dHB;)EgJPNmA z1Tb3Kd3}>iH+&hnD|K^1AG`K^S?Xr~gqs}T6Q}TFN*TuK$g;#h{x~d#v45JNY|7#E zHi89dx=9152EGRkU?0XdA^;Fzpw7!thUNFD{g^1HWsYjeK13dbhM$0svqVtwM`+9V zVSH(wBX+S~Kcfj+acQkL{pAL*2ko#EC90fWPRnUmb)8d8Z6+MA13{>Rp_$TV;)8Jv zKCS+W02L9js%OIy9$6bg*QSYw;`qSpvp}IVQA=5iO-`|v)3?g%*~)`!5lB`yR;!LLbI~>YJNtrA5l9QaOlA|BC z<3u3NxoC+RsNNOT3Z@?i|Ile4>8hUy+>CTJSneBeJ<%jl_#)=#1w8%SiHH^Kll($h zU^;`CXXX!?PNg@aW@yhR`_3KtxyA5UM17zm?Kn;Uqy!l2yJ^5` z;S{SRSa~bD)N6MM_B36E1V69%lrH=85Rt+~cc7qQp*KXt80GN{S<)LL^?fz)r!9&U z%&C>FC_}Yw$qS1eQ>>ED@#fIVJ_?Ji071BHGhAjQ!!BHg*c&c;zNYM5HQj}%qY=>u z^M@gHJrigZNY}nergkZoEH|#ZQTqT4rb9(chr&Wrhz^~HKp_Q2Ga=d(fdy2phVcv% z)071Ab=3v#09jFa>q}&X`T|QDz)4yS6_dPDD*YsXgR@lxE2!Sej8F11#}MUO#iDZ7 z6k7Sm*?0nW)WmFnhPKlBMd(mok%lF`Cn*R>fT0WNxIX2($A#b1|?I zsqOsmi;DsWe4vxaT)54J$os;1;s9y$U+T^(CF>$$1CchkHy0mPZg>nR+H#A1Tlx{b z>_gp}RT5kU3xcn&#wYkJ2#IB@(T*CNbHgcOpHmaC&91L?V*kC;0i>lJ$6E(wD1&8Rd#~InrV&cnOh!Nd&jJ zLr)nJ-zg0R{%0q?DaO0_f;m-jNUi)Gm8`7%HKnztmjr8Ia8>rM4pt{PU_F~69=U?r zUvVHLCiqp@_9$z%s+G5mZ@DWXz78AA#5)BM*M3YEf-&`TI5<()Zn_Y1Y}l&y!y8U_ zjy;h*nW!-AYvZuVgheH;gnS21KVU1V25uWq_K0Xb>{YNzsR7y274v~jxR6Z;#KYDM zxIu$|RCvdXKER39^wvx-A3P5!1)xH=1;9Na{*e}!;KWd2V6Au)Yo40s0l_8AtC0xz zEYm^|=$?P4YB1oPVew-c;g(C16KFf*SkD-loWO;`?+MO=t7i4siq4SvozmXQba$W| zO(by5&&S}xAYYG|lgbBXgJXI*7t}B)Winr27CNu{8ZDsH7LYox%;J?MGLT=g&8^srW7Pc$+6x4q>>8g^1LNEa!$iw?US;qd zG?*y44?LmHK3i4z=9MN}y756=bHz$>e&NXDu8nk86u#x(RFN?SH*Y)8jF+%A4Z-)W3jUQ2MFNKGBSt+1sE5q z{IMi_^AKNSt)#gc0Xo)Z#xpF=jW5O>;zKpp++YtK`_b#G+}Oz3Yv3}%E{ud1$b?hx zX!m^VbE^EkZv2I-A`On(NPwfPf%n(?ZWuRT2wP|kM0*cnBi4AL5Y$ZZLYZEKds}&tc7VOrmd= z{ze3Btf5fdM@R|ysOdkt=9fsfQn>T@pav2{EkRL1tc2r%lbv`)Crdy>(P_U1n>Xq~ zrp<(!S^({1d-Vu1Vzmb-vEuuQU=d1dw5Y1Y7bQFlXNGAgAc4K&pMi(W4dSj`d$5;X zWXD0L6penEqNaCl) zAD~4b54DGc?3I`VCySfse_ey)MQqG9t8gf+n|m+AE~j-X!CJlJuG_b$Vgk|r4`KaG z%>GAU_CF+Q+z=v@{f-!8D3~gKQJi-PnDD>)OT33V_hnR>Dhs zxPDS$#2VAxdoFfVIo~7V6*~#If=RW+)wh+z(T|Av6Um3og8TDzqav>L2NA0&>(o4q zaZp)zqZiNVc#g(%7M^ZA>)?!u!4P&mN)$!oEdet5C^VC$$=YS0F>NJO992ehGJ^L` zes`DBH^P80`|gNnuuKW3U=rbVC8Bm01jLxyT)#bKO?(M znvq>KfKL8o5!up5w$Q^>+!h&lMHkyBQrqIul;@oI-HoApg<7e>Ck>H19neKQ_d$pE zF#0wQ4Bi-mGPrv4+nAZB+ZZ1j<0XL1M?*$CV)vpJy$nOL#f4K;7?i>|VrHS<_U%pIpf=2M zC2~jPngM{mlt!eaEP<}f`qIG|jk=36gW;yZAf{eCPcTqjFAVH|9o1cTy8W*^-Tu2# zY6J{q1XP-5w1AZoXcExYmwto^08;3L-AS?IdANBh}FWcdU}yVjr5oHCn5L{uJuN+IBYGW zh9T(d`R@qmSZi&tIP&Qg%c=)o!5?<&R!5xEP6;AN{6pBBqEoC4)>151D8$aBSQ)IN zSO(ve28u;c&v#&DLo%pOCN_nwc${CCQR!&gmbbFa)M2PY&8#u!__9qyqhP79G!31@ zvJT2(Z1v;FX-3bI*-_Kp!%K`xv2A3)d+6X*WPl#@KS{t>+UoEZ$J?JkF?hR)-<~^2 zZ>%?F_hqnbtyld5yS}g|V!4C1c1SmuQ^JV&89hjL#BLo}3-umiNC={dm%&J5OQPW& zS})@2dhl(I;YW3^ai}Q|!9U6%j$gNtZhsD4aj&#(lEKjkJ|%;01ZfsxV@hpSjq!Qd z{J3#w@kjJ3f^OBU`b;&Na1=@eJvhXLMa2$?3_s8-O;baU=H84m9i`<-=*}58?XeqQe01>orUIe zqw)QIb}e;^@5xpg0{WMeiRk zIE>YRE^GD<28Ia5m`>gHsVgi+apZPF2~P*x&@k+cw+8z)3Ov3!N-Gd@0QpI7qv$bO zN*!c^u42wj@j+h+xy3DBTiygY#KdAT(N{LH6s$y}xTA@QV?;bk4HD;+?Z7o06T8dq zL?*BWft||4{bCBvFzrMG_uvdYOq`0)&|Q2y?0n~)r6{a&V(GkL&WR<-iKS>aqXK{m z!A~wwGsGx^pZ)D8sTm#j$6>xQNACTv{Xgq)I2#E%-=>HUwbfZaLGn z=oZ{&S0Q>AU^^3Cf%9ceToV?51n2=ASUk`$G-EunV{xS#cz?mA^g%6y=VyCJcJV&t zg-KS?Vd^8X-9%cQr6|6#VBSz?RY{W0OLI5tsGAMc%|=EC8YkXT4>$nF`T#V7`vrZ# zQaX`eL%s>WDop{f5}-J;gU1Zu8+OW}2{0Cek+zM6vMDfIo+T**2-RsN-XmRx4oJ+t zOe#@+F-^Xac8b{5gfldu;DdfJYzNe3t0>63tqCWUIc=7MY_B&NC7pc^05=QN;J_r^ zJ@63-lG6Sx^_uvG)a3t0JsMJxR=gqjWW>EmxU~a(SIDbbGu&`5;ME|Cv_g4Oe?^`d zpuKXtjv<8O9ozB1@s0!@$6e5%;dsZt(eVx(?Qr#3)#>YCb>+ypj%Fx>n~eZQ^7+fx zAbT1GAGN6o_mcyVk?V=9m%+9PvCv(+c2?|7Rq!Vq21A20*C|O7&m_e5e#%G3?fIFp z_cb=mLUAY;-QJ)Rse|J>-U3ETjHP}@?5n9CoJ~I3VxwtoAmR&zf+~TQ4aP=X7FRFL z922h()hl(+yrITM5)V3}E+pWS$rq6v0NC;;2$@r4E{yUrueT4U*XTc{r~1iuYhVq; z4?^4{52$VbT~-%V3fmLAwLpwgl6?ok2I^)}iHdP5)ddt_P$7zh;_a@1U06um0q-ap zsb(Xj=+jEPTID}=qwmVf2ZzyEOQ9_J>L6l^q1Q>=?q}wa94^ADV%)np^Nr&m;tz-7 z=tPZp=FlEI;c>&OJajRYwH61!U<31pCo=p+Wvy2_iGhJ$x)UXg!lpaVe3(V2t#6Q< znExN7SB)*@%365i$oBioI;~ohq4C_S?|T=VjCf?_V*sHhcBnX!5-Qsd3me>~>uJF) zYCCJ7OWl`}jIP+e?~U}1aQ$}3U{`7vZPo$>EtlYYqMF_bVJmp0ow7{mi;Xv&Z~)>M z4$q651LrJ#6`92Jl{(y_5)%!#5}3W4aq6wvGm1_P-iv|zuOU36Ar!l{vezV;fMJfh z@1Q+KJHz{W;M60nU9=s3ANIYWieqJ;@b$@w^!aL8_eIB4*D*Ez%;i2JI?;3W`W3&S zOK+UbD~iSR6~#D&6?NlEqq8Z^Wt2u~YsK=y-iwn%JpbS%OY=ZN-i-;U8V4~0ul}zYc;?(osO**A0?d@yi0mxsAtNaP&NICg z9$&P8WGh!BKL&&6jga#xVmYy8^|FYMi~t~f0fQ;GppcNpvC`R0GpU<{(UD1mS!l#V zHUr^&cLY;aOvVloJaQEn-XL7n)tF#x%{zRmGODJOYAGe#mCL5F?aEB)M27f%oOkXw zC$R1<*$@5cY7`Cos@Ol-Jay&-$r0`aOda*JK1LTgW)W@p?)+p7Yy$pOAZ)b$jNdQASc1#%IzJk$NvFp z@CtIej-3dS-yku8;Npt1@fQ?tyF2-&uOj z-e83wRzB>l;YG5kFzY56lBrqqjM>8ac*t5V>URP2um@Llh@_B`VuIkkuPbGV)g58nK7XA)xpe zaSM)#;dG)0IB)88_yzH6z)#1o5kKtE^(OpC`k3p^M#`5@CBO6GP75eMU)M!t2r^!A zs|PME;ULf0#MD-4XYstzSE*RL(J5MQ=^i4S1egf=O6G%*RD4Glcj7I88%m&_D$v0Y zr;{wkiB-bC(+TOXIc56jUReB%Sx*um*azThhAxjjJca8hDw{icZ^ZE2X)dFNg#vH4 zOn_N9fhpbu!P^D87-Hs<#_qtChIJe4OJof^A@YlzlnN`s{X9CJ}w#x}RU4<|p3gU;cUdnt?!Q6rQF za1zr3Ic&9$A>~P`rHdF+Q-K8#%R)BT`*pOq7rRijDzXgw71px3cIx#I-e`GnIl|H? zZtb9MWhKTePt09kTiUIhYBy z9f=Nukm)#)dK%SNnOB~EGJma%71*2Wx=R}Q(3 z#EvZ}+^(ABlw2vP=u5C~KVNfo>B^=py7f#+E$Y=!OG(&8NcxvwM_k9DV@_{_q^#v% z$mah#CyG;y3xLru7;;kvRs5T>sg3iB!vyhRtfHRV*3Ozz#a}4Gw}Fewp)>IP3sIho2W>VQS0-SW;F30K#9zVvx1!BUIh@t@fK zY}C8g$ZPgm{LWoC&A$AuAfLBmK-wE=LJs`8IwhM9&P;C0v4``oz-i>AKC7so`#LlB z6O8g@RApi04&B3GfT5cH)*o@_KE2*b3=vA^X2u<=zNS3DU4W(q<=FYATTiQPTk!s) z{5Os=3G7m_nim%QQ3eiL7TQndN1Xj+mEPOeY5nBxCj%YPtox=6eb4BxU9I(`-Q4~N zf=sBdS@GXW?81hqXOGv)BV_egSn%c}2Wyb2l0%iucCQn?oQvhDSrrcYXYng}j=VLc zyK9^P=daocDa?~~)l(i2X>RcayT0PoDD8DtHJ+sp+-ETU8Uu+3Wk{$FavWwhJRKpn zoRoNQ59t@R9G!S@zcREOk$6z&^B%e3&x3Zc&KH`3B3dk8%YF&f_1)xEi~v_p-4ILN z$d;{(l&RIr_?B6}QG2X$ksoUc!i3J}h-`ZB;#6_>K&|XSQqvnby}-NT9_Kpihe!-3 z&&0c9p}8mMtNF1STJWH-Z?+^CNH9%??cZzNU`K0&oz^c#Qr{4#8%r$_Zy!s2TWr5T z8Eqm`Z^v47DXK1T1t=IzMt{nS1f$-@X!3|~b>rlCNpF50=iJbr?{;@h8#gpI)b;6c zp{~=6mFrs8R1dm!)V_C$lUZWs>l^=!8GLEGDZmu` zH9l_D4*Hpj1ct_~TE^3Z-TV_tO~3$SDyHz;W2x~!x`41mL_|szbn!GGdk0eYo7Bfi zUE_Qo_z@onc*gEa-tqU4%EyH&vebOJ(*5$K8uR5|Q*6XB$KYql=wb}#9huX{`Psvn zC+&8j1e^*t>4iI7xE0o5N~F%mCs>Krsh*Z&2aYTj$J$a1ARP1AIT&rWwU)4X{KVJ= zX%m5e!sbL4FO7~9Gt0id0(S>v(+>}RL-S^xcx(8u8K~e)_-2!>$pLQ5Ejjk@LFA zoaL(PF~>>`m-;G~$Q-u%2K7i~RM_6vlXfJR%I;mRKFV?n5v(E_To;Q5FxXuB156}6d6N;U50 zP|`PJXi_fYZrO{8D3B|=oDP|E1d>{w5@~TiQ{nIaCBK8aiJDvN^gWVf@7E3Z z7)(-fMqzytNMrb8C9kir(icw^nQ={q=4I}!$dafrch2q2&er*7e8_*erf*?@W6NBa zK89fhTkNS>Xjb+yL9kQXUrg1fPv7c&5nPZTAehjlSz4wC#s4%{6RwP;eo`JG3(AC5 z02pOL#hot4)47bXyIKS*@jEukp9x*@747H}+U%t8*)qbHwfzNa`*Vq3nS;n!@(XwC z8pC8UC)M$jFrEgnAsZV9&SlfoY>s2M$I!UVYFjA0zNg$Q4a}n@uK7D3MKU(>OKSYm z4{HTqq$?GMQf4rDw!vi3xDlh}#;_gc6u$*@{zM?w^dq6YPAZe(E{>bYBtyQ4>cE7x z+uxa><54a&*SzSzeX80@g_n_eskKzJ8JmNBw|G{{Iq(9=0^P^7V&RUtdvjgT+>q2 z+}S<{YY=F@mKpG}25X>XK<_1aMFE|JHAHZf-fc8C&2n z&6aob5GQor-!&)w5w1klyte3E1Jj|enLm-H7>fm4?6OJQ4F4Hv3Z?Feq&GAtOY2Bq z^a>QE#u>R}ILw=4_80Efde)*f>P`NT&bDGf{8*Q0IK#;>#IN2EKX<`nV5$Wlu~W+c zf!N4%J^~xrzD{ci_K}P93bPx$!Z@#Je@T=Y8r88RE0xJ~#@%9L_KVII3va+RQ*E)V zz{&Aa{F6g}#t-}wqN53%#~0&mU4&<+s?2Vz50x+DU6(erEOcLEDS!Q)eu^Z1V|1%V zkH8Mx*at@Okq*K6$AqRBD~QgZWUXWKy^;;~D^R3G0ko{LTbP%;tGtZ@{w3empi^HH ze`R*!s9lfajex3|JHzgHUYu5>DN-7>=WHh4GSui1%DL1CB!bXCHt-mRa~h7$Q$Z_- zvoo2$M`o8AZ4wbO#x3+vrCvoVC6$SSD;aGt*iFr*AP0llWxKmW2gY<&N~)Y4&yZ#XDb~U%d*7vZ!)>&5lLYgxj8l zEG<$bGSrbUWT-zwhP1y{?(wg9Vz7y)Rg9-i+uZj5{SgJI6RKZ}M?@6G3f|yj2r3Fr`RYB5shjFaObusNT8_|8>ifPx4y2};16%KiAf?KXcQL&r<%nLn1Sp0gqwggDu%j76dCFD zc;4~p;QXO(;2vq;XVAPu!4D(_kl{HF6lr?j&Xq65v zJVWQ0j5Wg<#pMXlDv;cj|*Vu%@n|XO;5b( z)lcvzRPzRT{1@-YjGUgnn(1kSQ!?PyK-$yJoNdrBIE-N=RpxukPW$z(>G%Y;jF9Q5 zfp4i(Hou5(z_(X2bN=gp6a2$Zl!Eru+QL z9=|6|bIS~Gt!v=ODGuUAz4yGFnNEnmLA(q;k!j!yCat9^yWczb$MFov|46o}mj!B} z;DsiC{E2Al>q0?Q@d1*Af;_t@SVoFL!B3K)EMuKgvlJ=h%^1j8urM&UtB=72fWpK( zG6#ST?!`av;@v9qwdFbc74VJ~eHq00k%9ko%H$W33dXH>Fz#u4iP$qxZq2DDK=OR6 zU__cZ%+>($*3+DvXt~2&bcSL62Ui=pEC*>M>opWwePI_PG%H{PJ2ohwGINCtSUP|V zL4>MdZxhmY8f~Y0A=O+uuo4favwDMF>=ALlixtZ`xeDcdA><&1)Dt+;Q1|PbzNR_n zgjs|;YHz8x%ge3pe-`5~H`Wv>bE#$2?l*`+2!!o{6QqM^MB~#M7~b#EpWWWfg+j1! z9L_D$8>CcuG1~MU!>xjFD3EnfShK@_`$?K%4*TrCao%UJh*dU^+d~_TO4O|PRBhT| z+MbB_f=JC@TOrkti|Ul3br+RWj91!R>9mP&l2FTqk<^uDFL@PxJ~W@m!+l;I@1o8A zj)U4A2Hy(&i~%a~)8WE#&WEoQwHtWA6pl|Jy2Dtsb~n8rtah zB4`@2IG}r~^1~>iVE6+k;vhFr=KxU_4g7(@1kL?1X70xgJiuOV^a)S}Xa4^r@H4^a zp2fjv_jk#{b@CthvYF}dl>aAD*}p^{bfT#x4llrXO3-EgFuFvnOfV3GFXp^40uM z8`W(hAk9mo$=PkuB$8K_8yBf)y-Ez~4)m;PVS zk0>6HdnGwzMBpxP$6{a{%tMB&8`Yn}#9J)fY02<*L_Z1njuGW!jXM5%3|81yxkTv*1QDBY5yq7mXW zB*P&`^mUNh;EVVYv}3xY@9c&SxZD#ynG_M0p!$0b27I3(+U*)B^nq@glj@=4?4-5^ z$$N=6E?RVE!ay#s<>ahdW*qMPj4}la2uCF&qqp~}j*-tC$6A7ORv_b=M`ZaW>?7W+ zexZc=AFl{aIdkFZbi$mey-8;hN;a}}NNF-s19O=)FfRR+{>Ab~*0~Cp(+*o%GNXVQ zRsABaNA{dq^$XTS>5Pu#B)7jXNf$!BS;W)D)1h)1`q=QNbJ@}PbQO%f`ScN{#-Jm` zzh}@91pS`46`7!DvOcm1Zs1KOD74ZC&fwCbFc-LIQy`jZnfxaEle0tB_X;!ORByoA za&xBRUy3v>EajN+#xlU-s6NisN3)>wU^0cK<+Zz z)Gxc;^b7wU4+a3-q?hHw%zk3Z7xByTRru%nWD_=N$KJ=~a6;6U#8Qp;3i#mDUpkGY zJN`Q-oIr*z1QIT54JvryZ+sSxA1M?=&y<5k@!OrStPIBMgf0#fbaDxoBCkmDwF$i z<$kWy&He2iCiip0xleI&{~RL~%AV=G`5rQFWzO3VIJo26INpe8f+we|*^A@nC*H`@ zHEYq#bAa{W!~8SwqfATR+hSV!cUt-ls9`!c_;Y1hnaR?+$z=JavQW2^<#uIRm&r1; z-ekEe+uxxtF|=PI0Z-aJw1CGSrOYEHVIREc-^^n(kI#M6JYL1)3IAap8+iQWz2-5@ zX^ z<8w48y+xF>z})k8#23Z?iw3~Bqv47$!d+9??7zPIZ~o`IU-N%#O|$>wJRfE4P|m;b zrJpYw__C4TBYf@A*FWg%tA~8uocX#_Utb&X)$)I=Kl7PL;VXlG&;6YFLY(lG!QHuE zUZdcK%;%T%8OPf>ed6=R%;#72dGDd0H)THmJzBHXzjz;nY)~$F;Pxh4i32#fF=9fh zVEM7kNh;bJtLgvB5z(5B{=`E-Hkt}%Qu_UgACc1Rzv1Nnaqz@5zxi8309_`QV;(G0r$bR&Hi2MUh~iE z-tjm8y#5_35jq0c&fB`9+5gxj15OnryiLJuiC4{uTj$UX^_6Qdld7-WI4q9?qT&+& zZ}a`j``ddw^s(oSVx-ezF8i;^kJfBo@W&yjW8LIm1?YaP68aFyKLme5g$J9H)V?k7oAa0~z9S?uj0e+2}L ze=p}~)n5_AaKvAMTRndTWYJ$Cg2}mZw|c|PGaZj-y&$)*YvWa}hjF;c-mvfNe9sYh zZaItJ`TVZr_Zfa)<|mK%zH{pzZ!ni`CY6Wx8(_s57l9R#)KYUouV zRQ6TMI_Eb2CD)5<({uzh9aWkRZJV>#hU}hSNk5CzEe&=Uze3424~j9Xz1xmql+xuv zBii0G{Tn>9)dzj;YtBB|<7wZ!^^TK0t=mjpBX;0XN!Bg?J&KqITn-+W}Eq1ZE4F*NKvR6K zf8|!xG|h=!dwK@F&2$I=^fVW3;nCY%v=uUWj6m*B%3rbcDMk?&6kCi=#j)U$4legU z!}^MeCBDWLWUP*Ied}d>`+tnte3i3Uf0yBrga$^zX8m@={KW_uhjlwT9`40(a;528 zbA@CM3TAo(%>7-rkuir}Mev7BYzwYt zDU^j>+8?!}d$14-MAAJmd;3!VihKob@3Qi`_y>t1$_n7R%nPdUrXF>YwNG~-iMh?l zjk)&C!_{9tdi}jtzS?lEJPyD7*wGO`X`o9aB9u7Wls^6L4cTxZR+P8wwyT>1R#S8L1 zAFs*x{D$9&xL|DM_eXw8%YDzKFOEMn+lq5RvEJT_uDAkYGmOM{U_!}T08vC22RJ^> zTcB0C4tHod6^y#yN;E&8ZIdB6_J;8iW z)Z3ljY0sS6SGxcd^pN+5oaLwErzYNj-P+{u{DZJQRnR160P~!I863L|BEl;1FA!#D zqvy+%%Mj6}lzy<0id_B*7nc&_SqF{jHNBy{-+O8Sn9{rH7PWl` zX3MJxkNae$X9kbhfM zIaK3xlNqDA0#i>ZTwtazg{tTH#2#N9(L+{g=mRE@*C0&W&7bzfKiHROBLQfTI7bR0 zu}?KKr?xyoY=vYka(uz3^---oY}YPGn*2F=fAEof&xDKM@jlgCNGE>p$st#(vI59d#9#)o_5ko;;kb;;5~d zM+)6!j%#a4ul z<{@qFUOq*uH+@5cH~VM6931LyGi*qS&JO{#zf*B`6Mvz52YJZqm)~Lk=qGhg&Gs`) zKj~zoaxc9VUCfM^<22v6Y=3=De-Dsq`g@SS$7lP!UEN74zRA!Rc#PRw=6?n%MtH8) zOVzKb24bpxn17jR`#5bZf-xE^c%4S9yd&sBc04jgO9k_~#zno`3~>HJNTK?gjSC2m zvX*(EotwTb1_Nq$D7-Y~!~7d32|9MM+Z!QUaORZZis}FrgzQhniE9_L8>;+WOMs@3 zBq02#;5=nk3Gt`JgWKyh?U_I!V7-m?Jbd=l z+x%UI^PG25!3{no9tznnLMg3f%ITBSj{PFKJE_}O7wDB?ikUeNU zWVrF+{%5)nvi~&Pg`O9XboL?axdP0e{3|BpS@u5ls{L8<)!wZ=&zerrqn>nO`wJjB zvQlZjb^7m3w~C&mX3A`5bcyx()UE#YJnKd9!47dP_jqcIbMQ((ytpZ+_O8|f&^s5Aa>(Z*2GCTHBRny}rS^0yq4k%yT>iAmfA zVur2V>+<54XdnW-Gvv(@m+J9Mh_ler{I*^DX={z!E59TW$xeJVBBNwSed~Tv2F@h) z0B~p?lWtH++={^^e{v@qy~HYJ9K;dE8r+5d2f4(#7!fO%dvVsM30=tAq|=dlBVHjZ zhwYt4y85^f8SFGD$;l)lSgyPpwNKIQVar}8cSyNJ*$`upaDpMqtk68k%~P3-d~TKl zks>23BS3*$7<(WvN7HLHKv#bDBA*!$gz#pNm73!V?7!y7A5=F^b-D5vwNV*~wao6? zd}<1xzCJ6C?L3B6kJV3izAKtZ-u17zG|!QF)%3112MZ+eIpUbpI^x)0@>=dNLhre1 zP~)&pqu&Vp^2xoT&nO5_PVF^M)qZDFjsTPier-|P;;)8 zIe#^qB$66CB$67@yK&cKK!JZS9}LA2LFrACbtjY;q%ShPcz5mByj}Y)JhJn#PXd|gg9{IiWk$f`R^I<{ zc)aEO7|r$}_(6a6j_A+WL;CYNB=}#{A0zl4(w_r|^k?X+!^krKdUWFNZhqd=dJ&ms z5o+nv3FtRUoVE9IL#Zm7@A(D4;Ea6FI)0bWbkcI)hxu!?pgMtt9f{x(Ud$H4ECf9! zGd9DQI1EYDzBB+o61BesgY|KAs1zg(I)6Ehr;h#i17#k2;%%;(HjGhnYB{V1*Jib^ zh)nsrT3FFWYbsU+Yd46QOy1@V@Avf?er1!DUK`>PWg8Q$C`n!X9p+ltC#J%zMEF~- zzYw8`<1CmKf5(r>$Z|RbMub1b1VkZ{(29?G@JPbG`6$7pjL<3TFHVnrUne^(5M!`x z^vB-fW9&zJ-YD^IGP|#LD+ZEgtF?=(*m*7QMk?7TA3)lS;m2d;g_$iFLhiCUc5x9o z$z`U<$(r4eH=x!%QoKZZGazy_yPZO7+~{47iTP2v_-txm?>NO4jVQ)_HAB%j;A-&8 zVTR&xH-{b2QD#7vJEERHmwC4q9bj1YD?JAa+i@*nI3swW;;QytV!!A*xy=YCEBS=> z=fzXe^woLJx1Q$<_+0c_&+};K4DSOAX1JtSIUDIZZKOpUC9e1=Z|m~`b1uw_N5K3D zU|wQBJ`8iXJ9_vEJ!G6Nh@H9FWO_xa&j6lFBRkPQ?=<>nyO@fc3@Vk~nBmeiCiYku zw`0OZYeGe+bwSB+a*U46B8ltDD`3d(WV5xWmTSZIciiO+_Y?zigB${R26af~PHpa( z{uQV*8rINPA97kq=7r9Z7!K;71(y6Z$3I3>E|!i9_;b(?u_N=e z?1N%QSmubp8GZs!3LH_c&k7_RlA z@m=lDI?K{YE6rm>749*Pms1(D7N10R5#mcwk$9yQh>Y`5UWOMS6vM1NDwvXONh_Vc zIMuq#g`sM>xNsr+smL=Vx@Qj*DB3n+neiSf+8$0GmswK*@KhMlInGEr3Ojv`(AJ%3 z2xEn1)>=Drsae!~szhcE4_#zs)8IR&d5cHRBZ=O3IFDpK>TpwN7M3Dyw$U32OJz>) zlQAPB$tH?PtQO%2YRfeX3O*b&@Db`=N4_@}O$ub+2}PXW|?v}`jhfDiuk*p zMu9QBzeemyQpDJO+~0IAGRaec6b?BYJ`2ro_|lBQ>4U(N3FzqWSVp#(+0sBTgW6GI zR13T7D__%26$sgT*{q5`fF+o>4my1tv=XzIOF>y*f|wTU;12P>8)ui~E>Lcw2k+P#b=0JZ5AFT21fJNV>ykZ8)t0|G6;zFg3~_zs-wK=tJtdjH zC3+ql9h?W=1kQg9J&zP9rxyIPLHQy&%Ix{edw}P??*g79(KEBoGs`}+t_3)j`!R2~ z-1qfPmmKs zrpEWU-v0&ge8>CIdxU2l+xkBjp8vyQeUI>5mR;}fU_bglv%e$TI43QROQ);WPQE<4P!xFxSGr0#@`=MJhzo;j2*P&}KPm(lhU^1R1_P!N{;n&SYRO7SL-PMAqcQ0~@FW`20nEk7 zSD$cYqHc_0LhjY)9GS?R!*O!yh(s5|n&=oyCzzARIY(Ip4&G!YZ*sZx*kVx&b+#q( zgVU`@<*Q-agr*mx@2yW=<>R5)aqYkp%wI6Cwz7DMRk`uvl&_PjxR|*C9@IB|gywkas7Hs>y;GoK^$;pP$qn(axtPhf1i z*K@`3WpklmLF>6lU-P7G$>oo0(J8HWtrs`x?haQ;du0<=^W_B#cB)-^;40mgAnGAM!x5K_>{2ySiN1O{-1+AS0VOZsCI*1@XR+waqj5#IXX_I=RBUp zpD;)1R$@)MWeeC#*Rf<m|ALumwog~SD#Upxak^nL-;}c zp+MbIy!s%k&*}|V=M9aS^pw^02{4D~lBtA@8$xz;fthLU@mcm4xOA&)OI4vMix&8o zoNkt_?4i+6R@A3HGnGJ+z$ie7H?=y~tY6EXTyC%b*6Rm}4ahxAC{(j$(I995tymNEuXq^C@~&bO{c9ub`&51FPqbp^sy7!HKc?KM z#yHuvPsKZRmn`gvEqAMOcXjynhjW66V}#tw{ZJLxIUxq-DDyb6?B!zF{008S;#akD z14g-_d66J2jQYgY*n~49&U|ECfF@pQ#E{!T`Zt7X6|vN{Q=>%T1>*t(e?m0HgWdwK zy$7OqKmBMqBWfR?oHo(oT$%{6_Dno#Pqt@k`sBbkQKJL~yVJo9ASn~yc~ z7*%vskh2cKsgFqF&g`1h65XSOLUZQ+f=H~S$MBRoCR&)F6)-zy@6aM>&@4wX_8)YF z!%Ai>*3_@H-A1`k>L#3|U_#XgE_}-#tX#8oPsrvbPxI2+l3idSWVx8C$08gO+?iDSF>_gDsr~=50P-h zYNx}b2}EVBnn6|#E@L%g5lvQumeXwAd`r%+VB#7b z4aU_3>`c}MlJXRklV;Wz{#=c}3o0=yN`!Q9$`=9K5FOE!Hi%}-CUP>%q*0(_t+Y(l z4i~6TEo`vt_W^jEexDjm)lXeob3z=oT{q`+z6is9b!c3@efjzZC|t|6+1St-6Z41D zB|Xm`!4-yYJYNPNwzLm<4E^jLrq`1;uoQep0L{;B(MnmB#~P|!^R3tSSxGik%)k?G zlq`4(8wgowUHk&|aL05*ee!ts(w$HoFIFu;?Gl6C^jiQ!b;o!_b!Lkax#!_IH@OXX zvhge28w}Peqe^j%<`Y7EY{w%~^>EEDHU8l5Wg#Y4?&A{%e33F;Omsq4ByL{dYvtmg zYr;208DyI^5ou0O>5}%FuM@K7WU9$#GFWUZ{_ITyH=+i{v}@pxd%3G{^ELSxjA7`- zUUk*rQ`{CXPtF#=1x{Ad*`}JjNIF1#bzRAbWmfGrHm9gI0V^J3vID4ts$@noFOr-H z3&gI0$}VCnxCD2b!~q!%v)KkGnT7R>@-}LZRc;rau(qzrx;rvQK!zK_0k6B>>YKhC z!%(~4zPW*`?Dclj?0Wm!M!cY%2n|(Kjh99d3Xj3vLJz{v=tw~=iGRHscQ5zw* zp{`kMQ@i|$-gL_k97TgY5wFrtU*xE8p45i(anX`T2rVhvw3rFQ9TT|xo$qro%q+=j zE$yJtjKv9PBGl8yAef!m4lxDA6pFM=`H5WqqeAh${SeJ_4ZEtiwlgL;wrdwd4Az`%mb1f?8|*Q$1s3QC*I59XDz<5f zMq38%CF)?bDJ=XAaG`R^Pw0*7>WO>Lk)CH@$29V)N!URh%n3Id` zcx3}Dae0hw(Vpm?q&T^CktVJzy8Mizz>8w4=lfdB`eRG2GHE zJ2GI=e&}{Xb6{4J;~v8(N7`7!Od5=ew%B!rW)%;yg2OTGr(iyx{GG?U>o}-|3lh7+ zp}e7*dnv;%f>Z#K2r8JXM$Ul%#R^V3&vi5mOA=|apaZ)iO<%;Y_Sg+~9sndaU5EFW z)mjoL=8ZsR@3T9O3eLnxnm+RQs_dl+qQc`+C$$3kzv-29pS`)}Z>{4~SEQSl`j>Bx zRBmtCW7TYKeU{so3pvpn1I539ig`*#2o3WH4_JzK?rufc!!Ox>Jc!`4?QcI8{apUE zxor5lOP|B%J|&R^w?eyHqkP9XY%srN3~^2ZLte}7j@)h8Q#jVxX7*PF%$N?PYuC!ayKb^wlWIq=fm`c%R`7$SRhzrKHgCGi zds=prb?@?O8d<`$s;%*p?1Q~uQ+2?;;H&JRk>qriU++9kWK{&mn=R~jn+9&jr=@*u zd{UYtHl)faH!o;Cju6}t`_X~>VxS1NOE(tQ+`M1`ha@UEvX!-L_?Vd%d`_EnYWywQ znEjz1uDjD(vNaa0Zmo9OIbOapr?fV-a5n{;f)RZk{5aO!ZcU5mk28wY_|tKZuIikw zGbm@j*WL|28lee{%p6hCw{}5On{3ku$f5MtDk1d|5n<0$ffX{pi!swP}XhMo+6?qBKQ zT6I3oZceZt4tcjA4u!l=;BjnuKYupr&l`y~jx!o8l6!-2dr@wcwR}Hf``EkHbN4J= zILN$;dw_DRM=WN1^mj>}S?=a)ETUl42^1Z+*Tk9@m$%U)YwI5P{xX<;0vH@+b@`66 zcy;qRsh1SG$q+~rXWC6JQ8Gwpq;jMvU9ELE%M5>+38)~_(f$(N003RV)91LKtMs#}2uf`&dTDUw=j%9yQ6`6BkiZmEG^2>?CMd8eg{f6XJ$e@4IzQMzfX zwOSK~3>2ZMXw$n4mKyp$p(|R z=H!fg9`l_?ACFjhcKe)HOgXT`UV{}TGmZA(ez}V@kb$IB?<|z#cY)4Ol8l~E5XOI- zEFs!oY5)c0|Gg>;SZ*-GP;&CBFARv7SZ_$ZS4=c=xL*8T4jPdw@+;6|k$zeSC1y0) z{VBpV+@zF94KV#dAlk5l-%fr5{9wTv_J{{)d7N0+X|BwCu;Rmd|78Yu=kbh5101bI}+I{}z zeOAv4I8a|u?jwPPg!%LGHTCwRq142cl=%x5%>cF##PTgA3Yfj;HwaYj`741GxUP}9 z@UF#NXtH^zA`%8^1MG*Yn4`vZONQ#)CW&D-q>)OKA!eTtE zl-V!hTxDk{^=aI-57sAd-Vw%>SX_U|Hrs1BRa|OqMa}kvmHH@3?@)O$4pDK=3k9{j zeOvb=edYLW`v4E2a-Zb0C0DDL7!(@pJodTUz)pw8z=f%66fFs-zB0i`JZv~nV*W>{ ztb8O=*=s0|p;S^Mo)c}V4TfsgFFc+3x<&A3zHZZe5uGhm`6yVk1uWYZu3R^CNw{WR z>uCAHm0SgI@`Wnb51qx<6taojG(JM#sJGpzw;Q}ps_I3A99TD$Unw&}jCYoIs}r=+ z9j@8D@LU+T5{-%eIQY|JRrZA|AF=N;{Q{%O$^Jyaje^I#*k4Jvqk)o2;HnOjfI=B-?>>>LPCASZjE zhS|s3KNT*k>{oXlW}dROLmRZ^mIyG(qi|)hxr+{YnFX+@X01QA!>EbSz6&>Gs8@z= z7lF~=`Fh4IM~kRfLXU7rIx~d|w2Axslk(Xn<-YQz!YQ%)q5 zSs(tNxxIo8lzY?``k_Hdp^MA4K(w%4f5I%RMqarVJz|5-#4j~UPTV5|GK}bD6$2&Q z-RrHb#sX_N25BaL#^Z&fXR%i8hos3lyuCGKZ-}MtmhXaC@~VbV$||Y1w`cbgT!-9A zoU?Fp99A{^t@H+|5w|QDh^8(J)~9B6Cw2MDXZN6V-~aj!IBqLx`QXc6-$DdT?zANK zRG|%P+7fBsD|O?d^Jp&ODoCu?pD=gdP_MnYJ=FL(vT;ha4rYfWew^J6p2-}wNV)Ew zo#;~Qm6=PehEq=!JW`~EJ{G1|9vi;4?S7M6m2*;jXL(;EHF%h49azMUtNIu z%tg}p*uL6ppon_OZ#m1ZjhoTM?3smJH=%G0HAFoshV&(LU-v(Q1Kl9K*n3!Uoq&N= zS7Ra_Ltup+p&3@qWk#@%M4LGJ`>R#+gg-S&WEZgoKUgQ<&gYm ziadvV5_qwIkra0goleeE$XUjHekZFk4diATKqc<)kk2g3wtUIDJ^U$7j^*D{u9RAK zUb61*yc8zu_VcGCS?7y3O%I0cFCvr>oA*=2Vf%9^R2?qn;--!h9a`NxqiOMph9Xw> z)!BC?oE_mFB2nXcJ~jS^4nt|jiPk}Q8+p|Zpvy?2>dSYyR9D@wDlG`p795q}*8#%V z^K3p3(2thm!!_Ie-|6Asu>a!iR?W876LH!zbgV`4cYD%3{I&QHs@dkB#gRe$Jovl# z$-1D7ri_ZcR>`+?V!+BQO?NZ2p)+B6CT7x#m9~HAXwuHlq!C~efJm{~7`3;`YwPcc zcE-WZ-}T(jvuNggrg(9JA)5(SX^cJ3Z@s139X|+qo9ma0}@Z? zIf7+EN2*t?1s~j}TxkUP+mRD{gVlLPPJzFuPu7-2lQRpAl2WYn01Xn0Lu+2@CCrLZ zRsEDip&o}b93tM(puN1&)m!Sh!Q~Bvt3hr3pflPm9QGN-a)(jX5NK6-BN1fHHYzlF zsQ@c3n!IX9v~o){`DJDd)}yZ1uk_E=v$llbl%0I+;n=J7p#Z zsBC(^{fPMhvNcBTj`ZLz00ExQ69e}82*Fh&-hQ@GJ=nfA#B_^*us)_PR6e)mj1a;) zA=)0ddfwn>=pM`&HuvoH4vaS%406cGeIBxX%O7~k`Vcve?*s3-eo@PG0Odi$^ zoQ}0I@@pR-YZ6{nLYF|H&jbFIea+tP(6vvGO%+#DZF#d7n%SHzVkXK{#jE@)d%c^< zAr@QE6h%!HSCO-#*}K@xU2}3~KJ>C8Rs2)`%Jtqy$PKhLtJm(P)(Y}gsn&^P^xhb}BEe4u{henSUdYiWi|^UO7{n1tRjnXLJN37HomM4c!JMmeqLr|o+h3CS zh+uHrsae6mV^WMtAtt-^7)Lhtlftq_RwSx~OXKcJoU4zs*?vN1DPm{?Qr=T;mOl5Y zlRq&+sSX;d&8LTqu%fx;ZyZyO|UprxQJ zk>w5Bd?)rW5eQd&MzZY}&^vs=+cUsz&6m7{ThguAo|nBd?BZvl-bcZ}OCXath4bO% zQrOig2k24z7WFnNcRTy@E&J~%OwgO8rA2Y{CQnCF9p&N~P@cF-6N-<}n0!OZwvGa^qBa80Xc6cL`dt2%}a3(=BDNo`v@bEL~o$xPsj`Q z7>Aus{zjCNVjK#5+B~`O;&V7n`fn8D7Mk(K!VwIC#sljacm2&`e#1PXkvF@4#QsVZ zjIL!E-HvT>n8Jdqzyz`0aI`RR1rKTE;9hP}aYw`plQvgATvFq|hi?~0;cnE}Ci|~{ zXSTmXKB^EWfX93c;i<2;#{bJ>l9Q`m@=pIk@ou z4UI($MKi@{K$fhem5}`u7Ks{hO|17R@2-1xUSRI>}dVv5JJ{d;pEjNHEUbvz^}Sh2j5h6X8(Q1^=}H* zJhkwrs(&r@mxd|DmFp7Js(Q{gRdX0w#)6FKJ#Hv-`lDGs3B>^9+9h{*(~-JFmHOo0f>>4{bnW zV$K+zL%L$=VrGf40Vu-#L$fewto3dOr;^bLhnzSV`hTdZ@3Wm(QoHRWNhG@(ghpmJ38}Ho5$O@>|4Hn#TDoP zd-HP()Q&9S8&RSF%b_ue^=W_S7Yr@pT$-zR<<{=nIGs)bBO}ehcCm#z#sTW^blXQ@ z>Ec^L-r}PM&m-462APkGt3b@DZ#_U^b2<#jmOCKJ%F~CytF-(*gR8gJi*@QKAQO;= zfm|>GWMg`3$Fd!-Ei_mTn*Z21L z`*j^ZNQ(n0INY*79R3~_%m#&PsQF(3>IX8Q4i4+z{xNuuq?SVNVfvcadl-5#b_Bcy z{oz6dy|uo#p%-VM+&dKBBC({6b;<0w!@}E}B^V>gzB)U&iS7RXHoQeJhN;0wczX{A z?~x>AB)rGIJ-iX^{&9Gtwsdx4L;12~q*k3Byo#Ft74ZJ?KMTJ{qW1`DUHe|xhf&D2 zaW3~(G~}>2J^CKlRSTmq2bDZ5aD&txvpF~@$#T6orzAK}zGva$e9!Z#e9uR2&-eUr zX};%#e{<4u-=$b^^$CaN7Xv7A#0GN5hnpqh0r40Vvu9U`6+}5%4J#P1Z-7NK9LhI?a9L2XtszHWp-iZlElJi zJP?M8^ilY$JXGUzs@Z8gfb_^C9r<>SKSNG$LPg!=Qkza{8L6Hzsro+))LaxO7qtINQTk7trjki|55#XifeaIIPR^lsJGc9v_%pz9txAbSIBFc;6kcqXbJ~K!PR7_3GwjkHQjLZyaIx*{@poJT z&PD7Ov-XErtLY-%N9BJ;zAwNyBoKSDZBPBC^r3;UUAh#p!REf#iY-Xo^6Kv0y7i63 zGx(e&&Vd)l?>Mvc;uGHWXSst*l_}r3+)ePEW01(qe#&ADpVYgvxIpFcGAq~-qo<{E09f)(0s>kb#C!5C0)^-&JU#nx)R_DP zxVIh^3ILY1yuWjkQ5qXja3aVDDN!KVJLn29+Kedsu2*NJb6 zJis57x?MaD*HPy>ZhgExS~41Tx!hxRb72Ha63e^RaVf%Bd>05MNfcHJCCx{Jl^Rmj z2(%2-1TjC=w|OFJ^TA8kM3WPg9F_Ci(ktX!T!kawO3Ibz`~&jnoErb^XEGx0&l!f1&$@m{XL;#j1 zvm6Pymb-H&#PILp?|7dfo=+Nbm(^DR<&4X;uw14Yf)~bli-cdjl!Uycw-|H>d2qwJ zw*+$7<F8*XZ=iT17_aFgw%F+-$w1~PVP@IjlgzQpaJP+U+(dMrtcm4{8=MSm>-Ad8Ro#}jecshZgs|ffGR!G$B%qM2KIlEo%dV8d_0Pwjx7TfrfGcv?D$ zS@z^jVJrh?*;6skM+7Hxg&w#dI-^Pt0Ui+1jl4b!`5SN$ordrUgO*WyK=RrV z7^E061OLTRvdNt?C)iWF^v3O{l6OKEnh_LcG=avb#GY`6QS3BrMPMvL=~0T> z5Cu*)z9Xz!e)}_y%5f`M%P2nGNXE)%bdJUOSharhPGvhN+ zFE+T%I?1jA$S8ldqR~Ta1}}KHyd2%nIv_tlfgp(zmAD|90hCi4$*M0>nC2VJ)K;a^(c*Fe^u5+5 z^=m)1Df-V_>bc%dztxb{zYb#ZFMYfTjCT$(1W;_C`~13W(qp<+`k8obs+4;tn8!-5 zg+r_@dg0_?SOHRP*=tbCDjh4K@!wd6zaH#HO6-a4R%#kfRnXYJgr+t%11}u+iiO@ei+9LwMKUj1CqBZm8&K z%O1+Q*q4%Z3e$$O2Ps*NI-fUH2db~nM+Z6K0>0%abf0iExy2W-MvI=H%i9SkYN3bS z`i50BB=s@Tn7nJen`uo7+bJNAQ@wF{ug0X7Rm-Yb8eUq~!GRQ>7i4v}EL{z#1m&%B ztd9mad4lw}$&Yb`1W!#&M+rS0H>wI-y6X+Yx@*%N?!O;LyS^#8>T4Y?T*_eA z!HxdJbedshPFajTo6n?YHQE4pLck756nVjNFpUX~c=02~6iI`b*zke)4EIO2}7 zQKC<2CQ4B=Hpm2wl`8|172cL6eN(yzAWHqR`z}+|+ay6WP?zGZ1M916gHij-k&MR< z-Lub8l^eTZ(UZbM?cd(WTovTTz^!ICP8En#j3m9iwIv?>xcQgQiYI5r62DcD%KVla zuo6C6v?f_wIIw|p`p#}rmZ21B(dEL=4v2!+mSM(Q(sE*A5jM%Gg4bkDoEl##<6?i9 zdqlOU(d(Q`g&`XcO~!W||MDd$s)(ZxZrBaZ*r9R-O-!$8?&F!}o2PTfi%(*t=8TypT_aOCprp#=>bia)!|1=&y z3aO>C%Dpw4{nK$M;DgLVUK8oO8;^vBlfZ!+zI29gN(Q9$NR34G8x!L~cvaNi&Si}B zWo3B_J!jqApw71Br_DJbn+-OlI*(~&Zh}Ith{L}1PU8-jH9tA6;Shvl{1u4{TV6WV z!{RkjJwd?0z-Q)g`jQ$y{ol(x$%5JXdhD(n$~+O=h`f*O{DSdQ`O*U86U@7y;2b@V zO`LHy`8a|aU%`9&*q^)kPc`|AmFGAof1aMlwV$zn=v0rOLXiSfWD!O1dPE}=2|VUs zG5)b{m3b<+wv1QEXa9sJGZPG1$_sG(>xusLX zrEgJb@FxJcDhy-_={*LaOj-&hM-Fu>Ech4!gE!iZOI9&OM4rzaP!C4e*^LO40k`8_+ zd@zT0Yf1;N#TA=7x90uZ9V6ebO^$p&>0=|`hb|xSzPsST7fgF!<}Uf*k{KgD(g5>Y zy}RJ+$|Je40vAojgGK<)O~v*d4XkK8S`{BRa2YNWK-=oI1JS>`PwL<9f{&@Jed$Cy zslC8@4zp4a&0)2E~PoyPB6eoD)IcgFiU zQ~r{8X1o_bEe8MRpgUd%o?+#AYj`HI@ch_FcphQuABN{w^Qr&Q(c$^Wa0Z^g_*D)( z|LcQhylo|nU+`Rcjx+vJ-UZLG=b88JGTsHx<1aApKb^q4;Q9WKnD=D?-UZL|rGcPy}c!7cSr4QgXeuBlj$(uvy0>~-@p9U<#&G}^L=;0=bqEt%Ee$0 z9nfvZ3a1xQd**C^=e69<9c=#OaQ-REPkgWt>DL2Dje7XM!K(;VG5l)Qqis#iSu=ZU zGjn|ZLzy`S`Mv**^QP3v_k8OBbIkiOKQ-^y-NXCEyg&PM^S=K(ynlrEzx~p@|L%Ld ze~9^?*#B^5fb)JMErr(ZyZeHYs8*;xqYW< zBmFt0-)qwMkY72SG6PFYqL0kV<`fvX$s`u0*Z0;HbE|GqW6ia57ToH5B&RC7f-I8d zswK+>lZiPrG&+j7_<^n^t2FShc+I`+CKp5J1Lq_xxyOSF?y-pEE&j9oXhG@0UhdgnVhMNYKapPp@sNO_GNqvbD{^+S~wMmGVw5^tv z6{28oLaQQg(zam7?l?lCdELF^qz#Fl{NyYgp(d{kB(I#9yt3RjwN&4!{PBEmw=+lv zU7f6}pqt|tBXlO~994h>w2XhKc8!RI&>JL!-R@yH#*tA%PZ}b+iL1DcT{3bxx#fu- z=M@o_Pu++ZVe}*6Z_%tv>v^FvQMnJWbUTe}m?) zKh#icB^zQSgoHT!HDHPKnNt(x8T>H+IyhY6EJA029APKao!m9TF*2iIy*Y>kRtYUG zdi`KJ7f+H2b#tJC5q=p>j zjL*V%=^p>`H>_l|I^}zqqMmTlnu;5q5Po?ky#81Ih5T8`n}Yt(Rx5c)gp#knN{TO?(}G2xEdE6xasbyE3@k=>{;dMe&$W@C&=Vh8lUlU z`_IV)-|_o2Iq?35f!MqJVGleM3ZoFA&}`|L?i8yV)$5qQCz7Nk5O(um5k_bW~~_!;!N;vbn3_bXO_DaH{w8Bs^0yrUSLgF9spu<3sr<>OQT-EQ_EuJ9fjs zmAyemK%_F1P`6Yd6p;!q@MvdZu0P#>wHR2M zG2NfV=9IF{&c{bPl|^RW9m8=o^3<29VG*Mg3Y>W_M-vVu~5#z;bU z&p~8!6$dM1urB}4AYagq;U6O-82%SedJqR^F4mKjE8kJ7$u}WK^b(87zQYAn^R_=dD$l}2&8##b*YJ6 z-Ed%W3aJI4#)uTqhXpOrxKMn(hP^fCI2IjUHcSQWksuSZeV>w@Bvf9f!fLMWsqQA`9C6v&lmOQ@%q5ztaGJ$B=Y(^+(BhCg3s%V~m_RazEq#%x|6tg=cuzKp6=&1H}peHmJT1@oVz zT;y0zpxpaN?|6FdPu08#jY{EM0SWO*Id!j+?$p6cK6hjcR*9P!&Yx}J1>6hh$4{hCN439RrWnr3^+N4 zm{^KI^FVjR$ub%lVNHu_s`dDSh|XjbwTT{9gY_Mj93J*T?%h~xeTpGd({83oWwGoF z!Gi@+qsW^_#(cAw2x_2%R7X z==GSl(8erv>L&;XK{R4qvOkTEuB1d`b2$=Q{k9~{# z;BL2lr<+2?po0BfHx7agJ@13vxKrE;IZc?x$qJTh@R`8!-~WkhthQBZ8zHn1(5tP? zt6av_S9G&UjtDF|6r~^5LvDsh-1_MH1uOXDkVC{CS-Ew_*zMO?bb;MC^C-w+XqvN1ZfrImrqcS)oD(s1Qf1J%5?~V3Fr{9WHbYrM9LWQk2y98fsLrd zTnphz04I%Kl5*=&{WzKN9x^0I%sXGQzbD#5*uEAW8zdpWTS7Zl;#5{NE!S1%Uxeg# zQtq2`yZbo+ei;@iu5D0oOXN~HcGOL5dUPV^ zS`<)(q6Z&^9}I(3TJT2oo3y!&C3X;MCqne#T5{Y|TK$Kwff!)%u>Sx=an09(^v{8y zS8o6t{!(8{Ai{JLk7+6~S2>#GL#-M0@kw%(=laX5Q`=nSXvC1~pHJ8G=~}N~bj?>> z3n}l!<0zx}j^rgpH1Hs7@|fz020(l=NUj93a4;`~%r;2K-{w)AAh==+CG(+dC}jw= z8j(^Yvp`g}Xwa2w76Nw8B_-XmQV#cu#alf}c{@hiqbv@RNlww$O%M4)$j;e7ip7n?QT(V|n~Mj?MEMjEpKkt6M^V+s(Hrr5-!Tjz@x z-&!WJ!uhbAqiF|kMNn7ZI#5%JiRGgjjPl-9>@Rxrw*tjA*!y2BlCaf(Xe ze7%I!ht*V)TR7i;p~zA_6g>P9LNX-`WIG7A=p=EHOSyZ#sHGz1O<8ov{3#f)d(S0I z5(ZtlX*MB1?Ga8J@!Rtxprjsq*n)Cl<%1}KQ)F69UlQ3A8|y{%DrC)skxORNg*9O@ z^sy1cz$smVFgtDlK;T=#zyD}(0EXZ()+es8BO%6yGKv&SU`dXNB~0xcmt`)An9c(_r5$~XU zQ(Z_a5#|}NVp2{GKl|Ok3vz^&|BF@-1k?%^It+hAh^B!IS`9M_+-^q1+XYGz zmclt$TQ2kX3QU;n-K>Gk6!2Lcuo6FHA*ft4x#!4iI~Vg{J64b*Ir^7+5bLCO^lz{lvAh&Z(5 zlxFOS$Ox=YC>doCz3_mOoWba|M!V$c)AjbTtbue>tvxs20!WAu?n_~ETCb7G z9%aT9xh#)9zGTV;DQB3L7e^%AfYVrqEQ;!0v2 zXa->H+apmV51e2v~zW3B8j={8-7X zS!GLW0Jk-}1c`EYKpITR-sZx*V`dx0gI^M(Z3U!6UJ{ZC!4fjY#g0n$!`YhGcaSIa zcoxrTrh>oUR}vPZRDTr(X$|5+H66oWkoP&zJfROmpXh`D&!j>)vk^V(k`+#F9tP13 z@d|r|Q>K*$f*f|IB4eOVzn$TE?+s|e^D}Fy2HI;D1;UPQmHrB7kW=I^6iZa7@! zI3_gx7!)7@K8a*q8DFJ=7E2)T2?x2?3JtkHiD=yC_8s;3^kjP3+j#eRw*a5yav)KQ zpguzFhdxT3rB37B@*2O2=ud72OTrE}yPx(Q!hh+8isZ3LFf+{dAeRW+0^J+&9I+H= zu5}~ZjBNkHjmQqd^XbU&gPf=`g=gI|q(5N8TD?C=3)JT}?s8MdHbrzT4p6m{*c-Ak z6eGB3Wb~280*e+ID7NpFoQ?(3DH z7$=aeKrOo&_+C%#RfpWZ8=)7$FhT$-f8etOMVTf!1DI*-q`MsdOOucg*h2-`o3i(cxofz@TKOlG@bn>Gw$EeVBdZW@d_fhRUuLm~ zE+hD}-*mBjc#a1#wQmq}zn@og8*+MMcPjKrs>ir1HvhZXI2faiTPQKfRJU4aodHkF zIC_w=CW2U|#*inf7Dq)iB-7hk{fX8>xgB2VTVn(T@4bx51;1NFPv3X-dC zOgB6SGOf=`cx9+c(Oy1yCTfzA3JpgDDSW=oG+KOM_>eVW{?J4&Q29thp#G8z)H9+2 zmExsmL9c>TbtwzDSX~h(R#yxoR*C2cL8P70w9YMC{1=N)vga(Sf;}g&p^{|pZG*WL ziRef_u_E&Tt+=vulg@6w#uQ%&@+Nv<)KMA;R@xg>Qyg@qq}IPF)c*z*uqvYEB8byp zF6AyQtyx6!wiwGAo)`my_YR&RK8jzFU5n_fY!()keslQ$dusq$pl>|NcB04<{uypD z(d#N}J3%J1*F?2ANxLxV6q1P37n*LX99y zdwf1*S|#(jQLh4aL{<@5ZLFnEDzmYd*l6HAL#7jy>X$iG3Iad{Cza}#GL^z&f>Q8b zV=Y~#7)-pN1kILVOl0-JT3%9A?opOi#z2bgPd-K?iZI$(CQ6w90-T=_dPLz=F;;97 z^?CL@U5!Kd{#?<5S#T&BU@LBlSGg`78f8^rPjXcuoDQlo+zjmBj@)-}or@cx`eC><nFQdpKK3%?EM~l zcTBzrYiA8WfF!+ytwcz!`%U&;BEQCiBjSrxD%p4826H>2oX%g*OuP)-6Zm{g1kV#3Gvm{6cw7a?xykI@XhF<9sWRniqLQ^F7S9WetH%S(^Ozdo=Ir1 z=(SfVT5A3e^TI(QE1psVBvfRy_|+W;m5XX8a8ax zP&ff6J9-Z472ZEB3hH7s*z+Dr(ZLgbNA}@EFRv_{g?&2z`M7!-S4sX1Tp56yWd8(Q z5tfWXeJ2Q)fHLbqEh@riCxcmfYV{8!op1!HBT0UoMNF|nmFt~HEnFVy)V7&5)r6R*}|E4U6Q3{pS52R33cyM!8U|*8Z_|| z%*ZxE-HF6Q;_@*K8c89T-$cI_4@*y?lnz&W?d@*X>9uc-zAvmrkpJtA1&yX8#Pi0X zi~Iqx(Ft$$e665SN`^-ewC>&b>;n%|=c7UdMkw*t77`g23?V#fKy|++1VJ)2(vl$B z{>j4!IMI3@hf@Ze0Mc#m2ed=3J}&UdTnryvPj-25@tZQQ1d zH@*=03@WG>Ti@6fZ-I{&zVg6tiL4;F5{E0QpWzhd5P3^BOK~2&NL@Vex0iKuv?Dg! zjiigHliD)KY_x6UX3qFj3xVq7v+R#S%rwFN2Cu~F%h=DrX*{e6u_(Y{ zNeyA@(%W4P2deVjaL#hG0}$A!xK)v27l@iy6$juY0a9=q*+V}g2SejSD@Yf@V}mh$ z1|r`IkqL~(10;v>(5hUN5tZ#jKWAVEH=oAiR4DvL?*`%bu-b;thX=)c%Ow=XG()6e#vF?jX5`d8jvSk%n zLSs3qd9V|&E;F+hFh^`kF(OO@rV`pZPN!c!rNAHJD(tPgk?zl9$I@rxf>n?r(68M_ zp2i!biu1h6^p-#-7|`%S_FNQvWXNyI822e2cKJ7E6IrFfK2LM`^R4UXE<_y1H3ZtrzCZ^ zKrGyX(fW~5R3D@THk`{=xNu1eX?>xM=*mCCzu#e!g?cv)EAaqLyhT_dQ$+yfGN!FS zA>Og*5j;NJUqx5{hNGVkVfwUdb z^s@xydJ^hom7q%V^VSAC_I#oxn!vF=lS6DpR;{xP!gBafODP6C!}WM3|@1g^RBPv;qu zg(fE+EfDUx@VV`>WpI_b>AuRXo4um$;XNi|cK*R6!E% zN%^B*;;~iI?f6IL@d|ToWpq1fk$zi>EQP|w@ENDV3-k3tY^~Gnr3Lye0_)T5Rr7I+ zi@SHr>MB|=N9{ceguA;`5&qhh+hA$A-nu{-_y@{%0<2~fz6tnqoEyIomOa>wcsbYy zM1{BXhxc^Qv$h4IFc3tA{BB+>qAbMgLt;frK8O7%$GMqmZs3n#FpX8#8^=(ggxBK* zefV0mVDJ-tRD>3O+Kp`+Tz8&$aN94qgY^5$bfJBoTl<9RS``pWYNz%W=Mr z7yqjpmR)|gQE!a@eTM+=1DMowADYJRuli84?htL72rK^z!>uG_V!-hiSioPP27fu4 zGJ!i>1EKh*NX;_2zKXy zL73zuY+^rZz*bjX3-iDngBw`Q#k!V4I4CHVy5`HzrqWg1fK|6A+fH|l++I@G^V(e0 zdBKo|9<))bl2U81fUfJpm*0gajRrEst4>p0PZzH04tM?hY(vc|@+Aub${4UwMLhDG zu%E)WVX*^-Ad1i_Gog#?Ua&CmAuk7ttZ;XLMH23s+1tYJz5;iNf+@_K1#et?2wUJe z9$y1F1ZHpZ;_ebY60qGmWAqF26>{8mxQ&Notyx%GqX#ALXOSI&r@Z|TJTtO&FE-?ag}*mIxqyT6 z2DZ}sW%fN<5M5&?l$`Jb>SGXeT57+Zt=D|pq1K0YP%(HK|m9cjW!GoD~MAgW6S zu;oqsSn1e$dr!m_c0@?$je7?VUl)PPsLIZ0T% z1e)Z{WK|kRhGpX+7}@B~Y;QImLL+J#5_uvC^Cbs6*L_|vTKTD0NY13h-FSY|B zyhZ6b$qTd1oWj4}OsQfTu|_i4T#nn*gr+H2V-T*&5@qyIdLnx=#tD0+;4fgxi^B{L z08?9mDCBTfO=sEL$Ya9e<4)E(xtv33kSSZ{U>wt8oCB4MQd`s*nQ?d{6?(C-w;M{7p2hrE2^FCb_=@WaMSl}Ywr>!w~ z(K!l_bzJ9i{b@BdoY;w52JNjl|0?ngMlUmxIg3oc`67EaN^d}+O!n0zVeMk{8y)5Z z;!Fk+td$2SD^1{Yqj8I|D|9$nY`hNZ$X<9O!S@8GhsgQc;ZLjn6%9gks{{rPT4C~R zDJ`#35EU!uKixGRyXM$$jj|p>k`e16olb$8cNS;7yadLZsxuy3Ci``L=4+UbB6?z1 zn6uzIgA)h1v8Dwl8W4u|&-5!AkvaAwQ>fcyZx1X@Ghn?htW2VrT`d@(J^3<-C!Cio z>?fiF zZ3ah+WQ=J({@q|OBJLLn^&2S+)hJP(OOSN&9;@PP5c$S68M(!oN%?2XpB^%qx$0P}HC85gR&u{Msq=m;o z$%q`vVd0mB1Nuuf^YR7}8&)5e3H(zbJZ20%d?Y~%LkEja0GJ&!Ab{)wEy4Z7iO*qdnms~wqoqj+E(HPg!30DdYcKnNNHy1md4+bY$)l@08VZ%4Xysy)C^*B*zL&k1yNNst9$<(b%ffs|@WYzB zJ?wRfedT6f4%v@L&eq((xi%fON3>I>AF16@5@2pv_YoPr60ONJx~8J8$yI=MXT zq0G++Fo{VBv4KrFTsj)t`L5YtNH$jD!-N52FEIGn!9!vrW!H6M3rT389CdhRLI*w~ zJ{{~S@0V=+TnkczwE0>|{U#UK#SRg;JQuH$(}yl~X)e`WJqC{>!C#5HhUJiJnC@tS zy~tur{M1~D_|Iu1IeVN&KL^N4dO* z5R1sV21gf;%J9%2sDGa8N-cc(Gqk~vlT!af?on#WmS^!JxY}h!=)D)!uVG`1K?i@u ze?{~IV?Bz%KhS$i__L=Y4P14IH}KALgAH84LO7(>->}U;N&o6&2d~AA86Wm2lY6Z( z2ZW3G7{SQ|gRvLwptFxaZPgDap!XCXL})T{T+--(C9}AVG6E5wQi+O6NWUwtI@49J z`Ek12$WQUZ`Q-M<2a3rzK@Q`0HFPJT2CPayV))e`&`BWJ{;Vuxr6Xi zEZaK?JtZFd7rHkW<1?1In=?i@riv^PMt6FqS zpS>3-50Xz`b`Zs<;@^L9udKiZGZqh+D}?8R>!8aU7J$=nB!#`%TkxU*%ajFDL$iN8 ze~cA`0TErzFBObn>0b*6=)IQ58bIl0A+A{H(F{x zxPO7z6$YlqbcMCf-U(ejj;=*x7T^d$Z?YC#XQl6mO422r2s&F=%kQ?oug>fXAfB*G z`8fxi<~QMYSi30-bqm4~Lt`ej39?CI+r*dXMVjxCfNvA@Qwy9But5xOhy|jZ-gEZR z#1g&v95=BiU*g6XeR2Rdrsxgkko=VB&0*XCY`rzazs*mL-VC?{hs@OtT#J(!j@#iZ z2O{9Rq4IaRjhg^OAXtk^_tYWhB~LZ_tYqp>NlV6QO@q zFHVGht6rQ4{Xg{LMCfazY)N%)e;!|^{rx6tO;r(zGwdS`_@BcM-uANBCA z1Dbv0-Hh;GqWx;15mP7q<;mDXYcCcIiK7x&Ph*!H@d$^C8J>#Pk~w(nVRaCdKpuznMYw;lgbNk`7bU@~`(g7+x5paCQ>Ho<3^$HU(5!WtAO zk!ldDRaRFJip zb7<#+eBt#eGX+bMU`YeFhpZ>{M(IqPzYdu_@R)tb?Q54E9fCRzWB!F;8NcdU0BJ|a zA{Y-}A(NFHIBXJ{XfhIC%)?)gT43^^f;tb8Jv!Z?J@EY5;#EyDd^d4Avq_hiaF=e0A}CFMKXou4>zME)3xpFL@j{*POcjT!TxvxZu&x zCBc$Xe^mzE&1|H*@pt16TW&a8Nw<^c>9^Qvpxd*Z`Yo2LbbH~&`t3rSm2NLR6}Jmk zAv%^JpcxlojH(AJ4gL&xtGn4|h{Erp2e?59FZ|UkB3ntk?_oH#hnnO}l#5=&;4IWX ziwAW0Vsh+dlB4{!o`+Cr29u7IBgmZp403|!(nA*-_>yLsq0m!x(t8e&8$vF@oQYk% zbL-IrCgkUfj>3P;ijg=KUXT_cvlWVZ`xnB;n?4tA>cGD(p9{BwC%%t8zlq{bJjW}a z4XGo76A~-FrB}oTUR-0SNUaWOv0JYQi~P`v$9?)kz2cWcDkd}**6SP?QU_n{O#JGn zdd2?4imxVC?9(eAPOSJ^V#P1%7?^Q_Jd%mPYW_0`E$R(PKnk$M zks`A&;UyDu+os$MgSg&_7i65>Qm;}lX~0BuJ?uvCFMU4kYMJd2){lWT5nDPS_Ryhm z;f?!f#`2H#qwDq4FBK+-)O}*kd}*lzjsJDu1RbN#%o0v=m>E)zrE^U4tm6cag;@Q z)rFuOLepok`(Qs5EP}t_8~g<`;V(E0e{tLsf1#n#R%tETqODR=HYk|KYW}Mq?d3tg za8JjSNlB*@qoiJ9mokVSieC{i0_pP!nSUs7)UNQiN{N?09*3U>)@qq<~rFI&48 zYigyz!pSF$lRKS%4NHlQWwV&)HRxFVWdUKw} zd7&z-eZXtfRl-80Zi2@V>@UBoht$IZGG9jeTl+8T?=&<_(c{2YU(?q=_6X2DuMGCw zh@S}czxpcl1wDcrh=P1^5OW~3JVF%pwk(uL>^kTMP=KKdz{LL^;%XpXWstuxvMN6LM zAJb|y(7t|P4`PqBh^*uIXaByJM7D{?19NZx0L$JEm$7Smw`bhDh`)0|Q2bBn1UAPJ zp>O*K5{``t>*pnV#_dEdrTP$tpTQa8To%f1MxeAuCDnujkK-NL@YMpwsKeX4wRT|c z5p=HX?NBW7F|{ zy5q`7pE?k0M1B-qT2B4RqW-)M8!1ccTpV zZ&4@zDblhcNPF_c47cOrc%)I_t>dJm?*BB(Z~u0Fa}LjMXJ*EuZj|3f2ESc7Jip!k zop_{;^4q_00ryWurEPeA`;#pmb))W^W%{=%5Niy-^|1F+xO0kN8KpD zjSPMpJ3PNNoEwj{QGOdq{FX61zjd4)kGfHQ8yWoeo#FXy(v*0ljq=+_;J3POQwZx-tl;1`Mzhw^3Z#PVcN7^XA zjU;|Mb9jFHRa!jiM)_@I@EfwHaR-yH+3)^nY&_CN`E4Ze+l1ly?UGaCQ8&tOBZJ?j z49{==)Oe(g^4mz_H{@yOqVj7TC|^v8N8KpDjSPOv8J^!#Oz}t?<+qW#BV5dG9GoK{5CT9ZR+s+w&U}7q>b|1NaDA1hUd34_s64dl;1`Mzg;#w zzumqs9%-ZeHj?-)Z+L$D)82U0jq=;b;I|pW^V?Uw@kkrxw~@qeCByUE_x8l2Zj|3f z2EQ#Bp5Ge6@kkrxw~@qeRm1aJ$H(!g8|Al=!Eg5u&u^1HibvWgzl|h*D<7WUzW+fy z>PGo(WboVfhv&CHz88+-}by4kGfHQ8yWmYso5xM=-2owU-eEr(nk4h zB=Os<;rZ<+Z^ff-l;1`Mzm*QpZyR^VBW;x5MiRf>IXu6O-4&0zQGOd4{I+;_e!Jm~ zc%+T;+eqTKpA64$zuFOxx>0@`8T__zcz*k6dpy!c`E4Ze+pWX%+a=rLQ8&tOBZJ@W z9-iO)TjP;7%5Niy->Qe_w--0Zqi&SnMh3qj>*UL}Mr8d#?wE$nh*z$)HXIOE-bopQ zd}ELv=#l@Z%sxmjj|A$J*|B(u?Z$aX%~gztNX_+~vxcPR zLXJ8&3sGB?iOa>>Jq&qG=Mq>;%yON^vu+`Q-f5Jj4SCKwW#uWGjH({xIU9XX&z1IQ zHnQrnzQ_yr-4Z_{eN{K}#u$<{kCPn-F&+an9_hOQbdm$ZAz!@2>_3N6_j!=-Pvi;z zswN@1CUW;t-bS9g&wkMVLhnS31+pU=WqYfvWXnkfW=feBfdm-{39|Ts32x#8Lw&#P z*2t(}JVZ*TjE}9e;z4#W`v69}7(;=dlH5AV(I@a@Vmt{o<=)HmP||3R`V3`_OUU<1 zaQYUf%f9lA+UmSwgFiJGG;9nW(3n{G$q z7|JGRr8IuP9A(80Y{(L0;}9hgo{yLYq)gA+w@cQ?g)m-Bneos^9JRB;WKx zn}u?00*jDnl-rjxffc#*kf&X=BOBjgiE{Go7Z2`i2ugxGnEj>;xeCuhYP_y~|DnK< zaW!DQB%pQ-M{N?JmZ(a->a}%~kxQ`!DO143Lpw$>P7e);EP6=?CGJJyTDbrkT)~1I}*XSW};}t)lek zb)Qz6QIn-yKPkc#4dtmM&yc&@!}iEZgA=zNb_iE8J=lheVqAzXn0R8vh7#Ox4sUEI z!(~|gN2)=5*+Sn}8?q<~BYSm~+(sG4HMz}cj{I8quj+K7Y-gmbJMtTj{PsnD0Vv)@ z4rTxIBF}87wWbVOc~hrV`Tkn^oroj#!DTAqlpC(J}!h zZZyk4{n>;|${p>tAMkGz*IDsMQVY*nuqwayc>x~c70t`r+yN(lRVJGE5zDe^k)%C8MRGb$E(Z!tM>0iK}gaH z3ZX0DPkR*!Y_-}PL)DjV--dyv6lz7VaOxA*@>Z>sYtn3_|5r^ z(j^mRtyv2qoxAB84K3GvENZP{V8B}Qy4czv70 zGdTWg7H9q5s<9BY1FKQq3+evUK#*!E3o)}IyL1LLH<_mt*I%TR;wXZ|2sn^fn)-kN zgK!6(V6HT}vJdd2xGwgYi?x!XktJ&zMfPqa{~1!--EJsQO;fMoq)%F+ z{;g981p11H($BgYKCC)dR$sOi6K@Nzw78A^F5{x(~WEoeD##8UI5 z*Y}aT?kEwS5OCvfVdHcBMUlNDyi(6ESs2-1Z)fdpHXv?qlU2PG`LJIxI5zsviOqMY zpLZR;sg%C#l(jak#j&xfS9H8v4P77+(r7DUSDS2XGrp;9lyb8CfA&Be=YU3DpdPwa zl|)0>ur<{n%5y@jAY&{xhkRL@`8xKU%L- z;0tsQ3M72e)DfY;@B_hALsYfmztCSuaAQ)*jA&NCDClih{kAG(9!`0=0djyQeKq9= zUujw|lE9}tx;$2P%K?6A38!D6Y1x~U6+v`EV*B-6(!$DO3>gt3rj;tBhgRm>$~@|S zlb%W`lA*IMv*`+JbbRj)=8AUoazvY`P9SO!{=?rII7e3$!z&*JR0s* zdLIAk$FHRtdM}aHBBum~QPcYV3U#tGY(#2v6qZSBBMQTq?ojyI5gIiTDT?3@Y%sea zLZzsVydQbuDao?c!!T^550sE*fT5h7q0F{MGI1B>D6{i0A!ibnNuwJ2AIX~xOwXi3 zTP5~@EV6!{{F@XWaH|L%!`vojUQE4YGjRurQoAJ6AaLm>88xw;K!H4NiBk+{W})eAdICH3>^(krL#7%`x~h?;99@c!?blS7{X z3!fpk<@J~WX^8?&4E>UoB~D3Mf}2ucfNNy8-OBYb(tI$uS+x&jVu>2|u=l||LW2k* z!x#(oIYU^06x=czBrMv1+Ew~ce}*o&g;(-ye268sL=JqCBx-Fm((%Lm3hE^e?tj*Z zM#s^uZ4d(+HKF0iAeCcKNa2kq^#Im{kX?gh?VQ8)U!S-TqfEp5YfgF9n3mM>Kf~|| zYxB(7mVh>)CXRrHP`B(WC}(ek-Z#xvpvG-hv)0Rel-z;JFFq33v z>2<`eYrw+|TGa$LXQ2c-M#*ncBC&!>X!C3iQlob&OBRO1NDQwmsieMuv}39=XH3qI zL@!pNgdB8&9S&avQp?`!%(*L5X!t8Wt=_NkBDyANELGuUW^3m?eT=4D{X95;vwT$rkJA*KesDex*f zl>7M0pm+b(Y)9_nwA8P;LRM#%46e77i)GbqBG%TL9jmBD^{4ux2Lp8rmXdb?v9t!_ zw|f3|tR%^gOhLy&p0GBXPTE6dG_(1uL+IbvXa7U~S|tlFez@M4E(T-Wx&B!uDe3TTq1bRfX$W{=>$(Ub@Usx2r z6Gi=GB|rns0z?2>FwmW<=$DL&brWYLeI9DpfxkgrsN3)~ZU;qGjNdIZGiKcA%HHPo z?UZTu?QyZ)B5TI{P;)cM0U!&qf;1u7m%dzB@43Oyu&F9bVj(fqf3C>3W_MAJW&76c zhq3g`SRiFLyM3JtB&EKHfN={?b}UfRi$qePgR-Ng`UPqbtr8W2ojA=|J&J{l0cl@jAM11}+7>yg;HAip~-+1GJi(D@IOmCkIO3nKg_GgqdB?g4)~ zg9ZLhqkUrjdjBw}(AS{z*ZB0uCmTHKeA_+XFL&U>J{M~v?J>v8z65_k8Vkf?uwg*A zrUzDSj+Na-a@cs+;_L&YH_2Evdex~OQlE;w4VqAYIzH|eUT(t!W50X*KKJ%diKocq zQyy8*cpYCYDkY-%1qhR9`(m4Q?JqAp; zI0i|!=I;8`-L;QKrC|>Qo6cp%pc|%ZBN0tk|G2hgriKGmR&Z0&eU%Z0syd}^N#zre z8~1b0x|=LLY%cL8X=F1px$Tr@7P=J8>_Ni!H{~i$Zs4lbe+5@zIbDV}z+FU_@r#)l ze?fMiz<$WtE$m_t42M1JJ&_$2+2P+(Zg6{3z?s0vA!$}JYl=PboXX>*hEHsfw`>;S|T&(Eal ztD1oG?7g{bR$=gjmAxPh&PE<}{12bbz%^z-Vf|)ZAyuD$2(`$tPBtFj>5{M>lJTiG z%4y)Y_rq>umwr(qv2IDhuNXQC$@FS=yJ&w^hN&t0y?kNqG^Dv7cR!Y~sWP__(R_g$ zeM#Z=xzek~NA)eu^mOl(xJjvgg05*jL#*KX0-Dx=stF)o&@`1~qXffS49Fi}lVQ*{ zf{9F6FPR;B-$%$_TI;#plW3?^SSc_JQ2z34b-0E?5OSvhe(C zI+F{}TNZ3TjKLAsZwsIHIr`t~Rqr=Dc;#wLudyi)?5Ph1@g$$|PQIr^%vm(uk=BAS z1hJBAg?=VtHgV3m0Sh2nU81wU=LTrnw0ku?=SvbjFOfLM9@bvS>Ehe~ak8-TF;0cB zop{t|iMF_HfQY+{_s`X!`6o!ZFKxgh{~RW#_Zpd;A^Y~%R!_qQmME()twsx|R+WnD zAg<*=-a+UAc?bRDh*sYC=opL^so0PDl56&~oi#apT@MCGnpT{|X~*n%lAx(x8QX>e zanKT*meRM0rIBq)j$gib)_D}FV+5a=)#pIw5#yryVi3WcobWB6(ifq47*Hsw`HkUf zn3`$ZrogEb$hwpSR)_#27@^T6QAq=ejit!?hKW%tMLTb7h<#tCBHg~<$X6;cL%wdZ zj~ei~sXk`7U(MfY4Dug&F?|oZ3h>8m_d3O{iy)BOfRx$Ajq@@k_Itu140ysrp#VpU zq0wV2!A7Dw{#s~OcmkWyT%cPPBpADj%;CwWf_sB_K0xLnb<*V1=%K5FEEl~u;RXMA zyb_|N4XXEga8pHd6TSQ9#K^nnlRltM>P1`p-N3TN==E$X*)wA{oUpFKk`1S5v9K0! z!Dxi$Tr{VtlWv6yjhCCV_u{!Fmt$O5`6Y&cBpysri(r!i-+R=TqJ&tSXpc%2+enJh z2>4Hxa{rsiQfOF?5>}bsJBC$eD2vMR)v8;DHB-sHRv479Xk5-oau{0_J&!jiJ^T_3 zN@oabVFhoM1Hp-WLhpnTsV)2$kTmZ#k#rjj7p*3ptc9imE)J=0y4<7Pq_(1k)D!$V z>9?(jCgDzq1E-`e-3`JI0yFb*QN;lHQv!}3mQzS>QDqVDRRi`G+%aD}WQ)=I< z6|d~@V61XQbi7mjWM=A z9Jt4p;M&$!lsOI!v=vQ7U06A2E1er|BRG)ZBxQjMQsC3Y5jC3JFCsoB zu;nN(+ejW)T^d*h-NVM_%?-OTx3J}0W)>B*qPeTN_Qe+U(-ME2OU(+UjjI zBh!Dv%GoBGwaJ}CT}gU2$+2>MM+8?GE=XvajAU9t!xo?mVh_ut9a>-M3ZNlx1#BHF zVCZP2*$T@Rmw|=J1!Oh8;Pov?pJ6Qhq(o-h?G;)6433D+;Tf1m#fZf3IS=mv0lNN( zjk@quKFiL5KC-!CZ_Vj=CwvAK1zM8nCBTfiN3VYH?eGAtPy;PSdSu3wUywC@DCLc##HjBgq1_Xc&H|)?Au8sMi9!z-?S57pa&TD@Eur&&+uV?5G1kC zWx$^ARUY-Ku16*tR-va!5ke4AYo~*$7v5Qq=^7UM z`YXV#2FcO=!r$qB)^Yu$Myy=^M8V^Y-Gj#BsfUJ?qz`|1JszGU{&`KpKUw6}OCNn0 z4nqW^sBOSlc^w17$|_PQBlIB#j!s{85ex?8%s}`7aw2f~w#vqbxX2=A*aG#JJ;Y@I zwU?zqvgk5`915VznU%;>VtIJsarxnRgoKCClmz{l+p!2Y#k8s|iR=VIaFE2S#HuW? zVR5`Td(}y%JV>*$m^9lTm1dAVkPW+O%`bD=PSOS|U~EHGUC6~7w6eKjvd^AKyg{r% zc_qQ)@vS6L?O}FVJ^QYQV5svILxFq9RtxO88aCBj;box+zs&HN0&HbFs)N?%f;P83 zkbH1AnKAw2L~WB>Yxgz;m+kWS{)afj>pKJkp9ey>5lwj=p9nwOf?`?y8K-tYUJN&v zE?HfpGYT9-QIDMBNbnM;58;=7*$DFsSmcecgmpAM2RzTl;3)+>Z!SK2`w=*|oGYvI z;)p*T^@-&3557r{{pZu;2qX2=S|`wEMDKs}i^&E~C9S=G9NNHkREiQSmg1Yk&H7u( z*?R-MNl}(@L2eR03Ui3BDYVl}2an0XP%r*T)Tzou? zIn>0td_1_&jI=ZzEgAR14FZoz+Ump1d&Pk`7tgznRb3RfUmKN|^CmR(0!}V3`?1LF zI!64Wk2}WU_WvT5(b1ughu3jXSa~<+8W5NSHX!)<98E->LqzQ)qQ<-p!jv5ULo~I_ z=Js_A%Tr76aZdMT2tczO7@%pHh3(yMWz5YI}F~Kj1?{`GlMSoxRJ*o4|dougV?f6vq znHjHPUjV}8EaLJ^uWyfAP1`~fO4Posx=32dK4J~GM`*l{) zHp;Ma|DQn?2|tS`#9;Qg=ElaFi{r+yf|^lI>U68WB-RgCQNxg_<-BEbqg;6&AmRf{ zR0V4k8JJ)Ngc?j@4!4z#CpnFsk1^86AttrmF{#}dJ_Aj23Ui7Hi(lxBy1uA;JA&+@ zwpSSXJnRYGda|ELY$>!wkk}1#!)Jo2ba^T&E|8c@R~T^v67v?jvOkn^|A$Nbm9L{` zq#`bs)#XtY5z_+q@CFmnW=EyRhY6Dl)ETUv>w&Y>yauqA!D~Dw`-;=a?bLUhlK?Gq z8%uYTz>I6goG5NTG($D5vLujqZ-5jQ5C_>O5gq({ZK{Sp)-6rCs;niSMr9? zO%5!y#4Eco496*mXVQ~zp&!EeN0)bId`H(0G5)ZzU=0#9kuWKTsN+b1^wQ_-Tfr6) zYjeb}ov$Mob9&0r9kGV&!40neNM2dFQ6(nIU_6dm%wMhEK^(-P&jIvc zDJSs|H~hvqz!UuDcvBF0G|bLWuhWe4rqsQU)sO}Y&N%f!T3y3Kz1OJB%Yb2e`yCkv zi!y+&exZIdegey;LggXnhrlwMq3YV``X{o!Zv|tV)H*iap7DQauQ};&>h_wpA}gRb z^jI*^x}_!smYUw#i@m%@d6*(3ngF>i=%m}$`@?3#G_yUt41^e1W;F=)v_9v}PXBfd z#^$To>sW-HjGZ7>|D^Fj_7*~Qzm_W0XJc?U+}A|cQ{QSl2ntYH=+J3HO)$fn@>o&E zg`l_8Yv@nRDtFSD!1oS@@TQ^a$MpHop>f~z+j#dHYT%oHo5Uq|C5q!b-GC9bN5%FF z$}qyq4~t5Reu{$UX>WBQhJT*}>jF6FW)9I$n9MWm_}pU)Wn z^W?Y6mh;t5!j^%7BU*P~rRTI|pqI6WfB4@xDxtOME~Tw-Db>w-O`q}UDWVva>HA%f z?68{M6K6HMC&6kKn`=-FYfHXA7Iih{@}JOvj?<=qt{FikultlHAo!77|A7@gGMFdp zxr+_fDBXDARg0mWeZNF8*<@D7tHPVAOb&!Wepq_D11%Urxc+!B!C*i=HnRsBja6=w zY!)-R8<8K-lJmRqXQma3Y5`p>>BFC!Ex4VDiEmAiYFLFe?P92VyjT~cP3DTw(edC0 z)?Lx{TN~H3XF4T&w>s5Os7_5*O{e0WQ|)2=H41CCiblH1ccP8Zv2i#9RI%;H;3lae z_^UIitv|T*CW=MlR>{u4*C(v$r*|yEnw^E}v`gqZt4PhW0-$!uzK8CMUG{Fet9bX> zsc7b4It~$FNgy7?hRJ)$V(9(xYWg_)u8QV+&Y_RBd;pJn$+*+r$67+&X$5LpvSi;X z8F#6s-(olnlD*w!-)h`n(Xr)JH221wOauAlpX0KB;ZjZOLjB{UiY-m)@Q>>f?b{^# zCeohGE@Oun8W^XD-5$7cSVh$|*#lXVA=wY(4R@e98U9kF=&7bmF{GiQRkVlEZknV# zL)3;^F8h0m=*(A5mr3@|;1w`V#4yqKlqYHlFlAjgev~JI{O0$o=|%*m$pQkpft46v z9z?UykO?YfX*N1KCzHhDJ5D%SO6ys+6kSn8^q8Dj6gCd%Hio5&5TRBzO_VCyId+=~ zyDno0!^;ZNbzBvw(=uJCuci|UTouiPnj&@Dc{;8z9#T9Oj5{SeoF|$Ir8?#^jJqTw zj&Nn?+v21ka){q>!gd|HhX$S2Sd&UsYA zI&p6ahv5VQDhulXCqbCQtqMe2Tmoj2fXW~NrR#g(^qQcszAy-RbZa;MoQ{99AdmV{ z*bQ;8Q&>L+KU;Cjr9cX6Bt%uySrzS9Ltm4Ot&*|L-c`|3k`EY~jr{=bJKq8HTT$uEigtf1mWZFD`$g!f zSh0Pa71a(ILlvFlyI>G7_K8N$Iu=yfa~1U(^k{;7GIoK^AcRFoKL9zMM3!9>l_W?q zT-!gR`7skuv2E9yjF&DW;f5zJ`)Ay`fJaV{0Va&GBpd0S4wRLFgsFWb`Mnhs=2F&?GKly=h&@~jfG}b(?{YlOQ$Fhb&;BuAy(|t=>~h+re;V*v7(E}hX~lp zNiHZ=^dCoZL{!D}AQwm?6T8)9?*}rHj4eu@EkZN#Bx4yuGCGAt3Fmc4W4s$9oYy7e8z2^<8+#W~ zPLyzf%Zx$72@>HD#SpDj1c^rI%$ilyDM+U%PBoKBT!EapbR%(`0~+$!Ok947ji6wh z*x*8TQ2vRH&anXMqM?!wrI5%Q5(OZNPXV1BR~JGUj+r3G40;4|wCVz!Xdv=&rGobYTpGo;E~Q15_@oEfGm=futTMG*$EM^CsO<8+6|elG0ev!gS4>_9Q382Q>l?RP4tpheQhp+HVO!)4zEJ~89HTeE~UyHH$=?{!HPZCh~21uEVe ztd=AQYWoqX;+=z-h}86RD)!ur3w#p-_dWG20Hmg!DOK!e?`T>@XYu7IFn%f--xk^H zcF5qJAaTqGtyl^f_f))Ix(CKV`{z(oMB}THaX%haVO!MRrKVktn$Vf9n@Do{{fgIX zGN`Go6O;%RD1(^vMXHw)mNqHd;^dKpX zQ}BbAERyp0Q9Oq$FSUDkoU-a=y}DVEOF0FQe6^rzx@i9gDxeyvq!~%ds^6fdB3BCy zy}H;Fzq8w*i_U`;4T6>wJh84Bhm@hnbNR|9L&8=RnTb%igk`fW zq4&m170pBz&?)gop*qFFn(d)NHP508up}Y{YBnujod#7L`XltuX2Pn(ZaZ4Bolsq* zLVJhiSkXcl$M~LB(L-1k?Ykw&aF>|8=6w&@&;H>Vy~noJ^g z<8j5LAWt~1)X0UO=|sZP{B^=I&2|D=nTnyg__*d%c=KuE3E;swWYANb98D9N{t%I) zB;rWpeJG&IQ4)f~$k(mIV2k115A5$>R^0 zgXCu=*G@>)wSvCl?MF~96J5^izo_cytOHbSL_Hue^Z{Cj9OoAkU zLckkdYNNI7j(7nt5Cob3_qX<*$t0ld`ST&O_g?q)tYI{p6jPEh)H{9qVxdx1jU?n)dV>hDL6J=5nPFDH zK^sF`A0hD+Xw@gl8V|prQg0Wv_DHy>e4c1S&F# zWTrW=jnedbL%j{P4|ILeCE)OVmYiI3LP*$LZS3)`A>mkT3PxC-8BgpIMirCt#IP{Z za>eC%Vo->Q2eRmSZDXdY0y3WHaq)Ar@DqX^74)U!BM>LH2qCp-T$$J@RE)cbiKr=* z#S#(sJsbD^S#;h9B6qu}x!Fa{er1FgTnb^@60?U4Zla%c8{D*Kzl}8sO(>Bym}$>D z6y5>zsEGPFm*m3Aw7&+5Uz!*e?(ybJ>~V3gTevqH14iN%jlKQH@Ghc{P4o-%d@uO^ zM2W&ZU)D(ULN_A;Pr$&`@8VgH!862WpX@;>VnQ?DUa68<;aV*5rqGl5C$t6Kg>q8u z>|XTRxNlQpKvkPKzAdhd3vSdRb!d=XI|Wp|?+B|$VSquW!VLclOwnWrjRgjFptvH%>r+_Ko2o>l-CjkEP`68^u^E#+K{~)ePTQ zBTA#}Eo1o5`bPMKEHokb5M4&9#zvDDyhYqYE)W{W+hZm2^^Jy+RC|o18iD*nfm=`U z7>Q`T7|Fb^xr{{I;DZ=R!9Q};{+436WJ~M@HA@;0EjhQKv ze49ad$R+gW7>b-2Hf$*B+v#$m)`*A=OoX1?V0ASF$X@m*O1|AS3 zOyRd;iNkL)|Kj#vW4@BvixsE=)wSxDz8i5-*Re_|!LZ6vmS%P`2Es69Z# z6I=JsW8%XmvNBI@m01+|qz*n}I=prAr&ZnN#MZm8;>3JgFxvRGWU79TAi$?on}64< z0rZ*B<#_lNmv_wMBNpzHw2yftmR=*K5d)7sy1$xFT2~umX2CMd5*zYAEW=ALwxYK9 z#TlTzGJ*F%ACTt}|JR6<5O@xZL0UpJiI??n5lt^uFbj%0d`wsaKSQ@ z7!Yc*fFO)Dd?e9ta5lVic4kTi8Ua>-V^G)Z6Ajgc_JYnr#;9*ISQWJA2VEPr!OEY zk{A+pNe`)v*%wzO_6o-|+w8}p_Rjs77+(;ZOKcR%VMB}go{J}5HE8F1*0i~lVUPMA zqqY7-zpxFSB|Ho7u(ue)kHNBM;9a0(xZC$;V!*|(tnf>aGwHG~e~662G|cKQukdY= zx>4&J5`B#OUV_#69As|8HHr-{B{Ij1F^{8adIGfnHacrvd2(F?8Q*tUFk9uv4g+QP(DCEiKsxk{G)xL zJU^);1b%Y6O3qvz@$5TC<0lcLpO~5L=_l{cPr4z-E4!h!^Tkw76}g9(h!{&ZK__V~ zaY?W^3-r z^v;zcTA9j|V!q8%%@}lGv{Wu*9>nSilbuy&;rXjkFjR^}U_gqV+JCN;Kgt{R`%S#PGf+ z(SK0TTydlci4fULTVZ$oAs`PkZPlX82e26_6@+3m>Fqn5L%B8;DxVIIJP9{T4jOl zgm@Qs2|o#OcbSSPe#9*UvrzOvZh?^D87-u*qdW3#)bUNR&E?;Ri%bl4iGa>B0 zZr^4|ue}q+FwrXnMWYpZvTiJu4{9H@AIBPbEQ27VH0J!Q@HC8MKy(F}rET;IBV&on z{02=-_QYm`n0D*ir1RSg4~2Ib9la7gTqqUI%$N|f7gqZABwi89z~ERpH7JsqG1K0H zdgJR34`cODyerH?2!Prh6SXlg4jSwW?{wGN6I+B|G5d|gPE)<_d9xOgHOPlfuEknM zOAg`3VQ~`@{X#L665*IQNG(jk)oXf$Xz|2THUZfEv%rFLxV$`==BtIBk4|{-_ zj27Vuj!qoQOB8tIvaCYIcSf(vDil`YEzB0!k%B8T{`ygbT7e!X36D0PDdtGdqfn2N zjO9FvI)d{k5Zz;pQlrpgfP~)|WI<<;63je;4=LR^qe3A&jb>bmsu-)RDDVj85(wNn z(PJ*6{9-QuzRYDV;thYFxfuW4_tjTAR3`SX?gD>lBLx0(w+c7w2cMVy3n#Ks>j$jy zZ8UR{T@zO^D_#57wK!y|=iNtQG$NLG z=1N3AX7qW;elcG!W-=^2@R>GdpJ_o5HRU8cJ9H#Vb@&NtsK(eNIkV>NpqoTm~n zQ!XQchdJjAa?N)|_#iEiR}B`oJljxX#5YEim1igwuMl_$e^r!KmN+mU!wDu5U*gRn z_z7XYSmND<2y=;{LmyQ)`lGTx?Y+nJiH|Lb9UntT#Nc;kv*!3?=_+{QOX7*XZ86_= zBL2WCHw=i@AD`H<47M!ICb6ZJL5%zU3JW=q*g6jOjG(zyMCDEFTgN~!5?jBn)d^R} z*)kbRHny<1?{T1b(k={VzJBP@FR)>hiVah(Zzp81>nig2hGowY`$BX24aAFxYT6$Q zKPN*Q1O#JXzu{eKJxS4n=D9KpoYCA-Jl(iB0(TA7@WqG!SbcLDiK}vVkCo?kwU5D{2gj!6oGHh0oY9uL) zDHSTLPm7gB?BuX3RF#x5BmF)03yFmlLVnLnr!LW2p;^JASZ3BavCNFK?bebo1G!nq zZ!Zi&r+Sz#!v0udmy7-bLjOco*dO<8jiVKW2Uy|&`C&%b0LEzw*>P5*b_q)>(1`-* z#hMI3rre28=OD{m;!(_#Q=;MLgvYSoDwL(_#4h177;s!-uW*^v$0s%$RCa{Qa@N4d zVNjT?_wGcuP(kxcSnRJ!^cakmtxym>nra`m#$NSAZebSrd|LT2i!=p(RUKVlChnLW z#jpr%3;?Fls+K~JqG~C4B8f+as{w!O?<*>OkW^vX1edW;W%B zlGxF~wDL4F98`vbfm=7os~0aRu{ANzj)coR#rXaq<~fRgvXM~d*wn!?Z@b@PneaOc zr_C1bV5o$oENjiQvs!fj?GPUfmBChf?;kLL7xP27#_T<&B>|REJF}j7jOahY~xC+{b*y{3Fv4|Kn-Q zsp-Z&7H4-RzY(AQoZ9H;{O3fYUj;@J6O?IzUHJm1HO1}5Lo}*V3-i&n-7?U?rb<*B zJ8ehCfvu@C*U+KpdjA<3io!6AM8wVjLq~?QI0DbfgTBD6*K6ZBGpbf&^5_@FL-KTn zDDY#`%f`CslHv`VAD|zrAq+;@eTBhTrWHFaOhcxATr)tt>$di5cR(JAw6b9EFt(Qw z{~+|hZYy(>U(0iB_Fxnqj&2X=G=8Tp)(diQof!Tkn|6w zG6H{QO0~DED9l-}RmYQY8%9o6&9=D?Vy~;1gU6;X$91P?jCZB+oprq{MFnwSWhm24 zT2R1jh$HN~xKJI`_{P$g*TmA7%uF{OYUZfIK-YAjic>f?IO717-!H=TCaabyreaSWBr=+_Mjt9V%uLZG}{V&)}s%xhFw3AQU~?BuEkQ)Ufkn2P%70~W!q0+f(e#{`S(o8)D7=@1 z0T3`6K0pjUe$n)e)1v7mi=*k4F;Y}DbN)e~>lnr%W>3RonT1YH(kR+bAu?TIUxrOM zUTH7%&$nj`v!xuBT|}wX_m2IwVPI5U(CpELr3NSBj(Ur;&^UlVPe5R|Gj3m8hoZQR zYsfB)OFpyOxHA+WmUc(2Y>2VqVIlPD86kXPYm@|b91kv>OZv~u8k7ZcfS~FMGltt73JhN5P zKfUrI(F2!k{~IV_SJvogPtNFLEZEs22i83OjuRPY&ai-jCrT71xyJ=6w42G}KwewW z#9*gLUVj(BE_4NE7rY0@09ZA>T?}O-_;O0*MKy=annGCtkljZGWN93OSr`&>6hQ9q z06Dps=KE(d8;>CO3Y{}fU>=)RvvKSUQ(|WBIY*>rHUd6De@eKgnVr%3g=5Wk{|JFCxtm^${ddEo@K%BV=wV#uxYlvdT5x$T72#V-P>)$>wq?ljGqFnGS3M zV&al&P%}30@OZ;6nnq1lm+QnbtSNQlplrX*l+|d9L^GMn5<8!VR-hVYW}Sfrbtut) zi?N+{{{poMUEkgllWBe4p12Qp3|i5I_smPw2ZL(Tl!QSw)oE(-WUlrz11BeTox}u9 z?AVU7#`npI;jhYDDf|q2m`kk_{db_z#xzrVxMl_?c+^4WF2)D(2A}+-$C+ulht1@J zW)}W_P_q!G6*C-*aDAQXxu?g|4|NkC3%^A~NMfiw?qNkRjd}f22lJb?SdEQFDbS_!9?b0K1n=qH+S9|P2pHgq ze{GyAMeGaTj@$G6QTv)bG6#eT6THQq))Tca9Bz>*Wwv3FBct-X(SO}hq1CKz%qSWS zOg9V$I@y77TN~M>yyoe5XK`6u8ZZop&=9s{( z3p|>jc`KR_xYSc9HG$usCKNO97W;W_yJ0t=M-5`XC{Tk4r9cffn8Lt>FSa+QFRf@z zUm29e$Rh}?oa^px3S{!PWN<>{823R#8N|Emq^EPX7)^&d_(dH!;(gZ$z6I``6I=>? zS<3FoE0)&J2_-M(w=TJm-$-%+zir88emj!0`CXPgSGo{ea>UHpg@=iby`20-`0I$e z1~ncV%mgsYIeZQBWvW3K@bQ02__=Hue{HxxiUf2M+d<)YhRa75Bq~i9 zFWN*_uCwHeXl2Z1haOa8PQ(xmZ4esdYZ*^%wrO)8b%BSIL9>&{UxP3$9Xhf5o5wH> zST)CnRjGA4Y`9puWQoLc1ksRPh*k0MODHx!oN7qLbaq)x|Fafk8c>Sf`z5}D*+etFPsvwmpN zxJAM#@x%ckMBE-gO0g|DpEG1E7B_hK(U_TbrZ%Kzs!j$~f{DGt3J|7>uX^w#aX`4i z$0_(g8RXa^5vayB zaRz_5&M|OnH|V89m_%N6^qn@^bKbVu)u`(a*7L2i^wyZ?tu-Q;BE#z!VnbTHv4c;p zQ+4+_=4meUR$H(kxGD|x=<%Nv2yPuA5Zv2&c=GoJ?X9*Ws>}5mL9WcG27QAbYx0zqiz!-zOF73VnOGXHZw)0suSXqJmPaIcksfWyRy{hB zbM#o2{3n!_3H-%Npl;DL`jtx74^;Nnnl)ycvW3Wdc6-l3oa* zrR2E?j=Pl6NN#$8>`KjwFQdfl;fkf~EM9 z)&6`Eu_4EgjL`#i)QEJTE0@s_7JoSMhNPm4<0a+^ouP|page;}+=0j#78A#H6b3i8 zr)_TWy^>nxFG+qbwW^{dc~NRrWl3^=YE`f#X{A zpYqfGU4A;&^YhbHGT#Nxxch4Nd0)FRtCrujp+GrHsG`NbOO%uQXj|+Hu)0^)(4;{^ z9uO^jD;5Y&eY)*r^K#Zx-pi+UcrWKZ%8T??=%wY-%NrnuRw&u2M_uwudPI^-^=M08 zu180*U5{nS^8tOyThTyp0zZo$T^ji3?!cwpZv__hzZIBt41dib{Y3QB!B2XP8pLyh z_w4qbgFJ^`q{%Ama}oW1YYk!f^1so|2W$Vq$%^`FNWcHFfiP7`qDV;fstx*iUO!Ke z+ZTY>i8 zw*rfwQRp`Y)jU;CF4K-bQhR%kvJH@^P){B8kYp+P$=4KS2iqwNLSQD^U9eA&-;b+*jr^;DPp6)u_Me=Nk{<}eNC<9 zD?WX5!T$MHAb8wdyK+0v#tMGsLQ!i6lyvSepP#EV@YK%^0vGqYL!=(V0FLXGAx|=u*U&+7)~FxdFp;?d$=5=5_OP z;obaPx`Cf7Z|CQlHT?W`8I+CZ|8(%=tPD<*f?Ysc8`}d97vw(s7(^#6iq}Tbh?=v* zzUbOPsVN*Bx2{CkwcbA=FLmm^dMy*TA!=UzJ&$0bEm^j^2$`8u!>X{f^kpsfT&(eJ zb&_x?q&bzXi~f&jr;JCd^5^+vW*`0;C(!1S90qw1lhS=8hz9Qc>fln;s!uG9)_*ox z%kNi1$&cs}Nls=CH%snm9FSc0Vp;mw^t{l}8k3JedKgu7b6z5JPXi)-gyr8rV#jB2 z0#v*N#YFbFliaUC>EC@O=+FuiGy$`C;Neme^gu0=5?1mxB|(&8%tSreVY8CVC(_%8 zV(HnTG?vvK=3ti9x?X=Yw>94NT;R4-40EBwRz_COKQj5Gu`cuazre2AhL-1V@jXuR zyR{>zQNmnoqEq7Sa&W{0by>*-6$f@CF4tD^-H>w=jkz!{EQxZl65>zO`fTb zVDe*(%CU&^i8#yy1vSu4R+3q$r94M$c-enI@1j{)CnJJ%@auR-*%)NxMAux&CE-UJ{ z#AOmTZcX7`iR^)oNS~GqP!B7sF>Sc$mIoAw=sG%SdC0gpvD5ly#58`%mP;q^3+>%H(SIL46T^=WE2%zO}lRx(uR}~08U zgTQ3^YurE7`I;;X{$}4kX??R}^;SjlTz)H)pW(MEc{ab*$uPfDl2gYZE2Qn#kF24j z^%K|6FI_+1H}otY39DKVOSDx8hzU>~XxK9Wt5CO6Kw)|Qv*CB;&bV1Xi6=G-NUXY8 zQv@1zv|5#d3~RXwtIBvlvO~$5BKI$x2aWdc$8N9{13Nf&5I+#`uR+M)PEuBt$#4I{K1-C^jZ?_fO&eSSTlY8J8mS}4Fr2< zg^p40Ie&Js%um;%d||sXcK47wy`q;yAH?>}G`ij&w_oM1KFOP)SknY>_PRs7U3Zut zY2TNZu>g-dXw|rwyT(4uBC=MRNxctcb|wc_@%lC^%i&#k#!SL`gnmblPD(10oNq?8H|%7CdtHB*O}10!cC(jkUt*h#RQX5>$j7`H#Wtlj_mecr0>4UqJ&^vj1}}qs7qAxOCDh9{ zw4+sn{4CoOco>`PD)iz=8Kwa(!VrHRaGvODqMrcF6OB%KYNje6S6{z&1V%F!K&+aC zdT1ze_COh|w`^(JdI4raROMvudW@XvS@~FiZ~^?d0dP-A1ax7?b~u}THz0Q=zL%!k z4hyd2$J~*QoJUpXp-=`B&$vLY{3kqy1!Q!(Pmi+gC7u?PW8O9uW7K2ZOdaeJU@LZj z!sj#Po^pY_-2mC7U}rv1#+Ot{J`qhkWk5WV*^9x`@7pTSw?hq1y;@3Y0DQNZ9oQ3% zyQ)mTGqongG0g5{kj(Ku_Y1fA1Vk0N+xGE$?pw9n^T4YO0Qvb%yt67>_dW6~%Z! zQvovjDnA#$&6JUGrG81T@~;v)tDI~ zXzlHP;pHE;MUY;4VDN;;=T4>>sK|VrwS^D#DJdzzslPWd?XT2< zDQFjqUMpx`o9RKIR_%D2i1vQcES5gq{tQ|q+=$)=YPYF3HKf_D%zvb?_eeL1d;9{m zy-IA$}}uQgDbw7RB_ zU^M^W^&#SR(8=wl7qj@fo*$9|Uz#S4wT6{&FDc9H$ zo;485YoNfv3w4M+NIR9hr*>FJgN$Oo!Vj&Ul84L) zJPeF(_h2N*s6m6HAQQZz#pLdEy8&PT5ugrUAED?S^wdCzVQw>ET1@Em`njUbTM2U;Yv=~UB!@D37Pz){G5~fV^n?N!)yB4rgr7QA~-xvv;peXd>joZ*P8NI7Xt-& z1h4NPV=+*c@qLAUu3t^v?aixAzRChn?(={GJUU60=q#Ql1)!Mj(K8P?N5Pazy2_jZ z5@wcMt={}Gk0o- zRH$HMAZ5O=Jt;=$L$3-@`kna>{_wwex}!f}24OL93$E1+BsIkpV8-haR7o&{MbuKN znOT}pzuu_4z--r1VYav!X2Lah`uwb4xsHHYC=as{NEzsvF&64k`Acp?J!&NTUY=G5 zfB2|M1s*TD2zFJ0xxgB5 zzmEc}&4R-g!9nBHT|hTOxWpbOwbWc>03two^OBUi`82R}R5WE6`{d&W7>lNM&K7%J zbk;KSbm!$Z3Jd;vkmRO!i^}JjNRK>G(VaE!lnegs)k1UI(FSTUZ^GV2z=nzLuj)Fa z7V9wiTnxda49J!VWQW`W1`XI?W5N4hRtUY^qv&DNh(FNPJ zwMe41&nZ36!^F$zE_q||JAv9)P1%NIs8teAh^3Up8%Zs27q1oa-70JPkuI(B+DL_lq5%0t% zZ)lvcg(Ld7O_5Ml3K*tVM+FksKp&`OJ}vriIY9>dT$3=f#}tt5u6dC)`hv2JsCNEC!B?%D<-&nn%`lDA7j6cB}7$l(lvP zWf>Fxq$@hy_Af?cuYFOe{;dA0@zD@J=|Q*JV63JRu&^~wX~4uF9@I)H&K{gP)3nJ5 zrR)Qw$W1g4OT5Ga1J)wIsenDIor&l{&rBD|5sS)S`6mOdsGrL3SV!fwON%a3cPN6a zlD>j+Vf1+NcJ+>ih``WFhTR1!@qbbJ7Zs_g7X@)?)}l|POcjfJh-D!Q&~9|Ac}0Nx zyjRU`Wz$Rn&D({h5?T$~0$<=Tjf`uBoCc2Wvdr~Y(QDRzCPirlZ3!7tJ}LdOU?_;y zszELxce53P$$)6_pQ)yRUk0@VoJr9Ne(n&*S2xdn@H|1uh+e_7eya}wRZ(o^6JRx= zL;$FCrs50;zo~=*au+W}_?HLeR`prUqwNt@Y8i;RkTT0J23+DTWDz}C)ThEz9-yD1DlS|=H3o#1 zI3!5Fss^YciA#l*HWFMUz!6jgs>T05L1lVV3@>#_;0W?_ha^A)G}GT}4cG({(N4pP z-A<2zWZNi68VCYTF?+4776a3O$wMIVNh3ZLO|$ctNaucC=j)F*sRtT1^y41n#Ar`B5H#ln}L#;ByzLp zpukimFiEJQD`xQB6%S=VJU6gzb+0JDJJog*W<%iUjmPVjgE$B%NaY5C-S#T9{d7!-8YZ;&v z_wfMeN#sZ&S`MBRZ9gjXjPUuv(Cb$5Ku-ncn<(h5a-kN1pU9qJ%e_lWG;I!rXG05q&qZjW2W9>!hiNW;c&pVpSEPGwJ0pN z7jGCg3ATjIHnVq!!2J%NzmSKFJ`VD6>36BhWtn_kxxRR8Bpof@P9Zn!BJO|WNW&oS z;ctMz5#;1!g}`L=s$$TtCfmIG@=%>clJp^(%UZR!;LPSeE7O>3_GSCZh~T=>?#@$- z_S*&SnZ(^irR!yb&o!rpN|UeUm#U3HFK|!k`o{5rd!jtX@hIcOMIOHOjeZ_}c98QZ zXWKcCacouRF@Am7ND(H#(vV+i$gecMd>YR_ja#v~6iv5yA9!FD4b99=JAbOuvd=Dy zHgkhF_cE@!+PP*4D@WHLss>U-4@$pXR=DPIvj) zKYuSr0&4AbYd00=9ZS8ZmFmxpKm&Vx*XGU{7vcaAvg|0E(w|Z1I2itz+<;}zo9R@V zE^oE^X3wOi66etIw1R@&)nU(`Z$M?Gu5YKo?@|tC|7R>NSLi(L_7>fweqlRhMRFIi ziZ-0<{HRqrJ7S$NyFK|5_c6_+$&vezw8<-wnMMPRik3|I_D@YNdBAU?wmZL3%}N4r zM|wtWLAS}_Xh(1FqeNy-IQ?fpqW=6kE{87et3dGn>klpru5af;$5#75v%SZ%U!fmy z`|ak2;pKqm{D@^g=KN1ROMIm(c;955v7(*Vj-m5t{=Voke`i>!TI@b0{FV~hvq?d3 zOJ{co@>UnuV#WK0jv)i@oo9}uZ?X3~m*=wpdCTWm;XN(sD^) zn$WO)c@=$(SmEuatBiPhUirw670KwqELFgtkN<(ADAdGx2&Or6uMFeirX0d;PAN|+}kH2nZ_ z6xs<4&C~$uE6yp*oyVM&!4asNd|mr!(Wc!!B%E8Eu$6>h5FP`MxaGfVg$1jvj`kPk z2hKy|-6`f%?uxci@S}?pmsG+Tb(x%^WU{a-{YeR*=`2w_5EnD4N?qz=mQXdyObzy0=4Zu{UXMurysl_^WhT-i zy0&|>2b1FYA}nsU2ONvr`IsJ)R6w3n8MJXxbGvX(UF(}|=98IBojWZi%~(2p1U)tL zW%@p5iQvs`<*?5rSK1CZkK+_Zr4v&N2v1+f?533;x4NFYak9lV3-;FBB?TPcWpMnt zoBnE*UI+5MFOF~jWD$<*a8gsanR(>P<9HEvJo+f|2VU^OxtUmHK(fd2fqRUovEGOs zM+zKo$`lz4+!L!gX+45MtmZ_Hhtu-}j(*d#ieugMJf7p)^gNDZ*z}ylfoggNIVi0N zL6L~O@{V`QBfTk)^rk%0`-;+!j308yec&SgICEAKRRBo+<{)6{;&xI4CVjrGp`aXQWMQN0ewle4&TiAQ_myDY2Oe?C%EROPK*)uMK-C3b+{Dws(1(vJI%&X+G18#yk zUjN&DoyqIR+@Xl@dY>CAVesGG*EU{%V_s9zk(^KGaQv1}0pXvWQD{70hw9DO1~=~T zr_Gnw^1223G6VLPItU9sjpTS>jY8G(yBC>wwectaYF^dGE$hvz`g8e(=2iXi-)Uae z^5%qjRm;x<$tYGW_W?~_)$)E5>bCsB785)&>i>gp%8{e~4u>loRc=Kp(P z9%t_?hsW;rNk+9L?Y0BZ5@#Zf6~WC*yDon^%afP6RT-(kLiFF!_YSN@hJ;`p)9?q0#AwPNDijZy$Yh z=pa62Mc=>^-qxe)KcH#synQwDD9?*R&4-^vLx*8EO z?aYMHJ+8or0)_wjK)hLJ90v4Jr;iO@4E@3I;eCV{d3JR`x)oWv&O5deW?lp5OC3>eCgCo#f}<%lRvPIxlmFlBh>7c@!zJ5zSQ6eB_*hC zG&*(2k|S4Y3MtYlzkX-WSf8p;hIHz|o8az8&?a8~t{)f}_psXl1&w(yISrb?14KIP2{9 z>c1FV8M+pUBTJ-L=qlM{fgLN^~lI8c?bHLjwdrmE!9oQXj zb7!&JmXK*n`kGpr6FRajbC|9DmVNQqsG%#*94|V>euPV+3uAVpzlA;Y_FT5I4aMw} z;|;y`BELPiG9GB!WnU1AHEfOAU#o})nx4sR(SfYKfmSyN=~J ziVJEQ`T~u^Ua}n~Nh^2E6_PY$1C9OD_eJa3jQ{nA!Ca{iT-~S>Zt&6Nf>1Psn0+vA zztx=E9<%?}oZHr%d(LnF0MRzAYp;6D{-cA#%mjR)4tH9&o2k zZj1H!pyeB|9)Bg8ZhJJ^kPI$gt0Q>OQ`Ab1_+*r5dGxZ&J?DMkY2>95e`C%Bbd@3u zH8CX0I=UORcV*`8aLTa9Sy(+JQX*~;ygl7s^+1HzSb9~^d5KBQZP^CbxGj8}Gl_ud z-9t~2VESuu$yxnMYrn(cBi!}7jt|_xn}#iWNi}<6Pqmv4vEB7l&eIIU(=De~#Ox-2 zoPbKZiBlS4rv~jN{MlotR@qHKJ*(}eDm|xg@w=WO$?GRdZva61**@-+wKVhxZqcTg zs2w{M^{(H-9iN#|=Da=34jD2rrRYzqNkW|(D{5@v@O1F7882vO-|6E^a*yCSAEDhf z(S|nyH#d>oQ#&F>MhQr)>=C2xa5oSHd_%o-R`6y9UzxXuRRhoio%I@ny6Ml=FAADU3BujxrU3T?>K>jy%L$xWRy zbYd~PM?arBsW_;RKIo=@)ftnX>MBKy$CLAKL>4G7om2mEQ#Ti9A*su6yzrh;(#E5Y zvVWu%g`<@%Js0DM*@?LAzx)$VMEqsP zJ)cW3N$l(VBC|97U*@DuZe3TZ42O|8uS_Lf=D%vz6XKK}D|;#vO1tgY*s@Ir7zxZJ zUKX}Gr#6@6PUr_9mi_dmbv2(PpIcP!af^LYI?2<_-k~K7F_YyBJX}C}zqC8eU9p&6 z(-<-{7y)gZhlfj7RKteXo#C-znIf;F z(COW~7e`%6LU(}RHfNbbUAaxEzFg<5{Cpir(xxP>Bw>Ge8_CvnUq2x=c+;`FvVR`G zyKMS%7Jj+O0bqZJTPg?}DNGhgigiL#wKu2}WMGbLy^ZG0sx-80g{*@I^YTKoz1i8u zCP$5=j2*&qPDe>JzXOqt`??Fe+$^vm*rr~Vyoh+82csaXRhfpvA@Qo3`Xg7%mp$}B`7@p1vf%B&Nh zIc9LgAsCz@u;!64;vEy~4Ni+ep|TaH(aJ1xli^PqnHi>)8WeNh>AtmQR63PT@|DZS z0BGgtboSbi*oGNAFu@x+E3qqbBEd{9%kted2*jK1Z7F*ufo0A!+#Wzj>Z8`Luv{gHKb2}WPC~b7b?IMX4xjq*b$8vH=x2aVE3i=Hv4sFUaT;nrtnb%nh$XY zR7av}KxvHzv^jIJ2GmXC4(NF_X6$Us4~aXXuKdJoV;$qQW_xc8Dt9}Oa7}T{x{A(o z0N5`-J{gd+uWDhbvj}q_LH|k+Q{Dv4A;^gC?XEB(TDgW&qW6iwX%1Q~nO|#Yo3(zh z)tUNoF87dGsS&ND16F2UnG+y1mWjV-W$rY7C3fmnT4B4u0UPHv3@mSo*;~+XL#9DwzSQgWZ^=5n+simKh<$--iMOecqD^w= znuyzLP3>97pBgNUaZECdS73Gvgd|}%1WB8r1f>Y97OMRjJ;4xor z-yPHor;A7HCkEn=9MjZp*|$`S2ni5B0)H(#QWv#Pw657QGhGFdA7@=NFf*SBB@AnV za4H>}zzIz*oJeHgc#6syofBT+mj1jVpAJZs1U)ueUS?2{ln zvE`a9&AH9A**?DxDK;29vW%AcYbS84{7zcL2y}r3g%Ma!IZTiTiSpWSWvU|3J)hG` z6sv;3f)WE=YmV%XX`6F`Y05ZC4hz3Vcey1^)rHz7yR~WiQ_D5oc|f-KB6Y3xR|k_T zqkWMItb6DaW5ECvD%_rbom(s4zvo9Q_Oy8V>I%~a+IUNinFG#k6hp^*sm&Y2XhWnT zaPuz-$aQlb+0n*=`yaIM-Hi0*0jZW^3P4I;KBo6BfZl#vEf#<#sPdx#=*a%YfScQ9 z(SnyK0lt6o5qV=1f*#X`o*4yCqU0L-AT}<+$fL@l_~N0Vk)z(D9n(1&U1aJoLw0uD}49*~N`E3@~!xLia#}TJ-@2 z7_}XQnh)wn>bU z=ugxHa=J|{WKO*|Zsqr7_Q5(1z{IFHhkJfmo}I3)2|0g$-bg*wh(LHC*xwFGK(Y_S z0{2i&)ZU0nc6{Kpl34vs6`d2%R71J$hMwhn8hSXsS`$50LxzTdK-VCMlIos-ohTOPh6ilZ!&Flt~sq?a^ z{Y0$(M|GrLdA>H%+FMY!%PpT>OAyW&6_Tosv%)DAXr%@R@$^BDVS>4S8b?M2b3F~; zR)NcZYul=NI(8q^Y(%n_w5eBhH2XFqW0yN~s>jn?B}C)N{*Ai-M|I`8(-e^pIK z=ZOI5r4x$=_bkfXeQxTJckRdQKRRFjtjups)YqL<(od3<*^p@~b^Ih`cAtb0H?Bnv zIsMMslaM68TwR#kpf4Dq2_723GjmAW!VAqkt(N^Nf?UK!4gzVa948q zbn0u7lFq5*Tr$$Asy&Dp`a~6<}L)+7#qsv^2VMXV(eR=;DJ> z`}d|J*}sB_zgKk(hF}}x^o7hq6dN=DGxL1T$6PcT)Og1(*2Hf9tqj*^u6x2_$XlCc%WdEtm})vtWHX>8AtWzynxgpU*P7? z@#T#TZPW0sqe_OC!|qQvac*lD*3q6)=L>32E528~z8DlUweda9SGb8HvabhFq|@{L zoWK_N)l->9Sjb@D=7V(nK5PoP={fH4@eMNF&WPKGRX@t8z@aK9QEIdAPxW7m1iIFd z1C#cR{^c(eV1c!AtMls90)?tB;~eIx#kI!k?2G-vk0oU0h_b-1wq>F|(}1t40choF zfG)!Uv1&~NitE3FqVx5$a63{z`~;QMZREA4{)oDsb%Of`tiCxFg6Z@*)riV`N%Sl^ zdro!C<`S>KJ=s{AL*>_P?rZ?H4Yk_bYxYF37<@)?LS<~)Nmi|K15*hu%BA6)*1X@GrOg*wJO z3OfJF6=qiY2MSOeXw_KcA3M?oOhnt9Uvin5ZdB$2x1ELRigWT5mn0n24DD@LT+^|9 zvr9N>g60y~NpIO(R^Uur z?2lP)ufvM@w)Pxhb z`o?Kb^k=;KXu9;=2XsmByGZ3%7vP5qGy*@B4>Yzqvnl^gl@H0i$-gx4IRUR?1a6p7 z7&eDNA&!7=3@3HcHF6!KIG#xaVk!(Oy2 zoCfTxgPC|irFvqLM}DLojK?tTnz22V%FrH{@WHs|dDW;v%e)nnRBKFsQB2NrcS z1cbs>)m^W3#t`wV&HOVoEw5)iL^jE)%=4@>9uAdms?axvc?4jjiPNt8C^;j{`#&!4 z^=7>(b#Y$3qb-~bBjXL^?7hiF&2IavVG`TCscIe(`o7R3&dWrVaiuiSi_-DXIH&;dxLUTu4UhyE(WN?di17VxI|uaM>pFoTVQkM=+tdaZ5!`MO{88s`1k04Ufzm;Wn&{dCr4blL z>R-yy1_SqQj;H4bS@Q1uFwpu25-;>7*W*+42pfPL9&j<8$zHob`3H8n^IfpstOVYhbb_5j*A>twsS+4nr6M&Op;D28q{ z^agJEPu?vQe0Np7FWS%@`1-d@80(p4rM*|_zJ4QNsfSvGv&j}a6XAuUd*k89VQsVQ zt{C4Cv~wD^B+H`>J)LLhhWa`>^_n`xiG|oSO}~VmauAYgS43j@IAE0{_QJauj~*9zaE5JRmOzTa)0m^-#TN?SZ1C@3D=Vk2yt?37DIZJ^zRG${OMQu*sP!r8< zw7VSQ@Z^9pM&b=igMpj>g6z<8W$S8=hzqQnioo1*W!D-K!7c*pPT)IgOR8Pise8}9 zYvuZ-=HJ!4AKI{|nVmc7-^=U?QmeX*{Rz zye~%!_wQ}k6S(CR0=R5xmBd&wRU`3IKFEC@7EBQj!&~_ zDN01XEv7PS|A90bM0^Gbtt&H1X&O2bIb-)CoLU&6VRSD>M>tnNpxBEbkQ!$DNU@X@ zS|uPA<5x)NoT^k(y{z=tYV9s#@r~D|TW4U9m#FIea!|rt*Pv<_=q^HO0V=@M{%MpSITanhtsXAS0ds)}I6#p8?Cc zG>C)(8Cv4u<|eP?-8O^8U|%YmDaFu$nh3G?x4WktBF{a zS4>0+Zcyk_dB?OxZNIFalZf^>U}3lyDpdre#)7g%Xxkd@x58Ql`W}p3$D)s*#u-Xm zMO1gNh~gYisCYgsOOWj1=aW<71r{<{JN-9`U0+|Ee+v2gn*5YqU~HElT|t|UBX7)JfaQ-OqnT*#+`~+8 zSP4L}yJX0+GM5Cqx=HMJn;Q$nF%U1Pbe`^`wA99f@#(BoT~)IzUf&d4dAiY`?2}mO zOTAQTdFEkP)xwpHrJQ&}Q*ikUEtwY1s&(zmbIRp~^_X+<0`Z-|xrVZhOv)LTpG)$pd?kcxwy!Sj$Wjd7|=X-$A?la-*+^dolmJms%p*5DK!AsX_g`B zIlEh3P+MSx2kLWq^*}7_(jtS`V%I;UA_he@@_Svgjq1;?Bp9e58Pf0_aQ2(wOMZk# zuN!IfR_6zh1s4v|neaEE!nTs+E?ND4dy0r2+LT+fiDsb8_#CllVmwpG_DYMrcP$qi zFdwd)l{#3uLioORq{{8iG*jge9`5-$2E^NhNFRNKZf^YpSxa_*ICZdW`NluM7(jC3 zV_3yVlG_MOdJjWmI{;oA9qiyvmxdk7PxDCHc~r%cD(yFv$@v4eRIJFKXyKv>NyCsm zUFiS{ygc6p^I{jw9bokN#b9nf%G!wV)U1y{eB?JIb%vXE@oR+a0Qs2R!IIG-^`1!< z4gAX{m~L*^`;jtvT|4rM`Ecy-!IFh_8!&BtT$mt`veWa1bzC|?ar~b|fG5ZHU zR`EGb^4!hRRY&T*5KGDU^<>IFlBX*|qm39*4KZbWg)mE^i?s}s>gN^<;E*;Ywqzdu zscCF4kX&Rl{miBw0FAt+p>HB~Q&kdT7-@oDQOCJOY5bR&vXsj? z)MF^>GOCT&e}Q$~M>&O+3o08I;Pbd3*u1t+{jkinq-_i+D_poW(-X5!kcsEgw+MjV zbb{FwLkA!}SmF^Z0r4g*u%qGkDC1tMaW{7fp}l5}2KI-1E-eT)=X2G13MA`T1vfO! zA55Cw{%FnDg5z1)ijUKPZ|93r0}f+d%}-D)5SBYjJ>~>ppcvbnp)9b2+l&OaIZqOX zqd?pAopv@m#A?mB)QdjU-ArYa^SCojhxhNr@$hyt!LiQCLf{o%OpG<(=`Wh9JChgW zF-+b3yxTT)E>9xpCN{Xhx*ZIGx5tB>rPs=U(;ULF8ztr#=iR4hu6uc>pl0tg&4 z?RV<0nYMDJ=0c6e2G%^eql@_iew}H;D>@h2DWPrP zS1F0WCXs+bD}FmjKqtF#JExg-3yl193Y2D#^ftRK=sZUm*4j-H{hD?6_lw4x*_eE& zGT3>BTbFAXV~zB+*>3o8Uibrqvq>*N(jS@DZ*~43L0;=SVJ3NAB~%_6 zFGI4~Wux&bZvV}H$hW_n;+#t<%WeOO)bONNL!3~zJ7apX(M@1_5+ad3hs{N%pYx$? zCp=UXT}m_^HMjVwqxXAd5B-VOr#Q;E^D=||({s`$THN&ul#4t7?()*#PkKV-3H{0=8Y7GLvlA@|}exY|7Y2h68!Rj21+ zxUX!c$v$V*6tn9hB&^ZOucpGwm@i#QXRt52q&Hub2*PwKZ(|bg>^#n>oc;)li$3Se z2ga4`KF0YedD&gdWHhyzcH7pp^t@@#mrRt1hpDQDi5_xRDUdpsnWu{H7BG&eSTkRw z$*Nyfmpt8xy46q?%hATxY$%%`Ta?>=qyC0zE1%2z1G5>t4sX6|_RP%pM;=nKv$<*P z#A=ZzyJg%6WR{!)WS~V@ye5WPh;6o8>O{N(>y8EFg(BK$#6{;AfK=hSU&rL}K(crk zkW6&GgSFNWzx3*HdAO)4+9X5merktho7yqldE+uTd8BsaX}5MmR@oBdjjLNTfjc`* z&CF`A=9l)HnolXJIjAafkI)8uQ$(&;kE?6AW?JCpzk;qqzvBl>?LzyVB6@FnZ?^w8&^zN0&}V~l-=5|M z*D3fv31(uao2KBoLO}W!IW1vlD@~3!!o}{1WCGJt-G@`dSA6Z$EmwATb>H|&EAuas z=B&)@Dc<=H+|0nqHx=n`tY(a@%msei8cxqW)SPlklYh2T#usYsCh279TTBZKSd6%M z9O9zO{sa|v$rXboFBTd4SU4IXW~Yr0#B(k7uU#wAn=K$vFJ`~aN%%-Ey&YH2PVAr2 zhV1gU`AJrJl4sG%DmyBmah82!5Hk`ozDY48Eka`uX}15l!r04OGE=vG>mY8|uXS41 zm2q^8Th~=zbt+QBcK+A5Rwu6s{3@5Je2CF2agIO9&t8yQv<&JZaA&JB$>|J>Su}U& z##-_=Q!D2+1lHZGA-{5b%wCC1z0Q=2!@#Ecrt0JgoO%9xQ|7}bia{q}mT)na@=LIh5*4if< zm*#~yk*WL&Ht7;DtsBd&5Y_Wu{37j84>?l-UeUrA>>`4ogR z0$mF&O;77ri1*1B+6_&?8&}+3#ZIneXdw4`wwxR)^l<%FA-Z9Rv}FN*#5$ih zp-pu8#J=yDJY;p*I2oNnKfF)I%h-O|w1|D8Z z0D#vLh*VoTwgb#*s>_jl?R&Rl-qI0JRA66JZCFet`6~@v(=)adW)AW13&4oPypV0q zoI}nF{K_2C$CaMd%%^nQG$R~%pU4PK%ND`n|0>o>H&U|8=TfWcN|HL<17TV7Q=`UY zoH_k9`;SIQt8bsS@=L5Q+P%gD*HuzH9%-w}&J1;aggLTk+VcPFb>H;dAdv(Q(>$i)-|{$Q{NK!yBXEe= zb8Fbf5ct*HP^-Ns+DD5tf|$}8mtirvT5`oDrsr5vO#jq3c5PmTseby)#!}Fdxlc~^ zd3h#|Fk?T3{x|(Kr{kj>jggbpd*r@pwx+Uz_@Q_9o?K%0HT#}uNeqauu@luZQnvVZ z-p9nJz%~5h3ZLz)WOpySpDQ_oDfx!(YuopAIowxtUK_aQ`|Ek*j;I!P$nSq{>Fu0v z7PzNp&AYQZ&z#lLIb~K`=fqhTBtISx{OaZs%tgDW=&eF;$LZ}5z1v-(H$P#4KlC*0 zLJ7lnB$s8UD0jOL`&a*$Jmu%Fj+c&$`kWkVa}VE#UrONXXTuM45#*|9?vZHvlg(>4 z8YOFOpB}M>Yiq6!-256`##k0aub3-9&qGci>W)|nkHIC;%RB*l^!yIFmb?4~HbUJP zxV;QpCmtkm`$cH*-uQIXhBu@38&T{m7*ztldd&F_7G51&1)VxYoP8CRgGKM1Tq4)W z&BQTV|AVf_yY?m7@W*{KUkjoVMh>{GCu+4CwIxR|nuQ}=%LcC6vj$`uKNP$TV`=jVQ% zvtteOf-4&1+(-{s!Zw?a*FJ0l8+NSl+P5Xw?R%=vf17C^g=f{iZknhPmJh^zZ(}@D zMazHewXfN5|Ep+~fjzyA8?h8yZ`^*8o`-R~mRH!xt@cKn9nsrUvu-I3d4u};hWhL~&=ImNf5CDE<0IMb}f$0CyD z@6;&2`o@anTfAX>YphJN(J_Lc(HKnriMJ}=s*+De?Xu|flAqFY+&Ph5&T7uw zEa|9~B}2Qiq`o5g8>Eerb<|$JUcbrz$o1e==Z|81{iDHiPk)SDa?}>@Dr#|y59H2z zy@=X3RMY-w!&j^SKi1v_KC0^K|4x_yK_Vww&{(ZTjW#w|W6?^C+8mgH8JPfHxYQf5 z_)siXX~;xW#DpQ>^f+o;Z*BF_wzk#U=TVi>P-&-?Px%sKmZ_GRt0*IIjBnxH9W(B(y<0Nolx2qxaqhABl!EwP{Unmdv1 z_8#K`q+xDJiRlAfJf&a=(^M(GIjQ11A@9C#zAhv3P3bE51N1iINOSP z#-cCcy@iE0EcBJ7gcdieOVBhS=t``Qgcd>Ja|v)aKuDxqg5{gRadGbfORsOh0(-?s zia~0%@Z*&7)MB0va9fn^W7grajcHq9ySU{ zul-d+MNkhiZ7rlN7N=NLly|WIFMm)$#;DxOuz+ginKiYhp~fe@B^q9~Q`gc61JO`T zLnqr#>D^G~UH-3W%hmxD;&3cvMZ8U^q?%#OrfAKhdTYKUmTaeot4cZ0brv)o7Oh%h z2HdfGAozl>MnlGuAeO4z9fkI$%%NXh2Fc?py5C-I(B+N#M&rFwkDMFBBcgYk0L%a6 zU(A}lYex4WTzjv9#d%y!0EIo*a+|JWkhAd56#_QvZ|nC*6p9cRp}vnqH8mGb8uS6INI_UB<=FQ`u~QwxPWnA@TAL7Vp4 zQL6de-yrS~QjLZl?xv4Yh5ZSW_^1Z>1fOD}$2P!f;|T#9EN98B zN|GQdn*LiIcvcirRNVh$(MZ!#`p%w5$T_3wn}ornewV&&Bu}V%)O%}FgOLr&RAL;A zan$cTebarywQy4D+r%vUw=0z%MAJ`d-vdmuOB;VLIs=!K`Y6Ok)C#Ue z0CKOB8!%%n)>z}-y1pBwE{!!7N@d3y1FN_Vu9;B6I&0M7n#qjQT)3wQS(;8>Fc_49 z{wj=2EPeBCM2T*yX#pGD>>O}rfMLem!}~+L z2N-5dJMUX~4=~J_Zr*qB4u-*LEq*nNW3A>)i>CI2qELs!we)e(kH92R@30Eiyg0aT zc!iJK`vz$AYKSMZR`Mis)m(Watnu6m=Rp@7*>t3l=t+pa*`GU`Rkh@t5i9iuV!a7- z{V9LrBdIxabxA?>&uZpWHXkK?&$3jbDvUL{R{{qm-x9}BR_7vMzeH{{^?;s57gUQR=v!dp zFRFZnY>Mp8@>JaV)U8b3BdNh>kNE(RCHDQ2!9qA=>)3S(Abf-WX$jcQ@HOYJ?i?Fc zQU8ZbAXurC%G#aV{i!ygI7sO9Pd)@N?(%QkY6@!Ws=;BS*7?`uB_&rXr=aO}iAZg? zztG>mKc4IF@yYAe-$6#z$Bd>^?*;xcm64C0Y^TTNb$W%mY{!0+Ehm>MP207wuuz1C z8kOlBTW;oH>}Z`k$cF3E(?+K!75W#NukTQW6VlVlI_nIZmY#G;YJQntXPO&VuFvkL zo3%+K;3gxrkcIqQz)=k}MN=!wG=5fYw6pjk+V{Wt4>K*n{5gwbN<7de26KqEmJ;73 z3@!6GjvF#2JbxZXX#ytdxV>CsrW#b-Bt*3Pq~tM}Rf|hCv+= zE^c7uN+ZB9atD@V#_G7|>AUgt*ttlA8-#nuR~g)k49Zh0{;s28?Bvc%Z~AA&7N+`g zCFQ;6FpqsO{Szx$+9!`eY(Y=0J77FTIg905z%y|T*g!urn2rUxIEm&!^ZA$;m(@fo z6K9K1CHc%4vdrXFl?4gd-K${BYfx(;{b<9FAXg~!l0FUgd1S(9xH2p)4fZ2y;n)LR zs>}YS|KMV6c0pp8zw|K!U$X@UlbM9sD%AK_&9!IND?Q>_ZtUfz_s;}qrPQ~utyB(P zOyc5zH~8~Fn#?w2K28_Mslm>%4RnKv>&@QpP0}Tsnfb32SSWt%=J884tEIAghoTvwioaH$}GjN@ZKRAJbgGn(5HKy@pY3CXK5 zbeR&Hvjzu8YtiRQE+{Q3NDN}ob(q$8m_|oEkq`s?*Z*jmmWI=KG{b;@fzJX)1~YjY zlx6ER#p+ICaOc?KVm{;<6vmyUn7nxEUSkoD*nsJRLVw!ZV)13Nn`~%Mok5-9!utSe zuDhTj-xP#Qj;8HEb&z6O14(Oz?x<^SHx*&3Zd2o? z9l(>$ldt(NE)%KzMLM=Dy(uLX-Z zGb`ZyGPpHx3B(o~Fg*YF1`LgUpi~Df7=HXHnD`EZdwPG7k8;q*F}Ia-ce=$b5g{6% z^B=8F0JipLm(V!&>Qa1Y+G*Fg7sH{0A=enY=qF#&{ zc*MF%#PI+GBfhEa#tVBfcG4q(`^6?Wd8TTzw^S=9Z;ajnyw`!{AQqY0Fn;aKw0dLp zUMb<11rXlK{a*GmojF6D**t??H=($og$YIPa-f+GtJ(A>*oyw~SxtAg#~ivre~~~O z9yDu2^w0SRp09?R)~n%hG^{#Olupi^&e^uPb!PE(>`cG+H-HNr*e`iaaUBjHC=qOY zXYp;k$d40y)2Js~O?=vWOO=wl2gtMLz_Z>vq@d><+RAF`8*NDIw$eZCZlk}`aQcgq z_8!`q)Dr2RSz9oRP)tt+wNIBkxanARcbb~#yL3yCU0(F{0!r3VD?J&1H;-hMTa7f% z=Jz~j;W9fRS(w3}79O(7EHf^TS}n8!(sCgg)DwV5w+1PVPtJV2cccQ|)=XZFCq(D8 z{fOsq&CDjJt-(IcciN`%q^%yVIm&5^ndBc7Ic?wL$s4->35?S=O3%p_nm`QWv{mqm zXRrH=03tQ-p8E8Ju2^d99kKK|XiAM;&Q9d@W;P;kkMnpvze;N1_bCBTxj*AO+Jj9e zdsgKgw3S6#R5O>8{>yuFSpBvAbKB_;e=%77PBsZ}Iot3!DSD>+)UmViK-clsAn!9S zi_4H=omlPf{F4^IkOP@D@j0DyZ5Db%lPNJ43>Pgs(+dxP{tBN6GPcBs7cIA$XHh6x z=7qmgK{gvAn@uuJM9U_oE-9qe*xB$o&Z4VWd;<+VlHSJIxXU%~R$k0%Bu3elNL0~M zH(BwTd$fm}4rQ;j@a}qh!yHEf?l9K)G}7CY!+<(RG&TF2H7YDTheF@~76ZOkZPB@` zHNqStYS~$QFmJ)m3KnCXIYhW&wMsu{eySA#oCBSo#qX$|)%*#kuPcm5<6~e`NpP5$ zh2HtF=D+VG8F!)mv=pt9D+Q~Ci4&451)qfpwv5QS3A4Qch`q)mAFFYT65sR26xX=L ziBr5WB{gnI;sj(MSxorFGiVAQ?0*K?Zhbbi?~L;sC?s9V<#*9L_U0g=jHW|8PaVS5 zR7Y?&*7{CcnC)oM_ffgAPD1r{;2gEcoZ;#Ph~A$jbsuflTsq+GWN~V=@FOM0{@gwG zm$H%Pzb(<4R?**ttcce9Or)A~>#Czyg&8uE)^_*kz$>uPr8t%Bz}(Q>q!2{_eU4E( zYffw$1Ez=XAkKh))_K|;lS=*QLyRw_d-zGP8u<6~ziU&3c%SWiYgB(TWk;)QTwR0n8T}O`zvb`5a(gi|nnV0UsG?0Ywk|a`x|~K3D~W|2 z#YJoWyFtmE-&%<}gr26$($3n5rqZ2*&|uoUVlTHV6QoG>2=68q%0~Y&Qb~E66iI{r zq}Sv%h}VUkWkr}HlyrIFu2O10MeTZXaBnn#cL}YC zi7#u^*9Qb`Pqb}Uv#%cpS9;fsl)f*^0lYK_i;PZY@Q?FPjnSJ|9rkuP)82KHZ|$Dt zT=7qLB~>8JCg3A!wQ)*>mz!Cxb9ubFh*a)C)<{GFoMoOOCSw;I#dA3WnG zR~7Si!HFt3kd*EG|5DtP`TQR=-b;Fs+BEH%Vxj1qXUuEZG(W&iVy0=^KleMPRkdi^ zH?7TbK7W~(-iXvb?<|@M&L!cWBs?|CnYW#%Qs>7iR z3K?fnX*je!BK4Eg1iR@GF7%FwZ??}y|EcABGr9;vxyo5Gm;w^PLGE)|){mZ7gVg;7 zbtB%tBHTgF*$eD$#IxaOjQKYC*U*qDlw2?x)~J3|hD)-harJZF0RfovPxS{$O!=Cg3_|) zv9UQHvARcu1t#Hxz7!xwLDb{}uZ!{Ie(; z_9o2deHQQB45Hn%*+11J8(9@Om)IOsoHqOAHbqF@P9+C zh=13EW8CurmnYOw9#Cqx)QhQS@wAUX_3t`ilRY98rOp58ulR?sZe^nu_5x_@5 z(#tjprH2t6LDD*#r2a|IT%&l@CJiTPb&&KslJeTQg;!kW&M0ag)o*`bCVRJ4$Qto5 zHF3~(_ekVvYV=~NpldLrsPQElx;tohg8dZg93yTHl17`Pr4_1|9`Vy4^(az#mHxU~ z`x>vw>-rS9hTyH(DsV+-`si*Q8%@tBpLH_;hM0WBG1LlUiAlwm9#K2z!wtS$nCK>N zM9^Xf8DY<8hLJipNPWN*9}x{+@8lJm3oh%;jalu-&JEv(^vGS$Hw1UBT2FM1gIcqw zmDTprMMCzrUi*V+C;hMP%A?->I-~2o?y$YSL&t(^X>)%EI)MrYxyf}TxujKP>`w?8Ptd7muGFJ+_p|i^B5s1SYM#@p4 zMGjO4;T|u5a6hxUbIfRVWI-<&Z@vEuVsS{?@e6HI+jIstI9gu&{nEz!(NfXJ{2w0# znc{7y%|s+tyQUdk-Yr4}#~@6CBy74CC55=xDB%1{5PTB4D&ZT^9|MqCmsIRmDeD@>KUsqedT0z+YHTQ7R_ zXClkcO~4)t9STF3wu(gKDSUK0I!N72ZOvK5&MiQTwF5nRl@}|*)Gvu2g7S>@Ir;yK2OJ%i-Lh%EZ7O#=Kba>d5uGlojLi6;cA z_ven+{OVf3P{AVdgnn7&K-P(p`C3W7mhxRwNT5wI;NsQ}w9-uJ{L`fWdBS0mGEnlz z{RJfx%24A@tyGH0-u?X@_cGI|YaoWNDJMH1nqRW1)v0Sn=VsfU3%cdnN4_j{T+X$6 z;FX;-!FcamkGfObdwnIJD)5h6E6wSrIUyXL07%aJV+pEpP~2OC8v}%*nS%kd!KSqJ z%-jj~k)AQt{8J4@b=7z z(`m1*{i^*X3d$aztJ5WjvUtNW|D<4%3|z>WOdh?y-p~9(pzayMJLMMJ>1I*;uAA(9 z2WSr6iU7+QLV*i8RHdawajtYOth^Tjt_ga}@a4oNIn%qLSm)!;!osFv1YgPaf!x~; zWDIyJ8@~$WP@!pWi&3L_Dc0IyZYm`mepEv!PLCPXZ#tRJ2;lGSslU`*YI<8ur{kd* z>=7-Y9J5vQM}%kxOy=bq4k@S)Jwx<^reVZHKuu#622iM(y~|V4&ej_!T5OeHjqn5= z59iTeN>CX`dqnzX_zxU_tEn!xW%t;o<6HK`n+|W;Gr7rW*@M;@s#t;6nVziHnVziH znVzI|<~o1ts(rEP;AmzQ_v*29$=9OEJw*$CuK}V`Vtz2&U10QmL}Zj@eM-yFY*fa3 zSR+CK&Ux@*an=$e766ZOJKh>FE9r-3C3lCKuMi;Cd9Tvcgm}8mTnl5?$B}hHjO$o$EA-BnEaY}) z{OasNZa1eF3)yZLlB?V&V_=ZKewN9kqk}>yrSJ)6W^*`%Q7tQtP5$D2OM6SS3f_%c0bDB^#w3iK zqJ{S`0WMF-$l84)Z6GNTZ;)%MhNcW%ZZ=`|>sSIUklW=>t$4#O;u&I$7{hr@*xSN3 zTW?sKaA;yvB*mFFk<0HPVQ0*c%qrfU2d6FwO>H8K1zF=7Y9|*v<0oTGIl0)oP5ohh zw}z(9C!xsZ7dc}l7wJ`sXwHMCkS&1hSq+rXKnY|FWlCI+i}P^}VIvj%7tM)|$ikCy zTyy&xpDF)Hb>4HCHF(N|l8}UNzsl&$Nl&H5`_Y*pyjq048GbC(F3%RbQ{%TpXQKI^ z>B_l~82>COC3z{t^@szb+g>BR*m%XTbr7!hxhFb*bRY^+W~9*3XrvC)(h%=d8TD!6NZp zCzK%x?f4f1j62o-JGZJJD&=cfput$Pls4jDiHcZ(OyDG)I9nIP{9#db$_@0tg>=jx zArV<>oVjtFWN4%fe&H|G)QutuKvf^Uk;$L}5>71~?Vs{DL--sk6(@4*y-fi{^!aWh z%|)eiVuSz8oxoM<@&nkukFIISWd9_nXK0pHMwTNcomA}i}d5$ebz z4g@FnxMdy-QRbajOGgWCxH@ZFG>x= zIJwB+qJQJ5#hg~#dxlaic{O}~+_bWn=KER+>eE=c_gtTTw6n}KILov+z_j>Iw#98d zkEsdu=%IdXWqTB6FaBTZZ|_}Tx-(i5ji2;&h3a3Y4@UmrJZipw{V)uu`;X_v-ZNCM zrmvpXnYxGf>;G5Qe-4giviq10VX3~>;ZlMG!I)bMXf4{x5fJxIs}P@6EPjmL0%&Qc zllQl#PAa+ixPPAc=RY`xC%s2XzSF%s$W*bx6^jRpWwG#-g(n@AN+`{fk z=7+8`EmD4Z)EoFjVYv;UVoWt-cn|^UE_=yM?g=$jg2&gq#91Kmoe1mszcMEWgNiB` z%8-Wz=vAdRR4dRnt|0hl2$#>p)v?y&k;^2GIr% zIyU#Apkw_TGi}hAC@tIA$e^+7{+`#^&-*uabhfd82oJtdl1=so#+V~n=a0rM-@q_0 ztar7uY~aZ}&f@tb=h1;xJYOHK_%4s%vX6DTWvM1CC|99*Q^j&P;ZM$9(G3m3}w z|K1l(7iq5C-*HF3;kG^)3^#||cyN}v2*zG~tY8t-ZMr_|=#E)v249KFnoe+#gpo3sG+78=Hp62GuM5%05b&83xAy*}Xgk;YmDwbM{g%QQ{!F6b(*{cxTO zFBjTf^$JZios#^tsPVk4&o$l8!tnm4)n3h_!-~juM{@Pv+U<=)RA+l)b8nHiqv}H= zguJ%0@s}Wq@3K0>Hs?sDr~R{T*YfnpGJvdYoAR>0YqKsROHpO6B>X}&6`8C{Bk7w= zTct&QTKXm>wxlq!>-{5~O4Kn_M#-7fP;(&zEg~mxzahw|j(G2dy*KJZZ=UI$)D1!D zES84F7;iy0~5w=X= z#24p_90iP@vY-b3n9V92xiMHVe<_VXRkX98L<|sl3Juz5^0B(%OoXu?da+3q^Eb0K zG$Uu5N?A;f)zr?`(eNDu64v-FF9WFn4Fzybmk@Kg-sccYh^1@KlVK&N2n{P1?xLUo`hH<@rr&h)(OY`BHzv!#YbF`{` z=W*~wZ&x(5GwKcBA+4!1P-WgxjLbZQfdm4C;*}s8+q2MRJAkQ@9sWstDoBf`PTCPX z;+}s;F%tWg`c&iZ;H?#X1{HU``vta+>AYDKGyqBWlImhA8Rc)Vbbm2HYqVxsLbGN% z9s^UfVhyfT$e}FjC#l?X<0eGS`;ys-utAWh2!|#A2tg4_;2=ADsK#IaoH=?oYUswE z>nVurQoc7zo2xATm;k}{c^|?1=}$FK0v`&MR%i)y;D?m&YB$6PXFk;}0gg zxB$Zj$Sb-Y%6K+%PYA0)>dl$y;WZ);#Vd>-2!;e>%1v4| zX}~QsGo`U8EUrk6K?q~tQ8pL?=tJFQ6H=EAp>I>;R(~KEQuWQs&yB~ZGt^Z3-!x+) zgE7%Kb=;`5aA}L>3&EZIHzxp#P!rvq{0W&H*|ar zlhB#coCWPGv5x=4xGG77om`LmzWRX0{Njv74MnYliRCtKp7Ku*_}wWA@OUm)A;!7= zbZD9Pcf+QPLM0@!Ly^N@bW_#!-tMqYl|BB*g@$7&mhG3^kbvlQfK2v7i$sp?Kx-$H z7=mfofSz;6j(g~RP3aCaci3H2Q}$Jb;st=Ddms*Xfb zZK8quwc&5LHrv3dG+->kr*xURCsH?gZP$KI+i3gc&PW%u3Yb=Z)eW6W9`!wH$dUPO z(vzQ{OY;H`;q;hKDDz`Lk-N<6-DH!S0zwU1}Nwln{UMA@+|H=HM?Iiun|1(M9 zn*VsVso9GlSVt(ZIk|gSK&pTH~s-s0`17kqRK!J0WY$>Ch~IPDYsLXngzWp zL93G=4-m0rubD~r4p;pQ#ZF<*$~WJf+Uvs6kt!7ebSaOPCB z_HfqOS#}rXp*{|!YE+B8x3R)keR_*IT9ce8E$q$B$R_`>8#ROdb{4MA0>dl(yi+z1 zYZ@I(nTauJb(|@N>b#oj@<`5n=x)WRXGku7>2nfsrDl|PiwB5DNx3E7?Y1ALOln3k z{I~?)Y-uU{00z#jtFuz%WM6zgAs`ck#@ugOhla?peHne{`Mfg%PtGLuL>4RPsa(2C zM7^w7=zyE789477;s)k21)pYt$bT$tPQ~p^k)?Lzcla($p3gnIqqsq3%30CC?DuA z_DJ*Aex5IL<5^$mSM%xQxMDm4$k8zQ?9}=J{vjs0WB~3hu$W2i+0R)DdMQZm=3yrf zp^oJ45@%^IkJ(yNxg4zz`L8x(STU}YpjdQi5nbvrshCZH6J-Aq^b3K4X6sri1JVQ@^DbpxLhAOF7Ra$=Sw%xyWa0`LwiwC^EWzeMTZab zs9JioHQz8D=#`(<2G%5Rc3<9=SjkG4MvEX7&mGsi*sr$y|A3~%EDF9mnWLo z%$YUG&o7==YI}h$(K}a)n$(T$%zTJ zpY`d9mHp{coPTEmr{DN{IjlY%!z;lvZ&$5HFJh9+uHBUT5q?+8`Q6Rc#>I^r?T7^j zW?h1VAn!cLryoVx=L;(%49U*;4gcrkPFOh6-a&xA?zHlE(Sj`vkjWU2tQm=(m__+)nvX=*mt& zcB=X3Nc<{?68LY=H`^_LQsBfMN?nBv3r7lA=f4Sa2Gi)b0?Uxu3TQR#S==9RO|#KI zjp^hg0WoJn2XR@9mxQvox6uNVR49LM;0Oh3)h>k{wzWT3N57;tG053ncu1FsO51L> z|He;bzbkHWrH1JN7_xCkfSJ1z?_r1{RXYqN2yZ<`|w( z^ARvPWi0=_OQW?Ln z&Dx;in}z+q7EVv%3v968KjN1uiB~md2eip#2WzMSeUky1 zwKLF_UBI?FXiDQ_UZ)J7~@SO`Cv)FP)BZKIsISl3Ro8= zDa4hXo#TulQ14~bKL5!a$+fZfToTUYEVcJ8-p1asBy`Z*-jjK#rfBa-9s zRO8Z;S^P3X@a9y=Dfn8-M{9lK&U!$W(3B9U9;}ND@Rxkr#Fwh| zo8U+p=~~i33FXUG%iXJH{fXH}2go3!17mwOdRZ-^p*|pKz~y=S14z z^bI}dKSDy_nyLgMUG@O}%}Pr>sONZ%v8OUFkk86*=uX>^$XWMsT4OODC{xc+{abt^ z?;7q4+PdCzaTeP%1}loF84uwxAFmp6PZYycF`gbSYO`QsDqdP_i=i@EA-z}$@?y#M z0rer6$arDt#8mizQg`_;3?8f?YM+MDKESXWpZ?XrhQi@(VFv}0t&fq-!YPFnIpGL9 zF*3vn-LApWMSaO{0BT|Bd0bIPN8+_R9up_+MAqY(F+HXuT)0d#s>5!wzzT}i5FjE& z4B04xA6#R0@qRR7?yH1)rvI4f7hZi=3xn{b zKD&vP`y=I=gCaw7MhJuGKxlQ#k3iS;-N`*16aPh?H>JAulNLUmI9L@6v(4T{v*b~f zX)JbkwwL0B4ctp?w8F6!$&SyX>64$j9|ots+YFq*8$+?;hpy9+`F^-W*L_SbE zp}hG-5mTG|doQC`wY#00?q?+G6!@zYsel>Bk4WQd1jT^TDhoyw_BvGY*Hl!%JaZx) zZ$>n(*wlK&v}8sP#>i~ZjI^qyYrCn4(B416oFjwW$Ly(8-wnwmU=D}6ERYFB_`k&X zM|HnN-PSWi3nUKHm)~boo0?Vi-5~@n6Y3Un1w5gSMJyseady9{_dl4Eo%f}tV{-60 z1?}8+fBK~o3RRnxY^!A=d(TMj;hg_BH-LtknVb!w=$%th5AF9uzU)n?K*r*-c0`Ae`p&{{E>!xehVZh*I$en%@7A) zTd%to>^pF`IJR8p&M!??&%JbwUM5kQGRL-hxzJ{%Y*yW}ysViv>vFP)&R0#%U*^{g z+w4iU=0*8g$Js1JFQHa#ext)|)*&`)J6+9nnsno&{g>9;CtG+S3qqVT%or zbeSXP4yxF0xv2=ir2g^&jAGwJYt4QQFV+|La7Lzzpbj!kcX8pNP8jjISLhX|7-zo} z)JMF?Wa%#TPbMKU{fo&Q+L4AYCPSS>W~Yh+!#+a>N#GHc;j1}RAkFJIymA;Npogpy zT~03)dAQ-$_AnX0edLe=6IlSgFlm4G_;(-!MnWl$4AnVpuY=e`(b~0%EAhFx{&!qw z=k0e)xgZpga{#0T{$-aicZfzUo7IT>nwRYv(T}ZqA9km0JSgxc>WIafKpNTv1P=Go@EIkl9F289;!+#a=sofg~papwS{I_qWd%{Hlw{pziQ) zNUB82l`WGbOIpb8OfC+ddPiltyp1*=3yNc+X_M920+P$9kC~26(^sxci)uYJ zv*7hv$(0&+QRi5>VJ%2B+97w2ovlI1A5G`jIz2Mi_=ADq;J^u|l27x{$;q#uq^@;T zCiTD;^Zso1-P>;7#Tuw)XHuN0t+Sj(&;<1kN-(A<-hW8z2{@K2|&x#iTLIi;EA zM(c#guHCOqbJ;qQ9yrs`az|#5&JhYe_zf!Ie{?RP_&`0ArG(UlDzoz-nv|yRxFR>2 zNgp~FbrFy<08m{a7!IzFS>vhBh?8`o&VBmL%mntnxa?Q7)-C2{eNW=+$;U*o6v}gB zYd25PL6Im|^LIMFPzMBC5RFwTS9Qar#f zwY92DU*{U=TzX28KN`_N)Vsy>8Ga_7x}wrss`gUjtG%TfYij&St~V$}$gFWiDJ121 z%u0>J&;f^8<4XME3eHYZzgHcd*ZSGCjtQl~k^Xb=<(!i@QAm};@QmNgE8A?#>a?@v zC2ynr3{!rP?2PZB8&sQjEN!YBlY5UQ*TM<@UZ@eK=cb>%ICow(YHQW_rd?MqNR6)y zrw(F9t~#9fX4LCay+YcP{IS-4>0{nC9>Om-9~A^kqv${KiTKI5k{K#->RuPMH9eol)J4v;(eflG{8NK9P z3K((VG>b4Z&~1tx~YuI3{{t zeyHxgoe%=WI8vI-w+XHo&&j>2HI1V+jdi*@k!-A-7!k<(&|{V&f4#Ro^)sQdu(uU+ zD~)#nPLl|#kuW!<+$&uM#?>iX(DVaYG1t_UHrL*aU%66w54d!_xk>d}R3cn^ZgJ7P zO7a@q3~m&q-CkEltj$uB7Ot%;ZCq>nhR*701~@{zon}nN4pB2Ox~O})e1g$V0Ro>)=DI6~L0*(Ws-W~Vn)a!tA3Uev z_^Y5V9n8-JRcl&itPW-^_nr@6(n&u?N>1h8n4(mxj%#l~s#P=REgD@84bsi4Tv}K` zkhwpUOc4WOUPY+0<9L5|yV1Y%flieyou_{`-G& z)4th%2JshrATw06b!WvEI)|TG6GdFq*K=fcF~r%jSI8Fg+oZgl$|s) zaof7XwOxq=JnL^UV3ko;%4J|+aj8vp2DW@=#QiO(b%kTDy`zZ$MV#s zr_MIfQ%AlxgeQ?Ntse}={dHe%mZY)e41J|8dFdhwyH#CH$Ex*%TYL7luq6fo5-0W^ zIxF>r`O1O0?-gfT)PC0Zbs$PM@B_qWHFt^XP8=BRY}13C4NxW=xPT1lsQtQsQ zw_SZ@BH?_ykc>x*w%aEz{w3GiKOoOd* zNne$9RvFop%~o{I+r~Th0sb|ryI5`W(K8aK@ln3GhMCCTMME#z7WgO%DVzDodRw1P z1g)G*E4^;t=SO5`(mBsot}~w>-Pgoc=e)n0%4z}~Oe1eYCBV$Mv*;;_)#le+cvw>+ zZ(5sYW#@Bodh&3MxAcZKJvb+HG}n1%kuqJi+Y^JGZ*RJKK-2NL`6$|VKC&}m`c>{X zA%4q#z42G0{vP%W_{l8!rq#?&w(aO0eDfBwa?T0QJ4@~)FXq)lRR0}Ik5XuArpq~R z>jzNL+da4V1LylA9y;jo0=+|Sm*^Mjx{UPg6t>BQyuE0qIWN&IGG)oy!vD{F;9T?) zQQ=oRCk(uSqq*6!a4#g<^M;o1ymtT6pA9M?hIxC+^u0$cPUPqGI zD0j>Xv44)u{WXu-+)tHTF{^FeRil;{v?#sHw0S5yfly(!n@u3S|H$qOVVDBOG%IDW zq-Ri^i{opZRL(Mk0cW|8gmVd3QX&3yRAe{-?%WgYTQ(KY3#}W~m3(c$s4h2kgDL4n z4#R8qD1uWLjp|UFs-C=Y9rV;R1bU<{bnenLeAR3E@5xnXRsGSY|@`pn> zGhSS=gKAk?>?4LppGAwsW}9)}+g}-*j=yf--pnI=?XSaTIql{wYBRu2%u>Gy{5Yd0!va zAi&}*+{OaXhsr+r73Qo2U@5#_UIz*nwV1kO$DepoFEH6y$s@)c z`~Q(&tT+}J2U)V*XfRj-&npEj3!q1^1Eg#ImWwT|nOWU(T3JD2R}_z{(a;9}dNi6e zU#7c3UoWA_V7?Bqef=hVm3vJT4;rwCn@0i7+oAJt=%AV5lD#Q;El1Uu*vvS6$!8~G zGjFJ9VH}!KoxM~jQHB0Ay>fLL_a0p1<~-UqM2BS3!b`Dx{o;z< zrr8@z1IA%3lt|#yt{AzU#@9`e>{>jIoGln%4cV;4c!(SCR!KtGzeihqiPjo%&Ff3S zrh+%|=atNTx&PcMmBI&VzPb9%iA|(ID!YlXZ!61`;G`3}yLwIo3C>t?dWu zLywqlxiDjp#Q%YnGqy+Unyk^Uv-Bv=Rd=V|1Vv5IJ)S)~n3WrKbeII4#7x?a!*eAQ z`@7Bw3vL|VI53im-#8rG=Gv*njlY#Fl#2%lY&SKC=;3_0$oX5_er7uVAcKHUNh%H3 zv}q=s#p^V!$s3hXG-_*&nIC6KE2&`s6nkL&HJZ?*;oA6dvlAD~`GHMg)^wt=4dRonxP7bsdH!-@Z>Dsz}Dc(vvXXjh#Y@3g=n>uIWyUJm|cFWDg{pDr~Y&h z_4`sb_+e5&sh|DXR4rCjZ-c2Fqjm&rB&Dgt(~_k*i;pBtqcGw6*4a9eN16&d0OWda ziEX3H^`?~igMJ`A*A4#Rj294#cpZ_NdZbLV;ID4f=ta51N!iF1UeS^u;CTegz{Zzj ziWs%Ye;DB@A8*^m7&%V%%W4|xDERmX+C%axx}01|{|$0PF4fMvQyIvokmHE#m*l5K zzi3>ae-%^F`jnU#Id+kzA{uz5g^6))^4ii+jn*Z~YOhzVL@7bUYNO#q zajl7U(Ih*xd;cr%u>GNWv(-&aEyZ2LR<*;#uWBAEeNo^O3x^m6u<#7Y`Q-(PBQY@u zctZmTnRVM{ATKwLL2wJ-OL0cCDWMqfwN=`OD+01QthqhTnl@j*I)XA>ePpf zAAUDAz#9HK6v?rQ%k8Ggd?+N4e3rWREK5WR!l)X(*>Gg8f!E6)3w z3Oe=@7ID#;yPfODlM+wgB!+WRy5y(v^j#8b-wfuHoZ7A3e(ir?p(jZ;oxOH{x3g8x zR4V8_lo?fesjd#s-50r3Xjj^GAEOhS zSshERF2W5Ow#4rhI;qb^#aFw@tBVW(v0v;)fp0YNSKxWYLoUjy1V?Je6luRi%CG^A zVU+HA=MFCOcVRn_S-XP5Ok@IE+qIub69g9}LdV&21mn}}IRcw8xwgw$v}un{?6g5Q z2nHPg!Wm`*$5SRvc(R~p$zBygo<$xz;nY8&CN?ujJKm=4L_4Bq5^4TnHsSY5I3p-j zY}3wC+P6rfkr8@6+&-_nkLLq|>>_h^R@ss>NDX${j%@N zUq|-HzLFSeSvTdMjaJ=Gf1vFR?lrPG=g^jNdI5S){)hW=zHdg*=|5w0Ztu%E;lDM4 zPJbCWUonFJYyYoU1q57en*GB3W&5>Zl{{nlYA*}$4v)}qS$lVy^P9nG89FOfQoBFP8={G^yqbWNp zdClCS1on#A2Ahtvg%$*bw6ptin@_O07X`W9%1y2mL0n+`Gz$g*fX{=0em5v5Eu`gQ zw`R4Cott0qxnpgE`v(PYvJI9|v|oe!2W$P$YwRriuwS;~4R*Pl7{Afer;szUi+Iaf(_BKfT zn)^jaIK~UE*Qx+MHLd0RP5da?z8@x7CW&2Q!`i$)&|iNZbH@fflIc~Ve?JLq*3<*0 zNa_LA?y2G^Ld$_iS?HVCJmD$~drUMO$QlCUV3ycD&_AUW!sst5h%lQ}69tHCz*0#{ zhxl=QEp>TmIMrP28nuCN>bsreWQEKDcWtR6ZjO9H>j+bQ_wOVI*FE7Dde}5OI&+XA z$UF_v%?$5MU0#N&h&uJI?Ng0;OW;1yjKvHYdGo-O>9POH_w87Z$&U32B?KcyhlQ5( z5ALFtBYL0ldV4hDj(;(z-5M%4)xr4vF)a{9*l^<`>B??zr5(KruGAdL+XvG9Nx>Av z%r~!K3a%{1VzP6*oEjB$4%T1S`*CSFUGZP)1wQ}%yMC(~7*EZ1B+MI`=mCC;w7>+F zxVHGy-8~(!OI=q=x33f2qe8`Ygl+_9CqFA{oRg01?eGU=+NHpdE|DxE$KT+?bdiZC zdVV|NkwRX7dRZ~q=da^6hNsfY7u{Q;cV)YBqWaU9OZi6Ys&0OQVsPOdM0Y|j>!EP% z#(5*jRh!-#w@M!Ps05Q7V{(2jf-7i?7_xXXdV`p!@$~)!lj2UN!MNcvz z1InsqL0RSVLHV+UfU+rQQ|$+1SevAN!ewftH02hVBR!nLm+4id8Pm92aj@Fjm;7nS z->sZj!F?2_#(DQqCZNZ5t5M^hI#nP!zCn9Zw^A>m=@4kGe$R}hM*?nb2`;3$$JyW) zpUn{8CA3ai(-`cC&*2^>M=#0L7+M;59aJyBg!Sw~43}vhDjL;V<0rfH%YA{wwl85voN- zoqp(3iNDCEn*^%^V$*+Q(+!V`sgGdFlt0_1n*@%zT>7at-6U9;Rr#;^N7-}(lzd+0 zJ%di%P!236pa7(EBCRH((u96Wo47-Gn&8KHu)fOnHu zO)qHrZp=H_^~UdxhStkR)*;?iMc(&|y-NdKa?mG52}XH9aky&a0ccL#!4B#@HWqSX z9x4;R6b~Hsdc)o?AL1!e)$2X>2oK)S)tcsnf2aOJTt8!K5J~-JKjN&stvJiZ-=Woy@`9>(AF{Oq9Y@DI^%}RXDXxFmJnVF?zmEshRj$8>UvKK( zh}8a8#b!PgoB2`<7gG2Y4sDM!ynE<5U(g^B0e`|Vic!C8d7ZXxN^ARjViLfeI5S-P zb|Mn4{UA~2*7hc9rT?ZJUF?cN)|r3bi^9e&eSu^k4B-t2$f+@HB-_u$ zqD-`awVM(}HQ#PJIL?LWR&Q9GTU3OrVA%owcjwEh&yLoNFMZl_d7mvuV9 z@=r`xnAUGLNEL;M&He{ha@vgB8w+7uf7(*xt@rhPMlK7^N^j!=@ZTKsw$`Py}dbP8=Ob`>LfJ!%gXkT=vmWW_^6-^D30F3QQDM zL)v?vP;34P6f7Z7Z7kVd7p|QFOFxSBwo}AKf1M5|&=l%u%otWe5pM(P2}Wz_S9b?Y zvaWfafU#i;H{|7iD?k4(oBu#=ilg3B#yK2|GrctK^#s94qp8^t0CPcq^LNBk4SqZ| zw_93k7!So$^S3+4&FylIo4-8fjl=KTBNZ)-*_(@sT(vj545`EAr5$gD{F}cgc}@Bj zGSRC&>Jh!&s*U1I%b1J7ol>LQ?X3bj-JQmlM6pqV|daQPtuZ366U+Lt4Y`n=?gPMVq}4e)pj~@@PWO-3CnL+dVHZe zZfbOdoj5mn&o`gsbRSpkEA3dD+3^eCQq%P*;nj^-gj(X)zFwpeA4RVK? zEnH_hEnU#{Rg)07G6NGuYVR^zbusO(G`F1HP3z>MPukLxkx#6kBCm)a=Xp*#08S1!pj2F^216sE(KEy!Yh|4+~d4A|<^ ziLprB`01Efn0$MH&G9p}N`y+CIG``_ZIg%tj)|e5*mjdb zaDs_Jlm1##+~gp9Zmb=+GgR1Ak3EE2GsszVA+RLYry6Gq1X}05@0OJkcH5RZUS~!& zg>G3nk|e*CM(|pxC@n>eFQ|p%(95H)8A~w5eFL)VqWRqizjuhD7R=40PvSf@?BHb*U&#gfx0XbvIE0rsuG%ztMxULl3E7+7{%3z1Vmp@9zBp zZkrQAX8LmDl6@KvJ)>IFvduT0Bz`J?zj@R4T7#30*N0Lxbg=&|6;7^3;t_n~C8skJN>P?QBg@n!uzEw8_Q9XSlWOi)I@j)<-7-x2G%-|ptG z=!l&@D_@DjvIQaOvhm>?yjGoP@$|)WquyhcJWBERQtJbVAW7_*Xe@-U9%N*qqbHBr z8uOkuj9A8h;kRt7u_b>Kn9y`x?OJC^123F^sd@OVco){}9`f|hO@3bDEGh&-SICUW z0*6S)14m~vEB2#=obupoYqwuOinT%`iLEUGpx=8+fD`KX3%37@O0foU>H48r`#I|p z-WKt0F&>lr2Pr8Ms*8r==`0I!u7GS!iQ%-}?E*n}V60?Rk1fV$Z_g7~T`8Cj8AdgZ_!$WjDoXUo!xYJ4ol20|{ajg50 z1MF|&$H+x}c4L?05gBduZn=)}5~Tn*1{gnyHcv)Py^gRh{@X4i0L7fbB}AS7G;cVU z;cQv4Kv$wq$5RXIFrA3H>1l=jE94sDCFcy|BCc4*QJ^_0OgDMOeD<`^T|=<3!5g!q z-a_VKvtNA@n;<>)^B^ldX@LI?C85!Q>Q;7x??+P1yATeWiS6XZ`MpTZwWZBS>Q}k%c%^j}~&U6jk;y(|!8dY4Z^XoEe+}a3avh8}W_&1+O zDMOIeq9P}=Mu?KhgzLj2t99}}16w9kHu8Kz=kRxMs0Wch!1pfI_r$%Qb+bqqON6}- zj2FacX@E&D-L4}icIhS^^%Fujd`(2s7sDCgi?r2vGVoq;ZeN{TJt(xjc1E=MbZ#!{ zAl2e^c6E-`yZ>$8SekEMiO4&3WnFq|p$Xx)(T|V;)YKvvuS?B{#=Y@%ifueyaeG*e za!tQWN4Z0QO5SMP25$DRtETbV)pgD-_zg6Z5lqXMdBWT0{LRisAEcQ%5pH23dW;v8 zo>n4kgGlU*)H%1Wja%m+^_RY-S&4@p)9huifn91y$el$+g-!e6e6uJoaz}dMz!m4@ z9TgiwyZwK%l<8?XNSZLf-=@Vy*#V1M5ViojgA^9tp3$N0!8c6i@FM?r%DvT|c@qk~ zP7eMmYHm#W1KF&=tmU-r36NF_$>sjb9|?v6?`LyGp%C`qS|}>HL9@`4N3H1m$28c| zgIUnAvk~+BKywbSh=L@X>M<8F&*<#zEKvNCy8Ky~J4D-djJ7R4&rUp zIv`_BlOSVKU1|~z$_sU@Rw=8!=Y85Xz(L4IHtO^h@{SbsX4GX5;0^xIfQG!?$(#y4 zT<@SLvH$Ee`ad=)c=97mV32g4O@efvFeo^q$J-=!^@L!z`X`ZO-4&+C?P4bJ?KlBW zj0eq-;$EBi6`Wr6p}9aAoP_g7Ig(Kw%&4sJivgW?x&d`AunZ_03+m16?*BPna{xFy zw{&<&8;!pav&p|2nsfI}*+r7`I*d;Y<$nM5%$c#|=3d}^DbhmEKt;ElR)w-@I6coI zQa6i8eQq; zd;wp+`)$r(b`(U?q#}rV7>M48QWutZCAdh>s_5Pz()T#<$0v0%X zrpfI6N_HvpZ&>KoZ$#5tl|J2WxL%Kz7P=01l7_5ZBPHEZMn_~K_9HKIQ7;f4kQ~D9 z{#T?;3*oex6ld9Zm^7SQi=<-&bMfU})jLapZHO8t#F8VQmv&P=`FNq|GeS(`loZvW zxjaLK@(|n<{;U{GNmoKIMnmscAqll#Hr-Q4tK|ihZeeKhEc--gJ==^QIl!<4Cx_^V z2u@6mQb$;7)PIasP-k3AgS!WYHz%0&+a;nlV)5Q9`3R7 zGY3ww2)h-v`VHHvWlrA^#86t6dIqLAqSW4m|66;AXkdB8N~l@2`AY$l7*d7cdi6`% z3|J@gqxKC3{i^ZP{_w-I(v}VWX|{1Y4d9V|r@{C;GW?ji6wFa=VejlBC?L1>6ZRR< z`kwnlL5q%u7db}PM4WN&5eCQmfcrD=eMD8O(x*kfMnTA}hT5y5&GqJ(c){Nv7D_nj z+~f0C#~|%o3dFpN>Q*Goh9}JTB^9#+ zJU`=G`<}w}q##SkrJI-4-WptF*^l%ZUc`JW!A zGw3;*EEzgAOC!ETB1<;R^>C)Vu&9|kJwnMU-YGYVLM*@^MYt>nV*eal4v>_IHU|G0N1rQ#bD-wTWJoQ5;_#Z;z zpIcGre?oRXB;Yt28h<<`t_x`VD-9&%kq$b-8${&H_T!a0v-(kHHA?bsGdJ{ol*G}b z#=J*$eNSgt%z>`=PNe1!D%M<;<6pgl0s@Yy+@T4}aMU%Ii^~6R6>WS)bU;0-KbFup z!4>{^3L45a8z`a^1U)*4 z#aAv+;F`&r1@<@nwrV%I5kY^vA{f)s1){0!M4*KLKa*U$U(Sn7KH<4itQN3j3D3KD zGgQv-%l9Qb|3_KvJ%7?b#g$mXvu;JxzR=^B9lI~#If#@zG_s5Jv~=hoV&mbc!Qk(X z*9W+ugpSwQZ~n6sF*OM81mao4YlO=|(8hl3xKjU-?~5+#PcgQjS!pODGeH5_n0L=< z7QY`g{{?!{99niqY9D6hWyX!hN;zk-BFTt%i#hzoH4>`eu_5FHypc2hMez4aa4ur| zz8A24Q@&$oxzg;|Q+PA8y!O)mv%JZVE33Wtlz{OwLxiS)RzOjS_!XLcGwe;qE^MRk z9Tf~ZM<#<6jG6lvg{=lYum$}Rd0~KtP{Fhu9cOkuZuu-jw_*lsY!@lux+2~(5kDed zY!n1>&l|$TK66_?1CbW!RLiVMpY&sdtcsbllQ<{rvW>T>epH!ThRE&3qnn@+Rl!R-pC{0Zw*4;+l zc!D>2QWsh=MG9-1iu{zF${}$H28OAVP{V?-%;KM{7hk(y1Aj?h%2Wyla}tTTl|Wd* z#6EI}ut%J< zO$QJhonZiAoWwd$w@gXupXv;ftUlq5oBAHW(?61dpeK+=pnWFlJ@DE31;iDDw(vfP zc{dbFC=*88MFu4TmG->Z5hXkz)SjL@u=dJm^8|yqp7-yB3l~_NWWZvf;mHAvyDsUE zxHkH~P*%I`vbw7HntA8M^cC{j++RSk1E}ba3SJ>4D^=Lbd`YT+Y~stL3Nzo_SE_I# zeacA{icEL#ACq@RY=U*Z;2Zm*OV&ixPPWf>T62H*fyXbBZ-I}cQGXY@^m^jna!s-h z29!F8Zi||Ul!;=kow9BsKG^pPoW*}oikGNcaS@Z^t+uEtaGW2*EQ@SlA|853ZD9&& zC5nV}!)9@JdiEgyuZJ^rQ*!dMi39xKkpdloybS7M6OzWClfVgz381&hkm9W*K)0zI zx|X%z?9U-J=1qa*va(eX%%AxuA4Y4nor%-16>6aGlI~>)z!5EVYhQF0L4Wos6Xn5a zKMW_`t5=Pv?2EG|-5(|lIgD=oW8T8DaC-Leap{q>!?l-2o2OVx_c{L?Vz&Ul(~Jxz z12bWT*;6k5qA>da$_fIlcqk{)7PTvh_T>S!D}Ulq7$7_8?0-Y;`ZECxH*ZQ2mrW+g zSvGYpSRu=(oUT$RI+6qn#H1AX-?B+MVYtCENe7!G$=QYlDFbaG$=MDJl0IOHy{Xtl zPkly?;s#T!iIji~^&c}S^GP`>DDy{B=#}Ji#|FpVEhHI<`|3&~ zabH;4d^Y0uGEOwR@ZP~4uMN(uvlqUz)Z{du`dP3z*QC5dO7_?sLy9>w3EC=h{qoYr z|LHH3Uqi$-|IdDiw5 zBv%HI8HD0L3UdSP`%{)?h1}9+VP}&+l77j$JUw-9YCIf%JC@_A@x|eqNJ(NC$8K5F zD-NexC$s6YI#Hnia0=4H1X8LNEr!Ty+yJTHSpl{`{^w#Uj9bp98wBVkI@yV)6TQXB z(13sh3eE^HSe_r|I^)+Ui@*Z>m7QPoKCImuCqT(Os8Q||80pR#*^xdCPo_=8tg6*O z5YzAGaD#u!*K;?A6YSOQF{D_;4a8(OOQ{m41slT#UX*UxafMsyC z`)qb?%}_fBVUxkG&2=a{yng(SqFNbAF92t-F`fXtw}Jqsl|xu&IoFX z74WF$8k zoBg@Bnf@PQ`@aYi65K_o{|DQ`19Mw_ms~6_8d|drzBYvX4o`s}0=Cj5>eQ2moh_5HR=H z*-f;;|JT9$5(3YWl4BSP{k6QVn5;&*r{FMq*nfnSeb4q5TF>!+)j9rewB~^s`BM9f z-1)vQ(@Y##X|H~t!)XU1YOF28>C;;L62773NS}jvo~R@{{HuqXRZ$?S6Y-US;{PUM zLXxSlknfTS;hR9S8K&MCkeo?UpJgW-?Td?bQ6H14_#q zG}NymiCE~Ba<1BRAg!HBYep!z(a*peQ*dOq%A^v1Z;45&&L!>d_bACbXwXBY}^gMR|!AyiMTZ*I}< zSC(Da4gPS60or>{H-V?V)5kBv)lAp1j(Y!u?3jmNFKqI`P==l9L|}DMdE@pR>HzKc z*L=#MTJxa(OV!9ATI+!n_@n=95*?z6uLF4hhqDof8XEt`~7_%hAmc5 zj?>!<`j>(a^3N4%oR=90%}MR&Y6svCjQ)V^YN1kwHRB^xO&q_qpo!1DzX@x@W(;F8 zCH0!2$eXPW!~C*9CXTt2*Kn;22M+>fsgFM#ri6C^DRF0&xc~zAFo)UY{kY74=RM>n zovKOiTDUi%Lm3rnHg`v+d~>8Fw7BiI9MVFvYC8R2qeUWu4tURJmDHLh5}66y5Y8Uf z>;$~krkL6tEZFSSp)<#ZS~!r2dIYJ#W`&g;_-N}ovo?ZCFuFEuZvF<=qkz6K>yo}H z#l7SaV9LMSGoF#QtjJBJu*J*pS!~IN8DjcaXt6?UJd@AYT5R?6?HV0bOzbecN9evl+s{#%#(^VKUWqlnA#2Z}vAlCfc^bc)FYys=_p8l! z`X^7y)+|ddAuv1{bqxcbi)Y4d^k(RjFgDWLOtwCso|zgXf8GzQ;7eawMo9BrJ2ecP z8FLTHw4cEM4q)Ow16$YT2doKsO3YHH_GwOI#E+o7z^K6Kq->GV@zQR4sakj)8{U zmT-2T>0B%;6OdX zl8+jP=G<^R$)$pw{c=dd{thknhwK&gOS8B}gMKWtS7ck~FIebqv7)f72T&#~i&h@8 zR=seXgK=95x7YQlAc`Ane}2E}UQT~rz8R-ol|1~Mj`g3#LkYxBzYc>4Sfl?lJbXqe za{jrEh4O{%=fOpha6pxmb17y0oblucy|7T)BMXFfC2t#C&Kw#O{tD-J378Ao5c?uO z9Pv_mWe}<$Vhik!kFatyFnBF!&Rr*8OgrVC_Z1shAAqyRTQ|Z)0;(FlX7nkh_Ts|Y zSD#oL=q?^W#kmg;LBLVig;IrZ)fmuod{~#?8iz2jSP01bqK_^Awpt)3R(P1V(bR%_ z54dz}36GRj@@IM^~aFxi#Gxh#YL?Uip5bHBZtT{C@(IIN!eeNAsmu zZ_qRcAh%bXKi(ZACP83eX>KNVc|p^l4p+!Izae2n$l}M@q*n{d#fRHvGw28xGUxV^;c3nlX+%O}i#_>*BVk`-Ad!a+Fx$f7ja3JmFf04s`6D0O(2m3OwtKXf{CxgXW|3 z;dtwh1Qbgrbv9$y(;SN&wN|Fs?FKOWmeNd&^<&BZ4!yM;1+v?_9gfYcMj_vSV7Z(7m^@2qgrb{F6K&pPPdA@@~;XA1#hXFYdf;|UdSvBa319k zb#vbD@E#ea^M3Fk7x~rfOh0D!#l6a8vCaOf^|#L2>CE}efY&jQ$4v(dFI@%cCwvzL zF*7k3$mKS^m^Pn%^GQcDBY7ksVO3df`y;dS4|zj0qNuW15y3_mPQWqoQJrc|*s#__ z_H2LnUJW_*X$l`(!V2m@ksi|?3g`MzSRM*sve0HDyF-`&Z2=A2`)RS@>5|+)A!Ula zfAf>7{Su;nJeMTsa~Toyy3n zNwJ-)gZ&ej#QgNU-c~R@A%>^DjibB}zh!cm$8R~m3S(HoZwbE>`5nh^6~7bsm9IUn z2G_T1I{s}ff48o_m%qh^ooDTawJprVj>VfiJCk5rJ>{%cAul1e`-`8pd(=$DDl*<>ws7I}A|*c&r0$?QK0nBoo7p8x8GU2F$%W!~}iA zX;MaseBg0wjW}p9au3)S%lB;q^{NZ&jZwXwDv7b5)$xFyh!|t7`XNuqYcZ$Y&|_Q) zz&y#-oD~j^wZh}VR`|*=f98kFtni|6l{GfVTXJj|7syJFjxED;r!tdc$xMbJZ>E)6 zW5*TaUbvW2^NT64sJM#0W*0{|m%y#HiA*rb2X{AD?zT4U1)o|QG+W!-MsTzi^^fMc zr!B~H7>aa+3>Dj+MbuwvZ3s|ppIoOmJJHeA=7icpf!9GG@@gbXV1Wd5qVsreilY^kN3G^pwlJZg?i^}?g3?LU zMM8#ya!hkK?6%gooP}gJ=`Q7?jr_K7UzsegYQ}h3o1!^#eDPTcw?VUwA@GKh)td5n z&GNBTsd=nnS93J7tMx_V{*^+5sA`2NfEQ4m2Hu@lh*4$lCS60R%mO^#gusHn5d!-Z zLoi1g7(J(?jCcXKkW}s;1_`m9-qEoqD=Gix;%}`D&(l*YEjGc|x3V^1)43tI-rBGS zDVIFg2YfFCR(P0Qy?p(!lvFmN>jMIvsQ^jH3eO1hkPHDNQ_FaYh5(WoRVJ;PAPGOtl_}jt<$?7g(!qraxereAkkdUG5&y18y)xY-(c?3$PyS`xi|e zdaUPK8@41eH&v<8UlC3R>Az`ohC6q3739d5fVXFp7=Um14Zel2Z5y_#6MrAwcub6JwyoLxe_%^sOZ+a| zE$MKKy>>#LhMw|21m_I*42is`yn?-Rl)aOmR1wnce965k%mB_d`gYp4j9`YFtY%%b zZ_Zc8!PFbN@xpOH$L~^0RF#NJY+51komft5*Y%;wr!)rPvT%c${WS*#IM^4+ocGMV zX`Ho?dkanWujo+HEoIPgcJFkY`CO!o)R=h9ywcS0sI|V~ENeqAh~qbl>urLB`Xq6l z{uWXL?+AuxGCx-OGNDjwLvm&i0VTCMZ#OJ+T)--trkM>* z4baqs6e7Xa3eK@JGqOZPH9Le;A_t8_e8hkhEz73J(laZJV2OJ28KHe(N;j@)=1}Vv$ zx39XI3FoBFYDWX)46+xHP5EsDQ}zlHUuLU+LC3zfijHlmd8X>{MpJIX?tD2-v-gW! z*(qx6JU-c-I>#^mmBQkbDFO>v`_wdYulMaZ491Bzw^v1zIXz=Mr1#vx?nE$)#`5At=z zZ7A}_OZe>W*T!Ci2b_`K{CYf@4);!(MLL(GP?0d_JG_6T!{T3b9hsJy0WVIvohF>L z&RJe`j`5>ob8Y%w{(Ac>l~NZ{>zlmo{+mG}_s6-o8*D7sKRA8#jZ7zz78*;ZBg7n$ zzr<1Ab+gU&jyS6#W-xaE{}7q2-!F(-O@irM+#Q)-nk-6CT>#J`!#lm5X@RA4wk>Yu>bm{pY5Se8{{Zw<+pB zGkv7gyop%uADiyUZW_*0`bdct-R#tji@R$yKbjEB@YZdYNc8b2mE-A0HG@T|QwO_o z=pC)j2o)d4M3%X0G}lgDMZ8;ggL#U3Kv{oq1_s;s*}G=m?nMgpRKWpY=v8BdN;ZFFI``zvuJBjj(|1@FXsWkT#ud&0{ohF;d(73H^&-Jd)Wex%@YB{1##W5dSUpm+dh-=&(wne#AvbRs%RM|l@Q{luMR z^GI&+Q_l5MI0@Z$CRT|hUa3j^g-LLI_+}+O1HGwy%R9`8j9)h&@PRNBXVk-VlE!~w zQeCqhSU;;nItwPsCRM}UBYsr_433$<^5v?{c@J^iJ7MDQQitag+_OH<4r?4EZJCvB)Z_|zN=4w zA8jdLsOw*Npgn{x%=iYBr%)#GDn4y)-cM?@GzJf)Y(8(?R|KvpbiL<5(Q~oO70eDF zRfwN3`@8Q^3KhVz9u53{!1oo>P~X4rQy={Og0FdvejoP7-CVCu{Qh?*jwm|e`+0jR z)XfttXCmbN7U?XLs+X|0bKqr^*JYj+FFKAV5|MTfalJKkK~FN@We80Zy32bLnAR0ay&`>caWOOO)t3vjQVGBoCNu}O-f7pE zd73l?n7v{@^^EpksF5Ngw152T1I!2VKV-t7>(96ULO0odfyW99Jm41?8+Si!KE|=N z%X{@Eja&yb$3V5OYhg}9Gq7CzuS{Ia~Au8Y6j&#wSbLOOe6NU51G zor{hr^v|yjv5a2JACL2i!|B7s_FfGNj}k3R#T(m}IJbPh5>wtUNo25% z`0o3t2&toQAkM-+#&oXt0dg*|Q7V|mtt&f^-)diG; z`UT&LW|mprS7_SU$XcteqA}{45~epPuP*oDDBSaWGz6MH-*T^m-8anY_&L9j_1Rn5JThC1r8M}*-qbv8 zu{svAvFvwasSr4z+s6S`ha$jdE*a*{Di(83{A7M}G?c%Pau(*FY`KMo`)^k-n2n_h z)9}z~BNV1VFy=F!SK)LG;o^MT?dtME)_OcgbwzAm}BZ`|wZ|6%LfXE3}7w#Z99iYpMhx=aFEVTPypGyn?# z%wy#_R?zp+$VXF?fv?KJqcIsHV`uh~kg9!$_WI^RR{IMp@shgzzCO?S%Y7cFKCh@x zllu0ogSlCM`>2sMTtXv#r}0H5;ry=-Z2g^mD_IrNmargwx`^iaEIs%0tWmB) zYD?O`QQz<-OqKUN(m>mn`Bi_WrhjRQKjFPhjFTulDYK85b3G8t%*VU>LcDM_wVg>q zBR5%ItwA^Dm*wDfrx$hgu^LDNcAE8}r$u(xs|uY6TUEse)tSRMN9V%_G-+BlI`-7H zuz2o{fxZpT72W9<{W(P`b;C9Ai61in8%&j?dkB{lOZB;aW-CqbUDJg3IQ8_Yj90MLTmG1hu+}5bluSR>deshp2GJ5{)@xfsD6&}s=t-ZZe63k z5LCIkOrrpO6C}i0qs|&yC*J{`N2M4028)J6!ZOaB|A&n+^>1SCQD_OP!>|%^q_`eT zWCAu4WCq+&8_xDf^fB*C*$a^|tXWPfWAJ`Y9|ivHD&=cgbk{}8Kx#G!F&K3gC%xOI zNeJpk1r^D#A8QmjzyS8nK4w5bKE%6=R15JDjEdwHh!ux<7yDI>zYKUush#|@Y+0!K zDk3nTM~+_I=_QrZgHGK9cY3IDq$AQu0;k$iw-%9NPuGEwcA(R#E05OP7+z9gWYlS@iq`yHc*zBM`IPFj0n`9j z0N9SXbBoKOZnU^`W~PK=ypGF>9^9Zr1Dn|vYl)akliO*dB6SKOxEU|k^i5Ox&trxr zyVJ*U4K2oRN|=oPkERa~GjCXr6BG@E-$vi2d`OjWoE~!@6Q$aK(WJ3U_%&02Sw|^{ zLv?es<`al^vz<}*usJSpMcdWd7vpGKb(f}U=9F|_IQ22Ra#w0B?qE}6nbKRo#-2}; zYrF6E5C0WQS(KSpjHGI@BHaE|xnCnUiZEOWMXW&IToQa`te-};yaW8r*^&Ti{m|U{ zj99=6i! z7`gqhk@}kT<*+e#EX?Zs;_7%N_+^BMjL07>4Mv?HWM=*~RZ2o??6AQU-sg`E_J4%m zEYJfbN6H;nQ3#D3BE_a2kv#6z^_f!w!5k%AfUxEC_==X`ufImXUI{wSRxVQ6k!`hq}>;#rBGyVlb+Y$f4lo4xX zlK&Y}Okp8z_mdwd5=K$#v|MIpw4cevpXl2Aa>+1Irq0zQ8)P-8Ks!ik8U&rAp9lFt z^!pDR{oS{`hCb1I-Jq04qkARlbs}lG76nEydQgLR$l-|J@X6?LLyW`x{DwhJF?4?- z;V&2gVd~L`g0*O3#{d-2&Tj9z+JRes zBnLxXpA?MG#-bW2pBdm%);y89I=HF%YxA36^K%3IiUEby=6eH14BRe-yy+(AJ0=H1 zzDch)N3IQ7=~Z+=v(_*~ALsGB$_S{;MZrhxmXY-b&s|;x~Yb zo0!a9QR-tTW~9b|01RkwC+hy^S_YSXd`$oFM=YLlz@(GB!JCI9EC*2t4M`cOmQ%{0 zRIMMA?G(D5$SetNYF%^#Q@txU)$hIn7d2;cfrroEo0M8o@_vZ+nG}%cth}>{PNmeL zNwRe$LODV#&zS4P`_?>w{(kW+trC;q3NC-Iu&G z-q9j^+Kl*(8$RtSv7^SiXAU`q7}z*2;{fwdY_kR3UfmXP$nErg{_^qcrk0yh&Aul^ zvq8T{ntN%K6imEK%C}8QoRpl}sCP3dazlcY^_t|8Pc#ER({uW^7^R{Zp5cOg9)(Z~ zzb4uGf^k>ySX_&_(<}SEI?sA1B9Fp`-B|4d2+DId`oG)?78P#`16|=5{CGmLq$KTw(`_7@kSw zP-br|(Z@lavt9(~wsGc_vMBW-NaI`O z5pno$X@JZp$~G;~G$QHpD4v_)%)0Up-n=`tul;y}G;B#@(?0wlKe$q}UM&rsZ5XJmweg4M%;f)$Tx zbqf_}00i;Z_jMQW)4)6S6(^-9ix{0xPcGO5-De>2ch70WOgY=i;H&iE(n5ODm)H9Y z(1TwTm!nJ2HZ+?gb=QZggbk}770%)Qds62?>!)8@|LU1VZST0J=oin?AIgrueGF*)KT#+*VP_Et25Z|% z`zCG6j{i34?kRUtMq#4d{n_zfGbQ=<4|word+ProcC!?Qm-eMwVqt_B%8vhrDY`2= z{_8xXw=*+4vg2cZVh(fXFM#OhTrvu00AbKPv;DK<|6w1!K>OF6`sjsB6%R2lFG$H% z%B_C|tLr`Zg%j65w+3|JcQmF2Fkn&eL2ZtYK_ZaDG6Mg1wgm{ly>G>=ZWeVG|Q z@@^FS;%`g?rH0@TDaLM?ly#Ptt$O{|&t)zROXYc{$~tv%^#hiEhj%#%?(+ki$MlC) zylRUvKQKGoTR%xd6;GBLn_Kgq?09dF*8I4?*Ep-4WuK~prX(}kMOXYJe9hiF?9n_&m+nb?y1@F zr;~uEhXTa#%5DwVAO>91g}gJxn5pQ?CL`a{e)ASEdvo~+cJAzOcKpAaL_K}Nd}z1# zf?<*T57r~>`9#9KKu8F}5u}zj<#&6(5Jv)e@H4+OGd4oAoGW!zuGF36V*3EAQ4x(S z3t8*R0Yxza6%5e3kz5hAWyGMXmf~FPfc*y&JZRLOxVtpuHRu!0vT7~jE1*PRHJkcG z-2I|LC(cI4XP95J?ztZAFeP?-0Y3*g%cg2-ZV26it<0Z9zmG)u zYXnX2OYxK(5z6kvlVEylY2=2`@)y8z-ZpVJ5PMzbcZc_|`88~#F)8%bSE};chnSoaf=nU+e2uWahfyPYwB@Lu$*_lLZf7h+6iqtjS%GepEkbb4<_l>OfyE+C~ z)FV4J)@iIC3a`^c-sem|D0-L-x2`OGm|LXh4HV;dU~FTET0g6#OcPx!EM#IO|I{pMsLmd%h8M)o#7gP&}Yh{`rd+*`$k zCk+{FS;A-a2{eas3F+?IWDcXWS~Z$ispk!H$os)V&`eCVcclLHt@Bw0ABPBY*zQr_ zFOb7)6GnQ^e^zMC6Dk~@a9`^`br83en9c{NJd$}0Bx~l6EVVj*%c6RHXbK5!I8m!C zmsMtU{4-eyK}Ql^3-j8Nc5;xR_QW%%I3PXmA+s!|5&&h|3#G;x6}bvK@~*Y6i4EJ= zP9uf&C+;MHE-tSq*z*f_XkK@F-!tqj;)LZDW!h!6arZnd7*Z_F&g}R)Q);KTj8gq) z6g28C?ROFG4WXlYJ`3 z1zjm<^EW(RTMc2Pon7UXpR1)itZns)Tyg~gyF%U=lcA$Z;zR5=;MKT3`LX8Fp)n2V zLb`cfU1&acH9j7=<%~i3dTwx^WR-JBg24gOAbcpxifkS8Yj9+0M%=xyd%A=rbY(GZ zPYY#d*2c}wp3P_WZ_`5QgImqh>@x3WG(vQRksbdtleEiw2EL`AgILABOImK=j8QwR zaP)>Isx_Bd=57rA8Qo;*%2UT$9IUo#U(`yxl^uUI4H0fH>fG4Cg^TsAjb`-FHkx_x z4}zkcJk&kq)aONp-cTBMZ{%?LeUJLQU(+{)Wc?lK?kO)mH%PMnwY$L$ zGlOjkIQ)2%9fGc2)p^UANp~#P2MI#byFE4G)Q5B>Vl0PC6OnDpU!T;uCDFuw3?>q8 zbaNgH<>$gO-%I++KBhw|5#feEE@I$!i{{(Y8wz zHdJWMvd}G`aB=Ph!kSw(aQ;{6{1@F)3fZFbe~h=yFyTAAF7s<3;DZM=ls?BZ44U5u z{i~lyaa)5QQ`-)TMKBApT#d3C3}j}=yP7wAa%YAQpLIH5&p98Emidh)IR|}tW(sn; zE+lHv$A#>oDLrP=vy4c+1j}8srCaBI(cls1^G{}aHMctryRGe&I@{doV5g^>fy|6y z-cOb1s{yx#MIm>Rz&g;b429p%TWL+jUwtyqUzt%FO}SO(J3G9a^=lf)0RYZ^@}O^0 z+~UE$DxtvDrhhIkwcR&Ge&1n~1ay@~q)_1#96zJ>inU`j)650l4@@YLnESiT6l0+Z z8TD0s4YbCZts74HkJs7ayV5TlzOC7|uJ5ulHj%4aI>$50^Nv!v0&3?WJ;>I_qEb(&>n&u;z32&-c?G@l*$ zW9kYU7f?GBl{+y9T5CIs{Oyce%OE9W>eLvSln1ur0%SFt+8Y^Ah*T*A2@H=6L-^$0 zkuN7^SCq3&AevV81B{>j@>J} zqnYbbw>g;T`u#BXFl!&?%KK>|LO#he27DE$Gtyx)N))u^7~Z697|J84tDL zf%IC^Isve~t=K32+DgloM{B>?to_P?H!tW1R_uvo#;sI;39-4I-^+-Icx9LWJXVn$ zFG~cKU8{(Q`E*{C5i%KyemIb!q{|WnQtk?y%o1htG`5zs&Tw2-QU5^47N5gKRHZ&R z_+d?LzBo=?J29i7^zV`ZV7b2X2}u*JRo~MEI;TOEwy4~>Y2W78Ee}<>{aPRRlbt0@ z@uKoFHJ8Xf9z|5E1y+Dlv*9uJ6Bue~%Z!ozPtnpcC{Q5~YZU?!wFWk#@L>yRXQ>fZ zUMc4}NJM`t{9;^@{D3`%Vp6>`lPGn*&>HXk3FnFs_NZX*`^)$69n4t0Oz;t&0KbO} z_$l}oSKXD5W7~Q_s`2&Cb^En{tCH@^Za1c`dkA8h%uF`5uy^fA%3|e+u-ZHc3*w?4 z%M|^VLEWd8Gr<*V09vENj5ZN4K2B?snFU8RQq*W_abS>#FQbyQOF>5Ey@DuY-pkqH z4CWp)MR+HX6(YG*`7PY(pON^z4YoGfU{ate3KG(hk#Ap% zoE$})=drkPuhlmq;W4XRl zx!11jdXeL zNFvt--u-@AtENk1kghh0f?l94+9KX;shVh~$9WGWx_Y=*@BUST$m|p7MYDZ;f0QQP z2L5B;$^>uCZMaOyYR^Tr*JmJ7=MozSDJasVz(McPqr*WxzQ#A+Fn4;l!#zTXmFS51 z^;4pB`l~a+3(ck9xYbeEMm88%lO?}0=EmkQ+9}qh%-is1Ex``&yHp#XdmBXe&J%Pt zihErE{u%08Qs@WzCdvNiPsqf(Q1mEqRJC#U>!nGBFumW*0Q%}O*!7on8!=m%8Q~1Yrv%8h19O6ry##!ozTL5G z_aX!pGfOzMh19ydvP1jFbYbQ>b&qp#QOtUvE{su6FczpotF9BK#s!3Zuj-eyYtS6(WMpF|y-q*fh_2|q4PtS3*EhYJ$nL6d$|kbA6HQ$v!lrsy z8t>i0w~Xvps5_Ksg3$w`6F%p*n7i&jPHghvl-j=>uB z9=3ar_a3l&U$!HEY764&>MTNNCz_rjd^#B~`#nzd9!LcC#CzZCeX;V_L{E<#rD!KE zt|}pFck~|CatRID&X>^_o(d_kIZS|-Nb!;OJc>AYQ$OkMmw+YZR{N1uw4p>{^l9jIY3f=L*(Esg5}%F`wTkr`KsES z=A**Be8B$n`4IZGP&-tO>(jNy&Nkp` zI9MpJuh-6N8d2XA3u?bLS%Z6UPrNBsxV5;j$!$V==q^-0hVH_eF>FA35u5Z37vhFS zo59EHoAxEL+mpF{c!Yh31VcM-F6fmNHR#cqT&}GMAE)!4V2VYt$}LmfhyF#I&tT_i z?z(@`o|GFFJJ8enqMeE3qB9nR<^bGl#&I>U&Y)e}nmP`*FXPJ17KzprN3E&FQK#4) zV^{9TZj1LGNCx&Kdf!WACXNt2s}9s>%16d~k0k>K*=C8}<8XuSt^`8Z{MNF2vurKx zt5;%?C(XV(+w7|+*;jV&do~?1{Vdp7cI7@YB5#J^-PLwDK6oV3kF#+I-bZM9e?$48tU#|V z(MSusBmY7F8tXdL**S+wv^=GN-lg_u^bG@o2ZZRrr*>D*eYLcNvzm>pH?!^ zi>z?%VXZvfZp8LL5`|33hpqL+Q|hdaUF1wjS{)DTw;^@;lrN`35JK_nw*F^rcj`R5 zW@S5BZ4-^tw#-b<-(Pc_dy6AJvhuGQ2Yz$OR*(n(f#MQuc zYx=PYscwV5M4L2-Kx)(}wZNQDsC*b%#2Q*kW**$b4=!Dd_J!B=1UGw*Oz^A@$r*46 zGwB(88Xc{Gr7k|lM;mcfxvL_=CqWC5VY#DBvnTM z@9Y+&u92(4t(y}owrULU;2aaJt271l9LS}AB9a<48<33Ri3$b+3xg%Xlima9U2(MR zF_e@4XDI0;Gr4>DK-66by#XJwAJJQK;oF))d*M#aeKOG6V!P{2^c5@}vRl1{<0U1= znl6b$eGPsxCkpbH*C`Ei>7OQE9i<>6C?L0|Pk2AuVdVHSz*D$EKj6>>+9M#Mc53D> za!ym>)fATJk6ZjoJ3u}O84YhWYwElezNZw&=LtN~&7q>UPa5Mh?^;S|ZobN|5%GFGNFcc)kwcFp zcRNB=;A4+2AoWqVlWs#RDUGzR6Y`n}#W`}OzE-|@FQW^UZ0&etYHovSc_ij8Bs ztq$R(diVK+`)vMv7zTfoKunIG6x%6gmj-PIDi=feCFjGJ8Ef}J`ZLcip>zD@F#Hli zeP`-Bu6@v%df2t!ai$)PMeI=Pe&ivgP&&1+tPHomxa~V4*$?pb{A>&zQu=tYwOUPj(jsTVwNWN%sm(!2Ei5#$i!UJTI`Fm9;`BP>~LzN9Wp*-MunS3iY7+z8~c= z=B%8eAC37ok`o&9G5oD^oC@g-j<>FGycx{@hsYP)IP76<7{53gZ`_P`#yf8OpflsJ z8-K@{F=V`3YM~DpFREjIWxNS@Wi^{6;jAPOD!6fFEpH60nm5h}1DyExvsPiDV%Xbu z1|fj-f#wT6KG2-Yul?@oYW8<9^`wW z5wNNEs-Ul>>r;@%z%I(>DjgEfuqy6e-eNFRr?j2@m{CZ!bEaGiw+c@2faI<_Q-)UF zaBOzt3*YsD|8P9;r>L`JaxT-Eb*268Djh!|tK%5DC%Eg06=mYbn$t%DOGZa)9x7M2 zQm5tvURrCOmWE2x{f0ou#ERqGL#2-dt;|D|li#Qs9l@)4nUYK`;`sgelrLMWzRA1W zappn#<4mjOsfZ2gOpErX_=M@^jUOTPu*q-WDP;2J_RrjY*e|-&>F}GHrY9BcpFx{uGCR&J=iQm6In|T;SxZ0l z++R+jncR*uCz?{4V?C)Sr8<#Y zW@XB&vpczu#9vsjT+r05d1wCrPk;VDsrff^l$-7zAEx|8i1z)2V(DKRs4BkkV|2+( zFop7y%~bapDrKFSIHrt3noP*1LvQ+%SgA=A%$ezCI@g`4sZ&YKP`+fevP)Q{g~9?$ zf5w;gf0k!6U3@h^bxd5pfZR+F>G{cGs<;~fU0p1`B0uIGd_-fe)o+8vZwmeo0p zXsi)`8?{{=D!2E4oV914o&-QDx1-1~ zH4`kRt%1!&^CdK&+jIa~0rb&`w(_AjE4Qnf0WJ1&u58~V=86hK0QQ6`gQZR7zGMD? z1dPms(BfZQp#^X0$jre@mtR+iU|@yR&>&0~qJzFWDSq;-{%Ln_5@n zFk?t~xgQ_peeF@K1)N(#=q99eF zaKY*rrT>ukahge@c`ic%0{tFs{R28LUdW_g5cioc<1l+;PN7P?Cxm9LE>U0jRbDGo ztQWd%8p9y{B1Str#JFQ49gDg*g^36t4M#%cE!^sJTD!%}!~;{|JA8`|cjExV)s6op zu~Oo-+CBu$q-F+%3b3udNCFN_aL>^1H*ysySnpTV%<)x*3HvNvhEq5nCQPva%bI)w%_x=2r&~Xv)D?W+S4WYh5 zkQ+v-fluc7Fg`6NDz0LKoR{I*4CiHdFgULqvt`&W)>>@Wp;yrD@_8h~IKe@6yFFwr zcUOz9vmU@p2hPdMi|w@|fLwD>p!U#C9ubz|w`^w?`fm(Odcc}kly{%-ED|*0k^K6G zB7cvlld+HD0IDa}4%|cwh+@7(FmT?fdiPs`HrrV(eu~^hJRbBPVLMj8qes7^Ij6_V z`7I@>og5y=+0M82o5$~n3$vZ|2lUfD&2VEFyjdpFZ_<4>Cr_~5|F`(B{5aEDIISwy zvp(~kJ^V;6mdf0i_4&bi_bM|h_3qR>zr`F(RT>j8b;7{tSBlFbl?hlWZfsx<4BwUG z&0YqqU(p&uT0g4QVbfp~Y=z zxgjhdmLk9NVdS-?v|o5##BVLXOZkQVHlhR`t4M0$w}RhBe#^Y8QPS_%W#R(#W%B#d zIDR3!fpoQ`7S&SiU`y2`sU@|jmMTE4WnLIJ560>@FCzC5&HGVO9+~s&+E->f(}#!O zcph3>kKXcLR(@meXkWBqcoDZC*%$lzK`VXDNHF^BG5q-@q;cP;nH|*q7E-8z{}=QB za{gb#|M~ncXdZw61qO7wz3<9gTU>L|9zovan%mG`w`5+!ijqL7)=N4C=&&0wsKB_gxa8&#yp>R6z+_G+ZT z^vK6MwJ9EbOjNswN8vN}720F%2mD8*fE04tU(>5gPK|lAGJoP|CxLC>E}0XLNOaAk zmHC;US4~qD42S#D&9Rz>sO>fo@oH)v(hnB{o^<= zaeI4TbT{{U@@#aTNxg;8qq{Y^ZWqbj)+*7vIYrMkB0&_^N?M<5BD0T3P<^Y+R4mE?G$=y^oXBf$v zFp~3SmE2&bkDY0ym+^VxHoI^4zU=f(cO74qomalCJ8foWh9#JGGf3jcOOzT;?LNT zyR^pEDt{4aq`UWkD!V)HHgIYh*iDfb4&Km|wK_KQVyBmt05*z}7LA}WVRhVZ9_K@2 znHWF<-nev2P+ywIy!IZAA3_Mrt+Cxp$cQnq$|n$lZr6=VBiA{o*iv+hZkFHcJsb`6 z05i#0oN6U?x@n$D@(I9aK%TF}jL6_--#<^*75$0@m z(y^<$?a9!~Ix))81Tr{`!`m9|J;)>Yu*3V?^3fGR-*cGj(W$h~0uC1}Ftn@!p z!?mlC!S%o3W>HsmSL`7xnF;P8ydp>~wD@NzE)!-c5oidv*A%slcBhtD4@?a? z_FUI)aO{cw-y}A3Ir3R8x zEYza?5l?l3QyHeOhdKlwYp`Hs-zMY(G4fr)$Sa;v%dg9c^RPGN_kQIBVpaLlAV^7f(da=jD)d+ZmixAB33OPBlpA-=PvuhMUjI z;pVpAm^R*zms6cNoSfQV@Nw!vgNsu?iblZ0sqg=<#=*vrE02k-^o0WA{{c2$eCr@4 zzQV`E!k2xw{7p#s!oLX#9|H*s^Ky*gxN6E@M7%koF^_+RK>sTK%^_Xk-yAB=<6oig z|NrA(ZpBOUIM~3P)iH(bcyeUBosCzBY&&>280~+GZ~rG0?+4)96Poy+;M+f)fNz~b zd@FB&|99}ML5Y2u5kd06rdau+&?-=_iojxXT6`+;k!dj{DE-09NODfCPV;NSW z^$j5n@& zNCzAwBX$4-&?oq z-Z~+5gnx>od5O$=i18I&7mDRxEb8t{F6{IbkL(th26KttMZbksqv-9lBr@$1rAq;< zjCVwy7$+c0M&$@|Yy?L0B($!UR*&ul!#F;b9#Tm1ws_K+Qm!DbweH@e)A$M=)Sc$x=rC?Mgk#~iZkECT(>J$38WjnckxdvP-D}C(hV(uO_L^};MGtb=| z_a`bIuv^^QjF@}4RvFi%^gNz)<6$R$r5kdPw8u-F_&g0QKG%(xIq~wS(-P%>1AWGg zZ|(f36JOxWTjVTlaavN&f~E1{nvL{(#Y?WnVO6&IHn$-}vyq0*leerk*>O(8T&Z-& z3)*gYf7||48-s-VG#g>fOQ~k4OmoE@z!v;L5zp-kMf8fhuc2MlPIuy&ST(9ua=4q! z)F0&a0BTmeK4^Tb$EtX|kJJi&@8$RR{NBZ{$M0?YzQ*rb@B2?`Gfi)aFWezGd$*(5 zh!3&fbYoR1JR8Rj%I91CYaqP18>`@_){Ry3Q|-nM@Kfc+e$P*Z8}s-n^K9@}|CiiL z!e~TM?;wc{em$zI9@SNk>Z(U|)uXz;Q05H-GZYvcXrQ^611OX3*3r}DmzXgco9#9OYZVygQs7WUU{&zy~Rjk=95jW1*_Embu5 zJwH&>CRhw+q*rov!DlfUt(%PaGH>`jkgWa9&RK|>464%Z*C%T?*GAp1PvI`B)|*3P zpu_IETIv=tAj;t{K~90?SXfRNGzA(qqmMfg{O@9uNyPc!l1cj#T?YcP+&yQ3;`Usd5tIbXZB!!P^Q#9;g|drEQ%!B zr&Es(cIp!!*r@`5$lhU25N8Wwp*@Qq?%1v{volE#W4rj2CQ~Ko-iU-9S9>yt$(b8pQR- zzI!NPr_VQ4QfHe=(hJGmFIkTUm@6y|WUXXsyx#x!6iO}d&szc|zAwLiNOQzAE0B*{ zzX}j*v!J;*`aiDbPS1aj$bLifHD|siU{?!T+R+Hpwh}`ja0Aoq!?_^d-+X3$%zoXp zfKj+dGBfV>K8@jI&W34Xx^c>JW2udkfh^H^GBb{hs+-~kRYaQ&9AhFseVBy&QkrdT zJSq*?h37%S;P;s!qjAjcwprS}G3=||P{N(cc1?1gyBCq#F6~~@SpPU{kI$pk0givH z*T&y-yi~tucw_Nn>0D7Jqe&S{62kL9BC}EIwAe@PPiDSK$j`-lboSS0ZYnkU`3ZMM zqd^+CCL^f4Y%biMlI(sh`T9K4^Yc zJj71|VJx0>w)LL}PJ+s?OQMyZivoH!mp+FPaOYa%x@c@DT3Iqy6~eK~U3U7`P?2rS zd2H88jmd7a@d?3oL_eyM`|RGAutQBhdH|_taa+>ZB5dY!Hn_CwrC~9*M_zo+;m|eX zaYqJ*!Ghd8oSOkf7~DdH!7Yw4>@yaz&&LD3CcNOb{#$7)^$jc&<6VCkM)+}4UyWU5 zyU*qCW0==r)_I$k439b=?LXf-Z@->C)L->BaU#p(t`QNq`Pb5E4ro9ok%~1%KrkO z^ctY_{WMgbLdelj^YSN8m3`F~?ym$y23t_hu95<84tSz9R{%6Ov%tcB;lzqgK?aCp zOo9Jj5C`~T23`|@zNWprf=))q;i;?#_D*7DHkyU7R;^(TaN1;bSZXl+UZ{1ZZ292> zXK26QR-v4du21?7y|Gloaty_WH8*0P3ms-$jXBo~p zT7MIdY`4-s*C#58x{AVRem!hAbWTXI-3*2KX5T;LyRlXe>c*9Sp&PYy1GfTCt1CYK zDeO4AQ0|9*Co%S$?nboSC4AnT^hzc+{y& zMxB`rPTkz@x_PWXk@tNFm7L9!A@!RY@d1>e3C;#061WXv?;46=T_+qh3Ut?KVjxoL zOkE*sE2F^f+m&J<*sfO1cwS37b&dImkZ7UD-Rn3`eUmY_EzFLYj0>Dbvw!4xXp{{B zSW~_xg-Ii(ojbhKJ|+2kYP3PW&$T|&AH=!)yu>eH8T9W$95F>}n&w#@)A?q!=4*iI zy?k5?Pyb8Zr<2!hZviDH0|}TTyL1qlBm#*tPQ1$EWE0mEC14wEL6`3Gy%BWcw$uzA z4)mN0HCY`$CU3BxnoRV1 zma?2;ji5R!SdX$K8Zx(0Fz@ujJME!jIxbs<)YqggvWHBjHi=UorXz`2oNmpcxLT7% zd2Kz`YKAWEDDNa)v~fI>0|!yaYC>pNh0475Oyj$`&sg;m)8+m1A5M|Beh5(%SK{MF zpI+3b2<0_5GmDp-Uive*Pcx_yL{UZWdTB&5z_AjTN00p3LQ%Q=HmlT<(|E*^BU zt|hzThu*YnhQad3tm&gC?Ta}x=1Df})+Gz_rv@=E!)&vaD-PRfMeaSuCGy2!15;rF zJ7d<=sUbCit&eG9Zea;bf3azu3IcLw%#Y!La^;JRICs}=9Mp?{RAy8LE>Rg#KBs-x3g>u7)hFkTEA%*W_m4@`>h^9_;XbWr8%?)}4=W zOCknko@|#eVDdMl3{cytowsitzt0^Rtuej)M(?ePZuN9DcQ=~SNdjPa3Et#dhHJZwEEqK?-x z{4JK+HP?if;03K4xzN^e1NL6C41G2tJ>~AA)F+~Hm-rM$FDMMAFDPysN&Eoa&U^E( zGPCl9?3Q@?aeQrvn%JsC$c|hSZhbgM=892*Wr`a!FZEb=$qGu^|5A=1&G9D#{YM@} z=jc0LRY62{RU8GaxVupu$F<>-FY>8zgbl@?z40D;bRpd-;eauA{QtJt^lBm`eoKzJ z!GUsHxOL}1hiGu9HzzvtN}f8-@pHyVUwSzg8&?BV@uO%>dOab9{D;gU*P9S?H46!b z*2boxuNBTk)hKu_>@{*UWaR8gU9eM@v%WY!xl@_HwnLvDRq#CDtr+rgd$RuL?Db-Vj{;)<# zTq_=N0FN!=N;FNN6Kf@YZhr80?mRqNOI%Mme+EiIL$ zoz5#}sw|fI1`I-XDe~HpZV%xeyZQq6jdbe{M>7d*$fMiDjM|uI#jNOV!{V;kEG5!- zV6Pa!v(mS~?M{fgD|HM;D_80Obib+AE5E5@u>X{(I~68&7~B%f5-V9^G&|%5qO0{{ zw29zK2NT~Uv6e(=lg)?r;96o*6#qZM(cncx6hCXNB&aYK44XAeOcnlHG{MZ%@^WMG zvjy_C|3!13A@FA|;x6O1nf)21$hect1fN8s89_3dr-=Qgl;f(9nJAQ>aG6z~xuVwX zAzD<6nH31?d!iXz(}H$V;w~G(5YKqyN!*6y=nnCIO?$-tDJT>_$pEx8R~Qe)-6=?h z^*OqoyUI9W{d~!%a}k3OU&Wx}-Yq^7C)$3~2x2hA5mpq{5 z;SIXMsr8Km<@`m?C04vvVX(wa6~sue&S|;NI%nx!QR|%AwNWG^Jgn87hgN}Wno0ZW z7jE~NHM)a19fRfl^jK>2d-UrrF0FTeS*!z7%YP#amMB9>YID>@6r&9QD|HtoZFg)v z=T0;*9VbgTt?W#)lr7NIdz=r)U~=5qC%AaABb_LGcESsWz(i}$Mruq&>su3eAQ%~* zD}n&s=D_q2skAaDNHZnO)KGsGgUytvnWskOnt6f;WHZ5{HU&TX$77`!)scjBD(2!0 zY*G2-Xw7xt%zH?D%L;$tM>S_a)Sdg$8_esM&d-(>y%n{>!*3$}Z5~dE@{nj66LYRB zk2fKvGt31#k4Kyli6#{On(BguiPM40POiz!+{Q4Gcy3)i}8V_FGvtDsci z`Eh42jdU#@)jh40m4rU3?2?-NGy;jwYRF8eh5hl)S|x~@1^0G+L%e(1JjxaE+h~3X zQcyuanLm3^{CXHmIjs!h6nDQNac$ks)p(47SMmP*v*AVk=S8lrSn?UXnFHZ)77VvZgZI!y9I>Cc;Kv~*|-&ZT%MY4 zQ+KeUxR+m?Ev{u83Y2<=+9u+YhLz~;ybXUm*&T_!J$R4FZc9>LLWKH251`YS=sgm1 zxc_dt8ux8G>I3@|y?>680grr12uB|E#&<>xyAr&IPSb=UxpHA!4*MJxy(&pG9k$*3 z*NA4(U2?}7Q7SR_&wObqeUP#&t~B6W%$q!Gh?By#2H{p=i(4oY@6F27#&*NwMqS*6 zEH7W$HXI=8|CGD4zG*W&lldTZ4cCO*n**`RF1r`=Thnfgo`hpWEiGw7u6L||xLuj; z#aelJIY#B3sqg^q?Y34f&B99}h^^KH({&6#G*}izjhKqeNs-jzYwI(d zhc3l^0#&=D%C2e9WiYpnxSGn(R871@X(j$?OisDAdIY-a{>o}0+i8>YYlpfQk2yCG z*+>10H+_T&9&k;9ADVd6CG4B+z7rtZxs;8Bzukg_P$JWi)e847jycoA^`P;lkJ#xK ziW6u%`z&(h-o##yI+>XyzNo(-`QG<{G{1emr^L!Vrd?(6n*Ua!a_XqTS+wAGQz&`?7aEmg0zC-kaJ2UFHt)#?3AJcl&og7o}2O484IqkD%T z6`wB2yw$N7j>tG{=;{BoU2{X(;)(84-ckr0lY71RC3iOb@8j%TQ_1Yy57QyrxdCe9 z8stxp1C0~KLWH#`*7;Ci)BhR;#03SI%^c@fUK-}x<9Kg!cWAQ!M)xrx zQ5u~qW3PES4mwFe#1U0@&O@Mb2-=L(7nNt*-D^FtCjc}C=9Vvw?6hY0*_mJ{mI;n^ zDr4^7A#LAoN1lvYvtLBU#@nSr{z;I3D8>PTR3+X-^utR)eZIRKTvheNv%7ka_5OjC zGG3^<@Xv-0!~92Y@m?WTb75k2te_y1?qk&-{$zL& z^iM_q#K^KTFzeIa(`#}I^bRZy0yl85!K~Ca>$8{|&ayI*()vi)oinZ;PoRn~j%UGs z3rQOZy9ib2t^1DYk}g6|Ec=NQ%QmVkm!>iIPdJb7(7hO7TjuXWc`7n1O;UNidkl4V zEgw=@ZUhGXRj_#O)JOci^#pTM zK__K8Nzop_NMhxc=GNXPVEEjXlz|=ThRF9Zm>h0%xZyjflO55R$H2@~RUXOZk)<6; zmX}&9M;pUZ=py`2sudk*i4~9Oqc&PGxuY?fI}@XkOOUL+dl-5wbMAMWg@z%TV1*?6 zP`4FsuSI;Rh%s4Y(UT!$m!Yz>YLlapI+Xr*QciQSpWnWEoDxF(yzx${A97T7nhSG; zgIC1^)I(X+xxS)LvNlTIQCRXq3iSQZ&*&}8_>?kq>q?DHg&C)iAr$64*&&wfhEfoJ zSwBMLnWbJANtAz;@=52qQiD{Y&UIj=UEWjV^jeFAAgJ`hiN8ANl6L=nxY&z=Dgoc)I;pJ*P=@)@EzN;>3kf}p(S z--R(}+5ax8d74i(Px~OMIaE1t`4Afmj+cu&Yt24h z;+bFu*aiX+DdVvLx;sa6|Kz4T&3(&Xptl` zTNhA`+IsJ!xP1|+i0*C(ANPsBMs=%k{8vJBUu9_StZ44zqPcH=Kgs>v2aw!bb0oLs z5t3Uyi(dCiwWx(gQMIFSKPpU7)L)aQx$*G1)zI9>3utb?^N`)@73-pgRFyf(Q{8Qb z==P5x?Xrm{65VFD28r&QON%&yptBPUSYkl#ZoZn&!gihJ7s zl;Sq+e*nepf9rh|x4u|Nam(^kRJU_Ui5}<+m*)*_1&9wZh;gB1uXi%*n1cFsLMOwKgkR-K=hYj)TptIZFVoqDFp1Ru0HHvWxWM-wNke^0h35eRWyVtTqHl_}9CAYJ3t8Hex86Ir=5rE2!~F z$Cmxtv1K1u+4Q6uE%;Ox8L&MODW0RlvFTYcdBGl2_n$=SO>xzU^}Z zdt-sODI^>8f6`qSU}f6w96b9P;){qAV)-s z1z03-A?1fy0Qn3KumB6uF+(x`DwCy{70_cgbWHCKO7Y_H{1**b0w+_(MKZkv-e5^} z?~nYFJ^3X+swQAC)xrSi)Z0 zn0cIceI$LtPJeNv#xet6$#3_c^}gEoowdxsw_naO19P~r%z&CP6r&L_13H_vbA~bl zC*}ikVs+%yk-`O|kTXZz;DP{dycQw9zkX+0R>Px2e0X9I#J1t)ty;RcxnFYg7{O|g zw%4T=k1ivg6NuQYMCre#;g)yj$&|%SttpZzOEPdLo87o^M42(X#9^56`bo%s1-1D; zyrf|aKEq4ml4J9HV4pi-auC&naT~F1L2zdM?e&HllS4$hF$9Bk>gKWq2kOMkb44oI-;K3m7;b#?me(X&LoV48a?Mk{@+($+W4XgeUcWs!ZhzmoZuoW1 z5VOt7hY$sU_~U^$;#*%;!L2WooZ$9hD0uqLkA|P5AON2g(`D^i9#3rDL)&hom-b#! zd%bG!H`Zw=jvz`i7Q?t`dIUeO`9CF;K@e2i_q10+JrE?7o4;-k-OmkqkCjEVVQFhrrDqACEEevbO*_{94n-;NtrhSTm?lIt>0s3ax7@kA zh9dW8EvtgoL<39T5jX%wM^rk?6(vpgV|8DJy#@EiEgSbZ(Ev*Llnti$q#kw(-Q1EH z-w?QU#CVse$H>THWjf#fj@MJYOK!@uPsRP-H{@zSt2UjG674O)7#5SWor{Q$d-HhA zI2MkGnad~k-o=!}@Q%P-Ci3e1&n3+C67Q};)0y;wwRNU=>&eA^371+)e4WRo_qDSqYR)kT-<4^puioEhD;`IYN!lM zRhmdodlQMVJ6`qryEWEmC#I^!we&l>E(BFlN|*R4(NCSz6n(jdpHhCL0cTDx_t%1v zX*omyEQ(^g)dnGg@EABi*ga3#Z7{$r>xX*rmz5pUHijaG3={2uN(4}8+h(PNz!$9q zdCcDkP}cT6p7V%=D1zh&0Ni$q4C18pmQ?{1iFG=$wgTU&TE^tXQ>z*=H<^*m`Nw`C zVh<|Yc`$NuGwg-!A1a8CTO}^O);^I%J@K7xt}#zxKEP+dLN%QCARWv)5FstfS+)X{ z#S^Y(4?Ri6B<4fj)PAs@T_Y##e~d7X(~ zSZ=}At5*UV1hE;^D4kKSVg*g1XSlX|P+m=1nx(Vroi7C2ylb!&NYr>sgU)sBq|(7$ zdu%(QnK!s34w8*^ux;pz9$plk=*1Jf2%PA}c3uQe^y0U?7QWp`U+& zI>S#?C&P=-iC*mWf>)gA`93O)Jkg7{crofkFAn;tfQa)4>=xtmXi3SPPU^c%@Zhp2 zbhwsJ924o)@JIAlCl**~7ig*%{IK?@S?PvXHh9Hp9H_NaTB3Roh5htbS(V}#YcO>9 z`|#>HQPQ1;Q2dx|GBkHcw5YS=h^+ky8N0MyBY5Re8Cc8vV3XLMfIl+NR?jU>w z%xqB(1^~T$g3Ec4$etIR&)!&UZC}K`_~uHPH_v2WK`>p#iE#iR6`F1EDpDY`d#vbP zo23b5*Kz?PQ}Y}s@e0M6(SbAv=>1rAT_pN3j+C!aUH4;k&ykYip7Wv%w**jB345kQ zr-ocu2HGddqWkT_RVgR{@V$;C}y3wm6`X&>1ZMT6E?UT=aAVcr%EcSm{_ zk5pLT?mO^b!Q^Mkcuo_fW@{IWoa_}R$Z>eIuUL*U!wFBCu+fS-&~~ST?=HC6HMFZt zIjlCHIvY2P?9uQpM?(=u!@DJYpC&k7N%kOcb#R1>p<$Rsj)Qj*G1Ltl2UON^Fq-4w z-4ZP)I7PU9il(A}wI)LV5Xm@g1h@uvSuU2DlZUC-IwN0?mGzS|kNNc>8%WSZgZv`h zP8*(;{gj2D2aHhH=q{c2qowMi_u2wD3b=zZ>Rs3~Tqea_4t!lEr|5!EC{{En94!`2&9 zLZXA<#kybl@vP$E? zWIIK^Cb^5VLQHYwYX|MMbVh!OpHjki2ee_T;^u1wd@32}iU*z))Dnp);@;G9L!|Ww z)M>feHOur(H@r+AMU2k_8%QX;%v!!ZD1%aSBp%t^@-fq9yJtfzQqr{99<~jZqm;9J z5ADK?{_?2-Rnodl!{>ajH_ZVUqDlJwnH<^HgiSfYUGPX_xw%u$WlMdsa%!b{#G2MU zBGWq4`Y3jbEVMFVL8294HW` zz)xIRG3O8TeGPBzD2@S|A^g$ttm42nCD}5^(%f1QUm_b?kjyV}vNHB{jKYWB12XkCymL`H#Glk(`!t zBZ026o}V|uCr9D27FObPUz0nppx0$dIVBxjiDEel3ER9kfyb$hg?njDl!lV{TEtCS ztrH*x)VIx<;+xj2;X=WD}eb`}JZ_lKxrC0dN_Kk<^sx;KFrUjV& zN9Q3*9hTXcn_JCUt(eQWkY{%DY2OW+*4la0pi5+x2|^?7!cNTr*~1$+orrrny?FmJ zp_pMUb(*jVO`(NjEV(*xp8CcQa_ichS@xDVfyp(5C~FEezc{dVxN9rhk8u7>soAQN zoEVjOY9>8I2$^&F0Hf|vm$O9&mpE=#mR0~NeR);8o*;Vcw!dGl+HHURG!L?7c-Y?i$^vm0J=}Lq zuHtkyh0Xfvo$0SFVZ{5v$ zchjCWnJfowo4NrafQsodCG2LKH|?;}2G2$m%I;if#E0#-{2gl(wh1Hnjxce=A`_8l z!Ta32T~0V=GTizNbJ8gZ!oY*o@pMYz3{3;6=x%eds?2UU&!#XnZn`WK)n|KitGm0V1?KIGi}Ng9w5^`CwJ{|Iee^Mb5IK7K~= z1=d{TQx}|$83~%1AJhM#@&%`QQ`D*M!c%?0cgtMoqPG^F7M=X4{9}pMFQ8557X`Wa*3Lc8+ZFRscvMEIFc9M#@FU{j znMqzNtyl@hy-k!84b@1>^D2JhdJ*EHR^NC?t#AVY;iGpY-a{>E#YM}rh+YKPSR9Br zyiQ|IH}!>K(X0$DR?}BvWof%=-f)_h@7+gpv!jX@@Hq;u;r}-I{5vbo;Lt)u!@E!P zAX~&fzxoX&-}=oXrvpMKhQr=}qP5@orQ5%0yY!$2@F*4j6Xv241{~mCajrd)t2gzQ zbHRxAYpW39&2E)$Z57DcIjA$i)1{Z}@XaQf61&`)k-b8saeZk17~qn_Sw}oq{sFD+;O|qrZF_?tkG^3RFEB5;9aWv%W7WA`SDo93)&Ab3 zu)pi%jcW-CIK^`o41?<+`#HOj@eP{BUHLE+#B~q8k4j8}dQxV%h#TFKtiHqYh{)UF zgC*nlolb1dVc$n|4~eOw=J}+^S$T@emC8C?+Tj3`^D-^O;EJ28YRIoZgoX)Iid#(s%Ut%ios>C7Uv1>4>T%JqSrocm&S3@H;=AKPQYk_s`Ow z8hUw_2(_HGHKffH+%8Dj4vJVX3m%JUyS1veg`Qb{=3l^o1zGBM_H3x%voe?I=M3>o z)(7mK0!Zw*xf+(eJBf9O9o71{8J&3vEw_l{TA$!PC-bRm3JX{oOMzN?*;1^T5AoPO z%+j)=r0ttr_icQk6X>f_d*_k)8bX?2E!E@^BP0`8FOxZaff}?!`dki|;UvepO)fXr zj2D8L$ypgC8wp)&Fa^R?pg4=E%y3?Fumt&`=XqGlM@~qutjsv`t)=>k&q|p8p>P0w zBQtGW*kNdC=85=XY06m|I`%~@GoQDtfh5hLD~T>s5#XO|JKOv_cpJB)z{t5GZIv`VI4R zXL%mI8Z+nM%?G`JC&Y8Z6Q-id?SM0e#PNj#>n+245lMIzQ6^j(Jz+qZb3@T^@wo|> zvm{C~p^umcEDH3))Px_tdNu(IQcX+(N%YOaU+}EG#`*T&B zFj!552A%&9F;xcmL+3r~BhI+AQekcqsZ}^Vu8u~CVbpfm5_y6PwjuZkc+p1ngW5cklJ4ZgDlFSI}%oH%r!9HZf zI$2L(q>}V*t8m6}&U1=@I>)UY`t;FJd?(y-$A|;lou7AaJ=7O8-GrkEZ*P6BA1hWj@C+t_F!~?r z??T)kBJ60}c_K-w8Msr;RA?DMWz3ZDpk0ea%zLeSXIo&md-wtQDi$!0rGz0dQ^E8HeQAULT;id zLhtq7z>^$g`M-8N#|oW%dzD#>5ns##R+HvH!>ofz^CGDr$dUvf>a5rT)U9}Y=}1@U zZtnXVmS5IWwNV78-VvrlLjD!)cbtaUIM{byWQ`YWp;!HPh0qB!=n9|PsHu2>##G1+ z_MM+C5{+!~OYsG~!6+4cpxz6P;1Y~he@BF56g!+tyW;dO^2}Wq zVa*d>iOOMMzfLmI9YHtMUNk8X-Er8Z>ZCEj9SP!>M4nmvTw>OiL}c4tmksuoj+D}a zCBsn&zkaxH7(ZJM69?*!Vd|q3k8E3fntc=GMUZysM6OGCiFMN4;-4gEp;U@Se&cwp z!iV`M;nV8jqF&R&$waVUtj}T8W)mfz7mFl3-+!-o5xA+16teou}MLBzv z^wCFG@&Ae0PV;V6?&IP)E)I1gtC-7o4|Q^}l#8Xs573>(529oB{s&!(dS$jNXyf0; ze6b&)i&r0H@G-A0ILW93b%olWgj0LK4fODMSjV9vcT6b=v(+z9KaBD!!+T8#?!C$lrU|@X{p3Q+>3X*uzTcZ<(U@Jzvj&!F z>3gl@IgvLP7iWvHj6~>D^t1r+Vzr))!N70qifRjH(U@J)Z!;~C1B=^ai`pm#uPGLJ z+VReSB_Mi7lve@o#{QUhC2PIa@f5TLJi1FAW#J}y#k)$lWML{E(3-nMq_hj#sl_UL zfQ5d5h38tmaQFEz!Tr%rf6<$F7jmcgZr?c= z3oaf((j5%g+leyn)gBJ4F%@*PzEIdCW=i|ciF6Gu5(=!=PObCGP9x(sm?wB1D<|yo zfL*x%&baBv;(L4ll8!)3U6OjYu;row^vR)NPj)hXV>z0=3_IW8p?sHbOXCDKr0K`qoY8%3(03!OUAzF)~ojFa816qOZsF}_9-eMdx z!|VTuPA=oJiLogpK|5vd8r9#O>ON|%=}1Fu#gsOnurW8C1T zHXKDxFWCYT5_BhNt?@v@!+rjP+Gp9}heg-%55>YOZ)i1@=J0^l$X#4p=x_%jN8s zY|~8dNLl);{k}>JbO(!e#83mX=q%sHl=DA*?-?hyUo7RmSy8ZMnUnIl(0xavzTJxkEe%u!wZQV^j z2ft(6@F$Pxw6~Lb7N3+ueHB!4!<{xY4q!&qjQ-8|@x`~kMgeswXIQ=x8QV=FKhI&X zQc}=qZ9MLNtgkPyCgxU*W)00dZnrb0l6@DtSQlX)-gCm9X)S2g=lr@q^C zkaK-M5kh$O5YL?YePsCxw`-On-Fm8CQnCl@emIzR7b}nY9+g=+4(bFJ?#sUFqyC_M zDC#7#o(gd8W@W1VuxupjyNOmpgxMgwrV*Ak-qBlmV8^I#rgj>(Om!V-!@0z4mkJ~+ zp~iLvHlo6es>MSqG}#IiZ$jNLgJGG~G4mUJ=tvOk+sLQ8i9kSvEY+v3_Qf&=G4N3g zhBu;j*+Ly`IEAI=r22#4>uJ>8PV^r*E9_@-wYAN%{UtOm)d)mVK&2Tim0s}kG+f|S zTn|7XsH^jeW4dzcwtKt2^1L!}tW zNnVw0$&IY?ijfFw=IeIzW^~_&_z802k+V^?MLHIFN-R7&q z&Mxlx$3ir``O%i=sGx_E+D(c zY&9!6jN%=;8H-heRZE#wnQ8S^S0C0%^^H3vG2WQDAZnwG_QQJQnio3c1FTMvSz@7t z+C%;&Nz|(p&5x%#PD;3h4o}@f`Iy;@)n_mnct!9(AYZVHqm|f48FMrW!g!ZO0@R(! z2l1B4jB@>9>V4+vPv?!yEB>&pjT0z~Fy3s{YVk##+Y&)nOZ1odp;baHsD)OGJl%YM z6rx}`WfWB{ckV{~b9erD7HX!nY`ZDIaeuFVpi+A0F?`L+QgoC;C7R_-QN5j-7Zd>k zEp&!w(y;2B%+Vy&$c1<( z8{P~~S3AOS537yiDJy(C{bSB;eVLM$>e}q4HbZrFkzwV8R92Yo*+qDj^P>@}i80(y z^8T#?A3WmgdJNM?_>nh%Gvv zyizYI^M2%&dgL5OUO~EuzB-zEw@Ap2ujs_Jawc9lnpN1C<1VetvIdf*8GZHmatk&ap=b=&CW~p zqp&-o0b07sw+>QOOPDbuIns({Z-U~4-s#Y$UPcEjS>#<}DJoGvobYw~C^s!jW$~!5 zBG6vvUE-5pYrJB6ku4Qyw-gq{o>TWujO`kQPMYLZSh9)q6ggszPl_HJ5#hsxM1zK5 z0)$-XjoHrI9eU2Vnbp3}P;zvZ^rHDXoI`?&XEBG?ENN!HInV$i+PWR8J#MG8nPb)J zQzA)rG-JL7S+(71E94>9)m*0};6rWETtZs9`Q?%bbp`L{85G}<`5|r;>quLKkWfUk z_pv+i8^D&e*aT=2?SbvHWn9{{@9KXwHNM4bB+8`=@Pc>icoU@h^5ZD| zj9aor=U1(HMgTZI{4_T;Fd-saAlaPB+Z)U(*F4FbRLYFv?GM|pFQXkmTm5;EOS6^M zvQxT<%kg}A9>1E;Tls~sTgxIh!(nGeLBgNUVcuu631&7eCSzA*HW_mfg^YDX&j`sKU)uI5FiAYs?Ma z5)ZlI+OfvW_kT_Mv=%e>_~N1)k)}AY@ML5~=LkA0Gf&S|pEhI`^6S%C%Jbk~{Uui$ zHe~gmAP)4N&Wcxt$)|I#Pm75jlhaZjK_=@S1(bbALo>~lE*{8rcoE)!_Vc5}+k_!C zd!ptGP+^~lhG(PL@(mx*om|Ybi5EwqxAsw){n#?xboI)qg`_f>RfG!$kNP4V;zG-@ z&^)=|!npU}+9_`84~OgD0(sVVm{H-W2SEt+-Koz0mS^~4$L?Xmm#lna=J01E#{#T; zD-~yXKioww6oX_mO^Ubi8y@=b4S80R6-@5873G#N0R(+0L&vgvTO&wu9+qsHH z_GmqcF<1A>koEjJF9+6h+S0-GoLJ+F!!2vEh2ZKrI5sr;dc2wn=JX7Vz(y*Xq29mHz%f8S@hys9P?y zdjB&h13ND%CR_gr@h*{%fH5)*RXh5YJj({WwS8R(KDJD4RvW?%tVdQK!VN)=-4eUn z+>~%rmb)RCuv?zH!ED>D$lX-*>hy*PYPlg{RwcdQKXEJPr`1vK8Z=8eKVa!Uabp~n zkft4}`^O zUG)$xat2+GpZTC~ppV~^S=~vF*S?>kc#Bth&HXGugBLH3nF$GRQ7{_*ECw*HnG@yq{JT=Q?Sx z!KB#1Am!Ug4e}^k_>&o(HD9y?&h>}*4qE&gT?McHWxKHRUzuQ&+E#v-Hb@|<$uH)|uddqJ{Z;4E@m%4vT>3!)s?%v|=WBYu^ z@`a!wfL;?H<##u~){T~p^B2~4o86O0wTH|m2}P2D4usKDyx^sY0}Qpoqd3vK87A8+ zMZ!H(d$7T)C0$8y9b*F7)auh;J;i=kNHRhnShZDuoLjY#-~hai<4WGJvB8@ZG;3sHS*1T`%Dn4B4g>Z? z9iI)RQ3D&G9RbBUdtG}t9sHW?hEnZhHK02XOc1`V>37420nwSJU?>>oLcId?a{$0w zHFnV+5IEP>@L+)+P;pV}2mtvSH(&=%Y{KkMbsWZ95W#6jZ&5tFZ;Ce-zp=NGY?3SN zRU+Anp^#qYg#{M_S3grrc=HW`Ujk|rc*Ua|h)N$=OH_=~=tkJ4Cz@X#_c#I9!ntaf zdchxBe41CjzoWmCN=|8TQ{>6!mo%kKnGF|;Ht1jQF$?WfvtK2bB+P?8>|iGCB}zC8 ziD_iBwY`G(!LGHv7fTnAfcOSlJPo z1>frRKvJ6$2jlgbH>M3Mz(%#i8oZK!(M+psgWD_f(z82$f{Ucq5jJ zV5aZ#bvo2Z6xEgPuY{QJ6}QOf{yGzM^3P-0IMxM<9jqL6BC}PBapSfJGFdq|kYDu= zWb$*Y>KnbJWMG(ARtV`AaQ>!Nha$I(_0M0ePdsX-LhdrJ1gM&Su4a%U80*Xmwz5}t zuNM2obL@;|UcnQXdzl$D##5_mZs-k<9bz(BYwZe@MI*I$k-40N3(7(1Rz}Sop=fwQ zlvC2OW8>B)Wb*3Fz{9uHNq;1VAl56}+{-m-S)2V4z*((oemO&pM8fHpbH*H=#QihWv)`6Luj@M6skmW1ylX02*4`+$cI zo?1xIn|K_FSJ>(>b=$~#LY%JXUvdEoPoMrw%xaGXI-t_h#oq*N#<6WgW({ezO8(@V zG8^=DFla4NIly{)Juw9<@wt0Y^h9UBp2tbPEn3><6*g6%wK`9#{`5uNbUQ zV2WgmnI>NVxk0hTd`+q`F*LFwS6(7##dP5yW+i6c(aUyTD*m75%bs0|m!#QLIF72A zLe2XxHCbDDE?~nloIFh(iCM1+9bw_^728=!%vzlczmCDm#qsdd=sE7j-gC)$OcQpJ zS$ee`dtmHu{CuHcJEEy+B37zpuXtR-JV8*5CFkNYrt#;-15)+V6~CJ6YXW^#!n-=i zA}%>UX0ZDcy?lImJEnMGS8lAz+T^T|93eMQ?KR6>*?A)7LhCE->WyGtAi3gpYZMPO z$`G4_Yg1-*bq-PH!*3QpB5$}AB$=3n;Tpa}Pa~CgR>;F01LP4fh|YaqWz_+ZnCYSO zSJ}{Ea+|e=w$==GLf;ulY}ZaRi!o0Pm^-nKU7NE`-IQmY8tB5(NVc(^zF}$-TgHD8 z62ZBohpyjO&6luZ%Gx%|JT)3wEoTTb6RRi>>!8MJA- zVWl;JfR$_+Z3+YJcvb-$zP%Ig>;MtVu$)tmwU4C(zPYlsk0th2);`vWMz$>(v{?4d zW3m1nW6fjZ4DV+v_Aj~0_gVAj%Ni7y%Ak0)40@;aT7%vz@~3R09af$}FE-GmIgv@D zZ&NH|}oLE?CPEm(z2@ySAE}k(Dj%QnDyTLLe}>$ z%+aLh27UO%v7dD;?Q@cthn?nk)-{cXSM>YK8#$8gs;IzVfIwy#Ka&0=esgEXCxOXf z1tt9LIC#1{ra%;CLuAw9A6l{RN~Zb7`?Hp7!^kz%R~nOHIH7Vh)BJQCw$|4&3@>en zVEv4dwf`#G!KZ*EzQu=>u5|E2bz_3Eeb(&$ZPH+cvwz8rCo!J=+3~!6%y`xejK}2! z9Q=%nr0*1s=i)Q+KU7yZI35kACOeqrY*47qSr*^MZ|?bDI8ek}JN@}Sbh?{v#JU~6 zdKa>;`#!^ZTYM9r72HAL07Oe(;dI#!vYy8yyB0swTTD^5iL9};^^Y*Q7C2D70~|B_ zC1JHJ{0btni-qx~HA3{w#<3>Uw(ws@I}Yb9*HE~~E|=E#2P~HjX(`C?f$;tu{FMlB zENrk_@&FJW!%-hF?DJzla42MCK~RwVun&To&;NiC4TX&Cg5^fUVE*!W_&a_)J^(VF z{l|`H5Cn%pMivC^cr=nK`D^;?dkir6>zlxk_8GeKap9q?KTUj=J%C9V?Sn*z4?pjm zo}S`I_-FWG;~&$A%C=%FK45pl1rDcTZGSv z2VAK6ZW9lML#DAf+!%BtJ?N;(JY{v~nX9kFatY;>$a>3uDIai_#h-x(rz}qH)jJr# zW&DcuTBH;-=nUY)7FW$t?6hy`=vo`kGErInMw|q$pn)wkZ|P@x+&H0*_%;m`zhAaa zR+iLNp<~6I1bCSF&PT=S63!e%EO57(0pm; zY-ki+M3}v{mAr^&*)#JU%bmqrJKA}TuWoJ)qLDtQjrio0Bxa=b6lLM0Jy}LU$>p`G zem3I#<%Wa#=oQvBe(f>vF8R*!^e)1K0adQ+-BuW%g^PGEOrx5IF&1wn@I*nzq>Sf^ zkHZ)TRuHfo@O>{Ky<*H>o%UW}5hLPZL zr-J$y@J(yt;q^S!XZ4Y!7yJsXCjmosiq9hySjLsk+nG9V=jgnJdqdWU)PbP2y-P1I zl#guwzxN(L>#pX!if{0Dz}_=qGO`X(F9>O+!H2kX1Fy$t5pYYhVL=2bEIv7_RZ~H{ znF(nPH4|8UQeQ)};IkJS6E*k{4}9|h|5~#UUYVT)eL`~GSv?q-*haGxp;FO+KLcz@ z+D>|9-(rp*<^|KHnUO7>e)(C(kJVnj=L}s>ck-ua!?<>|)(buX0ak4H=Yaetjy@#* zmX-NPVjQkLXoW%2aqr9_Lt3&Cv?~Rxjray>wrd)s-a6L`663STN{I@VDCfvp)`-nY zPpoqB5we!*Tf9kyD8aUSu_MV@2SFqEX#`@Q%Sqr#+Mpk?{x^}D5~cc<%%xt{&v;6RSw#=cX%Cwfk2WE{H@yDI5t_-AA}a+iCU9HDzB4 z_aG5+(`6~_j?VL9M{zWxNHnk}hIqa2bm1y$l#Qc^vD#?X(8>Y@#xs$#z_J z{?QK_*h4p6L>k~^WbNWtf$hpcdXk-6ZD%<-Fw3acG3V4omAk(d#0cA$Xi$v|gN`DS zDQiVfVMSp&0?6@d7ox$N*jjHciR91GdFev4@xT`3I3L{*?nq^dlC${sQI;m^RmB2)dG`H$>a#Rw96RX=tYEwA(-m#Zz1hL+uQ6{h z|83d%U$eMJGYd8g6I0^_0c& z%F4GK3T$JNzr+)!{!2rr{!5w-Ru>T+Q^oPd?fC2pJig?Dym%SNd)tury6F)Of%Wl7 zr=9=mL4ZF7pIoCzrg-iVFq*k;Ft59KnrBNN0$+k32Jt$#vq?i(wU-V7VzKe-6SKNvfMD(Z zuEGVMiOQfX4_eg)R^`3{NS!3(w#fsKy3#`G8PsCxn91`5s;KT0gb(W2T_g+-s8(vq zKyK1WNxa*8<-}nF@d&in5t1qBOm;qm3)n)|@kY?sV5fvUxtgJaLkBcEU5NY40gy(! z`_au7=9sKR(W=rZij1s+t5k1!c6mkV}iBK9V6gw8n@p@GtqLHtZyi0ugnos-& z1p`@q=YDPbB;+2~?vpV~zeU zFeUp}7COuShPSvA^G!QTY)jr|Co1daZBJLP?jTdYS?f@o&IJKzZ}7^}*=CE?EYs;6 zMIjzEbnDqduTEXu?3c*RJ|8bOYG+DGwwX3~`O;Rdz~7Mb21eJ$I_ zK6QRz2t+n3uHp}nFc|J-#m*&!1M}5CD3xd5PnEgE{lBh~uP)VO&aL04OSdE$SR0py zXO}=!fLW^)3~{px^e`u$o&$oN$42<6rA?FRdHY-|3rwaLDF^6wjpAacLrY4ar*OtB zB1aFF&0}gGCG`vw_Ns~$Kf;sv!~7|$5*!F#&-(jRIa1Q#BX3RyD2fi?Uh}T|(QO)j zdo+AVzxe5Q9nC?kCXyLiIzkP`OH?aa#I(^GMeQH7H$b=E-=Ud3sHvw$f^Zo}o%>|v z8&5Z(HyZm-B?5``qRNCiwFD$JjX^VEs53Zg9W{o8*`FIRK1ba2D@U8R%S z7psmL0groltUwfN_$4EWAF6=C08@5`Xl-(juGVsO*=|a`sY&H4a}ViaLxNRxR?Gr+ zMBB_1Hz#^s%M5;5T-C@)Wp{>1AkdOHJ_XHKdI>QwmM(sv#MSOt@ep-fvy#(WNV?$L zd@_qR{C$E_#ZJ0NCBjtH?qkWf*}*@czsUzcS$a+>#>A6jSBvMwt(nVwXsjBi0Dvw8 z6^jGB1mem)=5A@!w#Y@9`bqnJm5jvSB-BJ%W~b#HUgk!^_9)XHNeWxCQ;3O#8Kwdw zfo^|VwTyA$IkF@St(m2V__7QzvfBkbn%yl8fpvDbJi|trlSAI{BNl%PTUXkMRsI>e zqvib69if7yBU5)2BeI{**)gu)9I(_$-#I+AuR^?P;+5T2yuX|<`y^MXKI`FSen6{6 zNlu#JU8ClxR~JYGZ~~M=<0v=MKL4{m{5jQy1krV-Cu&ojgy#v8UBVfYsCCBhxYL>L zRyt$&Z!c$Z$v*F0M)hXgReR?DvD}_ayW}Xj^NjX1eA|q>+YWiJxv~Q50a`ih6Z9-< z4$!4UU=v;XztbPWLD^VS)x-YRQu-5KgTVtrp2iYvS_oZYjj|^=jL?hb>2Bv<|55I4IBgMHMFnhU1%KS!d8rq0@@)O(0@6!|PD+{#4n=F6q z<8}79LatflE_hAtMchSrqZq~lIPi?Qq$-B{vGlM6FT1#JG&Z^D2L)!hZ*Os`Z-ZsR zQURYS9ADSXzuu`Xas_AAQ!1UNHBQq=r@DD2OolVPz-g-6=ZxY1bmpM0mRpKUDRIW| zpSRUhW^${?HI%ARsirB7yv6cl4?wxD`R`(p&iUb3xCgEzyC3Wf;qp$2HBCsFufK63RW%~Oev=YoXKNCryNW33%zwFCg#H*$P!i*n~WKksx$u6)>W zR(y)v+Wl*|3Ud|N<)psK!D3d22~9}pA9EU|){*vRA#w>Mw@o3(C2%sod z?5V*jBk(uMuQHM*&d7T|N(#x`J=II7o)tgkp7P;R-joe(7?>Q=w=*TQP(LYJetaX0 zAM)!Qje6w&SM^ag7v6&U#V zuI69#&dq|#U+XJ5P!~xW2{1$yM@)D!6EdomI$AFR=oxsOf z`b6oFj}gHp`EyPPWIh$9ooc5m<`q{k3V+M8lXE?}(C!WPZ(c8g z7yG>cgVVMCl|+gRMs_tnoR}3OmGxBxuK9eWYp$=5rED_X1B&BKaU#`OBD2$K5@J-O zoE4+3asCV|{I)!7)|!40w@T0}YnJ5-Gyo%UB_{QpH;ph7Ap)#Ibt5Hw1EL$YVh7m> zU?uqOTiB7!9^|KI)!VdwS3(R;El2!q6(}r!8_m>KM;8#OXFVPUIc6rxyA)gQO@73ftXfp0CEHwB> z$o%UnOI`bfwOrknsZ*T1i^OftN=)VZnxltK781H8GYh~u(c#XFnB5gB6HQNGHi#7CI z!;`%-g!+UCKqA-Qnfr!4(gJ7ZK9U3#RO?uz@yy@TV3v9qPW%O7%n=8q>Y-gRYs z)@>~CA&yKm7ev;Dh9D%svoVv2OfR25-Zf~#-OQC#)uV{~D zC5~^d)p%f|ZL&1mWM%VH8r)E+Or>wCJdlS_u&jSbo0gXeoQICvN~V2X1TIbqv(GiJ zB7idQB-5WEj5#?f%_f`2Z!rs)%hLz*m^E`8gm=>!*h;AW;N4{8Yquf#n@EXK>gd@w z^-51kPT91Dr{@fL+Rjtnyw_8)fh`Y3*3Yl9L4EMbwqGjNm)1Jhk~qO{Ge=2vWtl8_kUp10A!hBP3U7u^CjQax zg|m^O#m&17;q{5|yQICAOkcM6tdAG8x)d>n707TDRB>+EaF{-LUs!oeJjKY185V0tI<1f!g7+aug1Ez`^;Zc@t;6jNkxnOdm)0tE5Pz;u*i}PD+~7??f!lo8 zI;TwWF8StV9Nd?A#b$~(u`L zuOmlp9}$nd?xZ@oOYJ7U^`Ut9Aco10a%vaE!|NJwpbo>ee*vjk9W4cyiAc)#bX@$F~ zK2st9&Cx1ul7-ya`molB%bcUnQp*-x8sAN&r8gDsPAWsme7m%gql2-~LBYW?f%9wQ z;iu?!TQdAqL%4_dkcPbW!GI|P+tvm_pP`O-io#pa8{*&}ILz%-?c6?E0;$#^JDWEzQ1%fIG`@x)Iso{Tbf|v2C z9*xUCbQB9JRntri3kJ>$V$a0PE~xP4>%7TIhne*1Nk7`)T`DOh(Jif6@!)a9zi-(=ts|7;d=7p5$e)abw*tG+b;Z~ub2Qcl zX)0t3`!mpscgHkxbvEFdNAYyEa}D`QQRZ$ID6oTp&-Ngj5SOM-ewzqF2M{B2Dr9|1 zLx2WPOG7G^NEf1#;1PC%Kl5FOM%j~xS&%vW62fgu$m56C)=DkB66MMUjH#l`O1AdNTbr=%=uyZ*`0|jI6Bcptln`W8 z2y$s$e`XB#QRJg}C{pnfd=we}JyGQALUQkoA~)*w0E+xq?m&@AZwj{LhrqY3pvpuR zRe~XRYg2?fL7GhF+{=BG$W?O0J|W2&A@*rPSW&o5{~4?XY6lEfd~TIcVbr3+r3oR# zr87oYym+|~9qr^0<3MFSo*@jG*M^-hiy0I4?~D;Xe*Ei`#gCBBWyqt7ErJ9e*15

GlQGOK$T1p!tBq`F^^pbL-!R#jA5}7CV(C8;DvUKW-knh;w zNTYrF%$~y{#BaDBFg}p6RIXZP zF8CFvq@L}$QUb%=!{}Fd(h-VBx|@kM&e17t9oy`znc4Q`@j_VV+ZwRa@U96Zx%bMx z1igarE>nc9I45xH;C^LduP9+F@`17K>ADO}O%?uRCywpFX_NbU4%6Iwj?@weV4UU# z%YeoqhW?`bd_5@wh1yUql&rorq=lTt9sw9gs|(hB-!;i#iak&<^~h*f|d zBHr=N>4m&T_qaWgD#S>ES<~GweN=xtAP8@hd2qk5JPYc()=7ka{ObGYW`kYtceD{X zKvCgfU*cX(+#JCfSpF%FfCSN5VZ+Sp>Ti5j+4tQ3&W2gR?^Mp4}OZ^2gToK90`Ilw|&;`Q3hsd7;D-wXu0A~2sV|E++1ETz@&2jll=Qy z3ICLD9F_+{WY~fk1L+4Vc>*`{`Y$V)&IJC%Q=ZMd@|Kpu?!a@&e0h|nV3@qd!pukC zK7w<4?@ugB{Z7?Pe&w4zhhHV$Grx_dXF^K-R&m$F)}?FGi-MS#Jw)TIQstn0&b({B zyj+j5Ccw>Qd1cJ`(U$&|NUf~l0My5Kd09}GULI7bSl}s1wCp>)euH?c9V)#27qRpW zq>|gY0J3HMFUu*HxtP8u(vwO=Yh6g^ZyxOYY`p@~KEW@8c!J_CVQS&n$jQnTd98kQ zM#po=4@jY`G_78+2O>g_tczj2^5|P+%a>qFiX33)lB?shzH^DX=zX!D9H;$@J~aFO zWLo4;IlE@j@a#1NkM8eyLH3p{XS<|nk48xS$A_+KFrDaGAMXqBH5;XQ{oTAtkO{Nhbu=OUD#3sxREv%sF;&@l>;gKaH|q7z8_SL3{OB@5?M^OH_#*Ac7($*Q$j4c}T#JVB`8-}H%wF-UGsfoQpRt-M zZ+^eov||5%5dI++PCT_b7>gWeen2MD`nE!isEa;AQm3O6{yMa` z9sKCo{zvtgk2=dA)`ee8VJy1TeA-se95{2B!nOe9zf$o>3koVhBX9mNTim;<5HklX z%^sl82(!t)fAfc!ilv?lEMOv2sx^+x@2`UQALb}-87@vJf!_a6k$)ZU8 z6Fq3#!TRx_z7kFUD#Pzd6`_zT@>yFXR+BIr(}4P_Ild4TU;N$|XcVJP#aiml{N3nb1$}TV zm)fRBWNx=#{6cNQT!jX98uCQ&pw=W|t}h{;8iCZ1{LGA*zX~>>n}{oj8UZtbAN(5& zL*cSQD)GoiguJRTA+Rd&x~_NTX-vN`f2M;p@0_i!HM`K@F8O6S^Xf9>KUN1gc6mtX zv?G0|r5_d`C%w~WysXVEh@*vnr3LNmhj>QxF)7Im6_GQ#lN?`E-j0Or{cg+ zkNkXw0<8HS^NKg{W4;|*-nHODm$NC)5#`DOKa^Z)cYk})f{&b_SaG-xZxoaserri{ zLoGs`mf=bBeeJTS`Gw%j^#@~qAplgcuc%nZuXB@n=fjJ`C|B@lbe5-h0LXG4wS(1V zWbaK(jcaEM^tZ<%Ynq?$yUE@9a@4#?=>^m8=MPDC4=2qwb}0UkF;o029RI&Pt`pM} z4C2qpes=3YOmda$!%1|*O#Dju%n*7(^sS0TUTS_+&K;VHocF$r5*p(Z=F~dNWj_;j zenc3ryUGe%#@Jq7fx;aTyzD(?{gw;+k+mq@)B8!@!wAj-YFDyKYn(MNAgtK8aC(1t z!kb#zkqIh-km>1o5y#B@_)V^JUBJ06vCp}#)VXdtNE2I|=?JbiIMbg%L=_;%NG%39 zKX#`7)){j-!nNr=Hc|nU*U|71H}a~J`Z*wz>JK&FNC!ytJgMJcK^aUrYaYjlli)a! zmA4PWpM3sjQ!k@JUK8$84|4R6L>Ph8>X36?Hykihs8M=SUovn%6(QNm%1Ea9H}+!* zKBh)ii{t)l|0)xN&1QVv-mNPN5Ey+Spg&WCF!j!LYvGFnv{@S9Vw7Hx)y;DIrBj2p zT(L^1AcZXBtuB;KMPaBoHL%0~XurG}`X(BFn@`$LXcg2>wsoxpEcpw)4^zypTw)d> zL^_=nIz|;bqBd%d$oyU+UjkL2@UsCkYVo%&zBdUh3xV3j{wsaSY$IVCIVTTmI|x#I zdfDuf!SHf%Oxnq|j(Lq!+X53<+D)y_*GEk@!5_L_Lm_Z#__5_WAR96;0ozjtdP;X(<2T`Zg zm*++fHgBcxssBbN1muFx&)JJX@SJ$h{T6n7xT&v3^jc&=5J(c7PSuks7Ak!pb*9@w zbs-;61(EqBkqSwt4TwG*IXb^85#DMxg*OlVL>;o<^QaiK<(_W{fQS_JWGlLQ@c|Ff zUy*1!u6+B-A?M!S7mnCC?m4EQ*78nfhdp{8V~z_lk5EJ>&uKoxlzvc0kAIz~FXmu` zgB-{woHRe#ZNIoSX&w{SPPDF3vMtev~4DU1@bfhdD!ojs|y5@d7Bkx_fll|>uKBbgl++R8AmKeGaKtwvZqDiGMSpT0$`0~wIH@+C$0A#? z8Jj;cYOaMUpAsTDpqT>MxidQ9TI2&?M`h#8zMpZ`p;akyey(sNjfKm`_qTkc^&Mr5 zTu2Iex7fPAK333=IsMs>5~{JF_Y|7aXWBLB;x0r+UU`Z zZpZVu5jkL=J`&qrdKgLTrNK~a#P<$zHn^?#y~U4~fJ?b$3v(q*x|QVk?7%^ls zz@rS~h=u{=SSUjSIB+T~JGpgmPStt+RlYxzq;%Tu^!xO_=k=-TP~L6`!@nH68%ner z3M}s5vZs|0|NX5x2RIJ=Gs3?q=4M(Udq$`6o)P9L<{k>**Oqv~4ssZa@D7VXtjmFg zkPPf3HpD69KYE`lK7K9M@$CN=?b>@eA3w0Bq@c3ESy2hqIso8*0PcUsNozUGEytt! zL2BQpcxnp^Z{%_enwavXg}D|F=+#ID&8c9X@Q1@d5PUKcqP)XEo^r<=2KgL< z4g*@XTO@lJge=VjZ_xUzn1t+M5ICtVbN5MZnNuoX>HT1y&F`^sI-Y-DM&ZDkf?z?& zS#kC;TVp8G@ZMYFB#WPK47Scrvme%VXJ)%)a;8if8z-6y44VJmqjpZU3){xs$V3FX6)L22r6t<$#m z1;zD8VU}p^vLC_Hi?<=GL?clcMINJwtd?p9EprlStA&fD3uEca@%JXj7iN^!K{n5J zN;*N=VO#&nQ>x!v=pCcq8~q3U-tVPv%%dio{-EFc-TK)-==V-SiR}Z`5dGfsMOppc zF4zvM-+KvZLGRA9h2H+1`n@HCC(8)a?Cb1Fkcakp|AgjXt@CxVd7d&=TJQ1tXQyqE z-=q1~a$ukrD53q{ox<(_pUpv?CRVXG?se()uzQGZL^Fp<59OTYDpM3$qF1@bXlAfM&7Ti`!PS9kBp zuEQzjC;p4rb`0!>-^Fp~Z-|rSvX`CQTAV8N*awuSvpeDtexAqfh*QU7r%rMqPNDw# zCnwO?ef$5WzOFJ)Uv~&9bO6Brps)M)>g(jNcMNde_ulG;6(@~dqSguMl-NgqF!etc*Z=3L<31qr)PD;< zb_(r9e#gFeUtS=mjw?Q9e+=adKH&S~1Gye{dz`?YHJ>^7|Cv7SgJ*C59y*4TSHgYb zn0@gF_Tb;<`i|=MfrbGcH1soGD52DuN#eCBDHHP|- zr4wvEjfb2ompf?Lm?9`RKW{8d5{p+pZy#+vWPRR7wGw)SU^H%V-?<&njj$eXg{8@K zqNI<2IwAkk?iZAXTQ0O-Z_%_HlnSx+V8Jq+-yZ7y7JcY=4$rrB`1nQtKlZ)_KC0@@ zeYr6X5P)l(u%O zUAOE0x81+p?Jl-jifFqti6IHdBg6+v9|09_hz~?10g?HCf9KpgGYJWxHP-$YKa#o6 zbIIIND^-K)QWr>Xw0 zvixUfp+s3M?>o4F?JPH=VhUjr>bE>ySc_jf9~t$h$t#FNepGm!fp-|c7>A9s5U`-d z9+wHpsEc_z{0=J5qP-!oFQiUQgaX?_d>bVsPm#_|DuT7*Qw>)LP|yc zrj?4U#V&Q+b`bS4hRR5W^ZiSdkc>TyHx)%<<2M2JlAB%R_WvCh3Xhzl%N+JLR6Q zA53DGYyfREEg7tLN6A532oEXhGl|#FP}aXa5<4*8FUSC%&QWiR;Awb(GYO%e4YS>{ z?Q5|~SQ7F(GggFqPlOgA`VJ4;4MGM={hhK)wpcmHial)o$smJD(qB-)vlhJ>NDgUB zCa|8;l122JB#kUtt%6RFl`N`NU|#=y9+3l-u$Ps!PY8N|@PvxNlqilFc^5PDZpN(C zOAs7aJCgAZ!+?+7?;yIMKW!-WFX38-y#HxVO!wFE?cNrdojehOYzo&iqaBWc=QNGS z<@x_B_02yYZK}@*b`VHyB`1qxJ2@FAspMoJc*_k3k#=z+*nLt(6Gq|xkh}(<`-kfx zaDwBH%2X0;4S`aW+hnu@)hd#T0g{xV8z48Cbc0ddLXCiQ8}W(YoL|G0IW&ldE;65idnS z+FVlEP`=e7q7%~_dRt_c@_7TuqQ4F?6j_{{jF9W-$q*XEAmuJTh6Yi6jnp6xosh)T ze|;a?H2OEPCl78L9X|b%NCQBKo$`e_wnCv;3WY7yqBvfrW`WF08A6?@Td+|*wsHY# z5gE&+1E}Ssq5;Wr$TDolHgyPUdHv{xBqLM;V%7;M7@?~^l7dlpg5vOS>ARmz#SirI z;q0M>u_;F06(o%f$XQ0dvPe=+be#%WOmEBLTv%@tNMUy0$Mnd3hmo5cK?<`?dUc3^ zpzP&~d8BYDr7vUmDkLyt_tvE>uvsQ3BZYYp=Wk%1kie|(I!r#hh$~5{%zc_r6gGS%EE(60#S)0F=X>ES9>|11QZW%^vvkaWgRAni(beok+ zZFd0HX4x@m?iclqhQYpvbn0)pp)Lu>WC?bwgkQ4pP4Y>?<4F0`o2`86=Y>DgvbG&% zGZ@0nsHfpPba00p;4t|!29YnQ-2Cy}z{6%wmG~~?J=z*bI2wN#CT#vR9E~UEgX-`e zt*zPwFnq4Y+7qROVe+pG!gNp_|9E6DJe|p)fhPvhdD11!gq_)Od>`ZNsnSC5S@tnf z9B6+(O4X7y*B{i!I84yDJdEQ*wn5-i@-WKsipP)iOXsr>!+Q5I)`L$g-tY6DsH5@n z@{eE#_?w#cx5A^>pE8vC-{IP^+0(GOe!H*0w`~vO$V?;G33?b$+UAd5V1>Z*`=got z$8a#-5Bb z`I|DC82-{g5OA-|XI!yYZoD9&zDU(SF z`?#*d&kvx86LlT_?c;lncB~&yKORrTY30gmy%&VTs(ONW-PJ~jX0 z8SpP2$A9?RU*|srj~>E*I2m{TTK^$RD}TGtcMZFST}xZ;1~s0*<~?jZg?}>MU4f0i z`OD?8NsEy#)44m;*r_y*c2kz4H^iI6ohJ4))%eOb>SJ9OZPurehcl$C&GUp}<({yf z$etO?!ye@;<9H^_bNQGHE0G?KU&c4Ws2$j-=s(4+vP!ohZdB*;JK-+~W7AZ%>^f`{ z`~gn9GCmzqy_%bA9xI=>JvvR}8uArqBbR)(v$iZ5{ah-S9Es%kKbY4u9=YUC=HL@f zuc3J&My0pMOX=iZI#i7yHXm;5@R8B7T{Sc}o?&$dMd0Aiy8j)oiTu>Y`V z%E{Oi7*joFKo{Xtkev@3c3-jC`Y`tr9)>&JjY*~9yKw8Md~9qcwn?9Hm|x{)o!zmS zV>B)}G%ZdTfh%dTM)Z_g;g%$DVX(#0(io1IW zd&;ZNv(7GNj9c$RhdX!YUWI*5I}^Ld>KnZ{8>{A)Bh~dlv_vhdDb%8~d98`(^mrC+ zz@sI)vcwKNntz9ydsf{HndCM@B)Rom!1N=o=mfq}ypf1F~4)xIW+n?-0FCzRU?9{viM~uo|A=n1;#K_FnMelV!iufc7xNl93S z`e~4cHD+87=8wfKWFSJB)@TKmVv59pmpX*U$Aur#k8dn!qcJApo(pyWhg;W~Es41Ka z`Fy^zd^c7&65qTCVzvH0Q@%n+Q zV=a0#`05w|Ye00OTpR(v?CCszAL^LwL&hBQ_ld=^4xeIyKF0f~p2(GQb+qb?xAbA*=V~LOPeXB1X{bdfAn9 z?PSSKbz+zBs$XUpaQrVR>t9ECr@LgA>^#O)FGymO9UR8~kU{NAtd+TZ3z!6o4uD(p z7eaw1m19EFE2gU>0{mM@%O*3%3|u)ESsY`CmGeX0$hC6_ z3L*dGaVKKIu+c|al95wUwFI3RY9o>1o`y(aWh_5eBg|L1`v;L&{tsws_(n-6Y9Kuy zN3Ej&V9m#|R?!ogkJ|Kn9Ft=W7j2{+GB$0{R?svlV`z_=P|4s7YnZwt`IVRvtZ{R} zs(4rM{L{ zTdZ7sC9P$+RpEM;Rx*Uwi-+*E2(H)gTm(9#hqPK)WW)k#6c|fkZJF!gtLg2)UPYe` zK}#%dnh?nLYgiiRm+TBYuQZ&AE23MmYJhTQdOhTui23@+dIl563)q<22=NMVsZG$C zL+2+tcdHm`BSi_qP$CpXCbbsEv6r|9Y75L8qov*mg>j2CcDP~esEwmvVeYZ4S@@OJ zkp^0`JhVj4CKCtDSz?~W3E4ZaL}GOck~u4F??C-Q+nyEfw_J{@OWCuiHlk(EiWr(z z8xf$>yid|{3i}mVv*KjU3QB91T^sS=aoei4M%FA31|Z8L8n{8$tN}fwvRckX7na~u*ulFbq~H~Kd-z1bCbNvU@n zA#n~kLfA>DNx2jP^91H#ABhj~fc{JYZ9O;drW>z^(PAijg;nWIh<3tW5h{7rlI<96 zSAw*VTMA35;@kAt9@%z!fQwFgLeW}M0omy84izXz@N^kUY%G!~&2k&3(X(i#w(R04Cw%zb(vFT0?c+eX3 zkSx`ckEi-wCHzQgo)B*Z)&avAqUJjhlDxI|rNrI|WF=I;vQbskM94X!P9ZRJrN4qt zmXYD=O*zm1@4>q>&FTJc>Q8N|OkPE7{C(87Ox<^QAvJdJu7#W~>Y2kWdXu374l|@C z4c;9J;jT`gmKqX;d+nqo4$`*Dt}Fqk{Z~p==(7qftTGl z2=g~B{#3G)1)ftHn&>Y0?CK2ux>*<&U`4x6a#!{I9Kl_q_YN1b42HRaF%bHq6RL9r z44~s|1_7!BXJGzki8+)*wMv8MO@QZIy3&82%AlYa3`GQyRYl z&9!#}8P=2rSxfsL+R!3@K}OE;KliUNfF*A`%$wUqy%TBL)bV&IupcuSrxB5w%}9xfsiK2VR0&WA8NhcafSR)XNTGb7EPpEwjgqtimW z52_{2*nW`qBFQY!LA5wgo`Z^&c|*C&`>^7pP6w;I?>!vRWML26y88~(2|%l?f9o`R z_mXo36)gqZRvJ#jahO|Fl#aAJ0ZKYKU;XJigN*ELOpxg+Nr>o1%Fz+HjT5H3?iDKG zC#cHj07Vhe;d&lD9wagX<=~}!P!le@BsHBRrH{#S<|LKzeOyy5GgETp?ZIU zSRBp)#Nxt=Ljl|<$_)ue|CXhE*n5ERt1m019};l&4xKaHrsLL zWSAtA3|iSuObUsd7OepJEn0E7Q?x?G041$>2GWW*MJs1YTFL#0w9 zas15if2g83_-Bn?>^)D8D&GN#?NpTTK;i@Hbu9N_E=4sD9rZdOLPK2B?<2j*3357z z8DD0}XY5KCOg{`CUC;jG?s&2ej|@=c!p8bIO`CyQo?mk_W6A(G-m~_9pN@Vv;*hY-Tj2p0Xb1Z7=?*Ct+`2I zRBCPmg;8q{%D;ofRc=6;u21pVmUALA?id%Y|wQ)dKotTZPdHR)!%mfmHL}6W4|_)|EmdcLZgt(Uy6`SsD>gWlN|Oz&5p)Y z3z6B49n(VNudIX{lOKXRUmbNQ?a^0pM^l#n@Dzsw@tC*RzI+5Z z1rdZvPW+j;CCeW+_;F}gyNJ+wEb}zhM(TL>XT08|8ZhKTs2b2sFe<=b+?D$I&Q<93m6t^h; zQl)}Ul%v3s?aazj_(eY(M8^PSVsvJAkf|VhiGB@ZhY<7kHFx7qrD0D>!+Y^WJa}6( zJb15L9z5i#fBnP0Bt#_g;zdTaqT2Nn9&+K~;AxL^;cdvq#O%Xn68mHxTgDV+tjWii zqTsO3PdemG^~?E@Hq{~L2KLn9o*s~g*85V)UlbJw%&2f6fIy#l*eB}V@zq4D1Iq0q zNl97XV-?%aJ){3NT!`R2&90Xr@f=ERaxa$&gDD z;?ajsUigfzM?saVSc|at*Iy7fhC^37it~efMvm$U8LCA<}TW zT`_=yY){|uDQG!iq729ya%yD0`~SB2A^LfxKmGJ~_*wLGw8Kx(kGCKFoC*5j?+W@M zr{78Xq5P|lE&t1vCsUp)H}WPzo*TSiKT^j>bt88?olKrPzF)b1EKKLnB8Ec!Rw@A{ z@2P=Bk0M#0hLVz%LsB?XGVs?zWy95DU{Rlf+@@s~&^cu{Hi2JUFFFU)(VFG)#s3o`Nv9wQM|jg7xv zBt~x%MKbgaSqMdM+@>^o@#1=N-O2L?O2`#4*4wnsy_P^K)jU;M>mC`_<0y^cjvqUj z;79nPT{+>zk_m=8K)?Gx(WODN2*~Dif>{L8KmMtt5{RskZz4z|#7DE(j4{v(k*tR> zO_YP~G;w7t)yL>^>${y4HVoFlJJPi=nvladf>B|N96XwbiWvBTLPGf=D2n05)atu~ zkU+wtwnNHAWsHkRQG}j&k<=5ZJjU@dMo5VHXp{V@z%O0>WTU8l@)^z-0q5Z_Qca8( zQCJ=S);uf4U%tsIjKOlL`uBFbG6u^%eLYrnkwtP1>;};yme@T3`*T2q-0Q{OZi!u4 zn!iKMJ+*H7VX^h|bXgVSZ2bdQv;YsI7RE+IG32ksej{tet|M#RPU2HQBE+HlMAN6I z!_WO&Df0Zu4=6kVJcm+Jh{b98n@HIpCe*l0+`9p3izuSOZe%wgEyXUSAwm==KB2#T z>q%lrux}yKoa|faycDX!Q<*YwO&h|#CCpf4;Myw;Vyxpsb=2Opl}lN!!*m7xA_ybb zy|$4ngCBzbTjs8d@!)F9-j$tU?-G%=mc5H2ZBu&r-KpACH?Gp6%1Wgp(qU!mw9;P6pRSzmemq$#UkL5IIypc_QW z)sl>J98<|~E;66V`5~`Lh_?tE7WS=gv8pXprtDa%;r@XjogvIvVL?06jCJ_{+BtDE z*2%dU#5SLHNK%B5@SXg17OeKJk88m?IX{EU&p-){8F~4Coe_)bAyyJe!jeTP#=@Ef zHIMW$Va|Gy%vn&WEOSw z1IFLBOj;@`P|1AlOK}|rt^59L8?lN^VOnX)*&QIF29%ve@D#oW`kDet|5WQ5XUlVcb>%G-gz39k2j+^OJyk@fCIQs~t+xYC=D z^%Bm5;3`Y{C=I9M_!F*1p>lBCZ3r0a+h1qtxJ1EBOfW05%rV27jBaFNlw^Sha4fnW}1~Sro zf@4>C3vdN00IkoR-Jp~!L@^(z11z!Y3}^uN0Rg&43OGOw2mx2>V9^%YtUv(=DghBF zL;@?(364bq>qs0AD+(wLk9@MA7?fu6E=v;)p+XR&BDzWKCN7Al4OKn>6feQY{X^LG ze<rp3mGi8~YbvfPT_!re?U>}xn5<|*0x2~WxM zm=r8#V3u&W@pj3{tObn<2Jr{Uk6|rqdUF=by%NrvZE0uCsVQd-3T=XJE*4B~Dls;& zIl~;GWa`0(@L)+?)V>|?gaL zHW5e&^#C#A2C?ydcNRWLaN3SXJW4&ex+-`SWz0TMu6>i~ulFrbzWW;gFoYVqv1!f< zSDe47xwgk2haRv1^p~Ms}yoL+UEKsU<;K?Ih_K91b-1B_j*VUsvA(uM3K#PTaVZGZKeS?}BP4L94=)LRiHV=!r zy{2xR4P9gnGQ=(33VbbTUx1p0hIlE$ zb$UhOuRT+tvS{hztHazB{7ruLh~~n!Ut2ZTX2e?c0Uh)E%->w%7L&}98&ucbeV$Mt zT3UrDcZumC-peI^MYzO(9#@DTL32TLt7dG3KTaqh2m+Kt$0c##N-YjpS*Tc9eiIM| zjXi=3R5Up#PI-> zEmVrR9c}9-B*i*9=mWlwriY#){uhi+)}Nw!m%(TWe*sOSPoA25^Zg)}k{9Vyx8IOV zc9T?QIxn!VT}#)f+00jVFSBo#(rt=sH!uFWeXWqL{Uffi+9S@WB3?9;|BZ{HS5{|E zvpbU~AGr8u$z;#X@;K`kIKEcCuA-PA_163l*&RJo?6I6@zkY_eE5?#zJ`~3@=a|3w z4SvRD-tg_hm29(YOEQT^vudV?8V*pQ$xY_z06u&2VssajfeS1)`&IMYE9oN8GktNi znI|qn`lpMM)f~jj$rk-XSJYkdW^xOxF`)p>P5mu`g>N$Z@Bomk7BAW8myFwJXX8`= zI92}#l*x+_tEWn(LH+5%b$ACgK8UAk*abqvt{PgP+*dtE1L{fknc0yAW`J)>*39(oEUE%tq#A0W4~%*vALlUN&-pOfQ>x#Um$mqc zqnh4vmS{Q;55I!+rq|O zZ575{aogTh5}y&vzeP*z9uaoU@o5;S1_%?R%BJA;EAhIBxU!!odZqNBSKG3YJKHMVILd=rEr) zUUYO?f#~S8e9_TqUeVJ(#Hgpy2^yb89Z?#dLo?>wjLvj7;R@65nG2;;)9($UULXON zPb&ya^C}HL7sulR)AE&u2XVX}jLQ+5{%cdEHuw&~^8biyj8B~_Ldp%72HGGz*Nk!> z9k@NL~}bV0e2OfqbESLXxCz=MGH`< ztcj0`Jb{3K(w}@oArBsc0 zu2%OHo%65axXPlcX==^_QaKVaK2qh;Dk#b{FA>Sd!!eyeoC@zvMl- zK>t~5uDORUgU|h$e)VU3REbvp*Ucd^*eCc^v4?;URO7Yx9gvcx#t*Vq(PV7;2qtzL zV4ZtP-VE`VK%%`XXh}JYmQ=o7S-uQN88Ln?BuaiiEjuL#2${mTjv}Be@kSOPX04Ze zMHe2>vG)%Gs<5sl6Rs^he`O;i?gv^yD%+JticjSC_u+4ZuOK*N#7oB9eq~L#^o1{{Khax2iYw7Rc-5(OyOYVktTo1=y<*Z<<~4)x<>lmn%URat z-}Qgmr8IsGq^hjne@^BNQN&qpX9l>^=NNyF2Jcg`o~_1tDDax1d+{pyL*_=@mJP1)l3HlkJqfk8K}p^}LjJ#{Zrez$5$?fP>ZJ$b3Kr$imn2fP%Vs{9WE2P1_` zolX>1Z17UtDuft}EN?^DxG#>cV}OiLNc2o7=``;tcQ_6-2rBc`+lC#c(J9O2JHZE%19u-@Wf%K8+ zN7^wqCDZ(E1C#xF&Z6DOPDda)!pNuOj$biFkE}TCroV0{_=68*(%F^V(7Wy29LAUT z;TsjP$tzgkeWgBMtRcVx;_sDW`!rD+JOZANGRZb-%KG2xN-)`sBw}Ls;Pa8#*%i%w zN#d}yr8F!VuVItJcPe-n(t|lC0BBtA!jGPCS?n0A`pS~_UfpKEv;~Z^{I`%=W4C2N zz9>0R_Bg$$EU(A41*=i?ob|?67vf68O}GMRT!4{I$U^VnptQbFz16PpI8^<kv9np3tpg`uQ5%B`Y^OziCJCJ>?=K&&EZjflpMI-i4#=waE5&&r5?@>MaSML{{D zT6->tON+UYBN;KsNFF`jNKllH<^~3$UGcsoXch#_#0=#_BadZoqN}^;s`d%bQvx`K zdHN})OI9;aO^~zSuyX&pVT~MgSnvJMa1CqkWHGE}%$Y2TE_w0U_4s0P1NpZCk^<{% zAtA}VRIy(GmTjU{-1lG+ClPaY>Nd{wuY#;#wS(nKlJCVh2R--ZNZO@pcD$P&JcJo9 zIbh5GJd<{TCd!)4Ou~~kS2g?5@&7pC@GaoC*nk1N zTtW;qeaRmH&=!4zi^QFL2%7|GSa)#iblf6H!`LLCRsXzT$2UOmhP0a*>n>Pt1jB=fZ``@@qyo9P3C2Al=HYZ~tc5 zf656RgS&zsi<($(W*^0Pv3~9p=;ASQ0#rM0XbDxMev; zwL$oT$;i>sZ5_Jl=BPHgxhp!tvCrk`Q5zF)O?XJ<2@=DhgVjCVhrPnytQm{&WVsro zWQ9?Z?@XzMr~nCpIdjm}RhD#+0FTexq!~Pp9-;TF7TwK-*|4?@9mcjMYo%yW@`5=N z7$c{IZ_sDKQJKh+LO^bgKFjTaDDeo|@I=q2^o6a~vY*(4g#Wj^xtH`$^(W%>L6Wj2 z8Y{HLpOWnsd!h|BCavU(?Z*rN#I_&vi#P@#Fco-^;wX$Ae{!V zLpV&Q2mnim>6eED@cB;^)&dGZdjNUF2>`j2I+|^cLGK92FW}{YKn6@npsB^q#TJmg z89)xEfh_W>2M6*90D0MypD>W`{_;Q|PY22nkUhwl+k>>?w?^h(RyRxdT?L#y1ZNwS z6Gx%4!$$>$zabzk{jt}a7^HJg0Mc776_EbF060PVz+jL@5Cb6XAe;p{gRR$PKpOL4 zqqE4sB}fxCM`D+rx2`Yw5OBJr$;Rqj;x<^bEN(-p$<%(T$<#Ezfi|+LSZX6f@*6Mp z-is$6C?-_~{N~SqzRhn4=0Ot0!E)f^HBU+GITdVYOBMkiVr}lE`}N5Ew1x5gZl{=u zAZDV_W-!SXAsWcVp#FW@$_lH59(O}Fp!I?T14~#Cl0spijUG_y*VCgy-lx_7POL8_ z+p(7U%6=r*6-qh>P}*A%9~eE==8H8RxhpbUAGF($koVyjf!Lt> z-;t68MFf>Yk92K}#3rtU&LzCYT@1#@#sm;$9j!Ci9h!`hzZQrSqV))k4Z;Mmm%Ftx z5nBf%bdW?}`?OH_1_%Q`DiNsjZOj3o&Q!F`$3c|^GjxL=LY5KwtjMY)g_h8#$x>*= zvD|HZfJTehja5RG*LMd=?F~8jK2mH29*I?J({G_d!_0Q<6^l%TWC3tG`z>7Qp=2&# zV)1H*J*5BQ^@B+ml9)70l|{IK)MPgdrpeNHE<#>$^s89F$c%+GjDzJ#Rd&E))^mo~ zS$iyS5*V2~=_h*RCxnVWLH;0c1s|lvE-hZcX_1MXYM@W4?|?Bgg{@75t%PO)iDvZ= z;Vy(L>5rC)gk)6|_8XPtD>5L$n2!&^5WP)RE<^w-avF1?W4wOLI7h^_t+k=B3wPFgA&yBL2)^R8)uHE~- z9{&KQhqy7d2xcaaF?DkH9%#oAa0MQ2>O@QK1&Tv0B(yKvEd#e4a}ht6`qL``sHycLjF3+J=*H|$pxZ$lwD zV{r*vCerySk*aYdo=!^X4^xXk=vPMg0x!8P&1GYNNLkgR82K)2wonK|Lt&9{sS$Mf;U8_%lrzbM+g@;y#iU zbpwyD#!%hSnF5+;@To<59L8IC-f_RC6wuBlD*vJY$ ze5O~6U1_ppo67S>s)4q}*@k;$kBjjHUWxt%^rert=={! zH`Y$hN=Dt-U2-Em?k;KXQCKVp)Ww(J1>$+z%DHW*YM9-gpEr5bJ84QiLPWv~uC1brHS`aJ!}K z8n3eaLQLYjiucmpH;se-$D2xaMs7D3X}7hNx&biP9R;u-&&SH-Vg3+e1XgyPh6dq~ zszqy{)EZWHW4^MSI0QK|;jWHNzFteb4u9t|pN5%RDW6+ZHVyvHA6Sp2_**14IT%j7 z4ku?a9Gm4cfAu}`_$iHZ@Zh^l@lMm;Rj%8hd@XK1j9L@>m5FTx0rx|_2jNV_VAjkc zhv8C;=G)}bIcH$|d}HMHcS=hT60@X~>>Kd&L1Tlzk_3dEpsNs{Rt&QStfcdKx0ZMf z{l23>ch>fnu4Qm=J}_% zT{~1BDh%^y`5a#e3Xi|TeD07KXG15tK<49`5SRcVIc-XcLt0$$sCIKJxf*M6rro?L ztgLC*T=1HPusQcC!B8Tx@hdBghYNS$3H{!DXY?{4aup1Re53HE(5iAqm^az{lqCuu zAEA*Q$aF^chh6Vz6f*Nt&lPwsfY%}%7SruDpVw}_x^QV25w$nFAJ>#MOzTZ*~m+jZU&&I%gjmt%tJRcxv`eAfIOJX9E2{Dy4uaGM1FCjM+5P={@ zScjI9P0AX$lyNbzO{sqyJOV=NB6v*kHvojJzZ;j5%>u;(z~lPK^ax0U!Xbz!3kGvb z0EAM%3-&N8eBfcheTloQ#xo$xNAQzr)+veiyd>!pO?$|9Cm=f@@_!g0KwDC(cEbP=dgX zUkU$nn0I5`aa@b=Lj?NA#Nn0wq8K->-%l_8_p(4#=QaG=63U zA~E=tWKbeUV;3&MoEW*y44#hLfcv6|>syN$|2?_1lC9`erFr=oSW(ff`2>0|CXSl2 zDo;>M;jaWC0iyfp6A-Nkk2JoIq?}qDVl-FdCmr9Q-*ZDU61%4uRnNeBIO1ARMZ;VU z>nMF@p~m|}h`}1%q#zg(>>nl>nYWq08U=-eZ!rt}k{A38{S=W{$rs!IGWCYBksQeP#0s7GJkuHG?jKwd8s%VMPew z({67o1>wC|thpjDmhx)~Ig@cA%tI5#nHxVv9EmuJKVk-iBTQ0ce<71tGufE&gV#@pBzDVfp~EkVtHmxCQYWI8dDa?gm1PBI5yZ7oQRxSH{UUFT|TJ z*(Pn03#b+9lUF!upzOv0{1Fu{R>1V7g^uW{0MMc^VpRCm&VuAdW>gmPX3R;%)#dLo z@4Zk0;+vNBb`crv>NfOI|IdHrF!7j z*<$8z-vQcX7#YIPfLo;&ZCV1uh*_??$NJa-M^*%c9jy5t(?1+h&A_8bp>Re;@JxZg zplr{AaadM2gLZweaXSPJnm+ z39X_x1Je+#r6EikQe}}jdq07HX0fT^K;?_`OCZp$S?nc^HR6OqXbSvq!&cq9b}XzAI#8mp-}8 zQ8PNsXBAO;$BX8&cK{Q;Ihbt4h&n6yk^&J5NAyHim`U_4ygMmK;=^3{qbm3vo{~39 zc9tYr*-ew8i02(XDNDNGRDrzZg}6J zG&}+95sjRug7MKO*^{pm7PL;Ch#z_bO%|JFXpC_*0nI(?!M^sfDbAkh`k}07HlWuN z)DLAZ8Lc;c$kqYQ4t--@&lmJVg-gchO^4XJTwJQ#*o9B^jH^5JbDS+1r#J1SP2A~5 zZBl&4{DlwS<=0FK@w=(3Gf|=X5VYMZS>VO$n-Rj(l8?tDuEc8QT6#Fy47xy9SZrD{ zuq|3z64#T?dqxZV=}0E&?B3pzc7&ealiTq@GJ%78d;JOKpE@xahcjzdOG&b1CpW`- zydc?xPgMOf7ELxDSUPUOYPo<(yzrt^*kSz6o)T=h`z#IH{BQ#GbMYkRykjDD6MbCF z0=?B=*J2YzA2nCEYZ-cYAcP)5V#M0Oc%;RFI@_+9lLGHVC(4d_E&o)ie<)!#k-w^<59t&GbNaXKStpoHP&^E~XSf2bfZ@K>1?MVmA(RU?;$|2Sb5g zrTz{G?^aj~CKN$@$W+3DSW`H^I~%ubs7HO^Sw31ctrg+GJh39kmB83ZD?!g$G;Mui zEEt1-l~|RW9>F1K?GwD-3cNaM*+{K-!rpkaKbI_z)Br$>6pmdQNnCQ>gRFkrR+3oZ z)rFMfs#vr@U*r_AHB>V5mk5HU6>Gko;y@ZdnGILsQCfa!&{+5ISLACo2GJJmj1b%@ zc56500Uw|>nbu|^mkj%6$(v*prQp2=dfx%nm0*k>0LhE#3KkU-)o6iPNYh|mcj}R( ze%B4i-v5oj-A(2=#KDp*Sc}KivYU&m@1VIL^I1td6~+O*ZlWO8F5IV)Xmpz_X8;a3 zKhQWOcuElpJ{PPyQZyoT@R>EeBpN9VSI}tWL#}Sk^^X4_b0R=?lldcr>Vnv7i6t%M z!KIL+Jm7^ZM$-$VJJmJY$T1(Qs)`kLu2O#ruuN!^l>ul5ivC-4s@o)~szJbk5(OSE z^x-OILPRU7d=olcg!?3@2!Lo~XyK;`y6pq;4OgFj?+wZ5=@>FiC#}haP+Y)*7KoO% zny;NBAx2Y0$`8ScGN1@3mH;K?1$>A2U)i)`MR$pZ0ZtoQHcTUYD_}x1OL8Q_m_ba$ zjY@%p89;=6d>fvj|IESz5}t441mB?R%n3zgpWj4|4sxqxz9%C19W~3en`d~!x3x$L zM_y4mxYh3L2(Kj?M{)_W+j4o(n~ZA@_FN_=AOdVz#A{cf*$$J9sxJkBJnAOfUlwU@ zr^Z-PySa^c-gK@yy&7IMNT&+Z4Oc=lreNv8p>v8SS&p|PLr&I`6h|WNFV2>1@J~Xr zhp29W+I)K45vk-8VGx1X;_W=EI^p%rsaYWje-)kw^XRY{Kv2X=3&sM%Fuzkk8cB4N zYvbL>*t@<&)Stfs@8qA+p8tHkNERcOP~^{;i&*ad`6czJmvm>bF^ojc=nK zn@f*Sf{VK*x3!%1x^(n>8K=&g3n2v3B}&HaIiHumr}sH)M(TYd1+=2sGFGKLuO|l& zQKJ?wCIbl;UuZ!!z*8*cl*8d;H&GC|7_Z>JnPyP^jroiR3oH0RY|~KyOGyN}G_DjO z9kqh*P@#D}N_~d^01hme0M(H`;wzO}OvAw{VQNv!G>GvH7=Q|jYs2%9HyJOVsNKG! zlryBkURMx6n$u*WL6#R_Zl!_fQsuYjQ{d!?JGh*(~Yp{*2$j1pUpIla68vUHcXLw?hC{=?Js1m!~=7Q&hF-mD5Iz~=|$Ecpn zX8^#U9ap<%Ol;#<;cN!Zw!<)Is2w0HGSNA6G?xiGn{%4`!tx@xLXBw<>5CkT^Qd>p z@`>HIgF#|sMtQMVxSO>Qg{RW$OzZJFF>nd}2>91y^nGHt5Y!QIT%4L2dkzAagZdSM zYGpPC^S^BrS%~p);Uo0E{>=Q80SV?GY+g>Q+z3LhBEtQ!fey5)XdXA7*Ty8Ca3+HagH99 zfNSD9E+J3O&IC%W0W`6+aUDLn#!hFux)a zTN}ZVc&KNBHD8e!KIU(Y#GVjX;cA9+lh6YdvQd&08a}DK(r{spKh@HuN%5bD6Jg-v zJCdgzT0ho-WwP;K@Fv~-KcbtP&5Q65&NWw`x#p}q$AJ;KTuLIpeQZLnD z>Q{KeFY!=&5bLH`EaT{tOt0x~#EQxEWd*PRM1gtWxDW##!F~D<>=2+P4rI%JjIawK z^zb1;`@f^W+0>F(J0Lf*PwIKQ7L>hhc^blzhA#|0` zA+6o~w?9Hxv{u8vae@3OSbo%i=~mpmcnyH1zqynxZ0LiHpLyi1ZywV zL_jbAAXjL)-88!i#lvu_EO`BvB`Dx&%QrGYVD86F=xvR*-Oy65urCrx11s z34j^u=zPlC!& zDiE49MbFqQf$~eCy1`D>tf>K+Vye`?M|M<+XdupF!d3`*K$u7HDS?IohLs?O$1Dc3 z*_=OGP!1+&miekYCMvoO-vkwrw19SQC@iX3z+L`UNlll4W*)o})D*O-1{b#Cg2c4% zY$o| zet zhU+9e)GV^8CsP)>UR(v^awgbAg6JQP1#$D)c`Vn>(9gkDS3ky6UZA@SqfRc zoDhND1|rRzJ+w$6<%l>QB=Mn?gbA$cGAYk|f1?mj9)>(Si0BU2G~@eF!JNN?<#;@p zH~@$u0ThZfT5n61Z13$waBg7V;vB4+wfKanGeWpf9Gkw&oQBqs{0dX0QEV)98;d-~ z(mWWpp*n5QdJmLrhh0mHg>c%c8d&ywdnx>>4K4S+W6a1$(8H25F?H>t@-6s=d7vE) z8s!C~n_zSSghXgm*IwDy{8 z^S|*Oc+rxr%9`^0KwlLErWpn1gYZg(n(vi3CegnL$F=gh&m`Lj8lBsm5l@zOOj4G({sxeCwueEba$?6J%4qkg2tMHN z!11jA$paJQ%gXZS>34^+Vl#f>ds72(MNiQ2uLKKaFgPs#H9Z5v!!PkmI@>~+sbN?H zOy>7~FOL*-$dB)m3|I++8;yX(4Jhq5Aeb}oCq=KtAju@uhE8LO(RLh1h)-d?`*|N; zn9TUhJQjF2noCVL_rBxb2-|X=|1Ez9nXe`WHlz1gdv_^Qy7^XInIsT1uu0K#&~_-W zD>{zeqy}Yk2(Tyr0Y$+ey5WzEAM*DFnw2R#tZ<7s1uaZ1fIV&px&n)ZyG?0mf;qeb zt6JlYXcT5r6o#Ov2bzR+_{F{i{!T=HBIw}-#-C+=gg$gY30jS?C0a9zuyN(@sWsk% zunpvv)zV3Xw-BywHD|r$f@$H11_O0;FSJEC6jq5j$E)xIis_O10%`h$0bs+ERM#tz zOCQAOUmw&fSHRUGF1E$C@~mrU7$RNV?6>@PJ?tWNNM? zPtaUiqUO^A1UH{lR~Io#GG+W3$RW(1Kr)OU5vXfgFxobRc-TOIsIZdM#ra@5Gh=yT zyzq>aB>7gb^Eym>fz^1Bq!mbVxkI`k1w)=B<6Go_wXc)y%U?7>iQo?#C z25Emrz#2ftLoeEZp0pZS%F$_n_7|pGU*;_+S@&bSm-c@v-kh-OkTM3QAB2)166CE6 z_(~k?{x<*w&FoS6yE9{x#TdegJy|njg`%x~>qiCOAY|w*X8jv9fxRddO8Z4b_sBV< zSr}>}ZKUtM2p+nrSYdYq98E7lj*M=`&p1jLm)xL$n^E@%QO-{Euukz<-#>R^wN%^;AJH~M?3V2)mf^jG|K{wwB zM;GO$0g8dns_qKpjk}J7^}Wt0O85-HIJ!5&-wqBIjS%}}F%7}jYp(IYqLO94+H@FV zL|hooUKXkkLWtH}O<@t_X&GdCTvr!P(hPS8={?{H0;@>0w~b8}KRg5)-HLzDWuP(< zHC~(8pLF4juK5y3SIi=B0Ypjg5?WSTe^I=kTym>uu7i?(X+Nonl87z(edSOl{fg!+ z`b{@zEE9`;46ec(RcV}^&26+~hJ`zu^8(CVf%E+p(f18Eq9{p67V z_KQBN{7=&@hAZ&?q6!KG3}*UocoVfqa{vP1d3DUt4ub&D{?>@=g)oZ#MW3-Dn8DfQ z%Guoxy|nu@N&vC^k@_=oVM`gn2FPCo1gw=GRsLEIZ-bP-p7f!G?$6~q9r6>(+S$-w z;)&f5z2bF;9PpPLvkQ=^t;cf=hC(HfDg(?@U7pzMSqVP@^Xhkwhw)>!H+qq>mK7wr zJeP}?5D|p8z>;%RdM_~BQ>`RS&&n)%M=a;fCGqBGYws*bM!!Js!>b<8Ve9B+yis7k zbdIt%i;aroiU#(r8O+B7@*&odLD@iYV2!ZJ;+Pgx%5`f5COpoz@sLIdDx3&(m0Cpd01T^^*e;G z!SW!X#V~?!And6=6=Cg8B%x@@1U(Qo!rmlkbsKM^N3aP@{!B}+CREdxj(0>aR@PP`a08QM%}^y~D4{2E3=K1+VTLqMbuP`&7%d4u zkcOyRd=Xocac#W#R&FH%woK=pkEK3j!Kdy{&)a|auRlk4BAV06JOqSO!Iv@9MuKYEdok-ALG%02$TM1mZi$`MZq96S;yumUU??B~SIB=(x!QT0ORMon;>1DNY~D^*_%bX1=X zfYBwOlP7HChIw0e2Q9l!fH3po)AC|7+7Jz}GR<9`jmLW2=@t-fD_Xc852tz}4}jQg zT^@P_tWf(^lH$Ye;aE$3;>_|dgiQ<`>7YG_XpWaF4a4;}Dgm&nm{_Tvnzk(+0ujDu^L&sur@GrVU*lG zH_Y43U*YYH(|^Wkn2-`Qkplz>ga3hX7o|P`7FIxE=E&bO!ak%#Iu{sq+Wf*R8Ssno#u?a|fB79CddOYB=i7v0ttkgM) zxwSIsYb-($Ql~RuPd3)geqifbJtA|*9 z!0D5!A(*{}uTXDkoHS^_!q3E!g+F5a@rbJlpQQ0SQsZ}|#*g3&Czb;mdkSz?KNhU+ zIJe{LZuBt8$3zzq0|27IE7F&&@e5i7BE_TzIBn}a32&*2F znJe*O&46RO5}>LS-^1??{OiI$6aV(%AHD~@?Zu1-GhwPF!(O)T6#5cCWKA9nIo2FY z_6clein`61?P(_Z&|;#avLu6r1vWpAaDlckj_6%rieA|Gc~-PUup5Z-v)vr&C&aYI ztAXv+c?R(@e7e%pbCGk5eK^56rssV53R;-$u6E;sEA=eclh=Hg2oJiyelWZ0AJQaN z9&>AC!G-bhlFP?Iw{gcgP)$u(BnZjHr~FP(+yW!3`Pq~ei^6j?Yz}LeJ3I)Bo6;~7 z5e1rlXEAKJFzRO8lSz3&`l#Xa~IoLjL|?)g5p zl8Mc!sfdLZ@l|#C59biNEyPu*BgtJNiS@J%SX zv_*CGg_9ffW)JRHbscERs+r5`k`p-c_h!LgR_qXcFNQaTtN|t4OWMtCGtht$@@cU- zk1c2oJvM_jB1KxP*#A#;s&st;uN(20?mAQ4Dzz zYp@Z`qfc9rR|#P?vC9KFqR~6W)4K~^y`~P+)r55Q+v5`u0?_y~dX~2qDw91m5KgoI zHA3Vw%}3vwP2XCCZ?VMNZoL^@*sAX$+oT){*2aor{h+cW!~zw?ORf;228PwyMFYc_ z#-oITc-cdp?|qSmi6X^W#BFa4hj{~8^ZWyl{RDwK1vU6%jf~-;*=DKBgTA){vl5p^@%1K9a0)<1zA*7 z2Db2n%CsX;?-$r_TpWS?RRQ$4fL9jyJD`lj+~W`?<@Rsv$>LiPQx3Z-e!3{r^F za1VM$_|u3d7>D^mh1l7eY@MpCrCckCIA>z<@R1*X48B$w(2A-(>dL|~EE%dqa(;~) zar2u}&>N&cAbF$q}nv$ys@6KDWn!0-_b$19xE@y561hbG2 zRR@qq9?RY)gp)L*?3pf^v`sV6p+g0UzFguS40?8`2uzyvE}QYc7?NWkZitT2l1H7S z&StEaSg4*y&yaNb1P0eV17;OsBVz5ThdX=FE`x=DREc|ac~KoHiNvQiV!^nu%LBe~ z0bL?y;X)CDR_Zrs)9S}p2|)U?e4yHIApzOFEt^8CdqtcUN$Msom>F+T?=eJFBS0L1 zvfRX*Xar%N<4}G8qnnBQ`mP+-`L_S1?z6#!u`Q1r#P8|R!Qk$qL9`|}0f4OIZG0;a zr+SymDjAMs{mY^J*A(J|(eGnIuAMrL#)OFZX+FLA2z^y7U~9Y zAIpAc@;H=g4$a5m9#tGJgyv5P7_C`Yl%UUsJkzN22S-Hnt!BFOsL!~;aKpZ)QInhO zF{b9|&yf2E9iEt@R-n|@-fiI7fi|%o{YPlPO7{*)bVfxbCJ7z3gn%isLrQ~At)nC5 zxDevE3gVuv2KK1Rv^}A~DixZs9C6h=nl$F&4(Beb;c;5m3ySy6(&`XQkIMK}lpp{J4VRDY8Y>hqTUp6L13QFv}hyb>=F@E6dGCEj-F%^xbiYnZZc`#FvU z%vcp#O`l83$GH3ngqBu4#Pr|O_r_LF%JAPX`9!LLkn!_=4Os6~y%>%)ih@_IjvO>n z5sR(F520V!aE4<)rjM4i;~_5`Il|veaeh8E#>Sd$;PW(NMyME)K{4=k1BCB>qFMr; z2V7r1@cMt@x&=WZUz*OT0*Z~b_#ktI?zW()=%;`!Qog8+BkAml!O)4QqVwUY4bA5$ z3fzXpUs>C3gw_Q%EuN79@ApA7X?UXr$ihM*gh1Tc1(EoeO)YsEyPWLxF3=Bot1kwJ zQr3cD39$QL0@J{hJkSrKJVvw7Jp;HA{g!xs8w%3|UamghmalH@*PoPN9(cKGm$J6v z$;{R%h>8MV;dO;g6D$S@kp-hKkm5)P^_j$%yZ;FvL>9*SF;K1NJQ89ap%lsf-D(LS^> zVxvmK&G`NTp#N&1h$Bh}*vJMTU=WYsdd0x&MYx_uePXT^v0o65hmA&}08;RZEc_Q3 zZ&5~whwc_74v9p}4Gd;{f&H*XWEay%z^wXFz*BHNgt=%l9IHV21Tmg8oh=0CxVzO! zksIQhlt|;VEC=}lG-22C=8f`0D(?cNQ7NETgNOzDA@N_3j0abv{nBXPh| zeIqDip&}8H2x6*bgZ@U)w5vs!hhY*(z!*m75v8eon0Vzx|^aoR31ke zMoGIMTt?_t4ltxK_9IYiVAGQSX#mY^02m+LCw*inTtqYrbG@{Hz^TxL@I_Y}I0fs3 z65YmXvK^o!^SeTdFHgObfo~S}}6^L`XEho z*nJ`H0Wi>;sfjSLU877DGh8N2038-)u<-$SFg2||)8?o)pp#qp$YZhZg&8XWkReV; z(1ad-vPf{VKmwbe{}}AT?%&5jgoVdJ1Ud6W$G}REu%wktgs`Sqfd#D})0v6NPDJ=N z!d#u6?-@hScMI64J)RSq@2lW&`f_DtTCmF&jY9K z0y;=DM>V9}etrHawx|K(OvW1{fsB*BE^YOlTZSN-*RYkTd(%S)|! z0O3*ITEQpShZDvJ>Ma2U=Ko!LpP3|py|uUfeD3G-`}5&s_St7Y*Is+=wbxpEZ3MdP zVXA8DjFwBJ9vUpfun3vk>#f!&{_K( zCvStF4*GTm+&2sfy0614j|gcl7q2y!$cCFf0HPqS=zQBKwuHN1lGj%v*v?B%{<7ZL zD7x+JgCsXyd^U2mO3Y>|`bE8wf*WE}CEF>Ht*MQa60oWF65{=}rHT@i`i}wmdGttc z5v7yk1T%F1meD^|jlTOJ+tnu|{zM$Cbk#qvEHaU$Y5Nt&RMYw)rm8G7N{A>+P2Y7! zjO3<>`Po#lJVRA*>_s1wCQs_5cFOtjK#b!Un!fzxp}cexsldr z7Cjd_r3nIHa@sTUw_K)1{_FS)lR`54So=Cu(XzZpikd!=Jyyi4P7JiA`lHeZ0?H;o zSlGR5Wh3A?b3<%zb<-zm<8B1jn~7X_-t|FGZ8#7gXMuV+Q+qAaFE+0{H(JOxY$a?s z&Km-IFmdUMuw7iqlkWOvCd8paDb|z`Xn5#HE%~l5FUohl!!u)XzN?#OaXjC3&Uete z@Z4kPyDnUk?|O)59nZ@=>l68|D<8;r1$lnXQ}JNFYvx1wuI)?nUAuWc{C>V`!VmIY zdmpCkNAg`Mp3@$sY@UDpVZQ6%d4~T>zDu81#PC+6pqQ~D>W_>I+h!$pO_9;4ij{cu zN~`MhsGM=ji1ugsP$X1~SO;5*v6$~~v+VKZ5=@WB-+p=xE%&)G!?WqLd)j74#4v?PJI z91IJ2mjZj&GpAf#)n&!8$Cz4;9#xbY$pp=^_X8Tv43DkGQjzXj@jJ`yb*U9AF)2cY zmu;)k*lCwqtC8!tx`cxhFki00jG6L%l`feG*8t=l5jry>UGc;gn4VIQb#hfuB#ECO;kfmUfdP{*_<5|x)82|-~N2Lf23pv4|;EqH^ z6|7OH8IeIrxrBa<_1cH4`R z-HOerc16$Tc%JTD7^O1xHMWw@}2L*=Uf_& zKLT@Y_;QkWWa>KK9Kip3d+bR65o62|%QLoG>hZmt z>}vJ6d>=#*JWJHtkZ(Wfk~@hdZ~V@YsWaSjMsn8F&skw3ur6N1OC>Ke@;sefmnFkk z0b(;z7|pww*}X?h^pVQbmviHeST6}m+gQT3ej4zbfdI}7fzNF7MKMi4{AC6Zmtx@{ zvw-6hoTF!}H%$!WORLV^S8uOv)-!Gf>C|67$%{5wT$%88%qd7o;`)ym~oUeR}4)A{z?H5cm98rFY z*`g~+s^IQWlX}J~N>Wo4>&j)%RK568w;(>p7-C(X#l`MwV>wVRKY-P`MCA}AU@z}h z5$vQeiz?>kFhAaJ$~jq=Ty>?$FYYc6`tKwsC#_MYt(~ zV_%kgb`d|rr!o#6_tYV71ux%UIK0jI*n)rF0rEw5h!_=4Bj39%0!< zA>X!S{ci=|0`ZuPV(MnQW}E$$;dXZ+R zoS-;0F_l#L9#XrXlM-#akg9D}QCvG?s|onpa7jGoU?R6F9_#sB6)Pd>jDB(TOHU&w zuVgdBeAO53a6ky7|L%3d9z=!#F42WY&+w~KqbIAqU!S!0oQb}Jv@pH3YPNS~kPh3n z43>ZW+{)pqMLxDLx@qcz>T{yloveA`guV65;e>60|30rV<~}ckyTo29eUyGP_{o98 zp-;Nks?fe2(v!&^U&3Sx*Q@%R%9&d5T>e+sHN4^f2#&E6I8`x@nyk5Hw)NUA|3w7bdmuB2_5at_=12+WI`=}Z4sh)OSc zuN`}g@~`a2T%Ykpsdvsff(t#7{S`hBVw8oIIgelbHW&*(?%I9az{0cienm56V~}T5H}6cEG14c zRuo%gn`*33BP8iexQBCeLNLU)@k`QN4rwXJCf@`!@tCYlvFGG3jk}G{wk;MI_(ea+ z58H2DSil#1gfzzTrINHE5YM$5_c1>tZ9{<5VRkG@5Q3DBNgSddc7)C4)dvx#r<;-R zOFDn&jD84hT4AR7+m_7tbdqXGdG(>8P_9>y&Pdu{A|142`za;8zDkv5t7dZ1Ui)wb zVSnr?S~2Us*mDAJ&-7{O^|~i%)!Kgme8Vh_@)Ui3&xTxzl&54tPOG?qivdqW)1LVYtaeP9Y~mMVU%4{QV~ zXl`(+uT3>naLIeGQj(o59@thqaJfR@vRt!_F{^_*ZUQsNA-@&mY8 z@XV?6trr-Hbt&VtDfz7v6ndys6&jmef`p=+(iEBQDkY@(Z+ebvmEP`IOGj`VQXSCy zB%C^yMMw3v>_?GyRT# z0QzUhi_JXH)CEeA+lRa`Cv01YfvqS*+qx zkfE<&JTAc9Q<|kj2lHl?$DaEoS=^BldJ{cEW2PoQSGtO@!`yMo66fv>;%5i(3&kHnnlptB3St4(L^wi_2$S zEyHSZeI@i}Dr7$lnJGMe$ygs4Hg+zDbEnk~g95L}y-KYEGLFa6GXY*Y`f#QqMbZ54 zD`bp6C(D!rW}{`=38@L2TxbZhM24^yIZB2cW+vV4FR1yUru~;FLU?;;#xwVkK{?a@ zRyFZEs#K*$^UtVSkDv5d?BI_jk)M-7M!%As-C0s7jo0n%A%*cvj_<=@-3JXMO=eYp zCPBu!e9ZLTUpiv~Hqg)2btT_*hoCLaO8<9uMh}K=tm$7DFh=cXWQ4agV`+T!YsRl- z19To2T0-aP9LJ{|nh4N0CI16~$Fak6#gNSKR6`PlB2I$&b_k-wPEu+=d?N`xY*X}* z(iA-I&(AcO>?}GLw0h9*~wWdNr@|Zx@G5ed{IkPmB>zE zs_^LccqB>eZ`eA=>#M6~l*?XcYx4awpg*%pq9L_s9nsoZql_`L*{WuFqd51>)qXwg zbsXz8#ySX2t+%C6f^oB>>)8G{Do!}mRNw#w1Ljtv<=2!ctuon} z_oS44`saI#Dexcc&n2;Shf;$xK;LFhHsj{y7U#T8PiJtwdzHyQoBW zxA|I#%x9n)2W~2?ZfpUnN1m~x@$I7SUBr~0v7vEqPR@2d@Kz*mUiBuS+??%ZRRx%k z!)h$u)r}CbZA}Hs28V*Ga~J0hke2m{%sWwJKOHG~Rce(z-%0toLD9FE!k)5O0n4qb zX+@E8T8BhoEbY#fA?%yube%(`rbSiLMn<^eW_*!7E}Xm(jtX=_=mmU(8i9hso>j~K zuTB}78!aDdEI@cXjeFx?=MAKtT@vuksSMz9$7Cvdw))4G%$%zZaAoZM^?+8`cb4EG z&4(*3++}#`ijblt+kPSP6G60^61D{8(x@|n{&h14)2g5kw)*$b@uK7^jqdI{D}}_^ zun7v)mw_*o9`GHZ;(&dCx@Ub?_qtMQb!x)QBzXfh1>AEKOaugNF2m7KE#-^pZ=G2}A532>1VX&NN;f`Yozb&4**Vzh z!#2gPuG6mMz_IF5R(UUH$>;#0Knm@d3Mf&&m#O6oCOXLySV-XL`N zy8SmBE#h59ax!%I;TJRazo-3|^t3-e(|$2rLBQ41{)+!m`?s=k0wU1x8@ln|h~Ay) zaxH-6>S%vW$;?552eD!YhD#uH%rI!3v0RAa*dk|=DSZo*c1$f1BX%$+IAd^^uA&$1 zydqOj4F$;pHMHtCk5N4?w!~hro1n8kI!c3jTL_tHzl8b)!n7$lbst*5N;@X&45Um) z#xS}|4HMQ~rFjxN$rQqyHV&RVK9m*A(@It|U5t)BQGFE4%~^PHRLgL8o2V5L@G!I1Gp+jO+JihKID@);!BuWO3>Y9(c*sGFLN6MY>sjkqZ% zh~vP4qtR69dTBIQ3C_mS_gWBgQ5IGh0UT5wtKHQ6uU1`KS*>SmO}V(Sgd1h=rKFbpDYfEbORcK0TI+c$bDIcw zRiS=kwbt`S6yq{HE5iOsQFV0hGlS|bF?C!q-M(XJ42>iO=_3&IM5hTUYy<=AyrHVV7B7D2 zpOZm%MXFZk@gt;f6xKAcgGZxhIC^Gk)XIDY!cjKI7O-i|S9`M5Zd)%B)%=)v6_{Sa#id;t7u{{+uYd;=fUtQ@@24BV!6| z$%!i&IN{ta@z}G}q@r`zpR5Y?i(eT8TS|D zMaEs)f9$w_*6vwS8)Vi{+F zX8&bgo-$fCtdzauYM~}ZupMRszs4hWNP_+_N;Rx>seA%gF%J~qx+y-RI(hgUX?HIT zwd%J6Khan_aL7QgT3ss|dzTHueoI_x>&Y-yCbXUm)jB9Zk!x?WKoQ^P3Mgk0_*;SU zu}lUzb-T~O`6+BpEGWJiV$~`#||MU5LfhCae}DiDV6+o+3nmVw=v-|S0z0O zwp#882%e;X5X2>8{LTyfGXm4GYC3?)PcMEe5WnD9hHKyBY&_ymF9XE<2&=`9h^%}w zgl(P?z&munUf_jlh3)gOfwtloC9Co?4MP?6e`R#es^*d0va~q*NF~q3zetXmn4Z() zuZWR%v@pHpqx}*yMMRp>rzznmMu6dAts)}rB_AC-O{O8j-(t(;EJ~~+9sLE33&d5e zok}>%aJZ7opfrx!$%uV}d1Ncy3s-gWRg2iP&Or=4o)&(ZpNIGnx;-(jRK}f3#4E*h zDw(x}!twKj#@7Yn3plyVFkozPfl!<&LhIGdjtbdM5S2}k!9Dq{9?z|4%AQK?XhrG< zt+a&UVvy@tSJnPD;IPGVEoyQlB+rR3n$G|;dL)+_S@3bP*Z|!2iACiZb(NNoIto3l zs9NvHUbS}5Xc4CY$IECrs?;N3ewSU?XXvTg_!O|`qotRrG;(`U$snfE`_`0<_=Nezm^rlBCxye z#O-&)wptdeHE!q7++$_2{{dE6qMw>3-iFqh@F!h!01Bg_^ix-5ONU+CANI_s>m$7e zQZjz)+2b8s@&sM7R#J&KH!YMMN~kxw{I0r36<#iDIT)f;RZ0yG=1hTt$y!<(Ox)uR zCk8JWaoRESbCDoB4us^O!z{qRH91x7lKaGKt@t;=c(g;9S`nbIuToeb{-RKJI80`L z8zFmP;JC_?(K-JG z3FmP-=U#Ie;nXH|J}0^R+ZetD8$@8cz`xnyowdEmYIdId=dt ztxsVhkNc~A;Qn@*#aolN&`{k0%Qkc$l1Z@HvQ^C)Epw_lQ1zlSg)^|xD&_@D;a+f2 zdgiUkyb}~FcjHp5p28O~aZP(|*YIN|u*_Lj(MXwQ!t8r7=h@xcUPUcrVm72~ChV~R z-zQCNTsE8bY+>#!l(_@vNu$;UeE1MAzBqaMqb%YMgF5^-kC0%vlAR1!vJ=d(u1@4y zne`ctv-&75@l4=4Dbim)+yrjHj&Fw0ll98)%3V$)h19z^FgY$ zmkOq#-gbx^9{j{6={{zJR-0F0+-ete zZ0_C*hHw>*eS;R{+=pD_Lzx+uASAW#Dfi!9VvM=F1Z%>}vB57@_hW;j6-dDCH zK&J4mOyS9;?z@K!zq@4kJruxqu^Aad$z#ZJmsoh5`+5>5OL%NV?|)2vzuZwwNY=TB+}VS zNzmC!Sy~qxSGHwwH6ZclWHe92(Z%P$QwsQ1%aTBLjC`-nP=h&Jd_5TSr=}-8ato5u7)o&bKITB})uaQW~Am8Z9OOa;E zPR&^EH7k+${8ojr;H1aiACDVVX-BAjf6cq9F%ab4p&Jy zPlvxGVeX!m^k++09E1@bEMYH|h{rhI)mr;7Yi*t&F_+zi5=}>eN6_CsA9nd)ghB=F zZ9)H7#A2PjyF&?6F}nYQ%baEqzLzB74(8J&|m#T=AN)<@VW~?m5Vb z9gAr-)1AqJODQnloGK^k}?ba?YoypLUfXxkV zJ50`38Y?!0L@II-uG>88n+|=5p=IK`28SYyQQHIfY}HX_qDkUREW$W_RnXpnOf8xV z8Sfx>(TuTjE~VG~8{ke(ZQ@$DXMMm!`8c3{PnQ$W<*dB7F~1R83VfCCZQEzu*>0E~ zDHs=>9igU!zl4Yx3r_*hxCY8v*}eRc`saSS`o2*2p0MxL(Dqc=^J=IqRT#RXqYfoV z*wecDX43XrZ>4_4uCmT}Ht0}JHsr~MaTJcO((7(8!F6( z24+JiWkUv`P^_K9YXoBL;Qj>J5(q358185n7~?BSVl-rQ6sMZR=PNE?NUsj(2;C9L z8w-Uvgph=`?aQ_9Y-e}UD(B7r_xE4?%^5A@b%!FSoB(4Sz^EUPzk9pj>$&EEc25MSGRsfK zDt*MZP#U*fauB+GlwG)JgaUc=wGhVvjfHZhts*)ho4dVJdDfjBd%~VwS^7I-08@%m zIAD$4n+j+b3T@m{`>+dMiBBbg5zP;}n1_K8cooMojrT<^qmYSz>-?%IcMPN_v^c!mJO`*1~oY0+ZhZWMe%n<{q zBUcpY4$kzd#VOvY?1Z(1#ChWCT242ftM=D|!$NNr9v_dyd%CyVZ6YVm{HwlhykmWT zy_LADtPB5wtxOYi80T*u;<84pvEspe4wNoH^k~|uIC`g#?W^8M^Ay9Q!uroT2b;t=)u@kx& z@1IT(HRVw!Xs{*vG}itp#~Ix-R;32>dN?JKN3e>IwH@WGkY{Vqznv32+u4moYeV)) zC}K*hp|>29DaA`ntRE);PSOE974ZT0<8tk~1hLJ|w?_OfdFLE>il#NK(pGI@dF#!S zI!tv#Y!Lqsr*e_Y2HI2}Ei}`(uWZc;`gc!%A5&9xB9fyuL1WZT4$>~t{>9pZ(DfDJ zU}wPBW-PuG7KGbp0p*_&Z=z<4*=IdfN3<6h!y=1J&X@DpW=4gOa^bRHDj+02n;2rMNuyF5!XNc*qV1|Ar z^6bc&Fd5A#6HP&c;E#D*&KtppQ|I&2b(Y-LBp}frPtSZD2);bLx|ntm_;IcMMZB{F z?5O=)f#l9VoAw*DJx0Ui>h^L@O>y|FEMULSML6-`gGxR=py}uYIytK-b(sj+qZLg@ z>mblG^^JpF_rOtVgv!uoILh+g@@$6b-T=9RK6tTP$57qJ4et1CfA2m&^l9%qP^4H z`L?}v=ROaYrtIJngJnTqd-T7|#Mrd@zVq#tosj|3uI>9;c1AxzO<4fe4%_8&3C0@S6Tta1!55?X1A!uap+zf@rx%*STU#8dUc@yiWkI>z zW)Lf^J@3I`pPGKGJ3a<9a(ha7ZKCX1a7VQxh>vaDcLsgi0(1nBZwz|ccfK9ul+an4 zAEj(?&$qp0$NYgJp-*Ey$>-_s$iR`_8M}bzeXZ&+n~ul;r3R|u8OW=QkFn?$s)v$1 zgM>r0Pn>LD6tHm^;|eS;&f#ZqI0yHvxXJQL$1NYk@n8H0F+LDwN_a02JQ zWp9!Js17W?rR;14{&?;Z!0`+s8ZHdYvD~P(gD=@|!$3+mq#m zg(iv{8t*apL2@MWw(=JQDdFO=dg7$h9ViFPA~W`0o@H~i51&ljZXQgmO4F`du6mdf z_CTm2Wg~03odoi41^E-U+nFK0^LJ3zocX*)$Wup!Bi)cCt!6Z&g z;w_z@NO~hjS=P&@)k|_wXT*y!Tm96Sfm{22;2a{9#8@xv$nw!{v@Nl9Ii6i;QHtyi z_65V%2kqiGgi$YpJ5%_N0QYwUn|DM^$A8p;_M&LuKzlX*IT!U$ zxaouiMAu2m;NqfCy0vRFLoBbcw~Yv!xmRZl%Cyc(uTu^3+8Z;a(hSeGfbZ46sT)i5 zO+X#=#UA;fa{Pdc57m=uWBDu6`pZ=7ze5x3jcp&O#>)+EUg?3S(;nG$qFfP4N^_;L z=N;GBzt#m>E+y|w$w0UIz(Nil-v3Ro#op>$@7EWJ%w%DCzDzj*F%DoLT z`~lyFuqRwrWcoK6N^KnQZO_mv#>ZWo2)WJ0E+8vXy!X1~kbBVHLbiba!x>)-cyuwQ zZ;M>wT_pEw_&3g&PARp%^~bEIHA1?23fmuMiu*sB5yXBn==(kX#*VKqRhnttjG>fy zf)sWq_tJ%Z>sixtW{yF6aYWgEh}B2pDz|Du@BVOS&JmhGK_*S97U$q5LX0*KFCxtF zSia5C-;2YLc~Y5}^LTZW5ey)1(fI@(VFtD&b(^^GT+hT}za!}rAxdHiY(GNEqf!IE z=}h6$$XUCj^s?g%Keeaq)Bshwsy*cY%Z#tpa%^srU0l{>LpUs!`9{X!Kzk|9X<-bM zTfS6~_3p+4r?Q}l;~`?juSV)3V(TT=$<+7jAihrGYidvCI}{}f6D^SI16y?NLhwZ4O)#3ET?arI#$5V3;%2_x{T%t%a>;!^0F z`CJi&hzI$&9K7b1laFGD2F||)ck+Nmt`V{F*~APKJFgfkAg z`80?m5{(hz`Kl;M(15ciGu9*}e~gPWl|OYVv3nAxry=MR99IcUrv;+&??3a~-RuP9g?}fM7b<-&s#|@}pE4`Ja%@YW>Q`bNGJkT|9%RP8ZDGie ze7As>;ab2-EUhLe>cJ4|U0x?TuUE(`(O;ut+jh}ZE@-!xia+jH+kja60MMXqABr?s zLF9#PseCh0m&Xg%Pzbtaor%3cg%BaWGIsT8~6;73zh&-=JfP+_ig-(gQozlj5Q=MQ_qDj<|yeZsD2Hm^3EQfssxucBBZzRS>m}b8d8&O-Pg*1=fU8y>jxEqg4F;d~3cU#QR}mU>{-?mkqFwr_#)#|1bfE})i>enRc3&aKJJjIR6gA*) zjN>ox6B2n~yAw^6PS(I4TAjbhqzu_&-0j%>C%-uly^YxVXLSx4Sjw-hXdm5ZS7dnY0qF3Tfeuo$y%;wSdz5%;Q zW}lV#u0kezce0EzCsrmWv4Td)K|~Q2d`W&EoLh}WmRy?JHsmyy+*8%atN0r$#24rD z_D{hsSM+M$!>)8sgkMD*?TI*7MI7mgFu2w%H-^j-ZQ;CMrV3;GJgNNHJ`O{rHzo?N z8$_{oyJw?Ykw#JC^tnU#g!CDU8`H6Y8&wn*tK&;zo4Iur6ozhw>!%fm?V|X1A7ks; z+4MMnuT)&Qh@72{$w#rCtXH8xygBw1fLOfj^e6d{%4>*EcpyhM!|Aq= zf6Lqr*dh_1qrG#@tK+7@dHvFB?adtN+NcY2N{TO01zGiNO#ia`7cVQ30@JE@wJ;@x zOsK%ZoZ&IG0O(TZ{?d%!<3+nl%1602;Glib^skv)0>7j66GEM?Wz5oBP5(qph^UT&!PcFbngv9GVCiBEQ9m_&3r9 zGrcYuN0jD((@0#*rd8LDW#{1>CE~aC~H0t*DRM5|fIm{$1IBG~dl;NX)P+ zIWE5YG>(hM#UBd$FmyeO#fHS*$%ea_GvABFa0AitEdyQYwc-Sz<-1^TsD2afYeAV> zz-up7{EBaff8+eyh-QmhEp&8y!_K!G`adL7*;u|<&*(Z>oWi1XbvZGznn+TN<5jG^ z>3mfZUm=-Y@ZI~}DguzI>|Kw6*Axs#l_}WtZ0u?zmVLmp!{qdI;sIeCNi?^2<9x5s zwn_iEwk5_L)3ns7ecR>P8dpsZ+Do3T{uDP9;v?&RAQ$vK_N*)CEC8GV+jg3ElLNAy zJw5w7K$gPgM^C#R5s0hR=MOAB>J4wEx>;r#{nsZV*PBrQ=$4%$C(02Tvc>GmZ)%ed z(6wb}>x1SSxdA0HM7C)z-RK&?>(5a@y>$%I8UH_K#E*ySY1CBg?*U2%tYhpY!&-ZT zb&PM>u*S~>>yDlh{tmG2>jPGW&kC$>16K8x1*`ulHN6(DU`HipmzWu-DaGUh_x?3U zSmNxsbF0kAGMU$^SdmH6Lr%C4ZG*$2aRc+p1+D3i%>%9O zNWX?yr7K!zAu-#YM99l(_sLoF|JV>)wMVcdT1DuODs&N{{VH_ss#1PYu8SipmH!l0 z80eaGJ_C+i{p<^WRGsg6C0tCv;@d1M`w`|@t`D*k=Mju&Lz3)>u^1bkB= zLsN>v^;QY)d>cM~I#k~%i$JJ;Nu#WMdcm_7OB}7JZ?pVsjf6Tr;N$8jOk23|GVzEc zMQT-1n-~(4jen^AlyK&vS{Am;;Gx3z=Ws8Qf5UtPR`>{Rhc^jdmgC>KU<{>VF=D2h ztEIK3|E0OuR=i}@!IUcSYmuOivLtNLX z?lfJfjtVGGEH42{GjU(qd`@JjW3&2ot9~n7!4>&{R}*fe zA?SWgMIjot>erK^S>?%T2)KVJnW<&Luf=TXTj6>*zl^*iM0R7vGL@Cp{i@o;Ljt04 ziQ*qBd48yV)M4~BhePR2{*DFbaewyx^ymH@^!<_3fDb~A75UsbZMqjrkD=`2;ET{` zt}{jR^LWo<=NQrT-YkHZtZhuHyh*=tlsU+!FaWeTNS71#wT9v8mEafQZZiN7$Y2|` zqEOV~LC=PU(ec6wXhTD280PHKz(s_+1&{hT}~NwDG3rg`UKl zsQ`6oJir zOr-<^EGLNYJom@KC;Yg<#6GV$IvD1tKo};oQvc5KV4p{hOlC5ysI_;JkvwFnjh+l^ zuhUjGUo2T?R?)iJdK_wR2*h=jJ&k+dTd+@pBSk_uOGd?Y>xD7mxJb_jis<|4xCn>F zah`&E$YSqutKEv5u>G%ghwInFTywwTN|{+W6}IeG%@;UB;DR#@d?#o1cLO zTRni51xiQ`$^m*JYZ-G-dKX($WKQBf`K&xCV;{H3GOdkG6)%{<+>#jN6yY5`wZSjTuz)u-a?n~S|P^?3CYI>pt zP|P{E2t33YesfH=x_WH>!9ue$St(TMBK;7ST@9ITA>>l7J2zUs38Dp1fwF~iBxOmC zW#h7Hj1#3~KuY=m?rDS5F1AQ|(}VpB=Y5S8-^Q|*g>6H+wtg1~ze?t7OWIud9VyBP zwvE_;TPwK(*n@3>vG{%weL>!ssA3Gt9JOS&;#e9>%G$)8T+k_K&(oR z1Zoy%>OucrqxmNaiYp%bi8=l=|BHg2X+4P4@8~r3`kOE2s{e<;!VCI!Wgjw zAE?+J7bM1cG(}CF9`J9C7OX;w1fe!Pss5{kdyrr#)(Hpk9<*dT{>giB5D->jBT9sW zK$4|w@Pz;)$?9dmm6d;%sQsSfm6;;|_*^!Y55Qh4WG4}UVq@5N=(fm}Bd15s9yu%W zW%Ry?a!-ZTMZuBIKaI<-lE1ve?dnVx9>%!fUs?cW8w?sUSdHIcxYBM z@5LOtVzGR%BMnrRofPf1n%bmKNne}~*y?gfd1%<)BJyHNr;;DakG(m0mDF-J<;ezF zm?#lmo-4T$G5xyJilYMNDBTw9m6p2~HxE$pXu-Mv<$b#|9Dl+~_2;IM8g#~T2||U_ z@tQ)#fgaXUs*#AB9fdUM(1#E0X*sg~EcU8jDQPUI&Xk4=#`Ad!!X_iHa5qA9U* ziAoH7@+*f~uA9rAA~z{4BZygtT_GO<$MSEvU7a;WK$}H5+FybQMN@cm&xz*7#ui~3 z^GdMtJnfnv5Rdj8Oly9{_-#(Cb$#sMmyJdLB1JzU+XdGyvYR#=d45A4ZqhYYzvG=T zuW4*iBZ*RxSbfnEDK_;@LPrVZq^3~uEhG@b#?*LT#x>O!rMcZGHJX=E@`b#qDqg-U zUl#D?0*OU3ks7AT|AKn;;&(;`Ty9ih>1e)w;V?pbpz<7}&mP+R1RRlzzPLNKce0Xo|- z_l0n;NB%6X6-twx4Q>H5uHy=mPrr?-@p~W)1*x_PL=MyxHAV`pguRbyl9gaA%!Y(< zdDnoE{LBi<+d$F3py*6%Go|0rtMpnaU5xY^IP)DHnl1NTDYtQ|8?nmM2MKp=pw>)5 ziKY9A3is)D0$fnJxhmIIxqm`#!jd$3Jz;<%@eTg9TuGPh`^aPazUk{deSc;zHUEH2 z1WC5xE^c&J=Psz1>LvG{zdit*Sj< z;AN}BiWNS9ZhPg(>i2w3uxt3js*jU}ne;!msZKK)(bNpg}6N-h1^TLya;BJ*AiY$G8mKOVXfd4-w`L~MojJOfc70DT?|BOl-`G&~ zoOB{Pc?7&)Zxgsh84Nwkf|By0aJ-%!Lwz|D4>aq*uqctY$*q%ifBR~f(8^SF2h@J!};hxm*6{R+=%Jm2JT z6=eRob36od<;g4Pmx=B9&G$;Uzx)}%e%*HWkw;4HHgm)_>9}A$-X%EfhSB z$ykRmNdg4ta)gp@UeKRzCI-K(pcohGhP=y->Rr}z&aopi)Arkm#gciYJMBt$??u5V z#$Rn*<+k`5E&x0zl}vw4iLG?TW9t7!lhj``yKm*s=w;sORr#9RdMa0Xtmj0cJc3Jc zR=gr|+l)LAl{eCrSF`dLzPGJxYHVx_8qahz$o=-M3(W4M>DkuyNxoPXp5@tQE*`{g zwZXq>`gVl5?f4ttIemq0vl8#C9%toAvL8hZV%hzZKNhP_xtzuV1mIy!86ew-jEe;1f(B<~oFk;~=J7r6i%mld`|cEgVt-4Lw(9{?3JD9!xkkr^ppi zAj^pg$l50I;V=VC_)oJ5@7LkeFD3j(9UgcI;axhsR|@(aVPGVHSgV7KSBsK8(C@p? z)ouHkIsY{aMol3R}%Q*Bm$Qbc;hAlJ_0Y@NZ=eb z$kDT8NM^8rvAjwDhj{5fQH{fBWxR&Xfy@HAawc*zKb9*}(2GK3NKC^+x8`|W@~rcC zT{-+d%XDeY^}7D(gdgC&g=a3$44!ZD+{QDJXB>~Dce(TX{LAt5c|GnWH!r_mFZEb2 ze{;zMo z4a8>^trp5coykAEA(6FvRtud9CxS0YAajf5$9? z+x=1l8e$8EdS-g!lZ)tK+3J2yiEYm*NaP_im{rDo^)JC*M^BT)xlyiHUQmX8D0%FT zhWI27-Ao=zt-Fx6ulDEye7llYt40O4tsdf(d8LZzRmm+>vKrbXFuxr{gN~l--xxU) zmSgWBu{hqs5_;aJr@E3~8+j<*b=U(&$8RW0LDqt=XKG5GN-4&Q+Sl=W&-Nx~=HQhc zz}mn~=$eu+FlE?0Nk?D+#+7jvI7|X#kvPUztM>r?EhY%Gm|F3SmW3-L3mwczt z5K_2NNMZ2c>S_ht+Wm6C0q!rD6evFe`K9^AWPIbWYIE{G{WNwQjWw2!8={CAry1&Z zS)SM8!Pf<^*Ff<3#ge)_xiTBBNd8=f$6=c@rc&+a6`obiavaa9J--;U*;34PNsgw~ za}Km4xlHA|4tsdCV&f{3&HDYIey>bMc<0LLZOCb4l?Dhy+0wa<=Cjq?m?6N;Ys60B zO+g6wZvg)666w_|D%47!E7*Txzq3VMtxTFLu^mdTzk<$wO+)T5L&f*xvl4eTaT)a6 zX0%9eqo;EpNl`W|1ogxyFqt7My~=t)6_#Nc0OoJd|L z#ecw8g$CmBQ3m3zSEXmc*JXi1*&RyDct86lwbqO6Z)tyYzp#NA&x4d*q zLm>{BGY26N7Kj>668ha5)K&Y4PC|y#_)xoe>$Lnh$X(UQPED zsGlSq5hY3$CtY2tBT83G!zJR{-D3sW@hEDP}zKLTHL?!B+qC}pYV5iBz*lzOl_1xUdPsQH?FGe5I$NrMEWP6@FC!e&#ANQu@iO7 zcXiA}Vy5Vr1v+L5F?fKLT;I|$Q;C_TV{XC$Q4Z?5E6X*^>a>;j%F~fbU7Yk9$lIoJ01u z-owqC&}$nNyU%jz^y{+eoBO7(?USCJpOxOzXNBc{1{PK;wyF~1M@`tS?p7l#4#;Hm z{^hbmvN6W{7Au`49GUhG6N+iS7=7^=_^yRX5cN_oR6<+|Rb7%Q6AP?<2g zQ$)WvRV`tn1XoJOBs-_Ak)f{VD8gu7TGZ6okUW~ zI*p&MlO>HqRI%C0`^ksu+b}BVI>08BCQQu|Q~%l%(9+f{D!fl9`QZp^UZZlxWZVQW zr%8V){D>q?43_%49#u&gP3d`w^!yYBX3jqf(0fpwr8KWlT5NBX{!vT=L#Vn*Svh=3 z&XYRpD3FL%(gB9=4&t&i=CMIumpliY-+YkEce2-YKfe;5N4WQdWHMIDazXoDNrOK$ zr?-WY@Waa5Jn{3gA~_e<^zMGxOH8izB^;BhmR6aY_WppH%%b%Wv8R=&ZACki98>Ed zHTd(MkeE$Ouyc}&R5&Afb9YNWwj~GE39adp9lxMn+3HcCQPQ_lzm~49;Z;gHofvAd zJG&!gWnzFVdsl2)*705{?>W3%iR)S=@e-~&6lQt7LjD#Jv%>}RX{W{Jw<1}n))=Gt zDZY!L7Ip=e#i4!Sp%b|$`8#Ij`rgFIeK#M=*oWc?I@j=b&cwA%nrM7#GbQ5Dm2y$b zyyu0Wo-YPp70D;wMcb9g3oD!4}=oM_ooLB9e9d5{4XA@7y%Nl5BRV=Bpl+H zamcfVwD%`(xLb+`AnA4dE%kpq{i(36s|vH+O6~sLGcFQ2n-3GFw)6(cEftQ~A(bUh zr2xs9?jRk0>L@COX}bnHBWu|SK`ODDEAWFqO=|?{umHSO_FFQpfs~+=gF-T%+W_|E zLh&|oQR;}+)bo;RXzx^c+tl3JmV8R5_@T@Ly&kg6APU|sJMTp!1kDlycP0_JEo-{H zM2PeD^xJwf-YnZGDf!ZG3QupeYmU6!#0x$d+SE%e*9E-9 zik%#ZTOhr1e@|grcI6)b@3Jl;OVQF3Whw)?shD-WH2*(OQ(Ka&bkoJ!rhXgl6t{$Z zuVCnSL)iD0bN)r_5Yb=+2DmX}&E?pGDHf0tQ=nqlYln{Bw>!10mqaFTn%5;y70*pP zHv&Tm%M-R=55{XsLhJ<8Q9As&F_YuHj*`{UMU1588El0fV8}X0A?&OdaZ!T-( z^N0hriJC`n^bm^Acu0$@idctGXp%ZDD)S^sL^%GeQidk?E>?`G(A(L`OTU4gZ=mchxoa7HOQgu|3?#mu?%w5* zZO()gNc(3-c7jl{U}EA zF+lZg#FIxNw?CFl^G`$XU_Bb@{?yXGVf<~zqP@~>n`5;*5W@=ujb~mE0Fa><9}(78S+3Vl)v-2f25`j)freLOcby}MpAF>gk^#&cvriwx{+E-NAn72r=p(US(sl_Dgvg0etOxK6&9nnOjQ~G^I~dW!~MT=Uw}wQU)k4E5;N(`7E*NXrOSj>Q*M-Erd8& zs6gV5jans$Uf|6^Z5dJgH_i`x4tBw~Q|YH&0~MGYlZ-@h1-M;g#g{on z;M2p(6wxo780k%&Po~tl$!|9Sscm6!Hv zZ}%pTKk3rs@rS4yV7uiMU#2j|{mfqBJavIg4{jdN(>^D1JyR-j4a7@kI_UJDLMk)x zuse)r)=8H#lyZnr%D`vQ#}3o~>U3B;7k4r`IC-vtk z*&WR+VuYr?c&m&7I6^aIxzU8Rkr2mb6NSUOcZ(Ht%8PesJTLih1$e(;E}Nn54?(2~ z_>Ky2^E|ot5bfCr+TBGw#CV6mX{uW10{#z-*yD6rkbH`4q!em%m8{wQUjg6S+!T2M z8=QXZAA&w8;SZz=(|(o0ZpR@65AFGvl8`g9#e0MRga?|CZrrXx_YSM zI}*8H#pDYv=``V}Ozf~>C46sq-tv9w>0l~N3==V1e9`Qo0bx&@;ygHdWIVH(%j;yf z!Cg2sKB*dCyqM$@WePGP%(@DhROPTEGW}$AhBdl9;7Kz~6Fjd-mG+wg8U+{s5o6&# zm=Rq0soG>PS$G)+0@L7C@I$f&cD0dmgp+|%A0!y?v<5xzX2y+;T+0oz#V60~r2n+T zX(pVYLyl~+o+2Q8gCJR?jss$0q4&~u=GiY~0xE{2H@_kqyhXJzh#~*_8K>d9!*<2p zR;(@8jN`U134^kJdKU~z_w?<;lV~*Ui`JPA*>Cpk5&*iTOYWr3%*nsbuP6{__!YUU zr2dW~eLWTQNhaSm`XL+)<<6Grs_5Ov5)#ys+p7pZPB6f1ssLewv|Q{ihk zsob)TSXzY! zI_$Q9i41V`G6^Z#!SCb5$dWE|EmCZ;y0l76BKKa)v%l+O3ELlc4QCK!(#p4RqS%W^ z;i53ij4owa-%|QOwYSi-N>8iS(BN+qH2=vfNxTco=}q5-(f5q z0KX(en_2g)A~I4w7^&ttRND>X9`MYiPUx_u8mgxzYAd7VPG~R$TgXFBWU^e~a+655 z1TOeB1XtCDGE1L1fBj4cU4lRto-7+m{G76(%zXcA{L<^w+mb^D9Yzzq4r-m09`Yx6*eJ4cjSJU*`_kwoa7rJ)B|H;iqQR%XDj}^`I`<02Ix*UnBINtxc?kJp zYpQR?LFk-muISmTem9z8U%ZiGxh+9>vHp~`m9kR5Ruxgp;AzjDp@=vNXS8XF!TWcg zDtE|T;Bu`W#dp`o#;w)49~(F3z4NV8c^L$9d~DoO#8XG~t@7u_!JG8A2}odzKsxU7 z@;UM}X?S9AJ%wgkeGjHMQdjb)#^JQO=M0Jc>Jb`$R7WO#G1C!eL3H$OvHPZyb9eNt zRTU+4?9UTb$50BkMhofKSKdTVa1xMIRm1bI9>lawUWE4=C#G_BvBZ2q#n4##mt$Pm zYJ5jd=Nc{Si0NU`RRDg2@f}8kI25if#zTgppV5psP*RNYs$8NUFRY&l`}TKHA2HIwm4iAhGNXhB%+V%>*>wY+GD+!kuh~9jI z48>@4xUEqT>7?YomxT2?i6*R9O~^`A?^Sho-N-mtd6GAbCs8(U%CZz!%*wu%`zI#a zuY}^c{e3SR&4twJdpRLC)cH7(Dg6-;0yh!{X zbnPLZxcqCw5OI0&>GsB^4JzGUZ^6bk`4ji@IkwmMjIUgO5Nq{zJ(?}1-)AJ0Vx*SX zUe9Nwu&z}h6&y=PusCjt{W2(ik{l6jUd6boKnF8S5PeMS z6RZfMWCh2u&B^W0X05OiGwZ?%QzNpm95KzKZp@ zmVB;pRdfX}>v(POnoXa&7+_;bE&QlBZKzgz6(KN|5SThya>anP&+!jMUrIS;DH#x_ z-ZzwGbRyPRb41fJQ4t=iUUG{>1nCEst7589FK0O0{*?1jt*E=UB9^FNEBw`3ZeKQ@ z*;?z_5%%oX=Rb_))$UpkJ~0bBGI|nI-2VRA^1NK@d6SEBqR&ZlS&OMbS_-=WQ8aZ+ zh5nV^0MAk_-lnPlQE6c8?R-yr+d&U!`kTdEI-tqu1Zii6HL#?O(%Mq4>HW*b?zGkR z=Nzj(i9c{$Gkd4k>$?j)iv7;=-&`+(quqlX=F=_at})w0a8jLXn_hmrwpqwep?J%V zR~Ol4F+at&iJ#i)65AZY50@-J?Xg^q;y-6cWIjcTpQJPrv%(IJUiX`IXN|q&2j!Q^ z*~KmCz37jqg-o2AMMm=vehYiJjriqQCwH>sKobSjKpECaKwTuDE}z`d@KE=cy{;~v z*LXJbyvXw_o+o&YU5}0%k13yfJifl+f8BVjy!?ODcr2nd_wn4xGl^#$kI6HF=h*Qm zIl=t!$o$BW`5~elH9tiAd+hvh=7g!{MDFw&{Dg$s@D7!o4=m~KSUc{V+Wz`{0DX}y z;=^bQD1W8oaK9(m#yFgEPjtT6U=Ft#tU_C70~;g62%Klu3n zO8=|-jC~l|DE>5M+!r(M;y;}shlNxGQrJk@HkB&c=!|{9-WmHeXFA%yO`+{wn*JSy zV1*RL?xBB-Fqfu5)m|5>c8aEI*+fFVvZN;Zvj7US z3lQ*~!YX<1Q0{7&Dsl;DKCwbptNo}3tg}{D2!!?Ocs4x5?`5Uo=DUyw*cNZH2bk>Y z0GnD4-%-F@D;Gp>c2>eZG}?65Z3}Vk1U9|M1aB{!N|O*c8O@il23qlnUJG%x$Wg8M zR7m^J%NkX98niy6Ii9^=gi}f|7oVC8um*7cWZE8C&=I}O-euLJJW*Fn#B8@U6GfYY}a2REH_M_j2ce`s_od_-Z!Z#M?Jl zCdlV}^%*@9ZuT?TxVDYYopNPZes-s9s;#nFuv2L-1YEL~MHFSoEem57&QEi`wW-n5l`i_UpBt z*93lHyQNW}w!-Q+8dt+^0=cpm!rNxCya?;r>s@wB@*47Vs1&>g;{)V|CBc+m*Lr>* z@^k`_=)-caG$=|lq?dG+=9#xlp47K{+{X;^h_kaB>0rBHu=I|Obx6lP6j_IGTnapp zi*o5X?{Qqm|YCY@p z#K6B8f|g!xXl@q`f|@0Q-7-rc11wO`x~B!eZ_6He#Ky8Lzh@2$HAsM(B@672%B?=rWVZ}Of6q#U`nu)`CsE+F)9m<#J zPs5%!E&0zCz3XZ{FPX9vYZ5BLPOA@)#1@0&0h;Sn-ldDA`(vXweg|^sBo?jCba`HR2qMC2#2RUVHrYeCBVoL@64A8~iF_cD` zr5OGHKZC~0&wx_c^IF)mGwj(E_H=|iugFy66hoFSF&Tt(oQN*L_BA{-f#Dg(^HIR- zYU6o`XEM))JmSApE$PfKEMN5b1U!}+E3O&JjGO{%g&MU&Sh$yh{Ku9V=p4UU3 zwXwATE2=oUOYufZTZKNskU^=0l8Z;kB6G51DW>3|1X;qr34;#*h6oG}r&BB(o^pUt zN=_&eOrZb*4u^s?|5m@J7e~X+Ss1wMv-@FTWSEPv^&9DOh+c#}wX>nix&4WDBWBKk zfOnBP%PUKfbhJOO!FY~vZ`@&)j{ZimZ)+s@h;VMOZ!{&#sUodA&ioB|oiMZL$p1g~ z-ULjl;%fYEW`SnC!=|`07&JuGOdO3v#$_6&;kNV$3MlR*n31Sa9J&ETVW4M(_S#W{ zYc@?Z(ZuA{h!GT{GYm2VD4RwkYQ*jJw&Mb77;vG#-#K+}ch7((-}`@`|NDI3^TKnd z@2%xj)u~gbPSrVeDu_OSi70fA$naD3U>zd72)A>iNc+-BV%j6CKo#KM;YEadOsY`1 z%N>@@Zxje1@?Z>L_69C6ycxu>3h?B)H^iF5D9uq+Mx9#(G!u-4r#G2d4()F(?}yme z{1#KxngW9od#*H?m>TrF&k7|R+Dk*o*pKZ>2`Mrm1o!FHdmGt9yu!GWXI znfT4p8FRIEQcX-k>_RtMxFcG)+b;Ypq{J~*iQ^I>2O6OAy-|#_g~)ozX8+izPGqK? z$_#5Y{3mUQvRKkZa&l^kES#iWES!eOe&;khIkQx#Yo?u)B@+{SG&zm+(j{W$H-q)k z6~kvl*Z`FQ6Lvlowf{v@av3}917VDM=Nh8>n_M!!22?}rHFK+JDgvskad<7_6|Z3= z?E|5p5qUEh?!C$UY_3k?`a!3=B4eWSHcwZ}9VHPScqQoMABnc>7=9?D5w(6ZW^hDe{CB zyTDTdc^p8NIbXl5S(#hb-21PVHQaYG*)TwF(e`&)s6huX!)v&m{NdFy>W@`%LTH`g zQ>ILiRw0^*v?J_Kx>1HdeJU$AH#^?3d_<0uJv4%w*y`ZE55ZyeKkWsMmuQSTnAtU@{UDrHJ++7_OQIcj*k*~M7 zkJmMG72_m=S9^BdTi~g~@_A|=I~6K6JT-KIFZN}(9IH4T$O;ml`d71nRAkF!F%{ci zl?NT%Sc-McOmvL(%h=>)H3`D;_6S%X;g_&7H&{2aA6S1^u+IGAyr%NsnZ+3Md}%j- z1hf6GBOFAVu30A-&LhLG@1^SAZG!4t-`Is4zCMT95$W9)PWG1ij@-oGf0ru$k18qD zLq)0JzowyFCC9Ur{=Zqv{~9XC!yo?(wX~LVwTYTfc*yzJnE5~H@bPRW{1{gKy@bK70Pb7b|mNj8)I=UMH3`+-i- zw&_$Ro$|jG{YnvIA71vq81>vZLN)(A;=uo6^nV1SHHELk$VUFYLxfnfhqB?H{@$*) zEuc#v7Cy+EvKSOOb_h-cT5dVwZ1m|Kf*dd&IWYVk6f42kKFv=zpWoRkrj!rA7R@!yWWsZ1ojvTvg)tin`Q5_lcwZr z6R4Wx>r)_CeSIOSAo+S2q8<7A6rvjW`V>RHGKHuvJZ%UX6tpK|T3|K4?khzOlZ{JX zDIy1kRVi{_PARhgg1cx${(qdv(|^c5vG2-_~(_g#DGT;}8W0TSf6(|K&DYm0kuV z4V1PNd)f^Y8*G}1c7u(fe7&#iAe7mtFW40l^k(&VH=|C=;gxHVe1Fw%BpWV9sR9#|WDvR#oy=>dx-lO%Ct;!noleyqd4u^!O$(QCMdV zLN#dfvqw$#b2wTAuB+jdg(PR(VURNd5g}Np9MWpaGC4p0QOHftY zs!qD!oUin)hx|?Q#Oi4vQ%y^xzjNntO4V}-7BogR0hX)4vS0|@MyDG;6&%#B2IFFb zB>0s+;8V<&s#8T(HPg4tZlFIOgq(lU{|1Hik^~*6LE#xQq_K*^dx`LHki%!GTZZdN zim#X0d`y@c2{KITEI#75MG6rvUzMri22Z7rJ|$~C#fi1-i92sc9eRo+#|I~QM8z4q zr<7t)!9}MxsQ(+zJyVNKQVZI-onJ@^(z#!c)N*xa1*C)%xf7ORLOre;4>TkRgt+g; zS|o0vam8&6ve0J9<%_g>DyMqw%`Rk#Js%wlJ#I4l(_!Z$|3tU9UmaKSdl`_{AjYrFX=Q@`x zY>%dux~rwKrS4q@s;c7Hn^v%BiHZz)R+*pbP_jFUA~YbP|2q-Fv zg`)OKFj05&ac(v4Wu6fGwtK0Os0xuvj2BRu_oso|G;sd^Jx zAg(Z2nz9#{xjEcO>$BA5BdXNhVkvGUpPf42YenkE+6sfR9G;Tg{U`dGTj8T~W$0x0 z)ph*nsF|V{9;r%CxRVSKfi3LGP)~>>^9&)W4i|gN(Am!G-990S9c3u-PB%QSZBE+^ zA$$4`5l;}o*q@hEwZe~_w5apmBBQU*n3ZKu*5mUGeGL3s@@OKn>Bx=3XFS&S)#M@R z=}bYgp~6Y|^pPVsNW^$iFu>~!aK*k)B{_OCZ`&30SPbXa1eH#X6*@t@ohVu`RDB=B zE)e#SB~D=<1%?Cr9lRd`?STE#E+No7_SuCnMOBSdXh#b>u%j`Chrd$#Gad`*YPe+9 zk%`AIJbo#*o%BuVlq{=ET`_zo&P?v5OecI59bE1F@Z!6p)5CK{aungh1sEA^-VL)T zg-KMyB&wY7rCgC(lREhhJX~9gD{Efg!SFtkwPV=Fw)8w%lNrkmDt&W{RrVGrSP z(m~;6+VA1z*5lIWIUp;2AkP>eHz<(hU4g7rAkT!7W2H_gN+%WMLuvJ);B-&;N|i#9 z^C$3bqb zK_@&X(X;rQv4kMN9SHU5^)^bq>WS0eOvzXETW3S6rdc%^GA zUf1H^G6;RQD=ON3AP*ZLCn}J4g@HfU5Zeu$b57r6C&LWxDO^UXMjCQ7 z-|LTay7WhOItyzzz-q$_On>y&R$@icdC<(!7BA5LXp~x+F3G`};P>kT22M*5Y-!4_ zpe87&2fR`IkRjb1Anj7AkjGH26+q#Kxl|Mv39s>y&4MNM}liTFQ`<*3RQ3*0W%8hWckrpA!LBOvM-RX zyyb8O@=C5MIj+K(6bvM`7Yfd5QYRn)hd**^IGBLR&EFH@s}RGM!U}xB0~Zwcf(M`G z@rET++`pRN9wAG$Gv(r_^Ja8<4Wz%5$zwvQs6Rey7u^l%k4qJuUbw0{8Sa4aQ-kUY zw`3GG_NZ73~FaSV!G&9GLvBLbJ*)}r5HDPTMC1x|B_gG)8jcgyMl*_g4>QJtiq zpX1Rco#;pVlgCz&%8ObeRxDH+>&K?S8WsWSKQ2^MkR}bfAqA+MVyGW9< z+6wDrE15THW`Rrj;K6Mw64bPIt<8D`wlS0pBPfSo09J8+Wpv&Zc(0hsT&qxC=n7@4 zLU{!!f|=KW(mfxFPM!kgT?6F=h4Ok=C~qm0cYzWlZ97nU?qGc~#yL| z-bnb8OLd&E8QR*>W^^+W!f;vT)z9o(sqEzA4a?;U<(W>EGINiP$s)f}Ldnba1(%%> zJ!UaO!7a;S%FKnZ30bWQ>wjQhAouw+;PI_*D3AwoK?~P1X!GyHQ8stgW zp1#U1d>LAA96|<>nS}d)z0CA=^T!TECQIu9@e0Y!f@Kz{1w}qPvo$w=F z0X?RGR>%rI4^l56J>^4c@*%A@kgickPj!XVq>xsN{GSI2M`Lo+v=L2^KF##a%1G&7 zA#nn=6DfqBQ%IYVV-2Rfp(KLNi$0{6eMp}gNbh_ut$WcYQy}&ZvxRGBhfif|A+Jtc zT^HW&LwehXU|&74j)t>18SmzdcP~E9SRCB72`T# z$^z7GAJi8t>x}g%+k_tz-7hN{5F-}e<@5B-|x5h z($Gx=D<6G)UWt*1`l}eU9*wNNBxC^~^3W;F2+k@Ea{;0+_z0EA*y+sK((ajt-1B85 zy9)*iKa(DwDM*;;cXRKsVY`832rJJ?LTg{_3rUd*n`GcA)jhFCAblZ_>>Q-srdJFk z8QnYfg`_<#kUUzsN+IpY0eN46KqX_N{KesQWHoqIZ!GE1Xdaeud+7!}i z14+1S)4q_DpGciNhIG6_YRa|wDFw1ZI4$)N`SP)Sp(uY7D1S7a`F@AA?6FSBdqe^K zQ75~vL!R(~2lp*PS+W#yuPGv_MLgIAdG~7}_a;LkcM9kI#lDd4@{xC&fpnTe`b8Jy z-KCIjGmvDqyJcTUH~Em37)bxzCC$DihrF8SzOjB48(HFtHl# z9LK~kIeg4hna&*|%17B9RG%8^PQ%>DA-Zo_{4k%GRfE4i@GS_k-`3+ySVs3$%^@;T z*5;`z5bUz#Rc*-PbX+7mCIc=wl*l-827z$OjB!?FNUa(LEeb0=Pxf=sq}q|fk0ON~ zD7?)!=qy$Jvm_E#=~UlINLKYtd+VkCqSU%D?_3Z!DV1j061#htYiBUfym0}ie(u7s zyngaR->`i7nMXYFIg63h=)JX#&9Tzd=r84WKrKEpYa2H|0px&n8-77s^s3Ajy&Iy1 zGpv5Lj3iHc*#=8CO_vz6Askff>osx;+NhywD^@as&dF0T)${Dg3-py>p&2))X z{bg!gH__X2Il!Z`Ka?E9^^@wTw6`0o7a5C7yo*muc5>d>_9k}%G^K@ias$-xK>Q@! zlt!m-ZOqKQsQO16rG%_~DYw{Gk9_`a?z(~@jF}i((kFnaR88fo`R}xUhYZJ(HC(X986l;1o5OX&>)i|fVD4YLLKU&&C%Tuf_&j5` zj+sa$0$GoAWuAp@402Aa&iCn*UH_K|s!*=%wnf*?)s<^whsmw>fz05t-wZ$l-h#8< z^Ar(nZuix@GhXCCB8A(f21kf=-*3sr?D@6CyzH(eh$gE3l{-%4YB(pD8T=^G9*m8e zQegDg0MK55 z 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%0Am6iq=czp9{R$^+E6?lrR`crw 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᤽nP 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 z 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%0A` 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 z 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%0AuLQcE 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

Y zHJyU`-|oN|4O)N$M!s*kzv}7{kHA&viKV2Ad#zQdG*RFi>-^=t6g0T z*Uc(@8QTvo@ito*K0KwpwtNd0LOsRlx1$=qseax=IP|k;ocalN?2o#itAe$Hm`{}CMArM_){JscK)FA2b_PG^IM#sbp96SS37^P^NXGT z3iYnPpE>_K&i|V8zvTR5&Y!E_gkQq>7dZbF$Il@7Q~W13-cskUcm7W2w>tkF&i@nV zf7bb5b^b}`|Hk>HAGUlSq7CV9n}ct4e%kr>JO5M8f5!RWcm8jjU;K#Wv k&VPsF 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/_imagingcms.cp36-win_amd64.pyd b/venv/Lib/site-packages/PIL/_imagingcms.cp36-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..1ee46045333b3c481103bb71d83c8547df902a38 GIT binary patch literal 244224 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 MS5_Ok_P+o6HyMX+c>n+a literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/_imagingft.cp36-win_amd64.pyd b/venv/Lib/site-packages/PIL/_imagingft.cp36-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..227d48b38b5eb197f418dd97ef1cbbd4f8069117 GIT binary patch literal 628736 zcmdqKeSB2ao%lbKnIr>5?x3jA(mHBv(*|v7SQ{FubIA<312YhcJoub8HigzI!i+%W zAvlS0dmL-KyWi@!+b#R}Yxmo&?sr>6yOx+aNb3f;EKIij%&LpmX(Bt!XJbwNP1&?PZSNRv#|Nrs-s=Xf1 z)Qg^&>iOZMXD{CAjX!(wwJTSx4Xs{t#~0Ro_RFF6&)$Cf9m&w=J|9|>x;?b&_E2Qe zlF*m$xb^c_oORaZnqt>YkB@BGa_HfirN6tjPo8-v&yjl{x_lGYnn&I1vGq64+^oz0 z=j9vq^{*~Z>g%^JPjUV2zdWSNw;XzC<_CHH)xF=o{PX(y^~cP=UYx6-DI>%U8n*-4&JxrQfs;w$B* z_-|;ECppFA>AWl8nNccxkLz~c|HZ`eM=LyGA%OS!cSZ8^>yy0u< z@w8pB=GM<9KkM<_elvroPfr`yza1OBt{n#IE8J?HAsTst;6#9BY!m;58RZqL-HLjQ zjMei+YJBKj^}<(tp<~spYm3->l=m_%+uozznzd`%d8Kg&4t2e+zE{1^-*yKT1(zOh z>Z#&-|GVnVrS$(7|13LM6I^bkUkz>jO557xs?S;Kl%+nA4DLLe@mVTa(`coi3f`+YG6Dgnn$Z#!~m3;O=BN;7$IS5uCfym}b@*!TIZrX|cvPjNm=nc>4y0mZiQb zHPfFBoNmZY=+m-qtf{v$*VS5Tk8{Z}zL#0PGOl_pwbxSeYV7mFKmCQr^9=vuYA~Le zOM^+KGDG&<5SJQzZcQw+xOVuFVkN0q{AW>4<>70Oy6q#hGIK{OB6gWFXL4iuvi95n z#Wim6+$v?(N`<;?#GdQ#Ep=49hD*4*Et$H*$~^H9<4R6(k)`nzF?LlNyOx)^V*|U5 zR_4wSAjH*P=eM_cJnB$)Hg%Szp0m_G=PZ_tjQ5PePW&eDOXK0l=Uw=v+rapw@ijAK zWxf(Jb}hbS>_hvU?g<}y9&|c?-}c@g(*5Z%#nd57y=8SDNKUfSxsWsWcIKn|NYaR? zX1|qL6jJ9n4@j8?R*w~&NY&w2R=L3O+&{NXFw>AVf@a8=c8}o42*&D-XUW$wT^Y<^R(Yhx?4xJ(&FD5}`*+c`bF=vNsAHG+N3GSgJKB@Rbz~Sn8mlZ{ZIG z9;pF5H%LcPKV&YG4&v$!J)psqkufimYL-+pZ|;>rHzvAIrp`4p^D1OO^gsSuEpCfv zBJ$Zu&W-RoJ!79!i&hBU!$OqxnXQGwMV?QeE?nbTca>_nv3&gTBe`RfE%m&;a5{MB zRqp6ydtSAr<^>9^0o~Q)n0;0LtRD+=l&P6iC={eqdIkoU8uX$A(r3cUOqre9xGc-p z8NJccxEtT*%`F~-6H`XxIsdFuxwK5vFR|ibB&~IBod0{DP^Y(IvFx|3SrmJ~DyCoP? z45~Yu{5WG}6onxfTJmC1depn_+&7Iorf4WSjN7vv#!CZl8e67J zqrve_U;VH}Rs#!@%!;z@5<5)tSh^XIKYFJO$ zeqD36)m<>Up5{KTuCdfQW{Kw?$vc^@@5@c5{LODyc&w%qM%P2~Jp1N)qw5>oH5{-q z@tS&b=O{RFez&&5(~ynpHNto6sUXuF5+E9R$Si4<+pu)O)hb?Fi`Ny!tEeMZ#%(Y4 zLOiQ^e(r?l$CTkb{RlPGfTC|Er28!0pnMT9#_idbEo<{|zZnz(QmQjdQ|K@GK})p+ zgi@x*l@&@bT~iXOk8!AdW?{dTxmFh1zQVG4bppnCwxtYR7FAC>*Q^1K6Va}hQ&&k( zpDd9zMEO<{9H?gL-Lg>K|rnUzA(fRN51GU>~W^ORVe6h2t-hF^K^Pn z0{K4Y-nXGx`zDX-%m111yb(+JG}CG3waawMkx^rO=Q+?p-ASr9U+xmEx?j(_)$ojS z-RGD&^;b0mf~2ia33-^em^Yg@nK#~Y^G#=PJKe^ZE6N@|G?Y0>IcRNby}$tZOA&K3jhSve8|eQ)(QhX z_gz&lqiRv∓*39N5^iUXTKBQ21cAUW@P~4fiBVy%6iC6PEz%)!EKB{uvyB`tAd% z8q2P?>=gmEK$wbUS3)C9x@Nn=_hdv`2sWx7mlNs|`JnJVaFPmS%!`FHP;HX4{0A(A ztot~IKOk`BS88fzu4d{ks(OV08l7JXO%Fg}Gcp!$BQ=fi3dk{=WPOV;fn7l0xpDmI znbPCcLxlnNM{2?{MCmasPnLdChn;SEmxZxa-qJZdFN}oACO5+!!4{+4BOeeFzd@SA zR`)mt%Bs}1WOk-P!HsgGDQ(D7>8x}{0fIz{q$~_s{b{+8e_PxAVy~&b+$+IJcl)=t z2MSwUIa0)|M&Z~T7PUB+-b4V5Ph!1{WQFt@Qzzs;B=^F#-hx)9GK$nBGZU^D7P1uB zS2+JeDu^DlIoiCXr+5r|NGRUsPufE!1$_LJP1zR#XJe$(WZ) zQ^frk-Hn(5j{pQA)oYoYY_rtXA%GBJ5=)PsPLEV#%46Szqs=x0Mt83+fI6JB zMhXR4M`B{gx>*VTlDP_5>RHim8b!5%r7sIPFJYjlQRXBm9KTH}Kw#^ge=_7tQ+1uG z*Lyq>C=GpXVF+flo)^xl&lVdt(KkKO(w-M`E}>nts~`elij(>e5eN

6OA(<;&a) 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

tpR>S%btsD;z$(^t;8d@D{I-D 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.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 z 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

B5v+PCtj_hI)%_#5$Z!QA2g+A-+S=DV?xcMQ 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

IW;9v81pH)q&B!t{g)HwkipP-UBOyZe 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/_imagingmath.cp36-win_amd64.pyd b/venv/Lib/site-packages/PIL/_imagingmath.cp36-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..fdaac300a5761e5ce82b477bab4a9fec3f59b8e6 GIT binary patch literal 25600 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/_imagingmorph.cp36-win_amd64.pyd b/venv/Lib/site-packages/PIL/_imagingmorph.cp36-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..c41b2e7c6cc40434f9eef7a054c07e2b7676b38d GIT binary patch literal 13824 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/_imagingtk.cp36-win_amd64.pyd b/venv/Lib/site-packages/PIL/_imagingtk.cp36-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..07c22283ab7a90c9de65002185ca8365f2955e0b GIT binary patch literal 15360 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 H4lVFs#``xO literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/_tkinter_finder.py b/venv/Lib/site-packages/PIL/_tkinter_finder.py new file mode 100644 index 00000000..30493066 --- /dev/null +++ b/venv/Lib/site-packages/PIL/_tkinter_finder.py @@ -0,0 +1,16 @@ +""" Find compiled module linking to Tcl / Tk libraries +""" +import sys +from tkinter import _tkinter as tk + +if hasattr(sys, "pypy_find_executable"): + # Tested with packages at https://bitbucket.org/pypy/pypy/downloads. + # PyPies 1.6, 2.0 do not have tkinter built in. PyPy3-2.3.1 gives an + # OSError trying to import tkinter. Otherwise: + try: # PyPy 5.1, 4.0.0, 2.6.1, 2.6.0 + TKINTER_LIB = tk.tklib_cffi.__file__ + except AttributeError: + # PyPy3 2.4, 2.1-beta1; PyPy 2.5.1, 2.5.0, 2.4.0, 2.3, 2.2, 2.1 + TKINTER_LIB = tk.tkffi.verifier.modulefilename +else: + TKINTER_LIB = tk.__file__ diff --git a/venv/Lib/site-packages/PIL/_util.py b/venv/Lib/site-packages/PIL/_util.py new file mode 100644 index 00000000..755b4b27 --- /dev/null +++ b/venv/Lib/site-packages/PIL/_util.py @@ -0,0 +1,30 @@ +import os +import sys + +py36 = sys.version_info[0:2] >= (3, 6) + + +if py36: + from pathlib import Path + + def isPath(f): + return isinstance(f, (bytes, str, Path)) + + +else: + + def isPath(f): + return isinstance(f, (bytes, str)) + + +# Checks if an object is a string, and that it points to a directory. +def isDirectory(f): + return isPath(f) and os.path.isdir(f) + + +class deferred_error: + def __init__(self, ex): + self.ex = ex + + def __getattr__(self, elt): + raise self.ex diff --git a/venv/Lib/site-packages/PIL/_version.py b/venv/Lib/site-packages/PIL/_version.py new file mode 100644 index 00000000..035deeba --- /dev/null +++ b/venv/Lib/site-packages/PIL/_version.py @@ -0,0 +1,2 @@ +# Master version for Pillow +__version__ = "7.2.0" diff --git a/venv/Lib/site-packages/PIL/_webp.cp36-win_amd64.pyd b/venv/Lib/site-packages/PIL/_webp.cp36-win_amd64.pyd new file mode 100644 index 0000000000000000000000000000000000000000..44fc33d8988394568298ed7e4f7ea538bb91c6e0 GIT binary patch literal 527360 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 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/PIL/features.py b/venv/Lib/site-packages/PIL/features.py new file mode 100644 index 00000000..66b09335 --- /dev/null +++ b/venv/Lib/site-packages/PIL/features.py @@ -0,0 +1,309 @@ +import collections +import os +import sys +import warnings + +import PIL + +from . import Image + +modules = { + "pil": ("PIL._imaging", "PILLOW_VERSION"), + "tkinter": ("PIL._tkinter_finder", None), + "freetype2": ("PIL._imagingft", "freetype2_version"), + "littlecms2": ("PIL._imagingcms", "littlecms_version"), + "webp": ("PIL._webp", "webpdecoder_version"), +} + + +def check_module(feature): + """ + Checks if a module is available. + + :param feature: The module to check for. + :returns: ``True`` if available, ``False`` otherwise. + :raises ValueError: If the module is not defined in this version of Pillow. + """ + if not (feature in modules): + raise ValueError("Unknown module %s" % feature) + + module, ver = modules[feature] + + try: + __import__(module) + return True + except ImportError: + return False + + +def version_module(feature): + """ + :param feature: The module to check for. + :returns: + The loaded version number as a string, or ``None`` if unknown or not available. + :raises ValueError: If the module is not defined in this version of Pillow. + """ + if not check_module(feature): + return None + + module, ver = modules[feature] + + if ver is None: + return None + + return getattr(__import__(module, fromlist=[ver]), ver) + + +def get_supported_modules(): + """ + :returns: A list of all supported modules. + """ + return [f for f in modules if check_module(f)] + + +codecs = { + "jpg": ("jpeg", "jpeglib"), + "jpg_2000": ("jpeg2k", "jp2klib"), + "zlib": ("zip", "zlib"), + "libtiff": ("libtiff", "libtiff"), +} + + +def check_codec(feature): + """ + Checks if a codec is available. + + :param feature: The codec to check for. + :returns: ``True`` if available, ``False`` otherwise. + :raises ValueError: If the codec is not defined in this version of Pillow. + """ + if feature not in codecs: + raise ValueError("Unknown codec %s" % feature) + + codec, lib = codecs[feature] + + return codec + "_encoder" in dir(Image.core) + + +def version_codec(feature): + """ + :param feature: The codec to check for. + :returns: + The version number as a string, or ``None`` if not available. + Checked at compile time for ``jpg``, run-time otherwise. + :raises ValueError: If the codec is not defined in this version of Pillow. + """ + if not check_codec(feature): + return None + + codec, lib = codecs[feature] + + version = getattr(Image.core, lib + "_version") + + if feature == "libtiff": + return version.split("\n")[0].split("Version ")[1] + + return version + + +def get_supported_codecs(): + """ + :returns: A list of all supported codecs. + """ + return [f for f in codecs if check_codec(f)] + + +features = { + "webp_anim": ("PIL._webp", "HAVE_WEBPANIM", None), + "webp_mux": ("PIL._webp", "HAVE_WEBPMUX", None), + "transp_webp": ("PIL._webp", "HAVE_TRANSPARENCY", None), + "raqm": ("PIL._imagingft", "HAVE_RAQM", "raqm_version"), + "libjpeg_turbo": ("PIL._imaging", "HAVE_LIBJPEGTURBO", "libjpeg_turbo_version"), + "libimagequant": ("PIL._imaging", "HAVE_LIBIMAGEQUANT", "imagequant_version"), + "xcb": ("PIL._imaging", "HAVE_XCB", None), +} + + +def check_feature(feature): + """ + Checks if a feature is available. + + :param feature: The feature to check for. + :returns: ``True`` if available, ``False`` if unavailable, ``None`` if unknown. + :raises ValueError: If the feature is not defined in this version of Pillow. + """ + if feature not in features: + raise ValueError("Unknown feature %s" % feature) + + module, flag, ver = features[feature] + + try: + imported_module = __import__(module, fromlist=["PIL"]) + return getattr(imported_module, flag) + except ImportError: + return None + + +def version_feature(feature): + """ + :param feature: The feature to check for. + :returns: The version number as a string, or ``None`` if not available. + :raises ValueError: If the feature is not defined in this version of Pillow. + """ + if not check_feature(feature): + return None + + module, flag, ver = features[feature] + + if ver is None: + return None + + return getattr(__import__(module, fromlist=[ver]), ver) + + +def get_supported_features(): + """ + :returns: A list of all supported features. + """ + return [f for f in features if check_feature(f)] + + +def check(feature): + """ + :param feature: A module, codec, or feature name. + :returns: + ``True`` if the module, codec, or feature is available, + ``False`` or ``None`` otherwise. + """ + + if feature in modules: + return check_module(feature) + if feature in codecs: + return check_codec(feature) + if feature in features: + return check_feature(feature) + warnings.warn("Unknown feature '%s'." % feature, stacklevel=2) + return False + + +def version(feature): + """ + :param feature: + The module, codec, or feature to check for. + :returns: + The version number as a string, or ``None`` if unknown or not available. + """ + if feature in modules: + return version_module(feature) + if feature in codecs: + return version_codec(feature) + if feature in features: + return version_feature(feature) + return None + + +def get_supported(): + """ + :returns: A list of all supported modules, features, and codecs. + """ + + ret = get_supported_modules() + ret.extend(get_supported_features()) + ret.extend(get_supported_codecs()) + return ret + + +def pilinfo(out=None, supported_formats=True): + """ + Prints information about this installation of Pillow. + This function can be called with ``python -m PIL``. + + :param out: + The output stream to print to. Defaults to ``sys.stdout`` if ``None``. + :param supported_formats: + If ``True``, a list of all supported image file formats will be printed. + """ + + if out is None: + out = sys.stdout + + Image.init() + + print("-" * 68, file=out) + print("Pillow {}".format(PIL.__version__), file=out) + py_version = sys.version.splitlines() + print("Python {}".format(py_version[0].strip()), file=out) + for py_version in py_version[1:]: + print(" {}".format(py_version.strip()), file=out) + print("-" * 68, file=out) + print( + "Python modules loaded from {}".format(os.path.dirname(Image.__file__)), + file=out, + ) + print( + "Binary modules loaded from {}".format(os.path.dirname(Image.core.__file__)), + file=out, + ) + print("-" * 68, file=out) + + for name, feature in [ + ("pil", "PIL CORE"), + ("tkinter", "TKINTER"), + ("freetype2", "FREETYPE2"), + ("littlecms2", "LITTLECMS2"), + ("webp", "WEBP"), + ("transp_webp", "WEBP Transparency"), + ("webp_mux", "WEBPMUX"), + ("webp_anim", "WEBP Animation"), + ("jpg", "JPEG"), + ("jpg_2000", "OPENJPEG (JPEG2000)"), + ("zlib", "ZLIB (PNG/ZIP)"), + ("libtiff", "LIBTIFF"), + ("raqm", "RAQM (Bidirectional Text)"), + ("libimagequant", "LIBIMAGEQUANT (Quantization method)"), + ("xcb", "XCB (X protocol)"), + ]: + if check(name): + if name == "jpg" and check_feature("libjpeg_turbo"): + v = "libjpeg-turbo " + version_feature("libjpeg_turbo") + else: + v = version(name) + if v is not None: + t = "compiled for" if name in ("pil", "jpg") else "loaded" + print("---", feature, "support ok,", t, v, file=out) + else: + print("---", feature, "support ok", file=out) + else: + print("***", feature, "support not installed", file=out) + print("-" * 68, file=out) + + if supported_formats: + extensions = collections.defaultdict(list) + for ext, i in Image.EXTENSION.items(): + extensions[i].append(ext) + + for i in sorted(Image.ID): + line = "{}".format(i) + if i in Image.MIME: + line = "{} {}".format(line, Image.MIME[i]) + print(line, file=out) + + if i in extensions: + print( + "Extensions: {}".format(", ".join(sorted(extensions[i]))), file=out + ) + + features = [] + if i in Image.OPEN: + features.append("open") + if i in Image.SAVE: + features.append("save") + if i in Image.SAVE_ALL: + features.append("save_all") + if i in Image.DECODERS: + features.append("decode") + if i in Image.ENCODERS: + features.append("encode") + + print("Features: {}".format(", ".join(features)), file=out) + print("-" * 68, file=out) diff --git a/venv/Lib/site-packages/Pillow-7.2.0.dist-info/INSTALLER b/venv/Lib/site-packages/Pillow-7.2.0.dist-info/INSTALLER new file mode 100644 index 00000000..a1b589e3 --- /dev/null +++ b/venv/Lib/site-packages/Pillow-7.2.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/Lib/site-packages/Pillow-7.2.0.dist-info/LICENSE b/venv/Lib/site-packages/Pillow-7.2.0.dist-info/LICENSE new file mode 100644 index 00000000..4aac532f --- /dev/null +++ b/venv/Lib/site-packages/Pillow-7.2.0.dist-info/LICENSE @@ -0,0 +1,30 @@ +The Python Imaging Library (PIL) is + + Copyright © 1997-2011 by Secret Labs AB + Copyright © 1995-2011 by Fredrik Lundh + +Pillow is the friendly PIL fork. It is + + Copyright © 2010-2020 by Alex Clark and contributors + +Like PIL, Pillow is licensed under the open source PIL Software License: + +By obtaining, using, and/or copying this software and/or its associated +documentation, you agree that you have read, understood, and will comply +with the following terms and conditions: + +Permission to use, copy, modify, and distribute this software and its +associated documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appears in all copies, and that +both that copyright notice and this permission notice appear in supporting +documentation, and that the name of Secret Labs AB or the author not be +used in advertising or publicity pertaining to distribution of the software +without specific, written prior permission. + +SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS +SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. +IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR ANY SPECIAL, +INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. diff --git a/venv/Lib/site-packages/Pillow-7.2.0.dist-info/METADATA b/venv/Lib/site-packages/Pillow-7.2.0.dist-info/METADATA new file mode 100644 index 00000000..ae02ed79 --- /dev/null +++ b/venv/Lib/site-packages/Pillow-7.2.0.dist-info/METADATA @@ -0,0 +1,135 @@ +Metadata-Version: 2.1 +Name: Pillow +Version: 7.2.0 +Summary: Python Imaging Library (Fork) +Home-page: https://python-pillow.org +Author: Alex Clark (PIL Fork Author) +Author-email: aclark@python-pillow.org +License: HPND +Project-URL: Documentation, https://pillow.readthedocs.io +Project-URL: Source, https://github.com/python-pillow/Pillow +Project-URL: Funding, https://tidelift.com/subscription/pkg/pypi-pillow?utm_source=pypi-pillow&utm_medium=pypi +Keywords: Imaging +Platform: UNKNOWN +Classifier: Development Status :: 6 - Mature +Classifier: License :: OSI Approved :: Historical Permission Notice and Disclaimer (HPND) +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Topic :: Multimedia :: Graphics +Classifier: Topic :: Multimedia :: Graphics :: Capture :: Digital Camera +Classifier: Topic :: Multimedia :: Graphics :: Capture :: Screen Capture +Classifier: Topic :: Multimedia :: Graphics :: Graphics Conversion +Classifier: Topic :: Multimedia :: Graphics :: Viewers +Requires-Python: >=3.5 + +Pillow +====== + +Python Imaging Library (Fork) +----------------------------- + +Pillow is the friendly PIL fork by `Alex Clark and Contributors `_. PIL is the Python Imaging Library by Fredrik Lundh and Contributors. As of 2019, Pillow development is `supported by Tidelift `_. + +.. start-badges + +.. list-table:: + :stub-columns: 1 + + * - docs + - |docs| + * - tests + - |linux| |macos| |windows| |gha_lint| |gha| |gha_windows| |gha_docker| |coverage| + * - package + - |zenodo| |tidelift| |version| |downloads| + * - social + - |gitter| |twitter| + +.. end-badges + +More Information +---------------- + +- `Documentation `_ + + - `Installation `_ + - `Handbook `_ + +- `Contribute `_ + + - `Issues `_ + - `Pull requests `_ + +- `Changelog `_ + + - `Pre-fork `_ + +Report a Vulnerability +---------------------- + +To report a security vulnerability, please follow the procedure described in the `Tidelift security policy `_. + +.. |docs| image:: https://readthedocs.org/projects/pillow/badge/?version=latest + :target: https://pillow.readthedocs.io/?badge=latest + :alt: Documentation Status + +.. |linux| image:: https://img.shields.io/travis/python-pillow/Pillow/master.svg?label=Linux%20build + :target: https://travis-ci.org/python-pillow/Pillow + :alt: Travis CI build status (Linux) + +.. |macos| image:: https://img.shields.io/travis/python-pillow/pillow-wheels/master.svg?label=macOS%20build + :target: https://travis-ci.org/python-pillow/pillow-wheels + :alt: Travis CI build status (macOS) + +.. |windows| image:: https://img.shields.io/appveyor/build/python-pillow/Pillow/master.svg?label=Windows%20build + :target: https://ci.appveyor.com/project/python-pillow/Pillow + :alt: AppVeyor CI build status (Windows) + +.. |gha_lint| image:: https://github.com/python-pillow/Pillow/workflows/Lint/badge.svg + :target: https://github.com/python-pillow/Pillow/actions?query=workflow%3ALint + :alt: GitHub Actions build status (Lint) + +.. |gha_docker| image:: https://github.com/python-pillow/Pillow/workflows/Test%20Docker/badge.svg + :target: https://github.com/python-pillow/Pillow/actions?query=workflow%3A%22Test+Docker%22 + :alt: GitHub Actions build status (Test Docker) + +.. |gha| image:: https://github.com/python-pillow/Pillow/workflows/Test/badge.svg + :target: https://github.com/python-pillow/Pillow/actions?query=workflow%3ATest + :alt: GitHub Actions build status (Test Linux and macOS) + +.. |gha_windows| image:: https://github.com/python-pillow/Pillow/workflows/Test%20Windows/badge.svg + :target: https://github.com/python-pillow/Pillow/actions?query=workflow%3A%22Test+Windows%22 + :alt: GitHub Actions build status (Test Windows) + +.. |coverage| image:: https://codecov.io/gh/python-pillow/Pillow/branch/master/graph/badge.svg + :target: https://codecov.io/gh/python-pillow/Pillow + :alt: Code coverage + +.. |zenodo| image:: https://zenodo.org/badge/17549/python-pillow/Pillow.svg + :target: https://zenodo.org/badge/latestdoi/17549/python-pillow/Pillow + +.. |tidelift| image:: https://tidelift.com/badges/package/pypi/Pillow?style=flat + :target: https://tidelift.com/subscription/pkg/pypi-pillow?utm_source=pypi-pillow&utm_medium=badge + +.. |version| image:: https://img.shields.io/pypi/v/pillow.svg + :target: https://pypi.org/project/Pillow/ + :alt: Latest PyPI version + +.. |downloads| image:: https://img.shields.io/pypi/dm/pillow.svg + :target: https://pypi.org/project/Pillow/ + :alt: Number of PyPI downloads + +.. |gitter| image:: https://badges.gitter.im/python-pillow/Pillow.svg + :target: https://gitter.im/python-pillow/Pillow?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge + :alt: Join the chat at https://gitter.im/python-pillow/Pillow + +.. |twitter| image:: https://img.shields.io/badge/tweet-on%20Twitter-00aced.svg + :target: https://twitter.com/PythonPillow + :alt: Follow on https://twitter.com/PythonPillow + + diff --git a/venv/Lib/site-packages/Pillow-7.2.0.dist-info/RECORD b/venv/Lib/site-packages/Pillow-7.2.0.dist-info/RECORD new file mode 100644 index 00000000..afeaf4d1 --- /dev/null +++ b/venv/Lib/site-packages/Pillow-7.2.0.dist-info/RECORD @@ -0,0 +1,198 @@ +PIL/BdfFontFile.py,sha256=hRnSgFZOIiTgWfJIaRHRQpU4TKVok2E31KJY6sbZPwc,2817 +PIL/BlpImagePlugin.py,sha256=haYEEl_DnCGzbSICvTjxRKRq93j1BJ49D6rON3VoMSE,14296 +PIL/BmpImagePlugin.py,sha256=zQOhwL2iIKntYKxkdLTYWO3OGqByaz4jAx9mZW0mSPw,14374 +PIL/BufrStubImagePlugin.py,sha256=Zq60GwcqQJTmZJrA9EQq94QvYpNqwYvQzHojh4U7SDw,1520 +PIL/ContainerIO.py,sha256=1U15zUXjWO8uWK-MyCp66Eh7djQEU-oUeCDoBqewNkA,2883 +PIL/CurImagePlugin.py,sha256=zhFOIWO0Id1kDqO3bL-6P27Y142mseLx9eOzsWs2hyQ,1681 +PIL/DcxImagePlugin.py,sha256=bfESLTji9GerqI4oYsy5oTFyRMlr2mjSsXzpY9IuLsk,2145 +PIL/DdsImagePlugin.py,sha256=llS29X6w-oFTyflc7ta7jiFHE4PWqnHgpXlrVO-Zmgo,5466 +PIL/EpsImagePlugin.py,sha256=exWRY-hn_NP2lvj7w11rHZADN-ubY93TcZ_KSkwgHts,12123 +PIL/ExifTags.py,sha256=fx7S0CnztT9ptHT2HGuMYteI99CMVrD73IHeRI5OFjU,9009 +PIL/FitsStubImagePlugin.py,sha256=8Zq2D9ReJE-stBppxB_ELX3wxcS0_BDGg6Xce7sWpaU,1624 +PIL/FliImagePlugin.py,sha256=fl-3mUGENpHSpI0NxJ7PzOOuS7vPtZgjnUipSWnX0rU,4272 +PIL/FontFile.py,sha256=5LQh5Rr62fTz8rHvanAccr_oQQt8E2M_BIO0ZeG1isQ,2769 +PIL/FpxImagePlugin.py,sha256=qn-JGrpfN_99egOSZAsCcx14RXeZaK2pKDomryEM2og,6670 +PIL/FtexImagePlugin.py,sha256=-iysUmqEEOORhWBQCou0gqrgSwsMBqcr6qyWbrNptSE,3307 +PIL/GbrImagePlugin.py,sha256=X8UAqQtyUPO3G8OUOlrYXROgsZyDZoUmXvk_RgpGLtw,2801 +PIL/GdImageFile.py,sha256=Ub6B3SP0BQlsBgLjZmYT68gKblXK1MPbtJynyPWez40,2487 +PIL/GifImagePlugin.py,sha256=Y-skmIQinP0W2pOMbEuUBolzZqt0EQX6MV09XuYPkpw,28872 +PIL/GimpGradientFile.py,sha256=G0ClRmjRHIJoU0nmG-P-tgehLHZip5i0rY4-5pjJ7bc,3353 +PIL/GimpPaletteFile.py,sha256=_wWvNmB40AfQ1M5sTxoYYXOMApWQji7rrubqZhfd1dU,1274 +PIL/GribStubImagePlugin.py,sha256=gtLF7drAx66O9OOE_lJ1GgtLzjULoQDzFWT0sms7l98,1543 +PIL/Hdf5StubImagePlugin.py,sha256=zjtFPZIcVkWXvYRPnHow6XA9kElEi772w7PFSuEqmq4,1517 +PIL/IcnsImagePlugin.py,sha256=SC9TkWt0MVer-aBer5F95rD45KXL2o-mX4RJKi1m6Dk,11718 +PIL/IcoImagePlugin.py,sha256=BrFX4_d-HBe0Sn6htQNX5V3LI-HxZnW9QGYG9t3yr7A,10134 +PIL/ImImagePlugin.py,sha256=HCwMuVW03zj9aWNbK1Sw9gfqCDRVCJ3hUKXZk3E03Ds,10825 +PIL/Image.py,sha256=IbqOBdm0e5SaiGcu49gDCylMfZH2lSu0e5dfmF0gH80,115642 +PIL/ImageChops.py,sha256=XxYMb9xWRFF6N2nUcBrWdpZLTJhog9G0dKbepFaWVBQ,7309 +PIL/ImageCms.py,sha256=ffh825laLsZfH4Ojn9ADWbfx2Kqo2LVw3uc5UUAaqQo,36750 +PIL/ImageColor.py,sha256=g0yVp1VyRBieKf2n18gh5w9BaveRtp5LK-4WNYmZTE8,8634 +PIL/ImageDraw.py,sha256=SH8-SsBWk7mX66pzrYD3Jl7EMmwuLYDAXf-A1XSAcdQ,19319 +PIL/ImageDraw2.py,sha256=oBhpBTZhx3bd4D0s8E2kDjBzgThRkDU_TE_987l501k,5019 +PIL/ImageEnhance.py,sha256=CJnCouiBmxN2fE0xW7m_uMdBqcm-Fp0S3ruHhkygal4,3190 +PIL/ImageFile.py,sha256=oPXH-sNQU1rQ6goP67ZEbFBM56SxOR-ulPhbvfZyKwQ,21015 +PIL/ImageFilter.py,sha256=yyjUre0YHNOC-WRAFf060sZWnQ_JTvZxme3X-VQBEGM,15887 +PIL/ImageFont.py,sha256=4nv8YNcE-IGYWwESeBmQvK6Ii_OGzv1FjspGi5FOqfQ,36077 +PIL/ImageGrab.py,sha256=DdO1jppfTiwF4XtTLZ_dTeZm9flgOim4n3Hfk_rhpec,3625 +PIL/ImageMath.py,sha256=olaAaE7xJORKmQgQsfD7EhGREseKBZz7u4_zVW6WOdk,7054 +PIL/ImageMode.py,sha256=gI88wDgAc4y-m46vTA4zPmipG12wpYLNXPRHyPZBZaY,1638 +PIL/ImageMorph.py,sha256=S_ZN_u6QwmqphSnv6iqobbqv1-CKxNGNJqSQ7i8MyrM,7896 +PIL/ImageOps.py,sha256=Mm8dmGeaUJx2V3LViRO_yUNJA7I_tLtxf99kJitU-0M,18022 +PIL/ImagePalette.py,sha256=O-kWUT0q1ExW-1I26uggy-jC_DaDlur9wlf9DBCMzGU,6352 +PIL/ImagePath.py,sha256=lVmH1-lCd0SyrFoqyhlstAFW2iJuC14fPcW8iewvxCQ,336 +PIL/ImageQt.py,sha256=p5IwMwxc2kHzwXc30bXo4fIsTBG6fzQMClIjKCCdcro,5797 +PIL/ImageSequence.py,sha256=3djA7vDH6wafTGbt4e_lPlVhy2TaKfdSrA1XQ4n-Uoc,1850 +PIL/ImageShow.py,sha256=wnLjXbmwqrc1dNi4nxfFK64yUm_imMIxboE17ql9cIc,6358 +PIL/ImageStat.py,sha256=PieQi44mRHE6jod7NqujwGr6WCntuZuNGmC2z9PaoDY,3901 +PIL/ImageTk.py,sha256=LqiRd0wkODL-7GI4gZm2fAlmtUDw7keLZj_dtRmqug8,9328 +PIL/ImageTransform.py,sha256=V2l6tsjmymMIF7HQBMI21UPn4mlicarrm4NF3Kazvio,2843 +PIL/ImageWin.py,sha256=WlwWoWKPkNkPCbKfjqQUsjLk3xknboqcx1rmRjBSWxI,7200 +PIL/ImtImagePlugin.py,sha256=cn60lqUVnK2oh_sPqPBORr_rZ4zuF_6FU0V96IAh8Ww,2203 +PIL/IptcImagePlugin.py,sha256=gs12EAOvOWaVYrv_LAZAlqhX_OsedSZom90MWQFNAmQ,5670 +PIL/Jpeg2KImagePlugin.py,sha256=3NAbqBmvSU_fHUIGspXFsVQV7uYMydN2Rj8jP2bGdiA,8722 +PIL/JpegImagePlugin.py,sha256=DUUQ9SW01fVj1W3O7nEj8-EJJ1MpVgoor1M-k9aFdZU,27898 +PIL/JpegPresets.py,sha256=59KxoMhAJGpdMtTaVSC_J7-JQgW1GtmWo5oYDP_ADII,12711 +PIL/McIdasImagePlugin.py,sha256=LrP5nA7l8IQG3WhlMI0Xs8fGXY_uf6IDmzNCERl3tGw,1754 +PIL/MicImagePlugin.py,sha256=t8iqakHjOilWVEOrjTISN2-ctxkTYSZgzmtxf4ufrfg,2606 +PIL/MpegImagePlugin.py,sha256=n16Zgdy8Hcfke16lQwZWs53PZq4BA_OxPCMPDkW62nw,1803 +PIL/MpoImagePlugin.py,sha256=lbBbUp-o6xVnfaX3sQYpd7RN4-5-KHcbwi0Km2vN0eg,4244 +PIL/MspImagePlugin.py,sha256=UlkKUCM7D0ZZZW-iSwsQxUrh44DOsTwjXLHzUhUPeZM,5530 +PIL/PSDraw.py,sha256=zySuABiEoP2TW_7DypJaS9ByWpxqPjmP43gCjXOghRA,6735 +PIL/PaletteFile.py,sha256=s3KtsDuY5S04MKDyiXK3iIbiOGzV9PvCDUpOQHI7yqc,1106 +PIL/PalmImagePlugin.py,sha256=SuMO5oCq1sgTFVsnJLvFRJFVAadez6UEJMbW65bjr5M,9092 +PIL/PcdImagePlugin.py,sha256=iBuIYSh2ff69V_DqG3yiMtvn9-wQkKkpdrmXbXYBluM,1504 +PIL/PcfFontFile.py,sha256=1GCvZM86-l8OmMhxDUeL66WqrrPckTJAeKySpck99GI,6268 +PIL/PcxImagePlugin.py,sha256=zfNKKUEIdykafo44h7ylZlANBPgt_8c-W2SkakxoQc4,5483 +PIL/PdfImagePlugin.py,sha256=sS6VL5uZvipBn3gkPEA8qEpb3gaKtNxhH6sHia11x4o,7574 +PIL/PdfParser.py,sha256=TQtymvzfdjrdYXYrVJ_ntM5A7rBqyDqLF-FQX26kcGE,34422 +PIL/PixarImagePlugin.py,sha256=PriyK2dGF7ecbm_ZNB6eWlL5CiVA2d0RkYw4TYS0n7Y,1647 +PIL/PngImagePlugin.py,sha256=jAwolRtePqHwCUd-a65p1mM7n4KZN_yHzlmuIHQzE-o,41790 +PIL/PpmImagePlugin.py,sha256=YrtSj-K7XQjb1dW7Y8G6I21-xXAVJ4YqPuNwOJosVTE,4451 +PIL/PsdImagePlugin.py,sha256=KAAItucNljGjlBnTZX9PgONB7ViNCmbxbhp-8bxNqBo,7628 +PIL/PyAccess.py,sha256=U_N4WB6yg_qpWKo1X7avE98p6Ve3bqqnWOGX6DeyE4U,9592 +PIL/SgiImagePlugin.py,sha256=Jn7gWyIXI5s1M8dkVKkQCp0XweWHe8mVB-YmuPx-Wx0,6100 +PIL/SpiderImagePlugin.py,sha256=VwW-TCSjeqQ4QvhlDTKBqZPxTiHZpRTlrypRn95BTu8,9538 +PIL/SunImagePlugin.py,sha256=OYiU1zBBlN_lNqoGpxAPuZDDyBm31A_-Ck_wul7vIv8,4302 +PIL/TarIO.py,sha256=E_pjAxk9wHezXUuR_99liySBXfJoL2wjzdNDf0g1hTo,1440 +PIL/TgaImagePlugin.py,sha256=3j3c1DAMKDcS0GLYq0yuPuc3gF-cTyAmF52Hp5Nsdog,6268 +PIL/TiffImagePlugin.py,sha256=z-6FybmlNvXeP00iRw9tgGg2AZT7hwQ68oCqtVzhmIY,67498 +PIL/TiffTags.py,sha256=Kl6hB2v-IT-h01P_5aBafrsO1AIA0JxJI7fNJvQCuhk,14551 +PIL/WalImageFile.py,sha256=Mfwtpwi-CgRKGORZbdc35uVG0XdelIEIafmtzh0aTKw,5531 +PIL/WebPImagePlugin.py,sha256=RKHtxgrWjuxN1fQF8AX0ckl3cEJkltOiKJrHYh--gk4,10795 +PIL/WmfImagePlugin.py,sha256=D7kFCuEPLZcdOoGg5Ab3jGBRJiAPy6nYd0WbDfsYPp8,4612 +PIL/XVThumbImagePlugin.py,sha256=sYdEiHkRT5U8JG-VMzjTlErNUGLnMqFJxHVPheyqXgo,1948 +PIL/XbmImagePlugin.py,sha256=rCNKI-dem3N-NIvRvepuQ9MzAWkSWS7C5FNpNInYfOg,2448 +PIL/XpmImagePlugin.py,sha256=BTgbV-ij_1Lw5u5yCWVOI_ZWUoif1-3AoQ0uszigrfE,3070 +PIL/__init__.py,sha256=kmCZsISXCYqhkyIhg1xfddav65p4l3nNifzh6a9qgi0,3265 +PIL/__main__.py,sha256=axR7PO-HtXp-o0rBhKIxs0wark0rBfaDIhAIWqtWUo4,41 +PIL/__pycache__/BdfFontFile.cpython-36.pyc,, +PIL/__pycache__/BlpImagePlugin.cpython-36.pyc,, +PIL/__pycache__/BmpImagePlugin.cpython-36.pyc,, +PIL/__pycache__/BufrStubImagePlugin.cpython-36.pyc,, +PIL/__pycache__/ContainerIO.cpython-36.pyc,, +PIL/__pycache__/CurImagePlugin.cpython-36.pyc,, +PIL/__pycache__/DcxImagePlugin.cpython-36.pyc,, +PIL/__pycache__/DdsImagePlugin.cpython-36.pyc,, +PIL/__pycache__/EpsImagePlugin.cpython-36.pyc,, +PIL/__pycache__/ExifTags.cpython-36.pyc,, +PIL/__pycache__/FitsStubImagePlugin.cpython-36.pyc,, +PIL/__pycache__/FliImagePlugin.cpython-36.pyc,, +PIL/__pycache__/FontFile.cpython-36.pyc,, +PIL/__pycache__/FpxImagePlugin.cpython-36.pyc,, +PIL/__pycache__/FtexImagePlugin.cpython-36.pyc,, +PIL/__pycache__/GbrImagePlugin.cpython-36.pyc,, +PIL/__pycache__/GdImageFile.cpython-36.pyc,, +PIL/__pycache__/GifImagePlugin.cpython-36.pyc,, +PIL/__pycache__/GimpGradientFile.cpython-36.pyc,, +PIL/__pycache__/GimpPaletteFile.cpython-36.pyc,, +PIL/__pycache__/GribStubImagePlugin.cpython-36.pyc,, +PIL/__pycache__/Hdf5StubImagePlugin.cpython-36.pyc,, +PIL/__pycache__/IcnsImagePlugin.cpython-36.pyc,, +PIL/__pycache__/IcoImagePlugin.cpython-36.pyc,, +PIL/__pycache__/ImImagePlugin.cpython-36.pyc,, +PIL/__pycache__/Image.cpython-36.pyc,, +PIL/__pycache__/ImageChops.cpython-36.pyc,, +PIL/__pycache__/ImageCms.cpython-36.pyc,, +PIL/__pycache__/ImageColor.cpython-36.pyc,, +PIL/__pycache__/ImageDraw.cpython-36.pyc,, +PIL/__pycache__/ImageDraw2.cpython-36.pyc,, +PIL/__pycache__/ImageEnhance.cpython-36.pyc,, +PIL/__pycache__/ImageFile.cpython-36.pyc,, +PIL/__pycache__/ImageFilter.cpython-36.pyc,, +PIL/__pycache__/ImageFont.cpython-36.pyc,, +PIL/__pycache__/ImageGrab.cpython-36.pyc,, +PIL/__pycache__/ImageMath.cpython-36.pyc,, +PIL/__pycache__/ImageMode.cpython-36.pyc,, +PIL/__pycache__/ImageMorph.cpython-36.pyc,, +PIL/__pycache__/ImageOps.cpython-36.pyc,, +PIL/__pycache__/ImagePalette.cpython-36.pyc,, +PIL/__pycache__/ImagePath.cpython-36.pyc,, +PIL/__pycache__/ImageQt.cpython-36.pyc,, +PIL/__pycache__/ImageSequence.cpython-36.pyc,, +PIL/__pycache__/ImageShow.cpython-36.pyc,, +PIL/__pycache__/ImageStat.cpython-36.pyc,, +PIL/__pycache__/ImageTk.cpython-36.pyc,, +PIL/__pycache__/ImageTransform.cpython-36.pyc,, +PIL/__pycache__/ImageWin.cpython-36.pyc,, +PIL/__pycache__/ImtImagePlugin.cpython-36.pyc,, +PIL/__pycache__/IptcImagePlugin.cpython-36.pyc,, +PIL/__pycache__/Jpeg2KImagePlugin.cpython-36.pyc,, +PIL/__pycache__/JpegImagePlugin.cpython-36.pyc,, +PIL/__pycache__/JpegPresets.cpython-36.pyc,, +PIL/__pycache__/McIdasImagePlugin.cpython-36.pyc,, +PIL/__pycache__/MicImagePlugin.cpython-36.pyc,, +PIL/__pycache__/MpegImagePlugin.cpython-36.pyc,, +PIL/__pycache__/MpoImagePlugin.cpython-36.pyc,, +PIL/__pycache__/MspImagePlugin.cpython-36.pyc,, +PIL/__pycache__/PSDraw.cpython-36.pyc,, +PIL/__pycache__/PaletteFile.cpython-36.pyc,, +PIL/__pycache__/PalmImagePlugin.cpython-36.pyc,, +PIL/__pycache__/PcdImagePlugin.cpython-36.pyc,, +PIL/__pycache__/PcfFontFile.cpython-36.pyc,, +PIL/__pycache__/PcxImagePlugin.cpython-36.pyc,, +PIL/__pycache__/PdfImagePlugin.cpython-36.pyc,, +PIL/__pycache__/PdfParser.cpython-36.pyc,, +PIL/__pycache__/PixarImagePlugin.cpython-36.pyc,, +PIL/__pycache__/PngImagePlugin.cpython-36.pyc,, +PIL/__pycache__/PpmImagePlugin.cpython-36.pyc,, +PIL/__pycache__/PsdImagePlugin.cpython-36.pyc,, +PIL/__pycache__/PyAccess.cpython-36.pyc,, +PIL/__pycache__/SgiImagePlugin.cpython-36.pyc,, +PIL/__pycache__/SpiderImagePlugin.cpython-36.pyc,, +PIL/__pycache__/SunImagePlugin.cpython-36.pyc,, +PIL/__pycache__/TarIO.cpython-36.pyc,, +PIL/__pycache__/TgaImagePlugin.cpython-36.pyc,, +PIL/__pycache__/TiffImagePlugin.cpython-36.pyc,, +PIL/__pycache__/TiffTags.cpython-36.pyc,, +PIL/__pycache__/WalImageFile.cpython-36.pyc,, +PIL/__pycache__/WebPImagePlugin.cpython-36.pyc,, +PIL/__pycache__/WmfImagePlugin.cpython-36.pyc,, +PIL/__pycache__/XVThumbImagePlugin.cpython-36.pyc,, +PIL/__pycache__/XbmImagePlugin.cpython-36.pyc,, +PIL/__pycache__/XpmImagePlugin.cpython-36.pyc,, +PIL/__pycache__/__init__.cpython-36.pyc,, +PIL/__pycache__/__main__.cpython-36.pyc,, +PIL/__pycache__/_binary.cpython-36.pyc,, +PIL/__pycache__/_tkinter_finder.cpython-36.pyc,, +PIL/__pycache__/_util.cpython-36.pyc,, +PIL/__pycache__/_version.cpython-36.pyc,, +PIL/__pycache__/features.cpython-36.pyc,, +PIL/_binary.py,sha256=M_yObPVR_1rxnS5craSJsSbFJMykMYqJ0vNHeUpAmj4,1793 +PIL/_imaging.cp36-win_amd64.pyd,sha256=Cc6PPvJbB7f-BVhawqLkuqVyG4QFDVO3PXXTrFZ1toc,2516480 +PIL/_imagingcms.cp36-win_amd64.pyd,sha256=8I9ThyrcUvt4Oo__MT1FdxzhAYK9GkzumjOLycBVLXk,244224 +PIL/_imagingft.cp36-win_amd64.pyd,sha256=BeHjQgNfjmD6y1GfsZsw-1JkidKLtwiihUekVyA-TBw,628736 +PIL/_imagingmath.cp36-win_amd64.pyd,sha256=afTO6B7McVdkYB0lj8fMDjrJMREnTSkXsAeKkcwzEBQ,25600 +PIL/_imagingmorph.cp36-win_amd64.pyd,sha256=vYX_FnRM0QNVbPhSjuFxxkJ6TVaZf7JmeQOyf64PoJ0,13824 +PIL/_imagingtk.cp36-win_amd64.pyd,sha256=-y31XtxFsMktk3hzhsvnPihUGcikdK8T-3w7IQPOOJw,15360 +PIL/_tkinter_finder.py,sha256=H8lIY9JyNwACYSmxnPRyGwqSoolSxBoE_zMbQEmbe-o,622 +PIL/_util.py,sha256=VCm5WKSTI2hGMBDZdAY_XxBAbBYRwkKM_EbTLo0qJlc,503 +PIL/_version.py,sha256=oQcbLZ3YKpJ_oyN9BngQk3RukRqCAYLYIaUNjkAnM3A,50 +PIL/_webp.cp36-win_amd64.pyd,sha256=iXORghqRIo8MUmJXwNgQ5JAiaLedyoRsak3xAPu9VdE,527360 +PIL/features.py,sha256=56xvqPTkaGDpeVBfIu38yQBxZE6cMe88QG-UPcptfbk,8826 +Pillow-7.2.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +Pillow-7.2.0.dist-info/LICENSE,sha256=N95Cq-M6JH6PA9IxNleg8XSiOaGY9Sat1lRP8-JkO4E,1452 +Pillow-7.2.0.dist-info/METADATA,sha256=LQagWajafxhNsgoUYQs3GHiZKLQs8saJykYUaWnzjvs,5966 +Pillow-7.2.0.dist-info/RECORD,, +Pillow-7.2.0.dist-info/WHEEL,sha256=Mp7cNSJkwOccBZaxEtyYhlze1HXRCLLX3tIlVLTix2E,106 +Pillow-7.2.0.dist-info/top_level.txt,sha256=riZqrk-hyZqh5f1Z0Zwii3dKfxEsByhu9cU9IODF-NY,4 +Pillow-7.2.0.dist-info/zip-safe,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2 diff --git a/venv/Lib/site-packages/Pillow-7.2.0.dist-info/WHEEL b/venv/Lib/site-packages/Pillow-7.2.0.dist-info/WHEEL new file mode 100644 index 00000000..6cb1f9e2 --- /dev/null +++ b/venv/Lib/site-packages/Pillow-7.2.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.34.2) +Root-Is-Purelib: false +Tag: cp36-cp36m-win_amd64 + diff --git a/venv/Lib/site-packages/Pillow-7.2.0.dist-info/top_level.txt b/venv/Lib/site-packages/Pillow-7.2.0.dist-info/top_level.txt new file mode 100644 index 00000000..b338169c --- /dev/null +++ b/venv/Lib/site-packages/Pillow-7.2.0.dist-info/top_level.txt @@ -0,0 +1 @@ +PIL diff --git a/venv/Lib/site-packages/Pillow-7.2.0.dist-info/zip-safe b/venv/Lib/site-packages/Pillow-7.2.0.dist-info/zip-safe new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/venv/Lib/site-packages/Pillow-7.2.0.dist-info/zip-safe @@ -0,0 +1 @@ +

h#y}^K0fr$yq2=KfG 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ඊ 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 >b(#}Lqn!a_N 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